mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2025-03-15 19:11:26 +05:00
[bos #32155] EDF 25230 - face non planar. Advanced treatment of degenerated and non geometrical edges. A workaround for OCCT bug."
This commit is contained in:
parent
611d40ba2a
commit
93b30d2d22
@ -482,6 +482,7 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(Handle(TFunction_Logbook)& log) c
|
||||
|
||||
// Try to build a face from a set of wires and edges
|
||||
int ind;
|
||||
bool isPlanarWanted = aCI.GetIsPlanar();
|
||||
|
||||
Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes();
|
||||
int nbshapes = aShapes->Length();
|
||||
@ -501,11 +502,14 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(Handle(TFunction_Logbook)& log) c
|
||||
TopExp_Explorer anExpE_i (aSh_i, TopAbs_EDGE);
|
||||
for (; anExpE_i.More(); anExpE_i.Next()) {
|
||||
if (aMapEdges.Add(anExpE_i.Current())) {
|
||||
const TopoDS_Edge& E = TopoDS::Edge(anExpE_i.Current());
|
||||
if ((BRep_Tool::Degenerated(E) && isPlanarWanted) ||
|
||||
!BRep_Tool::IsGeometric(E))
|
||||
continue;
|
||||
|
||||
// Copy the original shape.
|
||||
TopoDS_Shape aShapeCopy;
|
||||
|
||||
TNaming_CopyShape::CopyTool
|
||||
(anExpE_i.Current(), aMapTShapes, aShapeCopy);
|
||||
TNaming_CopyShape::CopyTool(E, aMapTShapes, aShapeCopy);
|
||||
aSeqEdgesIn->Append(aShapeCopy);
|
||||
}
|
||||
}
|
||||
@ -543,7 +547,7 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(Handle(TFunction_Logbook)& log) c
|
||||
// 4.a. Basic face
|
||||
TopoDS_Shape aFFace;
|
||||
TopoDS_Wire aW1 = TopoDS::Wire(aSeqClosedWires->Value(1));
|
||||
aWarning = GEOMImpl_Block6Explorer::MakeFace(aW1, aCI.GetIsPlanar(), aFFace);
|
||||
aWarning = GEOMImpl_Block6Explorer::MakeFace(aW1, isPlanarWanted, aFFace);
|
||||
if (aFFace.IsNull()) {
|
||||
Standard_ConstructionError::Raise("Face construction failed");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user