mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-16 10:08:36 +03:00
Compare commits
19 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
bd2a789f15 | ||
|
a4e91f855b | ||
|
9efc032b9a | ||
|
44cbb3d8e7 | ||
|
392377a331 | ||
|
6635f53848 | ||
|
f7f32bf33e | ||
|
c1620d29fa | ||
|
92e70f93d0 | ||
|
54754bccab | ||
|
33a5691ef1 | ||
|
689b59692e | ||
|
c7fd6ca63b | ||
|
9704e22131 | ||
|
f3f713569a | ||
|
db976e0a59 | ||
|
ee8f2ea3c2 | ||
|
58393b24b6 | ||
|
b896c6f4af |
@ -475,7 +475,7 @@ Modify this parameter with:
|
|||||||
if(!Interface_Static::SetIVal("read.step.tessellated",1))
|
if(!Interface_Static::SetIVal("read.step.tessellated",1))
|
||||||
.. error ..
|
.. error ..
|
||||||
~~~~
|
~~~~
|
||||||
Default value is 0 (On).
|
Default value is 1 (On).
|
||||||
|
|
||||||
@subsubsection occt_step_2_3_4 Performing the STEP file translation
|
@subsubsection occt_step_2_3_4 Performing the STEP file translation
|
||||||
|
|
||||||
|
@ -808,8 +808,11 @@ void Approx_BSplComputeLine::Parameters(const MultiLine& Line,
|
|||||||
const Standard_Integer aNbp = lastP - firstP + 1;
|
const Standard_Integer aNbp = lastP - firstP + 1;
|
||||||
|
|
||||||
|
|
||||||
if (aNbp == 2) {
|
// The first parameter should always be zero according to all the logic below,
|
||||||
|
// so division by any value will give zero anyway, so it should never be scaled
|
||||||
|
// to avoid case when there is only one parameter in the array thus division by zero happens.
|
||||||
TheParameters(firstP) = 0.0;
|
TheParameters(firstP) = 0.0;
|
||||||
|
if (aNbp == 2) {
|
||||||
TheParameters(lastP) = 1.0;
|
TheParameters(lastP) = 1.0;
|
||||||
}
|
}
|
||||||
else if (Par == Approx_ChordLength || Par == Approx_Centripetal)
|
else if (Par == Approx_ChordLength || Par == Approx_Centripetal)
|
||||||
@ -820,7 +823,6 @@ void Approx_BSplComputeLine::Parameters(const MultiLine& Line,
|
|||||||
if (nbP3d == 0) mynbP3d = 1;
|
if (nbP3d == 0) mynbP3d = 1;
|
||||||
if (nbP2d == 0) mynbP2d = 1;
|
if (nbP2d == 0) mynbP2d = 1;
|
||||||
|
|
||||||
TheParameters(firstP) = 0.0;
|
|
||||||
dist = 0.0;
|
dist = 0.0;
|
||||||
TColgp_Array1OfPnt tabP(1, mynbP3d);
|
TColgp_Array1OfPnt tabP(1, mynbP3d);
|
||||||
TColgp_Array1OfPnt tabPP(1, mynbP3d);
|
TColgp_Array1OfPnt tabPP(1, mynbP3d);
|
||||||
@ -861,10 +863,10 @@ void Approx_BSplComputeLine::Parameters(const MultiLine& Line,
|
|||||||
TheParameters(i) = TheParameters(i - 1) + Sqrt(dist);
|
TheParameters(i) = TheParameters(i - 1) + Sqrt(dist);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (i = firstP; i <= lastP; i++) TheParameters(i) /= TheParameters(lastP);
|
for (i = firstP + 1; i <= lastP; i++) TheParameters(i) /= TheParameters(lastP);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for (i = firstP; i <= lastP; i++) {
|
for (i = firstP + 1; i <= lastP; i++) {
|
||||||
TheParameters(i) = (Standard_Real(i) - firstP) /
|
TheParameters(i) = (Standard_Real(i) - firstP) /
|
||||||
(Standard_Real(lastP - Standard_Real(firstP)));
|
(Standard_Real(lastP - Standard_Real(firstP)));
|
||||||
}
|
}
|
||||||
|
@ -103,7 +103,7 @@ static Standard_Boolean ChangePCurve (TopoDS_Edge& E,
|
|||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
|
|
||||||
static void ProjCurve3d (TopoDS_Edge& E,
|
static bool ProjCurve3d (TopoDS_Edge& E,
|
||||||
const Handle(Geom_Surface)& S,
|
const Handle(Geom_Surface)& S,
|
||||||
TopLoc_Location& L)
|
TopLoc_Location& L)
|
||||||
{
|
{
|
||||||
@ -111,6 +111,10 @@ static void ProjCurve3d (TopoDS_Edge& E,
|
|||||||
TopLoc_Location LE;
|
TopLoc_Location LE;
|
||||||
Standard_Real f,l;
|
Standard_Real f,l;
|
||||||
Handle(Geom_Curve) C = BRep_Tool::Curve(E,LE,f,l);
|
Handle(Geom_Curve) C = BRep_Tool::Curve(E,LE,f,l);
|
||||||
|
if (C.IsNull())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
Handle(Geom_TrimmedCurve) CT = new Geom_TrimmedCurve(C,f,l);
|
Handle(Geom_TrimmedCurve) CT = new Geom_TrimmedCurve(C,f,l);
|
||||||
|
|
||||||
TopLoc_Location LL = L.Inverted().Multiplied(LE);
|
TopLoc_Location LL = L.Inverted().Multiplied(LE);
|
||||||
@ -118,6 +122,7 @@ static void ProjCurve3d (TopoDS_Edge& E,
|
|||||||
|
|
||||||
Handle(Geom2d_Curve) C2 = GeomProjLib::Curve2d (CT,S);
|
Handle(Geom2d_Curve) C2 = GeomProjLib::Curve2d (CT,S);
|
||||||
BB.UpdateEdge(E,C2,S,L,Precision::Confusion());
|
BB.UpdateEdge(E,C2,S,L,Precision::Confusion());
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@ -165,13 +170,19 @@ void BRepAlgo_FaceRestrictor::Perform()
|
|||||||
// no pcurve on the reference surface.
|
// no pcurve on the reference surface.
|
||||||
if (modeProj) {
|
if (modeProj) {
|
||||||
// Projection of the 3D curve on surface.
|
// Projection of the 3D curve on surface.
|
||||||
ProjCurve3d ( E, S, L);
|
if (!ProjCurve3d(E, S, L))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// return the first pcurve glued on <S>
|
// return the first pcurve glued on <S>
|
||||||
Standard_Boolean YaPCurve = ChangePCurve (E, S, L);
|
Standard_Boolean YaPCurve = ChangePCurve (E, S, L);
|
||||||
if (!YaPCurve) {
|
if (!YaPCurve) {
|
||||||
ProjCurve3d (E, S, L);
|
if (!ProjCurve3d(E, S, L))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -333,7 +333,7 @@ void BRepAlgo_NormalProjection::SetDefaultParams()
|
|||||||
Only2d = Standard_True;
|
Only2d = Standard_True;
|
||||||
|
|
||||||
if(Only2d && Only3d) {
|
if(Only2d && Only3d) {
|
||||||
BRepLib_MakeEdge MKed(GeomAdaptor::MakeCurve(hcur->Curve()),
|
BRepLib_MakeEdge MKed(GeomAdaptor::MakeCurve(*hcur),
|
||||||
Udeb, Ufin);
|
Udeb, Ufin);
|
||||||
prj = MKed.Edge();
|
prj = MKed.Edge();
|
||||||
BB.UpdateEdge(TopoDS::Edge(prj),
|
BB.UpdateEdge(TopoDS::Edge(prj),
|
||||||
@ -369,7 +369,7 @@ void BRepAlgo_NormalProjection::SetDefaultParams()
|
|||||||
|
|
||||||
if(!Only3d) PCur2d = appr.Curve2d();
|
if(!Only3d) PCur2d = appr.Curve2d();
|
||||||
if(Only2d) {
|
if(Only2d) {
|
||||||
BRepLib_MakeEdge MKed(GeomAdaptor::MakeCurve(hcur->Curve()),
|
BRepLib_MakeEdge MKed(GeomAdaptor::MakeCurve(*hcur),
|
||||||
Udeb, Ufin);
|
Udeb, Ufin);
|
||||||
prj = MKed.Edge();
|
prj = MKed.Edge();
|
||||||
}
|
}
|
||||||
|
@ -1292,11 +1292,10 @@ void BRepOffset_Inter3d::ContextIntByArc(const TopTools_IndexedMapOfShape& Conte
|
|||||||
for ( ;exp2.More(); exp2.Next()) {
|
for ( ;exp2.More(); exp2.Next()) {
|
||||||
LOE.Append(exp2.Current());
|
LOE.Append(exp2.Current());
|
||||||
}
|
}
|
||||||
BRepOffset_Tool::TryProject(CF,OF1,LOE,LInt1,LInt2,mySide,myTol);
|
|
||||||
//-------------------------------------------------------
|
//-------------------------------------------------------
|
||||||
// If no trace try intersection.
|
// If no trace try intersection.
|
||||||
//-------------------------------------------------------
|
//-------------------------------------------------------
|
||||||
if (LInt1.IsEmpty()) {
|
if (!BRepOffset_Tool::TryProject(CF, OF1, LOE, LInt1, LInt2, mySide, myTol) || LInt1.IsEmpty()) {
|
||||||
BRepOffset_Tool::Inter3D (CF,OF1,LInt1,LInt2,mySide,NullEdge,NullFace,NullFace);
|
BRepOffset_Tool::Inter3D (CF,OF1,LInt1,LInt2,mySide,NullEdge,NullFace,NullFace);
|
||||||
}
|
}
|
||||||
Store (CF,OF1,LInt1,LInt2);
|
Store (CF,OF1,LInt1,LInt2);
|
||||||
|
@ -1175,12 +1175,16 @@ void BRepOffset_MakeOffset::MakeThickSolid(const Message_ProgressRange& theRange
|
|||||||
{
|
{
|
||||||
NbOF++;
|
NbOF++;
|
||||||
}
|
}
|
||||||
if (NbOF <= NbF)
|
if (NbOF < NbF)
|
||||||
{
|
{
|
||||||
myDone = Standard_False;
|
myDone = Standard_False;
|
||||||
myError = BRepOffset_UnknownError;
|
myError = BRepOffset_UnknownError;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (NbOF == NbF)
|
||||||
|
{
|
||||||
|
myOffset = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (myOffset > 0 ) myOffsetShape.Reverse();
|
if (myOffset > 0 ) myOffsetShape.Reverse();
|
||||||
|
@ -1881,6 +1881,10 @@ Standard_Boolean BRepOffset_Tool::TryProject
|
|||||||
if (C.IsNull()) {
|
if (C.IsNull()) {
|
||||||
BRepLib::BuildCurve3d(CurE,BRep_Tool::Tolerance(CurE));
|
BRepLib::BuildCurve3d(CurE,BRep_Tool::Tolerance(CurE));
|
||||||
C = BRep_Tool::Curve(CurE,L,f,l);
|
C = BRep_Tool::Curve(CurE,L,f,l);
|
||||||
|
if (C.IsNull())
|
||||||
|
{
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
C = new Geom_TrimmedCurve(C,f,l);
|
C = new Geom_TrimmedCurve(C,f,l);
|
||||||
if ( !L.IsIdentity()) C->Transform(L);
|
if ( !L.IsIdentity()) C->Transform(L);
|
||||||
@ -3519,9 +3523,8 @@ void BRepOffset_Tool::ExtentFace (const TopoDS_Face& F,
|
|||||||
if (ToBuild.IsBound(E)) {
|
if (ToBuild.IsBound(E)) {
|
||||||
TopTools_ListOfShape LOE;
|
TopTools_ListOfShape LOE;
|
||||||
LOE.Append(E);
|
LOE.Append(E);
|
||||||
BRepOffset_Tool::TryProject (TopoDS::Face(ToBuild(E)),
|
if (BRepOffset_Tool::TryProject(TopoDS::Face(ToBuild(E)), EF, LOE, LInt2, LInt1, Side, TolConf)
|
||||||
EF,LOE,LInt2,LInt1,Side,TolConf);
|
&& !LInt1.IsEmpty())
|
||||||
if (!LInt1.IsEmpty())
|
|
||||||
ToBuild.UnBind(E);
|
ToBuild.UnBind(E);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -515,8 +515,13 @@ BSplCLib::EvalBsplineBasis
|
|||||||
//
|
//
|
||||||
// this should be always invertible if ii is correctly computed
|
// this should be always invertible if ii is correctly computed
|
||||||
//
|
//
|
||||||
Factor = (Parameter - FlatKnots(ii - qq + pp + 1))
|
const Standard_Real aScale = (FlatKnots(ii + pp) - FlatKnots(ii - qq + pp + 1));
|
||||||
/ (FlatKnots(ii + pp) - FlatKnots(ii - qq + pp + 1)) ;
|
if (Abs (aScale) < gp::Resolution())
|
||||||
|
{
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
Factor = (Parameter - FlatKnots(ii - qq + pp + 1)) / aScale;
|
||||||
Saved = Factor * BsplineBasis(1,pp) ;
|
Saved = Factor * BsplineBasis(1,pp) ;
|
||||||
BsplineBasis(1,pp) *= (1.0e0 - Factor) ;
|
BsplineBasis(1,pp) *= (1.0e0 - Factor) ;
|
||||||
BsplineBasis(1,pp) += BsplineBasis(1,qq) ;
|
BsplineBasis(1,pp) += BsplineBasis(1,qq) ;
|
||||||
@ -536,7 +541,13 @@ BSplCLib::EvalBsplineBasis
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (pp = 1 ; pp <= qq - 1 ; pp++) {
|
for (pp = 1 ; pp <= qq - 1 ; pp++) {
|
||||||
Inverse = 1.0e0 / (FlatKnots(ii + pp) - FlatKnots(ii - qq + pp + 1)) ;
|
const Standard_Real aScale = (FlatKnots(ii + pp) - FlatKnots(ii - qq + pp + 1));
|
||||||
|
if (Abs (aScale) < gp::Resolution())
|
||||||
|
{
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
Inverse = 1.0e0 / aScale;
|
||||||
Factor = (Parameter - FlatKnots(ii - qq + pp + 1)) * Inverse ;
|
Factor = (Parameter - FlatKnots(ii - qq + pp + 1)) * Inverse ;
|
||||||
Saved = Factor * BsplineBasis(1,pp) ;
|
Saved = Factor * BsplineBasis(1,pp) ;
|
||||||
BsplineBasis(1,pp) *= (1.0e0 - Factor) ;
|
BsplineBasis(1,pp) *= (1.0e0 - Factor) ;
|
||||||
|
@ -50,6 +50,10 @@ static Standard_Boolean Controle(const TColgp_Array1OfPnt& Poles,
|
|||||||
Standard_Real umin, umax, vmin, vmax;
|
Standard_Real umin, umax, vmin, vmax;
|
||||||
S->Bounds(umin, umax, vmin, vmax);
|
S->Bounds(umin, umax, vmin, vmax);
|
||||||
S->D1((umin + umax) / 2, (vmin + vmax) / 2, P, DU, DV);
|
S->D1((umin + umax) / 2, (vmin + vmax) / 2, P, DU, DV);
|
||||||
|
|
||||||
|
if (DU.SquareMagnitude() > gp::Resolution() &&
|
||||||
|
DV.SquareMagnitude() > gp::Resolution())
|
||||||
|
{
|
||||||
// On prend DX le plus proche possible de DU
|
// On prend DX le plus proche possible de DU
|
||||||
gp_Dir du(DU);
|
gp_Dir du(DU);
|
||||||
Standard_Real Angle1 = du.Angle(DX);
|
Standard_Real Angle1 = du.Angle(DX);
|
||||||
@ -67,6 +71,7 @@ static Standard_Boolean Controle(const TColgp_Array1OfPnt& Poles,
|
|||||||
Plan.SetLocation(Bary);
|
Plan.SetLocation(Bary);
|
||||||
IsPlan = Standard_True;
|
IsPlan = Standard_True;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return IsPlan;
|
return IsPlan;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,7 +91,14 @@ void RWStepBasic_RWProduct::WriteStep
|
|||||||
|
|
||||||
// --- own field : description ---
|
// --- own field : description ---
|
||||||
|
|
||||||
|
if (!ent->Description().IsNull())
|
||||||
|
{
|
||||||
SW.Send(ent->Description());
|
SW.Send(ent->Description());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SW.SendUndef();
|
||||||
|
}
|
||||||
|
|
||||||
// --- own field : frameOfReference ---
|
// --- own field : frameOfReference ---
|
||||||
|
|
||||||
|
@ -78,7 +78,14 @@ void RWStepBasic_RWProductDefinition::WriteStep
|
|||||||
|
|
||||||
// --- own field : description ---
|
// --- own field : description ---
|
||||||
|
|
||||||
|
if (!ent->Description().IsNull())
|
||||||
|
{
|
||||||
SW.Send(ent->Description());
|
SW.Send(ent->Description());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SW.SendUndef();
|
||||||
|
}
|
||||||
|
|
||||||
// --- own field : formation ---
|
// --- own field : formation ---
|
||||||
|
|
||||||
|
@ -71,7 +71,14 @@ void RWStepBasic_RWProductDefinitionFormation::WriteStep
|
|||||||
|
|
||||||
// --- own field : description ---
|
// --- own field : description ---
|
||||||
|
|
||||||
|
if (!ent->Description().IsNull())
|
||||||
|
{
|
||||||
SW.Send(ent->Description());
|
SW.Send(ent->Description());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SW.SendUndef();
|
||||||
|
}
|
||||||
|
|
||||||
// --- own field : ofProduct ---
|
// --- own field : ofProduct ---
|
||||||
|
|
||||||
|
@ -1996,7 +1996,7 @@ Handle(Poly_Triangulation) createMesh(const Handle(StepVisual_ComplexTriangulate
|
|||||||
const Standard_Integer aNbNormals = theTriangulatedSufaceSet->NbNormals();
|
const Standard_Integer aNbNormals = theTriangulatedSufaceSet->NbNormals();
|
||||||
// Number of pairs (Point, Normal). It is possible for one point to have multiple normals. This is
|
// Number of pairs (Point, Normal). It is possible for one point to have multiple normals. This is
|
||||||
// useful when the underlying surface is not C1 continuous.
|
// useful when the underlying surface is not C1 continuous.
|
||||||
const Standard_Integer aNbPairs = aNbNormals > 1 ? theTriangulatedSufaceSet->NbPnindex() : aNodes->Length();
|
const Standard_Integer aNbPairs = aNbNormals > 1 ? theTriangulatedSufaceSet->Pnmax() : aNodes->Length();
|
||||||
const Standard_Boolean aHasNormals = aNbNormals > 0;
|
const Standard_Boolean aHasNormals = aNbNormals > 0;
|
||||||
|
|
||||||
// Counting number of triangles in the triangle strips list.
|
// Counting number of triangles in the triangle strips list.
|
||||||
@ -2021,7 +2021,7 @@ Handle(Poly_Triangulation) createMesh(const Handle(StepVisual_ComplexTriangulate
|
|||||||
|
|
||||||
for (Standard_Integer j = 1; j <= aNbPairs; ++j)
|
for (Standard_Integer j = 1; j <= aNbPairs; ++j)
|
||||||
{
|
{
|
||||||
const gp_XYZ& aPoint = aNodes->Value(aNbNormals > 1 ? theTriangulatedSufaceSet->PnindexValue(j) : j);
|
const gp_XYZ& aPoint = aNodes->Value((aNbNormals > 1 && theTriangulatedSufaceSet->NbPnindex() > 0) ? theTriangulatedSufaceSet->PnindexValue(j) : j);
|
||||||
aMesh->SetNode(j, theFact * aPoint);
|
aMesh->SetNode(j, theFact * aPoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2553,11 +2553,36 @@ static Standard_Boolean ReadDatums(const Handle(XCAFDoc_ShapeTool) &STool,
|
|||||||
const Handle(StepDimTol_GeometricToleranceWithDatumReference)& GTWDR)
|
const Handle(StepDimTol_GeometricToleranceWithDatumReference)& GTWDR)
|
||||||
{
|
{
|
||||||
if (GTWDR.IsNull()) return Standard_False;
|
if (GTWDR.IsNull()) return Standard_False;
|
||||||
Handle(StepDimTol_HArray1OfDatumReference) HADR = GTWDR->DatumSystem();
|
Handle(StepDimTol_HArray1OfDatumSystemOrReference) aHADSOR = GTWDR->DatumSystemAP242();
|
||||||
if (HADR.IsNull()) return Standard_False;
|
if (aHADSOR.IsNull())
|
||||||
for (Standard_Integer idr = 1; idr <= HADR->Length(); idr++) {
|
{
|
||||||
Handle(StepDimTol_DatumReference) DR = HADR->Value(idr);
|
return Standard_False;
|
||||||
Handle(StepDimTol_Datum) aDatum = DR->ReferencedDatum();
|
}
|
||||||
|
NCollection_List<Handle(StepDimTol_Datum)> aDatumList;
|
||||||
|
for (Standard_Integer idr = 1; idr <= aHADSOR->Length(); idr++)
|
||||||
|
{
|
||||||
|
const StepDimTol_DatumSystemOrReference aDSOR = aHADSOR->Value(idr);
|
||||||
|
if (aDSOR.IsNull()) continue;
|
||||||
|
Handle(StepDimTol_DatumSystem) aDS = aDSOR.DatumSystem();
|
||||||
|
Handle(StepDimTol_DatumReference) aDR = aDSOR.DatumReference();
|
||||||
|
Handle(StepDimTol_Datum) aDatum;
|
||||||
|
if (!aDS.IsNull())
|
||||||
|
{
|
||||||
|
auto aDatumConList = aDS->Constituents();
|
||||||
|
for (Standard_Integer anInd = 1; anInd <= aDatumConList->Length(); anInd++)
|
||||||
|
{
|
||||||
|
Handle(StepDimTol_DatumReferenceCompartment) aDatRefC = aDatumConList->Value(anInd);
|
||||||
|
aDatumList.Append(aDatRefC->Base().Datum());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (!aDR.IsNull())
|
||||||
|
{
|
||||||
|
aDatumList.Append(aDR->ReferencedDatum());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(NCollection_List<Handle(StepDimTol_Datum)>::Iterator anIt(aDatumList); anIt.More(); anIt.Next())
|
||||||
|
{
|
||||||
|
Handle(StepDimTol_Datum) aDatum = anIt.Value();
|
||||||
if (aDatum.IsNull()) continue;
|
if (aDatum.IsNull()) continue;
|
||||||
Interface_EntityIterator subs4 = graph.Sharings(aDatum);
|
Interface_EntityIterator subs4 = graph.Sharings(aDatum);
|
||||||
for (subs4.Start(); subs4.More(); subs4.Next()) {
|
for (subs4.Start(); subs4.More(); subs4.Next()) {
|
||||||
|
@ -983,7 +983,7 @@ static Standard_Integer FindEntities(const Handle(Transfer_FinderProcess)& theFP
|
|||||||
//Handle(Transfer_TransientListBinder)::DownCast( bnd->Next(Standard_True) );
|
//Handle(Transfer_TransientListBinder)::DownCast( bnd->Next(Standard_True) );
|
||||||
Handle(Transfer_TransientListBinder)::DownCast(aBinder);
|
Handle(Transfer_TransientListBinder)::DownCast(aBinder);
|
||||||
Standard_Integer aResCount = 0;
|
Standard_Integer aResCount = 0;
|
||||||
if (aTransientListBinder.IsNull() && theShape.ShapeType() == TopAbs_COMPOUND)
|
if (aTransientListBinder.IsNull())
|
||||||
{
|
{
|
||||||
for (TopoDS_Iterator anIter(theShape); anIter.More(); anIter.Next())
|
for (TopoDS_Iterator anIter(theShape); anIter.More(); anIter.Next())
|
||||||
{
|
{
|
||||||
|
@ -580,7 +580,7 @@ static void getSDR(const Handle(StepRepr_ProductDefinitionShape)& PDS,
|
|||||||
|
|
||||||
// common progress indicator for translation of own shapes and sub-assemblies
|
// common progress indicator for translation of own shapes and sub-assemblies
|
||||||
Message_ProgressScope PS(theProgress, "Part", nbEnt);
|
Message_ProgressScope PS(theProgress, "Part", nbEnt);
|
||||||
Standard_Integer nbComponents=0, nbShapes=0;
|
Standard_Integer nbComponents=0;
|
||||||
|
|
||||||
// translate sub-assemblies
|
// translate sub-assemblies
|
||||||
for ( Standard_Integer nbNauo =1; nbNauo <= listNAUO->Length() && PS.More(); nbNauo++) {
|
for ( Standard_Integer nbNauo =1; nbNauo <= listNAUO->Length() && PS.More(); nbNauo++) {
|
||||||
@ -662,7 +662,6 @@ static void getSDR(const Handle(StepRepr_ProductDefinitionShape)& PDS,
|
|||||||
else
|
else
|
||||||
B.Add(Cund, theResult);
|
B.Add(Cund, theResult);
|
||||||
// [END] ssv: OCCT#22436: extra compound in NMSSR case
|
// [END] ssv: OCCT#22436: extra compound in NMSSR case
|
||||||
nbShapes++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -670,50 +669,20 @@ static void getSDR(const Handle(StepRepr_ProductDefinitionShape)& PDS,
|
|||||||
// way of writing hybrid models in AP203 since 1998, and AP209
|
// way of writing hybrid models in AP203 since 1998, and AP209
|
||||||
// Note that both AP203 and AP209 allow main representation to be non-empty
|
// Note that both AP203 and AP209 allow main representation to be non-empty
|
||||||
if ( readSRR && /*theResult.IsNull() &&*/ i <= nbNotAspect) {
|
if ( readSRR && /*theResult.IsNull() &&*/ i <= nbNotAspect) {
|
||||||
Interface_EntityIterator subs1 = graph.Sharings(rep);
|
TopoDS_Shape aNewResult = TransferRelatedSRR(TP, rep, useTrsf, readConstructiveGeomRR, theLocalFactors, Cund, aPS1);
|
||||||
Handle(Standard_Type) tSRR = STANDARD_TYPE(StepRepr_ShapeRepresentationRelationship);
|
if (!aNewResult.IsNull())
|
||||||
for (subs1.Start(); subs1.More(); subs1.Next()) {
|
|
||||||
const Handle(Standard_Transient)& anitem = subs1.Value();
|
|
||||||
if( !anitem->IsKind(STANDARD_TYPE(StepRepr_RepresentationRelationship)))
|
|
||||||
continue;
|
|
||||||
if (anitem->DynamicType() == tSRR)
|
|
||||||
{
|
{
|
||||||
Handle(StepRepr_ShapeRepresentationRelationship) SRR =
|
Result1 = aNewResult;
|
||||||
Handle(StepRepr_ShapeRepresentationRelationship)::DownCast(anitem);
|
|
||||||
Standard_Integer nbrep = (rep == SRR->Rep1() ? 2 : 1);
|
|
||||||
// SKL for bug 29068: parameter useTrsf is used because if root entity has connection with other
|
|
||||||
// by ShapeRepresentationRelationship then result after such transferring need to transform also.
|
|
||||||
// This case is from test "bugs modalg_7 bug30196"
|
|
||||||
binder = TransferEntity(SRR, TP, theLocalFactors, nbrep, useTrsf, aPS1.Next());
|
|
||||||
if (! binder.IsNull()) {
|
|
||||||
theResult = TransferBRep::ShapeResult (binder);
|
|
||||||
Result1 = theResult;
|
|
||||||
B.Add(Cund, theResult);
|
|
||||||
nbShapes++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if(readConstructiveGeomRR && anitem->IsKind(STANDARD_TYPE(StepRepr_ConstructiveGeometryRepresentationRelationship)))
|
|
||||||
{
|
|
||||||
Handle(StepRepr_ConstructiveGeometryRepresentationRelationship) aCSRR =
|
|
||||||
Handle(StepRepr_ConstructiveGeometryRepresentationRelationship)::DownCast(anitem);
|
|
||||||
binder = TransferEntity(aCSRR, TP, theLocalFactors);
|
|
||||||
if (! binder.IsNull())
|
|
||||||
{
|
|
||||||
Result1 = TransferBRep::ShapeResult (binder);
|
|
||||||
B.Add(Cund, Result1);
|
|
||||||
nbShapes++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// make a warning if both own shape and sub-assemblies are present
|
// make a warning if both own shape and sub-assemblies are present
|
||||||
if ( nbShapes >0 && nbComponents > 0 )
|
if ( (Cund.NbChildren() - nbComponents) > 0 && nbComponents > 0 )
|
||||||
TP->AddWarning ( PD, "Product has both sub-assemblies and directly assigned shape" );
|
TP->AddWarning ( PD, "Product has both sub-assemblies and directly assigned shape" );
|
||||||
|
|
||||||
// if only single shape is read, add it as it is; otherwise add compound
|
// if only single shape is read, add it as it is; otherwise add compound
|
||||||
if( nbShapes == 1 && nbComponents == 0 )
|
if( (Cund.NbChildren() - nbComponents) == 1 && nbComponents == 0 )
|
||||||
shbinder = new TransferBRep_ShapeBinder (Result1);
|
shbinder = new TransferBRep_ShapeBinder (Result1);
|
||||||
else
|
else
|
||||||
shbinder = new TransferBRep_ShapeBinder (Cund);
|
shbinder = new TransferBRep_ShapeBinder (Cund);
|
||||||
@ -1568,6 +1537,7 @@ Handle(TransferBRep_ShapeBinder) STEPControl_ActorRead::TransferEntity
|
|||||||
Handle(StepShape_ShapeRepresentation) maprep = Handle(StepShape_ShapeRepresentation)::
|
Handle(StepShape_ShapeRepresentation) maprep = Handle(StepShape_ShapeRepresentation)::
|
||||||
DownCast(mapit->MappingSource()->MappedRepresentation());
|
DownCast(mapit->MappingSource()->MappedRepresentation());
|
||||||
Standard_Boolean isBound = Standard_False;
|
Standard_Boolean isBound = Standard_False;
|
||||||
|
Message_ProgressScope aPSRoot(theProgress, NULL, 2);
|
||||||
Handle(Transfer_Binder) binder = TP->Find(maprep);
|
Handle(Transfer_Binder) binder = TP->Find(maprep);
|
||||||
if (binder.IsNull()) binder = TransferEntity(maprep, TP, theLocalFactors, isBound, Standard_False, theProgress);
|
if (binder.IsNull()) binder = TransferEntity(maprep, TP, theLocalFactors, isBound, Standard_False, theProgress);
|
||||||
shbinder = Handle(TransferBRep_ShapeBinder)::DownCast(binder);
|
shbinder = Handle(TransferBRep_ShapeBinder)::DownCast(binder);
|
||||||
@ -1575,7 +1545,6 @@ Handle(TransferBRep_ShapeBinder) STEPControl_ActorRead::TransferEntity
|
|||||||
else {
|
else {
|
||||||
TopoDS_Shape mappedShape = shbinder->Result();
|
TopoDS_Shape mappedShape = shbinder->Result();
|
||||||
if ( ! mappedShape.IsNull() ) {
|
if ( ! mappedShape.IsNull() ) {
|
||||||
|
|
||||||
// Positionnement : 2 formules
|
// Positionnement : 2 formules
|
||||||
// 1/ Ax2 dans Source et comme Target : passage de Source a Target
|
// 1/ Ax2 dans Source et comme Target : passage de Source a Target
|
||||||
// 2/ CartesianOperator3d comme Target : on applique
|
// 2/ CartesianOperator3d comme Target : on applique
|
||||||
@ -1607,6 +1576,39 @@ Handle(TransferBRep_ShapeBinder) STEPControl_ActorRead::TransferEntity
|
|||||||
shbinder = new TransferBRep_ShapeBinder (mappedShape);
|
shbinder = new TransferBRep_ShapeBinder (mappedShape);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
TopoDS_Compound aCund;
|
||||||
|
TopoDS_Shape aResult;
|
||||||
|
BRep_Builder aBuilder;
|
||||||
|
aBuilder.MakeCompound(aCund);
|
||||||
|
if (!shbinder.IsNull())
|
||||||
|
{
|
||||||
|
aResult = TransferBRep::ShapeResult(shbinder);
|
||||||
|
aBuilder.Add(aCund, aResult);
|
||||||
|
}
|
||||||
|
// translate possible shapes related by SRRs, which corresponds to
|
||||||
|
// way of writing hybrid models in AP203 since 1998, and AP209
|
||||||
|
Standard_Integer aReadSRR = Interface_Static::IVal("read.step.shape.relationship");
|
||||||
|
Standard_Integer aReadConstructiveGeomRR = Interface_Static::IVal("read.step.constructivegeom.relationship");
|
||||||
|
if (aReadSRR)
|
||||||
|
{
|
||||||
|
const Interface_Graph& aGraph = TP->Graph();
|
||||||
|
Standard_Integer aSRRnum = 0;
|
||||||
|
for (Interface_EntityIterator aSubsIt(aGraph.Sharings(maprep)); aSubsIt.More(); aSubsIt.Next())
|
||||||
|
++aSRRnum;
|
||||||
|
Message_ProgressScope aPS(aPSRoot.Next(), "Part", aSRRnum);
|
||||||
|
TopoDS_Shape aNewResult = TransferRelatedSRR(TP, maprep, Standard_False, aReadConstructiveGeomRR, theLocalFactors, aCund, aPS);
|
||||||
|
if (!aNewResult.IsNull())
|
||||||
|
{
|
||||||
|
aResult = aNewResult;
|
||||||
|
}
|
||||||
|
// if only single shape is read, add it as it is; otherwise add compound
|
||||||
|
if (aCund.NbChildren() == 1)
|
||||||
|
shbinder = new TransferBRep_ShapeBinder(aResult);
|
||||||
|
else if (aCund.NbChildren() > 1)
|
||||||
|
{
|
||||||
|
shbinder = new TransferBRep_ShapeBinder(aCund);
|
||||||
|
}
|
||||||
|
}
|
||||||
TP->Bind(mapit, shbinder);
|
TP->Bind(mapit, shbinder);
|
||||||
return shbinder;
|
return shbinder;
|
||||||
}
|
}
|
||||||
@ -2091,3 +2093,47 @@ void STEPControl_ActorRead::SetModel(const Handle(Interface_InterfaceModel)& the
|
|||||||
{
|
{
|
||||||
myModel = theModel;
|
myModel = theModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
// Method : TransferRelatedSRR
|
||||||
|
// Purpose : Helper method to transfer SRR related to the representation
|
||||||
|
//=======================================================================
|
||||||
|
TopoDS_Shape STEPControl_ActorRead::TransferRelatedSRR(const Handle(Transfer_TransientProcess)& theTP,
|
||||||
|
const Handle(StepShape_ShapeRepresentation)& theRep,
|
||||||
|
const Standard_Boolean theUseTrsf,
|
||||||
|
const Standard_Integer theReadConstructiveGeomRR,
|
||||||
|
const StepData_Factors& theLocalFactors,
|
||||||
|
TopoDS_Compound& theCund,
|
||||||
|
Message_ProgressScope& thePS)
|
||||||
|
{
|
||||||
|
BRep_Builder aBuilder;
|
||||||
|
TopoDS_Shape aResult;
|
||||||
|
const Interface_Graph& aGraph = theTP->Graph();
|
||||||
|
for (Interface_EntityIterator aSubsIt(aGraph.Sharings(theRep)); aSubsIt.More() && thePS.More(); aSubsIt.Next())
|
||||||
|
{
|
||||||
|
Handle(Standard_Transient) anItem = aSubsIt.Value();
|
||||||
|
if (!anItem->IsKind(STANDARD_TYPE(StepRepr_RepresentationRelationship)))
|
||||||
|
continue;
|
||||||
|
Handle(Transfer_Binder) aBinder;
|
||||||
|
if (anItem->DynamicType() == STANDARD_TYPE(StepRepr_ShapeRepresentationRelationship))
|
||||||
|
{
|
||||||
|
Handle(StepRepr_ShapeRepresentationRelationship) aSRR =
|
||||||
|
Handle(StepRepr_ShapeRepresentationRelationship)::DownCast(anItem);
|
||||||
|
Standard_Integer aNbRep = (theRep == aSRR->Rep1() ? 2 : 1);
|
||||||
|
aBinder = TransferEntity(aSRR, theTP, theLocalFactors, aNbRep, theUseTrsf, thePS.Next());
|
||||||
|
}
|
||||||
|
else if (theReadConstructiveGeomRR &&
|
||||||
|
anItem->DynamicType() == STANDARD_TYPE(StepRepr_ConstructiveGeometryRepresentationRelationship))
|
||||||
|
{
|
||||||
|
Handle(StepRepr_ConstructiveGeometryRepresentationRelationship) aCGRR =
|
||||||
|
Handle(StepRepr_ConstructiveGeometryRepresentationRelationship)::DownCast(anItem);
|
||||||
|
aBinder = TransferEntity(aCGRR, theTP, theLocalFactors);
|
||||||
|
}
|
||||||
|
if (!aBinder.IsNull())
|
||||||
|
{
|
||||||
|
aResult = TransferBRep::ShapeResult(aBinder);
|
||||||
|
aBuilder.Add(theCund, aResult);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return aResult;
|
||||||
|
}
|
||||||
|
@ -206,6 +206,14 @@ private:
|
|||||||
|
|
||||||
Standard_EXPORT void computeIDEASClosings (const TopoDS_Compound& comp, TopTools_IndexedDataMapOfShapeListOfShape& shellClosingMap);
|
Standard_EXPORT void computeIDEASClosings (const TopoDS_Compound& comp, TopTools_IndexedDataMapOfShapeListOfShape& shellClosingMap);
|
||||||
|
|
||||||
|
Standard_EXPORT TopoDS_Shape TransferRelatedSRR(const Handle(Transfer_TransientProcess)& theTP,
|
||||||
|
const Handle(StepShape_ShapeRepresentation)& theRep,
|
||||||
|
const Standard_Boolean theUseTrsf,
|
||||||
|
const Standard_Integer theReadConstructiveGeomRR,
|
||||||
|
const StepData_Factors& theLocalFactors,
|
||||||
|
TopoDS_Compound& theCund,
|
||||||
|
Message_ProgressScope& thePS);
|
||||||
|
|
||||||
StepToTopoDS_NMTool myNMTool;
|
StepToTopoDS_NMTool myNMTool;
|
||||||
Standard_Real myPrecision;
|
Standard_Real myPrecision;
|
||||||
Standard_Real myMaxTol;
|
Standard_Real myMaxTol;
|
||||||
|
@ -14,8 +14,10 @@
|
|||||||
|
|
||||||
|
|
||||||
#include <Standard_Type.hxx>
|
#include <Standard_Type.hxx>
|
||||||
#include <Standard_Mutex.hxx>
|
|
||||||
#include <Standard_Assert.hxx>
|
#include <Standard_Assert.hxx>
|
||||||
|
#include <Standard_CStringHasher.hxx>
|
||||||
|
#include <Standard_Mutex.hxx>
|
||||||
|
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
|
|
||||||
@ -23,12 +25,23 @@ IMPLEMENT_STANDARD_RTTIEXT(Standard_Type,Standard_Transient)
|
|||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
static Standard_CString copy_string (const char* theString)
|
||||||
|
{
|
||||||
|
size_t aLength = strlen (theString);
|
||||||
|
char* aResult = static_cast<char*> (Standard::Allocate (aLength + 1));
|
||||||
|
strncpy (aResult, theString, aLength + 1); //including null-character
|
||||||
|
return aResult;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Standard_Type::Standard_Type (const std::type_info& theInfo,
|
Standard_Type::Standard_Type (const std::type_info& theInfo,
|
||||||
const char* theName,
|
const char* theName,
|
||||||
Standard_Size theSize,
|
Standard_Size theSize,
|
||||||
const Handle(Standard_Type)& theParent) :
|
const Handle(Standard_Type)& theParent) :
|
||||||
myInfo(theInfo),
|
myInfo(theInfo),
|
||||||
myName(theName),
|
myName(copy_string (theName)),
|
||||||
mySize(theSize),
|
mySize(theSize),
|
||||||
myParent(theParent)
|
myParent(theParent)
|
||||||
{
|
{
|
||||||
@ -62,7 +75,7 @@ void Standard_Type::Print (Standard_OStream& AStream) const
|
|||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
// Map of string to type
|
// Map of string to type
|
||||||
typedef std::unordered_map<std::type_index, Standard_Type*> registry_type;
|
typedef std::unordered_map<Standard_CString, Standard_Type*, Standard_CStringHasher, Standard_CStringHasher> registry_type;
|
||||||
|
|
||||||
// Registry is made static in the function to ensure that it gets
|
// Registry is made static in the function to ensure that it gets
|
||||||
// initialized by the time of first access
|
// initialized by the time of first access
|
||||||
@ -87,7 +100,7 @@ Standard_Type* Standard_Type::Register (const std::type_info& theInfo, const cha
|
|||||||
// return existing descriptor if already in the registry
|
// return existing descriptor if already in the registry
|
||||||
registry_type& aRegistry = GetRegistry();
|
registry_type& aRegistry = GetRegistry();
|
||||||
Standard_Type* aType = 0;
|
Standard_Type* aType = 0;
|
||||||
auto anIter = aRegistry.find(theInfo);
|
auto anIter = aRegistry.find(theName);
|
||||||
if (anIter != aRegistry.end())
|
if (anIter != aRegistry.end())
|
||||||
return anIter->second;
|
return anIter->second;
|
||||||
|
|
||||||
@ -95,7 +108,7 @@ Standard_Type* Standard_Type::Register (const std::type_info& theInfo, const cha
|
|||||||
aType = new Standard_Type (theInfo, theName, theSize, theParent);
|
aType = new Standard_Type (theInfo, theName, theSize, theParent);
|
||||||
|
|
||||||
// then add it to registry and return (the reference to the handle stored in the registry)
|
// then add it to registry and return (the reference to the handle stored in the registry)
|
||||||
aRegistry.emplace(theInfo, aType);
|
aRegistry.emplace(theName, aType);
|
||||||
return aType;
|
return aType;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -103,5 +116,6 @@ Standard_Type::~Standard_Type ()
|
|||||||
{
|
{
|
||||||
// remove descriptor from the registry
|
// remove descriptor from the registry
|
||||||
registry_type& aRegistry = GetRegistry();
|
registry_type& aRegistry = GetRegistry();
|
||||||
Standard_ASSERT(aRegistry.erase(myInfo) > 0, "Standard_Type::~Standard_Type() cannot find itself in registry",);
|
Standard_ASSERT(aRegistry.erase(myName) > 0, "Standard_Type::~Standard_Type() cannot find itself in registry",);
|
||||||
|
Standard::Free (myName);
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
// Primary definitions
|
// Primary definitions
|
||||||
#define OCC_VERSION_MAJOR 7
|
#define OCC_VERSION_MAJOR 7
|
||||||
#define OCC_VERSION_MINOR 8
|
#define OCC_VERSION_MINOR 8
|
||||||
#define OCC_VERSION_MAINTENANCE 0
|
#define OCC_VERSION_MAINTENANCE 1
|
||||||
|
|
||||||
//! This macro must be commented in official release, and set to non-empty
|
//! This macro must be commented in official release, and set to non-empty
|
||||||
//! string in other situations, to identify specifics of the version, e.g.:
|
//! string in other situations, to identify specifics of the version, e.g.:
|
||||||
@ -47,7 +47,7 @@
|
|||||||
// Derived (manually): version as real and string (major.minor)
|
// Derived (manually): version as real and string (major.minor)
|
||||||
#define OCC_VERSION 7.8
|
#define OCC_VERSION 7.8
|
||||||
#define OCC_VERSION_STRING "7.8"
|
#define OCC_VERSION_STRING "7.8"
|
||||||
#define OCC_VERSION_COMPLETE "7.8.0"
|
#define OCC_VERSION_COMPLETE "7.8.1"
|
||||||
|
|
||||||
//! Derived: extended version as string ("major.minor.maintenance.dev")
|
//! Derived: extended version as string ("major.minor.maintenance.dev")
|
||||||
#ifdef OCC_VERSION_DEVELOPMENT
|
#ifdef OCC_VERSION_DEVELOPMENT
|
||||||
|
@ -299,7 +299,7 @@ void StepData_StepReaderData::cleanText(const Handle(TCollection_HAsciiString)&
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (aChar == '\n')
|
if (aChar == '\n' || aChar == '\r')
|
||||||
{
|
{
|
||||||
aResString.SetValue(aSetCharInd, aResString.ToExtString() + aStringInd);
|
aResString.SetValue(aSetCharInd, aResString.ToExtString() + aStringInd);
|
||||||
aResStringSize--;
|
aResStringSize--;
|
||||||
|
@ -1008,7 +1008,7 @@ Handle(Geom_BSplineSurface) StepToGeom::MakeBSplineSurface (const Handle(StepGeo
|
|||||||
Handle(Geom_CartesianPoint) StepToGeom::MakeCartesianPoint (const Handle(StepGeom_CartesianPoint)& SP,
|
Handle(Geom_CartesianPoint) StepToGeom::MakeCartesianPoint (const Handle(StepGeom_CartesianPoint)& SP,
|
||||||
const StepData_Factors& theLocalFactors)
|
const StepData_Factors& theLocalFactors)
|
||||||
{
|
{
|
||||||
if (SP->NbCoordinates() == 3)
|
if (!SP.IsNull() && SP->NbCoordinates() == 3)
|
||||||
{
|
{
|
||||||
const Standard_Real LF = theLocalFactors.LengthFactor();
|
const Standard_Real LF = theLocalFactors.LengthFactor();
|
||||||
const Standard_Real X = SP->CoordinatesValue(1) * LF;
|
const Standard_Real X = SP->CoordinatesValue(1) * LF;
|
||||||
|
@ -408,8 +408,25 @@ void StepToTopoDS_TranslateEdge::MakeFromCurve3D
|
|||||||
temp1 = pU1.Distance ( pv1 );
|
temp1 = pU1.Distance ( pv1 );
|
||||||
temp2 = pU2.Distance ( pv2 );
|
temp2 = pU2.Distance ( pv2 );
|
||||||
if ( temp1 > preci || temp2 > preci ) {
|
if ( temp1 > preci || temp2 > preci ) {
|
||||||
|
// #25415: handling of special case found on some STEP files produced by FPX Expert 2013 (PCB design system):
|
||||||
|
// edge curve is line displaced from its true position but with correct direction;
|
||||||
|
// we can shift the line in this case so that it passes through vertices correcty
|
||||||
|
if (Abs (temp1 - temp2) < preci && Abs (U2 - U1 - pnt1.Distance(pnt2)) < Precision::Confusion() &&
|
||||||
|
C1->IsKind(STANDARD_TYPE(Geom_Line)))
|
||||||
|
{
|
||||||
|
Handle(Geom_Line) aLine = Handle(Geom_Line)::DownCast (C1);
|
||||||
|
gp_Lin aLin = aLine->Lin();
|
||||||
|
gp_Pnt anOrigin = pnt1.XYZ() - aLin.Position().Direction().XYZ() * U1;
|
||||||
|
aLin.SetLocation (anOrigin);
|
||||||
|
C1 = new Geom_Line (aLin);
|
||||||
|
|
||||||
|
TP->AddWarning (C3D,"Poor result from projection vertex / line 3d, line shifted");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
TP->AddWarning (C3D,"Poor result from projection vertex / curve 3d");
|
TP->AddWarning (C3D,"Poor result from projection vertex / curve 3d");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
B.UpdateVertex ( V1, 1.000001*temp1 ); //:h6 abv 14 Jul 98: PRO8845 #2746: *=1.0001
|
B.UpdateVertex ( V1, 1.000001*temp1 ); //:h6 abv 14 Jul 98: PRO8845 #2746: *=1.0001
|
||||||
B.UpdateVertex ( V2, 1.000001*temp2 ); //:h6
|
B.UpdateVertex ( V2, 1.000001*temp2 ); //:h6
|
||||||
|
|
||||||
|
@ -105,12 +105,13 @@ namespace {
|
|||||||
// ============================================================================
|
// ============================================================================
|
||||||
static void SetNodes(const Handle(Poly_Triangulation)& theMesh,
|
static void SetNodes(const Handle(Poly_Triangulation)& theMesh,
|
||||||
Handle(TColgp_HArray1OfXYZ)& theNodes,
|
Handle(TColgp_HArray1OfXYZ)& theNodes,
|
||||||
|
const Standard_Integer theNumPnindex,
|
||||||
Handle(TColStd_HArray1OfInteger)& thePnindices,
|
Handle(TColStd_HArray1OfInteger)& thePnindices,
|
||||||
const Standard_Real theLengthFactor)
|
const Standard_Real theLengthFactor)
|
||||||
{
|
{
|
||||||
for (Standard_Integer aPnIndex = 1; aPnIndex <= theMesh->NbNodes(); ++aPnIndex)
|
for (Standard_Integer aPnIndex = 1; aPnIndex <= theMesh->NbNodes(); ++aPnIndex)
|
||||||
{
|
{
|
||||||
const gp_XYZ& aPoint = theNodes->Value(thePnindices->Value(aPnIndex));
|
const gp_XYZ& aPoint = theNodes->Value((theNumPnindex > 0) ? thePnindices->Value(aPnIndex) : aPnIndex);
|
||||||
theMesh->SetNode(aPnIndex, theLengthFactor * aPoint);
|
theMesh->SetNode(aPnIndex, theLengthFactor * aPoint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -326,10 +327,11 @@ namespace {
|
|||||||
|
|
||||||
const Standard_Boolean aHasUVNodes = Standard_False;
|
const Standard_Boolean aHasUVNodes = Standard_False;
|
||||||
const Standard_Boolean aHasNormals = (aNormNum > 0);
|
const Standard_Boolean aHasNormals = (aNormNum > 0);
|
||||||
|
const Standard_Integer aNbNodes = (aNumPnindex > 0) ? aNumPnindex : aNodes->Length();
|
||||||
|
|
||||||
if (aTrianStripsNum == 0 && aTrianFansNum == 0)
|
if (aTrianStripsNum == 0 && aTrianFansNum == 0)
|
||||||
{
|
{
|
||||||
aMesh = new Poly_Triangulation(aNumPnindex, aTrianNum, aHasUVNodes, aHasNormals);
|
aMesh = new Poly_Triangulation(aNbNodes, aTrianNum, aHasUVNodes, aHasNormals);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -359,14 +361,14 @@ namespace {
|
|||||||
aNbTriaFans += aTriangleFan->Length() - 2;
|
aNbTriaFans += aTriangleFan->Length() - 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
aMesh = new Poly_Triangulation(aNumPnindex, aNbTriaStrips + aNbTriaFans, aHasUVNodes, aHasNormals);
|
aMesh = new Poly_Triangulation(aNbNodes, aNbTriaStrips + aNbTriaFans, aHasUVNodes, aHasNormals);
|
||||||
}
|
}
|
||||||
|
|
||||||
SetNodes(aMesh, aNodes, aPnindices, theLocalFactors.LengthFactor());
|
SetNodes(aMesh, aNodes, aNumPnindex, aPnindices, theLocalFactors.LengthFactor());
|
||||||
|
|
||||||
if (aHasNormals)
|
if (aHasNormals)
|
||||||
{
|
{
|
||||||
SetNormals(aMesh, aNormals, aNormNum, aNumPnindex);
|
SetNormals(aMesh, aNormals, aNormNum, aNbNodes);
|
||||||
}
|
}
|
||||||
|
|
||||||
SetTriangles(aMesh, aTriangles, aTrianStripsNum, aTriaStrips, aTrianFansNum, aTriaFans);
|
SetTriangles(aMesh, aTriangles, aTrianStripsNum, aTriaStrips, aTrianFansNum, aTriaFans);
|
||||||
@ -545,7 +547,10 @@ void StepToTopoDS_TranslateFace::Init(const Handle(StepShape_FaceSurface)& FS,
|
|||||||
#endif
|
#endif
|
||||||
FaceBound = FS->BoundsValue(i);
|
FaceBound = FS->BoundsValue(i);
|
||||||
Loop = FaceBound->Bound();
|
Loop = FaceBound->Bound();
|
||||||
|
if (Loop.IsNull())
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
// ------------------------
|
// ------------------------
|
||||||
// The Loop is a VertexLoop
|
// The Loop is a VertexLoop
|
||||||
// ------------------------
|
// ------------------------
|
||||||
@ -758,6 +763,8 @@ void StepToTopoDS_TranslateFace::Init(const Handle(StepVisual_TessellatedFace)&
|
|||||||
if (theNMTool.IsActive())
|
if (theNMTool.IsActive())
|
||||||
theNMTool.Bind(theTF, aF);
|
theNMTool.Bind(theTF, aF);
|
||||||
|
|
||||||
|
aTP->Bind(theTF, new TransferBRep_ShapeBinder(aF));
|
||||||
|
|
||||||
myResult = aF;
|
myResult = aF;
|
||||||
myError = StepToTopoDS_TranslateFaceDone;
|
myError = StepToTopoDS_TranslateFaceDone;
|
||||||
done = Standard_True;
|
done = Standard_True;
|
||||||
|
@ -96,6 +96,11 @@ void StepToTopoDS_TranslateVertex::Init(const Handle(StepShape_Vertex)& aVertex,
|
|||||||
//:S4136 Standard_Real preci = BRepAPI::Precision();
|
//:S4136 Standard_Real preci = BRepAPI::Precision();
|
||||||
const Handle(StepShape_VertexPoint) VP = Handle(StepShape_VertexPoint)::DownCast(aVertex);
|
const Handle(StepShape_VertexPoint) VP = Handle(StepShape_VertexPoint)::DownCast(aVertex);
|
||||||
const Handle(StepGeom_Point) P = VP->VertexGeometry();
|
const Handle(StepGeom_Point) P = VP->VertexGeometry();
|
||||||
|
if (P.IsNull()) {
|
||||||
|
myError = StepToTopoDS_TranslateVertexOther;
|
||||||
|
done = Standard_False;
|
||||||
|
return;
|
||||||
|
}
|
||||||
const Handle(StepGeom_CartesianPoint) P1 = Handle(StepGeom_CartesianPoint)::DownCast(P);
|
const Handle(StepGeom_CartesianPoint) P1 = Handle(StepGeom_CartesianPoint)::DownCast(P);
|
||||||
Handle(Geom_CartesianPoint) P2 = StepToGeom::MakeCartesianPoint (P1, theLocalFactors);
|
Handle(Geom_CartesianPoint) P2 = StepToGeom::MakeCartesianPoint (P1, theLocalFactors);
|
||||||
BRep_Builder B;
|
BRep_Builder B;
|
||||||
|
@ -1,8 +1,3 @@
|
|||||||
puts "TODO OCC23068 ALL: ERROR. offsetperform operation not done."
|
|
||||||
puts "TODO OCC23068 ALL: result is not a topological shape!!!"
|
|
||||||
puts "TODO OCC23068 ALL: Error: The command cannot be built"
|
|
||||||
puts "TODO OCC23068 ALL: TEST INCOMPLETE"
|
|
||||||
|
|
||||||
puts "========================"
|
puts "========================"
|
||||||
puts " OCC427 "
|
puts " OCC427 "
|
||||||
puts "(case 6)"
|
puts "(case 6)"
|
||||||
|
@ -1,8 +1,4 @@
|
|||||||
puts "TODO OCC25925 ALL: ERROR. offsetperform operation not done."
|
puts "TODO OCC25925 ALL: Error : The area of result shape is"
|
||||||
puts "TODO OCC25925 ALL: Error: The command cannot be built"
|
|
||||||
puts "TODO OCC25925 ALL: Faulty OCC5805 : result is not Closed shape"
|
|
||||||
puts "TODO OCC25925 ALL: TEST INCOMPLETE"
|
|
||||||
puts "TODO OCC25925 ALL: Tcl Exception: Error : command \\\"nbshapes result\\\" gives an empty result"
|
|
||||||
|
|
||||||
puts "============"
|
puts "============"
|
||||||
puts "OCC5805"
|
puts "OCC5805"
|
||||||
@ -52,6 +48,6 @@ if {$index == -1} {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
checknbshapes result -t -wire 5 -face 5 -shell 2 -solid 1
|
checknbshapes result -t -wire 3 -face 3 -shell 1 -solid 1
|
||||||
|
|
||||||
checkview -display result -2d -path ${imagedir}/${test_image}.png
|
checkview -display result -2d -path ${imagedir}/${test_image}.png
|
||||||
|
@ -1,8 +1,4 @@
|
|||||||
puts "TODO OCC25925 ALL: Faulty OCC5805 : result is not Closed shape"
|
puts "TODO OCC25925 ALL: Error : The area of result shape is"
|
||||||
puts "TODO OCC25925 ALL: ERROR. offsetperform operation not done."
|
|
||||||
puts "TODO OCC25925 ALL: Tcl Exception: Error : command \\\"nbshapes result\\\" gives an empty result"
|
|
||||||
puts "TODO OCC25925 ALL: Error: The command cannot be built"
|
|
||||||
puts "TODO OCC25925 ALL: TEST INCOMPLETE"
|
|
||||||
|
|
||||||
puts "============"
|
puts "============"
|
||||||
puts "OCC5805"
|
puts "OCC5805"
|
||||||
@ -53,6 +49,6 @@ if {$index == -1} {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
checknbshapes result -vertex 2 -edge 3 -wire 3 -face 3 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 13
|
checknbshapes result -vertex 1 -edge 2 -wire 3 -face 3 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 11
|
||||||
|
|
||||||
checkview -display result -2d -path ${imagedir}/${test_image}.png
|
checkview -display result -2d -path ${imagedir}/${test_image}.png
|
||||||
|
@ -1,8 +1,4 @@
|
|||||||
puts "TODO OCC25925 ALL: Faulty OCC5805 : result is not Closed shape"
|
puts "TODO OCC25925 ALL: Error : The area of result shape is"
|
||||||
puts "TODO OCC25925 ALL: ERROR. offsetperform operation not done."
|
|
||||||
puts "TODO OCC25925 ALL: Tcl Exception: Error : command \\\"nbshapes result\\\" gives an empty result"
|
|
||||||
puts "TODO OCC25925 ALL: Error: The command cannot be built"
|
|
||||||
puts "TODO OCC25925 ALL: TEST INCOMPLETE"
|
|
||||||
|
|
||||||
puts "============"
|
puts "============"
|
||||||
puts "OCC5805"
|
puts "OCC5805"
|
||||||
@ -53,6 +49,6 @@ if {$index == -1} {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
checknbshapes result -vertex 2 -edge 3 -wire 3 -face 3 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 13
|
checknbshapes result -vertex 1 -edge 2 -wire 3 -face 3 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 11
|
||||||
|
|
||||||
checkview -display result -2d -path ${imagedir}/${test_image}.png
|
checkview -display result -2d -path ${imagedir}/${test_image}.png
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
puts "TODO OCC25925 ALL: Faulty OCC5805 : result is not Closed shape"
|
puts "TODO OCC25925 ALL: Error : The area of result shape is"
|
||||||
puts "TODO OCC25925 ALL: ERROR. offsetperform operation not done."
|
|
||||||
puts "TODO OCC25925 ALL: Error: The command cannot be built"
|
|
||||||
|
|
||||||
puts "============"
|
puts "============"
|
||||||
puts "OCC5805"
|
puts "OCC5805"
|
||||||
|
@ -1,7 +1,4 @@
|
|||||||
puts "TODO OCC23068 ALL: ERROR. offsetperform operation not done."
|
puts "TODO OCC25925 ALL: Error : The area of result shape is"
|
||||||
puts "TODO OCC25925 ALL: Error: The command cannot be built"
|
|
||||||
puts "TODO OCC25925 ALL: Tcl Exception: result is not a topological shape"
|
|
||||||
puts "TODO OCC25925 ALL: TEST INCOMPLETE"
|
|
||||||
|
|
||||||
puts "============"
|
puts "============"
|
||||||
puts "OCC5805"
|
puts "OCC5805"
|
||||||
|
@ -1,8 +1,4 @@
|
|||||||
puts "TODO OCC25925 ALL: Faulty OCC5805 : result is not Closed shape"
|
puts "TODO OCC25925 ALL: Error : The area of result shape is"
|
||||||
puts "TODO OCC25925 ALL: ERROR. offsetperform operation not done."
|
|
||||||
puts "TODO OCC25925 ALL: Tcl Exception: Error : command \\\"nbshapes result\\\" gives an empty result"
|
|
||||||
puts "TODO OCC25925 ALL: Error: The command cannot be built"
|
|
||||||
puts "TODO OCC25925 ALL: TEST INCOMPLETE"
|
|
||||||
|
|
||||||
puts "============"
|
puts "============"
|
||||||
puts "OCC5805"
|
puts "OCC5805"
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
puts "TODO OCC25395 ALL: ERROR. offsetperform operation not done."
|
|
||||||
|
|
||||||
puts "========"
|
puts "========"
|
||||||
puts "OCC25395"
|
puts "OCC25395"
|
||||||
puts "========"
|
puts "========"
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
puts "TODO OCC25939 ALL: An exception was caught"
|
|
||||||
|
|
||||||
puts "============"
|
puts "============"
|
||||||
puts "0025939: S I G S E G V in MakeThickSolid"
|
puts "0025939: S I G S E G V in MakeThickSolid"
|
||||||
puts "============"
|
puts "============"
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
puts "TODO OCC31845 All: ERROR. offsetperform operation not done."
|
|
||||||
|
|
||||||
puts "============================================"
|
puts "============================================"
|
||||||
puts "OCC31845: BRepOffsetAPI_MakeThickSolid fails"
|
puts "OCC31845: BRepOffsetAPI_MakeThickSolid fails"
|
||||||
puts "============================================"
|
puts "============================================"
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
puts "TODO OCC31845 All: ERROR. offsetperform operation not done."
|
|
||||||
|
|
||||||
puts "============================================"
|
puts "============================================"
|
||||||
puts "OCC31845: BRepOffsetAPI_MakeThickSolid fails"
|
puts "OCC31845: BRepOffsetAPI_MakeThickSolid fails"
|
||||||
puts "============================================"
|
puts "============================================"
|
||||||
|
15
tests/bugs/modalg_8/bug31601
Normal file
15
tests/bugs/modalg_8/bug31601
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
puts "================================================================="
|
||||||
|
puts "0031601: Modeling Algorithms - BRepOffset_Tool Segmentation Fault"
|
||||||
|
puts "================================================================="
|
||||||
|
puts ""
|
||||||
|
|
||||||
|
pload MODELING
|
||||||
|
box b 50 50 10
|
||||||
|
explode b E
|
||||||
|
compound b_1 b_2 b_3 b_4 b_5 b_6 b_7 b_8 b_9 b_10 b_11 b_12 c
|
||||||
|
fillet s b 4 c
|
||||||
|
explode s F
|
||||||
|
offsetparameter 1.e-7 c a
|
||||||
|
offsetload s 1 s_11
|
||||||
|
offsetperform r
|
||||||
|
checkview -display r -2d -path ${imagedir}/${test_image}.png
|
17
tests/bugs/modalg_8/bug33367
Normal file
17
tests/bugs/modalg_8/bug33367
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
puts "==============================================================="
|
||||||
|
puts "0033367: Modeling Algorithms - Normal projection or BOP problem"
|
||||||
|
puts "==============================================================="
|
||||||
|
puts ""
|
||||||
|
|
||||||
|
pload MODELING
|
||||||
|
restore [locate_data_file bug33367_1.brep] sou
|
||||||
|
restore [locate_data_file bug33367_2.brep] des
|
||||||
|
checkshape sou
|
||||||
|
checkshape des
|
||||||
|
nproject prj sou des
|
||||||
|
checknbshapes prj -vertex 2 -edge 2 -compound 1 -shape 5
|
||||||
|
baddobjects des
|
||||||
|
baddtools prj
|
||||||
|
bfillds
|
||||||
|
bbuild res
|
||||||
|
checkshape res
|
14
tests/bugs/modalg_8/bug33383
Normal file
14
tests/bugs/modalg_8/bug33383
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
puts "========================================================="
|
||||||
|
puts "0033383: Modeling Algorithms - Wire/Face creation problem"
|
||||||
|
puts "========================================================="
|
||||||
|
puts ""
|
||||||
|
|
||||||
|
pload MODELING
|
||||||
|
restore [locate_data_file bug33383.brep] a
|
||||||
|
connectedges res a 1e-07 0
|
||||||
|
explode res
|
||||||
|
mkplane pln1 res_1 1
|
||||||
|
|
||||||
|
if ![catch { buildfaces rebf pln1 res_2 }] then {
|
||||||
|
puts "Error: buildfaces command should be failed"
|
||||||
|
}
|
11
tests/bugs/moddata_3/bug33567
Normal file
11
tests/bugs/moddata_3/bug33567
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
puts "==========================================================="
|
||||||
|
puts "0033567: Modeling Data - GeomLib_IsPlanarSurface raises SIGFPE in Release mode"
|
||||||
|
puts "==========================================================="
|
||||||
|
|
||||||
|
puts "REQUIRED All: Conversion failed"
|
||||||
|
|
||||||
|
pload MODELING
|
||||||
|
|
||||||
|
restore [locate_data_file bug33567.brep] a
|
||||||
|
mksurface s a
|
||||||
|
tocanon r s 0.0005
|
@ -1,5 +1,3 @@
|
|||||||
puts "TODO OCC25188 ALL: Error: File "
|
|
||||||
|
|
||||||
puts "========"
|
puts "========"
|
||||||
puts "OCC25168"
|
puts "OCC25168"
|
||||||
puts "========"
|
puts "========"
|
||||||
|
11
tests/bugs/step/bug25415
Normal file
11
tests/bugs/step/bug25415
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
puts "========"
|
||||||
|
puts "OCC25415"
|
||||||
|
puts "========"
|
||||||
|
puts ""
|
||||||
|
##########################################################################
|
||||||
|
# Invalid result of loading a STEP file
|
||||||
|
##########################################################################
|
||||||
|
|
||||||
|
stepread [locate_data_file bug25415_part_of_hdrv8w64p254_4x2_1016x502h838p.stp] a *
|
||||||
|
|
||||||
|
checkshape a_1
|
17
tests/bugs/step/bug33261
Normal file
17
tests/bugs/step/bug33261
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
puts "======="
|
||||||
|
puts "0033261: Data Exchange, Step Import - Empty shape after reading process"
|
||||||
|
puts "======="
|
||||||
|
|
||||||
|
pload OCAF MODELING
|
||||||
|
|
||||||
|
# Read file
|
||||||
|
ReadStep D [locate_data_file bug33261.stp]
|
||||||
|
|
||||||
|
# get document model as a single shape
|
||||||
|
XGetOneShape S1 D
|
||||||
|
|
||||||
|
# check number of subshapes in the shape restored from STEP
|
||||||
|
checknbshapes S1 -face 2025 -solid 24 -compound 100
|
||||||
|
|
||||||
|
Close D -silent
|
||||||
|
unset S1
|
12
tests/bugs/step/bug33410
Normal file
12
tests/bugs/step/bug33410
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
puts "========================"
|
||||||
|
puts "0033410: Data Exchange, Step Import - TRIANGULATED_FACE from STEP where there are no pnval entries"
|
||||||
|
puts "========================"
|
||||||
|
|
||||||
|
pload OCAF
|
||||||
|
|
||||||
|
# Read file
|
||||||
|
ReadStep D [locate_data_file bug33410.step]
|
||||||
|
XGetOneShape sh D
|
||||||
|
checktrinfo sh -face 1 -nod 81 -tri 128
|
||||||
|
|
||||||
|
Close D
|
13
tests/bugs/step/bug33569
Normal file
13
tests/bugs/step/bug33569
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
puts "================"
|
||||||
|
puts "0033569: Data Exchange, STEP - Crash when reading multi-body file"
|
||||||
|
puts "================"
|
||||||
|
|
||||||
|
ReadStep D [locate_data_file bug33569.stp]
|
||||||
|
|
||||||
|
set result [XDumpNbDGTs D]
|
||||||
|
|
||||||
|
regexp {NbOfAttachedDatum +: +([0-9]+)} $result full nb
|
||||||
|
|
||||||
|
if { $nb != 26} {
|
||||||
|
puts "Error: Number of Datums incorrect"
|
||||||
|
}
|
17
tests/bugs/step/bug33638
Normal file
17
tests/bugs/step/bug33638
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
puts "===================================="
|
||||||
|
puts "0033638: Data Exchange, Step Import - Style for tessellated object missed"
|
||||||
|
puts "===================================="
|
||||||
|
puts ""
|
||||||
|
|
||||||
|
pload OCAF
|
||||||
|
|
||||||
|
ReadStep D [locate_data_file bug33638.stp]
|
||||||
|
|
||||||
|
if { [ XFindColor D 0 0 1 ] == "" } {
|
||||||
|
puts "Error: Color not found"
|
||||||
|
}
|
||||||
|
if { [ XFindColor D 1 0 0 ] == "" } {
|
||||||
|
puts "Error: Color not found"
|
||||||
|
}
|
||||||
|
|
||||||
|
Close D
|
@ -1,6 +1,3 @@
|
|||||||
puts "TODO OCC23068 ALL: ERROR. offsetperform operation not done."
|
|
||||||
puts "TODO OCC23068 ALL: Error : The volume of result shape "
|
|
||||||
|
|
||||||
## ======================================
|
## ======================================
|
||||||
## Grid : CCV002
|
## Grid : CCV002
|
||||||
## Test : A1
|
## Test : A1
|
||||||
@ -12,4 +9,4 @@ explode s F
|
|||||||
offsetcompshape result s -10 s_1
|
offsetcompshape result s -10 s_1
|
||||||
|
|
||||||
#real volume of result shape is unknown yet
|
#real volume of result shape is unknown yet
|
||||||
checkprops result -v 0
|
checkprops result -v 1.01e+06
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
## Comment : From CV tests serie page 60
|
## Comment : From CV tests serie page 60
|
||||||
## ======================================
|
## ======================================
|
||||||
|
|
||||||
puts "TODO OCC26556 ALL: ERROR. offsetperform operation not done."
|
|
||||||
restore [locate_data_file CCV_2_d1_gsw.rle] s
|
restore [locate_data_file CCV_2_d1_gsw.rle] s
|
||||||
explode s F
|
explode s F
|
||||||
catch {offsetcompshape result s -2 s_17}
|
catch {offsetcompshape result s -2 s_17}
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done."
|
puts "TODO CR23530 ALL: Faulty shapes in variables faulty_1 to faulty_"
|
||||||
puts "TODO OCC23748 ALL: Error: The command cannot be built"
|
puts "TODO OCC23068 ALL: Error : The area of face "
|
||||||
puts "TODO OCC26556 ALL: Error : The offset cannot be built."
|
|
||||||
pcone s 5 0 12 90
|
pcone s 5 0 12 90
|
||||||
trotate s 0 0 0 0 0 1 90
|
trotate s 0 0 0 0 0 1 90
|
||||||
|
|
||||||
OFFSETSHAPE 1 {s_4} $calcul $type
|
OFFSETSHAPE 1 {s_4} $calcul $type
|
||||||
|
|
||||||
checkprops result -v 0
|
checkprops result -v 78.53988
|
||||||
|
@ -1,9 +1,5 @@
|
|||||||
puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done."
|
|
||||||
puts "TODO OCC23748 ALL: Error: The command cannot be built"
|
|
||||||
puts "TODO OCC26556 ALL: Error : The offset cannot be built."
|
|
||||||
|
|
||||||
pcone s 5 0 12 270
|
pcone s 5 0 12 270
|
||||||
|
|
||||||
OFFSETSHAPE -1 {s_4} $calcul $type
|
OFFSETSHAPE -1 {s_4} $calcul $type
|
||||||
|
|
||||||
checkprops result -v 0
|
checkprops result -v 235.619
|
||||||
|
@ -1,9 +1,5 @@
|
|||||||
puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done."
|
|
||||||
puts "TODO OCC23748 ALL: Error: The command cannot be built"
|
|
||||||
puts "TODO OCC26556 ALL: Error : The offset cannot be built."
|
|
||||||
|
|
||||||
pcone s 5 0 12 270
|
pcone s 5 0 12 270
|
||||||
|
|
||||||
OFFSETSHAPE 1 {s_3 s_4} $calcul $type
|
OFFSETSHAPE 1 {s_3 s_4} $calcul $type
|
||||||
|
|
||||||
checkprops result -v 0
|
checkprops result -v 235.619
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done."
|
puts "TODO OCC23068 ALL: Error : The area of face "
|
||||||
puts "TODO OCC23748 ALL: Error: The command cannot be built"
|
puts "TODO CR23530 ALL: Faulty shapes in variables faulty_1 to faulty_"
|
||||||
puts "TODO OCC26556 ALL: Error : The offset cannot be built."
|
|
||||||
|
|
||||||
psphere s 15 -90 60 90
|
psphere s 15 -90 60 90
|
||||||
trotate s 0 0 0 0 0 1 90
|
trotate s 0 0 0 0 0 1 90
|
||||||
|
|
||||||
OFFSETSHAPE 1 {s_4} $calcul $type
|
OFFSETSHAPE 1 {s_4} $calcul $type
|
||||||
|
|
||||||
checkprops result -v 0
|
checkprops result -v 3488.84
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done."
|
puts "TODO OCC23068 ALL: Error : The area of face "
|
||||||
puts "TODO OCC23748 ALL: Error: The command cannot be built"
|
puts "TODO CR23530 ALL: Faulty shapes in variables faulty_1 to faulty_"
|
||||||
puts "TODO OCC26556 ALL: Error : The offset cannot be built."
|
|
||||||
|
|
||||||
psphere s 15 -90 60 270
|
psphere s 15 -90 60 270
|
||||||
|
|
||||||
OFFSETSHAPE 1 {s_4} $calcul $type
|
OFFSETSHAPE 1 {s_4} $calcul $type
|
||||||
|
|
||||||
checkprops result -v 0
|
checkprops result -v 10466.5
|
||||||
|
@ -1,9 +1,5 @@
|
|||||||
puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done."
|
|
||||||
puts "TODO OCC23748 ALL: Error: The command cannot be built"
|
|
||||||
puts "TODO OCC26556 ALL: Error : The offset cannot be built."
|
|
||||||
|
|
||||||
psphere s 15 -90 60 270
|
psphere s 15 -90 60 270
|
||||||
|
|
||||||
OFFSETSHAPE -1 {s_4} $calcul $type
|
OFFSETSHAPE -1 {s_4} $calcul $type
|
||||||
|
|
||||||
checkprops result -v 0
|
checkprops result -v 10466.5
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
puts "TODO OCC23068 ALL: ERROR. offsetperform operation not done."
|
puts "TODO OCC23068 ALL: Error : The area of face "
|
||||||
puts "TODO OCC23068 ALL: Error : The offset cannot be built."
|
|
||||||
puts "TODO OCC23068 ALL: Error: The command cannot be built"
|
|
||||||
|
|
||||||
psphere s 15 90
|
psphere s 15 90
|
||||||
trotate s 0 0 0 0 0 1 90
|
trotate s 0 0 0 0 0 1 90
|
||||||
|
|
||||||
OFFSETSHAPE 1 {s_3} $calcul $type
|
OFFSETSHAPE 1 {s_3} $calcul $type
|
||||||
|
|
||||||
checkprops result -v 0
|
checkprops result -v 3534.29
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done."
|
puts "TODO OCC23068 ALL: Error : The area of face "
|
||||||
puts "TODO OCC23748 ALL: Error : The offset cannot be built."
|
|
||||||
|
|
||||||
psphere s 15 270
|
psphere s 15 270
|
||||||
|
|
||||||
|
@ -1,9 +1,5 @@
|
|||||||
puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done."
|
|
||||||
puts "TODO OCC23748 ALL: Error: The command cannot be built"
|
|
||||||
puts "TODO OCC26556 ALL: Error : The offset cannot be built."
|
|
||||||
|
|
||||||
psphere s 15 270
|
psphere s 15 270
|
||||||
|
|
||||||
OFFSETSHAPE -1 {s_2} $calcul $type
|
OFFSETSHAPE -1 {s_2} $calcul $type
|
||||||
|
|
||||||
checkprops result -v 0
|
checkprops result -v 10602.9
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
puts "TODO OCC24156 MacOS: An exception was caught"
|
puts "TODO CR23530 ALL: Faulty shapes in variables faulty_1 to faulty_"
|
||||||
puts "TODO OCC24156 MacOS: TEST INCOMPLETE"
|
puts "TODO OCC23068 ALL: Error : The area of face "
|
||||||
puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done."
|
|
||||||
puts "TODO OCC23748 ALL: Error: The command cannot be built"
|
|
||||||
puts "TODO OCC26556 ALL: Error : The offset cannot be built."
|
|
||||||
|
|
||||||
ellipse w1 0 0 0 15 10
|
ellipse w1 0 0 0 15 10
|
||||||
mkedge w1 w1 0 pi/2
|
mkedge w1 w1 0 pi/2
|
||||||
@ -14,4 +11,4 @@ revol s w 0 0 0 0 0 1 90
|
|||||||
|
|
||||||
OFFSETSHAPE 1 {s_4} $calcul $type
|
OFFSETSHAPE 1 {s_4} $calcul $type
|
||||||
|
|
||||||
checkprops result -v 0
|
checkprops result -v 4385.14
|
||||||
|
@ -1,9 +1,3 @@
|
|||||||
puts "TODO OCC24156 MacOS: An exception was caught"
|
|
||||||
puts "TODO OCC24156 MacOS: TEST INCOMPLETE"
|
|
||||||
puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done."
|
|
||||||
puts "TODO OCC23748 ALL: Error: The command cannot be built"
|
|
||||||
puts "TODO OCC26556 ALL: Error : The offset cannot be built."
|
|
||||||
|
|
||||||
ellipse w1 0 0 0 15 10
|
ellipse w1 0 0 0 15 10
|
||||||
mkedge w1 w1 0 pi/2
|
mkedge w1 w1 0 pi/2
|
||||||
trotate w1 0 0 0 1 0 0 90
|
trotate w1 0 0 0 1 0 0 90
|
||||||
@ -14,4 +8,4 @@ revol s w 0 0 0 0 0 1 90
|
|||||||
|
|
||||||
OFFSETSHAPE -1 {s_4} $calcul $type
|
OFFSETSHAPE -1 {s_4} $calcul $type
|
||||||
|
|
||||||
checkprops result -v 0
|
checkprops result -v 4385.14
|
||||||
|
@ -1,9 +1,3 @@
|
|||||||
puts "TODO OCC24156 MacOS: An exception was caught"
|
|
||||||
puts "TODO OCC24156 MacOS: TEST INCOMPLETE"
|
|
||||||
puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done."
|
|
||||||
puts "TODO OCC23748 ALL: Error: The command cannot be built"
|
|
||||||
puts "TODO OCC26556 ALL: Error : The offset cannot be built."
|
|
||||||
|
|
||||||
ellipse w1 0 0 0 15 10
|
ellipse w1 0 0 0 15 10
|
||||||
mkedge w1 w1 0 pi/2
|
mkedge w1 w1 0 pi/2
|
||||||
trotate w1 0 0 0 1 0 0 90
|
trotate w1 0 0 0 1 0 0 90
|
||||||
@ -14,4 +8,4 @@ revol s w 0 0 0 0 0 1 90
|
|||||||
|
|
||||||
OFFSETSHAPE 1 {s_4 s_5} $calcul $type
|
OFFSETSHAPE 1 {s_4 s_5} $calcul $type
|
||||||
|
|
||||||
checkprops result -v 0
|
checkprops result -v 4385.14
|
||||||
|
@ -1,7 +1,3 @@
|
|||||||
puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done."
|
|
||||||
puts "TODO OCC23748 ALL: Error: The command cannot be built"
|
|
||||||
puts "TODO OCC26556 ALL: Error : The offset cannot be built."
|
|
||||||
|
|
||||||
ellipse w1 0 0 0 15 10
|
ellipse w1 0 0 0 15 10
|
||||||
mkedge w1 w1 0 pi/2
|
mkedge w1 w1 0 pi/2
|
||||||
trotate w1 0 0 0 1 0 0 90
|
trotate w1 0 0 0 1 0 0 90
|
||||||
@ -12,4 +8,4 @@ revol s w 0 0 0 0 0 1 90
|
|||||||
|
|
||||||
OFFSETSHAPE -1 {s_4 s_5} $calcul $type
|
OFFSETSHAPE -1 {s_4 s_5} $calcul $type
|
||||||
|
|
||||||
checkprops result -v 0
|
checkprops result -v 4385.14
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
puts "TODO OCC24156 MacOS: An exception was caught"
|
puts "TODO CR23530 ALL: Faulty shapes in variables faulty_1 to faulty_"
|
||||||
puts "TODO OCC24156 MacOS: TEST INCOMPLETE"
|
puts "TODO OCC23068 ALL: Error : The area of face "
|
||||||
puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done."
|
|
||||||
puts "TODO OCC23748 ALL: Error: The command cannot be built"
|
|
||||||
puts "TODO OCC26556 ALL: Error : The offset cannot be built."
|
|
||||||
|
|
||||||
ellipse w1 0 0 0 15 10
|
ellipse w1 0 0 0 15 10
|
||||||
mkedge w1 w1 0 pi/2
|
mkedge w1 w1 0 pi/2
|
||||||
@ -14,4 +11,4 @@ revol s w 0 0 0 0 0 1 270
|
|||||||
|
|
||||||
OFFSETSHAPE 1 {s_4} $calcul $type
|
OFFSETSHAPE 1 {s_4} $calcul $type
|
||||||
|
|
||||||
checkprops result -v 0
|
checkprops result -v 13155.2
|
||||||
|
@ -1,9 +1,3 @@
|
|||||||
puts "TODO OCC24156 MacOS: An exception was caught"
|
|
||||||
puts "TODO OCC24156 MacOS: TEST INCOMPLETE"
|
|
||||||
puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done."
|
|
||||||
puts "TODO OCC23748 ALL: Error: The command cannot be built"
|
|
||||||
puts "TODO OCC26556 ALL: Error : The offset cannot be built."
|
|
||||||
|
|
||||||
cpulimit 400
|
cpulimit 400
|
||||||
|
|
||||||
ellipse w1 0 0 0 15 10
|
ellipse w1 0 0 0 15 10
|
||||||
@ -16,4 +10,4 @@ revol s w 0 0 0 0 0 1 270
|
|||||||
|
|
||||||
OFFSETSHAPE -1 {s_4} $calcul $type
|
OFFSETSHAPE -1 {s_4} $calcul $type
|
||||||
|
|
||||||
checkprops result -v 0
|
checkprops result -v 13155.2
|
||||||
|
@ -1,9 +1,3 @@
|
|||||||
puts "TODO OCC24156 MacOS: An exception was caught"
|
|
||||||
puts "TODO OCC24156 MacOS: TEST INCOMPLETE"
|
|
||||||
puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done."
|
|
||||||
puts "TODO OCC23748 ALL: Error: The command cannot be built"
|
|
||||||
puts "TODO OCC26556 ALL: Error : The offset cannot be built."
|
|
||||||
|
|
||||||
ellipse w1 0 0 0 15 10
|
ellipse w1 0 0 0 15 10
|
||||||
mkedge w1 w1 0 pi/2
|
mkedge w1 w1 0 pi/2
|
||||||
trotate w1 0 0 0 1 0 0 90
|
trotate w1 0 0 0 1 0 0 90
|
||||||
@ -14,4 +8,4 @@ revol s w 0 0 0 0 0 1 270
|
|||||||
|
|
||||||
OFFSETSHAPE 1 {s_4 s_5} $calcul $type
|
OFFSETSHAPE 1 {s_4 s_5} $calcul $type
|
||||||
|
|
||||||
checkprops result -v 0
|
checkprops result -v 13155.2
|
||||||
|
@ -1,9 +1,3 @@
|
|||||||
puts "TODO OCC24156 MacOS: An exception was caught"
|
|
||||||
puts "TODO OCC24156 MacOS: TEST INCOMPLETE"
|
|
||||||
puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done."
|
|
||||||
puts "TODO OCC23748 ALL: Error: The command cannot be built"
|
|
||||||
puts "TODO OCC26556 ALL: Error : The offset cannot be built."
|
|
||||||
|
|
||||||
# 17.01.2010
|
# 17.01.2010
|
||||||
cpulimit 600
|
cpulimit 600
|
||||||
# 17.01.2010
|
# 17.01.2010
|
||||||
@ -18,4 +12,4 @@ revol s w 0 0 0 0 0 1 270
|
|||||||
|
|
||||||
OFFSETSHAPE -1 {s_4 s_5} $calcul $type
|
OFFSETSHAPE -1 {s_4 s_5} $calcul $type
|
||||||
|
|
||||||
checkprops result -v 0
|
checkprops result -v 13155.2
|
||||||
|
@ -1,9 +1,5 @@
|
|||||||
puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done."
|
|
||||||
puts "TODO OCC23748 ALL: Error: The command cannot be built"
|
|
||||||
puts "TODO OCC26556 ALL: Error : The offset cannot be built."
|
|
||||||
|
|
||||||
pcylinder s 5 10 270
|
pcylinder s 5 10 270
|
||||||
|
|
||||||
OFFSETSHAPE -1 {s_5} $calcul $type
|
OFFSETSHAPE -1 {s_5} $calcul $type
|
||||||
|
|
||||||
checkprops result -v 0
|
checkprops result -v 589.049
|
||||||
|
@ -1,9 +1,5 @@
|
|||||||
puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done."
|
|
||||||
puts "TODO OCC23748 ALL: Error: The command cannot be built"
|
|
||||||
puts "TODO OCC26556 ALL: Error : The offset cannot be built."
|
|
||||||
|
|
||||||
pcone s 9 4 15 270
|
pcone s 9 4 15 270
|
||||||
|
|
||||||
OFFSETSHAPE -1 {s_5} $calcul $type
|
OFFSETSHAPE -1 {s_5} $calcul $type
|
||||||
|
|
||||||
checkprops result -v 0
|
checkprops result -v 1566.87
|
||||||
|
@ -1,9 +1,5 @@
|
|||||||
puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done."
|
|
||||||
puts "TODO OCC23748 ALL: Error: The command cannot be built"
|
|
||||||
puts "TODO OCC26556 ALL: Error : The offset cannot be built."
|
|
||||||
|
|
||||||
ptorus s 10 10 0 45 270
|
ptorus s 10 10 0 45 270
|
||||||
|
|
||||||
OFFSETSHAPE -1 {s_4} $calcul $type
|
OFFSETSHAPE -1 {s_4} $calcul $type
|
||||||
|
|
||||||
checkprops result -v 0
|
checkprops result -v 6083.13
|
||||||
|
@ -1,7 +1,3 @@
|
|||||||
puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done."
|
|
||||||
puts "TODO OCC23748 ALL: Error: The command cannot be built"
|
|
||||||
puts "TODO OCC26556 ALL: Error : The offset cannot be built."
|
|
||||||
|
|
||||||
circle w -20 0 0 20
|
circle w -20 0 0 20
|
||||||
mkedge w w 0 pi*2/5
|
mkedge w w 0 pi*2/5
|
||||||
wire w w
|
wire w w
|
||||||
@ -11,4 +7,4 @@ pipe s w profile
|
|||||||
|
|
||||||
OFFSETSHAPE 1 {s_2 s_3} $calcul $type
|
OFFSETSHAPE 1 {s_2 s_3} $calcul $type
|
||||||
|
|
||||||
checkprops result -v 0
|
checkprops result -v 785.398
|
||||||
|
@ -1,7 +1,3 @@
|
|||||||
puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done."
|
|
||||||
puts "TODO OCC23748 ALL: Error: The command cannot be built"
|
|
||||||
puts "TODO OCC26556 ALL: Error : The offset cannot be built."
|
|
||||||
|
|
||||||
circle w -20 0 0 20
|
circle w -20 0 0 20
|
||||||
mkedge w w 0 pi*2/5
|
mkedge w w 0 pi*2/5
|
||||||
wire w w
|
wire w w
|
||||||
@ -11,4 +7,4 @@ pipe s w profile
|
|||||||
|
|
||||||
OFFSETSHAPE 1 {s_4 s_5} $calcul $type
|
OFFSETSHAPE 1 {s_4 s_5} $calcul $type
|
||||||
|
|
||||||
checkprops result -v 0
|
checkprops result -v 785.398
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
puts "TODO OCC24156 MacOS: An exception was caught"
|
puts "TODO CR23530 ALL: Faulty shapes in variables faulty_1 to faulty_"
|
||||||
puts "TODO OCC24156 MacOS: TEST INCOMPLETE"
|
puts "TODO OCC23068 ALL: Error : The area of face "
|
||||||
puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done."
|
|
||||||
puts "TODO OCC23748 ALL: Error: The command cannot be built"
|
|
||||||
puts "TODO OCC26556 ALL: Error : The offset cannot be built."
|
|
||||||
|
|
||||||
beziersurf c 3 2 \
|
beziersurf c 3 2 \
|
||||||
0 0 0 0 5 5 2 14 3 \
|
0 0 0 0 5 5 2 14 3 \
|
||||||
@ -12,4 +9,4 @@ prism s c 0 0 20
|
|||||||
|
|
||||||
OFFSETSHAPE 1 {s_5 s_6} $calcul $type
|
OFFSETSHAPE 1 {s_5 s_6} $calcul $type
|
||||||
|
|
||||||
checkprops result -v 0
|
checkprops result -v 3340
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
puts "TODO OCC23068 All: ERROR. offsetperform operation not done."
|
|
||||||
puts "TODO OCC23068 All: Error : The volume of result shape is"
|
|
||||||
# Original bug : hkg60144
|
# Original bug : hkg60144
|
||||||
# Date : 17Juillet98
|
# Date : 17Juillet98
|
||||||
|
|
||||||
@ -9,5 +7,5 @@ explode s f
|
|||||||
offsetshape result s -5 s_1
|
offsetshape result s -5 s_1
|
||||||
|
|
||||||
|
|
||||||
checkprops result -v 2.12817e+006
|
checkprops result -v 2.80312e+07
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user