diff --git a/CMakeLists.txt b/CMakeLists.txt index f44c39c25..602f37de4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -353,7 +353,9 @@ endif(FREECAD_LIBPACK_USE) # copy build convenient files for M$ if(WIN32) - configure_file(BuildAll.bat ${CMAKE_BINARY_DIR}/BuildAll.bat COPYONLY) + if (EXISTS BuildAll.bat) + configure_file(BuildAll.bat ${CMAKE_BINARY_DIR}/BuildAll.bat COPYONLY) + endif (EXISTS BuildAll.bat) #configure_file(BuildAllNice.bat ${CMAKE_BINARY_DIR}/BuildAllNice.bat COPYONLY) endif(WIN32) diff --git a/src/3rdParty/salomesmesh/src/Controls/SMESH_Controls.cpp b/src/3rdParty/salomesmesh/src/Controls/SMESH_Controls.cpp index d03237fd4..bba92104e 100644 --- a/src/3rdParty/salomesmesh/src/Controls/SMESH_Controls.cpp +++ b/src/3rdParty/salomesmesh/src/Controls/SMESH_Controls.cpp @@ -63,6 +63,11 @@ #include "SMESHDS_Mesh.hxx" #include "SMESHDS_GroupBase.hxx" +#include + +#ifndef PI +#define PI M_PI +#endif /* AUXILIARY METHODS diff --git a/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp b/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp index 2d81e9a47..c0bb7e0f1 100644 --- a/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp +++ b/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp @@ -82,6 +82,10 @@ #include #include +#ifndef PI +#define PI M_PI +#endif + #define cast2Node(elem) static_cast( elem ) using namespace std; diff --git a/src/3rdParty/salomesmesh/src/SMESH/SMESH_Pattern.cpp b/src/3rdParty/salomesmesh/src/SMESH/SMESH_Pattern.cpp index 5c090d632..135e24d64 100644 --- a/src/3rdParty/salomesmesh/src/SMESH/SMESH_Pattern.cpp +++ b/src/3rdParty/salomesmesh/src/SMESH/SMESH_Pattern.cpp @@ -74,6 +74,11 @@ #include "SMESH_subMesh.hxx" #include "utilities.h" +#include + +#ifndef PI +#define PI M_PI +#endif using namespace std; diff --git a/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_AutomaticLength.cpp b/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_AutomaticLength.cpp index 95710c94e..d77560e0e 100644 --- a/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_AutomaticLength.cpp +++ b/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_AutomaticLength.cpp @@ -37,6 +37,11 @@ #include #include #include +#include + +#ifndef PI +#define PI M_PI +#endif using namespace std; diff --git a/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_CompositeHexa_3D.cpp b/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_CompositeHexa_3D.cpp index 953081fb3..b294f8aa5 100644 --- a/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_CompositeHexa_3D.cpp +++ b/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_CompositeHexa_3D.cpp @@ -56,6 +56,11 @@ #include #include #include +#include + +#ifndef PI +#define PI M_PI +#endif #ifdef _DEBUG_ diff --git a/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_QuadToTriaAdaptor.cpp b/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_QuadToTriaAdaptor.cpp index f3e0517d5..50eef649d 100644 --- a/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_QuadToTriaAdaptor.cpp +++ b/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_QuadToTriaAdaptor.cpp @@ -47,6 +47,11 @@ typedef NCollection_Array1 StdMeshers_Array1OfSequenc #include typedef SMESH_Array1 StdMeshers_Array1OfSequenceOfInteger; #endif +#include + +#ifndef PI +#define PI M_PI +#endif //======================================================================= //function : StdMeshers_QuadToTriaAdaptor diff --git a/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.cpp b/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.cpp index 8d21195db..0ce2382e1 100644 --- a/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.cpp +++ b/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.cpp @@ -54,6 +54,11 @@ #include #include #include +#include + +#ifndef PI +#define PI M_PI +#endif using namespace std; diff --git a/src/Gui/Splashscreen.cpp b/src/Gui/Splashscreen.cpp index d127e13bb..9464a5da1 100644 --- a/src/Gui/Splashscreen.cpp +++ b/src/Gui/Splashscreen.cpp @@ -23,6 +23,7 @@ #include "PreCompiled.h" #ifndef _PreComp_ +# include # include # include # include @@ -30,7 +31,6 @@ # include # include # include -# include # include # include #endif diff --git a/src/Mod/Draft/Draft.py b/src/Mod/Draft/Draft.py index fc2596beb..9f2eef25d 100644 --- a/src/Mod/Draft/Draft.py +++ b/src/Mod/Draft/Draft.py @@ -2416,16 +2416,17 @@ class _Wire: for v in shape.Vertexes: p.append(v.Point) if fp.Points != p: fp.Points = p elif fp.Base and fp.Tool: - if ('Shape' in fp.Base.PropertiesList) and ('Shape' in fp.Tool.PropertiesList): - sh1 = fp.Base.Shape.copy() - sh2 = fp.Tool.Shape.copy() - shape = sh1.fuse(sh2) - if DraftGeomUtils.isCoplanar(shape.Faces): - shape = DraftGeomUtils.concatenate(shape) - fp.Shape = shape - p = [] - for v in shape.Vertexes: p.append(v.Point) - if fp.Points != p: fp.Points = p + if fp.Base.isDerivedFrom("Part::Feature") and fp.Tool.isDerivedFrom("Part::Feature"): + if (not fp.Base.Shape.isNull()) and (not fp.Tool.Shape.isNull()): + sh1 = fp.Base.Shape.copy() + sh2 = fp.Tool.Shape.copy() + shape = sh1.fuse(sh2) + if DraftGeomUtils.isCoplanar(shape.Faces): + shape = DraftGeomUtils.concatenate(shape) + fp.Shape = shape + p = [] + for v in shape.Vertexes: p.append(v.Point) + if fp.Points != p: fp.Points = p elif fp.Points: if fp.Points[0] == fp.Points[-1]: if not fp.Closed: fp.Closed = True @@ -2857,9 +2858,13 @@ class _Clone: if hasattr(obj,"Scale") and not sh.isNull(): m.scale(obj.Scale) sh = sh.transformGeometry(m) - shapes.append(sh) + if not sh.isNull(): + shapes.append(sh) if shapes: - obj.Shape = Part.makeCompound(shapes) + if len(shapes) == 1: + obj.Shape = shapes[0] + else: + obj.Shape = Part.makeCompound(shapes) if not DraftGeomUtils.isNull(pl): obj.Placement = pl diff --git a/src/Mod/Idf/CMakeLists.txt b/src/Mod/Idf/CMakeLists.txt index d27534127..ff8d895e2 100644 --- a/src/Mod/Idf/CMakeLists.txt +++ b/src/Mod/Idf/CMakeLists.txt @@ -6,6 +6,7 @@ SET(Idf_SRCS SOURCE_GROUP("" FILES ${Idf_SRCS}) SET(IdfLibs_SRCS + lib/License.txt lib/0603_SMD.stp lib/0805_SMD.stp lib/1206_SMD.stp diff --git a/src/Mod/Part/App/FeaturePartBoolean.cpp b/src/Mod/Part/App/FeaturePartBoolean.cpp index 2a1781b6c..0d63d309c 100644 --- a/src/Mod/Part/App/FeaturePartBoolean.cpp +++ b/src/Mod/Part/App/FeaturePartBoolean.cpp @@ -24,6 +24,7 @@ #include "PreCompiled.h" #ifndef _PreComp_ # include +# include # include #endif @@ -82,13 +83,20 @@ App::DocumentObjectExecReturn *Boolean::execute(void) if (resShape.IsNull()) { return new App::DocumentObjectExecReturn("Resulting shape is invalid"); } + Base::Reference hGrp = App::GetApplication().GetUserParameter() + .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/Part/Boolean"); + + if (hGrp->GetBool("CheckModel", false)) { + BRepCheck_Analyzer aChecker(resShape); + if (! aChecker.IsValid() ) { + return new App::DocumentObjectExecReturn("Resulting shape is invalid"); + } + } std::vector history; history.push_back(buildHistory(*mkBool.get(), TopAbs_FACE, resShape, BaseShape)); history.push_back(buildHistory(*mkBool.get(), TopAbs_FACE, resShape, ToolShape)); - Base::Reference hGrp = App::GetApplication().GetUserParameter() - .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/Part/Boolean"); if (hGrp->GetBool("RefineModel", false)) { TopoDS_Shape oldShape = resShape; BRepBuilderAPI_RefineModel mkRefine(oldShape); diff --git a/src/Mod/Part/App/FeaturePartCommon.cpp b/src/Mod/Part/App/FeaturePartCommon.cpp index 01ef09e41..cb1338e05 100644 --- a/src/Mod/Part/App/FeaturePartCommon.cpp +++ b/src/Mod/Part/App/FeaturePartCommon.cpp @@ -25,6 +25,7 @@ #include "PreCompiled.h" #ifndef _PreComp_ # include +# include # include #endif @@ -112,6 +113,12 @@ App::DocumentObjectExecReturn *MultiCommon::execute(void) Base::Reference hGrp = App::GetApplication().GetUserParameter() .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/Part/Boolean"); + if (hGrp->GetBool("CheckModel", false)) { + BRepCheck_Analyzer aChecker(resShape); + if (! aChecker.IsValid() ) { + return new App::DocumentObjectExecReturn("Resulting shape is invalid"); + } + } if (hGrp->GetBool("RefineModel", false)) { TopoDS_Shape oldShape = resShape; BRepBuilderAPI_RefineModel mkRefine(oldShape); diff --git a/src/Mod/Part/App/FeaturePartFuse.cpp b/src/Mod/Part/App/FeaturePartFuse.cpp index ba73877ea..9444524c3 100644 --- a/src/Mod/Part/App/FeaturePartFuse.cpp +++ b/src/Mod/Part/App/FeaturePartFuse.cpp @@ -24,6 +24,7 @@ #include "PreCompiled.h" #ifndef _PreComp_ # include +# include # include #endif @@ -111,6 +112,12 @@ App::DocumentObjectExecReturn *MultiFuse::execute(void) Base::Reference hGrp = App::GetApplication().GetUserParameter() .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/Part/Boolean"); + if (hGrp->GetBool("CheckModel", false)) { + BRepCheck_Analyzer aChecker(resShape); + if (! aChecker.IsValid() ) { + return new App::DocumentObjectExecReturn("Resulting shape is invalid"); + } + } if (hGrp->GetBool("RefineModel", false)) { TopoDS_Shape oldShape = resShape; BRepBuilderAPI_RefineModel mkRefine(oldShape); diff --git a/src/Mod/Part/Gui/DlgSettingsGeneral.cpp b/src/Mod/Part/Gui/DlgSettingsGeneral.cpp index a9c917a86..aee0f17a5 100644 --- a/src/Mod/Part/Gui/DlgSettingsGeneral.cpp +++ b/src/Mod/Part/Gui/DlgSettingsGeneral.cpp @@ -70,6 +70,7 @@ void DlgSettingsGeneral::saveSettings() break; } ui->checkBooleanRefine->onSave(); + ui->checkBooleanCheck->onSave(); } void DlgSettingsGeneral::loadSettings() @@ -79,6 +80,7 @@ void DlgSettingsGeneral::loadSettings() int unit = hGrp->GetInt("Unit", 0); ui->comboBoxUnits->setCurrentIndex(unit); ui->checkBooleanRefine->onRestore(); + ui->checkBooleanCheck->onRestore(); } /** diff --git a/src/Mod/Part/Gui/DlgSettingsGeneral.ui b/src/Mod/Part/Gui/DlgSettingsGeneral.ui index 535d0f1d3..276f4acd7 100644 --- a/src/Mod/Part/Gui/DlgSettingsGeneral.ui +++ b/src/Mod/Part/Gui/DlgSettingsGeneral.ui @@ -87,6 +87,19 @@ + + + + Automatically check model after boolean operation + + + CheckModel + + + Mod/Part/Boolean + + + diff --git a/src/Mod/Robot/App/CMakeLists.txt b/src/Mod/Robot/App/CMakeLists.txt index 6af950f3c..a2a2d12e8 100644 --- a/src/Mod/Robot/App/CMakeLists.txt +++ b/src/Mod/Robot/App/CMakeLists.txt @@ -108,6 +108,7 @@ SET(Robot_Scripts RobotExampleTrajectoryOutOfShapes.py ) +if (EXISTS ${CMAKE_SOURCE_DIR}/src/Mod/Robot/Lib/Kuka) SET(Robot_Resources Lib/Kuka/kr500_1.wrl Lib/Kuka/kr500_1.csv @@ -122,6 +123,7 @@ SET(Robot_Resources Lib/Kuka/kr_125.csv Lib/Kuka/kr125_2.pdf ) +endif () add_library(Robot SHARED ${Robot_SRCS}) target_link_libraries(Robot ${Robot_LIBS}) diff --git a/src/Tools/SubWCRev.py b/src/Tools/SubWCRev.py index 53b8a2eb6..b79a3e61d 100644 --- a/src/Tools/SubWCRev.py +++ b/src/Tools/SubWCRev.py @@ -250,7 +250,7 @@ def main(): if o in ("-b", "--bindir"): bindir = a - vcs=[Subversion(), BazaarControl(), GitControl(), MercurialControl(), DebianChangelog(), UnknownControl()] + vcs=[GitControl(), BazaarControl(), Subversion(), MercurialControl(), DebianChangelog(), UnknownControl()] for i in vcs: if i.extractInfo(srcdir): # Open the template file and the version file diff --git a/src/Tools/makedist.py b/src/Tools/makedist.py index a30550e2c..e42c69a33 100644 --- a/src/Tools/makedist.py +++ b/src/Tools/makedist.py @@ -34,6 +34,7 @@ def main(): gitattr.write("zipios++ export-ignore\n") gitattr.write("Pivy-0.5 export-ignore\n") gitattr.write("Pivy export-ignore\n") + gitattr.write("Kuka export-ignore\n") gitattr.close() # revision number