mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2025-02-26 02:05:36 +05:00
0022674:[CEA 1261] Regression of function MakeShell : Rollback type check
This commit is contained in:
parent
fe13e168ce
commit
65227b3e7d
@ -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);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user