-// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
#include <Bnd_Box.hxx>
+#include <BOPAlgo_ArgumentAnalyzer.hxx>
#include <BOPTools_AlgoTools.hxx>
#include <TopAbs.hxx>
#include <sstream>
#include <algorithm>
+#if OCC_VERSION_LARGE >= 0x07010000
+#include <V3d_Coordinate.hxx>
+#endif
+
#include <Standard_Failure.hxx>
#include <Standard_NullObject.hxx>
#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
levelsListStr.push_back( substr );
}
GEOMUtils::LevelsList levelsListData;
- for( int level = 0; level < levelsListStr.size(); level++ ) {
+ for( size_t level = 0; level < levelsListStr.size(); level++ ) {
std::vector<std::string> namesListStr;
std::stringstream ss1( levelsListStr[level] );
while ( std::getline( ss1, substr, ',' ) ) {
namesListStr.push_back( substr );
}
GEOMUtils::LevelInfo levelInfoData;
- for( int node = 0; node < namesListStr.size(); node++ ) {
+ for( size_t node = 0; node < namesListStr.size(); node++ ) {
std::vector<std::string> linksListStr;
std::stringstream ss2( namesListStr[node] );
while ( std::getline( ss2, substr, '_' ) ) {
std::string nodeItem = linksListStr[0];
if( !nodeItem.empty() ) {
GEOMUtils::NodeLinks linksListData;
- for( int link = 1; link < linksListStr.size(); link++ ) {
+ for( size_t link = 1; link < linksListStr.size(); link++ ) {
std::string linkItem = linksListStr[link];
linksListData.push_back( linkItem );
}// Links
cursor = objectIndex;
std::size_t upwardIndexBegin = dependencyStr.find("{",cursor) + 1;
- std::size_t upwardIndexFinish = dependencyStr.find("}",upwardIndexBegin);
+ //std::size_t upwardIndexFinish = dependencyStr.find("}",upwardIndexBegin);
LevelsList upwardList = parseWard( dependencyStr, cursor );
LevelsList downwardList = parseWard( dependencyStr, cursor );
return analyzer.IsValid();
}
+bool GEOMUtils::CheckBOPArguments(const TopoDS_Shape &theShape)
+{
+ BOPAlgo_ArgumentAnalyzer aChecker;
+
+ aChecker.SetShape1(theShape);
+
+ // Set default options
+ aChecker.ArgumentTypeMode() = Standard_True;
+ aChecker.SelfInterMode() = Standard_True;
+ aChecker.SmallEdgeMode() = Standard_True;
+ aChecker.RebuildFaceMode() = Standard_True;
+ aChecker.ContinuityMode() = Standard_True;
+ aChecker.CurveOnSurfaceMode() = Standard_True;
+
+ aChecker.StopOnFirstFaulty() = Standard_True;
+ aChecker.Perform();
+
+ // process result of checking
+ const bool isValid = !aChecker.HasFaulty();
+
+ return isValid;
+}
+
bool GEOMUtils::FixShapeTolerance( TopoDS_Shape& shape,
TopAbs_ShapeEnum type,
Standard_Real tolerance,