mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-16 10:08:36 +03:00
0023591: IGES Boundary Entity containing Composite Curve fails to translate
This commit is contained in:
parent
f1aa2b6272
commit
126b07638d
@ -119,6 +119,37 @@ IGESControl_IGESBoundary::IGESControl_IGESBoundary(const IGESToBRep_CurveAndSurf
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : Connect
|
||||||
|
//purpose : Connects theNextWD to theWD using theSAW.
|
||||||
|
// First, connects edges of theNextWD by calling ShapeFix_Wire::FixConnected(). This
|
||||||
|
// is necessary when theNextWD was built using multiple curves from the Composite
|
||||||
|
// Curve (as ShapeExtend_WireData::Wire() would otherwise produce a wrong
|
||||||
|
// disconnected TopoDS_Wire).
|
||||||
|
// FixConnected() will only update the edges resulting from different composite
|
||||||
|
// curve segments. Edges resulting from splitting C0 curve will already be
|
||||||
|
// connected.
|
||||||
|
//=======================================================================
|
||||||
|
static Standard_Boolean Connect (const Handle(ShapeAnalysis_Wire)& theSAW,
|
||||||
|
const Handle(ShapeExtend_WireData)& theWD,
|
||||||
|
const Handle(ShapeExtend_WireData)& theNextWD,
|
||||||
|
const Standard_Boolean theConnectNextWD,
|
||||||
|
const Standard_Real theMaxTol,
|
||||||
|
Standard_Real& theDistMin,
|
||||||
|
Standard_Boolean& theReverseWD,
|
||||||
|
Standard_Boolean& theReverseNextWD)
|
||||||
|
{
|
||||||
|
theSAW->Load (theWD);
|
||||||
|
if (theConnectNextWD) {
|
||||||
|
Handle(ShapeFix_Wire) sfw = new ShapeFix_Wire;
|
||||||
|
sfw->Load (theNextWD);
|
||||||
|
sfw->ClosedWireMode() = Standard_False; //internal connections are enough
|
||||||
|
sfw->FixConnected();
|
||||||
|
}
|
||||||
|
return ShapeAlgo::AlgoContainer()->ConnectNextWire (theSAW, theNextWD,
|
||||||
|
theMaxTol, theDistMin, theReverseWD, theReverseNextWD);
|
||||||
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : Transfer
|
//function : Transfer
|
||||||
//purpose :
|
//purpose :
|
||||||
@ -372,17 +403,11 @@ IGESControl_IGESBoundary::IGESControl_IGESBoundary(const IGESToBRep_CurveAndSurf
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (number > 1) {
|
if (number > 1) {
|
||||||
saw->Load (mysewd);
|
okCurve = okCurve && Connect (saw, mysewd, Gsewd, (len3d > 1) || (len2d > 1), maxtol,
|
||||||
okCurve = okCurve &&
|
|
||||||
ShapeAlgo::AlgoContainer()->ConnectNextWire (saw, Gsewd, maxtol,
|
|
||||||
distmin, revsewd, revnextsewd);
|
distmin, revsewd, revnextsewd);
|
||||||
saw3d->Load (mysewd3d);
|
okCurve3d = okCurve3d && Connect (saw3d, mysewd3d, Gsewd3d, len3d > 1, maxtol,
|
||||||
okCurve3d = okCurve3d &&
|
|
||||||
ShapeAlgo::AlgoContainer()->ConnectNextWire (saw3d, Gsewd3d, maxtol,
|
|
||||||
distmin, revsewd, revnextsewd);
|
distmin, revsewd, revnextsewd);
|
||||||
saw2d->Load (mysewd2d);
|
okCurve2d = okCurve2d && Connect (saw2d, mysewd2d, Gsewd2d, len2d > 1, maxtol,
|
||||||
okCurve2d = okCurve2d &&
|
|
||||||
ShapeAlgo::AlgoContainer()->ConnectNextWire (saw2d, Gsewd2d, maxtol,
|
|
||||||
distmin, revsewd, revnextsewd);
|
distmin, revsewd, revnextsewd);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user