]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Merge branch 'Port_SALOME_8.5.0'
authorvsv <vsv@opencascade.com>
Fri, 18 May 2018 11:31:58 +0000 (14:31 +0300)
committervsv <vsv@opencascade.com>
Fri, 18 May 2018 11:31:58 +0000 (14:31 +0300)
93 files changed:
env.sh
src/BuildPlugin/BuildPlugin_CompSolid.cpp
src/BuildPlugin/BuildPlugin_Solid.cpp
src/BuildPlugin/BuildPlugin_Validators.cpp
src/BuildPlugin/BuildPlugin_msg_en.ts
src/BuildPlugin/Test/Test2398.py
src/Config/Config_Prop.h
src/ConnectorAPI/Test/TestExportToGEOMAllGroupsAndFields.py
src/ConstructionPlugin/ConstructionPlugin_Plugin.cpp
src/ConstructionPlugin/ConstructionPlugin_Validators.cpp
src/ExchangePlugin/CMakeLists.txt
src/ExchangePlugin/Test/Test2459.py [new file with mode: 0644]
src/FeaturesPlugin/CMakeLists.txt
src/FeaturesPlugin/FeaturesPlugin_RemoveSubShapes.cpp
src/FeaturesPlugin/Test/Test2375.py
src/FeaturesPlugin/Test/Test2394.py
src/FeaturesPlugin/Test/Test2465.py [new file with mode: 0644]
src/GDMLAPI/GDMLAPI_Ellipsoid.cpp
src/GDMLPlugin/GDMLPlugin_Ellipsoid.cpp
src/GeomAPI/GeomAPI_Shape.cpp
src/GeomAlgoAPI/GeomAlgoAPI_Boolean.cpp
src/GeomAlgoAPI/GeomAlgoAPI_IGESImport.cpp
src/GeomAlgoAPI/GeomAlgoAPI_MakeShapeList.cpp
src/GeomAlgoAPI/GeomAlgoAPI_MakeVolume.cpp
src/GeomAlgoAPI/GeomAlgoAPI_MakeVolume.h
src/GeomAlgoAPI/GeomAlgoAPI_Partition.cpp
src/GeomAlgoAPI/GeomAlgoAPI_PaveFiller.cpp
src/GeomAlgoAPI/GeomAlgoAPI_STEPImport.cpp
src/GeomAlgoAPI/GeomAlgoAPI_ShapeBuilder.cpp
src/GeomAlgoAPI/GeomAlgoAPI_ShapeTools.cpp
src/GeomAlgoAPI/GeomAlgoAPI_SketchBuilder.cpp
src/GeomAlgoAPI/GeomAlgoAPI_UnifySameDomain.cpp
src/GeomAlgoImpl/GEOMAlgo_Splitter.cxx
src/GeomAlgoImpl/GEOMAlgo_Splitter.hxx
src/GeomValidators/GeomValidators_ShapeType.cpp
src/Model/Model_Application.h
src/Model/Model_AttributeSelection.cpp
src/Model/Model_BodyBuilder.cpp
src/Model/Model_Document.cpp
src/ModelAPI/Test/Test1512.py
src/ModelAPI/Test/Test2358_2.py
src/ModelHighAPI/ModelHighAPI_Dumper.cpp
src/ModelHighAPI/ModelHighAPI_Selection.cpp
src/ModelHighAPI/ModelHighAPI_Tools.cpp
src/ModuleBase/ModuleBase_BRepOwner.h
src/ModuleBase/ModuleBase_IPropertyPanel.h
src/ModuleBase/ModuleBase_IViewer.cpp
src/ModuleBase/ModuleBase_IViewer.h
src/ModuleBase/ModuleBase_PagedContainer.cpp
src/ModuleBase/ModuleBase_ResultPrs.cpp
src/ModuleBase/ModuleBase_ResultPrs.h
src/ModuleBase/ModuleBase_Tools.cpp
src/ModuleBase/ModuleBase_ViewerFilters.cpp
src/ModuleBase/ModuleBase_ViewerPrs.cpp
src/ParametersPlugin/CMakeLists.txt
src/ParametersPlugin/ParametersPlugin_EvalListener.cpp
src/ParametersPlugin/Test/Test2474.py [new file with mode: 0644]
src/PartSet/PartSet_CenterPrs.cpp
src/PartSet/PartSet_CenterPrs.h
src/PartSet/PartSet_CustomPrs.cpp
src/PartSet/PartSet_ExternalPointsMgr.cpp
src/PartSet/PartSet_Module.cpp
src/PartSet/PartSet_SketcherReentrantMgr.cpp
src/PartSet/PartSet_SketcherReentrantMgr.h
src/PartSet/PartSet_WidgetFeaturePointSelector.cpp
src/PartSet/PartSet_WidgetPoint2d.cpp
src/PythonAPI/examples/Platine.py
src/SketchPlugin/CMakeLists.txt
src/SketchPlugin/SketchPlugin_Fillet.cpp
src/SketchPlugin/SketchPlugin_MacroArc.cpp
src/SketchPlugin/SketchPlugin_MacroCircle.cpp
src/SketchPlugin/SketchPlugin_Plugin.cpp
src/SketchPlugin/SketchPlugin_Split.cpp
src/SketchPlugin/SketchPlugin_Tools.cpp
src/SketchPlugin/Test/Test2481.py [new file with mode: 0644]
src/SketcherPrs/SketcherPrs_Angle.cpp
src/SketcherPrs/SketcherPrs_Coincident.cpp
src/SketcherPrs/SketcherPrs_PositionMgr.cpp
src/SketcherPrs/SketcherPrs_Radius.cpp
src/SketcherPrs/SketcherPrs_SymbolPrs.cpp
src/SketcherPrs/SketcherPrs_SymbolPrs.h
src/XGUI/XGUI_Displayer.cpp
src/XGUI/XGUI_OperationMgr.cpp
src/XGUI/XGUI_PropertyPanel.cpp
src/XGUI/XGUI_PropertyPanel.h
src/XGUI/XGUI_Selection.h
src/XGUI/XGUI_SelectionActivate.cpp
src/XGUI/XGUI_Workshop.cpp
test.API/SHAPER/Transformations/TestTranslation_2.py
test.models/CSWA.py
test.models/bobine_film_reel.py
test.models/case24.py
test.models/clothespin.py

diff --git a/env.sh b/env.sh
index 05bfb11452bf30cdb2b0ed2bfec876e1a5c6c4d7..0bdc891c886c3e9ef0401615d6c1c2822909119f 100644 (file)
--- a/env.sh
+++ b/env.sh
@@ -11,7 +11,7 @@ export AUT_DIR=$(pwd)
 export TOOLS_DIR=$(pwd)
 
 export HOME_OLD=$HOME
-source /dn46/SALOME/series8x/current-2017-07-11/start.sh
+source /dn46/SALOME/series8x/current-2018-05-03/start.sh
 export HOME=$HOME_OLD
 
 # Path to solvespace-2
index c88cac3248d2257c631c505b5b7af7efc495d114..0fdb399fa31098b109dc1c4aa34577bb503dfd9c 100644 (file)
@@ -47,7 +47,8 @@ void BuildPlugin_CompSolid::execute()
       aShape = aSelection->context()->shape();
     anOriginalShapes.push_back(aShape);
   }
-  std::shared_ptr<GeomAlgoAPI_MakeVolume> anAlgo(new GeomAlgoAPI_MakeVolume(anOriginalShapes));
+  std::shared_ptr<GeomAlgoAPI_MakeVolume> anAlgo(
+    new GeomAlgoAPI_MakeVolume(anOriginalShapes, false));
   GeomShapePtr aVolumeRes = anAlgo->shape();
 
   // check and process result of volume maker
index 5a98995260263c28b974e5450ec122570b6e317a..0f044564e5a0355f4c340ee5af970fd53f127953 100644 (file)
@@ -51,7 +51,8 @@ void BuildPlugin_Solid::execute()
       aShape = aSelection->context()->shape();
     anOriginalShapes.push_back(aShape);
   }
-  std::shared_ptr<GeomAlgoAPI_MakeVolume> anAlgo(new GeomAlgoAPI_MakeVolume(anOriginalShapes));
+  std::shared_ptr<GeomAlgoAPI_MakeVolume> anAlgo(
+    new GeomAlgoAPI_MakeVolume(anOriginalShapes, false));
   // check and process result of volume maker
   GeomShapePtr aResShape = getSingleSubshape(anAlgo->shape());
   storeResult(anOriginalShapes, aResShape, anAlgo);
index 99140d20eb5c498ab7619a9751b11fedecd0eb22..1dc69c0a38c5566aaf2b651693ef48bd452604cb 100644 (file)
@@ -289,7 +289,8 @@ bool BuildPlugin_ValidatorBaseForSolids::isValid(
     anOriginalShapes.push_back(aShape);
   }
 
-  std::shared_ptr<GeomAlgoAPI_MakeVolume> anAlgorithm(new GeomAlgoAPI_MakeVolume(anOriginalShapes));
+  std::shared_ptr<GeomAlgoAPI_MakeVolume> anAlgorithm(
+    new GeomAlgoAPI_MakeVolume(anOriginalShapes, false));
 
   if (!anAlgorithm->isDone()) {
     theError = "MakeVolume algorithm failed.";
index 6405e316e08350c3d6d5c25640010db5c40ebce6..63c5cc3212e45938cdf63db22038d2686854677e 100644 (file)
       <translation>Selected shape is in the local selection. Only global selection is allowed.</translation>
     </message>
   </context>
+  <context>
+    <name>Filling:GeomValidators_MinObjectsSelected</name>
+    <message>
+        <source>Error: Attribute "%1" should contain at least %2 items.</source>
+        <translation>Segments and wires list should contain at least 2 items</translation>
+    </message>
+  </context>
 </TS>
index 14f101769ca21d623eeffdf30913d8c78004e9b7..b6ca3f6a13135e4273548d6aa7d9caa16231cec1 100644 (file)
@@ -81,9 +81,9 @@ Plane_5 = model.addPlane(Part_1_doc, model.selection("FACE", "Plane_1"), model.s
 Partition_1_objects = [model.selection("EDGE", "Intersection_1_1"), model.selection("FACE", "Plane_2"), model.selection("FACE", "Plane_1")]
 Partition_1 = model.addPartition(Part_1_doc, Partition_1_objects)
 
-Filling_1 = model.addFilling(Part_1_doc, [model.selection("EDGE", "Partition_1_1_4"), model.selection("EDGE", "Edge_1_2")])
+Filling_1 = model.addFilling(Part_1_doc, [model.selection("EDGE", "Partition_1_1_3"), model.selection("EDGE", "Edge_1_2")])
 Filling_2 = model.addFilling(Part_1_doc, [model.selection("EDGE", "Partition_1_1_5"), model.selection("EDGE", "Edge_1_1")])
-Filling_3 = model.addFilling(Part_1_doc, [model.selection("EDGE", "Partition_1_1_3"), model.selection("EDGE", "Edge_1_4")])
+Filling_3 = model.addFilling(Part_1_doc, [model.selection("EDGE", "Partition_1_1_4"), model.selection("EDGE", "Edge_1_4")])
 
 Wire_1 = model.addWire(Part_1_doc, [model.selection("EDGE", "Partition_1_1_1"), model.selection("EDGE", "Partition_1_1_2")])
 Filling_4 = model.addFilling(Part_1_doc, [model.selection("EDGE", "Edge_1_3"), model.selection("WIRE", "Wire_1_1")])
@@ -92,10 +92,10 @@ model.do()
 from GeomAPI import *
 
 # check fillings
-REF_DATA = [(Filling_1, 718.953160474090168463590089232),
-            (Filling_2, 910.697240711571453175565693527),
-            (Filling_3, 718.950138772744594461983069777),
-            (Filling_4, 910.697500240109889091399963945)]
+REF_DATA = [(Filling_1, 718.953888643813570524798706174),
+            (Filling_2, 910.698815675366518007649574429),
+            (Filling_3, 718.953684242875738164002541453),
+            (Filling_4, 910.697703817550063831731677055)]
 for ref in REF_DATA:
     model.testNbResults(ref[0], 1)
     model.testNbSubResults(ref[0], [0])
index bdaecb59b7bc84d856cd149407fa9c402f4fe6bd..5411766e4237f7e9e5593096879319346c1f96ea 100644 (file)
@@ -26,7 +26,7 @@
 #include <string>
 #include <list>
 
-static const char* SKETCH_TAB_NAME = "Sketch";
+static const char SKETCH_TAB_NAME[] = "Sketch";
 
 /*!
  * \class Config_Prop
index 6e8197350cb925b230d2bc30ffafa331aade2c67..49b09bc6f615163911f287a742bbb2c7028dd551 100644 (file)
@@ -88,24 +88,24 @@ def testGroupsAndFieldsExportToGEOM():
   Box_3 = model.addBox(Part_1_doc, 10, 10, 10)
   Translation_2 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_3_1")], model.selection("EDGE", "PartSet/OX"), 20)
   Translation_2.result().setName("Translation_2_1")
-  Group_1 = model.addGroup(Part_1_doc, [model.selection("FACE", "Partition_1_1_1/Modified_Face_2_2"), model.selection("FACE", "Box_2_1/Top"), model.selection("FACE", "Translation_2_1/Translated_Face_1")])
+  Group_1 = model.addGroup(Part_1_doc, [model.selection("FACE", "Translation_1_1/Translated_Face_1"), model.selection("FACE", "Box_2_1/Top"), model.selection("FACE", "Translation_2_1/Translated_Face_1")])
   Group_1.result().setName("faces_top")
-  Group_2 = model.addGroup(Part_1_doc, [model.selection("EDGE", "Partition_1_1_1/Modified_Face_2_5&Partition_1_1_1/Modified_Face_2_3"), model.selection("EDGE", "Partition_1_1_2/Modified_Face_2_2&Partition_1_1_2/Modified_Face_2_1"), model.selection("EDGE", "Translation_2_1/Translated_Face_4&Translation_2_1/Translated_Face_2")])
+  Group_2 = model.addGroup(Part_1_doc, [model.selection("EDGE", "Partition_1_1_1/Modified_Face_2_2&Partition_1_1_1/Modified_Face_2_3"), model.selection("EDGE", "Partition_1_1_2/Modified_Face_2_2&Partition_1_1_2/Modified_Face_2_1"), model.selection("EDGE", "Translation_2_1/Translated_Face_4&Translation_2_1/Translated_Face_2")])
   Group_2.result().setName("edges_x")
-  Group_3 = model.addGroup(Part_1_doc, [model.selection("VERTEX", "Translation_1_1/Translated_Face_6&Partition_1_1_1/Modified_Face_2_5&Partition_1_1_1/Modified_Face_2_3"), model.selection("VERTEX", "Translation_2_1/Translated_Face_5&Translation_2_1/Translated_Face_4&Translation_2_1/Translated_Face_2"), model.selection("VERTEX", "Translation_2_1/Translated_Face_5&Translation_2_1/Translated_Face_3&Translation_2_1/Translated_Face_2"), model.selection("VERTEX", "Translation_1_1/Translated_Face_6&Partition_1_1_1/Modified_Face_2_4&Partition_1_1_1/Modified_Face_2_3"), model.selection("VERTEX", "Partition_1_1_2/Modified_Face_2_3&Partition_1_1_2/Modified_Face_2_1&Box_2_1/Right"), model.selection("VERTEX", "Partition_1_1_2/Modified_Face_2_1&Box_2_1/Front&Box_2_1/Right"), model.selection("VERTEX", "Partition_1_1_1/Modified_Face_2_4&Partition_1_1_1/Modified_Face_2_3&Partition_1_1_1/Modified_Face_2_1"), model.selection("VERTEX", "Translation_2_1/Translated_Face_6&Translation_2_1/Translated_Face_3&Translation_2_1/Translated_Face_2")])
+  Group_3 = model.addGroup(Part_1_doc, [model.selection("VERTEX", "Translation_1_1/Translated_Face_6&Partition_1_1_1/Modified_Face_2_3&Partition_1_1_1/Modified_Face_2_2"), model.selection("VERTEX", "Translation_2_1/Translated_Face_5&Translation_2_1/Translated_Face_4&Translation_2_1/Translated_Face_2"), model.selection("VERTEX", "Translation_2_1/Translated_Face_5&Translation_2_1/Translated_Face_3&Translation_2_1/Translated_Face_2"), model.selection("VERTEX", "Translation_1_1/Translated_Face_6&Translation_1_1/Translated_Face_3&Partition_1_1_1/Modified_Face_2_2"), model.selection("VERTEX", "Partition_1_1_2/Modified_Face_2_1divided_f_1&Box_2_1/Right&Partition_1_1_2/Modified_Face_2_1"), model.selection("VERTEX", "Box_2_1/Front&Box_2_1/Right&Partition_1_1_2/Modified_Face_2_1"), model.selection("VERTEX", "Partition_1_1_1/Modified_Face_2_1&Translation_1_1/Translated_Face_3&Partition_1_1_1/Modified_Face_2_2"), model.selection("VERTEX", "Translation_2_1/Translated_Face_6&Translation_2_1/Translated_Face_3&Translation_2_1/Translated_Face_2")])
   Group_3.result().setName("vertices_bottom")
   Group_4 = model.addGroup(Part_1_doc, [model.selection("SOLID", "Partition_1_1_1"), model.selection("SOLID", "Translation_2_1")])
   Group_4.result().setName("solids_small")
   Field_1 = model.addField(Part_1_doc, 1, "DOUBLE", 1, ["Comp 1"], [model.selection("SOLID", "Partition_1_1_1"), model.selection("SOLID", "Partition_1_1_2"), model.selection("SOLID", "Translation_2_1")])
   Field_1.result().setName("Field_solids")
   Field_1.addStep(0, 0, [[0], [1], [2], [3]])
-  Field_2 = model.addField(Part_1_doc, 1, "DOUBLE", 1, ["Comp 1"], [model.selection("FACE", "Partition_1_1_1/Modified_Face_2_3"), model.selection("FACE", "Partition_1_1_2/Modified_Face_2_1"), model.selection("FACE", "Translation_2_1/Translated_Face_2"), model.selection("FACE", "Partition_1_1_1/Modified_Face_2_2"), model.selection("FACE", "Box_2_1/Top"), model.selection("FACE", "Translation_2_1/Translated_Face_1")])
+  Field_2 = model.addField(Part_1_doc, 1, "DOUBLE", 1, ["Comp 1"], [model.selection("FACE", "Partition_1_1_1/Modified_Face_2_2"), model.selection("FACE", "Partition_1_1_2/Modified_Face_2_1"), model.selection("FACE", "Translation_2_1/Translated_Face_2"), model.selection("FACE", "Translation_1_1/Translated_Face_1"), model.selection("FACE", "Box_2_1/Top"), model.selection("FACE", "Translation_2_1/Translated_Face_1")])
   Field_2.result().setName("Field_faces")
   Field_2.addStep(0, 0, [[0], [1], [1], [1], [2], [2], [2]])
-  Field_3 = model.addField(Part_1_doc, 1, "DOUBLE", 1, ["Comp 1"], [model.selection("EDGE", "Partition_1_1_1/Modified_Face_2_5&Partition_1_1_1/Modified_Face_2_3"), model.selection("EDGE", "Partition_1_1_2/Modified_Face_2_2&Partition_1_1_2/Modified_Face_2_1"), model.selection("EDGE", "Translation_2_1/Translated_Face_4&Translation_2_1/Translated_Face_2"), model.selection("EDGE", "Translation_1_1/Translated_Face_6&Partition_1_1_1/Modified_Face_2_3"), model.selection("EDGE", "Translation_2_1/Translated_Face_5&Translation_2_1/Translated_Face_2"), model.selection("EDGE", "Translation_2_1/Translated_Face_5&Translation_2_1/Translated_Face_1"), model.selection("EDGE", "Translation_1_1/Translated_Face_6&Partition_1_1_1/Modified_Face_2_2"), model.selection("EDGE", "Partition_1_1_2/Modified_Face_2_3&Box_2_1/Top"), model.selection("EDGE", "Box_2_1/Front&Box_2_1/Top"), model.selection("EDGE", "Partition_1_1_2/Modified_Face_2_2&Box_2_1/Top"), model.selection("EDGE", "Box_2_1/Top&Box_2_1/Right")])
+  Field_3 = model.addField(Part_1_doc, 1, "DOUBLE", 1, ["Comp 1"], [model.selection("EDGE", "Partition_1_1_1/Modified_Face_2_3&Partition_1_1_1/Modified_Face_2_2"), model.selection("EDGE", "Partition_1_1_2/Modified_Face_2_2&Partition_1_1_2/Modified_Face_2_1"), model.selection("EDGE", "Translation_2_1/Translated_Face_4&Translation_2_1/Translated_Face_2"), model.selection("EDGE", "Translation_1_1/Translated_Face_6&Partition_1_1_1/Modified_Face_2_2"), model.selection("EDGE", "Translation_2_1/Translated_Face_5&Translation_2_1/Translated_Face_2"), model.selection("EDGE", "Translation_2_1/Translated_Face_5&Translation_2_1/Translated_Face_1"), model.selection("EDGE", "Translation_1_1/Translated_Face_6&Translation_1_1/Translated_Face_1"), model.selection("EDGE", "Partition_1_1_2/Modified_Face_2_1divided_f_1&Box_2_1/Top"), model.selection("EDGE", "Box_2_1/Front&Box_2_1/Top"), model.selection("EDGE", "Partition_1_1_2/Modified_Face_2_2&Box_2_1/Top"), model.selection("EDGE", "Box_2_1/Top&Box_2_1/Right")])
   Field_3.result().setName("Field_edges")
   Field_3.addStep(0, 0, [[0], [1], [1], [1], [2], [2], [2], [2], [3], [3], [3], [3]])
-  Field_4 = model.addField(Part_1_doc, 1, "DOUBLE", 1, ["Comp 1"], [model.selection("VERTEX", "Translation_1_1/Translated_Face_6&Partition_1_1_1/Modified_Face_2_5&Partition_1_1_1/Modified_Face_2_3"), model.selection("VERTEX", "Translation_1_1/Translated_Face_6&Partition_1_1_1/Modified_Face_2_4&Partition_1_1_1/Modified_Face_2_3"), model.selection("VERTEX", "Translation_2_1/Translated_Face_5&Translation_2_1/Translated_Face_4&Translation_2_1/Translated_Face_2"), model.selection("VERTEX", "Translation_2_1/Translated_Face_5&Translation_2_1/Translated_Face_3&Translation_2_1/Translated_Face_2"), model.selection("VERTEX", "Translation_2_1/Translated_Face_6&Translation_2_1/Translated_Face_3&Translation_2_1/Translated_Face_2"), model.selection("VERTEX", "Partition_1_1_2/Modified_Face_2_1&Box_2_1/Front&Box_2_1/Right"), model.selection("VERTEX", "Partition_1_1_2/Modified_Face_2_3&Partition_1_1_2/Modified_Face_2_1&Box_2_1/Right"), model.selection("VERTEX", "Partition_1_1_1/Modified_Face_2_4&Partition_1_1_1/Modified_Face_2_3&Partition_1_1_1/Modified_Face_2_1"), model.selection("VERTEX", "Translation_1_1/Translated_Face_6&Partition_1_1_1/Modified_Face_2_2&Partition_1_1_1/Modified_Face_2_4"), model.selection("VERTEX", "Translation_1_1/Translated_Face_6&Partition_1_1_1/Modified_Face_2_5&Partition_1_1_1/Modified_Face_2_2"), model.selection("VERTEX", "Translation_2_1/Translated_Face_5&Translation_2_1/Translated_Face_4&Translation_2_1/Translated_Face_1"), model.selection("VERTEX", "Translation_2_1/Translated_Face_5&Translation_2_1/Translated_Face_3&Translation_2_1/Translated_Face_1"), model.selection("VERTEX", "Partition_1_1_2/Modified_Face_2_2&Partition_1_1_2/Modified_Face_2_3&Box_2_1/Top"), model.selection("VERTEX", "Partition_1_1_2/Modified_Face_2_3&Box_2_1/Top&Box_2_1/Right"), model.selection("VERTEX", "Partition_1_1_2/Modified_Face_2_2&Box_2_1/Front&Box_2_1/Top"), model.selection("VERTEX", "Box_2_1/Front&Box_2_1/Top&Box_2_1/Right")])
+  Field_4 = model.addField(Part_1_doc, 1, "DOUBLE", 1, ["Comp 1"], [model.selection("VERTEX", "Translation_1_1/Translated_Face_6&Translation_1_1/Translated_Face_3&Translation_1_1/Translated_Face_1"), model.selection("VERTEX", "Translation_1_1/Translated_Face_6&Partition_1_1_1/Modified_Face_2_3&Translation_1_1/Translated_Face_1"), model.selection("VERTEX", "Translation_1_1/Translated_Face_6&Translation_1_1/Translated_Face_3&Partition_1_1_1/Modified_Face_2_2"), model.selection("VERTEX", "Translation_1_1/Translated_Face_6&Partition_1_1_1/Modified_Face_2_3&Partition_1_1_1/Modified_Face_2_2"), model.selection("VERTEX", "Partition_1_1_2/Modified_Face_2_1divided_f_1&Partition_1_1_2/Modified_Face_2_2&Box_2_1/Top"), model.selection("VERTEX", "Partition_1_1_2/Modified_Face_2_1divided_f_1&Box_2_1/Right&Box_2_1/Top"), model.selection("VERTEX", "Partition_1_1_2/Modified_Face_2_1divided_f_1&Box_2_1/Right&Partition_1_1_2/Modified_Face_2_1"), model.selection("VERTEX", "Box_2_1/Front&Partition_1_1_2/Modified_Face_2_2&Box_2_1/Top"), model.selection("VERTEX", "Box_2_1/Front&Box_2_1/Right&Box_2_1/Top"), model.selection("VERTEX", "Box_2_1/Front&Box_2_1/Right&Partition_1_1_2/Modified_Face_2_1"), model.selection("VERTEX", "Translation_2_1/Translated_Face_5&Translation_2_1/Translated_Face_4&Translation_2_1/Translated_Face_1"), model.selection("VERTEX", "Translation_2_1/Translated_Face_5&Translation_2_1/Translated_Face_3&Translation_2_1/Translated_Face_1"), model.selection("VERTEX", "Translation_2_1/Translated_Face_5&Translation_2_1/Translated_Face_3&Translation_2_1/Translated_Face_2"), model.selection("VERTEX", "Translation_2_1/Translated_Face_5&Translation_2_1/Translated_Face_4&Translation_2_1/Translated_Face_2"), model.selection("VERTEX", "Partition_1_1_1/Modified_Face_2_1&Translation_1_1/Translated_Face_3&Partition_1_1_1/Modified_Face_2_2"), model.selection("VERTEX", "Translation_2_1/Translated_Face_6&Translation_2_1/Translated_Face_3&Translation_2_1/Translated_Face_2")])
   Field_4.result().setName("Field_vertices")
   Field_4.addStep(0, 0, [[0], [1], [1], [1], [1], [1], [1], [1], [1], [2], [2], [2], [2], [3], [3], [3], [3]])
   model.exportToGEOM(Part_1_doc)
@@ -161,15 +161,15 @@ def checkResultInGEOM():
 
   field_2_GEOM = getSubObject(geomObject_1, 6)
   assert field_2_GEOM.GetName() == 'Field_faces'
-  assert field_2_GEOM.GetStep(0).GetValues() == [0.0, 0.0, 2.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 2.0]
+  assert field_2_GEOM.GetStep(0).GetValues() == [0.0, 0.0, 0.0, 0.0, 1.0, 2.0, 0.0, 0.0, 0.0, 0.0, 1.0, 2.0, 0.0, 0.0, 0.0, 0.0, 1.0, 2.0]
 
   field_3_GEOM = getSubObject(geomObject_1, 7)
   assert field_3_GEOM.GetName() == 'Field_edges'
-  assert field_3_GEOM.GetStep(0).GetValues() == [0.0, 2.0, 0.0, 2.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 3.0, 3.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 2.0, 1.0, 0.0, 0.0, 0.0]
+  assert field_3_GEOM.GetStep(0).GetValues() == [0.0, 2.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 1.0, 3.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 2.0, 1.0, 0.0, 0.0, 0.0]
 
   field_4_GEOM = getSubObject(geomObject_1, 8)
   assert field_4_GEOM.GetName() == 'Field_vertices'
-  assert field_4_GEOM.GetStep(0).GetValues() == [2.0, 1.0, 2.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 3.0, 3.0, 3.0, 1.0, 1.0, 3.0, 0.0, 0.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0]
+  assert field_4_GEOM.GetStep(0).GetValues() == [1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 3.0, 1.0, 1.0, 1.0, 1.0, 0.0, 2.0, 2.0, 0.0, 0.0, 0.0, 3.0, 2.0, 3.0, 2.0, 3.0]
 
   pass
 
index 9f18a33189327e9f0087eb70356275be36520717..a9f231b8246e11fa14ab5eb9b98677a2b53b0707 100644 (file)
@@ -53,10 +53,10 @@ ConstructionPlugin_Plugin::ConstructionPlugin_Plugin()
   aFactory->registerValidator("ConstructionPlugin_ValidatorAxisTwoNotParallelPlanes",
                               new ConstructionPlugin_ValidatorAxisTwoNotParallelPlanes());
 
-  Config_PropManager::registerProp(SKETCH_TAB_NAME, "planes_size", "Size", Config_Prop::Double,
+  Config_PropManager::registerProp(SKETCH_TAB_NAME, "planes_size", "Size", Config_Prop::DblSpin,
                                    PLANE_SIZE);
   Config_PropManager::registerProp(SKETCH_TAB_NAME, "planes_thickness", "Thickness",
-                                   Config_Prop::Integer, SKETCH_WIDTH);
+    Config_Prop::IntSpin, SKETCH_WIDTH);
   Config_PropManager::registerProp(SKETCH_TAB_NAME, "rotate_to_plane",
     "Rotate to plane when selected", Config_Prop::Boolean, "false");
 
index a3bd2bd539eb5efe4821d70451e09bd7e6da32cd..146e3055af468545c0cf0ab585acd1b943e8ca28 100644 (file)
@@ -26,6 +26,7 @@
 #include <GeomAPI_Lin.h>
 #include <GeomAPI_Pln.h>
 #include <GeomAPI_Vertex.h>
+#include <GeomAPI_Pnt.h>
 #include <GeomAlgoAPI_ShapeTools.h>
 
 #include <ModelAPI_AttributeSelection.h>
@@ -212,6 +213,11 @@ bool ConstructionPlugin_ValidatorPlaneThreePoints::isValid(const AttributePtr& t
   std::shared_ptr<GeomAPI_Pnt> aPnt2 = aVertex2->point();
   std::shared_ptr<GeomAPI_Pnt> aPnt3 = aVertex3->point();
 
+  if (aPnt1->isEqual(aPnt2)) {
+    theError = "Selected points are equal";
+    return false;
+  }
+
   std::shared_ptr<GeomAPI_Lin> aLin(new GeomAPI_Lin(aPnt1, aPnt2));
 
   if(aLin->contains(aPnt3)) {
index 237759c998cde841699a1761f6e12a2048329880..5d05d3f8d3cd706d65fc472d40975431b20f2bcb 100644 (file)
@@ -82,6 +82,7 @@ INSTALL(FILES ${TEXT_RESOURCES} DESTINATION ${SHAPER_INSTALL_XML_RESOURCES})
 ADD_UNIT_TESTS(TestImport.py
                TestExport.py
                Test2290.py
+               Test2459.py
                TestExportToXAOWithGroupNotUpdated.py)
 
 SET(DATA_FILES
diff --git a/src/ExchangePlugin/Test/Test2459.py b/src/ExchangePlugin/Test/Test2459.py
new file mode 100644 (file)
index 0000000..6f8fe99
--- /dev/null
@@ -0,0 +1,117 @@
+## Copyright (C) 2018-20xx  CEA/DEN, EDF R&D
+##
+## This library is free software; you can redistribute it and/or
+## modify it under the terms of the GNU Lesser General Public
+## License as published by the Free Software Foundation; either
+## version 2.1 of the License, or (at your option) any later version.
+##
+## This library is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+## Lesser General Public License for more details.
+##
+## You should have received a copy of the GNU Lesser General Public
+## License along with this library; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+##
+## See http:##www.salome-platform.org/ or
+## email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
+##
+
+from SketchAPI import *
+
+from salome.shaper import model
+
+model.begin()
+partSet = model.moduleDocument()
+Part_1 = model.addPart(partSet)
+Part_1_doc = Part_1.document()
+Sketch_1 = model.addSketch(Part_1_doc, model.defaultPlane("XOY"))
+SketchProjection_1 = Sketch_1.addProjection(model.selection("VERTEX", "PartSet/Origin"), False)
+SketchPoint_1 = SketchProjection_1.createdFeature()
+SketchLine_1 = Sketch_1.addLine(-7.500000000000001, -17.0293863659264, -7.500000000000001, -27)
+SketchLine_1.setName("SketchLine_2")
+SketchLine_1.result().setName("SketchLine_2")
+SketchLine_2 = Sketch_1.addLine(-4.500000000000001, -30, 4.500000000000001, -30)
+SketchLine_2.setName("SketchLine_3")
+SketchLine_2.result().setName("SketchLine_3")
+SketchLine_3 = Sketch_1.addLine(7.500000000000001, -27, 7.500000000000001, -17.0293863659264)
+SketchLine_3.setName("SketchLine_4")
+SketchLine_3.result().setName("SketchLine_4")
+SketchConstraintVertical_1 = Sketch_1.setVertical(SketchLine_1.result())
+SketchConstraintHorizontal_1 = Sketch_1.setHorizontal(SketchLine_2.result())
+SketchConstraintVertical_2 = Sketch_1.setVertical(SketchLine_3.result())
+SketchArc_1 = Sketch_1.addArc(-4.500000000000001, -27, -7.500000000000001, -27, -4.500000000000001, -30, False)
+SketchConstraintCoincidence_1 = Sketch_1.setCoincident(SketchArc_1.startPoint(), SketchLine_1.endPoint())
+SketchConstraintCoincidence_2 = Sketch_1.setCoincident(SketchArc_1.endPoint(), SketchLine_2.startPoint())
+SketchConstraintTangent_1 = Sketch_1.setTangent(SketchArc_1.results()[1], SketchLine_1.result())
+SketchConstraintTangent_2 = Sketch_1.setTangent(SketchArc_1.results()[1], SketchLine_2.result())
+SketchArc_2 = Sketch_1.addArc(4.500000000000001, -27, 4.500000000000001, -30, 7.500000000000001, -27, False)
+SketchConstraintCoincidence_3 = Sketch_1.setCoincident(SketchArc_2.startPoint(), SketchLine_2.endPoint())
+SketchConstraintCoincidence_4 = Sketch_1.setCoincident(SketchArc_2.endPoint(), SketchLine_3.startPoint())
+SketchConstraintTangent_3 = Sketch_1.setTangent(SketchArc_2.results()[1], SketchLine_3.result())
+SketchConstraintTangent_4 = Sketch_1.setTangent(SketchArc_2.results()[1], SketchLine_2.result())
+SketchConstraintRadius_1 = Sketch_1.setRadius(SketchArc_1.results()[1], 3)
+SketchConstraintEqual_1 = Sketch_1.setEqual(SketchArc_1.results()[1], SketchArc_2.results()[1])
+SketchPoint_2 = Sketch_1.addPoint(-2.952241104523109e-048, -30)
+SketchConstraintCoincidence_5 = Sketch_1.setCoincident(SketchPoint_2.coordinates(), SketchLine_2.result())
+SketchConstraintMiddle_1 = Sketch_1.setMiddlePoint(SketchPoint_2.coordinates(), SketchLine_2.result())
+SketchArc_3 = Sketch_1.addArc(0, 0, 8.525641025641026, -15.2827826360878, 17.49809851618825, 0.2579696062919406, False)
+SketchConstraintCoincidence_6 = Sketch_1.setCoincident(SketchPoint_1.result(), SketchArc_3.center())
+SketchArc_4 = Sketch_1.addArc(-9.500000000000002, -17.0293863659264, -7.500000000000001, -17.0293863659264, -8.525641025641027, -15.2827826360878, False)
+SketchConstraintCoincidence_7 = Sketch_1.setCoincident(SketchArc_4.startPoint(), SketchLine_1.startPoint())
+SketchConstraintTangent_5 = Sketch_1.setTangent(SketchArc_4.results()[1], SketchLine_1.result())
+SketchArc_5 = Sketch_1.addArc(9.5, -17.0293863659264, 8.525641025641026, -15.2827826360878, 7.500000000000001, -17.0293863659264, False)
+SketchConstraintCoincidence_8 = Sketch_1.setCoincident(SketchArc_5.startPoint(), SketchArc_3.startPoint())
+SketchConstraintCoincidence_9 = Sketch_1.setCoincident(SketchArc_5.endPoint(), SketchLine_3.endPoint())
+SketchConstraintTangent_6 = Sketch_1.setTangent(SketchArc_5.results()[1], SketchLine_3.result())
+SketchConstraintTangent_7 = Sketch_1.setTangent(SketchArc_5.results()[1], SketchArc_3.results()[1])
+SketchConstraintRadius_2 = Sketch_1.setRadius(SketchArc_4.results()[1], 2)
+SketchConstraintEqual_2 = Sketch_1.setEqual(SketchArc_4.results()[1], SketchArc_5.results()[1])
+SketchConstraintDistance_1 = Sketch_1.setDistance(SketchArc_1.startPoint(), SketchLine_3.result(), 15, True)
+SketchConstraintDistance_2 = Sketch_1.setDistance(SketchAPI_Point(SketchPoint_1).coordinates(), SketchLine_2.result(), 30, True)
+SketchProjection_2 = Sketch_1.addProjection(model.selection("EDGE", "PartSet/OY"), False)
+SketchLine_4 = SketchProjection_2.createdFeature()
+SketchLine_4.setName("SketchLine_5")
+SketchLine_4.result().setName("SketchLine_5")
+SketchConstraintCoincidence_10 = Sketch_1.setCoincident(SketchLine_4.result(), SketchPoint_2.coordinates())
+SketchCircle_1 = Sketch_1.addCircle(0, -24, 4)
+SketchMultiRotation_1_objects = [SketchArc_4.results()[1], SketchLine_1.result(), SketchArc_1.results()[1], SketchLine_2.result(), SketchArc_2.results()[1], SketchLine_3.result(), SketchArc_5.results()[1], SketchCircle_1.results()[1]]
+SketchMultiRotation_1 = Sketch_1.addRotation(SketchMultiRotation_1_objects, SketchAPI_Line(SketchLine_4).startPoint(), "360/3", 3)
+[SketchArc_6, SketchArc_7, SketchLine_5, SketchLine_6, SketchArc_8, SketchArc_9, SketchLine_7, SketchLine_8, SketchArc_10, SketchArc_11, SketchLine_9, SketchLine_10, SketchArc_12, SketchArc_13, SketchCircle_2, SketchCircle_3] = SketchMultiRotation_1.rotated()
+SketchLine_10.setName("SketchLine_11")
+SketchLine_10.result().setName("SketchLine_11")
+SketchLine_9.setName("SketchLine_10")
+SketchLine_9.result().setName("SketchLine_10")
+SketchLine_8.setName("SketchLine_9")
+SketchLine_8.result().setName("SketchLine_9")
+SketchLine_7.setName("SketchLine_8")
+SketchLine_7.result().setName("SketchLine_8")
+SketchLine_6.setName("SketchLine_7")
+SketchLine_6.result().setName("SketchLine_7")
+SketchLine_5.setName("SketchLine_6")
+SketchLine_5.result().setName("SketchLine_6")
+SketchConstraintCoincidence_11 = Sketch_1.setCoincident(SketchCircle_1.center(), SketchLine_4.result())
+SketchConstraintRadius_3 = Sketch_1.setRadius(SketchCircle_1.results()[1], 4)
+SketchProjection_3 = Sketch_1.addProjection(model.selection("EDGE", "PartSet/OX"), False)
+SketchLine_11 = SketchProjection_3.createdFeature()
+SketchLine_11.setName("SketchLine_12")
+SketchLine_11.result().setName("SketchLine_12")
+SketchConstraintDistance_3 = Sketch_1.setDistance(SketchCircle_1.center(), SketchLine_11.result(), 24, True)
+SketchArc_14 = Sketch_1.addArc(0, 0, -17.49809851618825, 0.2579696062919513, -8.525641025641027, -15.2827826360878, False)
+SketchConstraintCoincidence_12 = Sketch_1.setCoincident(SketchArc_4.endPoint(), SketchArc_14.endPoint())
+SketchConstraintTangent_8 = Sketch_1.setTangent(SketchArc_4.results()[1], SketchArc_14.results()[1])
+SketchConstraintCoincidence_13 = Sketch_1.setCoincident(SketchArc_3.center(), SketchArc_14.center())
+SketchArc_15 = Sketch_1.addArc(0, 0, 8.97245749054723, 15.02481302979584, -8.972457490547235, 15.02481302979584, False)
+SketchConstraintEqual_3 = Sketch_1.setEqual(SketchArc_3.results()[1], SketchArc_15.results()[1])
+SketchConstraintCoincidence_14 = Sketch_1.setCoincident(SketchArc_3.center(), SketchArc_15.center())
+SketchConstraintCoincidence_15 = Sketch_1.setCoincident(SketchAPI_Arc(SketchArc_13).startPoint(), SketchArc_14.startPoint())
+SketchConstraintCoincidence_16 = Sketch_1.setCoincident(SketchArc_15.endPoint(), SketchAPI_Arc(SketchArc_7).endPoint())
+SketchConstraintCoincidence_17 = Sketch_1.setCoincident(SketchArc_15.startPoint(), SketchAPI_Arc(SketchArc_12).startPoint())
+SketchConstraintCoincidence_18 = Sketch_1.setCoincident(SketchArc_3.endPoint(), SketchAPI_Arc(SketchArc_6).endPoint())
+model.do()
+Extrusion_1 = model.addExtrusion(Part_1_doc, [model.selection("FACE", "Sketch_1/Face-SketchLine_2f-SketchLine_3f-SketchLine_4f-SketchArc_1_2f-SketchArc_2_2f-SketchArc_3_2f-SketchArc_4_2r-SketchArc_5_2r-SketchCircle_1_2r-SketchArc_6_2r-SketchArc_7_2r-SketchLine_6f-SketchLine_7f-SketchArc_8_2f-SketchArc_9_2f-SketchLine_8f-SketchLine_9f-SketchArc_10_2f-SketchArc_11_2f-SketchLine_10f-SketchLine_11f-SketchArc_12_2r-SketchArc_13_2r-SketchCircle_2_2r-SketchCircle_3_2r-SketchArc_14_2f-SketchArc_15_2f")], model.selection(), 10, 0)
+model.do()
+model.end()
+
+assert(model.checkPythonDump())
index 382f00ec630e8242ff66d6038d1e1e04b48bb3d1..b0be8b41278ecdeba343131e49998b7b0d07c41d 100644 (file)
@@ -250,4 +250,5 @@ ADD_UNIT_TESTS(TestExtrusion.py
                Test2419_1.py
                Test2419_2.py
                Test2419_3.py
+               Test2465.py
 )
index 2f54129831f54599ecfee4f72b51c36924e03050..ea29c222d53c0942486e19d3f095fea89f3134a5 100644 (file)
@@ -216,9 +216,11 @@ void FeaturesPlugin_RemoveSubShapes::execute()
     AttributeSelectionPtr anAttrSelectionInList = aSubShapesAttrList->value(0);
     aResultShape = anAttrSelectionInList->value();
   }
+  // deleted and copied must be jointed to one list which keeps all the history
+  GeomAlgoAPI_MakeShapeList aMakeShapeList;
 
   // find all removed shapes
-  GeomAlgoAPI_MakeShapeCustom aDeletedSubs;
+  std::shared_ptr<GeomAlgoAPI_MakeShapeCustom> aDeletedSubs(new GeomAlgoAPI_MakeShapeCustom);
   std::set<GeomAPI_Shape::ShapeType> aTypes; // types that where removed
   aTypes.insert(GeomAPI_Shape::FACE);
   for(GeomAPI_ShapeIterator anIt(aBaseShape); anIt.more(); anIt.next()) {
@@ -233,32 +235,33 @@ void FeaturesPlugin_RemoveSubShapes::execute()
       }
     }
     if (anIndex == aSubsNb) { // not found in left
-      aDeletedSubs.addDeleted(anIt.current());
+      aDeletedSubs->addDeleted(anIt.current());
       aTypes.insert(anIt.current()->shapeType());
       if (anIt.current()->shapeType() != GeomAPI_Shape::FACE) {
         GeomAPI_ShapeExplorer aFaces(anIt.current(), GeomAPI_Shape::FACE);
         for(; aFaces.more(); aFaces.next())
-          aDeletedSubs.addDeleted(aFaces.current());
+          aDeletedSubs->addDeleted(aFaces.current());
       }
     }
   }
+  aMakeShapeList.appendAlgo(aDeletedSubs);
 
-
-  GeomAlgoAPI_Copy aCopy(aResultShape);
-  aResultShape = aCopy.shape();
+  std::shared_ptr<GeomAlgoAPI_Copy> aCopy(new GeomAlgoAPI_Copy(aResultShape));
+  aResultShape = aCopy->shape();
+  aMakeShapeList.appendAlgo(aCopy);
 
   // Store result.
   ResultBodyPtr aResultBody = document()->createBody(data());
   aResultBody->storeModified(aBaseShape, aResultShape, 1);
   std::set<GeomAPI_Shape::ShapeType>::iterator aTypeIter = aTypes.begin();
   for(; aTypeIter != aTypes.end(); aTypeIter++)
-    aResultBody->loadDeletedShapes(&aDeletedSubs, aBaseShape, *aTypeIter, 1);
-  aResultBody->loadAndOrientModifiedShapes(&aCopy,
+    aResultBody->loadDeletedShapes(&aMakeShapeList, aBaseShape, *aTypeIter, 1);
+  aResultBody->loadAndOrientModifiedShapes(&aMakeShapeList,
                                            aBaseShape,
                                            GeomAPI_Shape::FACE,
                                            2,
                                            "Modified_Face",
-                                           *aCopy.mapOfSubShapes().get(),
+                                           *aMakeShapeList.mapOfSubShapes().get(),
                                            true, false, true);
   setResult(aResultBody);
 }
index fb13fde517c297df1feeba46250172dfe779261d..16cb0352aac8b8ab30e4ebeb5572d6be94c9d217 100644 (file)
@@ -209,12 +209,12 @@ Extrusion_1 = model.addExtrusion(Part_1_doc, [model.selection("FACE", "Sketch_2/
 Boolean_1 = model.addCommon(Part_1_doc, [model.selection("SOLID", "Extrusion_1_2"), model.selection("SOLID", "Extrusion_1_1")], [model.selection("SOLID", "Revolution_2_1")])
 Boolean_2 = model.addCut(Part_1_doc, [model.selection("SOLID", "ExtrusionCut_3_1")], [model.selection("SOLID", "Boolean_1_1"), model.selection("SOLID", "Boolean_1_2")])
 # skip 3 vertices, limitation
-Group_1_objects = [model.selection("VERTEX", "Revolution_1_1/Generated_Face_2&Boolean_2_1/Modified_Face_3"), model.selection("VERTEX", "ExtrusionCut_3_1/Modfied_2&Revolution_1_1/Generated_Face_2"), model.selection("VERTEX", "ExtrusionCut_2_1/Vertex_5033"), model.selection("VERTEX", "ExtrusionCut_2_1/Vertex_5031"), model.selection("VERTEX", "ExtrusionCut_1_1/Lateral_5043"), model.selection("VERTEX", "ExtrusionCut_2_1/Modfied_5&ExtrusionCut_2_1/Modfied_6"), model.selection("VERTEX", "ExtrusionCut_1_1/Lateral_5069"), model.selection("VERTEX", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_1_1/Modfied_8"), model.selection("VERTEX", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_1_1/Modfied_6"), model.selection("VERTEX", "ExtrusionCut_1_1/Lateral_5082"), model.selection("VERTEX", "ExtrusionCut_2_1/Vertex_5024"), model.selection("VERTEX", "ExtrusionCut_2_1/Vertex_5022"), model.selection("VERTEX", "ExtrusionCut_2_1/Modfied_2&ExtrusionCut_2_1/Modfied_8"), model.selection("VERTEX", "Extrusion_1_2/Lateral_4"), model.selection("VERTEX", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_1_1/Modfied_5"), model.selection("VERTEX", "Revolution_1_1/Generated_Face_4&ExtrusionCut_3_1/Modfied_2"), model.selection("VERTEX", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_2_1/Modfied_2"), model.selection("VERTEX", "Boolean_2_1/Modified_Face_2&Boolean_1_1/Modified_Face_1"), model.selection("VERTEX", "Revolution_1_1/Generated_Face_5&Revolution_1_1/Generated_Face_4"), model.selection("VERTEX", "ExtrusionCut_1_1/Lateral_5095"), model.selection("VERTEX", "ExtrusionCut_3_1/Lateral_5004"), model.selection("VERTEX", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_1_1/Modfied_4"), model.selection("VERTEX", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_3_1/Modfied_3"), model.selection("VERTEX", "Extrusion_1_1/Lateral_4"), model.selection("VERTEX", "ExtrusionCut_2_1/Vertex_5006"), model.selection("VERTEX", "Boolean_2_1/Modified_Face_1&Boolean_1_2/Modified_Face_1"), model.selection("VERTEX", "ExtrusionCut_2_1/Vertex_5004"), model.selection("VERTEX", "ExtrusionCut_2_1/Modfied_4&ExtrusionCut_2_1/Modfied_12"), model.selection("VERTEX", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_2_1/Modfied_4"), model.selection("VERTEX", "ExtrusionCut_1_1/Lateral_5108"), model.selection("VERTEX", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_1_1/Modfied_3"), model.selection("VERTEX", "ExtrusionCut_2_1/Vertex_5015"), model.selection("VERTEX", "ExtrusionCut_2_1/Vertex_5013"), model.selection("VERTEX", "ExtrusionCut_2_1/Modfied_3&ExtrusionCut_2_1/Modfied_10"), model.selection("VERTEX", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_2_1/Modfied_3")]
+Group_1_objects = [model.selection("VERTEX", "Revolution_1_1/Generated_Face_5&Revolution_1_1/Generated_Face_4"), model.selection("VERTEX", "Revolution_1_1/Generated_Face_4&ExtrusionCut_3_1/Modfied_2"), model.selection("VERTEX", "ExtrusionCut_3_1/Modfied_2&Revolution_1_1/Generated_Face_2"), model.selection("VERTEX", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_1_1/Modfied_4"), model.selection("VERTEX", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_2_1/Modfied_2"), model.selection("VERTEX", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_3_1/Modfied_3"), model.selection("VERTEX", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_2_1/Modfied_4"), model.selection("VERTEX", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_2_1/Modfied_3"), model.selection("VERTEX", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_1_1/Modfied_3"), model.selection("VERTEX", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_1_1/Modfied_5"), model.selection("VERTEX", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_1_1/Modfied_6"), model.selection("VERTEX", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_1_1/Modfied_8"), model.selection("VERTEX", "Revolution_1_1/Generated_Face_2&Boolean_2_1/Modified_Face_1"), model.selection("VERTEX", "ExtrusionCut_2_1/Modfied_5&ExtrusionCut_2_1/Modfied_6"), model.selection("VERTEX", "ExtrusionCut_1_1/Lateral_5095"), model.selection("VERTEX", "ExtrusionCut_2_1/Modfied_2&ExtrusionCut_2_1/Modfied_7"), model.selection("VERTEX", "ExtrusionCut_3_1/Lateral_5004"), model.selection("VERTEX", "ExtrusionCut_2_1/Modfied_4&ExtrusionCut_2_1/Modfied_9"), model.selection("VERTEX", "ExtrusionCut_2_1/Modfied_3&ExtrusionCut_2_1/Modfied_8"), model.selection("VERTEX", "ExtrusionCut_1_1/Lateral_5108"), model.selection("VERTEX", "ExtrusionCut_1_1/Lateral_5082"), model.selection("VERTEX", "ExtrusionCut_1_1/Lateral_5069"), model.selection("VERTEX", "ExtrusionCut_1_1/Lateral_5043"), model.selection("VERTEX", "ExtrusionCut_2_1/Vertex_5024"), model.selection("VERTEX", "ExtrusionCut_2_1/Vertex_5006"), model.selection("VERTEX", "ExtrusionCut_2_1/Vertex_5015"), model.selection("VERTEX", "Extrusion_1_1/Lateral_4"), model.selection("VERTEX", "Extrusion_1_2/Lateral_4"), model.selection("VERTEX", "ExtrusionCut_2_1/Vertex_5033"), model.selection("VERTEX", "ExtrusionCut_2_1/Vertex_5031"), model.selection("VERTEX", "ExtrusionCut_2_1/Vertex_5022"), model.selection("VERTEX", "ExtrusionCut_2_1/Vertex_5004"), model.selection("VERTEX", "ExtrusionCut_2_1/Vertex_5013"), model.selection("VERTEX", "Boolean_1_2/Modified_Face_2&Boolean_1_2/Modified_Face_1"), model.selection("VERTEX", "Boolean_1_1/Modified_Face_2&Boolean_1_1/Modified_Face_1")]
 Group_1 = model.addGroup(Part_1_doc, Group_1_objects)
 # skip 3 edges, limitation
-Group_2_objects = [model.selection("EDGE", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_2_1/Modfied_3"), model.selection("EDGE", "ExtrusionCut_2_1/Modfied_3"), model.selection("EDGE", "ExtrusionCut_2_1/Modfied_10&ExtrusionCut_2_1/Modfied_11"), model.selection("EDGE", "Boolean_2_1/Modified_Face_3&ExtrusionCut_2_1/Modfied_11"), model.selection("EDGE", "ExtrusionCut_2_1/Modfied_3&ExtrusionCut_2_1/Modfied_10"), model.selection("EDGE", "ExtrusionCut_2_1/Lateral_5011"), model.selection("EDGE", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_1_1/Modfied_3"), model.selection("EDGE", "ExtrusionCut_1_1/Modfied_3&Boolean_2_1/Modified_Face_3"), model.selection("EDGE", "Boolean_2_1/Modified_Face_1&Boolean_1_2/Modified_Face_1"), model.selection("EDGE", "Boolean_2_1/Modified_Face_3&Boolean_2_1/Modified_Face_1"), model.selection("EDGE", "Boolean_1_2/Modified_Edge_1"), model.selection("EDGE", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_1_1/Modfied_4"), model.selection("EDGE", "ExtrusionCut_1_1/Modfied_3"), model.selection("EDGE", "ExtrusionCut_2_1/Modfied_4"), model.selection("EDGE", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_2_1/Modfied_4"), model.selection("EDGE", "ExtrusionCut_2_1/Modfied_4&ExtrusionCut_2_1/Modfied_12"), model.selection("EDGE", "ExtrusionCut_2_1/Modfied_12&ExtrusionCut_2_1/Modfied_13"), model.selection("EDGE", "Boolean_2_1/Modified_Face_3&ExtrusionCut_2_1/Modfied_13"), model.selection("EDGE", "ExtrusionCut_2_1/Lateral_5002"), model.selection("EDGE", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_3_1/Modfied_3"), model.selection("EDGE", "Boolean_1_1/Modified_Edge_1"), model.selection("EDGE", "Boolean_2_1/Modified_Face_2&Boolean_1_1/Modified_Face_1"), model.selection("EDGE", "Boolean_2_1/Modified_Face_3&ExtrusionCut_2_1/Modfied_9"), model.selection("EDGE", "ExtrusionCut_3_1/Modfied_2&Revolution_1_1/Generated_Face_2"), model.selection("EDGE", "Boolean_2_1/Modified_Face_3&Boolean_2_1/Modified_Face_2"), model.selection("EDGE", "Revolution_1_1/Generated_Face_4&ExtrusionCut_3_1/Modfied_2"), model.selection("EDGE", "Revolution_1_1/Generated_Face_5&Revolution_1_1/Generated_Face_4"), model.selection("EDGE", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_2_1/Modfied_2"), model.selection("EDGE", "ExtrusionCut_2_1/Modfied_8&ExtrusionCut_2_1/Modfied_9"), model.selection("EDGE", "ExtrusionCut_2_1/Modfied_2&ExtrusionCut_2_1/Modfied_8"), model.selection("EDGE", "ExtrusionCut_1_1/Modfied_4&Boolean_2_1/Modified_Face_3"), model.selection("EDGE", "ExtrusionCut_1_1/Modfied_4"), model.selection("EDGE", "ExtrusionCut_3_1/Modfied_3"), model.selection("EDGE", "Revolution_1_1/Generated_Face_2&Boolean_2_1/Modified_Face_3"), model.selection("EDGE", "ExtrusionCut_3_1/Modfied_3&Boolean_2_1/Modified_Face_3"), model.selection("EDGE", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_1_1/Modfied_5"), model.selection("EDGE", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_1_1/Modfied_6"), model.selection("EDGE", "ExtrusionCut_1_1/Modfied_6"), model.selection("EDGE", "ExtrusionCut_1_1/Modfied_5"), model.selection("EDGE", "ExtrusionCut_1_1/Modfied_5&Boolean_2_1/Modified_Face_3"), model.selection("EDGE", "ExtrusionCut_1_1/Modfied_6&Boolean_2_1/Modified_Face_3"), model.selection("EDGE", "Revolution_1_1/Generated_Face_4"), model.selection("EDGE", "ExtrusionCut_2_1/Modfied_6&ExtrusionCut_2_1/Modfied_7"), model.selection("EDGE", "Boolean_2_1/Modified_Face_3&ExtrusionCut_2_1/Modfied_7"), model.selection("EDGE", "ExtrusionCut_2_1/Modfied_5&ExtrusionCut_2_1/Modfied_6"), model.selection("EDGE", "ExtrusionCut_2_1/Modfied_5"), model.selection("EDGE", "Revolution_1_1/Generated_Face_2"), model.selection("EDGE", "ExtrusionCut_2_1/Lateral_5029"), model.selection("EDGE", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_1_1/Modfied_8"), model.selection("EDGE", "ExtrusionCut_1_1/Modfied_8"), model.selection("EDGE", "ExtrusionCut_1_1/Modfied_8&Boolean_2_1/Modified_Face_3"), model.selection("EDGE", "ExtrusionCut_2_1/Modfied_2"), model.selection("EDGE", "ExtrusionCut_2_1/Lateral_5020")]
+Group_2_objects = [model.selection("EDGE", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_2_1/Modfied_3"), model.selection("EDGE", "ExtrusionCut_2_1/Modfied_3"), model.selection("EDGE", "Boolean_2_1/Modified_Face_1&ExtrusionCut_2_1/Generated_Face_1"), model.selection("EDGE", "ExtrusionCut_2_1/Modfied_3&ExtrusionCut_2_1/Modfied_8"), model.selection("EDGE", "ExtrusionCut_2_1/Lateral_5011"), model.selection("EDGE", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_1_1/Modfied_3"), model.selection("EDGE", "ExtrusionCut_1_1/Modfied_3&Boolean_2_1/Modified_Face_1"), model.selection("EDGE", "Boolean_1_2/Modified_Face_2&Boolean_1_2/Modified_Face_1"), model.selection("EDGE", "Boolean_2_1/Modified_Face_1&Boolean_1_2/Modified_Face_2"), model.selection("EDGE", "Boolean_1_2/Modified_Edge_1"), model.selection("EDGE", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_1_1/Modfied_4"), model.selection("EDGE", "ExtrusionCut_1_1/Modfied_3"), model.selection("EDGE", "ExtrusionCut_2_1/Modfied_4"), model.selection("EDGE", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_2_1/Modfied_4"), model.selection("EDGE", "ExtrusionCut_2_1/Modfied_4&ExtrusionCut_2_1/Modfied_9"), model.selection("EDGE", "ExtrusionCut_2_1/Modfied_9&ExtrusionCut_2_1/Generated_Face_1"), model.selection("EDGE", "Boolean_2_1/Modified_Face_1&ExtrusionCut_2_1/Generated_Face_1"), model.selection("EDGE", "ExtrusionCut_2_1/Lateral_5002"), model.selection("EDGE", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_3_1/Modfied_3"), model.selection("EDGE", "Boolean_1_1/Modified_Edge_1"), model.selection("EDGE", "Boolean_1_1/Modified_Face_2&Boolean_1_1/Modified_Face_1"), model.selection("EDGE", "Boolean_2_1/Modified_Face_1&ExtrusionCut_2_1/Generated_Face_1"), model.selection("EDGE", "ExtrusionCut_3_1/Modfied_2&Revolution_1_1/Generated_Face_2"), model.selection("EDGE", "Boolean_2_1/Modified_Face_1&Boolean_1_1/Modified_Face_2"), model.selection("EDGE", "Revolution_1_1/Generated_Face_4&ExtrusionCut_3_1/Modfied_2"), model.selection("EDGE", "Revolution_1_1/Generated_Face_5&Revolution_1_1/Generated_Face_4"), model.selection("EDGE", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_2_1/Modfied_2"), model.selection("EDGE", "ExtrusionCut_2_1/Modfied_2&ExtrusionCut_2_1/Modfied_7"), model.selection("EDGE", "ExtrusionCut_1_1/Modfied_4&Boolean_2_1/Modified_Face_1"), model.selection("EDGE", "ExtrusionCut_1_1/Modfied_4"), model.selection("EDGE", "ExtrusionCut_3_1/Modfied_3"), model.selection("EDGE", "Revolution_1_1/Generated_Face_2&Boolean_2_1/Modified_Face_1"), model.selection("EDGE", "ExtrusionCut_3_1/Modfied_3&Boolean_2_1/Modified_Face_1"), model.selection("EDGE", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_1_1/Modfied_5"), model.selection("EDGE", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_1_1/Modfied_6"), model.selection("EDGE", "ExtrusionCut_1_1/Modfied_6"), model.selection("EDGE", "ExtrusionCut_1_1/Modfied_5"), model.selection("EDGE", "ExtrusionCut_1_1/Modfied_5&Boolean_2_1/Modified_Face_1"), model.selection("EDGE", "ExtrusionCut_1_1/Modfied_6&Boolean_2_1/Modified_Face_1"), model.selection("EDGE", "Revolution_1_1/Generated_Face_4"), model.selection("EDGE", "Boolean_2_1/Modified_Face_1&ExtrusionCut_2_1/Generated_Face_1"), model.selection("EDGE", "ExtrusionCut_2_1/Modfied_5&ExtrusionCut_2_1/Modfied_6"), model.selection("EDGE", "ExtrusionCut_2_1/Modfied_5"), model.selection("EDGE", "Revolution_1_1/Generated_Face_2"), model.selection("EDGE", "ExtrusionCut_2_1/Lateral_5029"), model.selection("EDGE", "ExtrusionCut_3_1/Modfied_2&ExtrusionCut_1_1/Modfied_8"), model.selection("EDGE", "ExtrusionCut_1_1/Modfied_8"), model.selection("EDGE", "ExtrusionCut_1_1/Modfied_8&Boolean_2_1/Modified_Face_1"), model.selection("EDGE", "ExtrusionCut_2_1/Modfied_2"), model.selection("EDGE", "ExtrusionCut_2_1/Lateral_5020")]
 Group_2 = model.addGroup(Part_1_doc, Group_2_objects)
-Group_3_objects = [model.selection("FACE", "ExtrusionCut_2_1/Modfied_3"), model.selection("FACE", "ExtrusionCut_2_1/Modfied_11"), model.selection("FACE", "ExtrusionCut_2_1/Modfied_10"), model.selection("FACE", "ExtrusionCut_1_1/Modfied_3"), model.selection("FACE", "Boolean_1_2/Modified_Face_1"), model.selection("FACE", "ExtrusionCut_1_1/Modfied_4"), model.selection("FACE", "ExtrusionCut_2_1/Modfied_4"), model.selection("FACE", "ExtrusionCut_2_1/Modfied_12"), model.selection("FACE", "Boolean_1_1/Modified_Face_1"), model.selection("FACE", "Revolution_1_1/Generated_Face_5"), model.selection("FACE", "ExtrusionCut_2_1/Modfied_9"), model.selection("FACE", "Boolean_2_1/Modified_Face_3"), model.selection("FACE", "ExtrusionCut_2_1/Modfied_2"), model.selection("FACE", "ExtrusionCut_2_1/Modfied_8"), model.selection("FACE", "Boolean_2_1/Modified_Face_2"), model.selection("FACE", "ExtrusionCut_3_1/Modfied_2"), model.selection("FACE", "Revolution_1_1/Generated_Face_4"), model.selection("FACE", "ExtrusionCut_2_1/Modfied_13"), model.selection("FACE", "Boolean_2_1/Modified_Face_1"), model.selection("FACE", "Revolution_1_1/Generated_Face_2"), model.selection("FACE", "ExtrusionCut_3_1/Modfied_3"), model.selection("FACE", "ExtrusionCut_1_1/Modfied_5"), model.selection("FACE", "ExtrusionCut_1_1/Modfied_6"), model.selection("FACE", "ExtrusionCut_2_1/Modfied_5"), model.selection("FACE", "ExtrusionCut_2_1/Modfied_7"), model.selection("FACE", "ExtrusionCut_2_1/Modfied_6"), model.selection("FACE", "ExtrusionCut_1_1/Modfied_8")]
+Group_3_objects = [model.selection("FACE", "ExtrusionCut_2_1/Modfied_3"), model.selection("FACE", "ExtrusionCut_2_1/Generated_Face_1"), model.selection("FACE", "ExtrusionCut_2_1/Modfied_8"), model.selection("FACE", "ExtrusionCut_1_1/Modfied_3"), model.selection("FACE", "Boolean_1_2/Modified_Face_1"), model.selection("FACE", "ExtrusionCut_1_1/Modfied_4"), model.selection("FACE", "ExtrusionCut_2_1/Modfied_4"), model.selection("FACE", "ExtrusionCut_2_1/Modfied_9"), model.selection("FACE", "Boolean_1_1/Modified_Face_1"), model.selection("FACE", "Revolution_1_1/Generated_Face_5"), model.selection("FACE", "ExtrusionCut_2_1/Generated_Face_1"), model.selection("FACE", "Boolean_2_1/Modified_Face_1"), model.selection("FACE", "ExtrusionCut_2_1/Modfied_2"), model.selection("FACE", "ExtrusionCut_2_1/Modfied_7"), model.selection("FACE", "Boolean_1_1/Modified_Face_2"), model.selection("FACE", "ExtrusionCut_3_1/Modfied_2"), model.selection("FACE", "Revolution_1_1/Generated_Face_4"), model.selection("FACE", "ExtrusionCut_2_1/Generated_Face_1"), model.selection("FACE", "Boolean_1_2/Modified_Face_2"), model.selection("FACE", "Revolution_1_1/Generated_Face_2"), model.selection("FACE", "ExtrusionCut_3_1/Modfied_3"), model.selection("FACE", "ExtrusionCut_1_1/Modfied_5"), model.selection("FACE", "ExtrusionCut_1_1/Modfied_6"), model.selection("FACE", "ExtrusionCut_2_1/Modfied_5"), model.selection("FACE", "ExtrusionCut_2_1/Generated_Face_1"), model.selection("FACE", "ExtrusionCut_2_1/Modfied_6"), model.selection("FACE", "ExtrusionCut_1_1/Modfied_8")]
 Group_3 = model.addGroup(Part_1_doc, Group_3_objects)
 model.end()
 
index fae2d1a1e26bc0c636ff80ddac0f513fea103701..e5e950d461fd67949e9c6fa70f8bf96f52ca3f3a 100644 (file)
@@ -88,13 +88,13 @@ Extrusion_1.setNestedSketch(Sketch_2)
 Boolean_1 = model.addFill(Part_1_doc, [model.selection("SOLID", "Revolution_1_1")], [model.selection("SOLID", "Extrusion_1_1")])
 
 Point_2 = model.addPoint(Part_1_doc, "x", "y", "-z")
-Axis_4 = model.addAxis(Part_1_doc, model.selection("VERTEX", "Point_1"), model.selection("VERTEX", "Boolean_1_1_2/Modified_Face_1&Boolean_1_1_2/Modified_Face_3&Boolean_1_1_2/Modified_Face_4"))
+Axis_4 = model.addAxis(Part_1_doc, model.selection("VERTEX", "Point_1"), model.selection("VERTEX", "Boolean_1_1_2/Modified_Face_3&Boolean_1_1_2/Modified_Face_2&Boolean_1_1_2/Modified_Face_1"))
 Plane_4 = model.addPlane(Part_1_doc, model.selection("EDGE", "Axis_1"), model.selection("VERTEX", "Point_1"), True)
 Plane_5 = model.addPlane(Part_1_doc, model.selection("FACE", "Plane_1"), "haut_ext_tuyau", True)
 Plane_5.result().setName("Plane_2 arrivee tuyau")
-Plane_6 = model.addPlane(Part_1_doc, model.selection("FACE", "Boolean_1_1_2/Modified_Face_5"), model.selection("EDGE", "Boolean_1_1_2/Modified_Face_5&Boolean_1_1_2/Modified_Face_2"), 45)
-Plane_7 = model.addPlane(Part_1_doc, model.selection("FACE", "Boolean_1_1_2/Modified_Face_6"), model.selection("EDGE", "Boolean_1_1_2/Modified_Face_6&Boolean_1_1_2/Modified_Face_2"), 45)
-Plane_8 = model.addPlane(Part_1_doc, model.selection("FACE", "Boolean_1_1_2/Modified_Face_6"), model.selection("EDGE", "Boolean_1_1_2/Modified_Face_6&Boolean_1_1_2/Modified_Face_5"), "90+45")
+Plane_6 = model.addPlane(Part_1_doc, model.selection("FACE", "Extrusion_1_1/Generated_Face_3"), model.selection("EDGE", "Extrusion_1_1/Generated_Face_3&Extrusion_1_1/From_Face_1"), 45)
+Plane_7 = model.addPlane(Part_1_doc, model.selection("FACE", "Extrusion_1_1/Generated_Face_4"), model.selection("EDGE", "Extrusion_1_1/Generated_Face_4&Extrusion_1_1/From_Face_1"), 45)
+Plane_8 = model.addPlane(Part_1_doc, model.selection("FACE", "Extrusion_1_1/Generated_Face_4"), model.selection("EDGE", "Extrusion_1_1/Generated_Face_3&Extrusion_1_1/Generated_Face_4"), "90+45")
 
 Boolean_2 = model.addFill(Part_1_doc, [model.selection("SOLID", "Boolean_1_1_1")], [model.selection("FACE", "Plane_5")])
 Boolean_3 = model.addFill(Part_1_doc, [model.selection("SOLID", "Boolean_2_1_2")], [model.selection("FACE", "Plane_3")])
@@ -171,7 +171,7 @@ model.do()
 Revolution_2 = model.addRevolution(Part_1_doc, [model.selection("FACE", "Sketch_4/Face-SketchArc_2_2f-SketchLine_18r")], model.selection("EDGE", "Sketch_4/Edge-SketchLine_18"), 0, 180)
 
 Boolean_5 = model.addCut(Part_1_doc, [model.selection("SOLID", "Revolution_2_1")], [model.selection("SOLID", "Extrusion_3_1")])
-Boolean_5.result().setName("demi-sphère")
+Boolean_5.result().setName("demi-sphere")
 
 Plane_9 = model.addPlane(Part_1_doc, model.selection("VERTEX", "Extrusion_2_1/Generated_Face_10&Extrusion_2_1/Generated_Face_1&Extrusion_2_1/From_Face_4"), model.selection("VERTEX", "Extrusion_2_1/Generated_Face_10&Extrusion_2_1/Generated_Face_1&Extrusion_2_1/To_Face_4"), model.selection("VERTEX", "Extrusion_2_1/Generated_Face_2&Extrusion_2_1/Generated_Face_10&Extrusion_2_1/To_Face_4"))
 Plane_10 = model.addPlane(Part_1_doc, model.selection("VERTEX", "Extrusion_2_1/Generated_Face_12&Extrusion_2_1/Generated_Face_11&Extrusion_2_1/To_Face_1"), model.selection("VERTEX", "Extrusion_2_1/Generated_Face_13&Extrusion_2_1/Generated_Face_12&Extrusion_2_1/To_Face_1"), model.selection("VERTEX", "Extrusion_2_1/Generated_Face_13&Extrusion_2_1/Generated_Face_12&Extrusion_2_1/From_Face_1"))
@@ -186,7 +186,7 @@ Plane_15 = model.addPlane(Part_1_doc, model.selection("FACE", "Recover_1_1/Shape
 Plane_16 = model.addPlane(Part_1_doc, model.selection("FACE", "Recover_1_1/Shape6"), model.selection("EDGE", "Recover_1_1/Shape3&Recover_1_1/Shape6"), 45)
 
 Boolean_6_objects_2 = [model.selection("FACE", "Plane_6"), model.selection("FACE", "Plane_7"), model.selection("FACE", "Plane_8"), model.selection("FACE", "Plane_9"), model.selection("FACE", "Plane_10"), model.selection("FACE", "Plane_11"), model.selection("FACE", "Plane_12"), model.selection("FACE", "Plane_13")]
-Boolean_6 = model.addFill(Part_1_doc, [model.selection("SOLID", "demi-sphère")], Boolean_6_objects_2)
+Boolean_6 = model.addFill(Part_1_doc, [model.selection("SOLID", "demi-sphere")], Boolean_6_objects_2)
 
 Union_2_objects = [model.selection("SOLID", "Boolean_6_1_16"), model.selection("SOLID", "Boolean_6_1_13"), model.selection("SOLID", "Boolean_6_1_14")]
 Union_2 = model.addUnion(Part_1_doc, Union_2_objects)
@@ -205,7 +205,7 @@ Union_6.result().subResult(2).setColor(102, 51, 102)
 Union_6.result().subResult(3).setColor(76, 76, 153)
 Union_6.result().subResult(4).setColor(0, 0, 254)
 
-Partition_1_objects = [model.selection("SOLID", "Recover_1_1"), model.selection("COMPSOLID", "Union_1_1"), model.selection("COMPSOLID", "Extrusion_2_1"), model.selection("COMPSOLID", "demi-sphère")]
+Partition_1_objects = [model.selection("SOLID", "Recover_1_1"), model.selection("COMPSOLID", "Union_1_1"), model.selection("COMPSOLID", "Extrusion_2_1"), model.selection("COMPSOLID", "demi-sphere")]
 Partition_1 = model.addPartition(Part_1_doc, Partition_1_objects)
 Partition_1.result().setColor(102, 0, 0)
 Partition_1.result().subResult(0).setColor(255, 255, 0)
diff --git a/src/FeaturesPlugin/Test/Test2465.py b/src/FeaturesPlugin/Test/Test2465.py
new file mode 100644 (file)
index 0000000..d23abdd
--- /dev/null
@@ -0,0 +1,35 @@
+## Copyright (C) 2014-2017  CEA/DEN, EDF R&D
+##
+## This library is free software; you can redistribute it and/or
+## modify it under the terms of the GNU Lesser General Public
+## License as published by the Free Software Foundation; either
+## version 2.1 of the License, or (at your option) any later version.
+##
+## This library is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+## Lesser General Public License for more details.
+##
+## You should have received a copy of the GNU Lesser General Public
+## License along with this library; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+##
+## See http:##www.salome-platform.org/ or
+## email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
+##
+
+from salome.shaper import model
+
+model.begin()
+partSet = model.moduleDocument()
+Part_1 = model.addPart(partSet)
+Part_1_doc = Part_1.document()
+Ellipsoid_1 = model.addEllipsoid(Part_1_doc, 10, 20, 40)
+Torus_1 = model.addTorus(Part_1_doc, model.selection("VERTEX", "PartSet/Origin"), model.selection("EDGE", "PartSet/OZ"), 15, 3)
+LinearCopy_1 = model.addMultiTranslation(Part_1_doc, [model.selection("SOLID", "Ellipsoid_1_1")], model.selection("EDGE", "Ellipsoid_1_1/Face_1"), 10, 2)
+model.end()
+
+# check that for the linear copy direction the elliptical edge is invalid
+from ModelAPI import *
+aFactory = ModelAPI_Session.get().validators()
+assert(not aFactory.validate(LinearCopy_1.feature()))
index 385b5dea200a6111f9b88993325084e880bf42e0..167d6aa64fd8995c64939ad3268bc4aad9ccf0a0 100644 (file)
@@ -38,7 +38,7 @@ GDMLAPI_Ellipsoid::GDMLAPI_Ellipsoid(const std::shared_ptr<ModelAPI_Feature>& th
   if (initialize()) {
     setSizes(theAX, theBY, theCZ);
     fillAttribute("", useZCut1());
-    fillAttribute("", useZCut1());
+    fillAttribute("", useZCut2());
   }
 }
 
index 1ab4ce05d6dad80a124556f739ba0a7194e0c538..55e2d14454f6f688a69b55f5634bd632b2dbdddd 100644 (file)
 
 #include <GDMLPlugin_Ellipsoid.h>
 
+#include <GeomAPI_ShapeExplorer.h>
+
 #include <ModelAPI_Data.h>
 #include <ModelAPI_ResultBody.h>
 #include <ModelAPI_AttributeDouble.h>
 #include <ModelAPI_AttributeString.h>
 
+#include <sstream>
+
 //=================================================================================================
 GDMLPlugin_Ellipsoid::GDMLPlugin_Ellipsoid() // Nothing to do during instantiation
 {
@@ -108,13 +112,26 @@ void GDMLPlugin_Ellipsoid::loadNamingDS(std::shared_ptr<GeomAlgoAPI_Ellipsoid> t
   theEllipsoidAlgo->prepareNamingFaces();
 
   // Insert to faces
+  // Naming for faces and edges
   int num = 1;
   std::map< std::string, std::shared_ptr<GeomAPI_Shape> > listOfFaces =
-    theEllipsoidAlgo->getCreatedFaces();
+      theEllipsoidAlgo->getCreatedFaces();
   for (std::map< std::string, std::shared_ptr<GeomAPI_Shape> >::iterator
-    it=listOfFaces.begin(); it!=listOfFaces.end(); ++it) {
+       it=listOfFaces.begin(); it!=listOfFaces.end(); ++it) {
     std::shared_ptr<GeomAPI_Shape> aFace = (*it).second;
     theResultEllipsoid->generated(aFace, (*it).first, num++);
   }
+
+  // Naming vertices
+  GeomAPI_DataMapOfShapeShape aVertices;
+  GeomAPI_ShapeExplorer aVertExp(theEllipsoidAlgo->shape(), GeomAPI_Shape::VERTEX);
+  for(int anIndex = 1; aVertExp.more(); aVertExp.next()) {
+    if (!aVertices.isBound(aVertExp.current())) {
+      std::ostringstream aStream;
+      aStream<<"Vertex_"<<anIndex++;
+      theResultEllipsoid->generated(aVertExp.current(), aStream.str(), num++);
+      aVertices.bind(aVertExp.current(), aVertExp.current());
+    }
+  }
 }
 
index 9b2b5d959e822ce1a6cc600802fd050f312edd90..49cc0cb6b7d3a07068ffc560caea49afa12a0e90 100644 (file)
@@ -301,6 +301,8 @@ bool GeomAPI_Shape::isPlanar() const
 GeomAPI_Shape::ShapeType GeomAPI_Shape::shapeType() const
 {
   const TopoDS_Shape& aShape = impl<TopoDS_Shape>();
+  if (aShape.IsNull())
+    return GeomAPI_Shape::SHAPE;
 
   ShapeType aST = GeomAPI_Shape::SHAPE;
 
index 7ef54d5d6be0032e4e8401503ef55ca36c8f6acc..2af2e8edb0841920fd95f9ad3c6312bf915a283a 100644 (file)
@@ -86,14 +86,8 @@ void GeomAlgoAPI_Boolean::build(const ListOfShape& theObjects,
 
   // Building and getting result.
   aBuilder->Perform();
-#ifdef USE_OCCT_720
   if (aBuilder->HasErrors())
     return;
-#else
-  if(aBuilder->ErrorStatus() != 0) {
-    return;
-  }
-#endif
   TopoDS_Shape aResult = aBuilder->Shape();
 
   if(aResult.ShapeType() == TopAbs_COMPOUND) {
index f9f9cdfb418d2ab06c554340b5f4f2e106c5dabe..1b9637feb80cddbef1b2e2fed476063f07774266 100644 (file)
@@ -76,9 +76,8 @@ std::shared_ptr<GeomAPI_Shape> IGESImport(const std::string& theFileName,
       aShape.Nullify();
     }
   }
-  catch( Standard_Failure ) {
-    Handle(Standard_Failure) aFail = Standard_Failure::Caught();
-    theError = aFail->GetMessageString();
+  catch( Standard_Failure const& anException) {
+    theError = anException.GetMessageString();
     aShape.Nullify();
   }
 
index 7cf3b3fb44c74768de6adb32fa4162565cc9fe33..1c615ced3505a04201f1ab6bfe933ba95f5e71c9 100644 (file)
@@ -126,13 +126,18 @@ void GeomAlgoAPI_MakeShapeList::result(const std::shared_ptr<GeomAPI_Shape> theS
     for(NCollection_Map<TopoDS_Shape>::Iterator
         aShapeIt(anAlgoShapes); aShapeIt.More(); aShapeIt.Next()) {
       bool hasResults = false;
+      bool anArgumentIsInResult = false;
       std::shared_ptr<GeomAPI_Shape> aShape(new GeomAPI_Shape);
       aShape->setImpl(new TopoDS_Shape(aShapeIt.Value()));
       ListOfShape aGeneratedShapes;
       aMakeShape->generated(aShape, aGeneratedShapes);
-      for(ListOfShape::const_iterator
-          anIt = aGeneratedShapes.cbegin(); anIt != aGeneratedShapes.cend(); anIt++) {
+      for (ListOfShape::const_iterator
+        anIt = aGeneratedShapes.cbegin(); anIt != aGeneratedShapes.cend(); anIt++) {
         const TopoDS_Shape& anItShape = (*anIt)->impl<TopoDS_Shape>();
+        if (anItShape.IsSame(aShapeIt.Value())) {
+          anArgumentIsInResult = true;
+          continue;
+        }
         aTempShapes.Add(anItShape);
         if(aResultShapesMap.Add(anItShape) == Standard_True) {
           aResultShapesList.Append(anItShape);
@@ -144,13 +149,17 @@ void GeomAlgoAPI_MakeShapeList::result(const std::shared_ptr<GeomAPI_Shape> theS
       for(ListOfShape::const_iterator
           anIt = aModifiedShapes.cbegin(); anIt != aModifiedShapes.cend(); anIt++) {
         const TopoDS_Shape& anItShape = (*anIt)->impl<TopoDS_Shape>();
+        if (anItShape.IsSame(aShapeIt.Value())) {
+          anArgumentIsInResult = true;
+          continue;
+        }
         aTempShapes.Add(anItShape);
         if(aResultShapesMap.Add(anItShape) == Standard_True) {
           aResultShapesList.Append(anItShape);
         }
         hasResults = true;
       }
-      if(hasResults) {
+      if(hasResults && !anArgumentIsInResult) {
         const TopoDS_Shape& aTopoDSShape = aShapeIt.Value();
         if(aResultShapesMap.Remove(aTopoDSShape) == Standard_True) {
           for(NCollection_List<TopoDS_Shape>::Iterator
index c942dd1cb4bb102c3e648fcf0ad134d3c73827e5..f730342fdf58d1547395c6701556cade9d6fd4ee 100644 (file)
@@ -27,7 +27,7 @@
 //=================================================================================================
 std::shared_ptr<GeomAPI_Shape> GeomAlgoAPI_MakeVolume::make(const ListOfShape& theFaces)
 {
-  GeomAlgoAPI_MakeVolume aMkVolAlgo(theFaces);
+  GeomAlgoAPI_MakeVolume aMkVolAlgo(theFaces, false);
   GeomShapePtr aResult;
   if(aMkVolAlgo.isDone() && !aMkVolAlgo.shape()->isNull() && aMkVolAlgo.isValid())
     aResult = aMkVolAlgo.shape();
@@ -35,8 +35,10 @@ std::shared_ptr<GeomAPI_Shape> GeomAlgoAPI_MakeVolume::make(const ListOfShape& t
 }
 
 //=================================================================================================
-GeomAlgoAPI_MakeVolume::GeomAlgoAPI_MakeVolume(const ListOfShape& theFaces)
+GeomAlgoAPI_MakeVolume::GeomAlgoAPI_MakeVolume(
+  const ListOfShape& theFaces, const bool theAvoidInternal)
 {
+  myAvoidInternal = theAvoidInternal;
   build(theFaces);
 }
 
@@ -65,21 +67,13 @@ void GeomAlgoAPI_MakeVolume::build(const ListOfShape& theFaces)
   // parameters of the volume maker
   aVolumeMaker->SetArguments(anArgs);
   aVolumeMaker->SetIntersect(true); // split edges and faces
-#ifdef USE_OCCT_720
-  aVolumeMaker->SetAvoidInternalShapes(true);
-#endif
+  aVolumeMaker->SetAvoidInternalShapes(myAvoidInternal);
   aVolumeMaker->SetGlue(BOPAlgo_GlueOff);
 
   // building and getting result
   aVolumeMaker->Perform();
-#ifdef USE_OCCT_720
   if (aVolumeMaker->HasErrors())
     return;
-#else
-  if(aVolumeMaker->ErrorStatus() != 0) {
-    return;
-  }
-#endif
   TopoDS_Shape aResult = aVolumeMaker->Shape();
 
   if(aResult.ShapeType() == TopAbs_COMPOUND) {
index b273fb4cdda9e0a6d3ed8e35c9b8af885fa2f21b..c8bcf3005f38812d5b854586fb54bd9e9eaee456 100644 (file)
@@ -31,6 +31,7 @@
 /// \brief Perform building solid (compsolid) from a list of faces.
 class GeomAlgoAPI_MakeVolume : public GeomAlgoAPI_MakeShape
 {
+  bool myAvoidInternal; // to remove internal faces from the result
 public:
   /// \brief Perform making volume.
   /// \param[in] theObjects list of faces.
@@ -38,7 +39,10 @@ public:
   GEOMALGOAPI_EXPORT static std::shared_ptr<GeomAPI_Shape> make(const ListOfShape& theFaces);
 
   /// Constructor.
-  GEOMALGOAPI_EXPORT GeomAlgoAPI_MakeVolume(const ListOfShape& theFaces);
+  /// \param theFaces faces that will construct a solid
+  /// \param theAvoidInternal to remove internal faces from the result
+  GEOMALGOAPI_EXPORT GeomAlgoAPI_MakeVolume(const ListOfShape& theFaces,
+    const bool theAvoidInternal);
 
 private:
   /// Builds resulting shape.
index e8199f58c57393908eb190be80bb2d728b98d12b..9655931d771ab170d3cd31c18ca5728114a9b08b 100644 (file)
@@ -150,14 +150,8 @@ void GeomAlgoAPI_Partition::build(const ListOfShape& theObjects,
 
   // Building and getting result.
   anOperation->Perform();
-#ifdef USE_OCCT_720
   if (anOperation->HasErrors())
     return;
-#else
-  if(anOperation->ErrorStatus() != 0) {
-    return;
-  }
-#endif
   TopoDS_Shape aResult = anOperation->Shape();
 
   if(aResult.ShapeType() == TopAbs_COMPOUND) {
index 95a3440720ba5d7060db63a7a2d57e83df7abb54..de0eee7eb3697b91002beda20f49729683832a45 100644 (file)
@@ -41,7 +41,7 @@ void GeomAlgoAPI_PaveFiller::build(const ListOfShape& theListOfShape,
                                    const bool theIsMakeCompSolids)
 {
   BOPAlgo_PaveFiller* aPaveFiller = new BOPAlgo_PaveFiller;
-  BOPCol_ListOfShape aListOfShape;
+  TopTools_ListOfShape aListOfShape;
   for(ListOfShape::const_iterator
     anIt = theListOfShape.cbegin(); anIt != theListOfShape.cend(); anIt++) {
     const TopoDS_Shape& aShape = (*anIt)->impl<TopoDS_Shape>();
@@ -55,30 +55,16 @@ void GeomAlgoAPI_PaveFiller::build(const ListOfShape& theListOfShape,
   }
   aPaveFiller->SetArguments(aListOfShape);
   aPaveFiller->Perform();
-#ifdef USE_OCCT_720
   if (aPaveFiller->HasErrors())
     return;
-#else
-  Standard_Integer iErr = aPaveFiller->ErrorStatus();
-  if(iErr) {
-    return;
-  }
-#endif
 
   BOPAlgo_Builder* aBuilder = new BOPAlgo_Builder();
   this->setImpl(aBuilder);
   this->setBuilderType(OCCT_BOPAlgo_Builder);
   aBuilder->SetArguments(aListOfShape);
   aBuilder->PerformWithFiller(*aPaveFiller);
-#ifdef USE_OCCT_720
   if (aBuilder->HasErrors())
     return;
-#else
-  iErr = aBuilder->ErrorStatus();
-  if(iErr) {
-    return;
-  }
-#endif
 
   TopoDS_Shape aResult = aBuilder->Shape();
   if(aResult.ShapeType() == TopAbs_COMPOUND) {
index 93c3c26f65672041380cae2df3cf6812a062d299..837237a79c761ceb7fdd886a2e0b2debffd30913 100644 (file)
@@ -186,9 +186,8 @@ std::shared_ptr<GeomAPI_Shape> STEPImport(const std::string& theFileName,
       aResShape.Nullify();
     }
   }
-  catch (Standard_Failure) {
-    Handle(Standard_Failure) aFail = Standard_Failure::Caught();
-    theError = aFail->GetMessageString();
+  catch (Standard_Failure const& anException) {
+    theError = anException.GetMessageString();
     aResShape.Nullify();
   }
   // Return previous locale
index ce6022de4c65aaf0529b21348c02fe23aae7ca13..49b66507b73560f18f9f5bfac072b837599091ea 100644 (file)
@@ -189,8 +189,8 @@ void GeomAlgoAPI_ShapeBuilder::addInternal(const std::shared_ptr<GeomAPI_Shape>
           }
         }
       }
-    } else if(aBaseShapeType == GeomAPI_Shape::FACE) {
-      if(aShapeToAddType == GeomAPI_Shape::EDGE) {
+    } else if(aBaseShapeType == TopAbs_FACE) {
+      if(aShapeToAddType == TopAbs_EDGE) {
         aShapeToAdd.Orientation(TopAbs_INTERNAL);
         TopoDS_Wire aWire;
         aBuilder.MakeWire(aWire);
index 5dc12d2edfcf6369a900ad0ed281d832159e804b..a8df94d7dbd49d0fcbae3da17db9a159078a9fb2 100644 (file)
@@ -31,7 +31,6 @@
 #include <GeomAPI_Wire.h>
 
 #include <Bnd_Box.hxx>
-#include <BOPTools.hxx>
 #include <BRep_Builder.hxx>
 #include <BRepAdaptor_Curve.hxx>
 #include <BRepAlgo.hxx>
@@ -182,8 +181,8 @@ std::shared_ptr<GeomAPI_Shape> GeomAlgoAPI_ShapeTools::combineShapes(
   }
 
   // Map subshapes and shapes.
-  BOPCol_IndexedDataMapOfShapeListOfShape aMapSA;
-  BOPTools::MapShapesAndAncestors(aShapesComp, aTS, aTA, aMapSA);
+  TopTools_IndexedDataMapOfShapeListOfShape aMapSA;
+  TopExp::MapShapesAndAncestors(aShapesComp, aTS, aTA, aMapSA);
   if(aMapSA.IsEmpty()) {
     return aResult;
   }
@@ -191,10 +190,10 @@ std::shared_ptr<GeomAPI_Shape> GeomAlgoAPI_ShapeTools::combineShapes(
   // Get all shapes with common subshapes and free shapes.
   NCollection_Map<TopoDS_Shape> aFreeShapes;
   NCollection_Vector<NCollection_Map<TopoDS_Shape>> aShapesWithCommonSubshapes;
-  for(BOPCol_IndexedDataMapOfShapeListOfShape::Iterator
+  for(TopTools_IndexedDataMapOfShapeListOfShape::Iterator
       anIter(aMapSA); anIter.More(); anIter.Next()) {
     const TopoDS_Shape& aShape = anIter.Key();
-    BOPCol_ListOfShape& aListOfShape = anIter.ChangeValue();
+    TopTools_ListOfShape& aListOfShape = anIter.ChangeValue();
     if(aListOfShape.IsEmpty()) {
       continue;
     }
@@ -205,40 +204,39 @@ std::shared_ptr<GeomAPI_Shape> GeomAlgoAPI_ShapeTools::combineShapes(
     } else {
       NCollection_List<TopoDS_Shape> aTempList;
       NCollection_Map<TopoDS_Shape> aTempMap;
-      const TopoDS_Shape& aF = aListOfShape.First();
-      const TopoDS_Shape& aL = aListOfShape.Last();
-      aTempList.Append(aF);
-      aTempList.Append(aL);
-      aTempMap.Add(aF);
-      aTempMap.Add(aL);
-      aFreeShapes.Remove(aF);
-      aFreeShapes.Remove(aL);
+      for (TopTools_ListOfShape::Iterator aListIt(aListOfShape); aListIt.More(); aListIt.Next()) {
+        aTempList.Append(aListIt.Value());
+        aTempMap.Add(aListIt.Value());
+        aFreeShapes.Remove(aListIt.Value());
+      }
       aListOfShape.Clear();
       for(NCollection_List<TopoDS_Shape>::Iterator
           aTempIter(aTempList); aTempIter.More(); aTempIter.Next()) {
         const TopoDS_Shape& aTempShape = aTempIter.Value();
-        for(BOPCol_IndexedDataMapOfShapeListOfShape::Iterator
+        for(TopTools_IndexedDataMapOfShapeListOfShape::Iterator
             anIter(aMapSA); anIter.More(); anIter.Next()) {
-          BOPCol_ListOfShape& aTempListOfShape = anIter.ChangeValue();
+          TopTools_ListOfShape& aTempListOfShape = anIter.ChangeValue();
           if(aTempListOfShape.IsEmpty()) {
             continue;
           } else if(aTempListOfShape.Size() == 1 && aTempListOfShape.First() == aTempShape) {
             aTempListOfShape.Clear();
           } else if(aTempListOfShape.Size() > 1) {
-            if(aTempListOfShape.First() == aTempShape) {
-              const TopoDS_Shape& aTL = aTempListOfShape.Last();
-              if(aTempMap.Add(aTL)) {
-                aTempList.Append(aTL);
-                aFreeShapes.Remove(aTL);
+            TopTools_ListOfShape::Iterator anIt1(aTempListOfShape);
+            for (; anIt1.More(); anIt1.Next()) {
+              if (anIt1.Value() == aTempShape) {
+                TopTools_ListOfShape::Iterator anIt2(aTempListOfShape);
+                for (; anIt2.More(); anIt2.Next())
+                {
+                  if (anIt2.Value() != anIt1.Value()) {
+                    if (aTempMap.Add(anIt2.Value())) {
+                      aTempList.Append(anIt2.Value());
+                      aFreeShapes.Remove(anIt2.Value());
+                    }
+                  }
+                }
+                aTempListOfShape.Clear();
+                break;
               }
-              aTempListOfShape.Clear();
-            } else if(aTempListOfShape.Last() == aTempShape) {
-              const TopoDS_Shape& aTF = aTempListOfShape.First();
-              if(aTempMap.Add(aTF)) {
-                aTempList.Append(aTF);
-                aFreeShapes.Remove(aTF);
-              }
-              aTempListOfShape.Clear();
             }
           }
         }
@@ -341,7 +339,7 @@ std::shared_ptr<GeomAPI_Shape> GeomAlgoAPI_ShapeTools::groupSharedTopology(
 {
   GeomShapePtr aResult = theCompound;
 
-  if(!theCompound.get()) {
+  if (!theCompound.get()) {
     return aResult;
   }
 
@@ -350,23 +348,24 @@ std::shared_ptr<GeomAPI_Shape> GeomAlgoAPI_ShapeTools::groupSharedTopology(
   addSimpleShapeToList(anInShape, anUngroupedShapes);
 
   // Iterate over all shapes and find shapes with shared vertices.
-  TopTools_ListOfShape aMapOrder;
-  BOPCol_DataMapOfShapeListOfShape aVertexShapesMap;
-  for(NCollection_List<TopoDS_Shape>::Iterator aShapesIt(anUngroupedShapes);
-      aShapesIt.More();
-      aShapesIt.Next()) {
+  TopTools_ListOfShape allVertices;
+  TopTools_DataMapOfShapeListOfShape aVertexShapesMap;
+  for (NCollection_List<TopoDS_Shape>::Iterator aShapesIt(anUngroupedShapes);
+    aShapesIt.More();
+    aShapesIt.Next()) {
     const TopoDS_Shape& aShape = aShapesIt.Value();
-    for(TopExp_Explorer aShapeExp(aShape, TopAbs_VERTEX);
-        aShapeExp.More();
-        aShapeExp.Next()) {
+    for (TopExp_Explorer aShapeExp(aShape, TopAbs_VERTEX);
+      aShapeExp.More();
+      aShapeExp.Next()) {
       const TopoDS_Shape& aVertex = aShapeExp.Current();
       if (!aVertexShapesMap.IsBound(aVertex)) {
         NCollection_List<TopoDS_Shape> aList;
         aList.Append(aShape);
-        aMapOrder.Append(aVertex);
+        allVertices.Append(aVertex);
         aVertexShapesMap.Bind(aVertex, aList);
-      } else {
-        if(!aVertexShapesMap.ChangeFind(aVertex).Contains(aShape)) {
+      }
+      else {
+        if (!aVertexShapesMap.ChangeFind(aVertex).Contains(aShape)) {
           aVertexShapesMap.ChangeFind(aVertex).Append(aShape);
         }
       }
@@ -374,55 +373,56 @@ std::shared_ptr<GeomAPI_Shape> GeomAlgoAPI_ShapeTools::groupSharedTopology(
   }
 
   // Iterate over the map and group shapes.
-  NCollection_Vector<TopTools_ListOfShape> aGroups;
-  while (!aMapOrder.IsEmpty()) {
+  NCollection_Vector<TopTools_ListOfShape> aGroups; // groups of shapes connected by vertices
+  while (!allVertices.IsEmpty()) {
     // Get first group of shapes in map, and then unbind it.
-    const TopoDS_Shape& aKey = aMapOrder.First();
-    TopTools_ListOfShape aGroupedShapes = aVertexShapesMap.Find(aKey);
+    const TopoDS_Shape& aKey = allVertices.First();
+    TopTools_ListOfShape aConnectedShapes = aVertexShapesMap.Find(aKey);
     aVertexShapesMap.UnBind(aKey);
-    aMapOrder.Remove(aKey);
+    allVertices.Remove(aKey);
     // Iterate over shapes in this group and add to it shapes from groups in map.
-    for(TopTools_ListOfShape::Iterator aGroupIt(aGroupedShapes);
-        aGroupIt.More(); aGroupIt.Next()) {
-      const TopoDS_Shape& aGroupedShape = aGroupIt.Value();
+    for (TopTools_ListOfShape::Iterator aConnectedIt(aConnectedShapes);
+      aConnectedIt.More(); aConnectedIt.Next()) {
+      const TopoDS_Shape& aConnected = aConnectedIt.Value();
       TopTools_ListOfShape aKeysToUnbind;
-      for(TopTools_ListOfShape::Iterator aKeysIt(aMapOrder);
-          aKeysIt.More();
-          aKeysIt.Next()) {
-        const TopTools_ListOfShape& aGroupInMap = aVertexShapesMap(aKeysIt.Value());
-        if(!aGroupInMap.Contains(aGroupedShape)) {
-          // Group in map does not containt shape from our group, so go to the next group in map.
+      for (TopTools_ListOfShape::Iterator aKeysIt(allVertices);
+        aKeysIt.More();
+        aKeysIt.Next()) {
+        const TopTools_ListOfShape& anOtherConnected = aVertexShapesMap(aKeysIt.Value());
+        if (!anOtherConnected.Contains(aConnected)) {
+          // Other connected group does not containt shape from our connected group
           continue;
         }
-        // Iterate over shape in group in map, and add new shapes into our group.
-        for(TopTools_ListOfShape::Iterator aGroupInMapIt(aGroupInMap);
-            aGroupInMapIt.More();
-            aGroupInMapIt.Next()) {
-          const TopoDS_Shape& aShape = aGroupInMapIt.Value();
-          if (!aGroupedShapes.Contains(aShape)) {
-            aGroupedShapes.Append(aShape);
+        // Other is connected to our, so add them to our connected
+        for (TopTools_ListOfShape::Iterator anOtherIt(anOtherConnected);
+          anOtherIt.More();
+          anOtherIt.Next()) {
+          const TopoDS_Shape& aShape = anOtherIt.Value();
+          if (!aConnectedShapes.Contains(aShape)) {
+            aConnectedShapes.Append(aShape);
           }
         }
         // Save key to unbind from this map.
         aKeysToUnbind.Append(aKeysIt.Value());
       }
       // Unbind groups from map that we added to our group.
-      for(TopTools_ListOfShape::Iterator aKeysIt(aKeysToUnbind);
-          aKeysIt.More();
-          aKeysIt.Next()) {
+      for (TopTools_ListOfShape::Iterator aKeysIt(aKeysToUnbind);
+        aKeysIt.More();
+        aKeysIt.Next()) {
         aVertexShapesMap.UnBind(aKeysIt.Value());
-        aMapOrder.Remove(aKeysIt.Value());
+        allVertices.Remove(aKeysIt.Value());
       }
     }
-    // Sort shapes.
+    // Sort shapes from the most complicated to the simplest ones
     TopTools_ListOfShape aSortedGroup;
-    for(int aST = TopAbs_COMPOUND; aST <= TopAbs_SHAPE; ++aST) {
-      TopTools_ListOfShape::Iterator anIt(aGroupedShapes);
+    for (int aST = TopAbs_COMPOUND; aST <= TopAbs_SHAPE; ++aST) {
+      TopTools_ListOfShape::Iterator anIt(aConnectedShapes);
       while (anIt.More()) {
-        if(anIt.Value().ShapeType() == aST) {
+        if (anIt.Value().ShapeType() == aST) {
           aSortedGroup.Append(anIt.Value());
-          aGroupedShapes.Remove(anIt);
-        } else {
+          aConnectedShapes.Remove(anIt);
+        }
+        else {
           anIt.Next();
         }
       }
@@ -846,13 +846,8 @@ void GeomAlgoAPI_ShapeTools::splitShape(const std::shared_ptr<GeomAPI_Shape>& th
   }
 
   aBOP.Perform();
-#ifdef USE_OCCT_720
   if (aBOP.HasErrors())
     return;
-#else
-  if (aBOP.ErrorStatus())
-    return;
-#endif
 
   // Collect splits
   const TopTools_ListOfShape& aSplits = aBOP.Modified(aBaseEdge);
@@ -896,13 +891,8 @@ void GeomAlgoAPI_ShapeTools::splitShape_p(const std::shared_ptr<GeomAPI_Shape>&
   }
 
   aBOP.Perform();
-#ifdef USE_OCCT_720
   if (aBOP.HasErrors())
     return;
-#else
-  if (aBOP.ErrorStatus())
-    return;
-#endif
 
   // Collect splits
   const TopTools_ListOfShape& aSplits = aBOP.Modified(aBaseEdge);
index bbeccf7b2a310dc48e8fcddbe45ed3cd5ecdf546..ce3f7c82e6231e754610a8916f61cae427f1f21a 100644 (file)
@@ -229,13 +229,8 @@ void GeomAlgoAPI_SketchBuilder::createFaces(
       aBB.AddArgument(anEdge);
   }
   aBB.Perform();
-#ifdef USE_OCCT_720
   if (aBB.HasErrors())
     return;
-#else
-  if (aBB.ErrorStatus())
-    return;
-#endif
   // Collect faces
   TopTools_ListOfShape anAreas = aBB.Modified(aPlnFace);
   sortFaces(anAreas, theFeatures); // sort faces by the edges in them
index 8e8238aafc3e39d5d1fe70c2aac65f73b403c9da..a2a27ba5d968c6a0c4d5b576a9af9ae3386a9b51 100644 (file)
@@ -58,7 +58,6 @@ void GeomAlgoAPI_UnifySameDomain::build(const ListOfShape& theShapes)
   this->setImpl(aUnifyAlgo);
 
   aUnifyAlgo->Initialize(aShell);
-  aUnifyAlgo->UnifyFacesAndEdges();
   aUnifyAlgo->Build();
 
   TopoDS_Shape aResult = aUnifyAlgo->Shape();
@@ -96,11 +95,16 @@ void GeomAlgoAPI_UnifySameDomain::modified(const std::shared_ptr<GeomAPI_Shape>
   const TopoDS_Shape& aShape = theShape->impl<TopoDS_Shape>();
   const ShapeUpgrade_UnifySameDomain& aUnifyAlgo = this->impl<ShapeUpgrade_UnifySameDomain>();
 
-  TopoDS_Shape aModifiedShape = aUnifyAlgo.Generated(aShape);
-
-  for(TopExp_Explorer anExp(aModifiedShape, aShape.ShapeType()); anExp.More(); anExp.Next()) {
-    GeomShapePtr aGeomShape(new GeomAPI_Shape());
-    aGeomShape->setImpl(new TopoDS_Shape(anExp.Current()));
-    theHistory.push_back(aGeomShape);
+  for (int aIsModified = 0; aIsModified <= 1; aIsModified++) {
+    const TopTools_ListOfShape& aMList = aIsModified ?
+      aUnifyAlgo.History()->Modified(aShape) : aUnifyAlgo.History()->Generated(aShape);
+    for (TopTools_ListIteratorOfListOfShape aModified(aMList); aModified.More(); aModified.Next()) {
+      for (TopExp_Explorer anExp(aModified.Value(), aShape.ShapeType());
+           anExp.More(); anExp.Next()) {
+        GeomShapePtr aGeomShape(new GeomAPI_Shape());
+        aGeomShape->setImpl(new TopoDS_Shape(anExp.Current()));
+        theHistory.push_back(aGeomShape);
+      }
+    }
   }
 }
index 364834d40408dee94994d04ad16b54d7ba64d637..0bdebe8c17db582852c85250e06ec73cd2a2e8b4 100755 (executable)
 #include <GEOMAlgo_Splitter.hxx>
 
 #include <TopAbs_ShapeEnum.hxx>
-
+#include <TopExp.hxx>
 #include <TopoDS_Shape.hxx>
 #include <TopoDS_Compound.hxx>
 #include <TopoDS_Iterator.hxx>
 
 #include <BRep_Builder.hxx>
 
-#include <BOPCol_MapOfShape.hxx>
-#include <BOPCol_ListOfShape.hxx>
-
-#include <BOPTools.hxx>
-
-
 static 
   void TreatCompound(const TopoDS_Shape& aC, 
-                     BOPCol_ListOfShape& aLSX);
+                     NCollection_List<TopoDS_Shape>& aLSX);
 
 //=======================================================================
 //function : 
@@ -90,7 +84,7 @@ void GEOMAlgo_Splitter::AddTool(const TopoDS_Shape& theShape)
 //function : Tools
 //purpose  : 
 //=======================================================================
-const BOPCol_ListOfShape& GEOMAlgo_Splitter::Tools()const
+const NCollection_List<TopoDS_Shape>& GEOMAlgo_Splitter::Tools()const
 {
   return myTools;
 }
@@ -143,14 +137,10 @@ void GEOMAlgo_Splitter::Clear()
 //=======================================================================
 void GEOMAlgo_Splitter::BuildResult(const TopAbs_ShapeEnum theType)
 {
-#ifndef USE_OCCT_720
-  myErrorStatus=0;
-#endif
-  //
   TopAbs_ShapeEnum aType;
   BRep_Builder aBB;
-  BOPCol_MapOfShape aM;
-  BOPCol_ListIteratorOfListOfShape aIt, aItIm;
+  NCollection_Map<TopoDS_Shape> aM;
+  NCollection_List<TopoDS_Shape>::Iterator aIt, aItIm;
   //
   aIt.Initialize(myArguments);
   for (; aIt.More(); aIt.Next()) {
@@ -158,7 +148,7 @@ void GEOMAlgo_Splitter::BuildResult(const TopAbs_ShapeEnum theType)
     aType=aS.ShapeType();
     if (aType==theType && !myMapTools.Contains(aS)) {
       if (myImages.IsBound(aS)) {
-        const BOPCol_ListOfShape& aLSIm=myImages.Find(aS);
+        const NCollection_List<TopoDS_Shape>& aLSIm=myImages.Find(aS);
         aItIm.Initialize(aLSIm);
         for (; aItIm.More(); aItIm.Next()) {
           const TopoDS_Shape& aSIm=aItIm.Value();
@@ -185,11 +175,11 @@ void GEOMAlgo_Splitter::PostTreat()
     Standard_Integer i, aNbS;
     BRep_Builder aBB;
     TopoDS_Compound aC;
-    BOPCol_IndexedMapOfShape aMx;
+    TopTools_IndexedMapOfShape aMx;
     //
     aBB.MakeCompound(aC);
     //
-    BOPTools::MapShapes(myShape, myLimit, aMx);
+    TopExp::MapShapes(myShape, myLimit, aMx);
     aNbS=aMx.Extent();
     for (i=1; i<=aNbS; ++i) {
       const TopoDS_Shape& aS=aMx(i);
@@ -198,9 +188,9 @@ void GEOMAlgo_Splitter::PostTreat()
     if (myLimitMode) {
       Standard_Integer iType, iLimit, iTypeX;
       TopAbs_ShapeEnum aType, aTypeX;
-      BOPCol_ListOfShape aLSP, aLSX;
-      BOPCol_ListIteratorOfListOfShape aIt, aItX, aItIm;
-      BOPCol_MapOfShape  aM;
+      NCollection_List<TopoDS_Shape> aLSP, aLSX;
+      NCollection_List<TopoDS_Shape>::Iterator aIt, aItX, aItIm;
+      NCollection_Map<TopoDS_Shape>  aM;
       //
       iLimit=(Standard_Integer)myLimit; 
       //
@@ -238,13 +228,13 @@ void GEOMAlgo_Splitter::PostTreat()
       }// for (; aIt.More(); aIt.Next()) {
       //
       aMx.Clear();
-      BOPTools::MapShapes(aC, aMx);
+      TopExp::MapShapes(aC, aMx);
        // 2. Add them to aC
       aIt.Initialize(aLSP);
       for (; aIt.More(); aIt.Next()) {
         const TopoDS_Shape& aS=aIt.Value();
         if (myImages.IsBound(aS)) {
-          const BOPCol_ListOfShape& aLSIm=myImages.Find(aS);
+          const NCollection_List<TopoDS_Shape>& aLSIm=myImages.Find(aS);
           aItIm.Initialize(aLSIm);
           for (; aItIm.More(); aItIm.Next()) {
             const TopoDS_Shape& aSIm=aItIm.Value();
@@ -269,7 +259,7 @@ void GEOMAlgo_Splitter::PostTreat()
   //
   Standard_Integer aNbS;
   TopoDS_Iterator aIt;
-  BOPCol_ListOfShape aLS;
+  NCollection_List<TopoDS_Shape> aLS;
   //
   aIt.Initialize(myShape);
   for (; aIt.More(); aIt.Next()) {
@@ -288,12 +278,12 @@ void GEOMAlgo_Splitter::PostTreat()
 //purpose  : 
 //=======================================================================
 void TreatCompound(const TopoDS_Shape& aC1, 
-                   BOPCol_ListOfShape& aLSX)
+                   NCollection_List<TopoDS_Shape>& aLSX)
 {
   Standard_Integer aNbC1;
   TopAbs_ShapeEnum aType;
-  BOPCol_ListOfShape aLC, aLC1;
-  BOPCol_ListIteratorOfListOfShape aIt, aIt1;
+  NCollection_List<TopoDS_Shape> aLC, aLC1;
+  NCollection_List<TopoDS_Shape>::Iterator aIt, aIt1;
   TopoDS_Iterator aItC;
   //
   aLC.Append (aC1);
index ad827f3e4517475677f4ce5be8b1b19ae3566c14..a698781e9d9505bb0e3073c47fc746301f7184f0 100644 (file)
@@ -36,9 +36,6 @@
 
 #include <TopoDS_Shape.hxx>
 
-#include <BOPCol_ListOfShape.hxx>
-#include <BOPCol_MapOfShape.hxx>
-
 #include <BOPAlgo_Builder.hxx>
 
 //=======================================================================
@@ -67,7 +64,7 @@
   GEOMALGOIMPL_EXPORT void AddTool(const TopoDS_Shape& theShape);
 
   /// Returns list of tool shapes
-  GEOMALGOIMPL_EXPORT const BOPCol_ListOfShape& Tools()const;
+  GEOMALGOIMPL_EXPORT const NCollection_List<TopoDS_Shape>& Tools()const;
 
   /// Set type of used shapes
   /// \param aLimit a shape type
   
  protected:
    /// List of tools
-  BOPCol_ListOfShape myTools; 
+  NCollection_List<TopoDS_Shape> myTools;
 
   /// Map of tools
-  BOPCol_MapOfShape myMapTools;        
+  NCollection_Map<TopoDS_Shape> myMapTools;
 
   /// A limit type
   TopAbs_ShapeEnum myLimit;   
index 0c1a18b497e6774fe0525f0b59ee0be82e15a348..3ee016de3709faea44c4184fa406ce640c623983 100755 (executable)
@@ -232,7 +232,7 @@ bool GeomValidators_ShapeType::isValidShape(const GeomShapePtr theShape,
       aValid = theShape->isEdge();
       break;
     case Line:
-      aValid = theShape->isEdge() && !GeomAPI_Curve(theShape).isCircle();
+      aValid = theShape->isEdge() && GeomAPI_Curve(theShape).isLine();
       break;
     case Circle:
       aValid = theShape->isEdge() && GeomAPI_Curve(theShape).isCircle();
index 6ec3c8df938bf137bf8346f71fdc1d8d770166ec..b91f69a81f98d1c2ed73dcfab282c502c9bd207f 100644 (file)
@@ -46,7 +46,7 @@ public:
   DEFINE_STANDARD_RTTIEXT(Model_Application, TDocStd_Application)
 
   //! Retuns the application: one per process
-  MODEL_EXPORT static Handle_Model_Application getApplication();
+  MODEL_EXPORT static Handle(Model_Application) getApplication();
   //! Returns the document by the identifier
   //! \returns false of document is not yet created/not loaded
   MODEL_EXPORT std::shared_ptr<Model_Document> document(const int theDocID);
index 7c86500cd0e744f0d2f2e475d62fc8b4aa7c5ea1..93a9b24bbe28e64cb0cf8a0588e01b4b9d0562e7 100644 (file)
@@ -448,13 +448,14 @@ TDF_LabelMap& Model_AttributeSelection::scope()
       }
     }
     // for group Scope is not limitet: this is always up to date objects
-    bool isGroup = aFeature.get() && aFeature->getKind() == "Group";
+    // this causes problem in galeries.py
+    //bool isGroup = aFeature.get() && aFeature->getKind() == "Group";
     for(; aFIter != allFeatures.end(); aFIter++) {
       if (*aFIter == owner()) {  // the left features are created later (except subs of composite)
         aMePassed = true;
         continue;
       }
-      if (isGroup) aMePassed = false;
+      //if (isGroup) aMePassed = false;
       bool isInScope = !aMePassed;
       if (!isInScope && aComposite.get()) {
         // try to add sub-elements of composite if this is composite
index 9633826011ce623cb10f03dc8b2073b19a1bd2b1..6155c39237185d0a6d6becafcef6d7014be38c44 100755 (executable)
@@ -360,13 +360,19 @@ void Model_BodyBuilder::loadDeletedShapes (GeomAlgoAPI_MakeShape* theMS,
   TopoDS_Shape aShapeIn = theShapeIn->impl<TopoDS_Shape>();
   TopTools_MapOfShape aView;
   TopExp_Explorer ShapeExplorer (aShapeIn, (TopAbs_ShapeEnum)theKindOfShape);
+  GeomShapePtr aResultShape = shape();
   for (; ShapeExplorer.More(); ShapeExplorer.Next ()) {
     const TopoDS_Shape& aRoot = ShapeExplorer.Current ();
     if (!aView.Add(aRoot)) continue;
     std::shared_ptr<GeomAPI_Shape> aRShape(new GeomAPI_Shape());
     aRShape->setImpl((new TopoDS_Shape(aRoot)));
     if (theMS->isDeleted (aRShape)) {
-      builder(theTag)->Delete(aRoot);
+      if (!aResultShape->isSubShape(aRShape, false)) {
+          ListOfShape aHist;
+          theMS->modified(aRShape, aHist);
+          if (aHist.size() == 0 || (aHist.size() == 1 && aHist.front()->isSame(aRShape)))
+            builder(theTag)->Delete(aRoot);
+      }
     }
   }
 }
index ebc01b3e6bf82f7a6b39bea9b5d2d1dcd23cff39..cd276ffff11b663155369c994233ef047441f50c 100755 (executable)
@@ -146,10 +146,9 @@ bool Model_Document::load(const char* theDirName, const char* theFileName, Docum
   Handle(TDocStd_Document) aLoaded;
   try {
     aStatus = anApp->Open(aPath, aLoaded);
-  } catch (Standard_Failure) {
-    Handle(Standard_Failure) aFail = Standard_Failure::Caught();
+  } catch (Standard_Failure const& anException) {
     Events_InfoMessage("Model_Document",
-        "Exception in opening of document: %1").arg(aFail->GetMessageString()).send();
+        "Exception in opening of document: %1").arg(anException.GetMessageString()).send();
     return false;
   }
   bool isError = aStatus != PCDM_RS_OK;
@@ -284,10 +283,9 @@ bool Model_Document::save(
   PCDM_StoreStatus aStatus;
   try {
     aStatus = anApp->SaveAs(myDoc, aPath);
-  } catch (Standard_Failure) {
-    Handle(Standard_Failure) aFail = Standard_Failure::Caught();
+  } catch (Standard_Failure const& anException) {
     Events_InfoMessage("Model_Document",
-        "Exception in saving of document: %1").arg(aFail->GetMessageString()).send();
+        "Exception in saving of document: %1").arg(anException.GetMessageString()).send();
     if (aWasCurrent.get()) { // return the current feature to the initial position
       setCurrentFeature(aWasCurrent, false);
       aSession->setCheckTransactions(true);
index b9e7e44aef748229899c90e02e484b0fb4643e82..9afa65d1cc9c435201da180102fa89834a59b346 100755 (executable)
@@ -158,10 +158,10 @@ def check_owner(selection, topology_type, feature):
 check_owner("Extrusion_1_1/Generated_Face_1", "face", aBox)
 check_owner("Boolean_2_1/Modified_Face_3", "face", aBox)
 check_owner("Boolean_1_1/Modified_Face_1", "face", aHoleExt)
-check_owner("Boolean_2_1/Modified_Face_2", "face", aTower)
+check_owner("Boolean_2_1/Modified_Face_1", "face", aTower)
 # check edges without ambiguity
-check_owner("Boolean_2_1/Modified_Face_3&Extrusion_1_1/Generated_Face_2", "edge", aBox)
-check_owner("Boolean_2_1/Modified_Face_2&Extrusion_3_1/To_Face_1_1", "edge", aTower)
+check_owner("Boolean_2_1/Modified_Face_2&Extrusion_1_1/Generated_Face_2", "edge", aBox)
+check_owner("Boolean_2_1/Modified_Face_1&Extrusion_3_1/To_Face_1_1", "edge", aTower)
 
 # check the connected topology method: solid is not a compound of connected topology
 assert(aFuse.firstResult().shape().isConnectedTopology() == False)
index 02922ebf64c776bd2bc6daad7b6404bc19536f45..9429879bc075d56943949ad1e50053edfbcc51d6 100644 (file)
@@ -112,7 +112,7 @@ Fillet_1 = model.addFillet(Part_1_doc, Fillet_1_objects, 2)
 Group_1_objects = [model.selection("FACE", "Fillet_1_1/Modified_Face_3"), model.selection("FACE", "Fillet_1_1/Modified_Face_5"), model.selection("FACE", "Fillet_1_1/Modified_Face_9"), model.selection("FACE", "Fillet_1_1/Modified_Face_15")]
 Group_1 = model.addGroup(Part_1_doc, Group_1_objects)
 Group_2 = model.addGroup(Part_1_doc, [model.selection("EDGE", "Fillet_1_1/Fillet_Face_13&Fillet_1_1/Modified_Face_4"), model.selection("EDGE", "Fillet_1_1/Modified_Face_11&Fillet_1_1/Fillet_Face_13")])
-Group_3 = model.addGroup(Part_1_doc, [model.selection("VERTEX", "Fillet_1_1/Modified_Face_12&ExtrusionCut_1_1/Modfied_6&Fillet_1_1/Modified_Face_11"), model.selection("VERTEX", "ExtrusionCut_1_1/Modfied_6&Fillet_1_1/Modified_Face_11&Fillet_1_1/Modified_Face_6")])
+Group_3 = model.addGroup(Part_1_doc, [model.selection("VERTEX", "Fillet_1_1/Modified_Face_12&ExtrusionCut_1_1/Generated_Face_4&Fillet_1_1/Modified_Face_11"), model.selection("VERTEX", "ExtrusionCut_1_1/Generated_Face_4&Fillet_1_1/Modified_Face_11&Fillet_1_1/Modified_Face_6")])
 model.do()
 
 Folder_1 = model.addFolder(Part_1_doc, Sketch_3, ExtrusionCut_2)
index 3cc97bdd22620f147b4173bb5cb71d8b30360a44..bc1a851bf4ee914be9e1e6cfaacb82320a5c37a5 100644 (file)
@@ -401,7 +401,7 @@ void ModelHighAPI_Dumper::dumpPostponed(bool theDumpFolders)
     else {
       FeaturePtr aFeature = std::dynamic_pointer_cast<ModelAPI_Feature>(*anIt);
       if (aFeature)
-        dumpFeature(aFeature);
+        dumpFeature(aFeature, true);
     }
   }
   myDumpPostponedInProgress = false;
index ec6201600f530f5f3ef4a4c4071115b15af0e8cf..ca9422c18b1152224f2f8306c803dd29f06c62a8 100644 (file)
@@ -198,6 +198,8 @@ ModelHighAPI_Selection ModelHighAPI_Selection::subResult(int theIndex) const
       std::dynamic_pointer_cast<ModelAPI_ResultCompSolid>(myResultSubShapePair.first);
   if (!aCompSolid)
     return ModelHighAPI_Selection();
+  if (theIndex >= aCompSolid->numberOfSubs())
+    return ModelHighAPI_Selection();
 
   ResultBodyPtr aResult = aCompSolid->subResult(theIndex);
   return ModelHighAPI_Selection(aResult, aResult->shape());
index 7d21ba70bbd0c0f48bd96796340bab4d61cd2235..ce7245fba164afd585ffec1eabb1f85f06ab2123 100644 (file)
@@ -439,8 +439,10 @@ bool checkPythonDump()
   aSession->closeAll();
   // execute the dumped
   PyGILState_STATE gstate = PyGILState_Ensure(); /* acquire python thread */
-  PyObject* PyFileObject = PyFile_FromString("./check_dump.py", "r");
-  PyRun_SimpleFileEx(PyFile_AsFile(PyFileObject), "./check_dump.py", 1);
+  static char aDumpName[] = "./check_dump.py";
+  static char aReadMode[] = "r";
+  PyObject* PyFileObject = PyFile_FromString(aDumpName, aReadMode);
+  PyRun_SimpleFileEx(PyFile_AsFile(PyFileObject), aDumpName, 1);
   PyGILState_Release(gstate); /* release python thread */
 
   // compare with the stored data
index b0dade4b17170d84f0f3343d15f9e5a2f40ae10a..31600e41af8e9f3d22b4de8ca89a0e854c109676 100644 (file)
@@ -52,7 +52,7 @@ public:
   /// \param theStyle a style of presentation
   /// \param theMode a drawing mode
   virtual void HilightWithColor (const Handle(PrsMgr_PresentationManager3d)& aPM,
-    const Handle(Graphic3d_HighlightStyle)& theStyle, const Standard_Integer theMode = 0)
+    const Handle(Prs3d_Drawer)& theStyle, const Standard_Integer theMode = 0)
   {
     Selectable()->HilightOwnerWithColor(aPM, theStyle, this);
   }
index 0ada2eedd2f62772729ec4cca08cfbb1998cc58d..ac54a352703201c754a23e058b83dc9f44406058 100644 (file)
@@ -43,8 +43,11 @@ public:
   /// Returns header widget
   virtual QWidget* headerWidget() const = 0;
 
-  /// Returns currently active widget
-  virtual ModuleBase_ModelWidget* activeWidget() const = 0;
+  /// Returns currently active widget. This is a widget from internal container of widgets
+  /// (myWidgets) activated/deactivated by focus in property panel. If parameter is true,
+  /// the method finds firstly the custom widget, after the direct active widget.
+  /// \param isUseCustomWidget boolean state if the custom widget might be a result
+  virtual ModuleBase_ModelWidget* activeWidget(const bool isUseCustomWidget = false) const = 0;
 
   /// Returns all property panel's widget created by WidgetFactory
   virtual const QList<ModuleBase_ModelWidget*>& modelWidgets() const = 0;
index dc7b8a202ac2a53edf4bba3b5bd03784f0453e79..bb514d31fd0f55ce856cfef67811b942e60b66c7 100644 (file)
@@ -20,6 +20,8 @@
 
 #include "ModuleBase_IViewer.h"
 
+Handle(Prs3d_Drawer) ModuleBase_IViewer::DefaultHighlightDrawer;
+
 ModuleBase_IViewer::ModuleBase_IViewer(QObject* theParent) : QObject(theParent)
 {
 
index 087488ad985a5480922989217ee07fb74c9fa508..c58173af9169b6146c9a1a7b93685e136113fc7e 100644 (file)
@@ -129,6 +129,8 @@ Q_OBJECT
   /// Fit all along Z (perpendicular to display)
   //virtual void Zfitall() = 0;
 
+  static Handle(Prs3d_Drawer) DefaultHighlightDrawer;
+
 signals:
   /// Signal emited when last view window is closed
   void lastViewClosed();
@@ -179,6 +181,7 @@ signals:
   protected:
     /// A map for storing a scale factors dependent on view object
     QMap<Handle(V3d_View), double> myWindowScale;
+
 };
 
 #endif
index 2cb2fddde8ec676553ea7af8cd07c151a0ebfdd6..f987109431f9ffbe7f8e5eca82dd9dcbd1d9b466 100644 (file)
@@ -100,8 +100,12 @@ bool ModuleBase_PagedContainer::restoreValueCustom()
 
   DataPtr aData = myFeature->data();
   AttributeStringPtr aStringAttr = aData->string(attributeID());
-  QString aCaseId = QString::fromStdString(aDefVal.empty()?
-                                           aStringAttr->value() : aDefVal);
+  QString aCaseId;
+  if (myIsEditing)
+    aCaseId = QString::fromStdString(aStringAttr->value());
+  else
+    aCaseId = QString::fromStdString(aDefVal.empty()? aStringAttr->value() : aDefVal);
+
   myIsFirst = false;
   int idx = myCaseIds.indexOf(aCaseId);
   if (idx == -1)
index fe20fa5daf04e5159eaa6512e8cc30e30b9ff551..7c855b33b35913179e21035668499fe11acc5834 100755 (executable)
@@ -291,35 +291,34 @@ void ModuleBase_ResultPrs::ComputeSelection(const Handle(SelectMgr_Selection)& a
       return;
   }
 
-  if (theMode == AIS_Shape::SelectionMode(TopAbs_COMPSOLID)) {
-    // Limit selection area only by actual object (Shape)
-    ResultCompSolidPtr aCompSolid = ModelAPI_Tools::compSolidOwner(myResult);
-    if (aCompSolid.get()) {
-      std::shared_ptr<GeomAPI_Shape> aShapePtr = ModelAPI_Tools::shape(aCompSolid);
-      if (aShapePtr.get()) {
-        TopoDS_Shape aShape = aShapePtr->impl<TopoDS_Shape>();
-        int aPriority = StdSelect_BRepSelectionTool::GetStandardPriority(aShape, TopAbs_COMPSOLID);
-        /// It is important to have priority for the shape of comp solid result less than priority
-        /// for the presentation shape which is a sub-result.
-        /// Reason is to select the sub-objects before: #1592
-        aPriority = aPriority - 1;
-        double aDeflection = Prs3d::GetDeflection(aShape, myDrawer);
-
-        Handle(ModuleBase_BRepOwner) aOwner = new ModuleBase_BRepOwner(aShape, aPriority);
-        StdSelect_BRepSelectionTool::ComputeSensitive(aShape, aOwner, aSelection,
-          aDeflection, myDrawer->HLRAngle(), 9, 500);
-
-        for (aSelection->Init(); aSelection->More(); aSelection->Next()) {
-          Handle(SelectMgr_EntityOwner) anOwner =
-            Handle(SelectMgr_EntityOwner)
-            ::DownCast(aSelection->Sensitive()->BaseSensitive()->OwnerId());
-          anOwner->Set(this);
-        }
-        return;
-      }
-    }
-    //AIS_Shape::ComputeSelection(aSelection, 0);
-  }
+  // bug 2110: if (theMode == AIS_Shape::SelectionMode(TopAbs_COMPSOLID)) {
+  //  // Limit selection area only by actual object (Shape)
+  //  ResultCompSolidPtr aCompSolid = ModelAPI_Tools::compSolidOwner(myResult);
+  //  if (aCompSolid.get()) {
+  //    std::shared_ptr<GeomAPI_Shape> aShapePtr = ModelAPI_Tools::shape(aCompSolid);
+  //    if (aShapePtr.get()) {
+  //      TopoDS_Shape aShape = aShapePtr->impl<TopoDS_Shape>();
+  //   int aPriority = StdSelect_BRepSelectionTool::GetStandardPriority(aShape, TopAbs_COMPSOLID);
+  //     /// It is important to have priority for the shape of comp solid result less than priority
+  //      /// for the presentation shape which is a sub-result.
+  //      /// Reason is to select the sub-objects before: #1592
+  //      aPriority = aPriority - 1;
+  //      double aDeflection = Prs3d::GetDeflection(aShape, myDrawer);
+
+  //      Handle(ModuleBase_BRepOwner) aOwner = new ModuleBase_BRepOwner(aShape, aPriority);
+  //      StdSelect_BRepSelectionTool::ComputeSensitive(aShape, aOwner, aSelection,
+  //        aDeflection, myDrawer->HLRAngle(), 9, 500);
+
+  //      for (aSelection->Init(); aSelection->More(); aSelection->Next()) {
+  //        Handle(SelectMgr_EntityOwner) anOwner =
+  //          Handle(SelectMgr_EntityOwner)
+  //          ::DownCast(aSelection->Sensitive()->BaseSensitive()->OwnerId());
+  //        anOwner->Set(this);
+  //      }
+  //      return;
+  //    }
+  //  }
+  //}
   AIS_Shape::ComputeSelection(aSelection, theMode);
 
   if (myAdditionalSelectionPriority > 0) {
@@ -389,7 +388,7 @@ void ModuleBase_ResultPrs::HilightSelected(const Handle(PrsMgr_PresentationManag
 
 //********************************************************************
 void ModuleBase_ResultPrs::HilightOwnerWithColor(const Handle(PrsMgr_PresentationManager3d)& thePM,
-                                                 const Handle(Graphic3d_HighlightStyle)& theStyle,
+                                                 const Handle(Prs3d_Drawer)& theStyle,
                                                  const Handle(SelectMgr_EntityOwner)& theOwner)
 {
   Handle(StdSelect_BRepOwner) aOwner = Handle(StdSelect_BRepOwner)::DownCast(theOwner);
index 0a1f999b7787b9321a9bebc30d836e9725281ff4..367d38232312888cf5c5d2e76df578cac2c79954 100644 (file)
@@ -65,7 +65,7 @@ public:
   //! this selectable object  ( for fast presentation draw )
   Standard_EXPORT virtual void HilightOwnerWithColor(
                                         const Handle(PrsMgr_PresentationManager3d)& thePM,
-                                        const Handle(Graphic3d_HighlightStyle)& theStyle,
+                                        const Handle(Prs3d_Drawer)& theStyle,
                                         const Handle(SelectMgr_EntityOwner)& theOwner);
 
   /// Returns result object
index bd3c855cc0b8628317c957ba05a751613bc25d9b..10f191b27df6c444f18b8ee04dbcc876e2da5ed6 100755 (executable)
@@ -25,6 +25,7 @@
 #include <ModuleBase_WidgetFactory.h>
 #include <ModuleBase_IWorkshop.h>
 #include <ModuleBase_IModule.h>
+#include <ModuleBase_IViewer.h>
 #include <ModuleBase_IconFactory.h>
 #include <ModuleBase_ResultPrs.h>
 #include <ModuleBase_ViewerPrs.h>
@@ -53,6 +54,9 @@
 
 #include <StdSelect_BRepOwner.hxx>
 #include <TopoDS_Iterator.hxx>
+#include <AIS_InteractiveContext.hxx>
+#include <Prs3d_LineAspect.hxx>
+#include <Prs3d_PlaneAspect.hxx>
 
 #include <GeomDataAPI_Point2D.h>
 #include <Events_InfoMessage.h>
@@ -1137,10 +1141,15 @@ void setPointBallHighlighting(AIS_Shape* theAIS)
   }
 
   Handle(Graphic3d_AspectMarker3d) anAspect;
-  Handle(Prs3d_Drawer) aDrawer = theAIS->HilightAttributes();
-#ifdef USE_OCCT_720
-  // to do: implement ball highlighting, in 7.2.0 this drawer is NULL
-#else
+  Handle(Prs3d_Drawer) aDrawer = theAIS->DynamicHilightAttributes();
+  if (aDrawer.IsNull()) {
+    if (ModuleBase_IViewer::DefaultHighlightDrawer.IsNull())
+      return;
+    aDrawer = new Prs3d_Drawer(*ModuleBase_IViewer::DefaultHighlightDrawer);
+    if (!aDrawer->HasOwnPointAspect()) {
+      aDrawer->SetPointAspect(new Prs3d_PointAspect(Aspect_TOM_BALL, Quantity_NOC_BLACK, 2.0));
+    }
+  }
   if(aDrawer->HasOwnPointAspect()) {
     Handle(Prs3d_PointAspect) aPntAspect = aDrawer->PointAspect();
     if(aPixMap->IsEmpty()) {
@@ -1156,9 +1165,8 @@ void setPointBallHighlighting(AIS_Shape* theAIS)
       aPntAspect->SetAspect(anAspect);
     }
     aDrawer->SetPointAspect(aPntAspect);
-    theAIS->SetHilightAttributes(aDrawer);
+         theAIS->SetDynamicHilightAttributes(aDrawer);
   }
-#endif
 }
 
 } // namespace ModuleBase_Tools
index 3f7b3a3ad5fc853519475e166c67e8d0d0580151..ccb8eae4cc447bde125151e06e6a552a8defd67a 100644 (file)
@@ -129,57 +129,35 @@ Standard_Boolean ModuleBase_ShapeInPlaneFilter::IsOk(
         }
       } else {
         if (theOwner->HasSelectable()) {
-        // Check Trihedron sub-objects
-        Handle(SelectMgr_SelectableObject) aSelObj = theOwner->Selectable();
-        Handle(Standard_Type) aType = aSelObj->DynamicType();
-#ifdef BEFORE_TRIHEDRON_PATCH
-        if (aType == STANDARD_TYPE(AIS_Axis)) {
-          Handle(AIS_Axis) aAxis = Handle(AIS_Axis)::DownCast(aSelObj);
-          gp_Lin aLine = aAxis->Component()->Lin();
-          return aPlane.Contains(aLine, Precision::Confusion(), Precision::Angular());
-
-        } else if (aType == STANDARD_TYPE(AIS_Point)) {
-          Handle(AIS_Point) aPoint = Handle(AIS_Point)::DownCast(aSelObj);
-          return aPlane.Distance(aPoint->Component()->Pnt()) < Precision::Confusion();
-
-        } else if (aType == STANDARD_TYPE(AIS_Plane)) {
-          Handle(AIS_Plane) aAisPlane = Handle(AIS_Plane)::DownCast(aSelObj);
-          gp_Pln aPln = aAisPlane->Component()->Pln();
-          return aPlane.Distance(aPln) < Precision::Confusion();
-        }
-#else
-        if (aType == STANDARD_TYPE(AIS_Trihedron)) {
-          Handle(AIS_Trihedron) aTrihedron = Handle(AIS_Trihedron)::DownCast(aSelObj);
-          Handle(AIS_TrihedronOwner) aTrOwner = Handle(AIS_TrihedronOwner)::DownCast(theOwner);
-          if (!aTrOwner.IsNull())
-          {
-            const Prs3d_DatumParts& aPart = aTrOwner->DatumPart();
-            if (aPart >= Prs3d_DP_XAxis && aPart <= Prs3d_DP_ZAxis)
-            {
-#ifdef USE_OCCT_720
-              gp_Ax2 anAxis = aTrihedron->Component()->Ax2();
-              gp_Dir aDir = anAxis.XDirection();
-              gp_Lin aLine(aTrihedron->Component()->Location(), aDir);
-              return aPlane.Contains(aLine, Precision::Confusion(), Precision::Angular());
-#else
-              Handle(Prs3d_Drawer) aDrawer = aTrihedron->Attributes();
-              Handle(Prs3d_DatumAspect) aDatumAspect = aDrawer->DatumAspect();
-              Handle(Graphic3d_ArrayOfPrimitives) aPrimitives =
-                                                        aDatumAspect->ArrayOfPrimitives(aPart);
-              Standard_Real aX1, anY1, aZ1, aX2, anY2, aZ2;
-              aPrimitives->Vertice(1, aX1, anY1, aZ1);
-              aPrimitives->Vertice(2, aX2, anY2, aZ2);
-              gp_Pnt aPnt1(aX1, anY1, aZ1);
-              gp_Pnt aPnt2(aX2, anY2, aZ2);
-              gp_Lin aLine(aPnt1, gp_Dir(gp_Vec(aPnt1, aPnt2)));
-              return aPlane.Contains(aLine, Precision::Confusion(), Precision::Angular());
-#endif
+          // Check Trihedron sub-objects
+          Handle(SelectMgr_SelectableObject) aSelObj = theOwner->Selectable();
+          Handle(Standard_Type) aType = aSelObj->DynamicType();
+          if (aType == STANDARD_TYPE(AIS_Trihedron)) {
+            Handle(AIS_Trihedron) aTrihedron = Handle(AIS_Trihedron)::DownCast(aSelObj);
+            Handle(AIS_TrihedronOwner) aTrOwner = Handle(AIS_TrihedronOwner)::DownCast(theOwner);
+            if (!aTrOwner.IsNull()) {
+              const Prs3d_DatumParts& aPart = aTrOwner->DatumPart();
+              if (aPart >= Prs3d_DP_XAxis && aPart <= Prs3d_DP_ZAxis) {
+                gp_Ax2 anAxis = aTrihedron->Component()->Ax2();
+                gp_Dir aDir;
+                switch (aPart) {
+                case Prs3d_DP_XAxis:
+                  aDir = anAxis.XDirection();
+                  break;
+                case Prs3d_DP_YAxis:
+                  aDir = anAxis.YDirection();
+                  break;
+                case Prs3d_DP_ZAxis:
+                  aDir = anAxis.Direction();
+                  break;
+                }
+                gp_Lin aLine(aTrihedron->Component()->Location(), aDir);
+                return aPlane.Contains(aLine, Precision::Confusion(), Precision::Angular());
+              }
             }
           }
-        }
-#endif
-        // This is not object controlled by the filter
-        aValid = Standard_True;
+          // This is not object controlled by the filter
+          aValid = Standard_True;
         }
       }
     }
index 3d4d446e616c5057711b2f7ec1a3583dd3f62816..d1988484dcc612de7ce9228478555273c47d6e85 100644 (file)
@@ -25,7 +25,7 @@
 
 ModuleBase_ViewerPrs::ModuleBase_ViewerPrs(ObjectPtr theResult,
                                            const GeomShapePtr& theShape,
-                                           Handle_SelectMgr_EntityOwner theOwner)
+                                           Handle(SelectMgr_EntityOwner) theOwner)
 : myResult(theResult),
   myShape(theShape),
   myOwner(theOwner)
index a5aae89231b2e3c842adfc1bd6a9ac6a589eb2b1..b37fe03f2778a370784df13e2c76b528cffb3aee 100644 (file)
@@ -118,4 +118,5 @@ ADD_UNIT_TESTS(TestParameterCreation.py
                TestParameterChangeValue.py
                Test1806.py
                Test2392.py
+               Test2474.py
               )
index c485dffde44485fbd085cacdabdfb508d74361f6..d2481ebddbe041f3890e8275fba60522a876ecd9 100644 (file)
@@ -250,10 +250,37 @@ void setParameterName(ResultParameterPtr theResultParameter, const std::string&
       std::dynamic_pointer_cast<ParametersPlugin_Parameter>(
           ModelAPI_Feature::feature(theResultParameter));
 
+  std::string anOldName = aParameter->name();
   aWasBlocked = aParameter->data()->blockSendAttributeUpdated(true);
   aParameter->data()->setName(theName);
   aParameter->string(ParametersPlugin_Parameter::VARIABLE_ID())->setValue(theName);
   aParameter->data()->blockSendAttributeUpdated(aWasBlocked);
+
+  // #2474 : if parameter name now hides/shows the higher level parameter name,
+  // update the depended expressions
+  DocumentPtr aRootDoc = ModelAPI_Session::get()->moduleDocument();
+  if (theResultParameter->document() != aRootDoc) {
+    std::list<std::string> aNames; // collect names in the root document that must be checked
+    aNames.push_back(theName);
+    if (anOldName != theName) {
+      aNames.push_back(anOldName);
+    }
+    std::list<std::string>::iterator aNIter = aNames.begin();
+    for (; aNIter != aNames.end(); aNIter++) {
+      double aValue;
+      ResultParameterPtr aRootParam;
+      if (ModelAPI_Tools::findVariable(aParameter, *aNIter, aValue, aRootParam, aRootDoc)) {
+        std::set<std::shared_ptr<ModelAPI_Attribute> > anAttributes =
+          aRootParam->data()->refsToMe();
+        std::set<std::shared_ptr<ModelAPI_Attribute> >::const_iterator anAttributeIt =
+          anAttributes.cbegin();
+        for (; anAttributeIt != anAttributes.cend(); ++anAttributeIt) {
+          const AttributePtr& anAttribute = *anAttributeIt;
+          ModelAPI_AttributeEvalMessage::send(anAttribute, NULL);
+        }
+      }
+    }
+  }
 }
 
 void ParametersPlugin_EvalListener::processObjectRenamedEvent(
diff --git a/src/ParametersPlugin/Test/Test2474.py b/src/ParametersPlugin/Test/Test2474.py
new file mode 100644 (file)
index 0000000..bd2b659
--- /dev/null
@@ -0,0 +1,48 @@
+## Copyright (C) 2014-2017  CEA/DEN, EDF R&D
+##
+## This library is free software; you can redistribute it and/or
+## modify it under the terms of the GNU Lesser General Public
+## License as published by the Free Software Foundation; either
+## version 2.1 of the License, or (at your option) any later version.
+##
+## This library is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+## Lesser General Public License for more details.
+##
+## You should have received a copy of the GNU Lesser General Public
+## License along with this library; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+##
+## See http:##www.salome-platform.org/ or
+## email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
+##
+
+from salome.shaper import model
+
+model.begin()
+partSet = model.moduleDocument()
+model.addParameter(partSet, "l", "200")
+Part_1 = model.addPart(partSet)
+Part_1_doc = Part_1.document()
+Sketch_1 = model.addSketch(Part_1_doc, model.defaultPlane("XOY"))
+SketchLine_1 = Sketch_1.addLine(138.3632494179343, 48.5641040948674, -61.63675058206567, 48.5641040948674)
+SketchLine_2 = Sketch_1.addLine(-61.63675058206567, 48.5641040948674, -61.63675058206567, -46.51114810194107)
+SketchLine_3 = Sketch_1.addLine(-61.63675058206567, -46.51114810194107, 138.3632494179343, -46.51114810194107)
+SketchLine_4 = Sketch_1.addLine(138.3632494179343, -46.51114810194107, 138.3632494179343, 48.5641040948674)
+SketchConstraintCoincidence_1 = Sketch_1.setCoincident(SketchLine_4.endPoint(), SketchLine_1.startPoint())
+SketchConstraintCoincidence_2 = Sketch_1.setCoincident(SketchLine_1.endPoint(), SketchLine_2.startPoint())
+SketchConstraintCoincidence_3 = Sketch_1.setCoincident(SketchLine_2.endPoint(), SketchLine_3.startPoint())
+SketchConstraintCoincidence_4 = Sketch_1.setCoincident(SketchLine_3.endPoint(), SketchLine_4.startPoint())
+SketchConstraintHorizontal_1 = Sketch_1.setHorizontal(SketchLine_1.result())
+SketchConstraintVertical_1 = Sketch_1.setVertical(SketchLine_2.result())
+SketchConstraintHorizontal_2 = Sketch_1.setHorizontal(SketchLine_3.result())
+SketchConstraintVertical_2 = Sketch_1.setVertical(SketchLine_4.result())
+SketchConstraintLength_1 = Sketch_1.setLength(SketchLine_1.result(), "l")
+model.do()
+model.addParameter(Part_1_doc, "l", "300")
+model.end()
+
+# Check that after substitution of module document "l" by part document "l" the value is updated
+aValue = SketchConstraintLength_1.feature().real("ConstraintValue").value()
+assert(aValue == 300)
index cc2ad4b0f090eead63aa3bc8e3837ef7f4bb804c..8049c1385221194d527a75929cd4ecfdefa963e6 100644 (file)
@@ -89,7 +89,7 @@ void PartSet_CenterPrs::HilightSelected(const Handle(PrsMgr_PresentationManager3
 }
 
 void PartSet_CenterPrs::HilightOwnerWithColor(const Handle(PrsMgr_PresentationManager3d)& thePM,
-                                              const Handle(Graphic3d_HighlightStyle)& theStyle,
+                                              const Handle(Prs3d_Drawer)& theStyle,
                                               const Handle(SelectMgr_EntityOwner)& theOwner)
 {
   Handle( Prs3d_Presentation ) aHilightPrs = GetHilightPresentation( thePM );
index 8d60f6466880d2109e953892b368e5ec87c7d6bc..5e9c86b4fff926ab7591c0a4c1ebf9f9e4f001a1 100644 (file)
@@ -65,7 +65,7 @@ public:
   virtual void HilightSelected(const Handle(PrsMgr_PresentationManager3d)& PM,
                                const SelectMgr_SequenceOfOwner& Seq);
   virtual void HilightOwnerWithColor (const Handle(PrsMgr_PresentationManager3d)&,
-                                      const Handle(Graphic3d_HighlightStyle)&,
+                                      const Handle(Prs3d_Drawer)&,
                                       const Handle(SelectMgr_EntityOwner)&);
 
   DEFINE_STANDARD_RTTIEXT(PartSet_CenterPrs, AIS_Point)
index 7fc82d061616070bf05d2b5ae0ff41e6e5b5265b..1780f0d44f6299d88775afb1130ad0c0aea10cf0 100755 (executable)
@@ -118,7 +118,7 @@ bool PartSet_CustomPrs::displayPresentation(
     default:
       return isModified;
   }
-  NCollection_DataMap<TopoDS_Shape, Handle_AIS_InteractiveObject>& aShapeMap =
+  NCollection_DataMap<TopoDS_Shape, Handle(AIS_InteractiveObject)>& aShapeMap =
                                                                  anOperationPrs->shapesMap();
   PartSet_OperationPrs::fillShapeList(aFeatureShapes, myWorkshop, aShapeMap);
 
index 3de84434e2dd3942e87e923eca84b6aa602c5bf9..e6969c8090f22da7333de96f5207e298ad9bc09d 100644 (file)
@@ -27,6 +27,8 @@
 #include "PartSet_Tools.h"
 
 #include <ModelAPI_Tools.h>
+#include <ModelAPI_ResultField.h>
+#include <ModelAPI_ResultGroup.h>
 
 #include <ModuleBase_IWorkshop.h>
 #include <ModuleBase_ViewerPrs.h>
@@ -97,6 +99,12 @@ QList<std::shared_ptr<ModuleBase_ViewerPrs>> PartSet_ExternalPointsMgr::findCirc
       continue;
 
     ResultPtr aResObj = std::dynamic_pointer_cast<ModelAPI_Result>(aObj);
+
+    // Do not use Fields and groups in selection in sketcher
+    if ((aResObj->groupName() == ModelAPI_ResultField::group()) ||
+      (aResObj->groupName() == ModelAPI_ResultGroup::group()))
+      continue;
+
     if (aResObj.get()) {
       GeomShapePtr aShape = aResObj->shape();
       if (aShape.get()) {
index 70f6736b51f0c3c955c7b406c42ba577904ef242..9696ee41f3b99d35c0d5990c0fbdd9ec3a9e97c4 100755 (executable)
@@ -201,7 +201,7 @@ PartSet_Module::PartSet_Module(ModuleBase_IWorkshop* theWshop)
 
   Config_PropManager::registerProp("Visualization", "hidden_face_transparency",
                                    "Hidden faces transparency",
-                                   Config_Prop::Double,
+                                   Config_Prop::DblSpin,
                                    "0.8");
 }
 
@@ -906,15 +906,15 @@ ModuleBase_ModelWidget* PartSet_Module::activeWidget() const
 {
   ModuleBase_ModelWidget* anActiveWidget = 0;
 
-  anActiveWidget = mySketchReentrantMgr->internalActiveWidget();
-  if (!anActiveWidget) {
-    ModuleBase_Operation* aOperation = myWorkshop->currentOperation();
-    if (aOperation) {
-      ModuleBase_IPropertyPanel* aPanel = aOperation->propertyPanel();
-      anActiveWidget = aPanel ? aPanel->activeWidget() : 0;
-    }
-  }
-  return anActiveWidget;
+  ModuleBase_Operation* aOperation = myWorkshop->currentOperation();
+  if (!aOperation)
+    return anActiveWidget;
+
+  ModuleBase_IPropertyPanel* aPanel = aOperation->propertyPanel();
+  if (!aPanel)
+    return anActiveWidget;
+
+  return aPanel->activeWidget(true);
 }
 
 //******************************************************
index 839da3fa082c2d3a161d055e2527272ab2e100ee..d861c2b52a210dd4738a937476dc076a4c32752a 100644 (file)
@@ -44,7 +44,6 @@
 #include <ModuleBase_OperationDescription.h>
 #include "ModuleBase_ToolBox.h"
 #include "ModuleBase_ISelection.h"
-#include "ModuleBase_ISelectionActivate.h"
 
 #include <SketchPlugin_Feature.h>
 #include <SketchPlugin_Line.h>
@@ -71,7 +70,6 @@ PartSet_SketcherReentrantMgr::PartSet_SketcherReentrantMgr(ModuleBase_IWorkshop*
   myRestartingMode(RM_None),
   myIsFlagsBlocked(false),
   myIsInternalEditOperation(false),
-  myInternalActiveWidget(0),
   myNoMoreWidgetsAttribute("")
 {
 }
@@ -80,24 +78,6 @@ PartSet_SketcherReentrantMgr::~PartSet_SketcherReentrantMgr()
 {
 }
 
-ModuleBase_ModelWidget* PartSet_SketcherReentrantMgr::internalActiveWidget() const
-{
-  ModuleBase_ModelWidget* aWidget = 0;
-  if (!isActiveMgr())
-    return aWidget;
-
-  ModuleBase_Operation* anOperation = myWorkshop->currentOperation();
-  if (anOperation) {
-    ModuleBase_IPropertyPanel* aPanel = anOperation->propertyPanel();
-    if (aPanel) { // check for case when the operation is started but property panel is not filled
-      ModuleBase_ModelWidget* anActiveWidget = aPanel->activeWidget();
-      if (myIsInternalEditOperation && (!anActiveWidget || !anActiveWidget->isViewerSelector()))
-        aWidget = myInternalActiveWidget;
-    }
-  }
-  return aWidget;
-}
-
 bool PartSet_SketcherReentrantMgr::isInternalEditActive() const
 {
   return myIsInternalEditOperation;
@@ -670,7 +650,7 @@ void PartSet_SketcherReentrantMgr::createInternalFeature()
     ModuleBase_ModelWidget* aFirstWidget = ModuleBase_IPropertyPanel::findFirstAcceptingValueWidget
                                                                                         (aWidgets);
     if (aFirstWidget)
-      myInternalActiveWidget = aFirstWidget;
+      setInternalActiveWidget(aFirstWidget);
   }
 }
 
@@ -680,8 +660,7 @@ void PartSet_SketcherReentrantMgr::deleteInternalFeature()
   std::cout << "PartSet_SketcherReentrantMgr::deleteInternalFeature: "
             << myInternalFeature->data()->name() << std::endl;
 #endif
-  if (myInternalActiveWidget)
-    myInternalActiveWidget = 0;
+  setInternalActiveWidget(0);
   delete myInternalWidget;
   myInternalWidget = 0;
 
@@ -830,3 +809,16 @@ PartSet_Module* PartSet_SketcherReentrantMgr::module() const
 {
   return dynamic_cast<PartSet_Module*>(myWorkshop->module());
 }
+
+void PartSet_SketcherReentrantMgr::setInternalActiveWidget(ModuleBase_ModelWidget* theWidget)
+{
+  ModuleBase_OperationFeature* aFOperation = dynamic_cast<ModuleBase_OperationFeature*>
+    (myWorkshop->currentOperation());
+  if (aFOperation)
+  {
+    XGUI_PropertyPanel* aPropertyPanel = dynamic_cast<XGUI_PropertyPanel*>
+      (aFOperation->propertyPanel());
+    if (aPropertyPanel)
+      aPropertyPanel->setInternalActiveWidget(theWidget);
+  }
+}
index 073b534e8437138f85acb0033f3ee1a4ca9ed9da..275b59457c88b7a2a5c8d41f03719247df446e4c 100644 (file)
@@ -74,10 +74,6 @@ public:
   virtual ~PartSet_SketcherReentrantMgr();
 
 public:
-  /// Returns a first widget of the current opeation if the internal edit operation is active
-  /// or return null. If the current widget of the operation is a viewer selector, it returns null.
-  ModuleBase_ModelWidget* internalActiveWidget() const;
-
   /// Return true if the current edit operation is an internal
   bool isInternalEditActive() const;
 
@@ -214,6 +210,8 @@ private:
   /// Returns the workshop module
   PartSet_Module* module() const;
 
+  void setInternalActiveWidget(ModuleBase_ModelWidget* theWidget);
+
 private:
   ModuleBase_IWorkshop* myWorkshop; /// the workshop
 
@@ -224,7 +222,6 @@ private:
   FeaturePtr myPreviousFeature; /// feature of the previous operation, which is restarted
   FeaturePtr myInternalFeature;
   QWidget* myInternalWidget;
-  ModuleBase_ModelWidget* myInternalActiveWidget;
   std::string myNoMoreWidgetsAttribute;
 
   std::shared_ptr<Events_Message> myReentrantMessage; /// message obtained by operation restart
index 486138917e31a59fcf6655124d8b1990259f2fd7..9772899836f3d5b4d8e3b3bdf7a767f4d707427e 100644 (file)
@@ -92,8 +92,8 @@ void PartSet_WidgetFeaturePointSelector::updateSelectionModesAndFilters(bool toA
   Handle(AIS_InteractiveContext) aContext =
                             XGUI_Tools::workshop(myWorkshop)->viewer()->AISContext();
   Quantity_Color aColor;
-  Handle(Graphic3d_HighlightStyle) aHStyle = aContext->HighlightStyle();
-  Handle(Graphic3d_HighlightStyle) aSStyle = aContext->SelectionStyle();
+  Handle(Prs3d_Drawer) aHStyle = aContext->HighlightStyle();
+  Handle(Prs3d_Drawer) aSStyle = aContext->SelectionStyle();
   if (toActivate) {
     std::vector<int> aColors;
     aColors = Config_PropManager::color("Visualization", "sketch_entity_color");
index 8782a90acd49dfcecd4be4b191d7e037bf019a00..9af640db2587e46b0a5c021e4e1fb6771aea32e0 100644 (file)
@@ -343,7 +343,7 @@ bool PartSet_WidgetPoint2D::setPoint(double theX, double theY)
 bool PartSet_WidgetPoint2D::storeValueCustom()
 {
   std::shared_ptr<ModelAPI_Data> aData = myFeature->data();
-  if (!aData) // can be on abort of sketcher element
+  if (!aData || !aData->isValid()) // can be on abort of sketcher element
     return false;
   AttributePoint2DPtr aPoint = std::dynamic_pointer_cast<GeomDataAPI_Point2D>(
       aData->attribute(attributeID()));
index aad9beb92d98a9730d5f7fa0dc174bcd15cc5abb..25e45babf3944046ff05b24c50499ff5f7d204d6 100644 (file)
@@ -170,7 +170,7 @@ def body_3():
     sketch.setRadius(arc, r)
 
     # Binding
-    bottom_e = sketch.addLine("Boolean_1_1/Modified_Face_8&Boolean_1_1/Modified_Face_5")
+    bottom_e = sketch.addLine("Boolean_1_1/Modified_Face_7&Extrusion_2_1/To_Face_1")
     sketch.setCoincident(bottom_e, bottom.startPoint())
     sketch.setCoincident(bottom_e.startPoint(), bottom.endPoint())
 
@@ -192,11 +192,11 @@ def body_4():
     left, diagonal, bottom = model.addPolygon(sketch, *geom_points)
 
     # Binding
-    bottom_e = sketch.addLine("Boolean_2_1/Modified_Face_3&Boolean_2_1/Modified_Face_4")
+    bottom_e = sketch.addLine("Boolean_2_1/Modified_Face_2&Boolean_2_1/Modified_Face_4")
     sketch.setCoincident(bottom_e.endPoint(), bottom.startPoint())
     sketch.setCoincident(bottom_e.startPoint(), left.startPoint())
 
-    left_e = sketch.addLine("Boolean_2_1/Modified_Face_6&Boolean_2_1/Modified_Face_7")
+    left_e = sketch.addLine("Boolean_2_1/Modified_Face_5&Extrusion_3_1/Generated_Face_2")
     sketch.setCoincident(left_e.startPoint(), left.endPoint())
 
     model.do()  #!!!
index 789bb9508f578700d237ec481fc2622aaca60451..2e5f42bc7c99c9095a1725affcc1556a558efc0a 100644 (file)
@@ -237,6 +237,7 @@ ADD_UNIT_TESTS(TestSketchPointLine.py
                Test2440.py
                Test2157.py
                Test2157_2.py
+               Test2481.py
 )
 
 if(${SKETCHER_CHANGE_RADIUS_WHEN_MOVE})
index 519bb30c6795ddacb61c68a0574658fd3caad595..3373df8c6df0504ea4a39d8531c6cb8e5c534a10 100644 (file)
@@ -565,7 +565,7 @@ double calculateFilletRadius(FeaturePtr theFilletFeatures[2])
     if (anEdge)
       aLengths[i] = anEdge->length();
   }
-  return std::min(aLengths[0], aLengths[1]) / 6.0;
+  return (aLengths[0] < aLengths[1] ? aLengths[0] : aLengths[1]) / 6.0;
 }
 
 std::set<FeaturePtr> findFeaturesToRemove(const FeaturePtr theFeature,
index 8016c335395c701a1275e50b496c62415f0f5267..b6a09bde6af0dcd820b36d2ff88b344ef7856607 100644 (file)
@@ -436,14 +436,11 @@ std::string SketchPlugin_MacroArc::processEvent(const std::shared_ptr<Events_Mes
               aRefAttr->setAttr(anAttribute);
             }
             else if (anObject.get()) {
-              // if presentation of previous reentrant macro arc is used, the object is invalid,
-              // we should use result of previous feature of the message(Arc)
-              if (!anObject->data()->isValid()) {
-                FeaturePtr aCreatedFeature = aReentrantMessage->createdFeature();
-                if (aCreatedFeature.get())
-                  anObject = aCreatedFeature->lastResult();
-              }
-              aRefAttr->setObject(anObject);
+              // if attribute is NULL, only object is defined, it should be processed outside
+              // the feature because it might be an external feature, that will be
+              // removed/created again after restart operation
+              // #2468 - Crash when sketching circles successively on a repetition
+              aFilledAttributeName = ARC_TYPE();
             }
           }
         }
index b584a004eb5afae582a801a631b3771df3973b30..3b8049b5777f16462b2aff6f7c81c063a8ff8ae9 100644 (file)
@@ -168,13 +168,11 @@ std::string SketchPlugin_MacroCircle::processEvent(
           aRefAttr->setAttr(anAttribute);
         }
         else if (anObject.get()) {
-          // if presentation of previous reentrant macro arc is used, the object is invalid,
-          // we should use result of previous feature of the message(Arc)
-          if (!anObject->data()->isValid()) {
-            FeaturePtr aCreatedFeature = aReentrantMessage->createdFeature();
-            anObject = aCreatedFeature->lastResult();
-          }
-          aRefAttr->setObject(anObject);
+          // if attribute is NULL, only object is defined, it should be processed outside
+          // the feature because it might be an external feature, that will be
+          // removed/created again after restart operation
+          // #2468 - Crash when sketching circles successively on a repetition
+          aFilledAttributeName = CIRCLE_TYPE();
         }
       }
     }
index 3181dd460568fbba944963df8f1977325c95e539..aaf1402ed22edbaf8b10c74c7759cc21d29227fc 100644 (file)
@@ -182,12 +182,12 @@ SketchPlugin_Plugin::SketchPlugin_Plugin()
   aStream << SketcherPrs_Tools::getDefaultTextHeight();
 
   Config_PropManager::registerProp(SKETCH_TAB_NAME, "dimension_value_size",
-    "Dimension value size", Config_Prop::Integer, aStream.str());
+    "Dimension value size", Config_Prop::IntSpin, aStream.str());
   aStream.str("");
   aStream.clear();
   aStream << SketcherPrs_Tools::getDefaultArrowSize();
   Config_PropManager::registerProp(SKETCH_TAB_NAME, "dimension_arrow_size",
-    "Dimension arrow size", Config_Prop::Integer, aStream.str());
+    "Dimension arrow size", Config_Prop::IntSpin, aStream.str());
 }
 
 FeaturePtr SketchPlugin_Plugin::createFeature(std::string theFeatureID)
index 5ac4b994b0401f5f55ec99b3f8661f5cb2cab3f4..d9e0cc2527b5b0814f4d5ab6cc42468d4ebade37 100644 (file)
@@ -371,7 +371,7 @@ void SketchPlugin_Split::execute()
       //}
       //aBaseShape = aShape;
 
-#ifdef DEBUG_TRIM_METHODS
+#ifdef DEBUG_SPLIT
       if (!aSelectedShape.get())
         std::cout << "Set empty selected object" << std::endl;
       else
@@ -423,8 +423,8 @@ void SketchPlugin_Split::execute()
 
 std::string SketchPlugin_Split::processEvent(const std::shared_ptr<Events_Message>& theMessage)
 {
-#ifdef DEBUG_TRIM_METHODS
-  std::cout << "SketchPlugin_Trim::processEvent:" << data()->name() << std::endl;
+#ifdef DEBUG_SPLIT
+  std::cout << "SketchPlugin_Split::processEvent:" << data()->name() << std::endl;
 #endif
   std::string aFilledAttributeName;
 
@@ -462,13 +462,23 @@ std::string SketchPlugin_Split::processEvent(const std::shared_ptr<Events_Messag
         Events_Loop::loop()->flush(Events_Loop::eventByName(EVENT_OBJECT_UPDATED));
 
         GeomShapePtr aSelectedShape = getSubShape(SELECTED_OBJECT(), SELECTED_POINT());
-  #ifdef DEBUG_TRIM_METHODS
+        if (aSelectedShape.get()) {
+          aFilledAttributeName = SELECTED_OBJECT();
+        }
+        else {
+          // #2480 - sub shape is not initialized when split sketch
+          // If restarted operation use some selection on the shape that is split and
+          // result selectiona can not participate in new split(checked shape above is null),
+          // reset filled values of selection set in this method above
+          aRefSelectedAttr->setValue(ResultPtr());
+          aRefPreviewAttr->setValue(ResultPtr());
+        }
+  #ifdef DEBUG_SPLIT
         if (!aSelectedShape.get())
           std::cout << "Set empty selected object" << std::endl;
         else
           std::cout << "Set shape with ShapeType: " << aSelectedShape->shapeTypeStr() << std::endl;
   #endif
-        aFilledAttributeName = SELECTED_OBJECT();
       }
     }
   }
@@ -537,8 +547,8 @@ AISObjectPtr SketchPlugin_Split::getAISObject(AISObjectPtr thePrevious)
     return anAIS;
   }
   return AISObjectPtr();*/
-#ifdef DEBUG_TRIM_METHODS
-  std::cout << "SketchPlugin_Trim::getAISObject: " << data()->name() << std::endl;
+#ifdef DEBUG_SPLIT
+  std::cout << "SketchPlugin_Split::getAISObject: " << data()->name() << std::endl;
 #endif
 
   AISObjectPtr anAIS = thePrevious;
index fb6401e1181a09efbb86d511e2f2b7db8a36bcac..6fc020ddb0143117f5ab56531494b7d12bb6a679 100644 (file)
@@ -191,11 +191,14 @@ public:
     std::list< std::set<AttributePoint2DPtr> >::iterator aFound1 = find(thePoint1);
     std::list< std::set<AttributePoint2DPtr> >::iterator aFound2 = find(thePoint2);
     if (aFound1 == myCoincidentPoints.end()) {
-      std::set<AttributePoint2DPtr> aNewSet;
-      aNewSet.insert(thePoint1);
-      if (thePoint2)
-        aNewSet.insert(thePoint2);
-      myCoincidentPoints.push_back(aNewSet);
+      if (aFound2 == myCoincidentPoints.end()) {
+        std::set<AttributePoint2DPtr> aNewSet;
+        aNewSet.insert(thePoint1);
+        if (thePoint2)
+          aNewSet.insert(thePoint2);
+        myCoincidentPoints.push_back(aNewSet);
+      } else
+        aFound2->insert(thePoint1);
     } else if (aFound2 == myCoincidentPoints.end()) {
       if (thePoint2)
         aFound1->insert(thePoint2);
diff --git a/src/SketchPlugin/Test/Test2481.py b/src/SketchPlugin/Test/Test2481.py
new file mode 100644 (file)
index 0000000..8348337
--- /dev/null
@@ -0,0 +1,60 @@
+## Copyright (C) 2018-20xx  CEA/DEN, EDF R&D
+##
+## This library is free software; you can redistribute it and/or
+## modify it under the terms of the GNU Lesser General Public
+## License as published by the Free Software Foundation; either
+## version 2.1 of the License, or (at your option) any later version.
+##
+## This library is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+## Lesser General Public License for more details.
+##
+## You should have received a copy of the GNU Lesser General Public
+## License along with this library; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+##
+## See http:##www.salome-platform.org/ or
+## email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
+##
+
+"""
+    Test2481.py
+    Test case for issue #2481 "Application error when create fillet"
+"""
+
+from SketchAPI import *
+
+from salome.shaper import model
+
+model.begin()
+partSet = model.moduleDocument()
+Part_1 = model.addPart(partSet)
+Part_1_doc = Part_1.document()
+Sketch_1 = model.addSketch(Part_1_doc, model.defaultPlane("XOY"))
+SketchLine_1 = Sketch_1.addLine(70, 0, 0, 0)
+SketchLine_2 = Sketch_1.addLine(0, 0, 0, 45)
+SketchLine_3 = Sketch_1.addLine(0, 45, 70, 45)
+SketchLine_4 = Sketch_1.addLine(70, 45, 70, 0)
+SketchConstraintCoincidence_1 = Sketch_1.setCoincident(SketchLine_4.endPoint(), SketchLine_1.startPoint())
+SketchConstraintCoincidence_2 = Sketch_1.setCoincident(SketchLine_1.endPoint(), SketchLine_2.startPoint())
+SketchConstraintCoincidence_3 = Sketch_1.setCoincident(SketchLine_2.endPoint(), SketchLine_3.startPoint())
+SketchConstraintCoincidence_4 = Sketch_1.setCoincident(SketchLine_3.endPoint(), SketchLine_4.startPoint())
+SketchConstraintHorizontal_1 = Sketch_1.setHorizontal(SketchLine_1.result())
+SketchConstraintVertical_1 = Sketch_1.setVertical(SketchLine_2.result())
+SketchConstraintHorizontal_2 = Sketch_1.setHorizontal(SketchLine_3.result())
+SketchConstraintVertical_2 = Sketch_1.setVertical(SketchLine_4.result())
+SketchProjection_1 = Sketch_1.addProjection(model.selection("VERTEX", "PartSet/Origin"), False)
+SketchPoint_1 = SketchProjection_1.createdFeature()
+SketchConstraintCoincidence_5 = Sketch_1.setCoincident(SketchAPI_Point(SketchPoint_1).coordinates(), SketchLine_2.startPoint())
+model.do()
+
+SketchFillet_1 = Sketch_1.setFillet(SketchAPI_Point(SketchPoint_1).coordinates())
+model.do()
+
+assert(Sketch_1.feature().error() == "")
+assert(Sketch_1.solverError().value() == "")
+
+model.end()
+
+assert(model.checkPythonDump())
index c8f79b464d7f1b696f4b4a56cf0b1e8fc69688cc..79014c40b8dbf2181b61598483fdea7a84ea1e2a 100644 (file)
@@ -43,7 +43,7 @@
 /// \param theDimAspect an aspect to be changed
 /// \param theDimValue an arrow value
 /// \param theTextSize an arrow value
-extern void updateArrows(Handle_Prs3d_DimensionAspect theDimAspect,
+extern void updateArrows(Handle(Prs3d_DimensionAspect) theDimAspect,
   double theDimValue, double theTextSize, SketcherPrs_Tools::LocationType theLocationType);
 
 #define PI 3.1415926535897932
index 8d7ea1581f67f9e353e856bedbe4a529db9f3f26..fc2f3e36aa163cd5b35d2dc28d8efb8f4d74b447 100644 (file)
@@ -139,9 +139,6 @@ void SketcherPrs_Coincident::SetColor(const Quantity_NameOfColor aCol)
 void SketcherPrs_Coincident::SetColor(const Quantity_Color &aCol)
 {
   hasOwnColor=Standard_True;
-#ifndef USE_OCCT_720
-  myOwnColor=aCol;
-#endif
 }
 
 void SketcherPrs_Coincident::SetCustomColor(const std::vector<int>& theColor)
index edf7140a829053237f374d8412aea5152a3ba335..49892641961967dae0d903f327d14dd20e6d9e15 100644 (file)
@@ -194,6 +194,20 @@ gp_Vec getVector(ObjectPtr theShape, GeomDirPtr theDir, gp_Pnt theP)
       double aParam = anExtr.LowerDistanceParameter();
       gp_Pnt aP;
       aCurv->D1(aParam, aP, aVec);
+      // 2458: check correct orientation of the vector
+      if (aVec.SquareMagnitude() > Precision::Confusion()) {
+        std::shared_ptr<GeomAPI_Edge> aCircEdge(new GeomAPI_Edge(aShape));
+        double aFirstParam, aLastParam;
+        aCircEdge->getRange(aFirstParam, aLastParam);
+        // if parameter is near the LastParam, make the vector go inside (reverse)
+        double aDelta = aLastParam - aParam;
+        while (aDelta < -Precision::Confusion())
+          aDelta += 2. * M_PI;
+        while (aDelta > 2. * M_PI - Precision::Confusion())
+          aDelta -= 2. * M_PI;
+        if (fabs(aDelta) < Precision::Confusion())
+          aVec.Reverse();
+      }
     } else {
       GeomPointPtr aPnt1 = aCurve->getPoint(aCurve->endParam());
       GeomPointPtr aPnt2 = aCurve->getPoint(aCurve->startParam());
index 8fa795e90b4e94c4d29122700ac908c701c1476a..0219e2f37f9b9b2c0ec3d2c26f8c30056f4dbc87 100644 (file)
@@ -44,7 +44,7 @@ extern Handle(Prs3d_DimensionAspect) createDimensionAspect();
 /// \param theDimAspect an aspect to be changed
 /// \param theDimValue an arrow value
 /// \param theTextSize an arrow value
-extern void updateArrows(Handle_Prs3d_DimensionAspect theDimAspect,
+extern void updateArrows(Handle(Prs3d_DimensionAspect) theDimAspect,
   double theDimValue, double theTextSize, SketcherPrs_Tools::LocationType theLocationType);
 
 
index 3f38196864a251e3d999456009772fc5a64bd714..a2e51cbd4fb848d73e2f56d655f6c80571775692 100644 (file)
@@ -99,7 +99,7 @@ public:
 
     // Update selection position only if there is no selected object
     // because it can corrupt selection of other objects
-    if ((myContext->NbCurrents() == 0) && (myContext->NbSelected() == 0))  {
+    if (myContext->NbSelected() == 0)  {
       myContext->MainSelector()->RebuildSensitivesTree(myObj);
       myContext->MainSelector()->RebuildObjectsTree (false);
     }
@@ -243,7 +243,7 @@ void SketcherPrs_SymbolPrs::HilightSelected(const Handle(PrsMgr_PresentationMana
 //*********************************************************************************
 void SketcherPrs_SymbolPrs::HilightOwnerWithColor(
                                   const Handle(PrsMgr_PresentationManager3d)& thePM,
-                                  const Handle(Graphic3d_HighlightStyle)& theStyle,
+                                  const Handle(Prs3d_Drawer)& theStyle,
                                   const Handle(SelectMgr_EntityOwner)& theOwner)
 {
   thePM->Color(this, theStyle);
index 5d28c1dd1a408e7ca059954a817ce4d30ab9753c..669f7a55523ef4cfb5365d56fa8c5e078bd14b52 100644 (file)
@@ -69,7 +69,7 @@ public:
   //! this selectable object  ( for fast presentation draw )
   Standard_EXPORT virtual void HilightOwnerWithColor(
     const Handle(PrsMgr_PresentationManager3d)& thePM,
-    const Handle(Graphic3d_HighlightStyle)& theStyle,
+    const Handle(Prs3d_Drawer)& theStyle,
     const Handle(SelectMgr_EntityOwner)& theOwner);
 
   /// Returns sketcher plane
index b0dec532345a4f86c6e01b08a53a488e3d879609..6c2f216e38dc4f4b9f61017dab69fbb0c9b61295 100644 (file)
@@ -45,6 +45,7 @@
 #include <ModuleBase_ResultPrs.h>
 #include <ModuleBase_Tools.h>
 #include <ModuleBase_ViewerPrs.h>
+#include <ModuleBase_IViewer.h>
 
 #include <GeomAPI_Shape.h>
 #include <GeomAPI_IPresentable.h>
@@ -662,6 +663,7 @@ Handle(AIS_InteractiveContext) XGUI_Displayer::AISContext() const
       selectionActivate()->deactivateTrihedron(true);
     aContext->DefaultDrawer()->VIsoAspect()->SetNumber(0);
     aContext->DefaultDrawer()->UIsoAspect()->SetNumber(0);
+    ModuleBase_IViewer::DefaultHighlightDrawer = aContext->HighlightStyle();
   }
   return aContext;
 }
index 3eae6f22de01fa2900222cede3f07a047f2b41dd..03b605612cc9598d1151072593bde33a14289d7a 100644 (file)
@@ -550,6 +550,8 @@ void XGUI_OperationMgr::onBeforeOperationAborted()
 void XGUI_OperationMgr::onOperationAborted()
 {
   ModuleBase_Operation* aSenderOperation = dynamic_cast<ModuleBase_Operation*>(sender());
+  XGUI_Workshop* aWorkshop = XGUI_Tools::workshop(myWorkshop);
+  aWorkshop->setStatusBarMessage("");
   emit operationAborted(aSenderOperation);
 }
 
index 33288b465827441990ea5b4fd9c9e87c22c753cc..0ea8af4c0ff6df79df8ed9ca836e4eb447cb5ea4 100755 (executable)
@@ -36,6 +36,7 @@
 #include <ModuleBase_WidgetFactory.h>
 #include <ModuleBase_OperationDescription.h>
 #include <ModuleBase_Events.h>
+#include <ModuleBase_IModule.h>
 #include <ModuleBase_IWorkshop.h>
 
 #include <Events_Loop.h>
@@ -66,6 +67,7 @@ XGUI_PropertyPanel::XGUI_PropertyPanel(QWidget* theParent, XGUI_OperationMgr* th
     : ModuleBase_IPropertyPanel(theParent),
     myActiveWidget(NULL),
     myPreselectionWidget(NULL),
+    myInternalActiveWidget(NULL),
     myPanelPage(NULL),
     myOperationMgr(theMgr)
 {
@@ -230,6 +232,14 @@ void XGUI_PropertyPanel::createContentPanel(FeaturePtr theFeature)
     findButton(PROP_PANEL_OK_PLUS)->setVisible(aFeatureInfo->isApplyContinue());
 }
 
+ModuleBase_ModelWidget* XGUI_PropertyPanel::activeWidget(const bool isUseCustomWidget) const
+{
+  if (isUseCustomWidget && myInternalActiveWidget)
+    return myInternalActiveWidget;
+
+  return myActiveWidget;
+}
+
 void XGUI_PropertyPanel::activateNextWidget(ModuleBase_ModelWidget* theWidget)
 {
   // it is possible that the property panel widgets have not been visualized
@@ -574,6 +584,25 @@ void XGUI_PropertyPanel::onAcceptData()
   }
 }
 
+void XGUI_PropertyPanel::setInternalActiveWidget(ModuleBase_ModelWidget* theWidget)
+{
+  if (theWidget)
+  {
+    myInternalActiveWidget = theWidget;
+    emit propertyPanelActivated();
+  }
+  else
+  {
+    if (myInternalActiveWidget)
+    {
+      delete myInternalActiveWidget;
+      myInternalActiveWidget = 0;
+    }
+    emit propertyPanelDeactivated();
+  }
+  myOperationMgr->workshop()->selectionActivate()->updateSelectionModes();
+  myOperationMgr->workshop()->selectionActivate()->updateSelectionFilters();
+}
 
 ModuleBase_ModelWidget* XGUI_PropertyPanel::preselectionWidget() const
 {
index 9a665ba482b157fa68019e319e88c7a4f32c12a9..62b87e9be11736b34cba701cf84a7a483166bb26 100644 (file)
@@ -87,8 +87,11 @@ Q_OBJECT
   /// Removes all widgets in the widget area of the property panel
   virtual void cleanContent();
 
-  /// Returns currently active widget
-  virtual ModuleBase_ModelWidget* activeWidget() const { return myActiveWidget; }
+  /// Returns currently active widget. This is a widget from internal container of widgets
+  /// (myWidgets) activated/deactivated by focus in property panel. If parameter is true,
+  /// the method finds firstly the custom widget, after the direct active widget.
+  /// \param isUseCustomWidget boolean state if the custom widget might be a result
+  virtual ModuleBase_ModelWidget* activeWidget(const bool isUseCustomWidget = false) const;
 
   /// Activate the next widget in the property panel
   /// \param theWidget a widget. The next widget should be activated
@@ -136,6 +139,12 @@ Q_OBJECT
   /// The method is called on accepting of operation
   virtual void onAcceptData();
 
+  /// Set internal active widget, that can be returned as active widget and participate in active
+  /// selection filters/modes in application. It emits signal about property panel activation or
+  /// deactivation and updates selection filters/modes accordingly.
+  /// \param theWidget a widget control to store as internal active widget
+  void setInternalActiveWidget(ModuleBase_ModelWidget* theWidget);
+
 public slots:
   /// \brief Update all widgets in property panel with values from the given feature
   /// \param theFeature a Feature to update values in widgets
@@ -203,6 +212,8 @@ private:
   ModuleBase_ModelWidget* myActiveWidget;
   /// Currently widget processed by preselection
   ModuleBase_ModelWidget* myPreselectionWidget;
+  /// Some custom widget set from outside
+  ModuleBase_ModelWidget* myInternalActiveWidget;
 
   XGUI_OperationMgr* myOperationMgr;
 };
index 5717d3580712ca023d7327073521a17268865c45..8d9a0a24f82c5e99087e69e60dd9b4acffe1001e 100644 (file)
@@ -78,7 +78,7 @@ class XGUI_EXPORT XGUI_Selection : public ModuleBase_ISelection
   /// It depends on the modes, in which the object is activated in the context
   /// \param theObject an object
   /// \param theOwners a map of entity owners
-  void entityOwners(const Handle_AIS_InteractiveObject& theObject,
+  void entityOwners(const Handle(AIS_InteractiveObject)& theObject,
                     SelectMgr_IndexedMapOfOwner& theOwners) const;
 
   /// Return the IO from the viewer presentation.
index f8a1aaa886926bfa3c60f26475e4899bd70a9653..3c6fc2f7191ea1a578c8113b588cb4374cbb7ec1 100644 (file)
 //#define DEBUG_ACTIVATE_AIS
 //#define DEBUG_DEACTIVATE_AIS
 
+#ifdef TINSPECTOR
+#include <inspector/VInspectorAPI_CallBack.hxx>
+#endif
+
 #define CLEAR_OUTDATED_SELECTION_BEFORE_REDISPLAY
 
 //**************************************************************
@@ -333,11 +337,19 @@ void XGUI_SelectionActivate::activateAIS(const Handle(AIS_InteractiveObject)& th
   }
   if (!aContext.IsNull()) {
     if (myWorkshop->module()) {
-      int aMode = (theMode > 8)? theMode : AIS_Shape::SelectionType(theMode);
+      // the code is obsolete, used in additional check before activate, it was removed
+      //int aMode = (theMode > 8)? theMode : AIS_Shape::SelectionType(theMode);
       aContext->Activate(theIO, theMode, false);
-    } else
+#ifdef TINSPECTOR
+      if (getDisplayer()->getCallBack()) getDisplayer()->getCallBack()->Activate(theIO, theMode);
+#endif
+    }
+    else {
       aContext->Activate(theIO, theMode, false);
-
+#ifdef TINSPECTOR
+      if (getDisplayer()->getCallBack()) getDisplayer()->getCallBack()->Activate(theIO, theMode);
+#endif
+    }
     // the fix from VPA for more suitable selection of sketcher lines
     if (theIO->Width() > 1) {
       double aPrecision = theIO->Width() + 2;
index 313366bcc66364345b3ea55eec4e846f490db723..34cbc8b5fc5d17ea676a6141d6f542ecb433bc27 100755 (executable)
@@ -1657,7 +1657,7 @@ bool XGUI_Workshop::prepareForDisplay(const std::set<ObjectPtr>& theObjects) con
   int anAnswer = QMessageBox::question(
         desktop(), tr("Show object"),
         tr("'%1'\n are hidden by %2:\nRemove objects from the panel to be displayed?")
-        .arg(aHiddenObjectNames.join(' ,')).arg(facesPanel()->windowTitle()),
+        .arg(aHiddenObjectNames.join(", ")).arg(facesPanel()->windowTitle()),
         QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
 
   bool aToBeDisplayed = anAnswer == QMessageBox::Yes;
index 0f3e3e9e2158dccd1bf4e610aabb06661d4f6d90..a78c57eb1cfd860a586f672e52a1cef8b66a3296 100644 (file)
@@ -289,12 +289,13 @@ model.testNbSubShapes(Translation_42, GeomAPI_Shape.FACE, [18])
 model.testHaveNamingFaces(Translation_42, model, Part_1_doc)
 
 # Translation 43
-model.testNbResults(Translation_43, 1)
-model.testNbSubResults(Translation_43, [3])
-model.testNbSubShapes(Translation_43, GeomAPI_Shape.COMPSOLID, [1])
-model.testNbSubShapes(Translation_43, GeomAPI_Shape.SOLID, [3])
-model.testNbSubShapes(Translation_43, GeomAPI_Shape.FACE, [18])
-model.testHaveNamingFaces(Translation_43, model, Part_1_doc)
+# It is concealed by Partition_9
+#model.testNbResults(Translation_43, 1)
+#model.testNbSubResults(Translation_43, [3])
+#model.testNbSubShapes(Translation_43, GeomAPI_Shape.COMPSOLID, [1])
+#model.testNbSubShapes(Translation_43, GeomAPI_Shape.SOLID, [3])
+#model.testNbSubShapes(Translation_43, GeomAPI_Shape.FACE, [18])
+#model.testHaveNamingFaces(Translation_43, model, Part_1_doc)
 
 # Translation 44
 model.testNbResults(Translation_44, 1)
index 88870fb7f14d69c4f42147616e996007de0e914e..91fe1738c2ceed41b4182f93979708f9002df369 100644 (file)
@@ -194,14 +194,14 @@ SketchConstraintCoincidence_41 = Sketch_6.setCoincident(SketchLine_14.endPoint()
 SketchConstraintCoincidence_41.setName("SketchConstraintCoincidence_42")
 model.do()
 ExtrusionCut_2 = model.addExtrusionCut(Part_1_doc, [model.selection("WIRE", "Sketch_6/Wire-SketchArc_10_2f-SketchLine_16r-SketchLine_18f-SketchLine_19r")], model.selection(), 0, 9, [model.selection("SOLID", "ExtrusionFuse_3_1")])
-Sketch_7 = model.addSketch(Part_1_doc, model.selection("FACE", "ExtrusionCut_2_1/Modfied_4"))
+Sketch_7 = model.addSketch(Part_1_doc, model.selection("FACE", "ExtrusionCut_2_1/From_Face_1"))
 SketchCircle_4 = Sketch_7.addCircle(45, 35, 5)
-SketchLine_20 = Sketch_7.addLine(model.selection("EDGE", "ExtrusionCut_2_1/Modfied_2&ExtrusionCut_2_1/Modfied_4"))
+SketchLine_20 = Sketch_7.addLine(model.selection("EDGE", "ExtrusionCut_2_1/Modfied_2&ExtrusionCut_2_1/From_Face_1"))
 SketchConstraintDistance_9 = Sketch_7.setDistance(SketchCircle_4.center(), SketchLine_20.result(), 10)
 SketchConstraintRadius_6 = Sketch_7.setRadius(SketchCircle_4.results()[1], "10/2")
 SketchLine_21 = Sketch_7.addLine(35, 35, 45, 35)
 SketchLine_21.setAuxiliary(True)
-SketchPoint_5 = Sketch_7.addPoint(model.selection("VERTEX", "ExtrusionCut_2_1/Modfied_5&ExtrusionCut_2_1/Modfied_6&ExtrusionCut_2_1/Modfied_4"))
+SketchPoint_5 = Sketch_7.addPoint(model.selection("VERTEX", "ExtrusionCut_2_1/Generated_Face_1&ExtrusionCut_2_1/Generated_Face_4&ExtrusionCut_2_1/From_Face_1"))
 SketchConstraintCoincidence_42 = Sketch_7.setCoincident(SketchLine_21.startPoint(), SketchPoint_5.result())
 SketchConstraintCoincidence_42.setName("SketchConstraintCoincidence_43")
 SketchConstraintCoincidence_43 = Sketch_7.setCoincident(SketchCircle_4.center(), SketchLine_21.endPoint())
index 2bbe3fa8e6075e09c5bb15e1d61b25f2415903e2..f4dad732873f43c5e917f3599c56d040ad4e209b 100644 (file)
@@ -87,7 +87,7 @@ SketchPoint_2 = Sketch_6.addPoint(model.selection("VERTEX", "PartSet/Origin"))
 SketchConstraintCoincidence_9 = Sketch_6.setCoincident(SketchPoint_2.coordinates(), SketchCircle_6.center())
 SketchConstraintCoincidence_9.setName("SketchConstraintCoincidence_17")
 ExtrusionCut_1.setNestedSketch(Sketch_6)
-Sketch_7 = model.addSketch(Part_1_doc, model.selection("FACE", "ExtrusionCut_1_1/Modfied_1"))
+Sketch_7 = model.addSketch(Part_1_doc, model.selection("FACE", "ExtrusionCut_1_1/Modfied_2"))
 SketchCircle_7 = Sketch_7.addCircle(0, -85, 66)
 SketchLine_6 = Sketch_7.addLine(model.selection("EDGE", "PartSet/OY"))
 SketchConstraintCoincidence_10 = Sketch_7.setCoincident(SketchCircle_7.center(), SketchLine_6.result())
@@ -96,8 +96,8 @@ SketchConstraintDistance_1 = Sketch_7.setDistance(SketchCircle_7.center(), Sketc
 SketchMultiRotation_1 = Sketch_7.addRotation([SketchCircle_7.results()[1]], SketchLine_6.startPoint(), 120, 3)
 [SketchCircle_8, SketchCircle_9] = SketchMultiRotation_1.rotated()
 model.do()
-ExtrusionCut_2 = model.addExtrusionCut(Part_1_doc, [model.selection("COMPOUND", "Sketch_7")], model.selection(), model.selection("FACE", "ExtrusionCut_1_1/Modfied_2"), 0, model.selection(), 0, [model.selection("SOLID", "ExtrusionCut_1_1")])
-Sketch_8 = model.addSketch(Part_1_doc, model.selection("FACE", "ExtrusionCut_2_1/Modfied_8"))
+ExtrusionCut_2 = model.addExtrusionCut(Part_1_doc, [model.selection("COMPOUND", "Sketch_7")], model.selection(), model.selection("FACE", "ExtrusionCut_1_1/Modfied_1"), 0, model.selection(), 0, [model.selection("SOLID", "ExtrusionCut_1_1")])
+Sketch_8 = model.addSketch(Part_1_doc, model.selection("FACE", "ExtrusionCut_2_1/Modfied_1"))
 SketchLine_7 = Sketch_8.addLine(-2.320957096353877e-016, 11.00000001704673, -7, 11.00000001704673)
 SketchConstraintHorizontal_1 = Sketch_8.setHorizontal(SketchLine_7.result())
 SketchLine_8 = Sketch_8.addLine(-7, 11.00000001704673, -6.329882773485103e-016, 30.00000001704673)
@@ -126,7 +126,7 @@ SketchLine_14.result().setName("SketchLine_13")
 SketchLine_13.setName("SketchLine_16")
 SketchLine_13.result().setName("SketchLine_16")
 model.do()
-ExtrusionCut_3 = model.addExtrusionCut(Part_1_doc, [model.selection("FACE", "Sketch_8/Face-SketchLine_7r-SketchLine_8r-SketchLine_10f-SketchLine_11f"), model.selection("FACE", "Sketch_8/Face-SketchLine_16f-SketchLine_17f-SketchLine_18r-SketchLine_19r"), model.selection("FACE", "Sketch_8/Face-SketchLine_12f-SketchLine_13f-SketchLine_14r-SketchLine_15r")], model.selection(), model.selection("FACE", "ExtrusionCut_2_1/Modfied_9"), 0, model.selection(), 0, [model.selection("SOLID", "ExtrusionCut_2_1")])
+ExtrusionCut_3 = model.addExtrusionCut(Part_1_doc, [model.selection("FACE", "Sketch_8/Face-SketchLine_7r-SketchLine_8r-SketchLine_10f-SketchLine_11f"), model.selection("FACE", "Sketch_8/Face-SketchLine_16f-SketchLine_17f-SketchLine_18r-SketchLine_19r"), model.selection("FACE", "Sketch_8/Face-SketchLine_12f-SketchLine_13f-SketchLine_14r-SketchLine_15r")], model.selection(), model.selection("FACE", "ExtrusionCut_2_1/Modfied_3"), 0, model.selection(), 0, [model.selection("SOLID", "ExtrusionCut_2_1")])
 
 # Test reexecution after parameter change
 Parameter_R.setValue(50)
index 247658ae5e1d21dc97f7c3c2d086e49a828e6d4f..a77f822ff0a23e3253ae7b71b4f9206c5b826035 100644 (file)
@@ -134,7 +134,7 @@ SketchLine_15.result().setName("SketchLine_19")
 SketchLine_16 = Sketch_3.addLine(-20, 0, 0, 0)
 SketchLine_16.setName("SketchLine_15")
 SketchLine_16.result().setName("SketchLine_15")
-SketchPoint_2 = Sketch_3.addPoint(model.selection("VERTEX", "ExtrusionFuse_2_1/Modfied_7&ExtrusionFuse_2_1/Modfied_6&ExtrusionFuse_2_1/Modfied_8&ExtrusionFuse_2_1/Modfied_9"))
+SketchPoint_2 = Sketch_3.addPoint(model.selection("VERTEX", "ExtrusionFuse_2_1/Modfied_9&ExtrusionFuse_2_1/Modfied_5&ExtrusionFuse_2_1/Modfied_8&ExtrusionFuse_2_1/Modfied_2"))
 SketchConstraintCoincidence_23 = Sketch_3.setCoincident(SketchLine_16.endPoint(), SketchPoint_2.result())
 SketchLine_17 = Sketch_3.addLine(0, 0, 0, -20)
 SketchLine_17.setName("SketchLine_16")
@@ -175,7 +175,7 @@ SketchConstraintParallel_1 = Sketch_3.setParallel(SketchLine_17.result(), Sketch
 SketchConstraintDistance_7 = Sketch_3.setDistance(SketchLine_21.startPoint(), SketchLine_18.result(), 3)
 model.do()
 RevolutionFuse_1 = model.addRevolutionFuse(Part_1_doc, [model.selection("COMPOUND", "Sketch_3")], model.selection("EDGE", "Sketch_3/Edge-SketchLine_21"), 71, 0, [model.selection("SOLID", "ExtrusionFuse_2_1")])
-Sketch_4 = model.addSketch(Part_1_doc, model.selection("FACE", "RevolutionFuse_1_1/Modfied_7"))
+Sketch_4 = model.addSketch(Part_1_doc, model.selection("FACE", "RevolutionFuse_1_1/Modfied_4"))
 SketchLine_22 = Sketch_4.addLine(-3, -20, 17.00000452949485, -20)
 SketchLine_22.setName("SketchLine_26")
 SketchLine_22.result().setName("SketchLine_26")
@@ -433,7 +433,7 @@ SketchLine_54.result().setName("SketchLine_55")
 SketchLine_54.setAuxiliary(True)
 SketchConstraintCoincidence_86 = Sketch_7.setCoincident(SketchLine_52.endPoint(), SketchLine_54.startPoint())
 SketchConstraintCoincidence_86.setName("SketchConstraintCoincidence_96")
-SketchLine_55 = Sketch_7.addLine(model.selection("EDGE", "RevolutionFuse_3_1/Modfied_11&RevolutionFuse_3_1/Modfied_8"))
+SketchLine_55 = Sketch_7.addLine(model.selection("EDGE", "RevolutionFuse_3_1/Modfied_6&RevolutionFuse_3_1/Modfied_5"))
 SketchLine_55.setName("SketchLine_56")
 SketchLine_55.result().setName("SketchLine_56")
 SketchConstraintCoincidence_87 = Sketch_7.setCoincident(SketchLine_54.endPoint(), SketchLine_55.result())
@@ -648,7 +648,7 @@ Sketch_10 = model.addSketch(Part_1_doc, model.selection("FACE", "PartSet/XOY"))
 SketchLine_77 = Sketch_10.addLine(64, 20, 89, 20)
 SketchLine_77.setName("SketchLine_76")
 SketchLine_77.result().setName("SketchLine_76")
-SketchPoint_4 = Sketch_10.addPoint(model.selection("VERTEX", "RevolutionFuse_2_1/Modfied_9&RevolutionFuse_2_1/Modfied_12&RevolutionFuse_3_1/Modfied_12&RevolutionFuse_3_1/Modfied_1divided_f_1"))
+SketchPoint_4 = Sketch_10.addPoint(model.selection("VERTEX", "Sketch_4/Vertex-SketchLine_22s-SketchLine_27e-SketchLine_25e"))
 SketchConstraintCoincidence_122 = Sketch_10.setCoincident(SketchLine_77.startPoint(), SketchPoint_4.result())
 SketchConstraintCoincidence_122.setName("SketchConstraintCoincidence_120")
 SketchPoint_5 = Sketch_10.addPoint(model.selection("VERTEX", "Sketch_1/Vertex-SketchLine_1s-SketchLine_8e-SketchLine_4e"))
@@ -657,10 +657,10 @@ SketchConstraintCoincidence_123.setName("SketchConstraintCoincidence_121")
 SketchLine_78 = Sketch_10.addLine(64, -20, 89, -20)
 SketchLine_78.setName("SketchLine_77")
 SketchLine_78.result().setName("SketchLine_77")
-SketchPoint_6 = Sketch_10.addPoint(model.selection("VERTEX", "RevolutionFuse_1_1/Modfied_4&RevolutionFuse_1_1/Modfied_10&RevolutionFuse_3_1/Modfied_13&RevolutionFuse_3_1/Modfied_1divided_f_2"))
+SketchPoint_6 = Sketch_10.addPoint(model.selection("VERTEX", "RevolutionFuse_3_1/Modfied_12&RevolutionFuse_1_1/Modfied_5&RevolutionFuse_3_1/Modfied_1divided_f_2&RevolutionFuse_1_1/Modfied_10"))
 SketchConstraintCoincidence_124 = Sketch_10.setCoincident(SketchLine_78.startPoint(), SketchPoint_6.result())
 SketchConstraintCoincidence_124.setName("SketchConstraintCoincidence_122")
-SketchPoint_7 = Sketch_10.addPoint(model.selection("VERTEX", "ExtrusionFuse_2_1/Modfied_3&RevolutionFuse_1_1/Modfied_4&ExtrusionFuse_2_1/Modfied_4&RevolutionFuse_3_1/Modfied_13"))
+SketchPoint_7 = Sketch_10.addPoint(model.selection("VERTEX", "Sketch_2/Vertex-SketchLine_9s-SketchLine_14e-SketchLine_12e"))
 SketchConstraintCoincidence_125 = Sketch_10.setCoincident(SketchLine_78.endPoint(), SketchPoint_7.result())
 SketchConstraintCoincidence_125.setName("SketchConstraintCoincidence_123")
 SketchArc_10 = Sketch_10.addArc(89.00000104846708, 1.669244441022778e-015, 89, -20, 89, 20, False)
@@ -683,7 +683,7 @@ SketchConstraintCoincidence_129 = Sketch_10.setCoincident(SketchArc_11.startPoin
 SketchConstraintCoincidence_129.setName("SketchConstraintCoincidence_127")
 SketchConstraintTangent_19 = Sketch_10.setTangent(SketchArc_11.results()[1], SketchLine_78.result())
 SketchConstraintTangent_19.setName("SketchConstraintTangent_24")
-SketchPoint_8 = Sketch_10.addPoint(model.selection("VERTEX", "RevolutionFuse_1_1/Modfied_10&RevolutionFuse_3_1/Modfied_7&RevolutionFuse_3_1/Modfied_1divided_f_2"))
+SketchPoint_8 = Sketch_10.addPoint(model.selection("VERTEX", "RevolutionFuse_3_1/Modfied_1divided_f_2&RevolutionFuse_1_1/Modfied_10&RevolutionFuse_3_1/Modfied_8"))
 SketchConstraintCoincidence_130 = Sketch_10.setCoincident(SketchArc_11.endPoint(), SketchPoint_8.result())
 SketchConstraintCoincidence_130.setName("SketchConstraintCoincidence_128")
 SketchArc_12 = Sketch_10.addArc(64.00001789135865, 23.01137360115889, 64, 20, 61.15622559702543, 22.02080994708722, True)
@@ -694,7 +694,7 @@ SketchConstraintCoincidence_131 = Sketch_10.setCoincident(SketchArc_12.startPoin
 SketchConstraintCoincidence_131.setName("SketchConstraintCoincidence_129")
 SketchConstraintTangent_20 = Sketch_10.setTangent(SketchArc_12.results()[1], SketchLine_77.result())
 SketchConstraintTangent_20.setName("SketchConstraintTangent_25")
-SketchPoint_9 = Sketch_10.addPoint(model.selection("VERTEX", "RevolutionFuse_2_1/Modfied_12&RevolutionFuse_3_1/Modfied_4&RevolutionFuse_3_1/Modfied_1divided_f_1"))
+SketchPoint_9 = Sketch_10.addPoint(model.selection("VERTEX", "RevolutionFuse_3_1/Modfied_1divided_f_1&RevolutionFuse_2_1/Modfied_11&RevolutionFuse_3_1/Modfied_7"))
 SketchConstraintCoincidence_132 = Sketch_10.setCoincident(SketchArc_12.endPoint(), SketchPoint_9.result())
 SketchConstraintCoincidence_132.setName("SketchConstraintCoincidence_130")
 SketchLine_79 = Sketch_10.addLine(61.15622559702543, 22.02080994708722, 59.81204392543111, 22.0208099470871)
@@ -798,8 +798,8 @@ model.testNbResults(ExtrusionCut_4, 1)
 model.testNbSubResults(ExtrusionCut_4, [0])
 model.testNbSubShapes(ExtrusionCut_4, GeomAPI_Shape.SOLID, [1])
 model.testNbSubShapes(ExtrusionCut_4, GeomAPI_Shape.FACE, [81])
-model.testNbSubShapes(ExtrusionCut_4, GeomAPI_Shape.EDGE, [410])
-model.testNbSubShapes(ExtrusionCut_4, GeomAPI_Shape.VERTEX, [820])
+model.testNbSubShapes(ExtrusionCut_4, GeomAPI_Shape.EDGE, [406])
+model.testNbSubShapes(ExtrusionCut_4, GeomAPI_Shape.VERTEX, [812])
 model.testResultsVolumes(ExtrusionCut_4, [502903.236060981987975537776947021])
 
 assert(model.checkPythonDump())
index a7f26c547d0912dc171165aa476ee6af6406ca20..f84b88985d775b542cf631b6036dedc6361a04ff 100644 (file)
@@ -58,14 +58,14 @@ SketchLine_7.setName("SketchLine_9")
 SketchLine_7.result().setName("SketchLine_9")
 SketchConstraintCoincidence_6 = Sketch_1.setCoincident(SketchLine_6.endPoint(), SketchLine_7.startPoint())
 SketchConstraintCoincidence_6.setName("SketchConstraintCoincidence_9")
-SketchLine_8 = Sketch_1.addLine(0, 0, 0, 3.499999999999999)
+SketchLine_8 = Sketch_1.addLine(0, 0, 0, 3.5)
 SketchLine_8.setName("SketchLine_10")
 SketchLine_8.result().setName("SketchLine_10")
 SketchConstraintCoincidence_7 = Sketch_1.setCoincident(SketchLine_1.startPoint(), SketchLine_8.startPoint())
 SketchConstraintCoincidence_7.setName("SketchConstraintCoincidence_10")
 SketchConstraintCoincidence_8 = Sketch_1.setCoincident(SketchPoint_1.coordinates(), SketchLine_8.startPoint())
 SketchConstraintCoincidence_8.setName("SketchConstraintCoincidence_11")
-SketchLine_9 = Sketch_1.addLine(0, 3.499999999999999, 8, 5)
+SketchLine_9 = Sketch_1.addLine(0, 3.5, 8, 5)
 SketchLine_9.setName("SketchLine_11")
 SketchLine_9.result().setName("SketchLine_11")
 SketchConstraintCoincidence_9 = Sketch_1.setCoincident(SketchLine_8.endPoint(), SketchLine_9.startPoint())
@@ -86,20 +86,20 @@ SketchConstraintVertical_3 = Sketch_1.setVertical(SketchLine_6.result())
 SketchConstraintCoincidence_11 = Sketch_1.setCoincident(SketchLine_5.endPoint(), SketchArc_1.startPoint())
 SketchConstraintCoincidence_11.setName("SketchConstraintCoincidence_15")
 SketchConstraintVertical_4 = Sketch_1.setVertical(SketchLine_8.result())
-SketchConstraintDistance_1 = Sketch_1.setDistance(SketchLine_8.endPoint(), SketchLine_1.result(), 3.5)
-SketchConstraintDistance_2 = Sketch_1.setDistance(SketchLine_9.endPoint(), SketchLine_8.result(), 8)
+SketchConstraintDistance_1 = Sketch_1.setDistance(SketchLine_8.endPoint(), SketchLine_1.result(), 3.5, False)
+SketchConstraintDistance_2 = Sketch_1.setDistance(SketchLine_9.endPoint(), SketchLine_8.result(), 8, False)
 SketchConstraintLength_2 = Sketch_1.setLength(SketchLine_10.result(), 2.5)
 SketchConstraintRadius_1 = Sketch_1.setRadius(SketchArc_1.results()[1], 3)
 SketchConstraintLength_3 = Sketch_1.setLength(SketchLine_6.result(), 0.5)
 SketchConstraintLength_4 = Sketch_1.setLength(SketchLine_7.result(), 1)
 SketchConstraintLength_5 = Sketch_1.setLength(SketchLine_5.result(), 0.5)
-SketchConstraintDistance_3 = Sketch_1.setDistance(SketchLine_6.endPoint(), SketchLine_1.result(), 7.5)
+SketchConstraintDistance_3 = Sketch_1.setDistance(SketchLine_6.endPoint(), SketchLine_1.result(), 7.5, False)
 SketchConstraintLength_6 = Sketch_1.setLength(SketchLine_3.result(), 3)
 SketchConstraintLength_6.setName("SketchConstraintLength_7")
 SketchConstraintLength_7 = Sketch_1.setLength(SketchLine_2.result(), 1.5)
 SketchConstraintLength_7.setName("SketchConstraintLength_8")
-SketchConstraintDistance_4 = Sketch_1.setDistance(SketchLine_9.endPoint(), SketchLine_1.result(), 5)
-SketchConstraintDistance_5 = Sketch_1.setDistance(SketchLine_5.startPoint(), SketchLine_1.result(), 7.5)
+SketchConstraintDistance_4 = Sketch_1.setDistance(SketchLine_9.endPoint(), SketchLine_1.result(), 5, False)
+SketchConstraintDistance_5 = Sketch_1.setDistance(SketchLine_5.startPoint(), SketchLine_1.result(), 7.5, False)
 SketchLine_11 = Sketch_1.addLine(12.81710695710752, 0, 12.81710695710752, 7.765286531476907)
 SketchLine_11.setName("SketchLine_13")
 SketchLine_11.result().setName("SketchLine_13")
@@ -111,7 +111,7 @@ SketchPoint_2 = Sketch_1.addPoint(12.81710695710752, 3)
 SketchPoint_2.setAuxiliary(True)
 SketchConstraintCoincidence_13 = Sketch_1.setCoincident(SketchPoint_2.coordinates(), SketchLine_11.result())
 SketchConstraintCoincidence_13.setName("SketchConstraintCoincidence_17")
-SketchConstraintDistance_6 = Sketch_1.setDistance(SketchPoint_2.coordinates(), SketchLine_1.result(), 3)
+SketchConstraintDistance_6 = Sketch_1.setDistance(SketchPoint_2.coordinates(), SketchLine_1.result(), 3, False)
 SketchLine_12 = Sketch_1.addLine(28, 7.5, 29, 7.5)
 SketchLine_12.setName("SketchLine_14")
 SketchLine_12.result().setName("SketchLine_14")
@@ -130,12 +130,12 @@ SketchConstraintCoincidence_18 = Sketch_1.setCoincident(SketchPoint_2.coordinate
 SketchConstraintCoincidence_18.setName("SketchConstraintCoincidence_22")
 SketchConstraintHorizontal_4 = Sketch_1.setHorizontal(SketchLine_12.result())
 SketchConstraintHorizontal_4.setName("SketchConstraintHorizontal_9")
-SketchConstraintDistance_7 = Sketch_1.setDistance(SketchLine_5.startPoint(), SketchLine_2.result(), 32)
+SketchConstraintDistance_7 = Sketch_1.setDistance(SketchLine_5.startPoint(), SketchLine_2.result(), 32, False)
 SketchConstraintDistance_7.setName("SketchConstraintDistance_9")
 model.do()
 Extrusion_1 = model.addExtrusion(Part_1_doc, [model.selection("WIRE", "Sketch_1/Wire-SketchLine_1f-SketchLine_3f-SketchLine_4f-SketchLine_5f-SketchLine_7f-SketchArc_1_2f-SketchLine_8f-SketchLine_9f-SketchLine_10r-SketchLine_11r-SketchLine_12r-SketchLine_14r-SketchArc_2_2r")], model.selection(), 12, 0)
-Sketch_2 = model.addSketch(Part_1_doc, model.selection("FACE", "PartSet/XOZ"))
-SketchArc_3 = Sketch_2.addArc(53.99996594708078, 6.000000000028422, 54, 12, 53.99994409538203, -3.231174267785264e-027, True)
+Sketch_2 = model.addSketch(Part_1_doc, model.standardPlane("XOZ"))
+SketchArc_3 = Sketch_2.addArc(54, 6, 54, 12, 54, 0, True)
 SketchLine_13 = Sketch_2.addLine(model.selection("EDGE", "Extrusion_1_1/Generated_Face_13&Extrusion_1_1/To_Face_1"))
 SketchLine_13.setName("SketchLine_15")
 SketchLine_13.result().setName("SketchLine_15")
@@ -146,11 +146,11 @@ SketchLine_14.setName("SketchLine_16")
 SketchLine_14.result().setName("SketchLine_16")
 SketchConstraintCoincidence_20 = Sketch_2.setCoincident(SketchArc_3.endPoint(), SketchLine_14.result())
 SketchConstraintCoincidence_20.setName("SketchConstraintCoincidence_24")
-SketchConstraintRadius_2 = Sketch_2.setRadius(SketchArc_3.results()[1], 6)
 SketchLine_15 = Sketch_2.addLine(model.selection("EDGE", "Extrusion_1_1/Generated_Face_13&Extrusion_1_1/Generated_Face_12"))
 SketchLine_15.setName("SketchLine_17")
 SketchLine_15.result().setName("SketchLine_17")
-SketchConstraintDistance_8 = Sketch_2.setDistance(SketchArc_3.startPoint(), SketchLine_15.result(), 6)
+SketchConstraintTangent_1 = Sketch_2.setTangent(SketchArc_3.results()[1], SketchLine_15.result())
+SketchConstraintDistance_8 = Sketch_2.setDistance(SketchArc_3.startPoint(), SketchLine_15.result(), 6, False)
 SketchConstraintDistance_8.setName("SketchConstraintDistance_7")
 SketchLine_16 = Sketch_2.addLine(54, 12, 53.10174978726379, 13.92603605930655)
 SketchLine_16.setName("SketchLine_18")
@@ -172,7 +172,7 @@ SketchLine_19.setName("SketchLine_21")
 SketchLine_19.result().setName("SketchLine_21")
 SketchConstraintCoincidence_24 = Sketch_2.setCoincident(SketchLine_18.endPoint(), SketchLine_19.startPoint())
 SketchConstraintCoincidence_24.setName("SketchConstraintCoincidence_28")
-SketchLine_20 = Sketch_2.addLine(53.10174978726379, -2.868701973344648, 53.99994409538203, -3.231174267785264e-027)
+SketchLine_20 = Sketch_2.addLine(53.10174978726379, -2.868701973344648, 54, 0)
 SketchLine_20.setName("SketchLine_22")
 SketchLine_20.result().setName("SketchLine_22")
 SketchConstraintCoincidence_25 = Sketch_2.setCoincident(SketchLine_19.endPoint(), SketchLine_20.startPoint())
@@ -182,7 +182,7 @@ SketchConstraintCoincidence_26.setName("SketchConstraintCoincidence_30")
 model.do()
 ExtrusionCut_1 = model.addExtrusionCut(Part_1_doc, [model.selection("FACE", "Sketch_2/Face-SketchArc_3_2r-SketchLine_18r-SketchLine_19r-SketchLine_20r-SketchLine_21r-SketchLine_22r")], model.selection(), 7, 15, [model.selection("SOLID", "Extrusion_1_1")])
 Sketch_3 = model.addSketch(Part_1_doc, model.selection("FACE", "Extrusion_1_1/Generated_Face_9"))
-SketchLine_21 = Sketch_3.addLine(28, -6, -4.270492394552598, -6.000000000000001)
+SketchLine_21 = Sketch_3.addLine(28, -6, -4.270492394552598, -6)
 SketchLine_21.setName("SketchLine_23")
 SketchLine_21.result().setName("SketchLine_23")
 SketchLine_21.setAuxiliary(True)
@@ -192,23 +192,23 @@ SketchLine_22.result().setName("SketchLine_24")
 SketchConstraintCoincidence_27 = Sketch_3.setCoincident(SketchLine_21.startPoint(), SketchLine_22.result())
 SketchConstraintCoincidence_27.setName("SketchConstraintCoincidence_31")
 SketchConstraintHorizontal_5 = Sketch_3.setHorizontal(SketchLine_21.result())
-SketchLine_23 = Sketch_3.addLine(28, -6, 63.78468475453244, -6.000000000000001)
+SketchLine_23 = Sketch_3.addLine(28, -6, 63.78468475453244, -6)
 SketchLine_23.setName("SketchLine_25")
 SketchLine_23.result().setName("SketchLine_25")
 SketchLine_23.setAuxiliary(True)
 SketchConstraintCoincidence_28 = Sketch_3.setCoincident(SketchLine_21.startPoint(), SketchLine_23.startPoint())
 SketchConstraintCoincidence_28.setName("SketchConstraintCoincidence_32")
 SketchConstraintHorizontal_6 = Sketch_3.setHorizontal(SketchLine_23.result())
-SketchLine_24 = Sketch_3.addLine(60, -1.500000000000001, 29, -1.500000000000001)
+SketchLine_24 = Sketch_3.addLine(60, -1.5, 29, -1.5)
 SketchLine_24.setName("SketchLine_26")
 SketchLine_24.result().setName("SketchLine_26")
-SketchLine_25 = Sketch_3.addLine(29, -1.500000000000001, 29, -10.5)
+SketchLine_25 = Sketch_3.addLine(29, -1.5, 29, -10.5)
 SketchLine_25.setName("SketchLine_27")
 SketchLine_25.result().setName("SketchLine_27")
 SketchLine_26 = Sketch_3.addLine(29, -10.5, 60, -10.5)
 SketchLine_26.setName("SketchLine_28")
 SketchLine_26.result().setName("SketchLine_28")
-SketchLine_27 = Sketch_3.addLine(60, -10.5, 60, -1.500000000000001)
+SketchLine_27 = Sketch_3.addLine(60, -10.5, 60, -1.5)
 SketchLine_27.setName("SketchLine_29")
 SketchLine_27.result().setName("SketchLine_29")
 SketchConstraintCoincidence_29 = Sketch_3.setCoincident(SketchLine_27.endPoint(), SketchLine_24.startPoint())
@@ -223,7 +223,7 @@ SketchConstraintHorizontal_7 = Sketch_3.setHorizontal(SketchLine_24.result())
 SketchConstraintVertical_6 = Sketch_3.setVertical(SketchLine_25.result())
 SketchConstraintHorizontal_8 = Sketch_3.setHorizontal(SketchLine_26.result())
 SketchConstraintVertical_7 = Sketch_3.setVertical(SketchLine_27.result())
-SketchLine_28 = Sketch_3.addLine(29, -10.5, 60, -1.500000000000001)
+SketchLine_28 = Sketch_3.addLine(29, -10.5, 60, -1.5)
 SketchLine_28.setName("SketchLine_30")
 SketchLine_28.result().setName("SketchLine_30")
 SketchLine_28.setAuxiliary(True)
@@ -235,7 +235,7 @@ SketchConstraintCoincidence_35 = Sketch_3.setCoincident(SketchLine_24.startPoint
 SketchConstraintCoincidence_35.setName("SketchConstraintCoincidence_39")
 SketchConstraintCoincidence_36 = Sketch_3.setCoincident(SketchLine_27.endPoint(), SketchLine_28.endPoint())
 SketchConstraintCoincidence_36.setName("SketchConstraintCoincidence_40")
-SketchLine_29 = Sketch_3.addLine(29, -1.500000000000001, 60, -10.5)
+SketchLine_29 = Sketch_3.addLine(29, -1.5, 60, -10.5)
 SketchLine_29.setName("SketchLine_31")
 SketchLine_29.result().setName("SketchLine_31")
 SketchLine_29.setAuxiliary(True)
@@ -247,27 +247,27 @@ SketchConstraintCoincidence_39 = Sketch_3.setCoincident(SketchLine_26.endPoint()
 SketchConstraintCoincidence_39.setName("SketchConstraintCoincidence_43")
 SketchConstraintCoincidence_40 = Sketch_3.setCoincident(SketchLine_27.startPoint(), SketchLine_29.endPoint())
 SketchConstraintCoincidence_40.setName("SketchConstraintCoincidence_44")
-SketchPoint_3 = Sketch_3.addPoint(44.5, -6.000000000000001)
+SketchPoint_3 = Sketch_3.addPoint(44.5, -6)
 SketchPoint_3.setAuxiliary(True)
 SketchConstraintCoincidence_41 = Sketch_3.setCoincident(SketchPoint_3.coordinates(), SketchLine_29.result())
 SketchConstraintCoincidence_41.setName("SketchConstraintCoincidence_45")
 SketchConstraintMiddle_1 = Sketch_3.setMiddlePoint(SketchPoint_3.coordinates(), SketchLine_29.result())
 SketchConstraintCoincidence_42 = Sketch_3.setCoincident(SketchPoint_3.coordinates(), SketchLine_23.result())
 SketchConstraintCoincidence_42.setName("SketchConstraintCoincidence_46")
-SketchConstraintDistance_9 = Sketch_3.setDistance(SketchLine_22.startPoint(), SketchLine_23.result(), 6)
+SketchConstraintDistance_9 = Sketch_3.setDistance(SketchLine_22.startPoint(), SketchLine_23.result(), 6, False)
 SketchConstraintDistance_9.setName("SketchConstraintDistance_8")
 SketchConstraintLength_9 = Sketch_3.setLength(SketchLine_27.result(), 9)
 SketchConstraintLength_9.setName("SketchConstraintLength_10")
-SketchLine_30 = Sketch_3.addLine(21.00014787857639, -1.499999999999999, 12.00014787857639, -1.499999999999999)
+SketchLine_30 = Sketch_3.addLine(21.00014787857639, -1.499999999999981, 12.00014787857639, -1.499999999999981)
 SketchLine_30.setName("SketchLine_32")
 SketchLine_30.result().setName("SketchLine_32")
-SketchLine_31 = Sketch_3.addLine(12.00014787857639, -1.499999999999999, 12.00014787857639, -10.5)
+SketchLine_31 = Sketch_3.addLine(12.00014787857639, -1.499999999999981, 12.00014787857639, -10.49999999999998)
 SketchLine_31.setName("SketchLine_33")
 SketchLine_31.result().setName("SketchLine_33")
-SketchLine_32 = Sketch_3.addLine(12.00014787857639, -10.5, 21.00014787857639, -10.5)
+SketchLine_32 = Sketch_3.addLine(12.00014787857639, -10.49999999999998, 21.00014787857639, -10.49999999999998)
 SketchLine_32.setName("SketchLine_34")
 SketchLine_32.result().setName("SketchLine_34")
-SketchLine_33 = Sketch_3.addLine(21.00014787857639, -10.5, 21.00014787857639, -1.499999999999999)
+SketchLine_33 = Sketch_3.addLine(21.00014787857639, -10.49999999999998, 21.00014787857639, -1.499999999999981)
 SketchLine_33.setName("SketchLine_35")
 SketchLine_33.result().setName("SketchLine_35")
 SketchConstraintCoincidence_43 = Sketch_3.setCoincident(SketchLine_33.endPoint(), SketchLine_30.startPoint())
@@ -285,7 +285,7 @@ SketchConstraintHorizontal_10 = Sketch_3.setHorizontal(SketchLine_32.result())
 SketchConstraintHorizontal_10.setName("SketchConstraintHorizontal_11")
 SketchConstraintVertical_9 = Sketch_3.setVertical(SketchLine_33.result())
 SketchConstraintEqual_1 = Sketch_3.setEqual(SketchLine_25.result(), SketchLine_33.result())
-SketchLine_34 = Sketch_3.addLine(12.00014787857639, -10.5, 21.00014787857639, -1.499999999999999)
+SketchLine_34 = Sketch_3.addLine(12.00014787857639, -10.49999999999998, 21.00014787857639, -1.499999999999981)
 SketchLine_34.setName("SketchLine_36")
 SketchLine_34.result().setName("SketchLine_36")
 SketchLine_34.setAuxiliary(True)
@@ -297,7 +297,7 @@ SketchConstraintCoincidence_49 = Sketch_3.setCoincident(SketchLine_30.startPoint
 SketchConstraintCoincidence_49.setName("SketchConstraintCoincidence_53")
 SketchConstraintCoincidence_50 = Sketch_3.setCoincident(SketchLine_33.endPoint(), SketchLine_34.endPoint())
 SketchConstraintCoincidence_50.setName("SketchConstraintCoincidence_54")
-SketchPoint_4 = Sketch_3.addPoint(16.50014787857639, -5.999999999999999)
+SketchPoint_4 = Sketch_3.addPoint(16.50014787857639, -6)
 SketchPoint_4.setAuxiliary(True)
 SketchConstraintCoincidence_51 = Sketch_3.setCoincident(SketchPoint_4.coordinates(), SketchLine_34.result())
 SketchConstraintCoincidence_51.setName("SketchConstraintCoincidence_55")
@@ -346,7 +346,7 @@ SketchConstraintLength_11 = Sketch_4.setLength(SketchLine_40.result(), 1.925)
 SketchConstraintLength_11.setName("SketchConstraintLength_12")
 SketchConstraintEqual_3 = Sketch_4.setEqual(SketchLine_37.result(), SketchLine_39.result())
 SketchConstraintPerpendicular_1 = Sketch_4.setPerpendicular(SketchLine_37.result(), SketchLine_39.result())
-SketchConstraintDistance_10 = Sketch_4.setDistance(SketchLine_38.startPoint(), SketchLine_37.startPoint(), 0.44)
+SketchConstraintDistance_10 = Sketch_4.setDistance(SketchLine_38.startPoint(), SketchLine_37.startPoint(), 0.44, False)
 SketchMultiTranslation_1_objects = [SketchLine_37.result(), SketchLine_40.result(), SketchLine_39.result()]
 SketchMultiTranslation_1 = Sketch_4.addTranslation(SketchMultiTranslation_1_objects, SketchLine_40.startPoint(), SketchLine_38.endPoint(), 4, True)
 [SketchLine_41, SketchLine_42, SketchLine_43, SketchLine_44, SketchLine_45, SketchLine_46, SketchLine_47, SketchLine_48, SketchLine_49] = SketchMultiTranslation_1.translated()
@@ -370,10 +370,10 @@ SketchLine_41.setName("SketchLine_43")
 SketchLine_41.result().setName("SketchLine_43")
 model.do()
 ExtrusionCut_3 = model.addExtrusionCut(Part_1_doc, [model.selection("COMPOUND", "Sketch_4")], model.selection(), model.selection("FACE", "ExtrusionCut_1_1/Modfied_2"), 0, model.selection(), 0, [model.selection("SOLID", "ExtrusionCut_2_1")])
-Plane_4 = model.addPlane(Part_1_doc, model.selection("VERTEX", "ExtrusionCut_1_1/Modfied_5&ExtrusionCut_3_1/Modfied_3&Extrusion_1_1/Generated_Face_1"), model.selection("VERTEX", "ExtrusionCut_3_1/Modfied_3&Extrusion_1_1/Generated_Face_7&Extrusion_1_1/Generated_Face_6"), model.selection("VERTEX", "ExtrusionCut_1_1/Modfied_5&ExtrusionCut_2_1/Modfied_6&ExtrusionCut_3_1/Modfied_3"))
+Plane_4 = model.addPlane(Part_1_doc, model.selection("VERTEX", "ExtrusionCut_1_1/Modfied_5&ExtrusionCut_3_1/Modfied_3&Extrusion_1_1/Generated_Face_1"), model.selection("VERTEX", "ExtrusionCut_3_1/Modfied_3&Extrusion_1_1/Generated_Face_6&Extrusion_1_1/Generated_Face_7"), model.selection("VERTEX", "ExtrusionCut_1_1/Modfied_5&ExtrusionCut_2_1/Modfied_6&ExtrusionCut_3_1/Modfied_3"))
 Sketch_5 = model.addSketch(Part_1_doc, model.selection("FACE", "Plane_1"))
-SketchArc_4 = Sketch_5.addArc(25.00007393928819, -7.521062532210847, 22.00014787857639, -7.5, 28, -7.5, True)
-SketchPoint_5 = Sketch_5.addPoint(22.00014787857639, -7.5)
+SketchArc_4 = Sketch_5.addArc(25, -7.50002056854448, 22, -7.5, 28, -7.5, True)
+SketchPoint_5 = Sketch_5.addPoint(22, -7.5)
 SketchConstraintRigid_1 = Sketch_5.setFixed(SketchPoint_5.result())
 SketchConstraintRigid_1.setName("SketchConstraintRigid_10")
 SketchConstraintCoincidence_60 = Sketch_5.setCoincident(SketchArc_4.startPoint(), SketchPoint_5.result())
@@ -383,15 +383,15 @@ SketchConstraintRigid_2 = Sketch_5.setFixed(SketchPoint_6.result())
 SketchConstraintRigid_2.setName("SketchConstraintRigid_11")
 SketchConstraintCoincidence_61 = Sketch_5.setCoincident(SketchArc_4.endPoint(), SketchPoint_6.result())
 SketchConstraintCoincidence_61.setName("SketchConstraintCoincidence_65")
-SketchConstraintRadius_3 = Sketch_5.setRadius(SketchArc_4.results()[1], 3)
-SketchLine_50 = Sketch_5.addLine(22.00014787857639, -7.5, 22.00014787857639, -11.56094005408083)
+SketchConstraintRadius_2 = Sketch_5.setRadius(SketchArc_4.results()[1], 3)
+SketchLine_50 = Sketch_5.addLine(22, -7.5, 22, -11.56094005408083)
 SketchLine_50.setName("SketchLine_52")
 SketchLine_50.result().setName("SketchLine_52")
 SketchConstraintCoincidence_62 = Sketch_5.setCoincident(SketchArc_4.startPoint(), SketchLine_50.startPoint())
 SketchConstraintCoincidence_62.setName("SketchConstraintCoincidence_66")
 SketchConstraintCoincidence_63 = Sketch_5.setCoincident(SketchPoint_5.coordinates(), SketchLine_50.startPoint())
 SketchConstraintCoincidence_63.setName("SketchConstraintCoincidence_67")
-SketchLine_51 = Sketch_5.addLine(22.00014787857639, -11.56094005408083, 28, -11.56094005408083)
+SketchLine_51 = Sketch_5.addLine(22, -11.56094005408083, 28, -11.56094005408083)
 SketchLine_51.setName("SketchLine_53")
 SketchLine_51.result().setName("SketchLine_53")
 SketchConstraintCoincidence_64 = Sketch_5.setCoincident(SketchLine_50.endPoint(), SketchLine_51.startPoint())
@@ -415,7 +415,7 @@ Plane_6 = model.addPlane(Part_1_doc, model.selection("FACE", "Plane_2"), 3, True
 ExtrusionCut_4 = model.addExtrusionCut(Part_1_doc, [model.selection("FACE", "Sketch_5/Face-SketchArc_4_2f-SketchLine_52f-SketchLine_53f-SketchLine_54f")], model.selection(), 3, 0, [model.selection("SOLID", "ExtrusionCut_3_1")])
 ExtrusionCut_5 = model.addExtrusionCut(Part_1_doc, [model.selection("FACE", "Sketch_5/Face-SketchArc_4_2f-SketchLine_52f-SketchLine_53f-SketchLine_54f")], model.selection(), model.selection("FACE", "Plane_3"), 0, model.selection("FACE", "Plane_2"), 0, [model.selection("SOLID", "ExtrusionCut_4_1")])
 Sketch_6 = model.addSketch(Part_1_doc, model.selection("FACE", "ExtrusionCut_4_1/Modfied_6"))
-SketchArc_5 = Sketch_6.addArc(45.99999999999999, 0, 45.49999999999999, 8.91700958118717e-020, 46.49999999999999, 8.280962276646116e-019, False)
+SketchArc_5 = Sketch_6.addArc(46, 0, 45.5, 0, 46.5, 0, False)
 SketchLine_53 = Sketch_6.addLine(0, 0, 54, 0)
 SketchLine_53.setName("SketchLine_55")
 SketchLine_53.result().setName("SketchLine_55")
@@ -427,24 +427,24 @@ SketchConstraintCoincidence_69 = Sketch_6.setCoincident(SketchArc_5.startPoint()
 SketchConstraintCoincidence_69.setName("SketchConstraintCoincidence_73")
 SketchConstraintCoincidence_70 = Sketch_6.setCoincident(SketchArc_5.endPoint(), SketchLine_53.result())
 SketchConstraintCoincidence_70.setName("SketchConstraintCoincidence_74")
-SketchLine_54 = Sketch_6.addLine(45.49999999999999, 8.91700958118717e-020, 46.49999999999999, 8.280962276646116e-019)
+SketchLine_54 = Sketch_6.addLine(45.5, 0, 46.5, 0)
 SketchLine_54.setName("SketchLine_56")
 SketchLine_54.result().setName("SketchLine_56")
 SketchConstraintCoincidence_71 = Sketch_6.setCoincident(SketchArc_5.startPoint(), SketchLine_54.startPoint())
 SketchConstraintCoincidence_71.setName("SketchConstraintCoincidence_75")
 SketchConstraintCoincidence_72 = Sketch_6.setCoincident(SketchArc_5.endPoint(), SketchLine_54.endPoint())
 SketchConstraintCoincidence_72.setName("SketchConstraintCoincidence_76")
-SketchConstraintRadius_4 = Sketch_6.setRadius(SketchArc_5.results()[1], 0.5)
-SketchLine_55 = Sketch_6.addLine(0, 0, 0, 3.499999999999999)
+SketchConstraintRadius_3 = Sketch_6.setRadius(SketchArc_5.results()[1], 0.5)
+SketchLine_55 = Sketch_6.addLine(0, 0, 0, 3.5)
 SketchLine_55.setName("SketchLine_57")
 SketchLine_55.result().setName("SketchLine_57")
-SketchConstraintDistance_11 = Sketch_6.setDistance(SketchArc_5.center(), SketchLine_55.result(), 46)
+SketchConstraintDistance_11 = Sketch_6.setDistance(SketchArc_5.center(), SketchLine_55.result(), 46, False)
 SketchConstraintRigid_4 = Sketch_6.setFixed(SketchLine_55.result())
 SketchConstraintRigid_4.setName("SketchConstraintRigid_13")
 SketchPoint_7 = Sketch_6.addPoint(58, 0)
 SketchConstraintCoincidence_73 = Sketch_6.setCoincident(SketchPoint_7.coordinates(), SketchLine_53.result())
 SketchConstraintCoincidence_73.setName("SketchConstraintCoincidence_77")
-SketchConstraintDistance_12 = Sketch_6.setDistance(SketchArc_5.center(), SketchPoint_7.coordinates(), 12)
+SketchConstraintDistance_12 = Sketch_6.setDistance(SketchArc_5.center(), SketchPoint_7.coordinates(), 12, False)
 SketchMultiTranslation_2 = Sketch_6.addTranslation([SketchLine_54.result(), SketchArc_5.results()[1]], SketchArc_5.center(), SketchPoint_7.coordinates(), 9, True)
 [SketchLine_56, SketchLine_57, SketchLine_58, SketchLine_59, SketchLine_60, SketchLine_61, SketchLine_62, SketchLine_63, SketchArc_6, SketchArc_7, SketchArc_8, SketchArc_9, SketchArc_10, SketchArc_11, SketchArc_12, SketchArc_13] = SketchMultiTranslation_2.translated()
 SketchLine_63.setName("SketchLine_65")
@@ -466,16 +466,16 @@ SketchLine_56.result().setName("SketchLine_58")
 model.do()
 ExtrusionFuse_1 = model.addExtrusionFuse(Part_1_doc, [model.selection("COMPOUND", "Sketch_6")], model.selection(), model.selection("FACE", "Sketch_1/Face-SketchLine_1f-SketchLine_3f-SketchLine_4f-SketchLine_5f-SketchLine_7f-SketchArc_1_2f-SketchLine_8f-SketchLine_9f-SketchLine_10r-SketchLine_11r-SketchLine_12r-SketchLine_14r-SketchArc_2_2r"), 0, model.selection(), 0, [model.selection("SOLID", "ExtrusionCut_5_1")])
 Sketch_7 = model.addSketch(Part_1_doc, model.selection("FACE", "ExtrusionCut_2_1/Modfied_9"))
-SketchLine_64 = Sketch_7.addLine(50.25000000000001, -4.5, 31.24999999998802, -4.499999999999997)
+SketchLine_64 = Sketch_7.addLine(50.25, -4.5, 31.25, -4.5)
 SketchLine_64.setName("SketchLine_76")
 SketchLine_64.result().setName("SketchLine_76")
-SketchLine_65 = Sketch_7.addLine(51.00000000000001, -6.749999999999998, 51.00000000000001, -5.24999997149696)
+SketchLine_65 = Sketch_7.addLine(51, -6.75, 51, -5.25)
 SketchLine_65.setName("SketchLine_78")
 SketchLine_65.result().setName("SketchLine_78")
-SketchLine_66 = Sketch_7.addLine(31, -4.750000022881151, 31, -7.249999999972618)
+SketchLine_66 = Sketch_7.addLine(31, -4.75, 31, -7.249999999978425)
 SketchLine_66.setName("SketchLine_80")
 SketchLine_66.result().setName("SketchLine_80")
-SketchLine_67 = Sketch_7.addLine(31.25000000003855, -7.5, 50.24999994039248, -7.5)
+SketchLine_67 = Sketch_7.addLine(31.25000000000632, -7.499999999999999, 50.25, -7.5)
 SketchLine_67.setName("SketchLine_79")
 SketchLine_67.result().setName("SketchLine_79")
 SketchLine_68 = Sketch_7.addLine(51, -4.5, 31, -4.5)
@@ -524,9 +524,9 @@ SketchPoint_9.setAuxiliary(True)
 SketchConstraintCoincidence_82 = Sketch_7.setCoincident(SketchPoint_9.coordinates(), SketchLine_72.result())
 SketchConstraintCoincidence_82.setName("SketchConstraintCoincidence_86")
 SketchConstraintMiddle_3 = Sketch_7.setMiddlePoint(SketchLine_72.result(), SketchPoint_9.coordinates())
-SketchPoint_10 = Sketch_7.addPoint(21.00014787857639, -5.999999999999999)
+SketchPoint_10 = Sketch_7.addPoint(21, -6)
 SketchPoint_10.setAuxiliary(True)
-SketchLine_73 = Sketch_7.addLine(21.00014787857639, -10.5, 21.00014787857639, -1.499999999999999)
+SketchLine_73 = Sketch_7.addLine(21, -10.5, 21, -1.5)
 SketchLine_73.setName("SketchLine_71")
 SketchLine_73.result().setName("SketchLine_71")
 SketchConstraintRigid_5 = Sketch_7.setFixed(SketchLine_73.result())
@@ -534,7 +534,7 @@ SketchConstraintRigid_5.setName("SketchConstraintRigid_14")
 SketchConstraintCoincidence_83 = Sketch_7.setCoincident(SketchPoint_10.coordinates(), SketchLine_73.result())
 SketchConstraintCoincidence_83.setName("SketchConstraintCoincidence_87")
 SketchConstraintMiddle_4 = Sketch_7.setMiddlePoint(SketchPoint_10.coordinates(), SketchLine_73.result())
-SketchLine_74 = Sketch_7.addLine(21.00014787857639, -6, 41, -5.999999999999999)
+SketchLine_74 = Sketch_7.addLine(21, -6, 41, -6)
 SketchLine_74.setName("SketchLine_72")
 SketchLine_74.result().setName("SketchLine_72")
 SketchLine_74.setAuxiliary(True)
@@ -551,24 +551,24 @@ SketchConstraintLength_12.setName("SketchConstraintLength_13")
 SketchConstraintLength_13 = Sketch_7.setLength(SketchLine_68.result(), 20)
 SketchConstraintLength_13.setName("SketchConstraintLength_14")
 SketchPoint_11 = Sketch_7.addPoint(29, -10.5)
-SketchConstraintDistance_13 = Sketch_7.setDistance(SketchPoint_11.coordinates(), SketchLine_70.result(), 2)
+SketchConstraintDistance_13 = Sketch_7.setDistance(SketchPoint_11.coordinates(), SketchLine_70.result(), 2, False)
 SketchConstraintRigid_6 = Sketch_7.setFixed(SketchPoint_11.result())
 SketchConstraintRigid_6.setName("SketchConstraintRigid_15")
-SketchArc_14 = Sketch_7.addArc(50.24999999999999, -5.250000000000003, 51.00000000000001, -5.24999997149696, 50.25000000000001, -4.5, False)
-SketchLine_75 = Sketch_7.addLine(51, -7.5, 51.00000000000001, -5.24999997149696)
+SketchArc_14 = Sketch_7.addArc(50.25, -5.25, 51, -5.25, 50.25, -4.5, False)
+SketchLine_75 = Sketch_7.addLine(51, -7.5, 51, -5.25)
 SketchLine_75.setName("SketchLine_74")
 SketchLine_75.result().setName("SketchLine_74")
 SketchLine_75.setAuxiliary(True)
 SketchConstraintCoincidence_87 = Sketch_7.setCoincident(SketchArc_14.startPoint(), SketchLine_75.endPoint())
 SketchConstraintCoincidence_87.setName("SketchConstraintCoincidence_91")
-SketchLine_76 = Sketch_7.addLine(50.25000000000001, -4.5, 31, -4.5)
+SketchLine_76 = Sketch_7.addLine(50.25, -4.5, 31, -4.5)
 SketchLine_76.setName("SketchLine_73")
 SketchLine_76.result().setName("SketchLine_73")
 SketchLine_76.setAuxiliary(True)
 SketchConstraintCoincidence_88 = Sketch_7.setCoincident(SketchArc_14.endPoint(), SketchLine_76.startPoint())
 SketchConstraintCoincidence_88.setName("SketchConstraintCoincidence_92")
-SketchConstraintTangent_1 = Sketch_7.setTangent(SketchArc_14.results()[1], SketchLine_76.result())
-SketchConstraintTangent_2 = Sketch_7.setTangent(SketchArc_14.results()[1], SketchLine_75.result())
+SketchConstraintTangent_2 = Sketch_7.setTangent(SketchArc_14.results()[1], SketchLine_76.result())
+SketchConstraintTangent_3 = Sketch_7.setTangent(SketchArc_14.results()[1], SketchLine_75.result())
 SketchConstraintCoincidence_89 = Sketch_7.setCoincident(SketchLine_68.endPoint(), SketchLine_76.endPoint())
 SketchConstraintCoincidence_89.setName("SketchConstraintCoincidence_93")
 SketchConstraintCoincidence_90 = Sketch_7.setCoincident(SketchLine_69.startPoint(), SketchLine_75.startPoint())
@@ -577,17 +577,17 @@ SketchConstraintCoincidence_91 = Sketch_7.setCoincident(SketchLine_76.startPoint
 SketchConstraintCoincidence_91.setName("SketchConstraintCoincidence_95")
 SketchConstraintCoincidence_92 = Sketch_7.setCoincident(SketchLine_75.endPoint(), SketchLine_69.result())
 SketchConstraintCoincidence_92.setName("SketchConstraintCoincidence_96")
-SketchArc_15 = Sketch_7.addArc(31.25000000000067, -4.750000000000669, 31.24999999998802, -4.499999999999997, 31, -4.750000022881151, False)
+SketchArc_15 = Sketch_7.addArc(31.25, -4.750000000010547, 31.24999999999071, -4.5, 31, -4.750000000010547, False)
 SketchConstraintCoincidence_93 = Sketch_7.setCoincident(SketchArc_15.startPoint(), SketchLine_64.endPoint())
 SketchConstraintCoincidence_93.setName("SketchConstraintCoincidence_97")
-SketchLine_77 = Sketch_7.addLine(31, -4.750000022881151, 31, -7.5)
+SketchLine_77 = Sketch_7.addLine(31, -4.75, 31, -7.5)
 SketchLine_77.setName("SketchLine_75")
 SketchLine_77.result().setName("SketchLine_75")
 SketchLine_77.setAuxiliary(True)
 SketchConstraintCoincidence_94 = Sketch_7.setCoincident(SketchArc_15.endPoint(), SketchLine_77.startPoint())
 SketchConstraintCoincidence_94.setName("SketchConstraintCoincidence_98")
-SketchConstraintTangent_3 = Sketch_7.setTangent(SketchArc_15.results()[1], SketchLine_77.result())
-SketchConstraintTangent_4 = Sketch_7.setTangent(SketchArc_15.results()[1], SketchLine_64.result())
+SketchConstraintTangent_4 = Sketch_7.setTangent(SketchArc_15.results()[1], SketchLine_77.result())
+SketchConstraintTangent_5 = Sketch_7.setTangent(SketchArc_15.results()[1], SketchLine_64.result())
 SketchConstraintCoincidence_95 = Sketch_7.setCoincident(SketchLine_70.endPoint(), SketchLine_77.endPoint())
 SketchConstraintCoincidence_95.setName("SketchConstraintCoincidence_99")
 SketchConstraintCoincidence_96 = Sketch_7.setCoincident(SketchLine_76.startPoint(), SketchLine_64.startPoint())
@@ -596,8 +596,8 @@ SketchConstraintCoincidence_97 = Sketch_7.setCoincident(SketchLine_77.startPoint
 SketchConstraintCoincidence_97.setName("SketchConstraintCoincidence_101")
 SketchConstraintCoincidence_98 = Sketch_7.setCoincident(SketchLine_64.endPoint(), SketchLine_76.result())
 SketchConstraintCoincidence_98.setName("SketchConstraintCoincidence_102")
-SketchArc_16 = Sketch_7.addArc(50.25, -6.749999999999999, 50.24999994039248, -7.5, 51.00000000000001, -6.749999999999998, False)
-SketchLine_78 = Sketch_7.addLine(31, -7.5, 50.24999994039248, -7.5)
+SketchArc_16 = Sketch_7.addArc(50.25, -6.75, 50.25, -7.5, 51, -6.75, False)
+SketchLine_78 = Sketch_7.addLine(31, -7.5, 50.25, -7.5)
 SketchLine_78.setName("SketchLine_77")
 SketchLine_78.result().setName("SketchLine_77")
 SketchLine_78.setAuxiliary(True)
@@ -605,8 +605,8 @@ SketchConstraintCoincidence_99 = Sketch_7.setCoincident(SketchArc_16.startPoint(
 SketchConstraintCoincidence_99.setName("SketchConstraintCoincidence_103")
 SketchConstraintCoincidence_100 = Sketch_7.setCoincident(SketchArc_16.endPoint(), SketchLine_65.startPoint())
 SketchConstraintCoincidence_100.setName("SketchConstraintCoincidence_104")
-SketchConstraintTangent_5 = Sketch_7.setTangent(SketchArc_16.results()[1], SketchLine_78.result())
-SketchConstraintTangent_6 = Sketch_7.setTangent(SketchArc_16.results()[1], SketchLine_65.result())
+SketchConstraintTangent_6 = Sketch_7.setTangent(SketchArc_16.results()[1], SketchLine_78.result())
+SketchConstraintTangent_7 = Sketch_7.setTangent(SketchArc_16.results()[1], SketchLine_65.result())
 SketchConstraintCoincidence_101 = Sketch_7.setCoincident(SketchLine_71.startPoint(), SketchLine_78.startPoint())
 SketchConstraintCoincidence_101.setName("SketchConstraintCoincidence_105")
 SketchConstraintCoincidence_102 = Sketch_7.setCoincident(SketchLine_75.endPoint(), SketchLine_65.endPoint())
@@ -615,13 +615,11 @@ SketchConstraintCoincidence_103 = Sketch_7.setCoincident(SketchLine_78.endPoint(
 SketchConstraintCoincidence_103.setName("SketchConstraintCoincidence_107")
 SketchConstraintCoincidence_104 = Sketch_7.setCoincident(SketchLine_65.startPoint(), SketchLine_75.result())
 SketchConstraintCoincidence_104.setName("SketchConstraintCoincidence_108")
-SketchArc_17 = Sketch_7.addArc(31.25000000000003, -7.250000000000001, 31, -7.249999999972618, 31.25000000003855, -7.5, False)
+SketchArc_17 = Sketch_7.addArc(31.25000000000166, -7.249999999978784, 31, -7.249999999978425, 31.25000000000632, -7.499999999999999, False)
 SketchConstraintCoincidence_105 = Sketch_7.setCoincident(SketchArc_17.startPoint(), SketchLine_66.endPoint())
 SketchConstraintCoincidence_105.setName("SketchConstraintCoincidence_109")
 SketchConstraintCoincidence_106 = Sketch_7.setCoincident(SketchArc_17.endPoint(), SketchLine_67.startPoint())
 SketchConstraintCoincidence_106.setName("SketchConstraintCoincidence_110")
-SketchConstraintTangent_7 = Sketch_7.setTangent(SketchArc_17.results()[1], SketchLine_67.result())
-SketchConstraintTangent_8 = Sketch_7.setTangent(SketchArc_17.results()[1], SketchLine_66.result())
 SketchConstraintCoincidence_107 = Sketch_7.setCoincident(SketchLine_78.endPoint(), SketchLine_67.endPoint())
 SketchConstraintCoincidence_107.setName("SketchConstraintCoincidence_111")
 SketchConstraintCoincidence_108 = Sketch_7.setCoincident(SketchLine_77.startPoint(), SketchLine_66.startPoint())
@@ -630,21 +628,26 @@ SketchConstraintCoincidence_109 = Sketch_7.setCoincident(SketchLine_67.startPoin
 SketchConstraintCoincidence_109.setName("SketchConstraintCoincidence_113")
 SketchConstraintCoincidence_110 = Sketch_7.setCoincident(SketchLine_66.endPoint(), SketchLine_77.result())
 SketchConstraintCoincidence_110.setName("SketchConstraintCoincidence_114")
-SketchConstraintRadius_5 = Sketch_7.setRadius(SketchArc_14.results()[1], 0.75)
-SketchConstraintRadius_6 = Sketch_7.setRadius(SketchArc_16.results()[1], 0.75)
-SketchConstraintRadius_7 = Sketch_7.setRadius(SketchArc_15.results()[1], 0.25)
-SketchConstraintRadius_8 = Sketch_7.setRadius(SketchArc_17.results()[1], 0.25)
+SketchConstraintRadius_4 = Sketch_7.setRadius(SketchArc_14.results()[1], 0.75)
+SketchConstraintRadius_5 = Sketch_7.setRadius(SketchArc_16.results()[1], 0.75)
+SketchConstraintRadius_6 = Sketch_7.setRadius(SketchArc_15.results()[1], 0.25)
+SketchConstraintTangent_8 = Sketch_7.setTangent(SketchArc_17.results()[1], SketchLine_67.result())
+SketchConstraintTangent_8.setName("SketchConstraintTangent_16")
+SketchConstraintTangent_9 = Sketch_7.setTangent(SketchArc_17.results()[1], SketchLine_66.result())
+SketchConstraintTangent_9.setName("SketchConstraintTangent_17")
+SketchConstraintRadius_7 = Sketch_7.setRadius(SketchArc_17.results()[1], 0.25)
+SketchConstraintRadius_7.setName("SketchConstraintRadius_10")
 model.do()
 ExtrusionCut_6 = model.addExtrusionCut(Part_1_doc, [model.selection("COMPOUND", "Sketch_7")], model.selection(), 0, 20, [model.selection("SOLID", "ExtrusionFuse_1_1")])
 Sketch_8 = model.addSketch(Part_1_doc, model.selection("FACE", "ExtrusionCut_6_1/Modfied_10"))
-SketchPoint_12 = Sketch_8.addPoint(53.99994409538203, -1.615587133892632e-027)
-SketchPoint_13 = Sketch_8.addPoint(53.99994409538203, -1.615587133892632e-027)
+SketchPoint_12 = Sketch_8.addPoint(54, 0)
+SketchPoint_13 = Sketch_8.addPoint(54, 0)
 SketchConstraintRigid_7 = Sketch_8.setFixed(SketchPoint_13.result())
 SketchConstraintRigid_7.setName("SketchConstraintRigid_16")
 SketchConstraintCoincidence_111 = Sketch_8.setCoincident(SketchPoint_12.coordinates(), SketchPoint_13.result())
 SketchConstraintCoincidence_111.setName("SketchConstraintCoincidence_115")
 SketchPoint_14 = Sketch_8.addPoint(54, 12)
-SketchLine_79 = Sketch_8.addLine(54, 12, 53.99994409538203, -1.615587133892632e-027)
+SketchLine_79 = Sketch_8.addLine(54, 12, 54, 0)
 SketchLine_79.setName("SketchLine_81")
 SketchLine_79.result().setName("SketchLine_81")
 SketchLine_79.setAuxiliary(True)
@@ -654,30 +657,30 @@ SketchConstraintCoincidence_113 = Sketch_8.setCoincident(SketchPoint_12.coordina
 SketchConstraintCoincidence_113.setName("SketchConstraintCoincidence_117")
 SketchConstraintCoincidence_114 = Sketch_8.setCoincident(SketchPoint_13.coordinates(), SketchLine_79.endPoint())
 SketchConstraintCoincidence_114.setName("SketchConstraintCoincidence_118")
-SketchPoint_15 = Sketch_8.addPoint(53.99999534128184, 11.00000000001085)
+SketchPoint_15 = Sketch_8.addPoint(54, 11)
 SketchConstraintCoincidence_115 = Sketch_8.setCoincident(SketchPoint_15.coordinates(), SketchLine_79.result())
 SketchConstraintCoincidence_115.setName("SketchConstraintCoincidence_119")
-SketchPoint_16 = Sketch_8.addPoint(53.99994875410019, 0.9999999999891482)
+SketchPoint_16 = Sketch_8.addPoint(54, 1)
 SketchConstraintCoincidence_116 = Sketch_8.setCoincident(SketchPoint_16.coordinates(), SketchLine_79.result())
 SketchConstraintCoincidence_116.setName("SketchConstraintCoincidence_120")
-SketchConstraintDistance_14 = Sketch_8.setDistance(SketchPoint_12.coordinates(), SketchPoint_16.coordinates(), 1)
-SketchConstraintDistance_15 = Sketch_8.setDistance(SketchPoint_14.coordinates(), SketchPoint_15.coordinates(), 1)
+SketchConstraintDistance_14 = Sketch_8.setDistance(SketchPoint_12.coordinates(), SketchPoint_16.coordinates(), 1, False)
+SketchConstraintDistance_15 = Sketch_8.setDistance(SketchPoint_14.coordinates(), SketchPoint_15.coordinates(), 1, False)
 SketchPoint_17 = Sketch_8.addPoint(54, 12)
 SketchConstraintCoincidence_117 = Sketch_8.setCoincident(SketchPoint_14.coordinates(), SketchPoint_17.coordinates())
 SketchConstraintCoincidence_117.setName("SketchConstraintCoincidence_121")
 SketchConstraintRigid_8 = Sketch_8.setFixed(SketchPoint_17.result())
 SketchConstraintRigid_8.setName("SketchConstraintRigid_17")
-SketchLine_80 = Sketch_8.addLine(53.99999534128184, 11.00000000001085, 43.53696016024325, 11.00000000001085)
+SketchLine_80 = Sketch_8.addLine(54, 11, 43.82041221793113, 11)
 SketchLine_80.setName("SketchLine_82")
 SketchLine_80.result().setName("SketchLine_82")
 SketchConstraintCoincidence_118 = Sketch_8.setCoincident(SketchPoint_15.coordinates(), SketchLine_80.startPoint())
 SketchConstraintCoincidence_118.setName("SketchConstraintCoincidence_122")
-SketchLine_81 = Sketch_8.addLine(43.53696016024325, 11.00000000001085, 43.56530536601203, 13.47539228785809)
+SketchLine_81 = Sketch_8.addLine(43.82041221793113, 11, 43.82041221793113, 13.36310636658867)
 SketchLine_81.setName("SketchLine_83")
 SketchLine_81.result().setName("SketchLine_83")
 SketchConstraintCoincidence_119 = Sketch_8.setCoincident(SketchLine_80.endPoint(), SketchLine_81.startPoint())
 SketchConstraintCoincidence_119.setName("SketchConstraintCoincidence_123")
-SketchLine_82 = Sketch_8.addLine(43.56530536601203, 13.47539228785809, 63.09515214070713, 13.47539228785809)
+SketchLine_82 = Sketch_8.addLine(43.82041221793113, 13.36310636658867, 63.09515214070713, 13.47539228785809)
 SketchLine_82.setName("SketchLine_84")
 SketchLine_82.result().setName("SketchLine_84")
 SketchConstraintCoincidence_120 = Sketch_8.setCoincident(SketchLine_81.endPoint(), SketchLine_82.startPoint())
@@ -692,12 +695,12 @@ SketchLine_84.setName("SketchLine_86")
 SketchLine_84.result().setName("SketchLine_86")
 SketchConstraintCoincidence_122 = Sketch_8.setCoincident(SketchLine_83.endPoint(), SketchLine_84.startPoint())
 SketchConstraintCoincidence_122.setName("SketchConstraintCoincidence_126")
-SketchLine_85 = Sketch_8.addLine(43.82041221793113, -1.802673621518767, 43.79206701216234, 0.9999999999891482)
+SketchLine_85 = Sketch_8.addLine(43.82041221793113, -1.802673621518767, 43.79206701216234, 1)
 SketchLine_85.setName("SketchLine_87")
 SketchLine_85.result().setName("SketchLine_87")
 SketchConstraintCoincidence_123 = Sketch_8.setCoincident(SketchLine_84.endPoint(), SketchLine_85.startPoint())
 SketchConstraintCoincidence_123.setName("SketchConstraintCoincidence_127")
-SketchLine_86 = Sketch_8.addLine(53.99994875410019, 0.9999999999891482, 43.79206701216234, 0.9999999999891482)
+SketchLine_86 = Sketch_8.addLine(54, 1, 43.79206701216234, 1)
 SketchLine_86.setName("SketchLine_88")
 SketchLine_86.result().setName("SketchLine_88")
 SketchConstraintCoincidence_124 = Sketch_8.setCoincident(SketchPoint_16.coordinates(), SketchLine_86.startPoint())
@@ -708,23 +711,24 @@ SketchConstraintHorizontal_16 = Sketch_8.setHorizontal(SketchLine_80.result())
 SketchConstraintHorizontal_16.setName("SketchConstraintHorizontal_17")
 SketchConstraintCoincidence_125 = Sketch_8.setCoincident(SketchLine_85.endPoint(), SketchLine_86.endPoint())
 SketchConstraintCoincidence_125.setName("SketchConstraintCoincidence_129")
-SketchArc_18 = Sketch_8.addArc(53.99995774377268, 6.000000000066637, 53.99999534128184, 11.00000000001085, 53.99994875410019, 0.9999999999891482, True)
-SketchConstraintCoincidence_126 = Sketch_8.setCoincident(SketchPoint_15.coordinates(), SketchArc_18.startPoint())
+SketchArc_18 = Sketch_8.addArc(54, 6, 54, 11, 54, 1, True)
+SketchConstraintCoincidence_126 = Sketch_8.setCoincident(SketchArc_18.center(), SketchLine_79.result())
 SketchConstraintCoincidence_126.setName("SketchConstraintCoincidence_130")
-SketchConstraintCoincidence_127 = Sketch_8.setCoincident(SketchLine_80.startPoint(), SketchArc_18.startPoint())
-SketchConstraintCoincidence_127.setName("SketchConstraintCoincidence_131")
-SketchConstraintCoincidence_128 = Sketch_8.setCoincident(SketchPoint_16.coordinates(), SketchArc_18.endPoint())
-SketchConstraintCoincidence_128.setName("SketchConstraintCoincidence_132")
-SketchConstraintCoincidence_129 = Sketch_8.setCoincident(SketchLine_86.startPoint(), SketchArc_18.endPoint())
-SketchConstraintCoincidence_129.setName("SketchConstraintCoincidence_133")
-SketchConstraintRadius_9 = Sketch_8.setRadius(SketchArc_18.results()[1], 5)
-SketchLine_87 = Sketch_8.addLine(43.50261344273609, 8.249999999999998, 43.50261344273609, 3.749999999999998)
+SketchConstraintCoincidence_127 = Sketch_8.setCoincident(SketchPoint_15.coordinates(), SketchArc_18.startPoint())
+SketchConstraintCoincidence_127.setName("SketchConstraintCoincidence_130_")
+SketchConstraintCoincidence_128 = Sketch_8.setCoincident(SketchLine_80.startPoint(), SketchArc_18.startPoint())
+SketchConstraintCoincidence_128.setName("SketchConstraintCoincidence_131")
+SketchConstraintCoincidence_129 = Sketch_8.setCoincident(SketchPoint_16.coordinates(), SketchArc_18.endPoint())
+SketchConstraintCoincidence_129.setName("SketchConstraintCoincidence_132")
+SketchConstraintCoincidence_130 = Sketch_8.setCoincident(SketchLine_86.startPoint(), SketchArc_18.endPoint())
+SketchConstraintCoincidence_130.setName("SketchConstraintCoincidence_133")
+SketchLine_87 = Sketch_8.addLine(43.50261344273609, 8.25, 43.50261344273609, 3.75)
 SketchLine_87.setName("SketchLine_90")
 SketchLine_87.result().setName("SketchLine_90")
 SketchConstraintVertical_14 = Sketch_8.setVertical(SketchLine_87.result())
 SketchConstraintLength_14 = Sketch_8.setLength(SketchLine_87.result(), 4.5)
 SketchConstraintLength_14.setName("SketchConstraintLength_15")
-SketchPoint_18 = Sketch_8.addPoint(43.50261344273609, 5.999999999999998)
+SketchPoint_18 = Sketch_8.addPoint(43.50261344273609, 6)
 SketchConstraintMiddle_5 = Sketch_8.setMiddlePoint(SketchPoint_18.coordinates(), SketchLine_87.result())
 SketchPoint_19 = Sketch_8.addPoint(0, 6)
 SketchPoint_19.setAuxiliary(True)
@@ -733,70 +737,70 @@ SketchLine_88.setName("SketchLine_94")
 SketchLine_88.result().setName("SketchLine_94")
 SketchConstraintRigid_9 = Sketch_8.setFixed(SketchLine_88.result())
 SketchConstraintRigid_9.setName("SketchConstraintRigid_19")
-SketchConstraintCoincidence_130 = Sketch_8.setCoincident(SketchPoint_19.coordinates(), SketchLine_88.result())
-SketchConstraintCoincidence_130.setName("SketchConstraintCoincidence_139")
+SketchConstraintCoincidence_131 = Sketch_8.setCoincident(SketchPoint_19.coordinates(), SketchLine_88.result())
+SketchConstraintCoincidence_131.setName("SketchConstraintCoincidence_139")
 SketchConstraintMiddle_6 = Sketch_8.setMiddlePoint(SketchLine_88.result(), SketchPoint_19.coordinates())
 SketchLine_89 = Sketch_8.addLine(0, 6, 68.8619738308997, 6)
 SketchLine_89.setName("SketchLine_95")
 SketchLine_89.result().setName("SketchLine_95")
 SketchLine_89.setAuxiliary(True)
-SketchConstraintCoincidence_131 = Sketch_8.setCoincident(SketchPoint_19.coordinates(), SketchLine_89.startPoint())
-SketchConstraintCoincidence_131.setName("SketchConstraintCoincidence_140")
+SketchConstraintCoincidence_132 = Sketch_8.setCoincident(SketchPoint_19.coordinates(), SketchLine_89.startPoint())
+SketchConstraintCoincidence_132.setName("SketchConstraintCoincidence_140")
 SketchConstraintHorizontal_17 = Sketch_8.setHorizontal(SketchLine_89.result())
 SketchConstraintHorizontal_17.setName("SketchConstraintHorizontal_20")
 SketchPoint_20 = Sketch_8.addPoint(48.00130672136804, 6)
-SketchConstraintCoincidence_132 = Sketch_8.setCoincident(SketchPoint_20.coordinates(), SketchLine_89.result())
-SketchConstraintCoincidence_132.setName("SketchConstraintCoincidence_146")
-SketchLine_90 = Sketch_8.addLine(43.50261344273609, 8.249999999999998, 51.26978940411676, 8.249999999999998)
+SketchConstraintCoincidence_133 = Sketch_8.setCoincident(SketchPoint_20.coordinates(), SketchLine_89.result())
+SketchConstraintCoincidence_133.setName("SketchConstraintCoincidence_146")
+SketchLine_90 = Sketch_8.addLine(43.50261344273609, 8.25, 51.26978940411676, 8.25)
 SketchLine_90.setName("SketchLine_92")
 SketchLine_90.result().setName("SketchLine_92")
-SketchConstraintCoincidence_133 = Sketch_8.setCoincident(SketchLine_87.startPoint(), SketchLine_90.startPoint())
-SketchConstraintCoincidence_133.setName("SketchConstraintCoincidence_135")
-SketchLine_91 = Sketch_8.addLine(51.26978940411676, 8.249999999999998, 51.26978940411676, 3.749999999999998)
+SketchConstraintCoincidence_134 = Sketch_8.setCoincident(SketchLine_87.startPoint(), SketchLine_90.startPoint())
+SketchConstraintCoincidence_134.setName("SketchConstraintCoincidence_135")
+SketchLine_91 = Sketch_8.addLine(51.26978940411676, 8.25, 51.26978940411676, 3.75)
 SketchLine_91.setName("SketchLine_97")
 SketchLine_91.result().setName("SketchLine_97")
-SketchConstraintCoincidence_134 = Sketch_8.setCoincident(SketchLine_90.endPoint(), SketchLine_91.startPoint())
-SketchConstraintCoincidence_134.setName("SketchConstraintCoincidence_136")
-SketchLine_92 = Sketch_8.addLine(51.26978940411676, 3.749999999999998, 43.50261344273609, 3.749999999999998)
+SketchConstraintCoincidence_135 = Sketch_8.setCoincident(SketchLine_90.endPoint(), SketchLine_91.startPoint())
+SketchConstraintCoincidence_135.setName("SketchConstraintCoincidence_136")
+SketchLine_92 = Sketch_8.addLine(51.26978940411676, 3.75, 43.50261344273609, 3.75)
 SketchLine_92.setName("SketchLine_98")
 SketchLine_92.result().setName("SketchLine_98")
-SketchConstraintCoincidence_135 = Sketch_8.setCoincident(SketchLine_91.endPoint(), SketchLine_92.startPoint())
-SketchConstraintCoincidence_135.setName("SketchConstraintCoincidence_137")
-SketchConstraintCoincidence_136 = Sketch_8.setCoincident(SketchLine_87.endPoint(), SketchLine_92.endPoint())
-SketchConstraintCoincidence_136.setName("SketchConstraintCoincidence_138")
+SketchConstraintCoincidence_136 = Sketch_8.setCoincident(SketchLine_91.endPoint(), SketchLine_92.startPoint())
+SketchConstraintCoincidence_136.setName("SketchConstraintCoincidence_137")
+SketchConstraintCoincidence_137 = Sketch_8.setCoincident(SketchLine_87.endPoint(), SketchLine_92.endPoint())
+SketchConstraintCoincidence_137.setName("SketchConstraintCoincidence_138")
 SketchConstraintHorizontal_18 = Sketch_8.setHorizontal(SketchLine_92.result())
 SketchConstraintHorizontal_19 = Sketch_8.setHorizontal(SketchLine_90.result())
 SketchConstraintVertical_15 = Sketch_8.setVertical(SketchLine_91.result())
-SketchLine_93 = Sketch_8.addLine(43.50261344273609, 3.749999999999998, 51.26978940411676, 8.249999999999998)
+SketchLine_93 = Sketch_8.addLine(43.50261344273609, 3.75, 51.26978940411676, 8.25)
 SketchLine_93.setAuxiliary(True)
-SketchConstraintCoincidence_137 = Sketch_8.setCoincident(SketchLine_87.endPoint(), SketchLine_93.startPoint())
-SketchConstraintCoincidence_137.setName("SketchConstraintCoincidence_141")
-SketchConstraintCoincidence_138 = Sketch_8.setCoincident(SketchLine_92.endPoint(), SketchLine_93.startPoint())
-SketchConstraintCoincidence_138.setName("SketchConstraintCoincidence_142")
-SketchConstraintCoincidence_139 = Sketch_8.setCoincident(SketchLine_91.startPoint(), SketchLine_93.endPoint())
-SketchConstraintCoincidence_139.setName("SketchConstraintCoincidence_143")
-SketchPoint_21 = Sketch_8.addPoint(47.38620142342643, 5.999999999999998)
+SketchConstraintCoincidence_138 = Sketch_8.setCoincident(SketchLine_87.endPoint(), SketchLine_93.startPoint())
+SketchConstraintCoincidence_138.setName("SketchConstraintCoincidence_141")
+SketchConstraintCoincidence_139 = Sketch_8.setCoincident(SketchLine_92.endPoint(), SketchLine_93.startPoint())
+SketchConstraintCoincidence_139.setName("SketchConstraintCoincidence_142")
+SketchConstraintCoincidence_140 = Sketch_8.setCoincident(SketchLine_91.startPoint(), SketchLine_93.endPoint())
+SketchConstraintCoincidence_140.setName("SketchConstraintCoincidence_143")
+SketchPoint_21 = Sketch_8.addPoint(47.38620142342643, 6)
 SketchPoint_21.setAuxiliary(True)
-SketchConstraintCoincidence_140 = Sketch_8.setCoincident(SketchPoint_21.coordinates(), SketchLine_93.result())
-SketchConstraintCoincidence_140.setName("SketchConstraintCoincidence_144")
+SketchConstraintCoincidence_141 = Sketch_8.setCoincident(SketchPoint_21.coordinates(), SketchLine_93.result())
+SketchConstraintCoincidence_141.setName("SketchConstraintCoincidence_144")
 SketchConstraintMiddle_7 = Sketch_8.setMiddlePoint(SketchPoint_21.coordinates(), SketchLine_93.result())
-SketchConstraintCoincidence_141 = Sketch_8.setCoincident(SketchPoint_21.coordinates(), SketchLine_89.result())
-SketchConstraintCoincidence_141.setName("SketchConstraintCoincidence_145")
+SketchConstraintCoincidence_142 = Sketch_8.setCoincident(SketchPoint_21.coordinates(), SketchLine_89.result())
+SketchConstraintCoincidence_142.setName("SketchConstraintCoincidence_145")
 model.do()
 ExtrusionCut_7 = model.addExtrusionCut(Part_1_doc, [model.selection("COMPOUND", "Sketch_8")], model.selection(), 10, 0, [model.selection("SOLID", "ExtrusionCut_6_1")])
-Sketch_9 = model.addSketch(Part_1_doc, model.selection("FACE", "ExtrusionCut_7_1/Modfied_32"))
-SketchLine_94 = Sketch_9.addLine(21.00014787857639, 4.163450069699051, 21.00014787857639, 0)
+Sketch_9 = model.addSketch(Part_1_doc, model.selection("FACE", "ExtrusionCut_7_1/Modfied_26"))
+SketchLine_94 = Sketch_9.addLine(21, 4.163450069699051, 21, 0)
 SketchLine_94.setName("SketchLine_107")
 SketchLine_94.result().setName("SketchLine_107")
-SketchLine_95 = Sketch_9.addLine(29, 5, 21.00014787857639, 5)
+SketchLine_95 = Sketch_9.addLine(29, 5, 21, 5)
 SketchLine_95.setName("SketchLine_96")
 SketchLine_95.result().setName("SketchLine_96")
 SketchLine_95.setAuxiliary(True)
-SketchArc_19 = Sketch_9.addArc(25.00007393928819, 8.000098583186649, 21.53790262696343, 4.392693725936027, 28.46224525161297, 4.392693725936026, False)
+SketchArc_19 = Sketch_9.addArc(25, 8, 21.53774043054522, 4.392679848735523, 28.46225956945478, 4.392679848735522, False)
 SketchArc_19.setName("SketchArc_22")
 SketchArc_19.result().setName("SketchArc_22")
 SketchArc_19.results()[1].setName("SketchArc_22_2")
-SketchLine_96 = Sketch_9.addLine(21.00014787857639, 0, 29, 0)
+SketchLine_96 = Sketch_9.addLine(21, 0, 29, 0)
 SketchLine_96.setName("SketchLine_100")
 SketchLine_96.result().setName("SketchLine_100")
 SketchLine_97 = Sketch_9.addLine(29, 0, 29, 4.163450069699049)
@@ -806,130 +810,130 @@ SketchLine_98 = Sketch_9.addLine(29, 0, 29, 5)
 SketchLine_98.setName("SketchLine_101")
 SketchLine_98.result().setName("SketchLine_101")
 SketchLine_98.setAuxiliary(True)
-SketchConstraintCoincidence_142 = Sketch_9.setCoincident(SketchLine_98.endPoint(), SketchLine_95.startPoint())
-SketchConstraintCoincidence_142.setName("SketchConstraintCoincidence_147")
-SketchLine_99 = Sketch_9.addLine(21.00014787857639, 5, 21.00014787857639, 0)
+SketchConstraintCoincidence_143 = Sketch_9.setCoincident(SketchLine_98.endPoint(), SketchLine_95.startPoint())
+SketchConstraintCoincidence_143.setName("SketchConstraintCoincidence_147")
+SketchLine_99 = Sketch_9.addLine(21, 5, 21, 0)
 SketchLine_99.setAuxiliary(True)
-SketchConstraintCoincidence_143 = Sketch_9.setCoincident(SketchLine_95.endPoint(), SketchLine_99.startPoint())
-SketchConstraintCoincidence_143.setName("SketchConstraintCoincidence_148")
-SketchConstraintCoincidence_144 = Sketch_9.setCoincident(SketchLine_99.endPoint(), SketchLine_96.startPoint())
-SketchConstraintCoincidence_144.setName("SketchConstraintCoincidence_149")
-SketchConstraintCoincidence_145 = Sketch_9.setCoincident(SketchLine_96.endPoint(), SketchLine_98.startPoint())
-SketchConstraintCoincidence_145.setName("SketchConstraintCoincidence_150")
+SketchConstraintCoincidence_144 = Sketch_9.setCoincident(SketchLine_95.endPoint(), SketchLine_99.startPoint())
+SketchConstraintCoincidence_144.setName("SketchConstraintCoincidence_148")
+SketchConstraintCoincidence_145 = Sketch_9.setCoincident(SketchLine_99.endPoint(), SketchLine_96.startPoint())
+SketchConstraintCoincidence_145.setName("SketchConstraintCoincidence_149")
+SketchConstraintCoincidence_146 = Sketch_9.setCoincident(SketchLine_96.endPoint(), SketchLine_98.startPoint())
+SketchConstraintCoincidence_146.setName("SketchConstraintCoincidence_150")
 SketchConstraintHorizontal_20 = Sketch_9.setHorizontal(SketchLine_95.result())
 SketchConstraintHorizontal_20.setName("SketchConstraintHorizontal_21")
 SketchConstraintVertical_16 = Sketch_9.setVertical(SketchLine_99.result())
 SketchConstraintHorizontal_21 = Sketch_9.setHorizontal(SketchLine_96.result())
 SketchConstraintHorizontal_21.setName("SketchConstraintHorizontal_22")
 SketchConstraintVertical_17 = Sketch_9.setVertical(SketchLine_98.result())
-SketchPoint_22 = Sketch_9.addPoint(21.00014787857639, 7.5)
-SketchConstraintCoincidence_146 = Sketch_9.setCoincident(SketchLine_99.result(), SketchPoint_22.coordinates())
-SketchConstraintCoincidence_146.setName("SketchConstraintCoincidence_151")
+SketchPoint_22 = Sketch_9.addPoint(21, 7.5)
+SketchConstraintCoincidence_147 = Sketch_9.setCoincident(SketchLine_99.result(), SketchPoint_22.coordinates())
+SketchConstraintCoincidence_147.setName("SketchConstraintCoincidence_151")
 SketchConstraintRigid_10 = Sketch_9.setFixed(SketchPoint_22.result())
 SketchConstraintRigid_10.setName("SketchConstraintRigid_18")
 SketchPoint_23 = Sketch_9.addPoint(29, 7.5)
-SketchConstraintCoincidence_147 = Sketch_9.setCoincident(SketchLine_98.result(), SketchPoint_23.coordinates())
-SketchConstraintCoincidence_147.setName("SketchConstraintCoincidence_152")
+SketchConstraintCoincidence_148 = Sketch_9.setCoincident(SketchLine_98.result(), SketchPoint_23.coordinates())
+SketchConstraintCoincidence_148.setName("SketchConstraintCoincidence_152")
 SketchConstraintRigid_11 = Sketch_9.setFixed(SketchPoint_23.result())
 SketchConstraintRigid_11.setName("SketchConstraintRigid_20")
 SketchConstraintLength_15 = Sketch_9.setLength(SketchLine_99.result(), 5)
 SketchConstraintLength_15.setName("SketchConstraintLength_16")
-SketchLine_100 = Sketch_9.addLine(0, 0, 45.49999999999999, 0)
+SketchLine_100 = Sketch_9.addLine(0, 0, 45.5, 0)
 SketchLine_100.setName("SketchLine_102")
 SketchLine_100.result().setName("SketchLine_102")
-SketchConstraintCoincidence_148 = Sketch_9.setCoincident(SketchLine_99.endPoint(), SketchLine_100.result())
-SketchConstraintCoincidence_148.setName("SketchConstraintCoincidence_153")
+SketchConstraintCoincidence_149 = Sketch_9.setCoincident(SketchLine_99.endPoint(), SketchLine_100.result())
+SketchConstraintCoincidence_149.setName("SketchConstraintCoincidence_153")
 SketchConstraintRigid_12 = Sketch_9.setFixed(SketchLine_100.result())
 SketchConstraintRigid_12.setName("SketchConstraintRigid_21")
-SketchArc_20 = Sketch_9.addArc(25.00007393928819, 8.000098583186649, 21.00014787857639, 5, 29, 5, False)
+SketchArc_20 = Sketch_9.addArc(25, 8, 21, 5, 29, 5, False)
 SketchArc_20.setName("SketchArc_19")
 SketchArc_20.result().setName("SketchArc_19")
 SketchArc_20.results()[1].setName("SketchArc_19_2")
 SketchArc_20.setAuxiliary(True)
-SketchConstraintCoincidence_149 = Sketch_9.setCoincident(SketchLine_95.endPoint(), SketchArc_20.startPoint())
-SketchConstraintCoincidence_149.setName("SketchConstraintCoincidence_154")
-SketchConstraintCoincidence_150 = Sketch_9.setCoincident(SketchLine_99.startPoint(), SketchArc_20.startPoint())
-SketchConstraintCoincidence_150.setName("SketchConstraintCoincidence_155")
-SketchConstraintCoincidence_151 = Sketch_9.setCoincident(SketchLine_95.startPoint(), SketchArc_20.endPoint())
-SketchConstraintCoincidence_151.setName("SketchConstraintCoincidence_156")
-SketchConstraintCoincidence_152 = Sketch_9.setCoincident(SketchLine_98.endPoint(), SketchArc_20.endPoint())
-SketchConstraintCoincidence_152.setName("SketchConstraintCoincidence_157")
-SketchConstraintRadius_10 = Sketch_9.setRadius(SketchArc_20.results()[1], 5)
+SketchConstraintCoincidence_150 = Sketch_9.setCoincident(SketchLine_95.endPoint(), SketchArc_20.startPoint())
+SketchConstraintCoincidence_150.setName("SketchConstraintCoincidence_154")
+SketchConstraintCoincidence_151 = Sketch_9.setCoincident(SketchLine_99.startPoint(), SketchArc_20.startPoint())
+SketchConstraintCoincidence_151.setName("SketchConstraintCoincidence_155")
+SketchConstraintCoincidence_152 = Sketch_9.setCoincident(SketchLine_95.startPoint(), SketchArc_20.endPoint())
+SketchConstraintCoincidence_152.setName("SketchConstraintCoincidence_156")
+SketchConstraintCoincidence_153 = Sketch_9.setCoincident(SketchLine_98.endPoint(), SketchArc_20.endPoint())
+SketchConstraintCoincidence_153.setName("SketchConstraintCoincidence_157")
+SketchConstraintRadius_8 = Sketch_9.setRadius(SketchArc_20.results()[1], 5)
 SketchLine_101 = Sketch_9.addLine(1, 0, 1, 1.8)
 SketchLine_101.setName("SketchLine_103")
 SketchLine_101.result().setName("SketchLine_103")
-SketchConstraintCoincidence_153 = Sketch_9.setCoincident(SketchLine_101.startPoint(), SketchLine_100.result())
-SketchConstraintCoincidence_153.setName("SketchConstraintCoincidence_158")
+SketchConstraintCoincidence_154 = Sketch_9.setCoincident(SketchLine_101.startPoint(), SketchLine_100.result())
+SketchConstraintCoincidence_154.setName("SketchConstraintCoincidence_158")
 SketchLine_102 = Sketch_9.addLine(1, 1.8, 8, 3.389761862250954)
 SketchLine_102.setName("SketchLine_104")
 SketchLine_102.result().setName("SketchLine_104")
-SketchConstraintCoincidence_154 = Sketch_9.setCoincident(SketchLine_101.endPoint(), SketchLine_102.startPoint())
-SketchConstraintCoincidence_154.setName("SketchConstraintCoincidence_159")
+SketchConstraintCoincidence_155 = Sketch_9.setCoincident(SketchLine_101.endPoint(), SketchLine_102.startPoint())
+SketchConstraintCoincidence_155.setName("SketchConstraintCoincidence_159")
 SketchLine_103 = Sketch_9.addLine(8, 3.389761862250954, 8, 0)
 SketchLine_103.setName("SketchLine_105")
 SketchLine_103.result().setName("SketchLine_105")
-SketchConstraintCoincidence_155 = Sketch_9.setCoincident(SketchLine_102.endPoint(), SketchLine_103.startPoint())
-SketchConstraintCoincidence_155.setName("SketchConstraintCoincidence_160")
+SketchConstraintCoincidence_156 = Sketch_9.setCoincident(SketchLine_102.endPoint(), SketchLine_103.startPoint())
+SketchConstraintCoincidence_156.setName("SketchConstraintCoincidence_160")
 SketchLine_104 = Sketch_9.addLine(8, 0, 1, 0)
 SketchLine_104.setName("SketchLine_106")
 SketchLine_104.result().setName("SketchLine_106")
-SketchConstraintCoincidence_156 = Sketch_9.setCoincident(SketchLine_103.endPoint(), SketchLine_104.startPoint())
-SketchConstraintCoincidence_156.setName("SketchConstraintCoincidence_161")
-SketchConstraintCoincidence_157 = Sketch_9.setCoincident(SketchLine_101.startPoint(), SketchLine_104.endPoint())
-SketchConstraintCoincidence_157.setName("SketchConstraintCoincidence_162")
-SketchConstraintCoincidence_158 = Sketch_9.setCoincident(SketchLine_104.startPoint(), SketchLine_100.result())
-SketchConstraintCoincidence_158.setName("SketchConstraintCoincidence_163")
+SketchConstraintCoincidence_157 = Sketch_9.setCoincident(SketchLine_103.endPoint(), SketchLine_104.startPoint())
+SketchConstraintCoincidence_157.setName("SketchConstraintCoincidence_161")
+SketchConstraintCoincidence_158 = Sketch_9.setCoincident(SketchLine_101.startPoint(), SketchLine_104.endPoint())
+SketchConstraintCoincidence_158.setName("SketchConstraintCoincidence_162")
+SketchConstraintCoincidence_159 = Sketch_9.setCoincident(SketchLine_104.startPoint(), SketchLine_100.result())
+SketchConstraintCoincidence_159.setName("SketchConstraintCoincidence_163")
 SketchConstraintVertical_18 = Sketch_9.setVertical(SketchLine_103.result())
 SketchConstraintVertical_19 = Sketch_9.setVertical(SketchLine_101.result())
 SketchConstraintLength_16 = Sketch_9.setLength(SketchLine_104.result(), 7)
 SketchConstraintLength_16.setName("SketchConstraintLength_17")
-SketchConstraintDistance_16 = Sketch_9.setDistance(SketchLine_101.result(), SketchLine_100.startPoint(), 1)
+SketchConstraintDistance_16 = Sketch_9.setDistance(SketchLine_101.result(), SketchLine_100.startPoint(), 1, False)
 SketchConstraintLength_17 = Sketch_9.setLength(SketchLine_101.result(), 1.8)
 SketchConstraintLength_17.setName("SketchConstraintLength_18")
-SketchArc_21 = Sketch_9.addArc(21.3178882838101, 4.163450069699051, 21.53790262696343, 4.392693725936027, 21.00014787857639, 4.163450069699051, False)
-SketchArc_22 = Sketch_9.addArc(25.00007393928819, 8.000098583186649, 21.53790262696343, 4.392693725936027, 29, 5, False)
+SketchArc_21 = Sketch_9.addArc(21.31772863153846, 4.163450069699051, 21.53774043054522, 4.392679848735523, 21, 4.163450069699051, False)
+SketchArc_22 = Sketch_9.addArc(25, 8, 21.53774043054522, 4.392679848735523, 29, 5, False)
 SketchArc_22.setName("SketchArc_20")
 SketchArc_22.result().setName("SketchArc_20")
 SketchArc_22.results()[1].setName("SketchArc_20_2")
 SketchArc_22.setAuxiliary(True)
-SketchConstraintCoincidence_159 = Sketch_9.setCoincident(SketchArc_21.startPoint(), SketchArc_22.startPoint())
-SketchConstraintCoincidence_159.setName("SketchConstraintCoincidence_164")
-SketchConstraintCoincidence_160 = Sketch_9.setCoincident(SketchArc_21.endPoint(), SketchLine_94.startPoint())
-SketchConstraintCoincidence_160.setName("SketchConstraintCoincidence_165")
-SketchConstraintTangent_9 = Sketch_9.setTangent(SketchArc_21.results()[1], SketchLine_94.result())
-SketchConstraintTangent_10 = Sketch_9.setTangent(SketchArc_21.results()[1], SketchArc_22.results()[1])
-SketchConstraintCoincidence_161 = Sketch_9.setCoincident(SketchLine_99.endPoint(), SketchLine_94.endPoint())
-SketchConstraintCoincidence_161.setName("SketchConstraintCoincidence_166")
-SketchConstraintCoincidence_162 = Sketch_9.setCoincident(SketchArc_20.endPoint(), SketchArc_22.endPoint())
-SketchConstraintCoincidence_162.setName("SketchConstraintCoincidence_167")
-SketchConstraintTangent_11 = Sketch_9.setTangent(SketchArc_20.results()[1], SketchArc_22.results()[1])
-SketchConstraintCoincidence_163 = Sketch_9.setCoincident(SketchLine_94.startPoint(), SketchLine_99.result())
-SketchConstraintCoincidence_163.setName("SketchConstraintCoincidence_168")
-SketchConstraintCoincidence_164 = Sketch_9.setCoincident(SketchArc_22.startPoint(), SketchArc_20.results()[1])
-SketchConstraintCoincidence_164.setName("SketchConstraintCoincidence_169")
-SketchArc_23 = Sketch_9.addArc(28.68225959476629, 4.163450069699049, 29, 4.163450069699049, 28.46224525161297, 4.392693725936026, False)
-SketchConstraintCoincidence_165 = Sketch_9.setCoincident(SketchArc_23.startPoint(), SketchLine_97.endPoint())
-SketchConstraintCoincidence_165.setName("SketchConstraintCoincidence_170")
-SketchConstraintCoincidence_166 = Sketch_9.setCoincident(SketchArc_23.endPoint(), SketchArc_19.endPoint())
-SketchConstraintCoincidence_166.setName("SketchConstraintCoincidence_171")
-SketchConstraintTangent_12 = Sketch_9.setTangent(SketchArc_23.results()[1], SketchArc_19.results()[1])
-SketchConstraintTangent_13 = Sketch_9.setTangent(SketchArc_23.results()[1], SketchLine_97.result())
-SketchConstraintCoincidence_167 = Sketch_9.setCoincident(SketchArc_22.startPoint(), SketchArc_19.startPoint())
-SketchConstraintCoincidence_167.setName("SketchConstraintCoincidence_172")
-SketchConstraintCoincidence_168 = Sketch_9.setCoincident(SketchLine_98.startPoint(), SketchLine_97.startPoint())
-SketchConstraintCoincidence_168.setName("SketchConstraintCoincidence_173")
-SketchConstraintTangent_14 = Sketch_9.setTangent(SketchArc_22.results()[1], SketchArc_19.results()[1])
-SketchConstraintCoincidence_169 = Sketch_9.setCoincident(SketchArc_19.endPoint(), SketchArc_22.results()[1])
-SketchConstraintCoincidence_169.setName("SketchConstraintCoincidence_174")
-SketchConstraintCoincidence_170 = Sketch_9.setCoincident(SketchLine_97.endPoint(), SketchLine_98.result())
-SketchConstraintCoincidence_170.setName("SketchConstraintCoincidence_175")
+SketchConstraintCoincidence_160 = Sketch_9.setCoincident(SketchArc_21.startPoint(), SketchArc_22.startPoint())
+SketchConstraintCoincidence_160.setName("SketchConstraintCoincidence_164")
+SketchConstraintCoincidence_161 = Sketch_9.setCoincident(SketchArc_21.endPoint(), SketchLine_94.startPoint())
+SketchConstraintCoincidence_161.setName("SketchConstraintCoincidence_165")
+SketchConstraintTangent_10 = Sketch_9.setTangent(SketchArc_21.results()[1], SketchLine_94.result())
+SketchConstraintTangent_11 = Sketch_9.setTangent(SketchArc_21.results()[1], SketchArc_22.results()[1])
+SketchConstraintCoincidence_162 = Sketch_9.setCoincident(SketchLine_99.endPoint(), SketchLine_94.endPoint())
+SketchConstraintCoincidence_162.setName("SketchConstraintCoincidence_166")
+SketchConstraintCoincidence_163 = Sketch_9.setCoincident(SketchArc_20.endPoint(), SketchArc_22.endPoint())
+SketchConstraintCoincidence_163.setName("SketchConstraintCoincidence_167")
+SketchConstraintTangent_12 = Sketch_9.setTangent(SketchArc_20.results()[1], SketchArc_22.results()[1])
+SketchConstraintCoincidence_164 = Sketch_9.setCoincident(SketchLine_94.startPoint(), SketchLine_99.result())
+SketchConstraintCoincidence_164.setName("SketchConstraintCoincidence_168")
+SketchConstraintCoincidence_165 = Sketch_9.setCoincident(SketchArc_22.startPoint(), SketchArc_20.results()[1])
+SketchConstraintCoincidence_165.setName("SketchConstraintCoincidence_169")
+SketchArc_23 = Sketch_9.addArc(28.68227136846154, 4.163450069699049, 29, 4.163450069699049, 28.46225956945478, 4.392679848735522, False)
+SketchConstraintCoincidence_166 = Sketch_9.setCoincident(SketchArc_23.startPoint(), SketchLine_97.endPoint())
+SketchConstraintCoincidence_166.setName("SketchConstraintCoincidence_170")
+SketchConstraintCoincidence_167 = Sketch_9.setCoincident(SketchArc_23.endPoint(), SketchArc_19.endPoint())
+SketchConstraintCoincidence_167.setName("SketchConstraintCoincidence_171")
+SketchConstraintTangent_13 = Sketch_9.setTangent(SketchArc_23.results()[1], SketchArc_19.results()[1])
+SketchConstraintTangent_14 = Sketch_9.setTangent(SketchArc_23.results()[1], SketchLine_97.result())
+SketchConstraintCoincidence_168 = Sketch_9.setCoincident(SketchArc_22.startPoint(), SketchArc_19.startPoint())
+SketchConstraintCoincidence_168.setName("SketchConstraintCoincidence_172")
+SketchConstraintCoincidence_169 = Sketch_9.setCoincident(SketchLine_98.startPoint(), SketchLine_97.startPoint())
+SketchConstraintCoincidence_169.setName("SketchConstraintCoincidence_173")
+SketchConstraintTangent_15 = Sketch_9.setTangent(SketchArc_22.results()[1], SketchArc_19.results()[1])
+SketchConstraintCoincidence_170 = Sketch_9.setCoincident(SketchArc_19.endPoint(), SketchArc_22.results()[1])
+SketchConstraintCoincidence_170.setName("SketchConstraintCoincidence_174")
+SketchConstraintCoincidence_171 = Sketch_9.setCoincident(SketchLine_97.endPoint(), SketchLine_98.result())
+SketchConstraintCoincidence_171.setName("SketchConstraintCoincidence_175")
 model.do()
 Plane_7 = model.addPlane(Part_1_doc, model.selection("FACE", "Plane_2"), 4, False)
 Plane_8 = model.addPlane(Part_1_doc, model.selection("FACE", "Plane_2"), 4, True)
 ExtrusionCut_8 = model.addExtrusionCut(Part_1_doc, [model.selection("COMPOUND", "Sketch_9")], model.selection(), model.selection("FACE", "Plane_5"), 0, model.selection("FACE", "Plane_4"), 0, [model.selection("SOLID", "ExtrusionCut_7_1")])
 Sketch_10 = model.addSketch(Part_1_doc, model.selection("FACE", "ExtrusionCut_8_1/Modfied_5"))
 SketchCircle_1 = Sketch_10.addCircle(12, 6, 1)
-SketchConstraintRadius_11 = Sketch_10.setRadius(SketchCircle_1.results()[1], 1)
+SketchConstraintRadius_9 = Sketch_10.setRadius(SketchCircle_1.results()[1], 1)
 SketchPoint_24 = Sketch_10.addPoint(0, 6)
 SketchPoint_24.setAuxiliary(True)
 SketchLine_105 = Sketch_10.addLine(0, 0, 0, 12)
@@ -937,20 +941,20 @@ SketchLine_105.setName("SketchLine_109")
 SketchLine_105.result().setName("SketchLine_109")
 SketchConstraintRigid_13 = Sketch_10.setFixed(SketchLine_105.result())
 SketchConstraintRigid_13.setName("SketchConstraintRigid_22")
-SketchConstraintCoincidence_171 = Sketch_10.setCoincident(SketchPoint_24.coordinates(), SketchLine_105.result())
-SketchConstraintCoincidence_171.setName("SketchConstraintCoincidence_176")
+SketchConstraintCoincidence_172 = Sketch_10.setCoincident(SketchPoint_24.coordinates(), SketchLine_105.result())
+SketchConstraintCoincidence_172.setName("SketchConstraintCoincidence_176")
 SketchConstraintMiddle_8 = Sketch_10.setMiddlePoint(SketchLine_105.result(), SketchPoint_24.coordinates())
 SketchLine_106 = Sketch_10.addLine(0, 6, 17.31036191565843, 6)
 SketchLine_106.setName("SketchLine_110")
 SketchLine_106.result().setName("SketchLine_110")
 SketchLine_106.setAuxiliary(True)
-SketchConstraintCoincidence_172 = Sketch_10.setCoincident(SketchPoint_24.coordinates(), SketchLine_106.startPoint())
-SketchConstraintCoincidence_172.setName("SketchConstraintCoincidence_177")
+SketchConstraintCoincidence_173 = Sketch_10.setCoincident(SketchPoint_24.coordinates(), SketchLine_106.startPoint())
+SketchConstraintCoincidence_173.setName("SketchConstraintCoincidence_177")
 SketchConstraintHorizontal_22 = Sketch_10.setHorizontal(SketchLine_106.result())
 SketchConstraintHorizontal_22.setName("SketchConstraintHorizontal_23")
-SketchConstraintCoincidence_173 = Sketch_10.setCoincident(SketchCircle_1.center(), SketchLine_106.result())
-SketchConstraintCoincidence_173.setName("SketchConstraintCoincidence_178")
-SketchConstraintDistance_17 = Sketch_10.setDistance(SketchLine_105.result(), SketchCircle_1.center(), 12)
+SketchConstraintCoincidence_174 = Sketch_10.setCoincident(SketchCircle_1.center(), SketchLine_106.result())
+SketchConstraintCoincidence_174.setName("SketchConstraintCoincidence_178")
+SketchConstraintDistance_17 = Sketch_10.setDistance(SketchLine_105.result(), SketchCircle_1.center(), 12, False)
 model.do()
 ExtrusionCut_9 = model.addExtrusionCut(Part_1_doc, [model.selection("WIRE", "Sketch_10/Wire-SketchCircle_1_2f")], model.selection(), 0, 0.75, [model.selection("SOLID", "ExtrusionCut_8_1")])
 model.do()
@@ -959,22 +963,22 @@ Part_2_doc = Part_2.document()
 Sketch_11 = model.addSketch(Part_2_doc, model.defaultPlane("XOY"))
 SketchLine_107 = Sketch_11.addLine(0, 0, 60, 0)
 SketchPoint_25 = Sketch_11.addPoint(model.selection("VERTEX", "PartSet/Origin"))
-SketchConstraintCoincidence_174 = Sketch_11.setCoincident(SketchLine_107.startPoint(), SketchPoint_25.result())
+SketchConstraintCoincidence_175 = Sketch_11.setCoincident(SketchLine_107.startPoint(), SketchPoint_25.result())
 SketchLine_108 = Sketch_11.addLine(60, 0, 60, 1.5)
 SketchLine_108.setName("SketchLine_3")
 SketchLine_108.result().setName("SketchLine_3")
-SketchConstraintCoincidence_175 = Sketch_11.setCoincident(SketchLine_107.endPoint(), SketchLine_108.startPoint())
-SketchConstraintCoincidence_175.setName("SketchConstraintCoincidence_3")
+SketchConstraintCoincidence_176 = Sketch_11.setCoincident(SketchLine_107.endPoint(), SketchLine_108.startPoint())
+SketchConstraintCoincidence_176.setName("SketchConstraintCoincidence_3")
 SketchLine_109 = Sketch_11.addLine(60, 1.5, 57, 1.5)
 SketchLine_109.setName("SketchLine_4")
 SketchLine_109.result().setName("SketchLine_4")
-SketchConstraintCoincidence_176 = Sketch_11.setCoincident(SketchLine_108.endPoint(), SketchLine_109.startPoint())
-SketchConstraintCoincidence_176.setName("SketchConstraintCoincidence_4")
+SketchConstraintCoincidence_177 = Sketch_11.setCoincident(SketchLine_108.endPoint(), SketchLine_109.startPoint())
+SketchConstraintCoincidence_177.setName("SketchConstraintCoincidence_4")
 SketchLine_110 = Sketch_11.addLine(57, 1.5, 29, 7.5)
 SketchLine_110.setName("SketchLine_5")
 SketchLine_110.result().setName("SketchLine_5")
-SketchConstraintCoincidence_177 = Sketch_11.setCoincident(SketchLine_109.endPoint(), SketchLine_110.startPoint())
-SketchConstraintCoincidence_177.setName("SketchConstraintCoincidence_5")
+SketchConstraintCoincidence_178 = Sketch_11.setCoincident(SketchLine_109.endPoint(), SketchLine_110.startPoint())
+SketchConstraintCoincidence_178.setName("SketchConstraintCoincidence_5")
 SketchLine_111 = Sketch_11.addLine(28, 7.5, 28, 8)
 SketchLine_111.setName("SketchLine_7")
 SketchLine_111.result().setName("SketchLine_7")
@@ -982,30 +986,30 @@ SketchArc_24 = Sketch_11.addArc(25.00007393928819, 7.9789374678129, 28, 8, 22.00
 SketchLine_112 = Sketch_11.addLine(22.00014787857639, 8, 22.00014787857639, 7.5)
 SketchLine_112.setName("SketchLine_8")
 SketchLine_112.result().setName("SketchLine_8")
-SketchConstraintCoincidence_178 = Sketch_11.setCoincident(SketchArc_24.endPoint(), SketchLine_112.startPoint())
-SketchConstraintCoincidence_178.setName("SketchConstraintCoincidence_8")
+SketchConstraintCoincidence_179 = Sketch_11.setCoincident(SketchArc_24.endPoint(), SketchLine_112.startPoint())
+SketchConstraintCoincidence_179.setName("SketchConstraintCoincidence_8")
 SketchLine_113 = Sketch_11.addLine(22.00014787857639, 7.5, 21.00014787857639, 7.5)
 SketchLine_113.setName("SketchLine_9")
 SketchLine_113.result().setName("SketchLine_9")
-SketchConstraintCoincidence_179 = Sketch_11.setCoincident(SketchLine_112.endPoint(), SketchLine_113.startPoint())
-SketchConstraintCoincidence_179.setName("SketchConstraintCoincidence_9")
-SketchLine_114 = Sketch_11.addLine(0, 0, 0, 3.499999999999999)
+SketchConstraintCoincidence_180 = Sketch_11.setCoincident(SketchLine_112.endPoint(), SketchLine_113.startPoint())
+SketchConstraintCoincidence_180.setName("SketchConstraintCoincidence_9")
+SketchLine_114 = Sketch_11.addLine(0, 0, 0, 3.5)
 SketchLine_114.setName("SketchLine_10")
 SketchLine_114.result().setName("SketchLine_10")
-SketchConstraintCoincidence_180 = Sketch_11.setCoincident(SketchLine_107.startPoint(), SketchLine_114.startPoint())
-SketchConstraintCoincidence_180.setName("SketchConstraintCoincidence_10")
-SketchConstraintCoincidence_181 = Sketch_11.setCoincident(SketchPoint_25.coordinates(), SketchLine_114.startPoint())
-SketchConstraintCoincidence_181.setName("SketchConstraintCoincidence_11")
-SketchLine_115 = Sketch_11.addLine(0, 3.499999999999999, 8, 5)
+SketchConstraintCoincidence_181 = Sketch_11.setCoincident(SketchLine_107.startPoint(), SketchLine_114.startPoint())
+SketchConstraintCoincidence_181.setName("SketchConstraintCoincidence_10")
+SketchConstraintCoincidence_182 = Sketch_11.setCoincident(SketchPoint_25.coordinates(), SketchLine_114.startPoint())
+SketchConstraintCoincidence_182.setName("SketchConstraintCoincidence_11")
+SketchLine_115 = Sketch_11.addLine(0, 3.5, 8, 5)
 SketchLine_115.setName("SketchLine_11")
 SketchLine_115.result().setName("SketchLine_11")
-SketchConstraintCoincidence_182 = Sketch_11.setCoincident(SketchLine_114.endPoint(), SketchLine_115.startPoint())
-SketchConstraintCoincidence_182.setName("SketchConstraintCoincidence_13")
+SketchConstraintCoincidence_183 = Sketch_11.setCoincident(SketchLine_114.endPoint(), SketchLine_115.startPoint())
+SketchConstraintCoincidence_183.setName("SketchConstraintCoincidence_13")
 SketchLine_116 = Sketch_11.addLine(8, 5, 10.426976887961, 4.40018070612629)
 SketchLine_116.setName("SketchLine_12")
 SketchLine_116.result().setName("SketchLine_12")
-SketchConstraintCoincidence_183 = Sketch_11.setCoincident(SketchLine_115.endPoint(), SketchLine_116.startPoint())
-SketchConstraintCoincidence_183.setName("SketchConstraintCoincidence_14")
+SketchConstraintCoincidence_184 = Sketch_11.setCoincident(SketchLine_115.endPoint(), SketchLine_116.startPoint())
+SketchConstraintCoincidence_184.setName("SketchConstraintCoincidence_14")
 SketchConstraintLength_18 = Sketch_11.setLength(SketchLine_107.result(), 60)
 SketchConstraintHorizontal_23 = Sketch_11.setHorizontal(SketchLine_107.result())
 SketchConstraintVertical_20 = Sketch_11.setVertical(SketchLine_108.result())
@@ -1014,201 +1018,201 @@ SketchConstraintHorizontal_25 = Sketch_11.setHorizontal(SketchLine_113.result())
 SketchConstraintHorizontal_25.setName("SketchConstraintHorizontal_4")
 SketchConstraintVertical_21 = Sketch_11.setVertical(SketchLine_111.result())
 SketchConstraintVertical_22 = Sketch_11.setVertical(SketchLine_112.result())
-SketchConstraintCoincidence_184 = Sketch_11.setCoincident(SketchLine_111.endPoint(), SketchArc_24.startPoint())
-SketchConstraintCoincidence_184.setName("SketchConstraintCoincidence_15")
+SketchConstraintCoincidence_185 = Sketch_11.setCoincident(SketchLine_111.endPoint(), SketchArc_24.startPoint())
+SketchConstraintCoincidence_185.setName("SketchConstraintCoincidence_15")
 SketchConstraintVertical_23 = Sketch_11.setVertical(SketchLine_114.result())
-SketchConstraintDistance_18 = Sketch_11.setDistance(SketchLine_114.endPoint(), SketchLine_107.result(), 3.5)
-SketchConstraintDistance_19 = Sketch_11.setDistance(SketchLine_115.endPoint(), SketchLine_114.result(), 8)
+SketchConstraintDistance_18 = Sketch_11.setDistance(SketchLine_114.endPoint(), SketchLine_107.result(), 3.5, False)
+SketchConstraintDistance_19 = Sketch_11.setDistance(SketchLine_115.endPoint(), SketchLine_114.result(), 8, False)
 SketchConstraintLength_19 = Sketch_11.setLength(SketchLine_116.result(), 2.5)
-SketchConstraintRadius_12 = Sketch_11.setRadius(SketchArc_24.results()[1], 3)
+SketchConstraintRadius_10 = Sketch_11.setRadius(SketchArc_24.results()[1], 3)
 SketchConstraintLength_20 = Sketch_11.setLength(SketchLine_112.result(), 0.5)
 SketchConstraintLength_21 = Sketch_11.setLength(SketchLine_113.result(), 1)
 SketchConstraintLength_22 = Sketch_11.setLength(SketchLine_111.result(), 0.5)
-SketchConstraintDistance_20 = Sketch_11.setDistance(SketchLine_112.endPoint(), SketchLine_107.result(), 7.5)
+SketchConstraintDistance_20 = Sketch_11.setDistance(SketchLine_112.endPoint(), SketchLine_107.result(), 7.5, False)
 SketchConstraintLength_23 = Sketch_11.setLength(SketchLine_109.result(), 3)
 SketchConstraintLength_23.setName("SketchConstraintLength_7")
 SketchConstraintLength_24 = Sketch_11.setLength(SketchLine_108.result(), 1.5)
 SketchConstraintLength_24.setName("SketchConstraintLength_8")
-SketchConstraintDistance_21 = Sketch_11.setDistance(SketchLine_115.endPoint(), SketchLine_107.result(), 5)
-SketchConstraintDistance_22 = Sketch_11.setDistance(SketchLine_111.startPoint(), SketchLine_107.result(), 7.5)
+SketchConstraintDistance_21 = Sketch_11.setDistance(SketchLine_115.endPoint(), SketchLine_107.result(), 5, False)
+SketchConstraintDistance_22 = Sketch_11.setDistance(SketchLine_111.startPoint(), SketchLine_107.result(), 7.5, False)
 SketchLine_117 = Sketch_11.addLine(12.81710695710752, 0, 12.81710695710752, 7.765286531476907)
 SketchLine_117.setName("SketchLine_13")
 SketchLine_117.result().setName("SketchLine_13")
 SketchLine_117.setAuxiliary(True)
-SketchConstraintCoincidence_185 = Sketch_11.setCoincident(SketchLine_117.startPoint(), SketchLine_107.result())
-SketchConstraintCoincidence_185.setName("SketchConstraintCoincidence_16")
+SketchConstraintCoincidence_186 = Sketch_11.setCoincident(SketchLine_117.startPoint(), SketchLine_107.result())
+SketchConstraintCoincidence_186.setName("SketchConstraintCoincidence_16")
 SketchConstraintVertical_24 = Sketch_11.setVertical(SketchLine_117.result())
 SketchPoint_26 = Sketch_11.addPoint(12.81710695710752, 3)
 SketchPoint_26.setAuxiliary(True)
-SketchConstraintCoincidence_186 = Sketch_11.setCoincident(SketchPoint_26.coordinates(), SketchLine_117.result())
-SketchConstraintCoincidence_186.setName("SketchConstraintCoincidence_17")
-SketchConstraintDistance_23 = Sketch_11.setDistance(SketchPoint_26.coordinates(), SketchLine_107.result(), 3)
+SketchConstraintCoincidence_187 = Sketch_11.setCoincident(SketchPoint_26.coordinates(), SketchLine_117.result())
+SketchConstraintCoincidence_187.setName("SketchConstraintCoincidence_17")
+SketchConstraintDistance_23 = Sketch_11.setDistance(SketchPoint_26.coordinates(), SketchLine_107.result(), 3, False)
 SketchLine_118 = Sketch_11.addLine(28, 7.5, 29, 7.5)
 SketchLine_118.setName("SketchLine_14")
 SketchLine_118.result().setName("SketchLine_14")
-SketchConstraintCoincidence_187 = Sketch_11.setCoincident(SketchLine_111.startPoint(), SketchLine_118.startPoint())
-SketchConstraintCoincidence_187.setName("SketchConstraintCoincidence_18")
-SketchConstraintCoincidence_188 = Sketch_11.setCoincident(SketchLine_110.endPoint(), SketchLine_118.endPoint())
-SketchConstraintCoincidence_188.setName("SketchConstraintCoincidence_19")
+SketchConstraintCoincidence_188 = Sketch_11.setCoincident(SketchLine_111.startPoint(), SketchLine_118.startPoint())
+SketchConstraintCoincidence_188.setName("SketchConstraintCoincidence_18")
+SketchConstraintCoincidence_189 = Sketch_11.setCoincident(SketchLine_110.endPoint(), SketchLine_118.endPoint())
+SketchConstraintCoincidence_189.setName("SketchConstraintCoincidence_19")
 SketchConstraintLength_25 = Sketch_11.setLength(SketchLine_118.result(), 1)
 SketchConstraintLength_25.setName("SketchConstraintLength_9")
 SketchArc_25 = Sketch_11.addArc(14.78851987160339, 9.105317068618911, 10.426976887961, 4.40018070612629, 21.00014787857639, 7.5, False)
-SketchConstraintCoincidence_189 = Sketch_11.setCoincident(SketchLine_116.endPoint(), SketchArc_25.startPoint())
-SketchConstraintCoincidence_189.setName("SketchConstraintCoincidence_20")
-SketchConstraintCoincidence_190 = Sketch_11.setCoincident(SketchLine_113.endPoint(), SketchArc_25.endPoint())
-SketchConstraintCoincidence_190.setName("SketchConstraintCoincidence_21")
-SketchConstraintCoincidence_191 = Sketch_11.setCoincident(SketchPoint_26.coordinates(), SketchArc_25.results()[1])
-SketchConstraintCoincidence_191.setName("SketchConstraintCoincidence_22")
+SketchConstraintCoincidence_190 = Sketch_11.setCoincident(SketchLine_116.endPoint(), SketchArc_25.startPoint())
+SketchConstraintCoincidence_190.setName("SketchConstraintCoincidence_20")
+SketchConstraintCoincidence_191 = Sketch_11.setCoincident(SketchLine_113.endPoint(), SketchArc_25.endPoint())
+SketchConstraintCoincidence_191.setName("SketchConstraintCoincidence_21")
+SketchConstraintCoincidence_192 = Sketch_11.setCoincident(SketchPoint_26.coordinates(), SketchArc_25.results()[1])
+SketchConstraintCoincidence_192.setName("SketchConstraintCoincidence_22")
 SketchConstraintHorizontal_26 = Sketch_11.setHorizontal(SketchLine_118.result())
 SketchConstraintHorizontal_26.setName("SketchConstraintHorizontal_9")
-SketchConstraintDistance_24 = Sketch_11.setDistance(SketchLine_111.startPoint(), SketchLine_108.result(), 32)
+SketchConstraintDistance_24 = Sketch_11.setDistance(SketchLine_111.startPoint(), SketchLine_108.result(), 32, False)
 SketchConstraintDistance_24.setName("SketchConstraintDistance_9")
 model.do()
 Extrusion_2 = model.addExtrusion(Part_2_doc, [model.selection("WIRE", "Sketch_1/Wire-SketchLine_1f-SketchLine_3f-SketchLine_4f-SketchLine_5f-SketchLine_7f-SketchArc_1_2f-SketchLine_8f-SketchLine_9f-SketchLine_10r-SketchLine_11r-SketchLine_12r-SketchLine_14r-SketchArc_2_2r")], model.selection(), 12, 0)
-Sketch_12 = model.addSketch(Part_2_doc, model.selection("FACE", "PartSet/XOZ"))
-SketchArc_26 = Sketch_12.addArc(53.99996594708078, 6.000000000028422, 54, 12, 53.99994409538203, -3.231174267785264e-027, True)
+Sketch_12 = model.addSketch(Part_2_doc, model.standardPlane("XOZ"))
+SketchArc_26 = Sketch_12.addArc(54, 6, 54, 12, 54, 0, True)
 SketchLine_119 = Sketch_12.addLine(model.selection("EDGE", "Extrusion_1_1/Generated_Face_13&Extrusion_1_1/To_Face_1"))
 SketchLine_119.setName("SketchLine_15")
 SketchLine_119.result().setName("SketchLine_15")
-SketchConstraintCoincidence_192 = Sketch_12.setCoincident(SketchArc_26.startPoint(), SketchLine_119.result())
-SketchConstraintCoincidence_192.setName("SketchConstraintCoincidence_23")
+SketchConstraintCoincidence_193 = Sketch_12.setCoincident(SketchArc_26.startPoint(), SketchLine_119.result())
+SketchConstraintCoincidence_193.setName("SketchConstraintCoincidence_23")
 SketchLine_120 = Sketch_12.addLine(model.selection("EDGE", "Sketch_1/Edge-SketchLine_1"))
 SketchLine_120.setName("SketchLine_16")
 SketchLine_120.result().setName("SketchLine_16")
-SketchConstraintCoincidence_193 = Sketch_12.setCoincident(SketchArc_26.endPoint(), SketchLine_120.result())
-SketchConstraintCoincidence_193.setName("SketchConstraintCoincidence_24")
-SketchConstraintRadius_13 = Sketch_12.setRadius(SketchArc_26.results()[1], 6)
+SketchConstraintCoincidence_194 = Sketch_12.setCoincident(SketchArc_26.endPoint(), SketchLine_120.result())
+SketchConstraintCoincidence_194.setName("SketchConstraintCoincidence_24")
 SketchLine_121 = Sketch_12.addLine(model.selection("EDGE", "Extrusion_1_1/Generated_Face_13&Extrusion_1_1/Generated_Face_12"))
 SketchLine_121.setName("SketchLine_17")
 SketchLine_121.result().setName("SketchLine_17")
-SketchConstraintDistance_25 = Sketch_12.setDistance(SketchArc_26.startPoint(), SketchLine_121.result(), 6)
+SketchConstraintTangent_16 = Sketch_12.setTangent(SketchArc_26.results()[1], SketchLine_121.result())
+SketchConstraintDistance_25 = Sketch_12.setDistance(SketchArc_26.startPoint(), SketchLine_121.result(), 6, False)
 SketchConstraintDistance_25.setName("SketchConstraintDistance_7")
 SketchLine_122 = Sketch_12.addLine(54, 12, 53.10174978726379, 13.92603605930655)
 SketchLine_122.setName("SketchLine_18")
 SketchLine_122.result().setName("SketchLine_18")
-SketchConstraintCoincidence_194 = Sketch_12.setCoincident(SketchArc_26.startPoint(), SketchLine_122.startPoint())
-SketchConstraintCoincidence_194.setName("SketchConstraintCoincidence_25")
+SketchConstraintCoincidence_195 = Sketch_12.setCoincident(SketchArc_26.startPoint(), SketchLine_122.startPoint())
+SketchConstraintCoincidence_195.setName("SketchConstraintCoincidence_25")
 SketchLine_123 = Sketch_12.addLine(53.10174978726379, 13.92603605930655, 63.82610057919769, 13.82486293862793)
 SketchLine_123.setName("SketchLine_19")
 SketchLine_123.result().setName("SketchLine_19")
-SketchConstraintCoincidence_195 = Sketch_12.setCoincident(SketchLine_122.endPoint(), SketchLine_123.startPoint())
-SketchConstraintCoincidence_195.setName("SketchConstraintCoincidence_26")
+SketchConstraintCoincidence_196 = Sketch_12.setCoincident(SketchLine_122.endPoint(), SketchLine_123.startPoint())
+SketchConstraintCoincidence_196.setName("SketchConstraintCoincidence_26")
 SketchLine_124 = Sketch_12.addLine(63.82610057919769, 13.82486293862793, 62.66260969139353, -3.07104821470189)
 SketchLine_124.setName("SketchLine_20")
 SketchLine_124.result().setName("SketchLine_20")
-SketchConstraintCoincidence_196 = Sketch_12.setCoincident(SketchLine_123.endPoint(), SketchLine_124.startPoint())
-SketchConstraintCoincidence_196.setName("SketchConstraintCoincidence_27")
+SketchConstraintCoincidence_197 = Sketch_12.setCoincident(SketchLine_123.endPoint(), SketchLine_124.startPoint())
+SketchConstraintCoincidence_197.setName("SketchConstraintCoincidence_27")
 SketchLine_125 = Sketch_12.addLine(62.66260969139353, -3.07104821470189, 53.10174978726379, -2.868701973344648)
 SketchLine_125.setName("SketchLine_21")
 SketchLine_125.result().setName("SketchLine_21")
-SketchConstraintCoincidence_197 = Sketch_12.setCoincident(SketchLine_124.endPoint(), SketchLine_125.startPoint())
-SketchConstraintCoincidence_197.setName("SketchConstraintCoincidence_28")
-SketchLine_126 = Sketch_12.addLine(53.10174978726379, -2.868701973344648, 53.99994409538203, -3.231174267785264e-027)
+SketchConstraintCoincidence_198 = Sketch_12.setCoincident(SketchLine_124.endPoint(), SketchLine_125.startPoint())
+SketchConstraintCoincidence_198.setName("SketchConstraintCoincidence_28")
+SketchLine_126 = Sketch_12.addLine(53.10174978726379, -2.868701973344648, 54, 0)
 SketchLine_126.setName("SketchLine_22")
 SketchLine_126.result().setName("SketchLine_22")
-SketchConstraintCoincidence_198 = Sketch_12.setCoincident(SketchLine_125.endPoint(), SketchLine_126.startPoint())
-SketchConstraintCoincidence_198.setName("SketchConstraintCoincidence_29")
-SketchConstraintCoincidence_199 = Sketch_12.setCoincident(SketchArc_26.endPoint(), SketchLine_126.endPoint())
-SketchConstraintCoincidence_199.setName("SketchConstraintCoincidence_30")
+SketchConstraintCoincidence_199 = Sketch_12.setCoincident(SketchLine_125.endPoint(), SketchLine_126.startPoint())
+SketchConstraintCoincidence_199.setName("SketchConstraintCoincidence_29")
+SketchConstraintCoincidence_200 = Sketch_12.setCoincident(SketchArc_26.endPoint(), SketchLine_126.endPoint())
+SketchConstraintCoincidence_200.setName("SketchConstraintCoincidence_30")
 model.do()
 ExtrusionCut_10 = model.addExtrusionCut(Part_2_doc, [model.selection("FACE", "Sketch_2/Face-SketchArc_3_2r-SketchLine_18r-SketchLine_19r-SketchLine_20r-SketchLine_21r-SketchLine_22r")], model.selection(), 7, 15, [model.selection("SOLID", "Extrusion_1_1")])
 Sketch_13 = model.addSketch(Part_2_doc, model.selection("FACE", "Extrusion_1_1/Generated_Face_9"))
-SketchLine_127 = Sketch_13.addLine(28, -6, -4.270492394552598, -6.000000000000001)
+SketchLine_127 = Sketch_13.addLine(28, -6, -4.270492394552598, -6)
 SketchLine_127.setName("SketchLine_23")
 SketchLine_127.result().setName("SketchLine_23")
 SketchLine_127.setAuxiliary(True)
 SketchLine_128 = Sketch_13.addLine(model.selection("EDGE", "Extrusion_1_1/Generated_Face_8&Extrusion_1_1/Generated_Face_9"))
 SketchLine_128.setName("SketchLine_24")
 SketchLine_128.result().setName("SketchLine_24")
-SketchConstraintCoincidence_200 = Sketch_13.setCoincident(SketchLine_127.startPoint(), SketchLine_128.result())
-SketchConstraintCoincidence_200.setName("SketchConstraintCoincidence_31")
+SketchConstraintCoincidence_201 = Sketch_13.setCoincident(SketchLine_127.startPoint(), SketchLine_128.result())
+SketchConstraintCoincidence_201.setName("SketchConstraintCoincidence_31")
 SketchConstraintHorizontal_27 = Sketch_13.setHorizontal(SketchLine_127.result())
-SketchLine_129 = Sketch_13.addLine(28, -6, 63.78468475453244, -6.000000000000001)
+SketchLine_129 = Sketch_13.addLine(28, -6, 63.78468475453244, -6)
 SketchLine_129.setName("SketchLine_25")
 SketchLine_129.result().setName("SketchLine_25")
 SketchLine_129.setAuxiliary(True)
-SketchConstraintCoincidence_201 = Sketch_13.setCoincident(SketchLine_127.startPoint(), SketchLine_129.startPoint())
-SketchConstraintCoincidence_201.setName("SketchConstraintCoincidence_32")
+SketchConstraintCoincidence_202 = Sketch_13.setCoincident(SketchLine_127.startPoint(), SketchLine_129.startPoint())
+SketchConstraintCoincidence_202.setName("SketchConstraintCoincidence_32")
 SketchConstraintHorizontal_28 = Sketch_13.setHorizontal(SketchLine_129.result())
-SketchLine_130 = Sketch_13.addLine(60, -1.500000000000001, 29, -1.500000000000001)
+SketchLine_130 = Sketch_13.addLine(60, -1.5, 29, -1.5)
 SketchLine_130.setName("SketchLine_26")
 SketchLine_130.result().setName("SketchLine_26")
-SketchLine_131 = Sketch_13.addLine(29, -1.500000000000001, 29, -10.5)
+SketchLine_131 = Sketch_13.addLine(29, -1.5, 29, -10.5)
 SketchLine_131.setName("SketchLine_27")
 SketchLine_131.result().setName("SketchLine_27")
 SketchLine_132 = Sketch_13.addLine(29, -10.5, 60, -10.5)
 SketchLine_132.setName("SketchLine_28")
 SketchLine_132.result().setName("SketchLine_28")
-SketchLine_133 = Sketch_13.addLine(60, -10.5, 60, -1.500000000000001)
+SketchLine_133 = Sketch_13.addLine(60, -10.5, 60, -1.5)
 SketchLine_133.setName("SketchLine_29")
 SketchLine_133.result().setName("SketchLine_29")
-SketchConstraintCoincidence_202 = Sketch_13.setCoincident(SketchLine_133.endPoint(), SketchLine_130.startPoint())
-SketchConstraintCoincidence_202.setName("SketchConstraintCoincidence_33")
-SketchConstraintCoincidence_203 = Sketch_13.setCoincident(SketchLine_130.endPoint(), SketchLine_131.startPoint())
-SketchConstraintCoincidence_203.setName("SketchConstraintCoincidence_34")
-SketchConstraintCoincidence_204 = Sketch_13.setCoincident(SketchLine_131.endPoint(), SketchLine_132.startPoint())
-SketchConstraintCoincidence_204.setName("SketchConstraintCoincidence_35")
-SketchConstraintCoincidence_205 = Sketch_13.setCoincident(SketchLine_132.endPoint(), SketchLine_133.startPoint())
-SketchConstraintCoincidence_205.setName("SketchConstraintCoincidence_36")
+SketchConstraintCoincidence_203 = Sketch_13.setCoincident(SketchLine_133.endPoint(), SketchLine_130.startPoint())
+SketchConstraintCoincidence_203.setName("SketchConstraintCoincidence_33")
+SketchConstraintCoincidence_204 = Sketch_13.setCoincident(SketchLine_130.endPoint(), SketchLine_131.startPoint())
+SketchConstraintCoincidence_204.setName("SketchConstraintCoincidence_34")
+SketchConstraintCoincidence_205 = Sketch_13.setCoincident(SketchLine_131.endPoint(), SketchLine_132.startPoint())
+SketchConstraintCoincidence_205.setName("SketchConstraintCoincidence_35")
+SketchConstraintCoincidence_206 = Sketch_13.setCoincident(SketchLine_132.endPoint(), SketchLine_133.startPoint())
+SketchConstraintCoincidence_206.setName("SketchConstraintCoincidence_36")
 SketchConstraintHorizontal_29 = Sketch_13.setHorizontal(SketchLine_130.result())
 SketchConstraintVertical_25 = Sketch_13.setVertical(SketchLine_131.result())
 SketchConstraintHorizontal_30 = Sketch_13.setHorizontal(SketchLine_132.result())
 SketchConstraintVertical_26 = Sketch_13.setVertical(SketchLine_133.result())
-SketchLine_134 = Sketch_13.addLine(29, -10.5, 60, -1.500000000000001)
+SketchLine_134 = Sketch_13.addLine(29, -10.5, 60, -1.5)
 SketchLine_134.setName("SketchLine_30")
 SketchLine_134.result().setName("SketchLine_30")
 SketchLine_134.setAuxiliary(True)
-SketchConstraintCoincidence_206 = Sketch_13.setCoincident(SketchLine_131.endPoint(), SketchLine_134.startPoint())
-SketchConstraintCoincidence_206.setName("SketchConstraintCoincidence_37")
-SketchConstraintCoincidence_207 = Sketch_13.setCoincident(SketchLine_132.startPoint(), SketchLine_134.startPoint())
-SketchConstraintCoincidence_207.setName("SketchConstraintCoincidence_38")
-SketchConstraintCoincidence_208 = Sketch_13.setCoincident(SketchLine_130.startPoint(), SketchLine_134.endPoint())
-SketchConstraintCoincidence_208.setName("SketchConstraintCoincidence_39")
-SketchConstraintCoincidence_209 = Sketch_13.setCoincident(SketchLine_133.endPoint(), SketchLine_134.endPoint())
-SketchConstraintCoincidence_209.setName("SketchConstraintCoincidence_40")
-SketchLine_135 = Sketch_13.addLine(29, -1.500000000000001, 60, -10.5)
+SketchConstraintCoincidence_207 = Sketch_13.setCoincident(SketchLine_131.endPoint(), SketchLine_134.startPoint())
+SketchConstraintCoincidence_207.setName("SketchConstraintCoincidence_37")
+SketchConstraintCoincidence_208 = Sketch_13.setCoincident(SketchLine_132.startPoint(), SketchLine_134.startPoint())
+SketchConstraintCoincidence_208.setName("SketchConstraintCoincidence_38")
+SketchConstraintCoincidence_209 = Sketch_13.setCoincident(SketchLine_130.startPoint(), SketchLine_134.endPoint())
+SketchConstraintCoincidence_209.setName("SketchConstraintCoincidence_39")
+SketchConstraintCoincidence_210 = Sketch_13.setCoincident(SketchLine_133.endPoint(), SketchLine_134.endPoint())
+SketchConstraintCoincidence_210.setName("SketchConstraintCoincidence_40")
+SketchLine_135 = Sketch_13.addLine(29, -1.5, 60, -10.5)
 SketchLine_135.setName("SketchLine_31")
 SketchLine_135.result().setName("SketchLine_31")
 SketchLine_135.setAuxiliary(True)
-SketchConstraintCoincidence_210 = Sketch_13.setCoincident(SketchLine_130.endPoint(), SketchLine_135.startPoint())
-SketchConstraintCoincidence_210.setName("SketchConstraintCoincidence_41")
-SketchConstraintCoincidence_211 = Sketch_13.setCoincident(SketchLine_131.startPoint(), SketchLine_135.startPoint())
-SketchConstraintCoincidence_211.setName("SketchConstraintCoincidence_42")
-SketchConstraintCoincidence_212 = Sketch_13.setCoincident(SketchLine_132.endPoint(), SketchLine_135.endPoint())
-SketchConstraintCoincidence_212.setName("SketchConstraintCoincidence_43")
-SketchConstraintCoincidence_213 = Sketch_13.setCoincident(SketchLine_133.startPoint(), SketchLine_135.endPoint())
-SketchConstraintCoincidence_213.setName("SketchConstraintCoincidence_44")
-SketchPoint_27 = Sketch_13.addPoint(44.5, -6.000000000000001)
+SketchConstraintCoincidence_211 = Sketch_13.setCoincident(SketchLine_130.endPoint(), SketchLine_135.startPoint())
+SketchConstraintCoincidence_211.setName("SketchConstraintCoincidence_41")
+SketchConstraintCoincidence_212 = Sketch_13.setCoincident(SketchLine_131.startPoint(), SketchLine_135.startPoint())
+SketchConstraintCoincidence_212.setName("SketchConstraintCoincidence_42")
+SketchConstraintCoincidence_213 = Sketch_13.setCoincident(SketchLine_132.endPoint(), SketchLine_135.endPoint())
+SketchConstraintCoincidence_213.setName("SketchConstraintCoincidence_43")
+SketchConstraintCoincidence_214 = Sketch_13.setCoincident(SketchLine_133.startPoint(), SketchLine_135.endPoint())
+SketchConstraintCoincidence_214.setName("SketchConstraintCoincidence_44")
+SketchPoint_27 = Sketch_13.addPoint(44.5, -6)
 SketchPoint_27.setAuxiliary(True)
-SketchConstraintCoincidence_214 = Sketch_13.setCoincident(SketchPoint_27.coordinates(), SketchLine_135.result())
-SketchConstraintCoincidence_214.setName("SketchConstraintCoincidence_45")
+SketchConstraintCoincidence_215 = Sketch_13.setCoincident(SketchPoint_27.coordinates(), SketchLine_135.result())
+SketchConstraintCoincidence_215.setName("SketchConstraintCoincidence_45")
 SketchConstraintMiddle_9 = Sketch_13.setMiddlePoint(SketchPoint_27.coordinates(), SketchLine_135.result())
-SketchConstraintCoincidence_215 = Sketch_13.setCoincident(SketchPoint_27.coordinates(), SketchLine_129.result())
-SketchConstraintCoincidence_215.setName("SketchConstraintCoincidence_46")
-SketchConstraintDistance_26 = Sketch_13.setDistance(SketchLine_128.startPoint(), SketchLine_129.result(), 6)
+SketchConstraintCoincidence_216 = Sketch_13.setCoincident(SketchPoint_27.coordinates(), SketchLine_129.result())
+SketchConstraintCoincidence_216.setName("SketchConstraintCoincidence_46")
+SketchConstraintDistance_26 = Sketch_13.setDistance(SketchLine_128.startPoint(), SketchLine_129.result(), 6, False)
 SketchConstraintDistance_26.setName("SketchConstraintDistance_8")
 SketchConstraintLength_26 = Sketch_13.setLength(SketchLine_133.result(), 9)
 SketchConstraintLength_26.setName("SketchConstraintLength_10")
-SketchLine_136 = Sketch_13.addLine(21.00014787857639, -1.499999999999999, 12.00014787857639, -1.499999999999999)
+SketchLine_136 = Sketch_13.addLine(21.00014787857639, -1.499999999999981, 12.00014787857639, -1.499999999999981)
 SketchLine_136.setName("SketchLine_32")
 SketchLine_136.result().setName("SketchLine_32")
-SketchLine_137 = Sketch_13.addLine(12.00014787857639, -1.499999999999999, 12.00014787857639, -10.5)
+SketchLine_137 = Sketch_13.addLine(12.00014787857639, -1.499999999999981, 12.00014787857639, -10.49999999999998)
 SketchLine_137.setName("SketchLine_33")
 SketchLine_137.result().setName("SketchLine_33")
-SketchLine_138 = Sketch_13.addLine(12.00014787857639, -10.5, 21.00014787857639, -10.5)
+SketchLine_138 = Sketch_13.addLine(12.00014787857639, -10.49999999999998, 21.00014787857639, -10.49999999999998)
 SketchLine_138.setName("SketchLine_34")
 SketchLine_138.result().setName("SketchLine_34")
-SketchLine_139 = Sketch_13.addLine(21.00014787857639, -10.5, 21.00014787857639, -1.499999999999999)
+SketchLine_139 = Sketch_13.addLine(21.00014787857639, -10.49999999999998, 21.00014787857639, -1.499999999999981)
 SketchLine_139.setName("SketchLine_35")
 SketchLine_139.result().setName("SketchLine_35")
-SketchConstraintCoincidence_216 = Sketch_13.setCoincident(SketchLine_139.endPoint(), SketchLine_136.startPoint())
-SketchConstraintCoincidence_216.setName("SketchConstraintCoincidence_47")
-SketchConstraintCoincidence_217 = Sketch_13.setCoincident(SketchLine_136.endPoint(), SketchLine_137.startPoint())
-SketchConstraintCoincidence_217.setName("SketchConstraintCoincidence_48")
-SketchConstraintCoincidence_218 = Sketch_13.setCoincident(SketchLine_137.endPoint(), SketchLine_138.startPoint())
-SketchConstraintCoincidence_218.setName("SketchConstraintCoincidence_49")
-SketchConstraintCoincidence_219 = Sketch_13.setCoincident(SketchLine_138.endPoint(), SketchLine_139.startPoint())
-SketchConstraintCoincidence_219.setName("SketchConstraintCoincidence_50")
+SketchConstraintCoincidence_217 = Sketch_13.setCoincident(SketchLine_139.endPoint(), SketchLine_136.startPoint())
+SketchConstraintCoincidence_217.setName("SketchConstraintCoincidence_47")
+SketchConstraintCoincidence_218 = Sketch_13.setCoincident(SketchLine_136.endPoint(), SketchLine_137.startPoint())
+SketchConstraintCoincidence_218.setName("SketchConstraintCoincidence_48")
+SketchConstraintCoincidence_219 = Sketch_13.setCoincident(SketchLine_137.endPoint(), SketchLine_138.startPoint())
+SketchConstraintCoincidence_219.setName("SketchConstraintCoincidence_49")
+SketchConstraintCoincidence_220 = Sketch_13.setCoincident(SketchLine_138.endPoint(), SketchLine_139.startPoint())
+SketchConstraintCoincidence_220.setName("SketchConstraintCoincidence_50")
 SketchConstraintHorizontal_31 = Sketch_13.setHorizontal(SketchLine_136.result())
 SketchConstraintHorizontal_31.setName("SketchConstraintHorizontal_10")
 SketchConstraintVertical_27 = Sketch_13.setVertical(SketchLine_137.result())
@@ -1216,37 +1220,37 @@ SketchConstraintHorizontal_32 = Sketch_13.setHorizontal(SketchLine_138.result())
 SketchConstraintHorizontal_32.setName("SketchConstraintHorizontal_11")
 SketchConstraintVertical_28 = Sketch_13.setVertical(SketchLine_139.result())
 SketchConstraintEqual_4 = Sketch_13.setEqual(SketchLine_131.result(), SketchLine_139.result())
-SketchLine_140 = Sketch_13.addLine(12.00014787857639, -10.5, 21.00014787857639, -1.499999999999999)
+SketchLine_140 = Sketch_13.addLine(12.00014787857639, -10.49999999999998, 21.00014787857639, -1.499999999999981)
 SketchLine_140.setName("SketchLine_36")
 SketchLine_140.result().setName("SketchLine_36")
 SketchLine_140.setAuxiliary(True)
-SketchConstraintCoincidence_220 = Sketch_13.setCoincident(SketchLine_137.endPoint(), SketchLine_140.startPoint())
-SketchConstraintCoincidence_220.setName("SketchConstraintCoincidence_51")
-SketchConstraintCoincidence_221 = Sketch_13.setCoincident(SketchLine_138.startPoint(), SketchLine_140.startPoint())
-SketchConstraintCoincidence_221.setName("SketchConstraintCoincidence_52")
-SketchConstraintCoincidence_222 = Sketch_13.setCoincident(SketchLine_136.startPoint(), SketchLine_140.endPoint())
-SketchConstraintCoincidence_222.setName("SketchConstraintCoincidence_53")
-SketchConstraintCoincidence_223 = Sketch_13.setCoincident(SketchLine_139.endPoint(), SketchLine_140.endPoint())
-SketchConstraintCoincidence_223.setName("SketchConstraintCoincidence_54")
-SketchPoint_28 = Sketch_13.addPoint(16.50014787857639, -5.999999999999999)
+SketchConstraintCoincidence_221 = Sketch_13.setCoincident(SketchLine_137.endPoint(), SketchLine_140.startPoint())
+SketchConstraintCoincidence_221.setName("SketchConstraintCoincidence_51")
+SketchConstraintCoincidence_222 = Sketch_13.setCoincident(SketchLine_138.startPoint(), SketchLine_140.startPoint())
+SketchConstraintCoincidence_222.setName("SketchConstraintCoincidence_52")
+SketchConstraintCoincidence_223 = Sketch_13.setCoincident(SketchLine_136.startPoint(), SketchLine_140.endPoint())
+SketchConstraintCoincidence_223.setName("SketchConstraintCoincidence_53")
+SketchConstraintCoincidence_224 = Sketch_13.setCoincident(SketchLine_139.endPoint(), SketchLine_140.endPoint())
+SketchConstraintCoincidence_224.setName("SketchConstraintCoincidence_54")
+SketchPoint_28 = Sketch_13.addPoint(16.50014787857639, -6)
 SketchPoint_28.setAuxiliary(True)
-SketchConstraintCoincidence_224 = Sketch_13.setCoincident(SketchPoint_28.coordinates(), SketchLine_140.result())
-SketchConstraintCoincidence_224.setName("SketchConstraintCoincidence_55")
+SketchConstraintCoincidence_225 = Sketch_13.setCoincident(SketchPoint_28.coordinates(), SketchLine_140.result())
+SketchConstraintCoincidence_225.setName("SketchConstraintCoincidence_55")
 SketchConstraintMiddle_10 = Sketch_13.setMiddlePoint(SketchLine_140.result(), SketchPoint_28.coordinates())
-SketchConstraintCoincidence_225 = Sketch_13.setCoincident(SketchPoint_28.coordinates(), SketchLine_127.result())
-SketchConstraintCoincidence_225.setName("SketchConstraintCoincidence_56")
+SketchConstraintCoincidence_226 = Sketch_13.setCoincident(SketchPoint_28.coordinates(), SketchLine_127.result())
+SketchConstraintCoincidence_226.setName("SketchConstraintCoincidence_56")
 SketchLine_141 = Sketch_13.addLine(model.selection("EDGE", "Extrusion_1_1/Generated_Face_9&ExtrusionCut_1_1/Modfied_3"))
 SketchLine_141.setName("SketchLine_37")
 SketchLine_141.result().setName("SketchLine_37")
-SketchConstraintCoincidence_226 = Sketch_13.setCoincident(SketchLine_131.startPoint(), SketchLine_141.result())
-SketchConstraintCoincidence_226.setName("SketchConstraintCoincidence_57")
+SketchConstraintCoincidence_227 = Sketch_13.setCoincident(SketchLine_131.startPoint(), SketchLine_141.result())
+SketchConstraintCoincidence_227.setName("SketchConstraintCoincidence_57")
 SketchConstraintLength_27 = Sketch_13.setLength(SketchLine_130.result(), 31)
 SketchConstraintLength_27.setName("SketchConstraintLength_11")
 SketchLine_142 = Sketch_13.addLine(model.selection("EDGE", "Extrusion_1_1/Generated_Face_4&Extrusion_1_1/Generated_Face_5"))
 SketchLine_142.setName("SketchLine_38")
 SketchLine_142.result().setName("SketchLine_38")
-SketchConstraintCoincidence_227 = Sketch_13.setCoincident(SketchLine_136.startPoint(), SketchLine_142.result())
-SketchConstraintCoincidence_227.setName("SketchConstraintCoincidence_58")
+SketchConstraintCoincidence_228 = Sketch_13.setCoincident(SketchLine_136.startPoint(), SketchLine_142.result())
+SketchConstraintCoincidence_228.setName("SketchConstraintCoincidence_58")
 SketchConstraintEqual_5 = Sketch_13.setEqual(SketchLine_136.result(), SketchLine_131.result())
 model.do()
 ExtrusionCut_11 = model.addExtrusionCut(Part_2_doc, [model.selection("FACE", "Sketch_3/Face-SketchLine_32f-SketchLine_33f-SketchLine_34f-SketchLine_35f"), model.selection("FACE", "Sketch_3/Face-SketchLine_26f-SketchLine_27f-SketchLine_28f-SketchLine_29f")], model.selection(), model.selection("FACE", "ExtrusionCut_1_1/Modfied_4"), 0, model.selection(), 0, [model.selection("SOLID", "ExtrusionCut_1_1")])
@@ -1257,27 +1261,27 @@ SketchLine_143.result().setName("SketchLine_39")
 SketchLine_144 = Sketch_14.addLine(model.selection("EDGE", "ExtrusionCut_1_1/Modfied_1&Extrusion_1_1/Generated_Face_2"))
 SketchLine_144.setName("SketchLine_40")
 SketchLine_144.result().setName("SketchLine_40")
-SketchConstraintCoincidence_228 = Sketch_14.setCoincident(SketchLine_143.startPoint(), SketchLine_144.result())
-SketchConstraintCoincidence_228.setName("SketchConstraintCoincidence_59")
+SketchConstraintCoincidence_229 = Sketch_14.setCoincident(SketchLine_143.startPoint(), SketchLine_144.result())
+SketchConstraintCoincidence_229.setName("SketchConstraintCoincidence_59")
 SketchLine_145 = Sketch_14.addLine(1.55585595716119, 2.812450190483599, 2.324492722099671, 3.935842385393688)
 SketchLine_145.setName("SketchLine_41")
 SketchLine_145.result().setName("SketchLine_41")
-SketchConstraintCoincidence_229 = Sketch_14.setCoincident(SketchLine_143.endPoint(), SketchLine_145.startPoint())
-SketchConstraintCoincidence_229.setName("SketchConstraintCoincidence_60")
-SketchConstraintCoincidence_230 = Sketch_14.setCoincident(SketchLine_145.endPoint(), SketchLine_144.result())
-SketchConstraintCoincidence_230.setName("SketchConstraintCoincidence_61")
+SketchConstraintCoincidence_230 = Sketch_14.setCoincident(SketchLine_143.endPoint(), SketchLine_145.startPoint())
+SketchConstraintCoincidence_230.setName("SketchConstraintCoincidence_60")
+SketchConstraintCoincidence_231 = Sketch_14.setCoincident(SketchLine_145.endPoint(), SketchLine_144.result())
+SketchConstraintCoincidence_231.setName("SketchConstraintCoincidence_61")
 SketchLine_146 = Sketch_14.addLine(2.324492722099671, 3.935842385393688, 0.4324637622511017, 3.581086955422081)
 SketchLine_146.setName("SketchLine_42")
 SketchLine_146.result().setName("SketchLine_42")
-SketchConstraintCoincidence_231 = Sketch_14.setCoincident(SketchLine_145.endPoint(), SketchLine_146.startPoint())
-SketchConstraintCoincidence_231.setName("SketchConstraintCoincidence_62")
-SketchConstraintCoincidence_232 = Sketch_14.setCoincident(SketchLine_143.startPoint(), SketchLine_146.endPoint())
-SketchConstraintCoincidence_232.setName("SketchConstraintCoincidence_63")
+SketchConstraintCoincidence_232 = Sketch_14.setCoincident(SketchLine_145.endPoint(), SketchLine_146.startPoint())
+SketchConstraintCoincidence_232.setName("SketchConstraintCoincidence_62")
+SketchConstraintCoincidence_233 = Sketch_14.setCoincident(SketchLine_143.startPoint(), SketchLine_146.endPoint())
+SketchConstraintCoincidence_233.setName("SketchConstraintCoincidence_63")
 SketchConstraintLength_28 = Sketch_14.setLength(SketchLine_146.result(), 1.925)
 SketchConstraintLength_28.setName("SketchConstraintLength_12")
 SketchConstraintEqual_6 = Sketch_14.setEqual(SketchLine_143.result(), SketchLine_145.result())
 SketchConstraintPerpendicular_2 = Sketch_14.setPerpendicular(SketchLine_143.result(), SketchLine_145.result())
-SketchConstraintDistance_27 = Sketch_14.setDistance(SketchLine_144.startPoint(), SketchLine_143.startPoint(), 0.44)
+SketchConstraintDistance_27 = Sketch_14.setDistance(SketchLine_144.startPoint(), SketchLine_143.startPoint(), 0.44, False)
 SketchMultiTranslation_3_objects = [SketchLine_143.result(), SketchLine_146.result(), SketchLine_145.result()]
 SketchMultiTranslation_3 = Sketch_14.addTranslation(SketchMultiTranslation_3_objects, SketchLine_146.startPoint(), SketchLine_144.endPoint(), 4, True)
 [SketchLine_147, SketchLine_148, SketchLine_149, SketchLine_150, SketchLine_151, SketchLine_152, SketchLine_153, SketchLine_154, SketchLine_155] = SketchMultiTranslation_3.translated()
@@ -1301,41 +1305,41 @@ SketchLine_147.setName("SketchLine_43")
 SketchLine_147.result().setName("SketchLine_43")
 model.do()
 ExtrusionCut_12 = model.addExtrusionCut(Part_2_doc, [model.selection("COMPOUND", "Sketch_4")], model.selection(), model.selection("FACE", "ExtrusionCut_1_1/Modfied_2"), 0, model.selection(), 0, [model.selection("SOLID", "ExtrusionCut_2_1")])
-Plane_9 = model.addPlane(Part_2_doc, model.selection("VERTEX", "ExtrusionCut_1_1/Modfied_5&ExtrusionCut_3_1/Modfied_3&Extrusion_1_1/Generated_Face_1"), model.selection("VERTEX", "ExtrusionCut_3_1/Modfied_3&Extrusion_1_1/Generated_Face_7&Extrusion_1_1/Generated_Face_6"), model.selection("VERTEX", "ExtrusionCut_1_1/Modfied_5&ExtrusionCut_2_1/Modfied_6&ExtrusionCut_3_1/Modfied_3"))
+Plane_9 = model.addPlane(Part_2_doc, model.selection("VERTEX", "ExtrusionCut_1_1/Modfied_5&ExtrusionCut_3_1/Modfied_3&Extrusion_1_1/Generated_Face_1"), model.selection("VERTEX", "ExtrusionCut_3_1/Modfied_3&Extrusion_1_1/Generated_Face_6&Extrusion_1_1/Generated_Face_7"), model.selection("VERTEX", "ExtrusionCut_1_1/Modfied_5&ExtrusionCut_2_1/Modfied_6&ExtrusionCut_3_1/Modfied_3"))
 Sketch_15 = model.addSketch(Part_2_doc, model.selection("FACE", "Plane_1"))
-SketchArc_27 = Sketch_15.addArc(25.00007393928819, -7.521062532210847, 22.00014787857639, -7.5, 28, -7.5, True)
-SketchPoint_29 = Sketch_15.addPoint(22.00014787857639, -7.5)
+SketchArc_27 = Sketch_15.addArc(25, -7.50002056854448, 22, -7.5, 28, -7.5, True)
+SketchPoint_29 = Sketch_15.addPoint(22, -7.5)
 SketchConstraintRigid_14 = Sketch_15.setFixed(SketchPoint_29.result())
 SketchConstraintRigid_14.setName("SketchConstraintRigid_10")
-SketchConstraintCoincidence_233 = Sketch_15.setCoincident(SketchArc_27.startPoint(), SketchPoint_29.result())
-SketchConstraintCoincidence_233.setName("SketchConstraintCoincidence_64")
+SketchConstraintCoincidence_234 = Sketch_15.setCoincident(SketchArc_27.startPoint(), SketchPoint_29.result())
+SketchConstraintCoincidence_234.setName("SketchConstraintCoincidence_64")
 SketchPoint_30 = Sketch_15.addPoint(28, -7.5)
 SketchConstraintRigid_15 = Sketch_15.setFixed(SketchPoint_30.result())
 SketchConstraintRigid_15.setName("SketchConstraintRigid_11")
-SketchConstraintCoincidence_234 = Sketch_15.setCoincident(SketchArc_27.endPoint(), SketchPoint_30.result())
-SketchConstraintCoincidence_234.setName("SketchConstraintCoincidence_65")
-SketchConstraintRadius_14 = Sketch_15.setRadius(SketchArc_27.results()[1], 3)
-SketchLine_156 = Sketch_15.addLine(22.00014787857639, -7.5, 22.00014787857639, -11.56094005408083)
+SketchConstraintCoincidence_235 = Sketch_15.setCoincident(SketchArc_27.endPoint(), SketchPoint_30.result())
+SketchConstraintCoincidence_235.setName("SketchConstraintCoincidence_65")
+SketchConstraintRadius_11 = Sketch_15.setRadius(SketchArc_27.results()[1], 3)
+SketchLine_156 = Sketch_15.addLine(22, -7.5, 22, -11.56094005408083)
 SketchLine_156.setName("SketchLine_52")
 SketchLine_156.result().setName("SketchLine_52")
-SketchConstraintCoincidence_235 = Sketch_15.setCoincident(SketchArc_27.startPoint(), SketchLine_156.startPoint())
-SketchConstraintCoincidence_235.setName("SketchConstraintCoincidence_66")
-SketchConstraintCoincidence_236 = Sketch_15.setCoincident(SketchPoint_29.coordinates(), SketchLine_156.startPoint())
-SketchConstraintCoincidence_236.setName("SketchConstraintCoincidence_67")
-SketchLine_157 = Sketch_15.addLine(22.00014787857639, -11.56094005408083, 28, -11.56094005408083)
+SketchConstraintCoincidence_236 = Sketch_15.setCoincident(SketchArc_27.startPoint(), SketchLine_156.startPoint())
+SketchConstraintCoincidence_236.setName("SketchConstraintCoincidence_66")
+SketchConstraintCoincidence_237 = Sketch_15.setCoincident(SketchPoint_29.coordinates(), SketchLine_156.startPoint())
+SketchConstraintCoincidence_237.setName("SketchConstraintCoincidence_67")
+SketchLine_157 = Sketch_15.addLine(22, -11.56094005408083, 28, -11.56094005408083)
 SketchLine_157.setName("SketchLine_53")
 SketchLine_157.result().setName("SketchLine_53")
-SketchConstraintCoincidence_237 = Sketch_15.setCoincident(SketchLine_156.endPoint(), SketchLine_157.startPoint())
-SketchConstraintCoincidence_237.setName("SketchConstraintCoincidence_68")
+SketchConstraintCoincidence_238 = Sketch_15.setCoincident(SketchLine_156.endPoint(), SketchLine_157.startPoint())
+SketchConstraintCoincidence_238.setName("SketchConstraintCoincidence_68")
 SketchLine_158 = Sketch_15.addLine(28, -11.56094005408083, 28, -7.5)
 SketchLine_158.setName("SketchLine_54")
 SketchLine_158.result().setName("SketchLine_54")
-SketchConstraintCoincidence_238 = Sketch_15.setCoincident(SketchLine_157.endPoint(), SketchLine_158.startPoint())
-SketchConstraintCoincidence_238.setName("SketchConstraintCoincidence_69")
-SketchConstraintCoincidence_239 = Sketch_15.setCoincident(SketchArc_27.endPoint(), SketchLine_158.endPoint())
-SketchConstraintCoincidence_239.setName("SketchConstraintCoincidence_70")
-SketchConstraintCoincidence_240 = Sketch_15.setCoincident(SketchPoint_30.coordinates(), SketchLine_158.endPoint())
-SketchConstraintCoincidence_240.setName("SketchConstraintCoincidence_71")
+SketchConstraintCoincidence_239 = Sketch_15.setCoincident(SketchLine_157.endPoint(), SketchLine_158.startPoint())
+SketchConstraintCoincidence_239.setName("SketchConstraintCoincidence_69")
+SketchConstraintCoincidence_240 = Sketch_15.setCoincident(SketchArc_27.endPoint(), SketchLine_158.endPoint())
+SketchConstraintCoincidence_240.setName("SketchConstraintCoincidence_70")
+SketchConstraintCoincidence_241 = Sketch_15.setCoincident(SketchPoint_30.coordinates(), SketchLine_158.endPoint())
+SketchConstraintCoincidence_241.setName("SketchConstraintCoincidence_71")
 SketchConstraintVertical_29 = Sketch_15.setVertical(SketchLine_156.result())
 SketchConstraintVertical_30 = Sketch_15.setVertical(SketchLine_158.result())
 SketchConstraintHorizontal_33 = Sketch_15.setHorizontal(SketchLine_157.result())
@@ -1346,36 +1350,36 @@ Plane_11 = model.addPlane(Part_2_doc, model.selection("FACE", "Plane_2"), 3, Tru
 ExtrusionCut_13 = model.addExtrusionCut(Part_2_doc, [model.selection("FACE", "Sketch_5/Face-SketchArc_4_2f-SketchLine_52f-SketchLine_53f-SketchLine_54f")], model.selection(), 3, 0, [model.selection("SOLID", "ExtrusionCut_3_1")])
 ExtrusionCut_14 = model.addExtrusionCut(Part_2_doc, [model.selection("FACE", "Sketch_5/Face-SketchArc_4_2f-SketchLine_52f-SketchLine_53f-SketchLine_54f")], model.selection(), model.selection("FACE", "Plane_3"), 0, model.selection("FACE", "Plane_2"), 0, [model.selection("SOLID", "ExtrusionCut_4_1")])
 Sketch_16 = model.addSketch(Part_2_doc, model.selection("FACE", "ExtrusionCut_4_1/Modfied_6"))
-SketchArc_28 = Sketch_16.addArc(45.99999999999999, 0, 45.49999999999999, 8.91700958118717e-020, 46.49999999999999, 8.280962276646116e-019, False)
+SketchArc_28 = Sketch_16.addArc(46, 0, 45.5, 0, 46.5, 0, False)
 SketchLine_159 = Sketch_16.addLine(0, 0, 54, 0)
 SketchLine_159.setName("SketchLine_55")
 SketchLine_159.result().setName("SketchLine_55")
 SketchConstraintRigid_16 = Sketch_16.setFixed(SketchLine_159.result())
 SketchConstraintRigid_16.setName("SketchConstraintRigid_12")
-SketchConstraintCoincidence_241 = Sketch_16.setCoincident(SketchArc_28.center(), SketchLine_159.result())
-SketchConstraintCoincidence_241.setName("SketchConstraintCoincidence_72")
-SketchConstraintCoincidence_242 = Sketch_16.setCoincident(SketchArc_28.startPoint(), SketchLine_159.result())
-SketchConstraintCoincidence_242.setName("SketchConstraintCoincidence_73")
-SketchConstraintCoincidence_243 = Sketch_16.setCoincident(SketchArc_28.endPoint(), SketchLine_159.result())
-SketchConstraintCoincidence_243.setName("SketchConstraintCoincidence_74")
-SketchLine_160 = Sketch_16.addLine(45.49999999999999, 8.91700958118717e-020, 46.49999999999999, 8.280962276646116e-019)
+SketchConstraintCoincidence_242 = Sketch_16.setCoincident(SketchArc_28.center(), SketchLine_159.result())
+SketchConstraintCoincidence_242.setName("SketchConstraintCoincidence_72")
+SketchConstraintCoincidence_243 = Sketch_16.setCoincident(SketchArc_28.startPoint(), SketchLine_159.result())
+SketchConstraintCoincidence_243.setName("SketchConstraintCoincidence_73")
+SketchConstraintCoincidence_244 = Sketch_16.setCoincident(SketchArc_28.endPoint(), SketchLine_159.result())
+SketchConstraintCoincidence_244.setName("SketchConstraintCoincidence_74")
+SketchLine_160 = Sketch_16.addLine(45.5, 0, 46.5, 0)
 SketchLine_160.setName("SketchLine_56")
 SketchLine_160.result().setName("SketchLine_56")
-SketchConstraintCoincidence_244 = Sketch_16.setCoincident(SketchArc_28.startPoint(), SketchLine_160.startPoint())
-SketchConstraintCoincidence_244.setName("SketchConstraintCoincidence_75")
-SketchConstraintCoincidence_245 = Sketch_16.setCoincident(SketchArc_28.endPoint(), SketchLine_160.endPoint())
-SketchConstraintCoincidence_245.setName("SketchConstraintCoincidence_76")
-SketchConstraintRadius_15 = Sketch_16.setRadius(SketchArc_28.results()[1], 0.5)
-SketchLine_161 = Sketch_16.addLine(0, 0, 0, 3.499999999999999)
+SketchConstraintCoincidence_245 = Sketch_16.setCoincident(SketchArc_28.startPoint(), SketchLine_160.startPoint())
+SketchConstraintCoincidence_245.setName("SketchConstraintCoincidence_75")
+SketchConstraintCoincidence_246 = Sketch_16.setCoincident(SketchArc_28.endPoint(), SketchLine_160.endPoint())
+SketchConstraintCoincidence_246.setName("SketchConstraintCoincidence_76")
+SketchConstraintRadius_12 = Sketch_16.setRadius(SketchArc_28.results()[1], 0.5)
+SketchLine_161 = Sketch_16.addLine(0, 0, 0, 3.5)
 SketchLine_161.setName("SketchLine_57")
 SketchLine_161.result().setName("SketchLine_57")
-SketchConstraintDistance_28 = Sketch_16.setDistance(SketchArc_28.center(), SketchLine_161.result(), 46)
+SketchConstraintDistance_28 = Sketch_16.setDistance(SketchArc_28.center(), SketchLine_161.result(), 46, False)
 SketchConstraintRigid_17 = Sketch_16.setFixed(SketchLine_161.result())
 SketchConstraintRigid_17.setName("SketchConstraintRigid_13")
 SketchPoint_31 = Sketch_16.addPoint(58, 0)
-SketchConstraintCoincidence_246 = Sketch_16.setCoincident(SketchPoint_31.coordinates(), SketchLine_159.result())
-SketchConstraintCoincidence_246.setName("SketchConstraintCoincidence_77")
-SketchConstraintDistance_29 = Sketch_16.setDistance(SketchArc_28.center(), SketchPoint_31.coordinates(), 12)
+SketchConstraintCoincidence_247 = Sketch_16.setCoincident(SketchPoint_31.coordinates(), SketchLine_159.result())
+SketchConstraintCoincidence_247.setName("SketchConstraintCoincidence_77")
+SketchConstraintDistance_29 = Sketch_16.setDistance(SketchArc_28.center(), SketchPoint_31.coordinates(), 12, False)
 SketchMultiTranslation_4 = Sketch_16.addTranslation([SketchLine_160.result(), SketchArc_28.results()[1]], SketchArc_28.center(), SketchPoint_31.coordinates(), 9, True)
 [SketchLine_162, SketchLine_163, SketchLine_164, SketchLine_165, SketchLine_166, SketchLine_167, SketchLine_168, SketchLine_169, SketchArc_29, SketchArc_30, SketchArc_31, SketchArc_32, SketchArc_33, SketchArc_34, SketchArc_35, SketchArc_36] = SketchMultiTranslation_4.translated()
 SketchLine_169.setName("SketchLine_65")
@@ -1397,16 +1401,16 @@ SketchLine_162.result().setName("SketchLine_58")
 model.do()
 ExtrusionFuse_2 = model.addExtrusionFuse(Part_2_doc, [model.selection("COMPOUND", "Sketch_6")], model.selection(), model.selection("FACE", "Sketch_1/Face-SketchLine_1f-SketchLine_3f-SketchLine_4f-SketchLine_5f-SketchLine_7f-SketchArc_1_2f-SketchLine_8f-SketchLine_9f-SketchLine_10r-SketchLine_11r-SketchLine_12r-SketchLine_14r-SketchArc_2_2r"), 0, model.selection(), 0, [model.selection("SOLID", "ExtrusionCut_5_1")])
 Sketch_17 = model.addSketch(Part_2_doc, model.selection("FACE", "ExtrusionCut_2_1/Modfied_9"))
-SketchLine_170 = Sketch_17.addLine(50.25000000000001, -4.5, 31.24999999998802, -4.499999999999997)
+SketchLine_170 = Sketch_17.addLine(50.25, -4.5, 31.25, -4.5)
 SketchLine_170.setName("SketchLine_76")
 SketchLine_170.result().setName("SketchLine_76")
-SketchLine_171 = Sketch_17.addLine(51.00000000000001, -6.749999999999998, 51.00000000000001, -5.24999997149696)
+SketchLine_171 = Sketch_17.addLine(51, -6.75, 51, -5.25)
 SketchLine_171.setName("SketchLine_78")
 SketchLine_171.result().setName("SketchLine_78")
-SketchLine_172 = Sketch_17.addLine(31, -4.750000022881151, 31, -7.249999999972618)
+SketchLine_172 = Sketch_17.addLine(31, -4.75, 31, -7.249999999999651)
 SketchLine_172.setName("SketchLine_80")
 SketchLine_172.result().setName("SketchLine_80")
-SketchLine_173 = Sketch_17.addLine(31.25000000003855, -7.5, 50.24999994039248, -7.5)
+SketchLine_173 = Sketch_17.addLine(31.25, -7.499999999999998, 50.25, -7.5)
 SketchLine_173.setName("SketchLine_79")
 SketchLine_173.result().setName("SketchLine_79")
 SketchLine_174 = Sketch_17.addLine(51, -4.5, 31, -4.5)
@@ -1415,22 +1419,22 @@ SketchLine_174.result().setName("SketchLine_66")
 SketchLine_174.setAuxiliary(True)
 SketchLine_175 = Sketch_17.addLine(51, -7.5, 51, -4.5)
 SketchLine_175.setAuxiliary(True)
-SketchConstraintCoincidence_247 = Sketch_17.setCoincident(SketchLine_175.endPoint(), SketchLine_174.startPoint())
-SketchConstraintCoincidence_247.setName("SketchConstraintCoincidence_78")
+SketchConstraintCoincidence_248 = Sketch_17.setCoincident(SketchLine_175.endPoint(), SketchLine_174.startPoint())
+SketchConstraintCoincidence_248.setName("SketchConstraintCoincidence_78")
 SketchLine_176 = Sketch_17.addLine(31, -4.5, 31, -7.5)
 SketchLine_176.setName("SketchLine_67")
 SketchLine_176.result().setName("SketchLine_67")
 SketchLine_176.setAuxiliary(True)
-SketchConstraintCoincidence_248 = Sketch_17.setCoincident(SketchLine_174.endPoint(), SketchLine_176.startPoint())
-SketchConstraintCoincidence_248.setName("SketchConstraintCoincidence_79")
+SketchConstraintCoincidence_249 = Sketch_17.setCoincident(SketchLine_174.endPoint(), SketchLine_176.startPoint())
+SketchConstraintCoincidence_249.setName("SketchConstraintCoincidence_79")
 SketchLine_177 = Sketch_17.addLine(31, -7.5, 51, -7.5)
 SketchLine_177.setName("SketchLine_68")
 SketchLine_177.result().setName("SketchLine_68")
 SketchLine_177.setAuxiliary(True)
-SketchConstraintCoincidence_249 = Sketch_17.setCoincident(SketchLine_176.endPoint(), SketchLine_177.startPoint())
-SketchConstraintCoincidence_249.setName("SketchConstraintCoincidence_80")
-SketchConstraintCoincidence_250 = Sketch_17.setCoincident(SketchLine_177.endPoint(), SketchLine_175.startPoint())
-SketchConstraintCoincidence_250.setName("SketchConstraintCoincidence_81")
+SketchConstraintCoincidence_250 = Sketch_17.setCoincident(SketchLine_176.endPoint(), SketchLine_177.startPoint())
+SketchConstraintCoincidence_250.setName("SketchConstraintCoincidence_80")
+SketchConstraintCoincidence_251 = Sketch_17.setCoincident(SketchLine_177.endPoint(), SketchLine_175.startPoint())
+SketchConstraintCoincidence_251.setName("SketchConstraintCoincidence_81")
 SketchConstraintHorizontal_34 = Sketch_17.setHorizontal(SketchLine_174.result())
 SketchConstraintHorizontal_34.setName("SketchConstraintHorizontal_13")
 SketchConstraintVertical_31 = Sketch_17.setVertical(SketchLine_176.result())
@@ -1441,221 +1445,225 @@ SketchLine_178 = Sketch_17.addLine(31, -7.5, 51, -4.5)
 SketchLine_178.setName("SketchLine_70")
 SketchLine_178.result().setName("SketchLine_70")
 SketchLine_178.setAuxiliary(True)
-SketchConstraintCoincidence_251 = Sketch_17.setCoincident(SketchLine_176.endPoint(), SketchLine_178.startPoint())
-SketchConstraintCoincidence_251.setName("SketchConstraintCoincidence_82")
-SketchConstraintCoincidence_252 = Sketch_17.setCoincident(SketchLine_177.startPoint(), SketchLine_178.startPoint())
-SketchConstraintCoincidence_252.setName("SketchConstraintCoincidence_83")
+SketchConstraintCoincidence_252 = Sketch_17.setCoincident(SketchLine_176.endPoint(), SketchLine_178.startPoint())
+SketchConstraintCoincidence_252.setName("SketchConstraintCoincidence_82")
+SketchConstraintCoincidence_253 = Sketch_17.setCoincident(SketchLine_177.startPoint(), SketchLine_178.startPoint())
+SketchConstraintCoincidence_253.setName("SketchConstraintCoincidence_83")
 SketchPoint_32 = Sketch_17.addPoint(51, -4.5)
-SketchConstraintCoincidence_253 = Sketch_17.setCoincident(SketchLine_174.startPoint(), SketchPoint_32.coordinates())
-SketchConstraintCoincidence_253.setName("SketchConstraintCoincidence_84")
-SketchConstraintCoincidence_254 = Sketch_17.setCoincident(SketchLine_175.endPoint(), SketchPoint_32.coordinates())
-SketchConstraintCoincidence_254.setName("SketchConstraintCoincidence_85")
+SketchConstraintCoincidence_254 = Sketch_17.setCoincident(SketchLine_174.startPoint(), SketchPoint_32.coordinates())
+SketchConstraintCoincidence_254.setName("SketchConstraintCoincidence_84")
+SketchConstraintCoincidence_255 = Sketch_17.setCoincident(SketchLine_175.endPoint(), SketchPoint_32.coordinates())
+SketchConstraintCoincidence_255.setName("SketchConstraintCoincidence_85")
 SketchPoint_33 = Sketch_17.addPoint(41, -6)
 SketchPoint_33.setAuxiliary(True)
-SketchConstraintCoincidence_255 = Sketch_17.setCoincident(SketchPoint_33.coordinates(), SketchLine_178.result())
-SketchConstraintCoincidence_255.setName("SketchConstraintCoincidence_86")
+SketchConstraintCoincidence_256 = Sketch_17.setCoincident(SketchPoint_33.coordinates(), SketchLine_178.result())
+SketchConstraintCoincidence_256.setName("SketchConstraintCoincidence_86")
 SketchConstraintMiddle_11 = Sketch_17.setMiddlePoint(SketchLine_178.result(), SketchPoint_33.coordinates())
-SketchPoint_34 = Sketch_17.addPoint(21.00014787857639, -5.999999999999999)
+SketchPoint_34 = Sketch_17.addPoint(21, -6)
 SketchPoint_34.setAuxiliary(True)
-SketchLine_179 = Sketch_17.addLine(21.00014787857639, -10.5, 21.00014787857639, -1.499999999999999)
+SketchLine_179 = Sketch_17.addLine(21, -10.5, 21, -1.5)
 SketchLine_179.setName("SketchLine_71")
 SketchLine_179.result().setName("SketchLine_71")
 SketchConstraintRigid_18 = Sketch_17.setFixed(SketchLine_179.result())
 SketchConstraintRigid_18.setName("SketchConstraintRigid_14")
-SketchConstraintCoincidence_256 = Sketch_17.setCoincident(SketchPoint_34.coordinates(), SketchLine_179.result())
-SketchConstraintCoincidence_256.setName("SketchConstraintCoincidence_87")
+SketchConstraintCoincidence_257 = Sketch_17.setCoincident(SketchPoint_34.coordinates(), SketchLine_179.result())
+SketchConstraintCoincidence_257.setName("SketchConstraintCoincidence_87")
 SketchConstraintMiddle_12 = Sketch_17.setMiddlePoint(SketchPoint_34.coordinates(), SketchLine_179.result())
-SketchLine_180 = Sketch_17.addLine(21.00014787857639, -6, 41, -5.999999999999999)
+SketchLine_180 = Sketch_17.addLine(21, -6, 41, -6)
 SketchLine_180.setName("SketchLine_72")
 SketchLine_180.result().setName("SketchLine_72")
 SketchLine_180.setAuxiliary(True)
-SketchConstraintCoincidence_257 = Sketch_17.setCoincident(SketchPoint_34.coordinates(), SketchLine_180.startPoint())
-SketchConstraintCoincidence_257.setName("SketchConstraintCoincidence_88")
-SketchConstraintCoincidence_258 = Sketch_17.setCoincident(SketchPoint_33.coordinates(), SketchLine_180.endPoint())
-SketchConstraintCoincidence_258.setName("SketchConstraintCoincidence_89")
+SketchConstraintCoincidence_258 = Sketch_17.setCoincident(SketchPoint_34.coordinates(), SketchLine_180.startPoint())
+SketchConstraintCoincidence_258.setName("SketchConstraintCoincidence_88")
+SketchConstraintCoincidence_259 = Sketch_17.setCoincident(SketchPoint_33.coordinates(), SketchLine_180.endPoint())
+SketchConstraintCoincidence_259.setName("SketchConstraintCoincidence_89")
 SketchConstraintHorizontal_36 = Sketch_17.setHorizontal(SketchLine_180.result())
 SketchConstraintHorizontal_36.setName("SketchConstraintHorizontal_15")
-SketchConstraintCoincidence_259 = Sketch_17.setCoincident(SketchLine_178.endPoint(), SketchLine_174.startPoint())
-SketchConstraintCoincidence_259.setName("SketchConstraintCoincidence_90")
+SketchConstraintCoincidence_260 = Sketch_17.setCoincident(SketchLine_178.endPoint(), SketchLine_174.startPoint())
+SketchConstraintCoincidence_260.setName("SketchConstraintCoincidence_90")
 SketchConstraintLength_29 = Sketch_17.setLength(SketchLine_175.result(), 3)
 SketchConstraintLength_29.setName("SketchConstraintLength_13")
 SketchConstraintLength_30 = Sketch_17.setLength(SketchLine_174.result(), 20)
 SketchConstraintLength_30.setName("SketchConstraintLength_14")
 SketchPoint_35 = Sketch_17.addPoint(29, -10.5)
-SketchConstraintDistance_30 = Sketch_17.setDistance(SketchPoint_35.coordinates(), SketchLine_176.result(), 2)
+SketchConstraintDistance_30 = Sketch_17.setDistance(SketchPoint_35.coordinates(), SketchLine_176.result(), 2, False)
 SketchConstraintRigid_19 = Sketch_17.setFixed(SketchPoint_35.result())
 SketchConstraintRigid_19.setName("SketchConstraintRigid_15")
-SketchArc_37 = Sketch_17.addArc(50.24999999999999, -5.250000000000003, 51.00000000000001, -5.24999997149696, 50.25000000000001, -4.5, False)
-SketchLine_181 = Sketch_17.addLine(51, -7.5, 51.00000000000001, -5.24999997149696)
+SketchArc_37 = Sketch_17.addArc(50.25, -5.25, 51, -5.25, 50.25, -4.5, False)
+SketchLine_181 = Sketch_17.addLine(51, -7.5, 51, -5.25)
 SketchLine_181.setName("SketchLine_74")
 SketchLine_181.result().setName("SketchLine_74")
 SketchLine_181.setAuxiliary(True)
-SketchConstraintCoincidence_260 = Sketch_17.setCoincident(SketchArc_37.startPoint(), SketchLine_181.endPoint())
-SketchConstraintCoincidence_260.setName("SketchConstraintCoincidence_91")
-SketchLine_182 = Sketch_17.addLine(50.25000000000001, -4.5, 31, -4.5)
+SketchConstraintCoincidence_261 = Sketch_17.setCoincident(SketchArc_37.startPoint(), SketchLine_181.endPoint())
+SketchConstraintCoincidence_261.setName("SketchConstraintCoincidence_91")
+SketchLine_182 = Sketch_17.addLine(50.25, -4.5, 31, -4.5)
 SketchLine_182.setName("SketchLine_73")
 SketchLine_182.result().setName("SketchLine_73")
 SketchLine_182.setAuxiliary(True)
-SketchConstraintCoincidence_261 = Sketch_17.setCoincident(SketchArc_37.endPoint(), SketchLine_182.startPoint())
-SketchConstraintCoincidence_261.setName("SketchConstraintCoincidence_92")
-SketchConstraintTangent_15 = Sketch_17.setTangent(SketchArc_37.results()[1], SketchLine_182.result())
-SketchConstraintTangent_16 = Sketch_17.setTangent(SketchArc_37.results()[1], SketchLine_181.result())
-SketchConstraintCoincidence_262 = Sketch_17.setCoincident(SketchLine_174.endPoint(), SketchLine_182.endPoint())
-SketchConstraintCoincidence_262.setName("SketchConstraintCoincidence_93")
-SketchConstraintCoincidence_263 = Sketch_17.setCoincident(SketchLine_175.startPoint(), SketchLine_181.startPoint())
-SketchConstraintCoincidence_263.setName("SketchConstraintCoincidence_94")
-SketchConstraintCoincidence_264 = Sketch_17.setCoincident(SketchLine_182.startPoint(), SketchLine_174.result())
-SketchConstraintCoincidence_264.setName("SketchConstraintCoincidence_95")
-SketchConstraintCoincidence_265 = Sketch_17.setCoincident(SketchLine_181.endPoint(), SketchLine_175.result())
-SketchConstraintCoincidence_265.setName("SketchConstraintCoincidence_96")
-SketchArc_38 = Sketch_17.addArc(31.25000000000067, -4.750000000000669, 31.24999999998802, -4.499999999999997, 31, -4.750000022881151, False)
-SketchConstraintCoincidence_266 = Sketch_17.setCoincident(SketchArc_38.startPoint(), SketchLine_170.endPoint())
-SketchConstraintCoincidence_266.setName("SketchConstraintCoincidence_97")
-SketchLine_183 = Sketch_17.addLine(31, -4.750000022881151, 31, -7.5)
+SketchConstraintCoincidence_262 = Sketch_17.setCoincident(SketchArc_37.endPoint(), SketchLine_182.startPoint())
+SketchConstraintCoincidence_262.setName("SketchConstraintCoincidence_92")
+SketchConstraintTangent_17 = Sketch_17.setTangent(SketchArc_37.results()[1], SketchLine_182.result())
+SketchConstraintTangent_18 = Sketch_17.setTangent(SketchArc_37.results()[1], SketchLine_181.result())
+SketchConstraintCoincidence_263 = Sketch_17.setCoincident(SketchLine_174.endPoint(), SketchLine_182.endPoint())
+SketchConstraintCoincidence_263.setName("SketchConstraintCoincidence_93")
+SketchConstraintCoincidence_264 = Sketch_17.setCoincident(SketchLine_175.startPoint(), SketchLine_181.startPoint())
+SketchConstraintCoincidence_264.setName("SketchConstraintCoincidence_94")
+SketchConstraintCoincidence_265 = Sketch_17.setCoincident(SketchLine_182.startPoint(), SketchLine_174.result())
+SketchConstraintCoincidence_265.setName("SketchConstraintCoincidence_95")
+SketchConstraintCoincidence_266 = Sketch_17.setCoincident(SketchLine_181.endPoint(), SketchLine_175.result())
+SketchConstraintCoincidence_266.setName("SketchConstraintCoincidence_96")
+SketchArc_38 = Sketch_17.addArc(31.25, -4.75, 31.25, -4.5, 31, -4.75, False)
+SketchConstraintCoincidence_267 = Sketch_17.setCoincident(SketchArc_38.startPoint(), SketchLine_170.endPoint())
+SketchConstraintCoincidence_267.setName("SketchConstraintCoincidence_97")
+SketchLine_183 = Sketch_17.addLine(31, -4.75, 31, -7.5)
 SketchLine_183.setName("SketchLine_75")
 SketchLine_183.result().setName("SketchLine_75")
 SketchLine_183.setAuxiliary(True)
-SketchConstraintCoincidence_267 = Sketch_17.setCoincident(SketchArc_38.endPoint(), SketchLine_183.startPoint())
-SketchConstraintCoincidence_267.setName("SketchConstraintCoincidence_98")
-SketchConstraintTangent_17 = Sketch_17.setTangent(SketchArc_38.results()[1], SketchLine_183.result())
-SketchConstraintTangent_18 = Sketch_17.setTangent(SketchArc_38.results()[1], SketchLine_170.result())
-SketchConstraintCoincidence_268 = Sketch_17.setCoincident(SketchLine_176.endPoint(), SketchLine_183.endPoint())
-SketchConstraintCoincidence_268.setName("SketchConstraintCoincidence_99")
-SketchConstraintCoincidence_269 = Sketch_17.setCoincident(SketchLine_182.startPoint(), SketchLine_170.startPoint())
-SketchConstraintCoincidence_269.setName("SketchConstraintCoincidence_100")
-SketchConstraintCoincidence_270 = Sketch_17.setCoincident(SketchLine_183.startPoint(), SketchLine_176.result())
-SketchConstraintCoincidence_270.setName("SketchConstraintCoincidence_101")
-SketchConstraintCoincidence_271 = Sketch_17.setCoincident(SketchLine_170.endPoint(), SketchLine_182.result())
-SketchConstraintCoincidence_271.setName("SketchConstraintCoincidence_102")
-SketchArc_39 = Sketch_17.addArc(50.25, -6.749999999999999, 50.24999994039248, -7.5, 51.00000000000001, -6.749999999999998, False)
-SketchLine_184 = Sketch_17.addLine(31, -7.5, 50.24999994039248, -7.5)
+SketchConstraintCoincidence_268 = Sketch_17.setCoincident(SketchArc_38.endPoint(), SketchLine_183.startPoint())
+SketchConstraintCoincidence_268.setName("SketchConstraintCoincidence_98")
+SketchConstraintTangent_19 = Sketch_17.setTangent(SketchArc_38.results()[1], SketchLine_183.result())
+SketchConstraintTangent_20 = Sketch_17.setTangent(SketchArc_38.results()[1], SketchLine_170.result())
+SketchConstraintCoincidence_269 = Sketch_17.setCoincident(SketchLine_176.endPoint(), SketchLine_183.endPoint())
+SketchConstraintCoincidence_269.setName("SketchConstraintCoincidence_99")
+SketchConstraintCoincidence_270 = Sketch_17.setCoincident(SketchLine_182.startPoint(), SketchLine_170.startPoint())
+SketchConstraintCoincidence_270.setName("SketchConstraintCoincidence_100")
+SketchConstraintCoincidence_271 = Sketch_17.setCoincident(SketchLine_183.startPoint(), SketchLine_176.result())
+SketchConstraintCoincidence_271.setName("SketchConstraintCoincidence_101")
+SketchConstraintCoincidence_272 = Sketch_17.setCoincident(SketchLine_170.endPoint(), SketchLine_182.result())
+SketchConstraintCoincidence_272.setName("SketchConstraintCoincidence_102")
+SketchArc_39 = Sketch_17.addArc(50.25, -6.75, 50.25, -7.5, 51, -6.75, False)
+SketchLine_184 = Sketch_17.addLine(31, -7.5, 50.25, -7.5)
 SketchLine_184.setName("SketchLine_77")
 SketchLine_184.result().setName("SketchLine_77")
 SketchLine_184.setAuxiliary(True)
-SketchConstraintCoincidence_272 = Sketch_17.setCoincident(SketchArc_39.startPoint(), SketchLine_184.endPoint())
-SketchConstraintCoincidence_272.setName("SketchConstraintCoincidence_103")
-SketchConstraintCoincidence_273 = Sketch_17.setCoincident(SketchArc_39.endPoint(), SketchLine_171.startPoint())
-SketchConstraintCoincidence_273.setName("SketchConstraintCoincidence_104")
-SketchConstraintTangent_19 = Sketch_17.setTangent(SketchArc_39.results()[1], SketchLine_184.result())
-SketchConstraintTangent_20 = Sketch_17.setTangent(SketchArc_39.results()[1], SketchLine_171.result())
-SketchConstraintCoincidence_274 = Sketch_17.setCoincident(SketchLine_177.startPoint(), SketchLine_184.startPoint())
-SketchConstraintCoincidence_274.setName("SketchConstraintCoincidence_105")
-SketchConstraintCoincidence_275 = Sketch_17.setCoincident(SketchLine_181.endPoint(), SketchLine_171.endPoint())
-SketchConstraintCoincidence_275.setName("SketchConstraintCoincidence_106")
-SketchConstraintCoincidence_276 = Sketch_17.setCoincident(SketchLine_184.endPoint(), SketchLine_177.result())
-SketchConstraintCoincidence_276.setName("SketchConstraintCoincidence_107")
-SketchConstraintCoincidence_277 = Sketch_17.setCoincident(SketchLine_171.startPoint(), SketchLine_181.result())
-SketchConstraintCoincidence_277.setName("SketchConstraintCoincidence_108")
-SketchArc_40 = Sketch_17.addArc(31.25000000000003, -7.250000000000001, 31, -7.249999999972618, 31.25000000003855, -7.5, False)
-SketchConstraintCoincidence_278 = Sketch_17.setCoincident(SketchArc_40.startPoint(), SketchLine_172.endPoint())
-SketchConstraintCoincidence_278.setName("SketchConstraintCoincidence_109")
-SketchConstraintCoincidence_279 = Sketch_17.setCoincident(SketchArc_40.endPoint(), SketchLine_173.startPoint())
-SketchConstraintCoincidence_279.setName("SketchConstraintCoincidence_110")
-SketchConstraintTangent_21 = Sketch_17.setTangent(SketchArc_40.results()[1], SketchLine_173.result())
-SketchConstraintTangent_22 = Sketch_17.setTangent(SketchArc_40.results()[1], SketchLine_172.result())
-SketchConstraintCoincidence_280 = Sketch_17.setCoincident(SketchLine_184.endPoint(), SketchLine_173.endPoint())
-SketchConstraintCoincidence_280.setName("SketchConstraintCoincidence_111")
-SketchConstraintCoincidence_281 = Sketch_17.setCoincident(SketchLine_183.startPoint(), SketchLine_172.startPoint())
-SketchConstraintCoincidence_281.setName("SketchConstraintCoincidence_112")
-SketchConstraintCoincidence_282 = Sketch_17.setCoincident(SketchLine_173.startPoint(), SketchLine_184.result())
-SketchConstraintCoincidence_282.setName("SketchConstraintCoincidence_113")
-SketchConstraintCoincidence_283 = Sketch_17.setCoincident(SketchLine_172.endPoint(), SketchLine_183.result())
-SketchConstraintCoincidence_283.setName("SketchConstraintCoincidence_114")
-SketchConstraintRadius_16 = Sketch_17.setRadius(SketchArc_37.results()[1], 0.75)
-SketchConstraintRadius_17 = Sketch_17.setRadius(SketchArc_39.results()[1], 0.75)
-SketchConstraintRadius_18 = Sketch_17.setRadius(SketchArc_38.results()[1], 0.25)
-SketchConstraintRadius_19 = Sketch_17.setRadius(SketchArc_40.results()[1], 0.25)
+SketchConstraintCoincidence_273 = Sketch_17.setCoincident(SketchArc_39.startPoint(), SketchLine_184.endPoint())
+SketchConstraintCoincidence_273.setName("SketchConstraintCoincidence_103")
+SketchConstraintCoincidence_274 = Sketch_17.setCoincident(SketchArc_39.endPoint(), SketchLine_171.startPoint())
+SketchConstraintCoincidence_274.setName("SketchConstraintCoincidence_104")
+SketchConstraintTangent_21 = Sketch_17.setTangent(SketchArc_39.results()[1], SketchLine_184.result())
+SketchConstraintTangent_22 = Sketch_17.setTangent(SketchArc_39.results()[1], SketchLine_171.result())
+SketchConstraintCoincidence_275 = Sketch_17.setCoincident(SketchLine_177.startPoint(), SketchLine_184.startPoint())
+SketchConstraintCoincidence_275.setName("SketchConstraintCoincidence_105")
+SketchConstraintCoincidence_276 = Sketch_17.setCoincident(SketchLine_181.endPoint(), SketchLine_171.endPoint())
+SketchConstraintCoincidence_276.setName("SketchConstraintCoincidence_106")
+SketchConstraintCoincidence_277 = Sketch_17.setCoincident(SketchLine_184.endPoint(), SketchLine_177.result())
+SketchConstraintCoincidence_277.setName("SketchConstraintCoincidence_107")
+SketchConstraintCoincidence_278 = Sketch_17.setCoincident(SketchLine_171.startPoint(), SketchLine_181.result())
+SketchConstraintCoincidence_278.setName("SketchConstraintCoincidence_108")
+SketchArc_40 = Sketch_17.addArc(31.25, -7.249999999999998, 31, -7.249999999999651, 31.25, -7.499999999999998, False)
+SketchConstraintCoincidence_279 = Sketch_17.setCoincident(SketchArc_40.startPoint(), SketchLine_172.endPoint())
+SketchConstraintCoincidence_279.setName("SketchConstraintCoincidence_109")
+SketchConstraintCoincidence_280 = Sketch_17.setCoincident(SketchArc_40.endPoint(), SketchLine_173.startPoint())
+SketchConstraintCoincidence_280.setName("SketchConstraintCoincidence_110")
+SketchConstraintCoincidence_281 = Sketch_17.setCoincident(SketchLine_184.endPoint(), SketchLine_173.endPoint())
+SketchConstraintCoincidence_281.setName("SketchConstraintCoincidence_111")
+SketchConstraintCoincidence_282 = Sketch_17.setCoincident(SketchLine_183.startPoint(), SketchLine_172.startPoint())
+SketchConstraintCoincidence_282.setName("SketchConstraintCoincidence_112")
+SketchConstraintCoincidence_283 = Sketch_17.setCoincident(SketchLine_173.startPoint(), SketchLine_184.result())
+SketchConstraintCoincidence_283.setName("SketchConstraintCoincidence_113")
+SketchConstraintCoincidence_284 = Sketch_17.setCoincident(SketchLine_172.endPoint(), SketchLine_183.result())
+SketchConstraintCoincidence_284.setName("SketchConstraintCoincidence_114")
+SketchConstraintRadius_13 = Sketch_17.setRadius(SketchArc_37.results()[1], 0.75)
+SketchConstraintRadius_14 = Sketch_17.setRadius(SketchArc_39.results()[1], 0.75)
+SketchConstraintRadius_15 = Sketch_17.setRadius(SketchArc_38.results()[1], 0.25)
+SketchConstraintTangent_23 = Sketch_17.setTangent(SketchArc_40.results()[1], SketchLine_173.result())
+SketchConstraintTangent_23.setName("SketchConstraintTangent_16")
+SketchConstraintTangent_24 = Sketch_17.setTangent(SketchLine_172.result(), SketchArc_40.results()[1])
+SketchConstraintTangent_24.setName("SketchConstraintTangent_17")
+SketchConstraintRadius_16 = Sketch_17.setRadius(SketchArc_40.results()[1], 0.25)
+SketchConstraintRadius_16.setName("SketchConstraintRadius_10")
 model.do()
 ExtrusionCut_15 = model.addExtrusionCut(Part_2_doc, [model.selection("COMPOUND", "Sketch_7")], model.selection(), 0, 20, [model.selection("SOLID", "ExtrusionFuse_1_1")])
 Sketch_18 = model.addSketch(Part_2_doc, model.selection("FACE", "ExtrusionCut_6_1/Modfied_10"))
-SketchPoint_36 = Sketch_18.addPoint(53.99994409538203, -1.615587133892632e-027)
-SketchPoint_37 = Sketch_18.addPoint(53.99994409538203, -1.615587133892632e-027)
+SketchPoint_36 = Sketch_18.addPoint(54, 0)
+SketchPoint_37 = Sketch_18.addPoint(54, 0)
 SketchConstraintRigid_20 = Sketch_18.setFixed(SketchPoint_37.result())
 SketchConstraintRigid_20.setName("SketchConstraintRigid_16")
-SketchConstraintCoincidence_284 = Sketch_18.setCoincident(SketchPoint_36.coordinates(), SketchPoint_37.result())
-SketchConstraintCoincidence_284.setName("SketchConstraintCoincidence_115")
+SketchConstraintCoincidence_285 = Sketch_18.setCoincident(SketchPoint_36.coordinates(), SketchPoint_37.result())
+SketchConstraintCoincidence_285.setName("SketchConstraintCoincidence_115")
 SketchPoint_38 = Sketch_18.addPoint(54, 12)
-SketchLine_185 = Sketch_18.addLine(54, 12, 53.99994409538203, -1.615587133892632e-027)
+SketchLine_185 = Sketch_18.addLine(54, 12, 54, 0)
 SketchLine_185.setName("SketchLine_81")
 SketchLine_185.result().setName("SketchLine_81")
 SketchLine_185.setAuxiliary(True)
-SketchConstraintCoincidence_285 = Sketch_18.setCoincident(SketchPoint_38.coordinates(), SketchLine_185.startPoint())
-SketchConstraintCoincidence_285.setName("SketchConstraintCoincidence_116")
-SketchConstraintCoincidence_286 = Sketch_18.setCoincident(SketchPoint_36.coordinates(), SketchLine_185.endPoint())
-SketchConstraintCoincidence_286.setName("SketchConstraintCoincidence_117")
-SketchConstraintCoincidence_287 = Sketch_18.setCoincident(SketchPoint_37.coordinates(), SketchLine_185.endPoint())
-SketchConstraintCoincidence_287.setName("SketchConstraintCoincidence_118")
-SketchPoint_39 = Sketch_18.addPoint(53.99999534128184, 11.00000000001085)
-SketchConstraintCoincidence_288 = Sketch_18.setCoincident(SketchPoint_39.coordinates(), SketchLine_185.result())
-SketchConstraintCoincidence_288.setName("SketchConstraintCoincidence_119")
-SketchPoint_40 = Sketch_18.addPoint(53.99994875410019, 0.9999999999891482)
-SketchConstraintCoincidence_289 = Sketch_18.setCoincident(SketchPoint_40.coordinates(), SketchLine_185.result())
-SketchConstraintCoincidence_289.setName("SketchConstraintCoincidence_120")
-SketchConstraintDistance_31 = Sketch_18.setDistance(SketchPoint_36.coordinates(), SketchPoint_40.coordinates(), 1)
-SketchConstraintDistance_32 = Sketch_18.setDistance(SketchPoint_38.coordinates(), SketchPoint_39.coordinates(), 1)
+SketchConstraintCoincidence_286 = Sketch_18.setCoincident(SketchPoint_38.coordinates(), SketchLine_185.startPoint())
+SketchConstraintCoincidence_286.setName("SketchConstraintCoincidence_116")
+SketchConstraintCoincidence_287 = Sketch_18.setCoincident(SketchPoint_36.coordinates(), SketchLine_185.endPoint())
+SketchConstraintCoincidence_287.setName("SketchConstraintCoincidence_117")
+SketchConstraintCoincidence_288 = Sketch_18.setCoincident(SketchPoint_37.coordinates(), SketchLine_185.endPoint())
+SketchConstraintCoincidence_288.setName("SketchConstraintCoincidence_118")
+SketchPoint_39 = Sketch_18.addPoint(54, 11)
+SketchConstraintCoincidence_289 = Sketch_18.setCoincident(SketchPoint_39.coordinates(), SketchLine_185.result())
+SketchConstraintCoincidence_289.setName("SketchConstraintCoincidence_119")
+SketchPoint_40 = Sketch_18.addPoint(54, 1)
+SketchConstraintCoincidence_290 = Sketch_18.setCoincident(SketchPoint_40.coordinates(), SketchLine_185.result())
+SketchConstraintCoincidence_290.setName("SketchConstraintCoincidence_120")
+SketchConstraintDistance_31 = Sketch_18.setDistance(SketchPoint_36.coordinates(), SketchPoint_40.coordinates(), 1, False)
+SketchConstraintDistance_32 = Sketch_18.setDistance(SketchPoint_38.coordinates(), SketchPoint_39.coordinates(), 1, False)
 SketchPoint_41 = Sketch_18.addPoint(54, 12)
-SketchConstraintCoincidence_290 = Sketch_18.setCoincident(SketchPoint_38.coordinates(), SketchPoint_41.coordinates())
-SketchConstraintCoincidence_290.setName("SketchConstraintCoincidence_121")
+SketchConstraintCoincidence_291 = Sketch_18.setCoincident(SketchPoint_38.coordinates(), SketchPoint_41.coordinates())
+SketchConstraintCoincidence_291.setName("SketchConstraintCoincidence_121")
 SketchConstraintRigid_21 = Sketch_18.setFixed(SketchPoint_41.result())
 SketchConstraintRigid_21.setName("SketchConstraintRigid_17")
-SketchLine_186 = Sketch_18.addLine(53.99999534128184, 11.00000000001085, 43.53696016024325, 11.00000000001085)
+SketchLine_186 = Sketch_18.addLine(54, 11, 43.82041221793113, 11)
 SketchLine_186.setName("SketchLine_82")
 SketchLine_186.result().setName("SketchLine_82")
-SketchConstraintCoincidence_291 = Sketch_18.setCoincident(SketchPoint_39.coordinates(), SketchLine_186.startPoint())
-SketchConstraintCoincidence_291.setName("SketchConstraintCoincidence_122")
-SketchLine_187 = Sketch_18.addLine(43.53696016024325, 11.00000000001085, 43.56530536601203, 13.47539228785809)
+SketchConstraintCoincidence_292 = Sketch_18.setCoincident(SketchPoint_39.coordinates(), SketchLine_186.startPoint())
+SketchConstraintCoincidence_292.setName("SketchConstraintCoincidence_122")
+SketchLine_187 = Sketch_18.addLine(43.82041221793113, 11, 43.82041221793113, 13.36310636658867)
 SketchLine_187.setName("SketchLine_83")
 SketchLine_187.result().setName("SketchLine_83")
-SketchConstraintCoincidence_292 = Sketch_18.setCoincident(SketchLine_186.endPoint(), SketchLine_187.startPoint())
-SketchConstraintCoincidence_292.setName("SketchConstraintCoincidence_123")
-SketchLine_188 = Sketch_18.addLine(43.56530536601203, 13.47539228785809, 63.09515214070713, 13.47539228785809)
+SketchConstraintCoincidence_293 = Sketch_18.setCoincident(SketchLine_186.endPoint(), SketchLine_187.startPoint())
+SketchConstraintCoincidence_293.setName("SketchConstraintCoincidence_123")
+SketchLine_188 = Sketch_18.addLine(43.82041221793113, 13.36310636658867, 63.09515214070713, 13.47539228785809)
 SketchLine_188.setName("SketchLine_84")
 SketchLine_188.result().setName("SketchLine_84")
-SketchConstraintCoincidence_293 = Sketch_18.setCoincident(SketchLine_187.endPoint(), SketchLine_188.startPoint())
-SketchConstraintCoincidence_293.setName("SketchConstraintCoincidence_124")
+SketchConstraintCoincidence_294 = Sketch_18.setCoincident(SketchLine_187.endPoint(), SketchLine_188.startPoint())
+SketchConstraintCoincidence_294.setName("SketchConstraintCoincidence_124")
 SketchLine_189 = Sketch_18.addLine(63.09515214070713, 13.47539228785809, 63.12349734647592, -1.774328415749978)
 SketchLine_189.setName("SketchLine_85")
 SketchLine_189.result().setName("SketchLine_85")
-SketchConstraintCoincidence_294 = Sketch_18.setCoincident(SketchLine_188.endPoint(), SketchLine_189.startPoint())
-SketchConstraintCoincidence_294.setName("SketchConstraintCoincidence_125")
+SketchConstraintCoincidence_295 = Sketch_18.setCoincident(SketchLine_188.endPoint(), SketchLine_189.startPoint())
+SketchConstraintCoincidence_295.setName("SketchConstraintCoincidence_125")
 SketchLine_190 = Sketch_18.addLine(63.12349734647592, -1.774328415749978, 43.82041221793113, -1.802673621518767)
 SketchLine_190.setName("SketchLine_86")
 SketchLine_190.result().setName("SketchLine_86")
-SketchConstraintCoincidence_295 = Sketch_18.setCoincident(SketchLine_189.endPoint(), SketchLine_190.startPoint())
-SketchConstraintCoincidence_295.setName("SketchConstraintCoincidence_126")
-SketchLine_191 = Sketch_18.addLine(43.82041221793113, -1.802673621518767, 43.79206701216234, 0.9999999999891482)
+SketchConstraintCoincidence_296 = Sketch_18.setCoincident(SketchLine_189.endPoint(), SketchLine_190.startPoint())
+SketchConstraintCoincidence_296.setName("SketchConstraintCoincidence_126")
+SketchLine_191 = Sketch_18.addLine(43.82041221793113, -1.802673621518767, 43.79206701216234, 1)
 SketchLine_191.setName("SketchLine_87")
 SketchLine_191.result().setName("SketchLine_87")
-SketchConstraintCoincidence_296 = Sketch_18.setCoincident(SketchLine_190.endPoint(), SketchLine_191.startPoint())
-SketchConstraintCoincidence_296.setName("SketchConstraintCoincidence_127")
-SketchLine_192 = Sketch_18.addLine(53.99994875410019, 0.9999999999891482, 43.79206701216234, 0.9999999999891482)
+SketchConstraintCoincidence_297 = Sketch_18.setCoincident(SketchLine_190.endPoint(), SketchLine_191.startPoint())
+SketchConstraintCoincidence_297.setName("SketchConstraintCoincidence_127")
+SketchLine_192 = Sketch_18.addLine(54, 1, 43.79206701216234, 1)
 SketchLine_192.setName("SketchLine_88")
 SketchLine_192.result().setName("SketchLine_88")
-SketchConstraintCoincidence_297 = Sketch_18.setCoincident(SketchPoint_40.coordinates(), SketchLine_192.startPoint())
-SketchConstraintCoincidence_297.setName("SketchConstraintCoincidence_128")
+SketchConstraintCoincidence_298 = Sketch_18.setCoincident(SketchPoint_40.coordinates(), SketchLine_192.startPoint())
+SketchConstraintCoincidence_298.setName("SketchConstraintCoincidence_128")
 SketchConstraintHorizontal_37 = Sketch_18.setHorizontal(SketchLine_192.result())
 SketchConstraintHorizontal_37.setName("SketchConstraintHorizontal_16")
 SketchConstraintHorizontal_38 = Sketch_18.setHorizontal(SketchLine_186.result())
 SketchConstraintHorizontal_38.setName("SketchConstraintHorizontal_17")
-SketchConstraintCoincidence_298 = Sketch_18.setCoincident(SketchLine_191.endPoint(), SketchLine_192.endPoint())
-SketchConstraintCoincidence_298.setName("SketchConstraintCoincidence_129")
-SketchArc_41 = Sketch_18.addArc(53.99995774377268, 6.000000000066637, 53.99999534128184, 11.00000000001085, 53.99994875410019, 0.9999999999891482, True)
-SketchConstraintCoincidence_299 = Sketch_18.setCoincident(SketchPoint_39.coordinates(), SketchArc_41.startPoint())
-SketchConstraintCoincidence_299.setName("SketchConstraintCoincidence_130")
-SketchConstraintCoincidence_300 = Sketch_18.setCoincident(SketchLine_186.startPoint(), SketchArc_41.startPoint())
-SketchConstraintCoincidence_300.setName("SketchConstraintCoincidence_131")
-SketchConstraintCoincidence_301 = Sketch_18.setCoincident(SketchPoint_40.coordinates(), SketchArc_41.endPoint())
-SketchConstraintCoincidence_301.setName("SketchConstraintCoincidence_132")
-SketchConstraintCoincidence_302 = Sketch_18.setCoincident(SketchLine_192.startPoint(), SketchArc_41.endPoint())
-SketchConstraintCoincidence_302.setName("SketchConstraintCoincidence_133")
-SketchConstraintRadius_20 = Sketch_18.setRadius(SketchArc_41.results()[1], 5)
-SketchLine_193 = Sketch_18.addLine(43.50261344273609, 8.249999999999998, 43.50261344273609, 3.749999999999998)
+SketchConstraintCoincidence_299 = Sketch_18.setCoincident(SketchLine_191.endPoint(), SketchLine_192.endPoint())
+SketchConstraintCoincidence_299.setName("SketchConstraintCoincidence_129")
+SketchArc_41 = Sketch_18.addArc(54, 6, 54, 11, 54, 1, True)
+SketchConstraintCoincidence_300 = Sketch_18.setCoincident(SketchArc_41.center(), SketchLine_185.result())
+SketchConstraintCoincidence_300.setName("SketchConstraintCoincidence_130")
+SketchConstraintCoincidence_301 = Sketch_18.setCoincident(SketchPoint_39.coordinates(), SketchArc_41.startPoint())
+SketchConstraintCoincidence_301.setName("SketchConstraintCoincidence_130_")
+SketchConstraintCoincidence_302 = Sketch_18.setCoincident(SketchLine_186.startPoint(), SketchArc_41.startPoint())
+SketchConstraintCoincidence_302.setName("SketchConstraintCoincidence_131")
+SketchConstraintCoincidence_303 = Sketch_18.setCoincident(SketchPoint_40.coordinates(), SketchArc_41.endPoint())
+SketchConstraintCoincidence_303.setName("SketchConstraintCoincidence_132")
+SketchConstraintCoincidence_304 = Sketch_18.setCoincident(SketchLine_192.startPoint(), SketchArc_41.endPoint())
+SketchConstraintCoincidence_304.setName("SketchConstraintCoincidence_133")
+SketchLine_193 = Sketch_18.addLine(43.50261344273609, 8.25, 43.50261344273609, 3.75)
 SketchLine_193.setName("SketchLine_90")
 SketchLine_193.result().setName("SketchLine_90")
 SketchConstraintVertical_33 = Sketch_18.setVertical(SketchLine_193.result())
 SketchConstraintLength_31 = Sketch_18.setLength(SketchLine_193.result(), 4.5)
 SketchConstraintLength_31.setName("SketchConstraintLength_15")
-SketchPoint_42 = Sketch_18.addPoint(43.50261344273609, 5.999999999999998)
+SketchPoint_42 = Sketch_18.addPoint(43.50261344273609, 6)
 SketchConstraintMiddle_13 = Sketch_18.setMiddlePoint(SketchPoint_42.coordinates(), SketchLine_193.result())
 SketchPoint_43 = Sketch_18.addPoint(0, 6)
 SketchPoint_43.setAuxiliary(True)
@@ -1664,70 +1672,70 @@ SketchLine_194.setName("SketchLine_94")
 SketchLine_194.result().setName("SketchLine_94")
 SketchConstraintRigid_22 = Sketch_18.setFixed(SketchLine_194.result())
 SketchConstraintRigid_22.setName("SketchConstraintRigid_19")
-SketchConstraintCoincidence_303 = Sketch_18.setCoincident(SketchPoint_43.coordinates(), SketchLine_194.result())
-SketchConstraintCoincidence_303.setName("SketchConstraintCoincidence_139")
+SketchConstraintCoincidence_305 = Sketch_18.setCoincident(SketchPoint_43.coordinates(), SketchLine_194.result())
+SketchConstraintCoincidence_305.setName("SketchConstraintCoincidence_139")
 SketchConstraintMiddle_14 = Sketch_18.setMiddlePoint(SketchLine_194.result(), SketchPoint_43.coordinates())
 SketchLine_195 = Sketch_18.addLine(0, 6, 68.8619738308997, 6)
 SketchLine_195.setName("SketchLine_95")
 SketchLine_195.result().setName("SketchLine_95")
 SketchLine_195.setAuxiliary(True)
-SketchConstraintCoincidence_304 = Sketch_18.setCoincident(SketchPoint_43.coordinates(), SketchLine_195.startPoint())
-SketchConstraintCoincidence_304.setName("SketchConstraintCoincidence_140")
+SketchConstraintCoincidence_306 = Sketch_18.setCoincident(SketchPoint_43.coordinates(), SketchLine_195.startPoint())
+SketchConstraintCoincidence_306.setName("SketchConstraintCoincidence_140")
 SketchConstraintHorizontal_39 = Sketch_18.setHorizontal(SketchLine_195.result())
 SketchConstraintHorizontal_39.setName("SketchConstraintHorizontal_20")
 SketchPoint_44 = Sketch_18.addPoint(48.00130672136804, 6)
-SketchConstraintCoincidence_305 = Sketch_18.setCoincident(SketchPoint_44.coordinates(), SketchLine_195.result())
-SketchConstraintCoincidence_305.setName("SketchConstraintCoincidence_146")
-SketchLine_196 = Sketch_18.addLine(43.50261344273609, 8.249999999999998, 51.26978940411676, 8.249999999999998)
+SketchConstraintCoincidence_307 = Sketch_18.setCoincident(SketchPoint_44.coordinates(), SketchLine_195.result())
+SketchConstraintCoincidence_307.setName("SketchConstraintCoincidence_146")
+SketchLine_196 = Sketch_18.addLine(43.50261344273609, 8.25, 51.26978940411676, 8.25)
 SketchLine_196.setName("SketchLine_92")
 SketchLine_196.result().setName("SketchLine_92")
-SketchConstraintCoincidence_306 = Sketch_18.setCoincident(SketchLine_193.startPoint(), SketchLine_196.startPoint())
-SketchConstraintCoincidence_306.setName("SketchConstraintCoincidence_135")
-SketchLine_197 = Sketch_18.addLine(51.26978940411676, 8.249999999999998, 51.26978940411676, 3.749999999999998)
+SketchConstraintCoincidence_308 = Sketch_18.setCoincident(SketchLine_193.startPoint(), SketchLine_196.startPoint())
+SketchConstraintCoincidence_308.setName("SketchConstraintCoincidence_135")
+SketchLine_197 = Sketch_18.addLine(51.26978940411676, 8.25, 51.26978940411676, 3.75)
 SketchLine_197.setName("SketchLine_97")
 SketchLine_197.result().setName("SketchLine_97")
-SketchConstraintCoincidence_307 = Sketch_18.setCoincident(SketchLine_196.endPoint(), SketchLine_197.startPoint())
-SketchConstraintCoincidence_307.setName("SketchConstraintCoincidence_136")
-SketchLine_198 = Sketch_18.addLine(51.26978940411676, 3.749999999999998, 43.50261344273609, 3.749999999999998)
+SketchConstraintCoincidence_309 = Sketch_18.setCoincident(SketchLine_196.endPoint(), SketchLine_197.startPoint())
+SketchConstraintCoincidence_309.setName("SketchConstraintCoincidence_136")
+SketchLine_198 = Sketch_18.addLine(51.26978940411676, 3.75, 43.50261344273609, 3.75)
 SketchLine_198.setName("SketchLine_98")
 SketchLine_198.result().setName("SketchLine_98")
-SketchConstraintCoincidence_308 = Sketch_18.setCoincident(SketchLine_197.endPoint(), SketchLine_198.startPoint())
-SketchConstraintCoincidence_308.setName("SketchConstraintCoincidence_137")
-SketchConstraintCoincidence_309 = Sketch_18.setCoincident(SketchLine_193.endPoint(), SketchLine_198.endPoint())
-SketchConstraintCoincidence_309.setName("SketchConstraintCoincidence_138")
+SketchConstraintCoincidence_310 = Sketch_18.setCoincident(SketchLine_197.endPoint(), SketchLine_198.startPoint())
+SketchConstraintCoincidence_310.setName("SketchConstraintCoincidence_137")
+SketchConstraintCoincidence_311 = Sketch_18.setCoincident(SketchLine_193.endPoint(), SketchLine_198.endPoint())
+SketchConstraintCoincidence_311.setName("SketchConstraintCoincidence_138")
 SketchConstraintHorizontal_40 = Sketch_18.setHorizontal(SketchLine_198.result())
 SketchConstraintHorizontal_41 = Sketch_18.setHorizontal(SketchLine_196.result())
 SketchConstraintVertical_34 = Sketch_18.setVertical(SketchLine_197.result())
-SketchLine_199 = Sketch_18.addLine(43.50261344273609, 3.749999999999998, 51.26978940411676, 8.249999999999998)
+SketchLine_199 = Sketch_18.addLine(43.50261344273609, 3.75, 51.26978940411676, 8.25)
 SketchLine_199.setAuxiliary(True)
-SketchConstraintCoincidence_310 = Sketch_18.setCoincident(SketchLine_193.endPoint(), SketchLine_199.startPoint())
-SketchConstraintCoincidence_310.setName("SketchConstraintCoincidence_141")
-SketchConstraintCoincidence_311 = Sketch_18.setCoincident(SketchLine_198.endPoint(), SketchLine_199.startPoint())
-SketchConstraintCoincidence_311.setName("SketchConstraintCoincidence_142")
-SketchConstraintCoincidence_312 = Sketch_18.setCoincident(SketchLine_197.startPoint(), SketchLine_199.endPoint())
-SketchConstraintCoincidence_312.setName("SketchConstraintCoincidence_143")
-SketchPoint_45 = Sketch_18.addPoint(47.38620142342643, 5.999999999999998)
+SketchConstraintCoincidence_312 = Sketch_18.setCoincident(SketchLine_193.endPoint(), SketchLine_199.startPoint())
+SketchConstraintCoincidence_312.setName("SketchConstraintCoincidence_141")
+SketchConstraintCoincidence_313 = Sketch_18.setCoincident(SketchLine_198.endPoint(), SketchLine_199.startPoint())
+SketchConstraintCoincidence_313.setName("SketchConstraintCoincidence_142")
+SketchConstraintCoincidence_314 = Sketch_18.setCoincident(SketchLine_197.startPoint(), SketchLine_199.endPoint())
+SketchConstraintCoincidence_314.setName("SketchConstraintCoincidence_143")
+SketchPoint_45 = Sketch_18.addPoint(47.38620142342643, 6)
 SketchPoint_45.setAuxiliary(True)
-SketchConstraintCoincidence_313 = Sketch_18.setCoincident(SketchPoint_45.coordinates(), SketchLine_199.result())
-SketchConstraintCoincidence_313.setName("SketchConstraintCoincidence_144")
+SketchConstraintCoincidence_315 = Sketch_18.setCoincident(SketchPoint_45.coordinates(), SketchLine_199.result())
+SketchConstraintCoincidence_315.setName("SketchConstraintCoincidence_144")
 SketchConstraintMiddle_15 = Sketch_18.setMiddlePoint(SketchPoint_45.coordinates(), SketchLine_199.result())
-SketchConstraintCoincidence_314 = Sketch_18.setCoincident(SketchPoint_45.coordinates(), SketchLine_195.result())
-SketchConstraintCoincidence_314.setName("SketchConstraintCoincidence_145")
+SketchConstraintCoincidence_316 = Sketch_18.setCoincident(SketchPoint_45.coordinates(), SketchLine_195.result())
+SketchConstraintCoincidence_316.setName("SketchConstraintCoincidence_145")
 model.do()
 ExtrusionCut_16 = model.addExtrusionCut(Part_2_doc, [model.selection("COMPOUND", "Sketch_8")], model.selection(), 10, 0, [model.selection("SOLID", "ExtrusionCut_6_1")])
-Sketch_19 = model.addSketch(Part_2_doc, model.selection("FACE", "ExtrusionCut_7_1/Modfied_32"))
-SketchLine_200 = Sketch_19.addLine(21.00014787857639, 4.163450069699051, 21.00014787857639, 0)
+Sketch_19 = model.addSketch(Part_2_doc, model.selection("FACE", "ExtrusionCut_7_1/Modfied_26"))
+SketchLine_200 = Sketch_19.addLine(21, 4.163450069699051, 21, 0)
 SketchLine_200.setName("SketchLine_107")
 SketchLine_200.result().setName("SketchLine_107")
-SketchLine_201 = Sketch_19.addLine(29, 5, 21.00014787857639, 5)
+SketchLine_201 = Sketch_19.addLine(29, 5, 21, 5)
 SketchLine_201.setName("SketchLine_96")
 SketchLine_201.result().setName("SketchLine_96")
 SketchLine_201.setAuxiliary(True)
-SketchArc_42 = Sketch_19.addArc(25.00007393928819, 8.000098583186649, 21.53790262696343, 4.392693725936027, 28.46224525161297, 4.392693725936026, False)
+SketchArc_42 = Sketch_19.addArc(25, 8, 21.53774043054522, 4.392679848735523, 28.46225956945478, 4.392679848735522, False)
 SketchArc_42.setName("SketchArc_22")
 SketchArc_42.result().setName("SketchArc_22")
 SketchArc_42.results()[1].setName("SketchArc_22_2")
-SketchLine_202 = Sketch_19.addLine(21.00014787857639, 0, 29, 0)
+SketchLine_202 = Sketch_19.addLine(21, 0, 29, 0)
 SketchLine_202.setName("SketchLine_100")
 SketchLine_202.result().setName("SketchLine_100")
 SketchLine_203 = Sketch_19.addLine(29, 0, 29, 4.163450069699049)
@@ -1737,130 +1745,130 @@ SketchLine_204 = Sketch_19.addLine(29, 0, 29, 5)
 SketchLine_204.setName("SketchLine_101")
 SketchLine_204.result().setName("SketchLine_101")
 SketchLine_204.setAuxiliary(True)
-SketchConstraintCoincidence_315 = Sketch_19.setCoincident(SketchLine_204.endPoint(), SketchLine_201.startPoint())
-SketchConstraintCoincidence_315.setName("SketchConstraintCoincidence_147")
-SketchLine_205 = Sketch_19.addLine(21.00014787857639, 5, 21.00014787857639, 0)
+SketchConstraintCoincidence_317 = Sketch_19.setCoincident(SketchLine_204.endPoint(), SketchLine_201.startPoint())
+SketchConstraintCoincidence_317.setName("SketchConstraintCoincidence_147")
+SketchLine_205 = Sketch_19.addLine(21, 5, 21, 0)
 SketchLine_205.setAuxiliary(True)
-SketchConstraintCoincidence_316 = Sketch_19.setCoincident(SketchLine_201.endPoint(), SketchLine_205.startPoint())
-SketchConstraintCoincidence_316.setName("SketchConstraintCoincidence_148")
-SketchConstraintCoincidence_317 = Sketch_19.setCoincident(SketchLine_205.endPoint(), SketchLine_202.startPoint())
-SketchConstraintCoincidence_317.setName("SketchConstraintCoincidence_149")
-SketchConstraintCoincidence_318 = Sketch_19.setCoincident(SketchLine_202.endPoint(), SketchLine_204.startPoint())
-SketchConstraintCoincidence_318.setName("SketchConstraintCoincidence_150")
+SketchConstraintCoincidence_318 = Sketch_19.setCoincident(SketchLine_201.endPoint(), SketchLine_205.startPoint())
+SketchConstraintCoincidence_318.setName("SketchConstraintCoincidence_148")
+SketchConstraintCoincidence_319 = Sketch_19.setCoincident(SketchLine_205.endPoint(), SketchLine_202.startPoint())
+SketchConstraintCoincidence_319.setName("SketchConstraintCoincidence_149")
+SketchConstraintCoincidence_320 = Sketch_19.setCoincident(SketchLine_202.endPoint(), SketchLine_204.startPoint())
+SketchConstraintCoincidence_320.setName("SketchConstraintCoincidence_150")
 SketchConstraintHorizontal_42 = Sketch_19.setHorizontal(SketchLine_201.result())
 SketchConstraintHorizontal_42.setName("SketchConstraintHorizontal_21")
 SketchConstraintVertical_35 = Sketch_19.setVertical(SketchLine_205.result())
 SketchConstraintHorizontal_43 = Sketch_19.setHorizontal(SketchLine_202.result())
 SketchConstraintHorizontal_43.setName("SketchConstraintHorizontal_22")
 SketchConstraintVertical_36 = Sketch_19.setVertical(SketchLine_204.result())
-SketchPoint_46 = Sketch_19.addPoint(21.00014787857639, 7.5)
-SketchConstraintCoincidence_319 = Sketch_19.setCoincident(SketchLine_205.result(), SketchPoint_46.coordinates())
-SketchConstraintCoincidence_319.setName("SketchConstraintCoincidence_151")
+SketchPoint_46 = Sketch_19.addPoint(21, 7.5)
+SketchConstraintCoincidence_321 = Sketch_19.setCoincident(SketchLine_205.result(), SketchPoint_46.coordinates())
+SketchConstraintCoincidence_321.setName("SketchConstraintCoincidence_151")
 SketchConstraintRigid_23 = Sketch_19.setFixed(SketchPoint_46.result())
 SketchConstraintRigid_23.setName("SketchConstraintRigid_18")
 SketchPoint_47 = Sketch_19.addPoint(29, 7.5)
-SketchConstraintCoincidence_320 = Sketch_19.setCoincident(SketchLine_204.result(), SketchPoint_47.coordinates())
-SketchConstraintCoincidence_320.setName("SketchConstraintCoincidence_152")
+SketchConstraintCoincidence_322 = Sketch_19.setCoincident(SketchLine_204.result(), SketchPoint_47.coordinates())
+SketchConstraintCoincidence_322.setName("SketchConstraintCoincidence_152")
 SketchConstraintRigid_24 = Sketch_19.setFixed(SketchPoint_47.result())
 SketchConstraintRigid_24.setName("SketchConstraintRigid_20")
 SketchConstraintLength_32 = Sketch_19.setLength(SketchLine_205.result(), 5)
 SketchConstraintLength_32.setName("SketchConstraintLength_16")
-SketchLine_206 = Sketch_19.addLine(0, 0, 45.49999999999999, 0)
+SketchLine_206 = Sketch_19.addLine(0, 0, 45.5, 0)
 SketchLine_206.setName("SketchLine_102")
 SketchLine_206.result().setName("SketchLine_102")
-SketchConstraintCoincidence_321 = Sketch_19.setCoincident(SketchLine_205.endPoint(), SketchLine_206.result())
-SketchConstraintCoincidence_321.setName("SketchConstraintCoincidence_153")
+SketchConstraintCoincidence_323 = Sketch_19.setCoincident(SketchLine_205.endPoint(), SketchLine_206.result())
+SketchConstraintCoincidence_323.setName("SketchConstraintCoincidence_153")
 SketchConstraintRigid_25 = Sketch_19.setFixed(SketchLine_206.result())
 SketchConstraintRigid_25.setName("SketchConstraintRigid_21")
-SketchArc_43 = Sketch_19.addArc(25.00007393928819, 8.000098583186649, 21.00014787857639, 5, 29, 5, False)
+SketchArc_43 = Sketch_19.addArc(25, 8, 21, 5, 29, 5, False)
 SketchArc_43.setName("SketchArc_19")
 SketchArc_43.result().setName("SketchArc_19")
 SketchArc_43.results()[1].setName("SketchArc_19_2")
 SketchArc_43.setAuxiliary(True)
-SketchConstraintCoincidence_322 = Sketch_19.setCoincident(SketchLine_201.endPoint(), SketchArc_43.startPoint())
-SketchConstraintCoincidence_322.setName("SketchConstraintCoincidence_154")
-SketchConstraintCoincidence_323 = Sketch_19.setCoincident(SketchLine_205.startPoint(), SketchArc_43.startPoint())
-SketchConstraintCoincidence_323.setName("SketchConstraintCoincidence_155")
-SketchConstraintCoincidence_324 = Sketch_19.setCoincident(SketchLine_201.startPoint(), SketchArc_43.endPoint())
-SketchConstraintCoincidence_324.setName("SketchConstraintCoincidence_156")
-SketchConstraintCoincidence_325 = Sketch_19.setCoincident(SketchLine_204.endPoint(), SketchArc_43.endPoint())
-SketchConstraintCoincidence_325.setName("SketchConstraintCoincidence_157")
-SketchConstraintRadius_21 = Sketch_19.setRadius(SketchArc_43.results()[1], 5)
+SketchConstraintCoincidence_324 = Sketch_19.setCoincident(SketchLine_201.endPoint(), SketchArc_43.startPoint())
+SketchConstraintCoincidence_324.setName("SketchConstraintCoincidence_154")
+SketchConstraintCoincidence_325 = Sketch_19.setCoincident(SketchLine_205.startPoint(), SketchArc_43.startPoint())
+SketchConstraintCoincidence_325.setName("SketchConstraintCoincidence_155")
+SketchConstraintCoincidence_326 = Sketch_19.setCoincident(SketchLine_201.startPoint(), SketchArc_43.endPoint())
+SketchConstraintCoincidence_326.setName("SketchConstraintCoincidence_156")
+SketchConstraintCoincidence_327 = Sketch_19.setCoincident(SketchLine_204.endPoint(), SketchArc_43.endPoint())
+SketchConstraintCoincidence_327.setName("SketchConstraintCoincidence_157")
+SketchConstraintRadius_17 = Sketch_19.setRadius(SketchArc_43.results()[1], 5)
 SketchLine_207 = Sketch_19.addLine(1, 0, 1, 1.8)
 SketchLine_207.setName("SketchLine_103")
 SketchLine_207.result().setName("SketchLine_103")
-SketchConstraintCoincidence_326 = Sketch_19.setCoincident(SketchLine_207.startPoint(), SketchLine_206.result())
-SketchConstraintCoincidence_326.setName("SketchConstraintCoincidence_158")
+SketchConstraintCoincidence_328 = Sketch_19.setCoincident(SketchLine_207.startPoint(), SketchLine_206.result())
+SketchConstraintCoincidence_328.setName("SketchConstraintCoincidence_158")
 SketchLine_208 = Sketch_19.addLine(1, 1.8, 8, 3.389761862250954)
 SketchLine_208.setName("SketchLine_104")
 SketchLine_208.result().setName("SketchLine_104")
-SketchConstraintCoincidence_327 = Sketch_19.setCoincident(SketchLine_207.endPoint(), SketchLine_208.startPoint())
-SketchConstraintCoincidence_327.setName("SketchConstraintCoincidence_159")
+SketchConstraintCoincidence_329 = Sketch_19.setCoincident(SketchLine_207.endPoint(), SketchLine_208.startPoint())
+SketchConstraintCoincidence_329.setName("SketchConstraintCoincidence_159")
 SketchLine_209 = Sketch_19.addLine(8, 3.389761862250954, 8, 0)
 SketchLine_209.setName("SketchLine_105")
 SketchLine_209.result().setName("SketchLine_105")
-SketchConstraintCoincidence_328 = Sketch_19.setCoincident(SketchLine_208.endPoint(), SketchLine_209.startPoint())
-SketchConstraintCoincidence_328.setName("SketchConstraintCoincidence_160")
+SketchConstraintCoincidence_330 = Sketch_19.setCoincident(SketchLine_208.endPoint(), SketchLine_209.startPoint())
+SketchConstraintCoincidence_330.setName("SketchConstraintCoincidence_160")
 SketchLine_210 = Sketch_19.addLine(8, 0, 1, 0)
 SketchLine_210.setName("SketchLine_106")
 SketchLine_210.result().setName("SketchLine_106")
-SketchConstraintCoincidence_329 = Sketch_19.setCoincident(SketchLine_209.endPoint(), SketchLine_210.startPoint())
-SketchConstraintCoincidence_329.setName("SketchConstraintCoincidence_161")
-SketchConstraintCoincidence_330 = Sketch_19.setCoincident(SketchLine_207.startPoint(), SketchLine_210.endPoint())
-SketchConstraintCoincidence_330.setName("SketchConstraintCoincidence_162")
-SketchConstraintCoincidence_331 = Sketch_19.setCoincident(SketchLine_210.startPoint(), SketchLine_206.result())
-SketchConstraintCoincidence_331.setName("SketchConstraintCoincidence_163")
+SketchConstraintCoincidence_331 = Sketch_19.setCoincident(SketchLine_209.endPoint(), SketchLine_210.startPoint())
+SketchConstraintCoincidence_331.setName("SketchConstraintCoincidence_161")
+SketchConstraintCoincidence_332 = Sketch_19.setCoincident(SketchLine_207.startPoint(), SketchLine_210.endPoint())
+SketchConstraintCoincidence_332.setName("SketchConstraintCoincidence_162")
+SketchConstraintCoincidence_333 = Sketch_19.setCoincident(SketchLine_210.startPoint(), SketchLine_206.result())
+SketchConstraintCoincidence_333.setName("SketchConstraintCoincidence_163")
 SketchConstraintVertical_37 = Sketch_19.setVertical(SketchLine_209.result())
 SketchConstraintVertical_38 = Sketch_19.setVertical(SketchLine_207.result())
 SketchConstraintLength_33 = Sketch_19.setLength(SketchLine_210.result(), 7)
 SketchConstraintLength_33.setName("SketchConstraintLength_17")
-SketchConstraintDistance_33 = Sketch_19.setDistance(SketchLine_207.result(), SketchLine_206.startPoint(), 1)
+SketchConstraintDistance_33 = Sketch_19.setDistance(SketchLine_207.result(), SketchLine_206.startPoint(), 1, False)
 SketchConstraintLength_34 = Sketch_19.setLength(SketchLine_207.result(), 1.8)
 SketchConstraintLength_34.setName("SketchConstraintLength_18")
-SketchArc_44 = Sketch_19.addArc(21.3178882838101, 4.163450069699051, 21.53790262696343, 4.392693725936027, 21.00014787857639, 4.163450069699051, False)
-SketchArc_45 = Sketch_19.addArc(25.00007393928819, 8.000098583186649, 21.53790262696343, 4.392693725936027, 29, 5, False)
+SketchArc_44 = Sketch_19.addArc(21.31772863153846, 4.163450069699051, 21.53774043054522, 4.392679848735523, 21, 4.163450069699051, False)
+SketchArc_45 = Sketch_19.addArc(25, 8, 21.53774043054522, 4.392679848735523, 29, 5, False)
 SketchArc_45.setName("SketchArc_20")
 SketchArc_45.result().setName("SketchArc_20")
 SketchArc_45.results()[1].setName("SketchArc_20_2")
 SketchArc_45.setAuxiliary(True)
-SketchConstraintCoincidence_332 = Sketch_19.setCoincident(SketchArc_44.startPoint(), SketchArc_45.startPoint())
-SketchConstraintCoincidence_332.setName("SketchConstraintCoincidence_164")
-SketchConstraintCoincidence_333 = Sketch_19.setCoincident(SketchArc_44.endPoint(), SketchLine_200.startPoint())
-SketchConstraintCoincidence_333.setName("SketchConstraintCoincidence_165")
-SketchConstraintTangent_23 = Sketch_19.setTangent(SketchArc_44.results()[1], SketchLine_200.result())
-SketchConstraintTangent_24 = Sketch_19.setTangent(SketchArc_44.results()[1], SketchArc_45.results()[1])
-SketchConstraintCoincidence_334 = Sketch_19.setCoincident(SketchLine_205.endPoint(), SketchLine_200.endPoint())
-SketchConstraintCoincidence_334.setName("SketchConstraintCoincidence_166")
-SketchConstraintCoincidence_335 = Sketch_19.setCoincident(SketchArc_43.endPoint(), SketchArc_45.endPoint())
-SketchConstraintCoincidence_335.setName("SketchConstraintCoincidence_167")
-SketchConstraintTangent_25 = Sketch_19.setTangent(SketchArc_43.results()[1], SketchArc_45.results()[1])
-SketchConstraintCoincidence_336 = Sketch_19.setCoincident(SketchLine_200.startPoint(), SketchLine_205.result())
-SketchConstraintCoincidence_336.setName("SketchConstraintCoincidence_168")
-SketchConstraintCoincidence_337 = Sketch_19.setCoincident(SketchArc_45.startPoint(), SketchArc_43.results()[1])
-SketchConstraintCoincidence_337.setName("SketchConstraintCoincidence_169")
-SketchArc_46 = Sketch_19.addArc(28.68225959476629, 4.163450069699049, 29, 4.163450069699049, 28.46224525161297, 4.392693725936026, False)
-SketchConstraintCoincidence_338 = Sketch_19.setCoincident(SketchArc_46.startPoint(), SketchLine_203.endPoint())
-SketchConstraintCoincidence_338.setName("SketchConstraintCoincidence_170")
-SketchConstraintCoincidence_339 = Sketch_19.setCoincident(SketchArc_46.endPoint(), SketchArc_42.endPoint())
-SketchConstraintCoincidence_339.setName("SketchConstraintCoincidence_171")
-SketchConstraintTangent_26 = Sketch_19.setTangent(SketchArc_46.results()[1], SketchArc_42.results()[1])
-SketchConstraintTangent_27 = Sketch_19.setTangent(SketchArc_46.results()[1], SketchLine_203.result())
-SketchConstraintCoincidence_340 = Sketch_19.setCoincident(SketchArc_45.startPoint(), SketchArc_42.startPoint())
-SketchConstraintCoincidence_340.setName("SketchConstraintCoincidence_172")
-SketchConstraintCoincidence_341 = Sketch_19.setCoincident(SketchLine_204.startPoint(), SketchLine_203.startPoint())
-SketchConstraintCoincidence_341.setName("SketchConstraintCoincidence_173")
-SketchConstraintTangent_28 = Sketch_19.setTangent(SketchArc_45.results()[1], SketchArc_42.results()[1])
-SketchConstraintCoincidence_342 = Sketch_19.setCoincident(SketchArc_42.endPoint(), SketchArc_45.results()[1])
-SketchConstraintCoincidence_342.setName("SketchConstraintCoincidence_174")
-SketchConstraintCoincidence_343 = Sketch_19.setCoincident(SketchLine_203.endPoint(), SketchLine_204.result())
-SketchConstraintCoincidence_343.setName("SketchConstraintCoincidence_175")
+SketchConstraintCoincidence_334 = Sketch_19.setCoincident(SketchArc_44.startPoint(), SketchArc_45.startPoint())
+SketchConstraintCoincidence_334.setName("SketchConstraintCoincidence_164")
+SketchConstraintCoincidence_335 = Sketch_19.setCoincident(SketchArc_44.endPoint(), SketchLine_200.startPoint())
+SketchConstraintCoincidence_335.setName("SketchConstraintCoincidence_165")
+SketchConstraintTangent_25 = Sketch_19.setTangent(SketchArc_44.results()[1], SketchLine_200.result())
+SketchConstraintTangent_26 = Sketch_19.setTangent(SketchArc_44.results()[1], SketchArc_45.results()[1])
+SketchConstraintCoincidence_336 = Sketch_19.setCoincident(SketchLine_205.endPoint(), SketchLine_200.endPoint())
+SketchConstraintCoincidence_336.setName("SketchConstraintCoincidence_166")
+SketchConstraintCoincidence_337 = Sketch_19.setCoincident(SketchArc_43.endPoint(), SketchArc_45.endPoint())
+SketchConstraintCoincidence_337.setName("SketchConstraintCoincidence_167")
+SketchConstraintTangent_27 = Sketch_19.setTangent(SketchArc_43.results()[1], SketchArc_45.results()[1])
+SketchConstraintCoincidence_338 = Sketch_19.setCoincident(SketchLine_200.startPoint(), SketchLine_205.result())
+SketchConstraintCoincidence_338.setName("SketchConstraintCoincidence_168")
+SketchConstraintCoincidence_339 = Sketch_19.setCoincident(SketchArc_45.startPoint(), SketchArc_43.results()[1])
+SketchConstraintCoincidence_339.setName("SketchConstraintCoincidence_169")
+SketchArc_46 = Sketch_19.addArc(28.68227136846154, 4.163450069699049, 29, 4.163450069699049, 28.46225956945478, 4.392679848735522, False)
+SketchConstraintCoincidence_340 = Sketch_19.setCoincident(SketchArc_46.startPoint(), SketchLine_203.endPoint())
+SketchConstraintCoincidence_340.setName("SketchConstraintCoincidence_170")
+SketchConstraintCoincidence_341 = Sketch_19.setCoincident(SketchArc_46.endPoint(), SketchArc_42.endPoint())
+SketchConstraintCoincidence_341.setName("SketchConstraintCoincidence_171")
+SketchConstraintTangent_28 = Sketch_19.setTangent(SketchArc_46.results()[1], SketchArc_42.results()[1])
+SketchConstraintTangent_29 = Sketch_19.setTangent(SketchArc_46.results()[1], SketchLine_203.result())
+SketchConstraintCoincidence_342 = Sketch_19.setCoincident(SketchArc_45.startPoint(), SketchArc_42.startPoint())
+SketchConstraintCoincidence_342.setName("SketchConstraintCoincidence_172")
+SketchConstraintCoincidence_343 = Sketch_19.setCoincident(SketchLine_204.startPoint(), SketchLine_203.startPoint())
+SketchConstraintCoincidence_343.setName("SketchConstraintCoincidence_173")
+SketchConstraintTangent_30 = Sketch_19.setTangent(SketchArc_45.results()[1], SketchArc_42.results()[1])
+SketchConstraintCoincidence_344 = Sketch_19.setCoincident(SketchArc_42.endPoint(), SketchArc_45.results()[1])
+SketchConstraintCoincidence_344.setName("SketchConstraintCoincidence_174")
+SketchConstraintCoincidence_345 = Sketch_19.setCoincident(SketchLine_203.endPoint(), SketchLine_204.result())
+SketchConstraintCoincidence_345.setName("SketchConstraintCoincidence_175")
 model.do()
 Plane_12 = model.addPlane(Part_2_doc, model.selection("FACE", "Plane_2"), 4, False)
 Plane_13 = model.addPlane(Part_2_doc, model.selection("FACE", "Plane_2"), 4, True)
 ExtrusionCut_17 = model.addExtrusionCut(Part_2_doc, [model.selection("COMPOUND", "Sketch_9")], model.selection(), model.selection("FACE", "Plane_5"), 0, model.selection("FACE", "Plane_4"), 0, [model.selection("SOLID", "ExtrusionCut_7_1")])
 Sketch_20 = model.addSketch(Part_2_doc, model.selection("FACE", "ExtrusionCut_8_1/Modfied_5"))
 SketchCircle_2 = Sketch_20.addCircle(12, 6, 1)
-SketchConstraintRadius_22 = Sketch_20.setRadius(SketchCircle_2.results()[1], 1)
+SketchConstraintRadius_18 = Sketch_20.setRadius(SketchCircle_2.results()[1], 1)
 SketchPoint_48 = Sketch_20.addPoint(0, 6)
 SketchPoint_48.setAuxiliary(True)
 SketchLine_211 = Sketch_20.addLine(0, 0, 0, 12)
@@ -1868,24 +1876,24 @@ SketchLine_211.setName("SketchLine_109")
 SketchLine_211.result().setName("SketchLine_109")
 SketchConstraintRigid_26 = Sketch_20.setFixed(SketchLine_211.result())
 SketchConstraintRigid_26.setName("SketchConstraintRigid_22")
-SketchConstraintCoincidence_344 = Sketch_20.setCoincident(SketchPoint_48.coordinates(), SketchLine_211.result())
-SketchConstraintCoincidence_344.setName("SketchConstraintCoincidence_176")
+SketchConstraintCoincidence_346 = Sketch_20.setCoincident(SketchPoint_48.coordinates(), SketchLine_211.result())
+SketchConstraintCoincidence_346.setName("SketchConstraintCoincidence_176")
 SketchConstraintMiddle_16 = Sketch_20.setMiddlePoint(SketchLine_211.result(), SketchPoint_48.coordinates())
 SketchLine_212 = Sketch_20.addLine(0, 6, 17.31036191565843, 6)
 SketchLine_212.setName("SketchLine_110")
 SketchLine_212.result().setName("SketchLine_110")
 SketchLine_212.setAuxiliary(True)
-SketchConstraintCoincidence_345 = Sketch_20.setCoincident(SketchPoint_48.coordinates(), SketchLine_212.startPoint())
-SketchConstraintCoincidence_345.setName("SketchConstraintCoincidence_177")
+SketchConstraintCoincidence_347 = Sketch_20.setCoincident(SketchPoint_48.coordinates(), SketchLine_212.startPoint())
+SketchConstraintCoincidence_347.setName("SketchConstraintCoincidence_177")
 SketchConstraintHorizontal_44 = Sketch_20.setHorizontal(SketchLine_212.result())
 SketchConstraintHorizontal_44.setName("SketchConstraintHorizontal_23")
-SketchConstraintCoincidence_346 = Sketch_20.setCoincident(SketchCircle_2.center(), SketchLine_212.result())
-SketchConstraintCoincidence_346.setName("SketchConstraintCoincidence_178")
-SketchConstraintDistance_34 = Sketch_20.setDistance(SketchLine_211.result(), SketchCircle_2.center(), 12)
+SketchConstraintCoincidence_348 = Sketch_20.setCoincident(SketchCircle_2.center(), SketchLine_212.result())
+SketchConstraintCoincidence_348.setName("SketchConstraintCoincidence_178")
+SketchConstraintDistance_34 = Sketch_20.setDistance(SketchLine_211.result(), SketchCircle_2.center(), 12, False)
 model.do()
 ExtrusionCut_18 = model.addExtrusionCut(Part_2_doc, [model.selection("WIRE", "Sketch_10/Wire-SketchCircle_1_2f")], model.selection(), 0, 0.75, [model.selection("SOLID", "ExtrusionCut_8_1")])
 model.do()
-Rotation_1 = model.addRotation(partSet, [model.selection("COMPOUND", "Part_2/")], model.selection("EDGE", "Part_1/ExtrusionCut_9_1/Modfied_1&ExtrusionCut_7_1/Modfied_33"), 180)
+Rotation_1 = model.addRotation(partSet, [model.selection("COMPOUND", "Part_2/")], model.selection("EDGE", "Part_1/ExtrusionCut_9_1/Modfied_1&ExtrusionCut_7_1/Modfied_31"), 180)
 Placement_1 = model.addPlacement(partSet, [model.selection("COMPOUND", "Rotation_1/")], model.selection("FACE", "Rotation_1/ExtrusionCut_5_1/Modfied_1"), model.selection("FACE", "Part_1/ExtrusionCut_5_1/Modfied_1"), False, True)
 Rotation_2 = model.addRotation(partSet, [model.selection("COMPOUND", "Placement_1/")], model.selection("EDGE", "Part_1/ExtrusionCut_5_1/Modfied_5&ExtrusionCut_8_1/Modfied_3"), 7)
 Rotation_2.result().setColor(255, 85, 0)
@@ -1896,17 +1904,17 @@ from GeomAPI import GeomAPI_Shape
 model.testNbResults(Part_1, 1)
 model.testNbSubResults(Part_1, [0])
 model.testNbSubShapes(Part_1, GeomAPI_Shape.SOLID, [1])
-model.testNbSubShapes(Part_1, GeomAPI_Shape.FACE, [172])
-model.testNbSubShapes(Part_1, GeomAPI_Shape.EDGE, [804])
-model.testNbSubShapes(Part_1, GeomAPI_Shape.VERTEX, [1608])
-model.testResultsVolumes(Part_1, [1876.328652945015164732467383146])
+model.testNbSubShapes(Part_1, GeomAPI_Shape.FACE, [171])
+model.testNbSubShapes(Part_1, GeomAPI_Shape.EDGE, [796])
+model.testNbSubShapes(Part_1, GeomAPI_Shape.VERTEX, [1592])
+model.testResultsVolumes(Part_1, [1875.575358102468499055248685181])
 
 model.testNbResults(Rotation_2, 1)
 model.testNbSubResults(Rotation_2, [0])
 model.testNbSubShapes(Rotation_2, GeomAPI_Shape.SOLID, [1])
-model.testNbSubShapes(Rotation_2, GeomAPI_Shape.FACE, [172])
-model.testNbSubShapes(Rotation_2, GeomAPI_Shape.EDGE, [804])
-model.testNbSubShapes(Rotation_2, GeomAPI_Shape.VERTEX, [1608])
-model.testResultsVolumes(Rotation_2, [1876.328652945015846853493712842])
+model.testNbSubShapes(Rotation_2, GeomAPI_Shape.FACE, [171])
+model.testNbSubShapes(Rotation_2, GeomAPI_Shape.EDGE, [796])
+model.testNbSubShapes(Rotation_2, GeomAPI_Shape.VERTEX, [1592])
+model.testResultsVolumes(Rotation_2, [1875.575358102468499055248685181])
 
 assert(model.checkPythonDump())