#include <BOPCol_ListOfShape.hxx>
#include <BOPDS_DS.hxx>
#include <BOPDS_MapOfPassKey.hxx>
+#if OCC_VERSION_LARGE > 0x07010000
+#include <BOPDS_MapOfPair.hxx>
+#include <BOPDS_Pair.hxx>
+#endif
#include <BRepBndLib.hxx>
#include <BRepBuilderAPI_Copy.hxx>
#include <BRepCheck_ListIteratorOfListOfStatus.hxx>
*/
//=============================================================================
void GEOMImpl_IMeasureOperations::GetBasicProperties (Handle(GEOM_Object) theShape,
+ const Standard_Real theTolerance,
Standard_Real& theLength,
Standard_Real& theSurfArea,
Standard_Real& theVolume)
//Compute the parameters
GProp_GProps LProps, SProps;
- Standard_Real anEps = 1.e-6;
+ Standard_Real anEps = theTolerance >= 0 ? theTolerance : 1.e-6;
try {
OCC_CATCH_SIGNALS;
- BRepGProp::LinearProperties(aShape, LProps);
+ BRepGProp::LinearProperties(aShape, LProps, Standard_True);
theLength = LProps.Mass();
- BRepGProp::SurfaceProperties(aShape, SProps, anEps);
+ BRepGProp::SurfaceProperties(aShape, SProps, anEps, Standard_True);
theSurfArea = SProps.Mass();
theVolume = 0.0;
if (aShape.ShapeType() < TopAbs_SHELL) {
for (TopExp_Explorer Exp (aShape, TopAbs_SOLID); Exp.More(); Exp.Next()) {
GProp_GProps VProps;
- BRepGProp::VolumeProperties(Exp.Current(), VProps, anEps);
+ BRepGProp::VolumeProperties(Exp.Current(), VProps, anEps, Standard_True);
theVolume += VProps.Mass();
}
}
if (aShape.ShapeType() == TopAbs_VERTEX ||
aShape.ShapeType() == TopAbs_EDGE ||
aShape.ShapeType() == TopAbs_WIRE) {
- BRepGProp::LinearProperties(aShape, System);
+ BRepGProp::LinearProperties(aShape, System, Standard_True);
} else if (aShape.ShapeType() == TopAbs_FACE ||
aShape.ShapeType() == TopAbs_SHELL) {
- BRepGProp::SurfaceProperties(aShape, System);
+ BRepGProp::SurfaceProperties(aShape, System, Standard_True);
} else {
- BRepGProp::VolumeProperties(aShape, System);
+ BRepGProp::VolumeProperties(aShape, System, Standard_True);
}
gp_Mat I = System.MatrixOfInertia();
//
Standard_Integer aNbS, n1, n2;
+#if OCC_VERSION_LARGE > 0x07010000
+ BOPDS_MapIteratorOfMapOfPair aItMPK;
+#else
BOPDS_MapIteratorMapOfPassKey aItMPK;
+#endif
//
// 2. Take the shapes from DS
const BOPDS_DS& aDS = aCSI.DS();
aNbS=aDS.NbShapes();
//
// 3. Get the pairs of interfered shapes
+#if OCC_VERSION_LARGE > 0x07010000
+ const BOPDS_MapOfPair& aMPK=aDS.Interferences();
+#else
const BOPDS_MapOfPassKey& aMPK=aDS.Interferences();
+#endif
aItMPK.Initialize(aMPK);
for (; aItMPK.More(); aItMPK.Next()) {
+#if OCC_VERSION_LARGE > 0x07010000
+ const BOPDS_Pair& aPK=aItMPK.Value();
+ aPK.Indices(n1, n2);
+#else
const BOPDS_PassKey& aPK=aItMPK.Value();
aPK.Ids(n1, n2);
+#endif
//
if (n1 > aNbS || n2 > aNbS){
return false; // Error