0022674:[CEA 1261] Regression of function MakeShell : Rollback type check

This commit is contained in:
skv 2014-08-25 12:12:02 +04:00
parent fe13e168ce
commit 65227b3e7d

View File

@ -95,6 +95,11 @@
#include <Standard_TypeMismatch.hxx> #include <Standard_TypeMismatch.hxx>
#include <Standard_ConstructionError.hxx> #include <Standard_ConstructionError.hxx>
// Uncomment this definition to check if type of created shape is the same
// as expected. For further details please see the Mantis issue
// http://salome.mantis.opencascade.com/view.php?id=22674
//#define RESULT_TYPE_CHECK
//modified by NIZNHY-PKV Wed Dec 28 13:48:20 2011f //modified by NIZNHY-PKV Wed Dec 28 13:48:20 2011f
//static //static
// void KeepEdgesOrder(const Handle(TopTools_HSequenceOfShape)& aEdges, // void KeepEdgesOrder(const Handle(TopTools_HSequenceOfShape)& aEdges,
@ -134,12 +139,16 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const
TopoDS_Shape aShape; TopoDS_Shape aShape;
TCollection_AsciiString aWarning; TCollection_AsciiString aWarning;
#ifdef RESULT_TYPE_CHECK
TopAbs_ShapeEnum anExpectedType = TopAbs_SHAPE; TopAbs_ShapeEnum anExpectedType = TopAbs_SHAPE;
#endif
BRep_Builder B; BRep_Builder B;
if (aType == WIRE_EDGES) { if (aType == WIRE_EDGES) {
#ifdef RESULT_TYPE_CHECK
anExpectedType = TopAbs_WIRE; anExpectedType = TopAbs_WIRE;
#endif
Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes(); Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes();
@ -150,7 +159,9 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const
aShape = MakeWireFromEdges(aShapes, aTolerance); aShape = MakeWireFromEdges(aShapes, aTolerance);
} }
else if (aType == FACE_WIRE) { else if (aType == FACE_WIRE) {
#ifdef RESULT_TYPE_CHECK
anExpectedType = TopAbs_FACE; anExpectedType = TopAbs_FACE;
#endif
Handle(GEOM_Function) aRefBase = aCI.GetBase(); Handle(GEOM_Function) aRefBase = aCI.GetBase();
TopoDS_Shape aShapeBase = aRefBase->GetValue(); TopoDS_Shape aShapeBase = aRefBase->GetValue();
@ -185,7 +196,9 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const
} }
} }
else if (aType == FACE_WIRES) { else if (aType == FACE_WIRES) {
#ifdef RESULT_TYPE_CHECK
anExpectedType = TopAbs_FACE; anExpectedType = TopAbs_FACE;
#endif
// Try to build a face from a set of wires and edges // Try to build a face from a set of wires and edges
int ind; int ind;
@ -303,7 +316,9 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const
} }
} }
else if (aType == SHELL_FACES) { else if (aType == SHELL_FACES) {
#ifdef RESULT_TYPE_CHECK
anExpectedType = TopAbs_SHELL; anExpectedType = TopAbs_SHELL;
#endif
Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes(); Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes();
unsigned int ind, nbshapes = aShapes->Length(); unsigned int ind, nbshapes = aShapes->Length();
@ -362,7 +377,9 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const
} }
else if (aType == SOLID_SHELL) { else if (aType == SOLID_SHELL) {
#ifdef RESULT_TYPE_CHECK
anExpectedType = TopAbs_SOLID; anExpectedType = TopAbs_SOLID;
#endif
Handle(GEOM_Function) aRefShell = aCI.GetBase(); Handle(GEOM_Function) aRefShell = aCI.GetBase();
TopoDS_Shape aShapeShell = aRefShell->GetValue(); TopoDS_Shape aShapeShell = aRefShell->GetValue();
@ -391,7 +408,9 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const
} }
else if (aType == SOLID_SHELLS) { else if (aType == SOLID_SHELLS) {
#ifdef RESULT_TYPE_CHECK
anExpectedType = TopAbs_SOLID; anExpectedType = TopAbs_SOLID;
#endif
Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes(); Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes();
unsigned int ind, nbshapes = aShapes->Length(); unsigned int ind, nbshapes = aShapes->Length();
@ -425,7 +444,9 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const
aShape = Sol; aShape = Sol;
} }
else if (aType == COMPOUND_SHAPES) { else if (aType == COMPOUND_SHAPES) {
#ifdef RESULT_TYPE_CHECK
anExpectedType = TopAbs_COMPOUND; anExpectedType = TopAbs_COMPOUND;
#endif
Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes(); Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes();
unsigned int ind, nbshapes = aShapes->Length(); unsigned int ind, nbshapes = aShapes->Length();
@ -470,7 +491,9 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const
} }
*/ */
else if (aType == EDGE_WIRE) { else if (aType == EDGE_WIRE) {
#ifdef RESULT_TYPE_CHECK
anExpectedType = TopAbs_EDGE; anExpectedType = TopAbs_EDGE;
#endif
Handle(GEOM_Function) aRefBase = aCI.GetBase(); Handle(GEOM_Function) aRefBase = aCI.GetBase();
TopoDS_Shape aWire = aRefBase->GetValue(); TopoDS_Shape aWire = aRefBase->GetValue();
@ -481,7 +504,9 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const
aShape = MakeEdgeFromWire(aWire, LinTol, AngTol); aShape = MakeEdgeFromWire(aWire, LinTol, AngTol);
} }
else if (aType == EDGE_CURVE_LENGTH) { else if (aType == EDGE_CURVE_LENGTH) {
#ifdef RESULT_TYPE_CHECK
anExpectedType = TopAbs_EDGE; anExpectedType = TopAbs_EDGE;
#endif
GEOMImpl_IVector aVI (aFunction); GEOMImpl_IVector aVI (aFunction);
@ -557,7 +582,9 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const
if (aME.IsDone()) if (aME.IsDone())
aShape = aME.Shape(); aShape = aME.Shape();
} else if (aType == SHAPE_ISOLINE) { } else if (aType == SHAPE_ISOLINE) {
#ifdef RESULT_TYPE_CHECK
anExpectedType = TopAbs_EDGE; anExpectedType = TopAbs_EDGE;
#endif
GEOMImpl_IIsoline aII (aFunction); GEOMImpl_IIsoline aII (aFunction);
Handle(GEOM_Function) aRefFace = aII.GetFace(); Handle(GEOM_Function) aRefFace = aII.GetFace();
@ -600,6 +627,7 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const
aShape = aSfs->Shape(); aShape = aSfs->Shape();
} }
#ifdef RESULT_TYPE_CHECK
// Check if the result shape type is compatible with the expected. // Check if the result shape type is compatible with the expected.
const TopAbs_ShapeEnum aShType = aShape.ShapeType(); const TopAbs_ShapeEnum aShType = aShape.ShapeType();
@ -626,6 +654,7 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const
Standard_ConstructionError::Raise("Result type check failed"); Standard_ConstructionError::Raise("Result type check failed");
} }
} }
#endif
aFunction->SetValue(aShape); aFunction->SetValue(aShape);