mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2025-04-24 01:32:05 +05:00
NPAL15216: EDF379: Issue with IGS files import. A fix on Partition algorithm by PKV.
This commit is contained in:
parent
d9de435c09
commit
f6a196817c
@ -189,8 +189,9 @@
|
|||||||
void NMTTools_DEProcessor::DoPaves()
|
void NMTTools_DEProcessor::DoPaves()
|
||||||
{
|
{
|
||||||
|
|
||||||
Standard_Integer i, aNbE, nED, nVD, nFD=0;
|
Standard_Integer i, aNbE, nED, nVD, nFD, aNbLPB;
|
||||||
//
|
//
|
||||||
|
nFD=0;
|
||||||
aNbE=myDEMap.Extent();
|
aNbE=myDEMap.Extent();
|
||||||
for (i=1; i<=aNbE; i++) {
|
for (i=1; i<=aNbE; i++) {
|
||||||
nED=myDEMap.FindKey(i);
|
nED=myDEMap.FindKey(i);
|
||||||
@ -202,9 +203,16 @@
|
|||||||
TColStd_ListIteratorOfListOfInteger anIt(nLF);
|
TColStd_ListIteratorOfListOfInteger anIt(nLF);
|
||||||
for (; anIt.More(); anIt.Next()) {
|
for (; anIt.More(); anIt.Next()) {
|
||||||
nFD=anIt.Value();
|
nFD=anIt.Value();
|
||||||
|
//
|
||||||
BOPTools_ListOfPaveBlock aLPB;
|
BOPTools_ListOfPaveBlock aLPB;
|
||||||
FindPaveBlocks(nED, nVD, nFD, aLPB);
|
FindPaveBlocks(nED, nVD, nFD, aLPB);
|
||||||
|
//modified by NIZNHY-PKV Fri Mar 23 10:35:27 2007f
|
||||||
|
//
|
||||||
|
aNbLPB=aLPB.Extent();
|
||||||
|
if (!aNbLPB) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//modified by NIZNHY-PKV Fri Mar 23 10:35:33 2007t
|
||||||
FillPaveSet (nED, nVD, nFD, aLPB);
|
FillPaveSet (nED, nVD, nFD, aLPB);
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
|
@ -137,11 +137,9 @@ static
|
|||||||
TopTools_ListOfShape& aLS);
|
TopTools_ListOfShape& aLS);
|
||||||
// Contribution of Samtech www.samcef.com END
|
// Contribution of Samtech www.samcef.com END
|
||||||
|
|
||||||
//modified by NIZNHY-PKV Mon Dec 4 12:56:04 2006f
|
|
||||||
static
|
static
|
||||||
Standard_Boolean IsMicroEdge(const TopoDS_Edge& aE,
|
Standard_Boolean IsMicroEdge(const TopoDS_Edge& aE,
|
||||||
IntTools_Context& aCtx);
|
IntTools_Context& aCtx);
|
||||||
//modified by NIZNHY-PKV Mon Dec 4 12:56:08 2006t
|
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
// function: PerformFF
|
// function: PerformFF
|
||||||
@ -519,7 +517,7 @@ static
|
|||||||
//
|
//
|
||||||
BOPTools_Tools::MakeSectEdge (aIC, aV1, aT1, aV2, aT2, aES);
|
BOPTools_Tools::MakeSectEdge (aIC, aV1, aT1, aV2, aT2, aES);
|
||||||
//
|
//
|
||||||
//modified by NIZNHY-PKV Mon Dec 4 12:56:35 2006f use_01
|
// use_01 f
|
||||||
//
|
//
|
||||||
NMTTools_Tools::UpdateEdge (aES, aTolR3D);
|
NMTTools_Tools::UpdateEdge (aES, aTolR3D);
|
||||||
bIsMicroEdge=IsMicroEdge(aES, myContext);
|
bIsMicroEdge=IsMicroEdge(aES, myContext);
|
||||||
@ -527,9 +525,9 @@ static
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
//modified by NIZNHY-PKV Mon Dec 4 12:56:38 2006t
|
//use_01 t
|
||||||
//
|
//
|
||||||
//modified by NIZNHY-PKV Thu Nov 16 11:13:46 2006f SKL/PartC5
|
// SKL/PartC5 f
|
||||||
{
|
{
|
||||||
Handle(Geom2d_Curve) aC2D1, aC2D2;
|
Handle(Geom2d_Curve) aC2D1, aC2D2;
|
||||||
//
|
//
|
||||||
@ -538,24 +536,8 @@ static
|
|||||||
//
|
//
|
||||||
NMTTools_Tools::MakePCurve(aES, aF1, aC2D1);
|
NMTTools_Tools::MakePCurve(aES, aF1, aC2D1);
|
||||||
NMTTools_Tools::MakePCurve(aES, aF2, aC2D2);
|
NMTTools_Tools::MakePCurve(aES, aF2, aC2D2);
|
||||||
//NMTTools_Tools::UpdateEdge (aES, aTolR3D); // ft use_01
|
//SKL/PartC5 t
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
/*
|
|
||||||
{
|
|
||||||
Standard_Real aTolR2D;
|
|
||||||
Handle(Geom2d_Curve) aC2D1, aC2D2;
|
|
||||||
//
|
|
||||||
aTolR2D=aFFi.TolR2D();
|
|
||||||
aC2D1=aIC.FirstCurve2d();
|
|
||||||
aC2D2=aIC.SecondCurve2d();
|
|
||||||
//
|
|
||||||
NMTTools_Tools::MakePCurve(aES, aF1, aC2D1, aTolR2D);
|
|
||||||
NMTTools_Tools::MakePCurve(aES, aF2, aC2D2, aTolR2D);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
//modified by NIZNHY-PKV Thu Nov 16 11:17:34 2006t
|
|
||||||
//
|
//
|
||||||
aMEPB.Add(aES, aPBNew);
|
aMEPB.Add(aES, aPBNew);
|
||||||
aMapEI.Add(aES, i);
|
aMapEI.Add(aES, i);
|
||||||
@ -761,13 +743,11 @@ static
|
|||||||
aF2FWD=aF2;
|
aF2FWD=aF2;
|
||||||
aF2FWD.Orientation(TopAbs_FORWARD);
|
aF2FWD.Orientation(TopAbs_FORWARD);
|
||||||
//
|
//
|
||||||
//modified by NIZNHY-PKV Thu Nov 16 12:49:13 2006f SKL/PartC5
|
// SKL/PartC5 f
|
||||||
//NMTTools_Tools::MakePCurve(aEx, aF1FWD, aC2D1, aTolEx);
|
|
||||||
//NMTTools_Tools::MakePCurve(aEx, aF2FWD, aC2D2, aTolEx);
|
|
||||||
NMTTools_Tools::MakePCurve(aEx, aF1FWD, aC2D1);
|
NMTTools_Tools::MakePCurve(aEx, aF1FWD, aC2D1);
|
||||||
NMTTools_Tools::MakePCurve(aEx, aF2FWD, aC2D2);
|
NMTTools_Tools::MakePCurve(aEx, aF2FWD, aC2D2);
|
||||||
NMTTools_Tools::UpdateEdge (aEx, aTolEx);
|
NMTTools_Tools::UpdateEdge (aEx, aTolEx);
|
||||||
//modified by NIZNHY-PKV Thu Nov 16 12:49:24 2006t
|
//SKL/PartC5 t
|
||||||
} //if (aCBAPI.IsCommonBlock(aPB))
|
} //if (aCBAPI.IsCommonBlock(aPB))
|
||||||
//
|
//
|
||||||
// new SE
|
// new SE
|
||||||
@ -835,8 +815,12 @@ static
|
|||||||
void NMTTools_PaveFiller::MakePCurves()
|
void NMTTools_PaveFiller::MakePCurves()
|
||||||
{
|
{
|
||||||
Standard_Integer i, aNb, nF1, nF2, nE;
|
Standard_Integer i, aNb, nF1, nF2, nE;
|
||||||
|
Standard_Integer aNbCB, aNbF, nSp, nF;
|
||||||
TopoDS_Face aF1FWD, aF2FWD;
|
TopoDS_Face aF1FWD, aF2FWD;
|
||||||
|
TColStd_ListIteratorOfListOfInteger aItF;
|
||||||
BOPTools_ListIteratorOfListOfPaveBlock anIt;
|
BOPTools_ListIteratorOfListOfPaveBlock anIt;
|
||||||
|
NMTTools_ListIteratorOfListOfCommonBlock aItCB;
|
||||||
|
TopAbs_ShapeEnum aType;
|
||||||
//
|
//
|
||||||
BOPTools_CArray1OfSSInterference& aFFs=myIntrPool->SSInterferences();
|
BOPTools_CArray1OfSSInterference& aFFs=myIntrPool->SSInterferences();
|
||||||
//
|
//
|
||||||
@ -865,7 +849,60 @@ static
|
|||||||
BOPTools_Tools2D::BuildPCurveForEdgeOnFace(aE, aF1FWD);
|
BOPTools_Tools2D::BuildPCurveForEdgeOnFace(aE, aF1FWD);
|
||||||
BOPTools_Tools2D::BuildPCurveForEdgeOnFace(aE, aF2FWD);
|
BOPTools_Tools2D::BuildPCurveForEdgeOnFace(aE, aF2FWD);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//
|
||||||
|
//modified by NIZNHY-PKV Fri Mar 23 10:35:02 2007f
|
||||||
|
// Check common blocks between edges and faces
|
||||||
|
// Build P-Curves if they were not built in previos block.
|
||||||
|
//
|
||||||
|
// The main case is :arguments for e.g aEdge, aFace -> no FFs,
|
||||||
|
// but p-curves are needed.
|
||||||
|
//
|
||||||
|
aNb=myDS->NumberOfShapesOfTheObject();
|
||||||
|
for (i=1; i<=aNb; ++i) {
|
||||||
|
const TopoDS_Shape& aS=myDS->Shape(i);
|
||||||
|
aType=aS.ShapeType();
|
||||||
|
//
|
||||||
|
if (aType!=TopAbs_EDGE) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
const TopoDS_Edge& aE=TopoDS::Edge(aS);
|
||||||
|
//
|
||||||
|
if (BRep_Tool::Degenerated(aE)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
const NMTTools_ListOfCommonBlock& aLCB=myCommonBlockPool(myDS->RefEdge(i));
|
||||||
|
aNbCB=aLCB.Extent();
|
||||||
|
if (!aNbCB) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
aItCB.Initialize(aLCB);
|
||||||
|
for (; aItCB.More(); aItCB.Next()) {
|
||||||
|
const NMTTools_CommonBlock& aCB=aItCB.Value();
|
||||||
|
const BOPTools_PaveBlock &aPB1=aCB.PaveBlock1();
|
||||||
|
//
|
||||||
|
const TColStd_ListOfInteger& aLF=aCB.Faces();
|
||||||
|
aNbF=aLF.Extent();
|
||||||
|
if (!aNbF) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
nSp=aPB1.Edge();
|
||||||
|
const TopoDS_Edge aSp=TopoDS::Edge(myDS->Shape(nSp));//mpv
|
||||||
|
//
|
||||||
|
aItF.Initialize(aLF);
|
||||||
|
for (; aItF.More(); aItF.Next()) {
|
||||||
|
nF=aItF.Value();
|
||||||
|
aF1FWD=TopoDS::Face(myDS->Shape(nF));
|
||||||
|
aF1FWD.Orientation(TopAbs_FORWARD);
|
||||||
|
//
|
||||||
|
BOPTools_Tools2D::BuildPCurveForEdgeOnFace(aSp, aF1FWD);
|
||||||
|
} // for (; aItCB.More(); aItCB.Next()) {
|
||||||
|
}//if (aS.ShapeType()==TopAbs_EDGE) {
|
||||||
|
}
|
||||||
|
//modified by NIZNHY-PKV Fri Mar 23 10:35:13 2007t
|
||||||
}
|
}
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
// function: IsExistingPaveBlock
|
// function: IsExistingPaveBlock
|
||||||
@ -1362,11 +1399,11 @@ void SharedEdges1(const TopoDS_Face& aF1,
|
|||||||
// V22
|
// V22
|
||||||
const BOPTools_Pave& aPave22=aPBR.Pave2();
|
const BOPTools_Pave& aPave22=aPBR.Pave2();
|
||||||
nV22=aPave22.Index();
|
nV22=aPave22.Index();
|
||||||
//modified by NIZNHY-PKV Wed Nov 15 13:08:13 2006f
|
//
|
||||||
if (nV11==nV21 || nV11==nV22 || nV12==nV21 || nV12==nV22) {
|
if (nV11==nV21 || nV11==nV22 || nV12==nV21 || nV12==nV22) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
//modified by NIZNHY-PKV Wed Nov 15 13:08:15 2006t
|
//
|
||||||
// E2
|
// E2
|
||||||
nE2=aPBR.Edge();
|
nE2=aPBR.Edge();
|
||||||
//
|
//
|
||||||
@ -1439,7 +1476,7 @@ void SharedEdges1(const TopoDS_Face& aF1,
|
|||||||
//
|
//
|
||||||
// Contribution of Samtech www.samcef.com END
|
// Contribution of Samtech www.samcef.com END
|
||||||
|
|
||||||
//modified by NIZNHY-PKV Mon Dec 4 12:30:38 2006f use_01
|
// use_01 f
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : IsMicroEdge
|
//function : IsMicroEdge
|
||||||
//purpose :
|
//purpose :
|
||||||
@ -1478,4 +1515,4 @@ Standard_Boolean IsMicroEdge(const TopoDS_Edge& aE,
|
|||||||
//
|
//
|
||||||
return bRet;
|
return bRet;
|
||||||
}
|
}
|
||||||
//modified by NIZNHY-PKV Mon Dec 4 12:55:50 2006t
|
// use_01 t
|
||||||
|
Loading…
x
Reference in New Issue
Block a user