Salome HOME
Merge branch 'OCCT780' master
authormbs <martin.bernhard@opencascade.com>
Thu, 16 May 2024 07:32:44 +0000 (08:32 +0100)
committermbs <martin.bernhard@opencascade.com>
Thu, 16 May 2024 07:32:44 +0000 (08:32 +0100)
36 files changed:
resources/CMakeLists.txt
resources/SalomeApp.xml.in
resources/action_assets.json [new file with mode: 0644]
src/BlockFix/BlockFix_SphereSpaceModifier.cxx
src/GEOMAlgo/CMakeLists.txt
src/GEOMAlgo/GEOMAlgo_AlgoTools.cxx
src/GEOMAlgo/GEOMAlgo_AlgoTools.hxx
src/GEOMAlgo/GEOMAlgo_ClsfSolid.hxx
src/GEOMAlgo/GEOMAlgo_DataMapOfPassKeyInteger.hxx
src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cxx [deleted file]
src/GEOMAlgo/GEOMAlgo_FinderShapeOn.hxx [deleted file]
src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cxx [deleted file]
src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.hxx [deleted file]
src/GEOMAlgo/GEOMAlgo_FinderShapeOn2.cxx
src/GEOMAlgo/GEOMAlgo_FinderShapeOn2.hxx
src/GEOMAlgo/GEOMAlgo_FinderShapeOnQuad.cxx [deleted file]
src/GEOMAlgo/GEOMAlgo_FinderShapeOnQuad.hxx [deleted file]
src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfIntegerShape.hxx
src/GEOMAlgo/GEOMAlgo_PassKey.cxx
src/GEOMAlgo/GEOMAlgo_PassKey.hxx
src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.cxx
src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.hxx
src/GEOMAlgo/GEOMAlgo_PassKeyShape.cxx
src/GEOMAlgo/GEOMAlgo_PassKeyShape.hxx
src/GEOMAlgo/GEOMAlgo_PassKeyShapeMapHasher.cxx
src/GEOMAlgo/GEOMAlgo_PassKeyShapeMapHasher.hxx
src/GEOMGUI/GeometryGUI.cxx
src/GEOMGUI/GeometryGUI.h
src/GEOMImpl/GEOMImpl_ICurvesOperations.cxx
src/GEOMImpl/GEOMImpl_ITestOperations.cxx
src/GEOMImpl/GEOMImpl_ShapeProximityDriver.cxx
src/GEOMUtils/GEOMUtils.cxx
src/GEOMUtils/GEOMUtils.hxx
src/OCC2VTK/OCC2VTK_Tools.cxx
src/STEPPlugin/STEPPlugin_ExportDriver.cxx
src/STLPlugin/STLPlugin_ExportDriver.cxx

index 1dae0436aa31cb6b9e83b190f2c677787f537dc2..76bb5fbd72640f7259b1bc82e1f2475d9321f115 100644 (file)
@@ -32,6 +32,7 @@ SET( _res_files
   GEOMDS_Resources
   ShHealing
   Y14.5M-2009.ttf
+  action_assets.json
   3dsketch.png
   isoline.png
   isoline_v.png
@@ -319,7 +320,3 @@ SALOME_CONFIGURE_FILE(GEOMCatalog.xml.in GEOMCatalog.xml INSTALL ${SALOME_GEOM_I
 SALOME_CONFIGURE_FILE(SalomeApp.xml.in SalomeApp.xml INSTALL ${SALOME_GEOM_INSTALL_RES_DATA})
 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/SalomeApp.xml RENAME SalomeAppSL.xml DESTINATION ${SALOME_GEOM_INSTALL_RES_DATA})
 SALOME_CONFIGURE_FILE(Plugin.in Plugin INSTALL ${SALOME_GEOM_INSTALL_RES_DATA})
-
-
-
-
index d6d078224d1c1987d000b214aeefdbe30c466b33..25cac367792f7e13c1fb9bbb0feb62010bbb74f1 100644 (file)
  <section name="windows_visibility">
   <parameter name="GEOM" value="#00 #00 #00 #00 #23 #00 #00 #00 #24 #00 #33 #00 #44 #00 #20 #00 #56 #00 #69 #00 #65 #00 #77 #00 #20 #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #01 #00 #00 #00 #10 #00 #41 #00 #64 #00 #76 #00 #61 #00 #6E #00 #63 #00 #65 #00 #64 #01 #00 #00 #00 #0A #00 #42 #00 #61 #00 #73 #00 #69 #00 #63 #01 #00 #00 #00 #0C #00 #42 #00 #6C #00 #6F #00 #63 #00 #6B #00 #73 #01 #00 #00 #00 #24 #00 #42 #00 #6F #00 #6F #00 #6C #00 #65 #00 #61 #00 #6E #00 #20 #00 #6F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #01 #00 #00 #00 #0A #00 #42 #00 #75 #00 #69 #00 #6C #00 #64 #01 #00 #00 #00 #12 #00 #47 #00 #45 #00 #4F #00 #4D #00 #42 #00 #61 #00 #73 #00 #69 #00 #63 #01 #00 #00 #00 #2A #00 #47 #00 #45 #00 #4F #00 #4D #00 #42 #00 #6F #00 #6F #00 #6C #00 #65 #00 #61 #00 #6E #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #01 #00 #00 #00 #12 #00 #47 #00 #45 #00 #4F #00 #4D #00 #42 #00 #75 #00 #69 #00 #6C #00 #64 #01 #00 #00 #00 #1C #00 #47 #00 #45 #00 #4F #00 #4D #00 #47 #00 #65 #00 #6E #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #01 #00 #00 #00 #26 #00 #47 #00 #45 #00 #4F #00 #4D #00 #49 #00 #6D #00 #70 #00 #6F #00 #72 #00 #74 #00 #45 #00 #78 #00 #70 #00 #6F #00 #72 #00 #74 #00 #58 #00 #41 #00 #4F #01 #00 #00 #00 #18 #00 #47 #00 #45 #00 #4F #00 #4D #00 #4D #00 #65 #00 #61 #00 #73 #00 #75 #00 #72 #00 #65 #00 #73 #00 #00 #00 #00 #20 #00 #47 #00 #45 #00 #4F #00 #4D #00 #4D #00 #6F #00 #64 #00 #69 #00 #66 #00 #69 #00 #63 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #01 #00 #00 #00 #1C #00 #47 #00 #45 #00 #4F #00 #4D #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #01 #00 #00 #00 #18 #00 #47 #00 #45 #00 #4F #00 #4D #00 #50 #00 #69 #00 #63 #00 #74 #00 #75 #00 #72 #00 #65 #00 #73 #01 #00 #00 #00 #1C #00 #47 #00 #45 #00 #4F #00 #4D #00 #50 #00 #72 #00 #69 #00 #6D #00 #69 #00 #74 #00 #69 #00 #76 #00 #65 #00 #73 #01 #00 #00 #00 #24 #00 #47 #00 #45 #00 #4F #00 #4D #00 #54 #00 #72 #00 #61 #00 #6E #00 #73 #00 #66 #00 #6F #00 #72 #00 #6D #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #01 #00 #00 #00 #14 #00 #47 #00 #65 #00 #6E #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #01 #00 #00 #00 #1E #00 #49 #00 #6D #00 #70 #00 #6F #00 #72 #00 #74 #00 #20 #00 #2F #00 #20 #00 #45 #00 #78 #00 #70 #00 #6F #00 #72 #00 #74 #01 #00 #00 #00 #26 #00 #49 #00 #6D #00 #70 #00 #6F #00 #72 #00 #74 #00 #20 #00 #2F #00 #20 #00 #45 #00 #78 #00 #70 #00 #6F #00 #72 #00 #74 #00 #20 #00 #58 #00 #41 #00 #4F #01 #00 #00 #00 #10 #00 #4D #00 #65 #00 #61 #00 #73 #00 #75 #00 #72 #00 #65 #00 #73 #00 #00 #00 #00 #18 #00 #4D #00 #6F #00 #64 #00 #69 #00 #66 #00 #69 #00 #63 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #01 #00 #00 #00 #0E #00 #4D #00 #6F #00 #64 #00 #75 #00 #6C #00 #65 #00 #73 #01 #00 #00 #00 #32 #00 #4F #00 #43 #00 #43 #00 #56 #00 #69 #00 #65 #00 #77 #00 #65 #00 #72 #00 #33 #00 #44 #00 #56 #00 #69 #00 #65 #00 #77 #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #01 #00 #00 #00 #14 #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #01 #00 #00 #00 #10 #00 #50 #00 #69 #00 #63 #00 #74 #00 #75 #00 #72 #00 #65 #00 #73 #01 #00 #00 #00 #0E #00 #50 #00 #6C #00 #75 #00 #67 #00 #69 #00 #6E #00 #73 #00 #00 #00 #00 #14 #00 #50 #00 #72 #00 #69 #00 #6D #00 #69 #00 #74 #00 #69 #00 #76 #00 #65 #00 #73 #01 #00 #00 #00 #1C #00 #50 #00 #79 #00 #74 #00 #68 #00 #6F #00 #6E #00 #20 #00 #50 #00 #6C #00 #75 #00 #67 #00 #69 #00 #6E #00 #73 #01 #00 #00 #00 #1A #00 #53 #00 #61 #00 #6C #00 #6F #00 #6D #00 #65 #00 #4D #00 #6F #00 #64 #00 #75 #00 #6C #00 #65 #00 #73 #01 #00 #00 #00 #1C #00 #53 #00 #61 #00 #6C #00 #6F #00 #6D #00 #65 #00 #53 #00 #74 #00 #61 #00 #6E #00 #64 #00 #61 #00 #72 #00 #64 #01 #00 #00 #00 #10 #00 #53 #00 #74 #00 #61 #00 #6E #00 #64 #00 #61 #00 #72 #00 #64 #01 #00 #00 #00 #1A #00 #54 #00 #4F #00 #4F #00 #4C #00 #5F #00 #41 #00 #44 #00 #56 #00 #41 #00 #4E #00 #43 #00 #45 #00 #44 #01 #00 #00 #00 #16 #00 #54 #00 #4F #00 #4F #00 #4C #00 #5F #00 #42 #00 #4C #00 #4F #00 #43 #00 #4B #00 #53 #01 #00 #00 #00 #1C #00 #54 #00 #72 #00 #61 #00 #6E #00 #73 #00 #66 #00 #6F #00 #72 #00 #6D #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #01 #01 #00 #00 #00 #0A #00 #00 #00 #36 #00 #67 #00 #65 #00 #6F #00 #6D #00 #43 #00 #72 #00 #65 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #49 #00 #6E #00 #66 #00 #6F #00 #72 #00 #6D #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #26 #00 #67 #00 #65 #00 #6F #00 #6D #00 #54 #00 #65 #00 #78 #00 #74 #00 #54 #00 #72 #00 #65 #00 #65 #00 #57 #00 #64 #00 #67 #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #1A #00 #69 #00 #6E #00 #66 #00 #6F #00 #50 #00 #61 #00 #6E #00 #65 #00 #6C #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #18 #00 #6E #00 #6F #00 #74 #00 #65 #00 #42 #00 #6F #00 #6F #00 #6B #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #22 #00 #6F #00 #62 #00 #6A #00 #65 #00 #63 #00 #74 #00 #42 #00 #72 #00 #6F #00 #77 #00 #73 #00 #65 #00 #72 #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #22 #00 #70 #00 #79 #00 #74 #00 #68 #00 #6F #00 #6E #00 #43 #00 #6F #00 #6E #00 #73 #00 #6F #00 #6C #00 #65 #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #30 #01 #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #31 #01 #00 #00 #00 #12 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #31 #00 #31 #01 #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #33 #01"/>
  </section>
+  <section name="action_assets">
+    <parameter name="%GEOM_ROOT_DIR%/share/salome/resources/geom/action_assets.json" value=""/>
+  </section>
+  <section name="shortcuts:GEOM">
+    <parameter name="Isolines/Increase number" value="Meta+I"/>
+    <parameter name="Isolines/Decrease number" value="Meta+D"/>
+    <parameter name="Transparency/Increase" value="Meta+Y"/>
+    <parameter name="Transparency/Decrease" value="Meta+T"/>
+    <parameter name="AdvancedGEOM/DividedCylinder" value=""/>
+    <parameter name="AdvancedGEOM/DividedDisk" value=""/>
+    <parameter name="AdvancedGEOM/SmoothingSurface" value=""/>
+    <parameter name="AdvancedGEOM/TShape_Basic" value=""/>
+    <parameter name="BREPPlugin/Export_BREP" value="Ctrl+E"/>
+    <parameter name="BREPPlugin/Import_BREP" value="Ctrl+I"/>
+    <parameter name="IGESPlugin/Export_IGES" value=""/>
+    <parameter name="IGESPlugin/Import_IGES" value=""/>
+    <parameter name="STEPPlugin/Export_STEP" value=""/>
+    <parameter name="STEPPlugin/Import_STEP" value=""/>
+    <parameter name="STLPlugin/Export_STL" value=""/>
+    <parameter name="STLPlugin/Import_STL" value=""/>
+    <parameter name="VTKPlugin/Export_VTK" value=""/>
+    <parameter name="XAOPlugin/Export_XAO" value=""/>
+    <parameter name="XAOPlugin/Import_XAO" value=""/>
+    <parameter name="STB_DELETE" value="Del"/>
+    <parameter name="STB_POINT" value=""/>
+    <parameter name="STB_LINE" value=""/>
+    <parameter name="STB_CIRCLE" value=""/>
+    <parameter name="STB_ELLIPSE" value=""/>
+    <parameter name="STB_ARC" value=""/>
+    <parameter name="STB_CURVE" value=""/>
+    <parameter name="STB_ISOLINE" value=""/>
+    <parameter name="STB_VECTOR" value=""/>
+    <parameter name="STB_PLANE" value=""/>
+    <parameter name="STB_LOCAL_CS" value=""/>
+    <parameter name="STB_ORIGIN_AND_VECTORS" value=""/>
+    <parameter name="STB_SURFACE_FROM_FACE" value=""/>
+    <parameter name="STB_BOX" value=""/>
+    <parameter name="STB_CYLINDER" value=""/>
+    <parameter name="STB_SPHERE" value=""/>
+    <parameter name="STB_TORUS" value=""/>
+    <parameter name="STB_CONE" value=""/>
+    <parameter name="STB_RECTANGLE" value=""/>
+    <parameter name="STB_DISK" value=""/>
+    <parameter name="STB_EXTRUSION" value=""/>
+    <parameter name="STB_REVOLUTION" value=""/>
+    <parameter name="STB_FILLING" value=""/>
+    <parameter name="STB_PIPE" value=""/>
+    <parameter name="STB_PIPE_PATH" value=""/>
+    <parameter name="STB_THICKNESS" value=""/>
+    <parameter name="STB_GROUP_CREATE" value=""/>
+    <parameter name="STB_GROUP_EDIT" value=""/>
+    <parameter name="STB_GROUP_UNION" value=""/>
+    <parameter name="STB_GROUP_INTERSECT" value=""/>
+    <parameter name="STB_GROUP_CUT" value=""/>
+    <parameter name="STB_FIELD_CREATE" value=""/>
+    <parameter name="STB_FIELD_EDIT" value=""/>
+    <parameter name="STB_RELOAD_IMPORTED" value=""/>
+    <parameter name="STB_Q_FACE" value=""/>
+    <parameter name="STB_HEX_SOLID" value=""/>
+    <parameter name="STB_SKETCH" value=""/>
+    <parameter name="STB_3DSKETCH" value=""/>
+    <parameter name="STB_EXPLODE" value=""/>
+    <parameter name="STB_FEATURE_DETECTION" value=""/>
+    <parameter name="STB_PICTURE_IMPORT" value=""/>
+    <parameter name="STB_CURVE_CREATOR" value=""/>
+    <parameter name="STB_EDGE" value=""/>
+    <parameter name="STB_WIRE" value=""/>
+    <parameter name="STB_FACE" value=""/>
+    <parameter name="STB_SHELL" value=""/>
+    <parameter name="STB_SOLID" value=""/>
+    <parameter name="STB_COMPOUND" value=""/>
+    <parameter name="STB_FUSE" value=""/>
+    <parameter name="STB_COMMON" value=""/>
+    <parameter name="STB_CUT" value=""/>
+    <parameter name="STB_SECTION" value=""/>
+    <parameter name="STB_TRANSLATION" value=""/>
+    <parameter name="STB_ROTATION" value=""/>
+    <parameter name="STB_MODIFY_LOCATION" value=""/>
+    <parameter name="STB_MIRROR" value=""/>
+    <parameter name="STB_SCALE" value=""/>
+    <parameter name="STB_OFFSET" value=""/>
+    <parameter name="STB_PROJECTION" value=""/>
+    <parameter name="STB_PROJ_ON_CYL" value=""/>
+    <parameter name="STB_MUL_TRANSLATION" value=""/>
+    <parameter name="STB_MUL_ROTATION" value=""/>
+    <parameter name="STB_EXTENSION" value=""/>
+    <parameter name="STB_PARTITION" value=""/>
+    <parameter name="STB_ARCHIMEDE" value=""/>
+    <parameter name="STB_FILLET" value=""/>
+    <parameter name="STB_CHAMFER" value=""/>
+    <parameter name="STB_GET_SHAPES_ON_SHAPE" value=""/>
+    <parameter name="STB_GET_SHARED_SHAPES" value=""/>
+    <parameter name="STB_TRANSFER_DATA" value=""/>
+    <parameter name="STB_EXTRACTION" value=""/>
+    <parameter name="STB_EXTRUDED_CUT" value=""/>
+    <parameter name="STB_EXTRUDED_BOSS" value=""/>
+    <parameter name="STB_FILLET_1D" value=""/>
+    <parameter name="STB_FILLET_2D" value=""/>
+    <parameter name="STB_MUL_TRANSFORM" value=""/>
+    <parameter name="STB_EXPLODE_BLOCKS" value=""/>
+    <parameter name="STB_PROPAGATE" value=""/>
+    <parameter name="STB_SEWING" value=""/>
+    <parameter name="STB_GLUE_FACES" value=""/>
+    <parameter name="STB_GLUE_EDGES" value=""/>
+    <parameter name="STB_LIMIT_TOLERANCE" value=""/>
+    <parameter name="STB_SUPPRESS_FACES" value=""/>
+    <parameter name="STB_SUPPERSS_HOLES" value=""/>
+    <parameter name="STB_SHAPE_PROCESS" value=""/>
+    <parameter name="STB_CLOSE_CONTOUR" value=""/>
+    <parameter name="STB_SUPPRESS_INT_WIRES" value=""/>
+    <parameter name="STB_POINT_ON_EDGE" value=""/>
+    <parameter name="STB_CHECK_FREE_BNDS" value=""/>
+    <parameter name="STB_CHECK_FREE_FACES" value=""/>
+    <parameter name="STB_CHANGE_ORIENTATION" value=""/>
+    <parameter name="STB_REMOVE_WEBS" value=""/>
+    <parameter name="STB_REMOVE_EXTRA_EDGES" value=""/>
+    <parameter name="STB_FUSE_EDGES" value=""/>
+    <parameter name="STB_UNION_FACES" value=""/>
+    <parameter name="STB_INSPECT_OBJECT" value=""/>
+    <parameter name="STB_POINT_COORDS" value=""/>
+    <parameter name="STB_BASIC_PROPS" value=""/>
+    <parameter name="STB_MASS_CENTER" value=""/>
+    <parameter name="STB_INERTIA" value=""/>
+    <parameter name="STB_NORMALE" value=""/>
+    <parameter name="STB_BND_BOX" value=""/>
+    <parameter name="STB_MIN_DIST" value=""/>
+    <parameter name="STB_MEASURE_ANGLE" value=""/>
+    <parameter name="STB_MANAGE_DIMENSIONS" value=""/>
+    <parameter name="STB_ANNOTATION" value=""/>
+    <parameter name="STB_EDIT_ANNOTATION" value=""/>
+    <parameter name="STB_DELETE_ANNOTATION" value=""/>
+    <parameter name="STB_TOLERANCE" value=""/>
+    <parameter name="STB_WHAT_IS" value=""/>
+    <parameter name="STB_CHECK" value=""/>
+    <parameter name="STB_CHECK_COMPOUND" value=""/>
+    <parameter name="STB_GET_NON_BLOCKS" value=""/>
+    <parameter name="STB_CHECK_SELF_INTERSECTIONS" value=""/>
+    <parameter name="STB_FAST_CHECK_INTERSECTIONS" value=""/>
+    <parameter name="STB_SHAPE_STATISTICS" value=""/>
+    <parameter name="STB_MATERIALS_LIBRARY" value=""/>
+    <parameter name="STB_WIREFRAME" value=""/>
+    <parameter name="STB_SHADING" value=""/>
+    <parameter name="STB_SHADING_WITH_EDGES" value=""/>
+    <parameter name="STB_TEXTURE" value=""/>
+    <parameter name="STB_DISPLAY_ALL" value=""/>
+    <parameter name="STB_ERASE_ALL" value=""/>
+    <parameter name="STB_DISPLAY" value=""/>
+    <parameter name="STB_VECTOR_MODE" value=""/>
+    <parameter name="STB_VERTICES_MODE" value=""/>
+    <parameter name="STB_NAME_MODE" value=""/>
+    <parameter name="STB_VERTEX_SEL_ONLY" value=""/>
+    <parameter name="STB_EDGE_SEL_ONLY" value=""/>
+    <parameter name="STB_WIRE_SEL_ONLY" value=""/>
+    <parameter name="STB_FACE_SEL_ONLY" value=""/>
+    <parameter name="STB_SHELL_SEL_ONLY" value=""/>
+    <parameter name="STB_SOLID_SEL_ONLY" value=""/>
+    <parameter name="STB_COMPOUND_SEL_ONLY" value=""/>
+    <parameter name="STB_ALL_SEL_ONLY" value=""/>
+    <parameter name="STB_DISPLAY_ONLY" value=""/>
+    <parameter name="STB_SHOW_ONLY_CHILDREN" value=""/>
+    <parameter name="STB_BRING_TO_FRONT" value=""/>
+    <parameter name="STB_CLS_BRING_TO_FRONT" value=""/>
+    <parameter name="STB_ERASE" value=""/>
+    <parameter name="STB_POP_WIREFRAME" value=""/>
+    <parameter name="STB_POP_SHADING" value=""/>
+    <parameter name="STB_POP_SHADING_WITH_EDGES" value=""/>
+    <parameter name="STB_POP_TEXTURE" value=""/>
+    <parameter name="STB_EDGE_WIDTH" value=""/>
+    <parameter name="STB_ISOS_WIDTH" value=""/>
+    <parameter name="STB_POP_VECTORS" value=""/>
+    <parameter name="STB_POP_VERTICES" value=""/>
+    <parameter name="STB_POP_SHOW_NAME" value=""/>
+    <parameter name="STB_POP_DEFLECTION" value=""/>
+    <parameter name="STB_POP_COLOR" value=""/>
+    <parameter name="STB_POP_SETTEXTURE" value=""/>
+    <parameter name="STB_POP_TRANSPARENCY" value=""/>
+    <parameter name="STB_POP_ISOS" value=""/>
+    <parameter name="STB_POP_AUTO_COLOR" value=""/>
+    <parameter name="STB_POP_DISABLE_AUTO_COLOR" value=""/>
+    <parameter name="STB_POP_CREATE_GROUP" value=""/>
+    <parameter name="STB_POP_EDIT_FIELD" value=""/>
+    <parameter name="STB_POP_DISCLOSE_CHILDREN" value=""/>
+    <parameter name="STB_POP_CONCEAL_CHILDREN" value=""/>
+    <parameter name="STB_POP_UNPUBLISH_OBJ" value=""/>
+    <parameter name="STB_POP_PUBLISH_OBJ" value=""/>
+    <parameter name="STB_POP_POINT_MARKER" value=""/>
+    <parameter name="STB_POP_MATERIAL_PROPERTIES" value=""/>
+    <parameter name="STB_POP_PREDEF_MATER_CUSTOM" value=""/>
+    <parameter name="STB_POP_CREATE_FOLDER" value=""/>
+    <parameter name="STB_POP_SORT_CHILD_ITEMS" value=""/>
+    <parameter name="STB_POP_SHOW_DEPENDENCY_TREE" value=""/>
+    <parameter name="STB_POP_REDUCE_STUDY" value=""/>
+    <parameter name="STB_POP_SHOW_ALL_DIMENSIONS" value=""/>
+    <parameter name="STB_POP_HIDE_ALL_DIMENSIONS" value=""/>
+    <parameter name="STB_POP_SHOW_ALL_ANNOTATIONS" value=""/>
+    <parameter name="STB_POP_HIDE_ALL_ANNOTATIONS" value=""/>
+  </section>
 </document>
diff --git a/resources/action_assets.json b/resources/action_assets.json
new file mode 100644 (file)
index 0000000..e73b22e
--- /dev/null
@@ -0,0 +1,3283 @@
+{
+    "GEOM/AdvancedGEOM/DividedCylinder": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Divided Cylinder",
+                "tooltip": "Divided Cylinder"
+            },
+            "fr": {
+                "name": "Cylinder prédécoupé",
+                "tooltip": "Cylinder prédécoupé"
+            },
+            "ja": {
+                "name": "分割シリンダ",
+                "tooltip": "分割シリンダ"
+            }
+        }
+    },
+    "GEOM/AdvancedGEOM/DividedDisk": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Divided Disk",
+                "tooltip": "Divided Disk"
+            },
+            "fr": {
+                "name": "Disque prédécoupé",
+                "tooltip": "Disque prédécoupé"
+            },
+            "ja": {
+                "name": "分割ディスク",
+                "tooltip": "分割ディスク"
+            }
+        }
+    },
+    "GEOM/AdvancedGEOM/SmoothingSurface": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Smoothing Surface",
+                "tooltip": "Smoothing Surface"
+            },
+            "fr": {
+                "name": "Ajustement de surface",
+                "tooltip": "Ajustement de surface"
+            },
+            "ja": {
+                "name": "表面の平滑化",
+                "tooltip": "表面のスムージング"
+            }
+        }
+    },
+    "GEOM/AdvancedGEOM/TShape_Basic": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Pipe TShape",
+                "tooltip": "Create new Pipe TShape object"
+            },
+            "fr": {
+                "name": "Tuyau en T",
+                "tooltip": "Créer un tuyau en T"
+            },
+            "ja": {
+                "name": "T型パイプを作成",
+                "tooltip": "T型パイプを作成"
+            }
+        }
+    },
+    "GEOM/BREPPlugin/Export_BREP": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Export BREP",
+                "tooltip": "Export BREP"
+            },
+            "fr": {
+                "name": "Exporter BREP",
+                "tooltip": "Exporter BREP"
+            },
+            "ja": {
+                "name": "BREPエキスポート",
+                "tooltip": "BREPエキスポート"
+            }
+        }
+    },
+    "GEOM/BREPPlugin/Import_BREP": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Import BREP",
+                "tooltip": "Import BREP"
+            },
+            "fr": {
+                "name": "Importer BREP",
+                "tooltip": "Importer BREP"
+            },
+            "ja": {
+                "name": "BREPインポート",
+                "tooltip": "BREPインポート"
+            }
+        }
+    },
+    "GEOM/IGESPlugin/Export_IGES": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Export IGES",
+                "tooltip": "Export IGES"
+            },
+            "fr": {
+                "name": "Exporter IGES",
+                "tooltip": "Exporter IGES"
+            },
+            "ja": {
+                "name": "IGESエクスポート",
+                "tooltip": "IGESエクスポート"
+            }
+        }
+    },
+    "GEOM/IGESPlugin/Import_IGES": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Import IGES",
+                "tooltip": "Import IGES"
+            },
+            "fr": {
+                "name": "Importer IGES",
+                "tooltip": "Importer IGES"
+            },
+            "ja": {
+                "name": "IGESインポート",
+                "tooltip": "IGESインポート"
+            }
+        }
+    },
+    "GEOM/Isolines/Decrease number": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Decrease number of isolines",
+                "tooltip": "Decrease number of isolines"
+            },
+            "fr": {
+                "name": "Diminuer le nombre d'isolignes",
+                "tooltip": "Diminuer le nombre d'isolignes"
+            },
+            "ja": {
+                "name": "等値線の数を減らす",
+                "tooltip": "等値線の数を減らす"
+            }
+        }
+    },
+    "GEOM/Isolines/Increase number": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Increase number of isolines",
+                "tooltip": "Increase number of isolines"
+            },
+            "fr": {
+                "name": "Augmenter le nombre d'isolignes",
+                "tooltip": "Augmenter le nombre d'isolignes"
+            },
+            "ja": {
+                "name": "等値線の数を増やす",
+                "tooltip": "等値線の数を増やす"
+            }
+        }
+    },
+    "GEOM/STB_3DSKETCH": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "3D Sketch",
+                "tooltip": "Create 3D sketch"
+            },
+            "fr": {
+                "name": "Esquisse 3D",
+                "tooltip": "Créer une esquisse 3D"
+            },
+            "ja": {
+                "name": "3D スケッチ",
+                "tooltip": "3Dスケッチを作成"
+            }
+        }
+    },
+    "GEOM/STB_ALL_SEL_ONLY": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Select All",
+                "tooltip": "Select all Objects"
+            },
+            "fr": {
+                "name": "Sélectionner tout",
+                "tooltip": "Choisir tous les objets"
+            },
+            "ja": {
+                "name": "全選択",
+                "tooltip": "すべてのオブジェクトを選択"
+            }
+        }
+    },
+    "GEOM/STB_ANNOTATION": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Annotation",
+                "tooltip": "Annotation"
+            },
+            "fr": {
+                "name": "Annotation",
+                "tooltip": "Annotation"
+            },
+            "ja": {
+                "name": "注記",
+                "tooltip": "注記"
+            }
+        }
+    },
+    "GEOM/STB_ARC": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Arc",
+                "tooltip": "Create an arc"
+            },
+            "fr": {
+                "name": "Arc",
+                "tooltip": "Créer un arc"
+            },
+            "ja": {
+                "name": "円弧",
+                "tooltip": "円弧を作成"
+            }
+        }
+    },
+    "GEOM/STB_ARCHIMEDE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Archimede",
+                "tooltip": "Archimede operation"
+            },
+            "fr": {
+                "name": "Archimède",
+                "tooltip": "Opération archimède "
+            },
+            "ja": {
+                "name": "アルキメデスの螺旋",
+                "tooltip": "アルキメデス法で水位面を作成します。"
+            }
+        }
+    },
+    "GEOM/STB_BASIC_PROPS": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Basic Properties",
+                "tooltip": "Show basic properties of the shape"
+            },
+            "fr": {
+                "name": "Propriétés de base ",
+                "tooltip": "Montrer les propriétés de base de l'objet"
+            },
+            "ja": {
+                "name": "基本プロパティ",
+                "tooltip": "オブジェクトの基本プロパティを表示"
+            }
+        }
+    },
+    "GEOM/STB_BND_BOX": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Bounding Box",
+                "tooltip": "Compute bounding box of the shape"
+            },
+            "fr": {
+                "name": "Boîte englobante",
+                "tooltip": "Calculer la boîte englobante de l'objet"
+            },
+            "ja": {
+                "name": "境界ボックス",
+                "tooltip": "オブジェクトの境界ボックスを計算"
+            }
+        }
+    },
+    "GEOM/STB_BOX": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Box",
+                "tooltip": "Create a box"
+            },
+            "fr": {
+                "name": "Boîte",
+                "tooltip": "Créer une boîte"
+            },
+            "ja": {
+                "name": "ボックス",
+                "tooltip": "ボックスを作成"
+            }
+        }
+    },
+    "GEOM/STB_BRING_TO_FRONT": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Bring To Front",
+                "tooltip": "Bring To Front"
+            },
+            "fr": {
+                "name": "Afficher au premier plan",
+                "tooltip": "Afficher au premier plan"
+            },
+            "ja": {
+                "name": "手前に表示",
+                "tooltip": "手前に表示します。"
+            }
+        }
+    },
+    "GEOM/STB_CHAMFER": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Chamfer",
+                "tooltip": "Create a chamfer"
+            },
+            "fr": {
+                "name": "Chanfrein",
+                "tooltip": "Créer un chanfrein"
+            },
+            "ja": {
+                "name": "面取り",
+                "tooltip": "面取りを作成"
+            }
+        }
+    },
+    "GEOM/STB_CHANGE_ORIENTATION": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Change Orientation",
+                "tooltip": "Change orientation"
+            },
+            "fr": {
+                "name": "Changer l'orientation",
+                "tooltip": "Changer l'orientation"
+            },
+            "ja": {
+                "name": "向きの変更",
+                "tooltip": "向きを変更します。"
+            }
+        }
+    },
+    "GEOM/STB_CHECK": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Check Shape",
+                "tooltip": "Check shape validity"
+            },
+            "fr": {
+                "name": "Contrôler un objet",
+                "tooltip": "Contrôler une forme"
+            },
+            "ja": {
+                "name": "オブジェクトの確認",
+                "tooltip": "形状の妥当性を確認"
+            }
+        }
+    },
+    "GEOM/STB_CHECK_COMPOUND": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Check Compound of Blocks",
+                "tooltip": "Check compound of blocks"
+            },
+            "fr": {
+                "name": "Contrôler un assemblage de blocs",
+                "tooltip": "Contrôler un assemblage de blocs"
+            },
+            "ja": {
+                "name": "ブロックのアセンブリチェック",
+                "tooltip": "ブロックのアセンブリチェック"
+            }
+        }
+    },
+    "GEOM/STB_CHECK_FREE_BNDS": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Check Free Boundaries",
+                "tooltip": "Check free boundaries"
+            },
+            "fr": {
+                "name": "Contrôler les contours libres",
+                "tooltip": "Vérifier les contours libres"
+            },
+            "ja": {
+                "name": "自由境界の確認",
+                "tooltip": "自由境界をチェック"
+            }
+        }
+    },
+    "GEOM/STB_CHECK_FREE_FACES": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Check Free Faces",
+                "tooltip": "Check free faces"
+            },
+            "fr": {
+                "name": "Contrôler les faces libres",
+                "tooltip": "Contrôler les faces libres"
+            },
+            "ja": {
+                "name": "フリー面の確認",
+                "tooltip": "フリーフェースチェック"
+            }
+        }
+    },
+    "GEOM/STB_CHECK_GEOMETRY": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Check Geometry",
+                "tooltip": "Check Geometry"
+            },
+            "fr": {
+                "name": "Contrôler la géométrie",
+                "tooltip": "Contrôler la géométrie"
+            },
+            "ja": {
+                "name": "ジオメトリチェック",
+                "tooltip": "ジオメトリチェック"
+            }
+        }
+    },
+    "GEOM/STB_CHECK_SELF_INTERSECTIONS": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Detect Self-intersections",
+                "tooltip": "Detect Self-intersections"
+            },
+            "fr": {
+                "name": "Détections des auto-intersections",
+                "tooltip": "Détecte les auto-intersections"
+            },
+            "ja": {
+                "name": "自己交差の確認",
+                "tooltip": "自己交差の確認"
+            }
+        }
+    },
+    "GEOM/STB_CIRCLE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Circle",
+                "tooltip": "Create a circle"
+            },
+            "fr": {
+                "name": "Cercle",
+                "tooltip": "Créer un cercle"
+            },
+            "ja": {
+                "name": "円",
+                "tooltip": "円を作成"
+            }
+        }
+    },
+    "GEOM/STB_CLOSE_CONTOUR": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Close Contour",
+                "tooltip": "Perform close contour"
+            },
+            "fr": {
+                "name": "Fermer le contour",
+                "tooltip": "Fermer le contour"
+            },
+            "ja": {
+                "name": "輪郭を閉じる",
+                "tooltip": "スケッチを終了"
+            }
+        }
+    },
+    "GEOM/STB_CLS_BRING_TO_FRONT": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Clear Top Level State",
+                "tooltip": "Clear Top Level State"
+            },
+            "fr": {
+                "name": "Effacer les objets mis au premier plan",
+                "tooltip": "Effacer les objets mis au premier plan"
+            },
+            "ja": {
+                "name": "トップ レベルの状態をクリア",
+                "tooltip": "フォア グラウンドでオブジェクトを削除します。"
+            }
+        }
+    },
+    "GEOM/STB_COMMON": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Common",
+                "tooltip": "Common"
+            },
+            "fr": {
+                "name": "Intersection",
+                "tooltip": "Intersection"
+            },
+            "ja": {
+                "name": "共有領域",
+                "tooltip": "共有領域"
+            }
+        }
+    },
+    "GEOM/STB_COMPOUND": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Compound",
+                "tooltip": "Build a compound"
+            },
+            "fr": {
+                "name": "Assemblage",
+                "tooltip": "Construire un assemblage"
+            },
+            "ja": {
+                "name": "コンパウンド",
+                "tooltip": "アセンブリをビルド"
+            }
+        }
+    },
+    "GEOM/STB_COMPOUND_SEL_ONLY": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Compound",
+                "tooltip": "Select only a Compounds"
+            },
+            "fr": {
+                "name": "Assemblage",
+                "tooltip": "Ne choisir que des assemblages"
+            },
+            "ja": {
+                "name": "コンパウンド",
+                "tooltip": "アセンブリのみを選択"
+            }
+        }
+    },
+    "GEOM/STB_CONE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Cone",
+                "tooltip": "Create a cone"
+            },
+            "fr": {
+                "name": "Cône",
+                "tooltip": "Créer un cône"
+            },
+            "ja": {
+                "name": "円錐",
+                "tooltip": "円錐を作成"
+            }
+        }
+    },
+    "GEOM/STB_CURVE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Curve",
+                "tooltip": "Create a curve"
+            },
+            "fr": {
+                "name": "Courbe",
+                "tooltip": "Créer une courbe"
+            },
+            "ja": {
+                "name": "曲線",
+                "tooltip": "カーブを作成"
+            }
+        }
+    },
+    "GEOM/STB_CURVE_CREATOR": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "2D Polyline",
+                "tooltip": "Create 2D polyline"
+            },
+            "fr": {
+                "name": "Créateur de courbe",
+                "tooltip": "Créer une courbe"
+            },
+            "ja": {
+                "name": "カーブの作成",
+                "tooltip": "2Dポリラインの作成"
+            }
+        }
+    },
+    "GEOM/STB_CUT": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Cut",
+                "tooltip": "Cut"
+            },
+            "fr": {
+                "name": "Découpe",
+                "tooltip": "Découpe"
+            },
+            "ja": {
+                "name": "カット(&t)",
+                "tooltip": "Cut"
+            }
+        }
+    },
+    "GEOM/STB_CYLINDER": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Cylinder",
+                "tooltip": "Create a cylinder"
+            },
+            "fr": {
+                "name": "Cylindre",
+                "tooltip": "Créer un cylindre"
+            },
+            "ja": {
+                "name": "円筒",
+                "tooltip": "円柱を作成"
+            }
+        }
+    },
+    "GEOM/STB_DELETE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Delete",
+                "tooltip": "Delete object"
+            },
+            "fr": {
+                "name": "Supprimer",
+                "tooltip": "Supprimer un objet"
+            },
+            "ja": {
+                "name": "削除",
+                "tooltip": "オブジェクトを削除"
+            }
+        }
+    },
+    "GEOM/STB_DELETE_ANNOTATION": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Delete",
+                "tooltip": "Delete Annotation"
+            },
+            "fr": {
+                "name": "Supprimer",
+                "tooltip": "Supprimer l'annotation"
+            },
+            "ja": {
+                "name": "削除",
+                "tooltip": "注記の削除"
+            }
+        }
+    },
+    "GEOM/STB_DISK": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Disk",
+                "tooltip": "Create a disk"
+            },
+            "fr": {
+                "name": "Disque",
+                "tooltip": "Créer un disque"
+            },
+            "ja": {
+                "name": "円盤",
+                "tooltip": "円盤を作成"
+            }
+        }
+    },
+    "GEOM/STB_DISPLAY": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Show",
+                "tooltip": "Show object(s)"
+            },
+            "fr": {
+                "name": "Afficher",
+                "tooltip": "Afficher les objets"
+            },
+            "ja": {
+                "name": "表示",
+                "tooltip": "表示オブジェクト"
+            }
+        }
+    },
+    "GEOM/STB_DISPLAY_ALL": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Show All",
+                "tooltip": "Show all"
+            },
+            "fr": {
+                "name": "Afficher tout",
+                "tooltip": "Afficher tout"
+            },
+            "ja": {
+                "name": "全表示",
+                "tooltip": "すべてを表示"
+            }
+        }
+    },
+    "GEOM/STB_DISPLAY_ONLY": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Show Only",
+                "tooltip": "Show only"
+            },
+            "fr": {
+                "name": "Afficher uniquement",
+                "tooltip": "Afficher uniquement"
+            },
+            "ja": {
+                "name": "選択のみ表示",
+                "tooltip": "選択のみ表示"
+            }
+        }
+    },
+    "GEOM/STB_EDGE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Edge",
+                "tooltip": "Build an edge"
+            },
+            "fr": {
+                "name": "Arête",
+                "tooltip": "Créer une arête"
+            },
+            "ja": {
+                "name": "エッジ",
+                "tooltip": "エッジを作成"
+            }
+        }
+    },
+    "GEOM/STB_EDGE_SEL_ONLY": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Edge",
+                "tooltip": "Select only a Edges"
+            },
+            "fr": {
+                "name": "Arête",
+                "tooltip": "Ne choisir que des arêtes"
+            },
+            "ja": {
+                "name": "エッジ",
+                "tooltip": "エッジだけを選択"
+            }
+        }
+    },
+    "GEOM/STB_EDGE_WIDTH": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Edge Width",
+                "tooltip": "Edge Width"
+            },
+            "fr": {
+                "name": "Epaisseur d'arête",
+                "tooltip": "Epaisseur d'arête"
+            },
+            "ja": {
+                "name": "エッジの幅",
+                "tooltip": "エッジの幅"
+            }
+        }
+    },
+    "GEOM/STB_EDIT_ANNOTATION": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Edit",
+                "tooltip": "Edit Annotation"
+            },
+            "fr": {
+                "name": "Editer",
+                "tooltip": "Editer une annotation"
+            },
+            "ja": {
+                "name": "編集",
+                "tooltip": "注記の編集"
+            }
+        }
+    },
+    "GEOM/STB_ELLIPSE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Ellipse",
+                "tooltip": "Create an ellipse"
+            },
+            "fr": {
+                "name": "Ellipse",
+                "tooltip": "Créer un ellipse"
+            },
+            "ja": {
+                "name": "楕円",
+                "tooltip": "楕円を作成"
+            }
+        }
+    },
+    "GEOM/STB_ERASE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Hide",
+                "tooltip": "Hide object(s)"
+            },
+            "fr": {
+                "name": "Cacher",
+                "tooltip": "Cacher le(s) objet(s)"
+            },
+            "ja": {
+                "name": "非表示",
+                "tooltip": "オブジェクトを非表示"
+            }
+        }
+    },
+    "GEOM/STB_ERASE_ALL": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Hide All",
+                "tooltip": "Hide all"
+            },
+            "fr": {
+                "name": "Cacher tout",
+                "tooltip": "Cacher tout"
+            },
+            "ja": {
+                "name": "すべてを非表示",
+                "tooltip": "すべてを非表示"
+            }
+        }
+    },
+    "GEOM/STB_EXPLODE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Explode",
+                "tooltip": "Explode"
+            },
+            "fr": {
+                "name": "Eclater",
+                "tooltip": "Eclater"
+            },
+            "ja": {
+                "name": "展開",
+                "tooltip": "展開"
+            }
+        }
+    },
+    "GEOM/STB_EXPLODE_BLOCKS": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Explode on Blocks",
+                "tooltip": "Explode on Blocks"
+            },
+            "fr": {
+                "name": "Eclater en blocs",
+                "tooltip": "Eclater en blocs"
+            },
+            "ja": {
+                "name": "ブロックで展開",
+                "tooltip": "ブロックで展開"
+            }
+        }
+    },
+    "GEOM/STB_EXTENSION": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Extension",
+                "tooltip": "Extend Edge or Face"
+            },
+            "fr": {
+                "name": "Extension",
+                "tooltip": "Etend l'arête ou la face"
+            },
+            "ja": {
+                "name": "拡張",
+                "tooltip": "エッジまたは面の拡張"
+            }
+        }
+    },
+    "GEOM/STB_EXTRACTION": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Extract and Rebuild",
+                "tooltip": "Extract and Rebuild"
+            },
+            "fr": {
+                "name": "Extrait et reconstruit",
+                "tooltip": "Extrait et reconstruit"
+            },
+            "ja": {
+                "name": "抽出と再構築",
+                "tooltip": "抽出と再構築"
+            }
+        }
+    },
+    "GEOM/STB_EXTRUDED_BOSS": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Extruded boss",
+                "tooltip": "Extruded boss"
+            },
+            "fr": {
+                "name": "Bossage extrudé",
+                "tooltip": "Bossage extrudé"
+            },
+            "ja": {
+                "name": "押出し",
+                "tooltip": "押出し"
+            }
+        }
+    },
+    "GEOM/STB_EXTRUDED_CUT": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Extruded cut",
+                "tooltip": "Extruded cut"
+            },
+            "fr": {
+                "name": "Enlèvement de matière extrudé",
+                "tooltip": "Enlèvement de matière extrudé"
+            },
+            "ja": {
+                "name": "押出しカット",
+                "tooltip": "押出成形材料の除去"
+            }
+        }
+    },
+    "GEOM/STB_EXTRUSION": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Extrusion",
+                "tooltip": "Create an extrusion"
+            },
+            "fr": {
+                "name": "Extrusion",
+                "tooltip": "Créer une extrusion"
+            },
+            "ja": {
+                "name": "押出",
+                "tooltip": "押し出しを作成"
+            }
+        }
+    },
+    "GEOM/STB_FACE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Face",
+                "tooltip": "Build a face"
+            },
+            "fr": {
+                "name": "Face",
+                "tooltip": "Construire une face"
+            },
+            "ja": {
+                "name": "面",
+                "tooltip": "フェースを作成"
+            }
+        }
+    },
+    "GEOM/STB_FACE_SEL_ONLY": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Face",
+                "tooltip": "Select only a Faces"
+            },
+            "fr": {
+                "name": "Face",
+                "tooltip": "Ne choisir que des faces"
+            },
+            "ja": {
+                "name": "面",
+                "tooltip": "フェースだけを選択"
+            }
+        }
+    },
+    "GEOM/STB_FAST_CHECK_INTERSECTIONS": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Fast intersection",
+                "tooltip": "Fast intersection"
+            },
+            "fr": {
+                "name": "Intersection rapide",
+                "tooltip": "Intersection rapide"
+            },
+            "ja": {
+                "name": "クイック交点",
+                "tooltip": "クイック交点"
+            }
+        }
+    },
+    "GEOM/STB_FEATURE_DETECTION": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Shape recognition",
+                "tooltip": "Shape recognition"
+            },
+            "fr": {
+                "name": "Reconnaissance de formes",
+                "tooltip": "Reconnaissance de formes"
+            },
+            "ja": {
+                "name": "形状認識",
+                "tooltip": "パターン認識"
+            }
+        }
+    },
+    "GEOM/STB_FIELD_CREATE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Create Field",
+                "tooltip": "Create a Field"
+            },
+            "fr": {
+                "name": "Créer un champ",
+                "tooltip": "Créer un champ"
+            },
+            "ja": {
+                "name": "フィールドの作成",
+                "tooltip": "フィールドを作成します。"
+            }
+        }
+    },
+    "GEOM/STB_FIELD_EDIT": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Edit Field",
+                "tooltip": "Edit a Field"
+            },
+            "fr": {
+                "name": "Editer un champ",
+                "tooltip": "Editer un champ"
+            },
+            "ja": {
+                "name": "フィールドの編集",
+                "tooltip": "フィールドを編集します。"
+            }
+        }
+    },
+    "GEOM/STB_FILLET": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Fillet 3D",
+                "tooltip": "Create 3D fillet"
+            },
+            "fr": {
+                "name": "Congé 3D",
+                "tooltip": "Créer un congé 3D"
+            },
+            "ja": {
+                "name": "3Dフィレット",
+                "tooltip": "3Dフィレットを作成"
+            }
+        }
+    },
+    "GEOM/STB_FILLET_1D": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Fillet 1D",
+                "tooltip": "Create 1D fillet"
+            },
+            "fr": {
+                "name": "Congé 1D",
+                "tooltip": "Créer un congé 1D"
+            },
+            "ja": {
+                "name": "1D フィレット",
+                "tooltip": "1Dフィレットを作成"
+            }
+        }
+    },
+    "GEOM/STB_FILLET_2D": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Fillet 2D",
+                "tooltip": "Create 2D fillet"
+            },
+            "fr": {
+                "name": "Congé 2D",
+                "tooltip": "Créer un congé 2D"
+            },
+            "ja": {
+                "name": "2D フィレット",
+                "tooltip": "2Dフィレットを作成"
+            }
+        }
+    },
+    "GEOM/STB_FILLING": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Filling",
+                "tooltip": "Create a filling"
+            },
+            "fr": {
+                "name": "Nappe",
+                "tooltip": "Créer une nappe"
+            },
+            "ja": {
+                "name": "埋込み",
+                "tooltip": "埋込みを作成"
+            }
+        }
+    },
+    "GEOM/STB_FUSE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Fuse",
+                "tooltip": "Fuse"
+            },
+            "fr": {
+                "name": "Union",
+                "tooltip": "Union"
+            },
+            "ja": {
+                "name": "結合",
+                "tooltip": "結合"
+            }
+        }
+    },
+    "GEOM/STB_FUSE_EDGES": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Fuse Collinear Edges within a Wire",
+                "tooltip": "Fuse collinear edges within a wire"
+            },
+            "fr": {
+                "name": "Fusionner les arêtes collinéaires au sein d'un contour",
+                "tooltip": "Fusionner les arêtes collinéaires au sein d'un contour"
+            },
+            "ja": {
+                "name": "アウトライン内で共線性のエッジをマージします。",
+                "tooltip": "アウトライン内で共線性のエッジをマージします。"
+            }
+        }
+    },
+    "GEOM/STB_GET_NON_BLOCKS": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Get Non Blocks",
+                "tooltip": "Get non blocks"
+            },
+            "fr": {
+                "name": "Récupérer les solides non blocs",
+                "tooltip": "Récupérer les solides non-blocs"
+            },
+            "ja": {
+                "name": "固体非ブロックを取得します。",
+                "tooltip": "純色のブロックを取得します。"
+            }
+        }
+    },
+    "GEOM/STB_GET_SHAPES_ON_SHAPE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Get Shapes on Shape",
+                "tooltip": "Get shapes on shape"
+            },
+            "fr": {
+                "name": "Trouver les éléments d'un objet",
+                "tooltip": "Trouve les éléments d'un objet"
+            },
+            "ja": {
+                "name": "オブジェクトの要素を見つける",
+                "tooltip": "オブジェクトの要素を見つける"
+            }
+        }
+    },
+    "GEOM/STB_GET_SHARED_SHAPES": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Get Shared Shapes",
+                "tooltip": "Get shared shapes"
+            },
+            "fr": {
+                "name": "Trouver les éléments partagés",
+                "tooltip": "Trouve les éléments partagés"
+            },
+            "ja": {
+                "name": "共有アイテムを取得",
+                "tooltip": "共有アイテムを取得"
+            }
+        }
+    },
+    "GEOM/STB_GLUE_EDGES": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Glue Edges",
+                "tooltip": "Perform glue edges"
+            },
+            "fr": {
+                "name": "Recoller les arêtes",
+                "tooltip": "Recoller les arêtes"
+            },
+            "ja": {
+                "name": "エッジの固着",
+                "tooltip": "エッジ固着"
+            }
+        }
+    },
+    "GEOM/STB_GLUE_FACES": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Glue Faces",
+                "tooltip": "Perform glue faces"
+            },
+            "fr": {
+                "name": "Recoller les faces",
+                "tooltip": "Recoller les faces"
+            },
+            "ja": {
+                "name": "面の固着",
+                "tooltip": "フェース固着"
+            }
+        }
+    },
+    "GEOM/STB_GROUP_CREATE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Create Group",
+                "tooltip": "Create a group"
+            },
+            "fr": {
+                "name": "Créer un groupe",
+                "tooltip": "Créer un groupe"
+            },
+            "ja": {
+                "name": "グループを作成",
+                "tooltip": "グループを作成"
+            }
+        }
+    },
+    "GEOM/STB_GROUP_CUT": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Cut Groups",
+                "tooltip": "Cut Groups"
+            },
+            "fr": {
+                "name": "Découpe de groupes",
+                "tooltip": "Découpe de groupes"
+            },
+            "ja": {
+                "name": "グループのカット",
+                "tooltip": "切断グループ"
+            }
+        }
+    },
+    "GEOM/STB_GROUP_EDIT": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Edit Group",
+                "tooltip": "Edit a group"
+            },
+            "fr": {
+                "name": "Editer",
+                "tooltip": "Editer un groupe"
+            },
+            "ja": {
+                "name": "グループの編集",
+                "tooltip": "グループを編集"
+            }
+        }
+    },
+    "GEOM/STB_GROUP_INTERSECT": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Intersect Groups",
+                "tooltip": "Intersect Groups"
+            },
+            "fr": {
+                "name": "Intersection de groupes",
+                "tooltip": "Intersection de groupes"
+            },
+            "ja": {
+                "name": "グループの交差",
+                "tooltip": "グループの共有領域"
+            }
+        }
+    },
+    "GEOM/STB_GROUP_UNION": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Union Groups",
+                "tooltip": "Union Groups"
+            },
+            "fr": {
+                "name": "Union de groupes",
+                "tooltip": "Union de groupes"
+            },
+            "ja": {
+                "name": "グループの結合",
+                "tooltip": "グループの連合"
+            }
+        }
+    },
+    "GEOM/STB_HEX_SOLID": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Hexahedral Solid",
+                "tooltip": "Hexahedral Solid"
+            },
+            "fr": {
+                "name": "Solide hexaédrique",
+                "tooltip": "Solide hexaédrique"
+            },
+            "ja": {
+                "name": "六面体ソリッド",
+                "tooltip": "Hexahedral_Solid"
+            }
+        }
+    },
+    "GEOM/STB_INERTIA": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Inertia",
+                "tooltip": "Compute moments of intertia of the shape"
+            },
+            "fr": {
+                "name": "Inertie",
+                "tooltip": "Calculer les moments d'inertie de l'objet"
+            },
+            "ja": {
+                "name": "慣性",
+                "tooltip": "オブジェクトの慣性モーメントを計算します。"
+            }
+        }
+    },
+    "GEOM/STB_INSPECT_OBJECT": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Inspect Object",
+                "tooltip": "Inspect Object"
+            },
+            "fr": {
+                "name": "Inspecter un objet",
+                "tooltip": "Inspecter un objet"
+            },
+            "ja": {
+                "name": "オブジェクトの点検",
+                "tooltip": "オブジェクトの点検"
+            }
+        }
+    },
+    "GEOM/STB_ISOLINE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Isoline",
+                "tooltip": "Create U- or V-Isoline"
+            },
+            "fr": {
+                "name": "Isoligne",
+                "tooltip": "Créer une U ou V isoligne"
+            },
+            "ja": {
+                "name": "等高線",
+                "tooltip": "UまたはV方向等高線の作成"
+            }
+        }
+    },
+    "GEOM/STB_ISOS_WIDTH": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Isos Width",
+                "tooltip": "Isos Width"
+            },
+            "fr": {
+                "name": "Epaisseur des isos",
+                "tooltip": "Epaisseur des isos"
+            },
+            "ja": {
+                "name": "Iso イメージの幅",
+                "tooltip": "Iso イメージの幅"
+            }
+        }
+    },
+    "GEOM/STB_LIMIT_TOLERANCE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Limit tolerance",
+                "tooltip": "Limit tolerance"
+            },
+            "fr": {
+                "name": "Tolérance limite",
+                "tooltip": "Tolérance limite"
+            },
+            "ja": {
+                "name": "許容範囲",
+                "tooltip": "許容範囲"
+            }
+        }
+    },
+    "GEOM/STB_LINE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Line",
+                "tooltip": "Create a line"
+            },
+            "fr": {
+                "name": "Ligne",
+                "tooltip": "Créer une ligne"
+            },
+            "ja": {
+                "name": "線",
+                "tooltip": "ラインを作成"
+            }
+        }
+    },
+    "GEOM/STB_LOCAL_CS": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Local Coordinate System",
+                "tooltip": "Create a local coordinate system"
+            },
+            "fr": {
+                "name": "Système de coordonnées local ",
+                "tooltip": "Créer un système local de coordonnées"
+            },
+            "ja": {
+                "name": "ローカル座標系",
+                "tooltip": "ローカル座標系を作成"
+            }
+        }
+    },
+    "GEOM/STB_MANAGE_DIMENSIONS": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Manage dimensions",
+                "tooltip": "Manage measurement dimensions of an object"
+            },
+            "fr": {
+                "name": "Gérer les cotations",
+                "tooltip": "Gérer la cotation d'un objet"
+            },
+            "ja": {
+                "name": "ディメンジョンの管理",
+                "tooltip": "オブジェクトの基準寸法を管理"
+            }
+        }
+    },
+    "GEOM/STB_MASS_CENTER": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Center of Mass",
+                "tooltip": "Compute center of mass of the shape"
+            },
+            "fr": {
+                "name": "Centre de gravité",
+                "tooltip": "Calculer le centre de gravité de l'objet"
+            },
+            "ja": {
+                "name": "重心",
+                "tooltip": "オブジェクトの重心を計算"
+            }
+        }
+    },
+    "GEOM/STB_MATERIALS_LIBRARY": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Materials library",
+                "tooltip": "Displays content of Materials library"
+            },
+            "fr": {
+                "name": "Librairie de materiaux",
+                "tooltip": "Affichier le contenu de la librarie des matériaux"
+            },
+            "ja": {
+                "name": "材料ライブラリ",
+                "tooltip": "材料のライブラリの内容を表示します。"
+            }
+        }
+    },
+    "GEOM/STB_MEASURE_ANGLE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Angle",
+                "tooltip": "Compute angle between two lines or linear edges"
+            },
+            "fr": {
+                "name": "Angle",
+                "tooltip": "Calculer l'angle entre deux lignes ou arêtes linéaires"
+            },
+            "ja": {
+                "name": "角度",
+                "tooltip": "2つのラインまたはエッジ間の角度を計算"
+            }
+        }
+    },
+    "GEOM/STB_MIN_DIST": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Min Distance",
+                "tooltip": "Compute minimum distance between two objects"
+            },
+            "fr": {
+                "name": "Distance minimale ",
+                "tooltip": "Calculer la distance minimale entre deux objets"
+            },
+            "ja": {
+                "name": "最短距離",
+                "tooltip": "2つのオブジェクト間の最小距離を計算"
+            }
+        }
+    },
+    "GEOM/STB_MIRROR": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Mirror Image",
+                "tooltip": "Mirror a shape"
+            },
+            "fr": {
+                "name": "Symétrie",
+                "tooltip": "Refléter un objet"
+            },
+            "ja": {
+                "name": "ミラー",
+                "tooltip": "オブジェクトを反転"
+            }
+        }
+    },
+    "GEOM/STB_MODIFY_LOCATION": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Modify Location",
+                "tooltip": "Modify shape's location"
+            },
+            "fr": {
+                "name": "Modifier la position",
+                "tooltip": "Modifier la position d'un objet"
+            },
+            "ja": {
+                "name": "位置変更",
+                "tooltip": "オブジェクトの位置を変更"
+            }
+        }
+    },
+    "GEOM/STB_MUL_ROTATION": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Multi-Rotation",
+                "tooltip": "Perform multi-rotation"
+            },
+            "fr": {
+                "name": "Multi-rotation",
+                "tooltip": "Effectuer une multi-rotation"
+            },
+            "ja": {
+                "name": "複数回回転",
+                "tooltip": "複数回回転を実行します。"
+            }
+        }
+    },
+    "GEOM/STB_MUL_TRANSFORM": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Multi-Transformation",
+                "tooltip": "Perform multi-transformation"
+            },
+            "fr": {
+                "name": "Multi-transformation",
+                "tooltip": "Effectuer une multi-transformation"
+            },
+            "ja": {
+                "name": "複数回移動",
+                "tooltip": "複数回移動を実行します。"
+            }
+        }
+    },
+    "GEOM/STB_MUL_TRANSLATION": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Multi-Translation",
+                "tooltip": "Perform multi-translation"
+            },
+            "fr": {
+                "name": "Multi-translation",
+                "tooltip": "Effectuer une multi-translation"
+            },
+            "ja": {
+                "name": "複数オブジェクトの移動",
+                "tooltip": "複数オブジェクトの移動を実行"
+            }
+        }
+    },
+    "GEOM/STB_NAME_MODE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Show/Hide names of visible shapes",
+                "tooltip": "Show/Hide names of visible shapes"
+            },
+            "fr": {
+                "name": "Montrer/cacher le nom des objets visibles",
+                "tooltip": "Montrer/cacher le nom des objets visibles"
+            },
+            "ja": {
+                "name": "表示中の形状の名前を表示/非表示",
+                "tooltip": "表示中の形状の名前を表示/非表示"
+            }
+        }
+    },
+    "GEOM/STB_NORMALE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Normal to a Face",
+                "tooltip": "Compute normal to the face"
+            },
+            "fr": {
+                "name": "Vecteur normal à une face",
+                "tooltip": "Vecteur normal à une face"
+            },
+            "ja": {
+                "name": "フェースに垂直",
+                "tooltip": "フェースに垂直"
+            }
+        }
+    },
+    "GEOM/STB_OFFSET": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Offset Surface",
+                "tooltip": "Offset surface"
+            },
+            "fr": {
+                "name": "Décaler une surface",
+                "tooltip": "Décaler une surface "
+            },
+            "ja": {
+                "name": "サーフェスをオフセット",
+                "tooltip": "サーフェスをオフセット"
+            }
+        }
+    },
+    "GEOM/STB_ORIGIN_AND_VECTORS": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Origin and Base Vectors",
+                "tooltip": "Create an origin and base Vectors"
+            },
+            "fr": {
+                "name": "Vecteurs de base et origine",
+                "tooltip": "Créer les vecteurs de base et l'origine"
+            },
+            "ja": {
+                "name": "起源と基本ベクトル",
+                "tooltip": "起源と基底ベクトルを作成します。"
+            }
+        }
+    },
+    "GEOM/STB_PARTITION": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Partition",
+                "tooltip": "Make a partition"
+            },
+            "fr": {
+                "name": "Partition",
+                "tooltip": "Effectuer une partition"
+            },
+            "ja": {
+                "name": "パーティション",
+                "tooltip": "パーティションを作成"
+            }
+        }
+    },
+    "GEOM/STB_PICTURE_IMPORT": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Import picture in viewer",
+                "tooltip": "Import picture in viewer"
+            },
+            "fr": {
+                "name": "Importer une image dans la vue",
+                "tooltip": "Importer une image dans la vue"
+            },
+            "ja": {
+                "name": "ビューアーにイメージをインポート",
+                "tooltip": "ビューアーにイメージをインポートします。"
+            }
+        }
+    },
+    "GEOM/STB_PIPE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Extrusion Along Path",
+                "tooltip": "Create a shape by extrusion along a path"
+            },
+            "fr": {
+                "name": "Extrusion suivant un chemin",
+                "tooltip": "Créer un objet par extrusion suivant un chemin"
+            },
+            "ja": {
+                "name": "経路に沿って押し出し",
+                "tooltip": "経路に沿って押し出し"
+            }
+        }
+    },
+    "GEOM/STB_PIPE_PATH": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Restore Path",
+                "tooltip": "Restore path from a pipe-like shape"
+            },
+            "fr": {
+                "name": "Retrouver le chemin",
+                "tooltip": "Retrouver le chemin à partir d'un objet de type tuyau"
+            },
+            "ja": {
+                "name": "経路の復元",
+                "tooltip": "経路の復元"
+            }
+        }
+    },
+    "GEOM/STB_PLANE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Plane",
+                "tooltip": "Create a plane"
+            },
+            "fr": {
+                "name": "Plan",
+                "tooltip": "Créer un plan"
+            },
+            "ja": {
+                "name": "平面",
+                "tooltip": "平面を作成"
+            }
+        }
+    },
+    "GEOM/STB_POINT": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Point",
+                "tooltip": "Create a point"
+            },
+            "fr": {
+                "name": "Point",
+                "tooltip": "Créer un point"
+            },
+            "ja": {
+                "name": "点",
+                "tooltip": "ポイントを作成"
+            }
+        }
+    },
+    "GEOM/STB_POINT_COORDS": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Point Coordinates",
+                "tooltip": "Display point coordinates"
+            },
+            "fr": {
+                "name": "Coordonnées d'un point ",
+                "tooltip": "Montrer les coordonnées du point"
+            },
+            "ja": {
+                "name": "点の座標",
+                "tooltip": "ポイントの座標を表示"
+            }
+        }
+    },
+    "GEOM/STB_POINT_ON_EDGE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Add Point on Edge",
+                "tooltip": "Add point on edge"
+            },
+            "fr": {
+                "name": "Ajouter un point sur l'arête",
+                "tooltip": "Ajouter un point sur l'arête"
+            },
+            "ja": {
+                "name": "エッジに点を追加",
+                "tooltip": "端にポイントを追加"
+            }
+        }
+    },
+    "GEOM/STB_POP_AUTO_COLOR": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Auto Color",
+                "tooltip": "Auto color"
+            },
+            "fr": {
+                "name": "Couleur automatique",
+                "tooltip": "Couleur automatique"
+            },
+            "ja": {
+                "name": "自動色",
+                "tooltip": "自動色"
+            }
+        }
+    },
+    "GEOM/STB_POP_COLOR": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Color",
+                "tooltip": "Color"
+            },
+            "fr": {
+                "name": "Couleur",
+                "tooltip": "Couleur"
+            },
+            "ja": {
+                "name": "色",
+                "tooltip": "色"
+            }
+        }
+    },
+    "GEOM/STB_POP_CONCEAL_CHILDREN": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Conceal child items",
+                "tooltip": "Conceal child items"
+            },
+            "fr": {
+                "name": "Retirer les sous-éléments",
+                "tooltip": "Cacher les objets fils"
+            },
+            "ja": {
+                "name": "子項目を隠す",
+                "tooltip": "子供オブジェクトを隠す"
+            }
+        }
+    },
+    "GEOM/STB_POP_CREATE_FOLDER": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Create folder",
+                "tooltip": "Create a new folder"
+            },
+            "fr": {
+                "name": "Créer dossier",
+                "tooltip": "Créer un nouveau dossier"
+            },
+            "ja": {
+                "name": "フォルダ作成",
+                "tooltip": "新しいフォルダーを作成します。"
+            }
+        }
+    },
+    "GEOM/STB_POP_CREATE_GROUP": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Create Group",
+                "tooltip": "Create Group"
+            },
+            "fr": {
+                "name": "Créer un groupe",
+                "tooltip": "Créer un groupe"
+            },
+            "ja": {
+                "name": "グループを作成",
+                "tooltip": "グループを作成"
+            }
+        }
+    },
+    "GEOM/STB_POP_DEFLECTION": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Deflection Coefficient",
+                "tooltip": "Deflection Coefficient"
+            },
+            "fr": {
+                "name": "Coefficient de déformation",
+                "tooltip": "Coefficient de déformation"
+            },
+            "ja": {
+                "name": "変形倍率",
+                "tooltip": "変形倍率"
+            }
+        }
+    },
+    "GEOM/STB_POP_DISABLE_AUTO_COLOR": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Disable Auto Color",
+                "tooltip": "Disable auto color"
+            },
+            "fr": {
+                "name": "Désactiver la couleur automatique",
+                "tooltip": "Désactiver la couleur automatique"
+            },
+            "ja": {
+                "name": "自動色無効",
+                "tooltip": "自動カラー補正を無効にします。"
+            }
+        }
+    },
+    "GEOM/STB_POP_DISCLOSE_CHILDREN": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Disclose child items",
+                "tooltip": "Disclose child items"
+            },
+            "fr": {
+                "name": "Publier les sous-éléments",
+                "tooltip": "Afficher les objets fils"
+            },
+            "ja": {
+                "name": "子項目を開示",
+                "tooltip": "子供を表示します。"
+            }
+        }
+    },
+    "GEOM/STB_POP_EDIT_FIELD": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Edit Field",
+                "tooltip": "Edit Field"
+            },
+            "fr": {
+                "name": "Editer champ",
+                "tooltip": "Editer un champ"
+            },
+            "ja": {
+                "name": "フィールドの編集",
+                "tooltip": "フィールドを編集します。"
+            }
+        }
+    },
+    "GEOM/STB_POP_HIDE_ALL_ANNOTATIONS": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Hide all annotations",
+                "tooltip": "Hide all shape annotations for the object"
+            },
+            "fr": {
+                "name": "Cacher toutes les annotations",
+                "tooltip": "Cacher toutes les annotations pour l'objet"
+            },
+            "ja": {
+                "name": "全ての注釈を非表示",
+                "tooltip": "対象オブジェクトにある全ての形状注釈の非表示"
+            }
+        }
+    },
+    "GEOM/STB_POP_HIDE_ALL_DIMENSIONS": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Hide all dimensions",
+                "tooltip": "Show all visible measures (dimension) created for the object"
+            },
+            "fr": {
+                "name": "Cacher toutes les cotations",
+                "tooltip": "Afficher toutes les cotations visibles créées sur l'objet"
+            },
+            "ja": {
+                "name": "すべての寸法を非表示",
+                "tooltip": "オブジェクトのために作成されたすべての見える基準寸法を表示"
+            }
+        }
+    },
+    "GEOM/STB_POP_ISOS": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Isos",
+                "tooltip": "Isolines"
+            },
+            "fr": {
+                "name": "Isos",
+                "tooltip": "Isolignes"
+            },
+            "ja": {
+                "name": "Isos",
+                "tooltip": "輪郭"
+            }
+        }
+    },
+    "GEOM/STB_POP_MATERIAL_PROPERTIES": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Material Properties",
+                "tooltip": "Set Material Properties"
+            },
+            "fr": {
+                "name": "Propriétés des matériaux",
+                "tooltip": "Définir les propriétés du matériau"
+            },
+            "ja": {
+                "name": "材料特性",
+                "tooltip": "マテリアルのプロパティを設定します。"
+            }
+        }
+    },
+    "GEOM/STB_POP_POINT_MARKER": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Point Marker",
+                "tooltip": "Set Point Marker"
+            },
+            "fr": {
+                "name": "Marqueur de point",
+                "tooltip": "Définir un marqueur de point"
+            },
+            "ja": {
+                "name": "ポイント マーカ",
+                "tooltip": "ポイントマーカーを設定"
+            }
+        }
+    },
+    "GEOM/STB_POP_PREDEF_MATER_CUSTOM": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Custom...",
+                "tooltip": "Custom..."
+            },
+            "fr": {
+                "name": "Personnalisé...",
+                "tooltip": "Personnalisé..."
+            },
+            "ja": {
+                "name": "カスタム...",
+                "tooltip": "カスタム."
+            }
+        }
+    },
+    "GEOM/STB_POP_PUBLISH_OBJ": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Publish...",
+                "tooltip": "Publish object"
+            },
+            "fr": {
+                "name": "Publier...",
+                "tooltip": "Publier l'objet"
+            },
+            "ja": {
+                "name": "発行...",
+                "tooltip": "オブジェクトを発行"
+            }
+        }
+    },
+    "GEOM/STB_POP_REDUCE_STUDY": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Reduce study",
+                "tooltip": "Reduce study"
+            },
+            "fr": {
+                "name": "Etude réduite",
+                "tooltip": "Etude réduite"
+            },
+            "ja": {
+                "name": "スタディの削減",
+                "tooltip": "スタディの縮小"
+            }
+        }
+    },
+    "GEOM/STB_POP_SETTEXTURE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Texture",
+                "tooltip": "Add a texture"
+            },
+            "fr": {
+                "name": "Texture",
+                "tooltip": "Ajoute une texture"
+            },
+            "ja": {
+                "name": "テクスチャ",
+                "tooltip": "テクスチャを追加します。"
+            }
+        }
+    },
+    "GEOM/STB_POP_SHADING": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Shading",
+                "tooltip": "Shading"
+            },
+            "fr": {
+                "name": "Ombrage",
+                "tooltip": "Ombrage"
+            },
+            "ja": {
+                "name": "シェーディング",
+                "tooltip": "網かけ"
+            }
+        }
+    },
+    "GEOM/STB_POP_SHADING_WITH_EDGES": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Shading With Edges",
+                "tooltip": "Shading With Edges"
+            },
+            "fr": {
+                "name": "Ombrage avec arêtes",
+                "tooltip": "Ombrage avec arêtes"
+            },
+            "ja": {
+                "name": "エッジ+シェーディング",
+                "tooltip": "陰影とエッジ"
+            }
+        }
+    },
+    "GEOM/STB_POP_SHOW_ALL_ANNOTATIONS": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Show all annotations",
+                "tooltip": "Show all shape annotations for the object"
+            },
+            "fr": {
+                "name": "Montrer toutes les annotations",
+                "tooltip": "Montrer toutes les annotations pour l'objet"
+            },
+            "ja": {
+                "name": "全ての注釈を表示",
+                "tooltip": "対象オブジェクトにある全ての形状注釈を表示"
+            }
+        }
+    },
+    "GEOM/STB_POP_SHOW_ALL_DIMENSIONS": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Show all dimensions",
+                "tooltip": "Show all hidden measures (dimension) created for the object"
+            },
+            "fr": {
+                "name": "Afficher les cotations ",
+                "tooltip": "Afficher toutes les cotations cachées pour un objet"
+            },
+            "ja": {
+                "name": "すべての寸法を表示",
+                "tooltip": "オブジェクトに作成されたすべての非表示の基準寸法を表示"
+            }
+        }
+    },
+    "GEOM/STB_POP_SHOW_DEPENDENCY_TREE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Show dependency tree",
+                "tooltip": "Show dependency tree"
+            },
+            "fr": {
+                "name": "Montrer l'arbre des dépendances",
+                "tooltip": "Montrer l'arbre des dépendances"
+            },
+            "ja": {
+                "name": "依存ツリーの表示",
+                "tooltip": "依存ツリーの表示"
+            }
+        }
+    },
+    "GEOM/STB_POP_SHOW_NAME": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Show Name",
+                "tooltip": "Show Name"
+            },
+            "fr": {
+                "name": "Montrer le nom",
+                "tooltip": "Montrer le nom"
+            },
+            "ja": {
+                "name": "名前の表示",
+                "tooltip": "名前の表示"
+            }
+        }
+    },
+    "GEOM/STB_POP_SORT_CHILD_ITEMS": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Sort children",
+                "tooltip": "Sort child items"
+            },
+            "fr": {
+                "name": "Trier les descendants",
+                "tooltip": "Trier les descendants"
+            },
+            "ja": {
+                "name": "子供の並べ替え",
+                "tooltip": "子アイテムを並べ替える"
+            }
+        }
+    },
+    "GEOM/STB_POP_TEXTURE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Texture",
+                "tooltip": "Texture"
+            },
+            "fr": {
+                "name": "Texture",
+                "tooltip": "Texture"
+            },
+            "ja": {
+                "name": "テクスチャ",
+                "tooltip": "テクスチャ"
+            }
+        }
+    },
+    "GEOM/STB_POP_TRANSPARENCY": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Transparency",
+                "tooltip": "Transparency"
+            },
+            "fr": {
+                "name": "Transparence",
+                "tooltip": "Transparence"
+            },
+            "ja": {
+                "name": "透明度",
+                "tooltip": "透明度"
+            }
+        }
+    },
+    "GEOM/STB_POP_UNPUBLISH_OBJ": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Unpublish",
+                "tooltip": "Unpublish object"
+            },
+            "fr": {
+                "name": "Dépublier",
+                "tooltip": "Dépublier l'objet"
+            },
+            "ja": {
+                "name": "発行停止",
+                "tooltip": "オブジェクトの発行停止"
+            }
+        }
+    },
+    "GEOM/STB_POP_VECTORS": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Show Edge Direction",
+                "tooltip": "Show Edge Direction"
+            },
+            "fr": {
+                "name": "Afficher l'orientation des arêtes",
+                "tooltip": "Afficher l'orientation des arêtes"
+            },
+            "ja": {
+                "name": "ベクトル方向表示",
+                "tooltip": "エッジの方向を表示します。"
+            }
+        }
+    },
+    "GEOM/STB_POP_VERTICES": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Show Vertices",
+                "tooltip": "Show Vertices"
+            },
+            "fr": {
+                "name": "Montrer les sommets",
+                "tooltip": "Montrer les sommets"
+            },
+            "ja": {
+                "name": "頂点の表示",
+                "tooltip": "頂点の表示"
+            }
+        }
+    },
+    "GEOM/STB_POP_WIREFRAME": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Wireframe",
+                "tooltip": "Wireframe"
+            },
+            "fr": {
+                "name": "Filaire",
+                "tooltip": "Contours"
+            },
+            "ja": {
+                "name": "ワイヤ フレーム",
+                "tooltip": "Wires"
+            }
+        }
+    },
+    "GEOM/STB_PROJECTION": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Projection",
+                "tooltip": "Project a point, an edge or a wire on a face"
+            },
+            "fr": {
+                "name": "Projection",
+                "tooltip": "Projeter un point, une arête ou un contour sur une face"
+            },
+            "ja": {
+                "name": "投影",
+                "tooltip": "ポイント、エッジ、または輪郭上の 1 つの側面を投影"
+            }
+        }
+    },
+    "GEOM/STB_PROJ_ON_CYL": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Projection on Cylinder",
+                "tooltip": "Project a wire or a face on a cylinder"
+            },
+            "fr": {
+                "name": "Projection sur un cylindre",
+                "tooltip": "Projète un contour ou une face sur un cylindre"
+            },
+            "ja": {
+                "name": "円筒の投影",
+                "tooltip": "円筒上のワイヤまたは面を投影"
+            }
+        }
+    },
+    "GEOM/STB_PROPAGATE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Propagate",
+                "tooltip": "Propagate"
+            },
+            "fr": {
+                "name": "Propager",
+                "tooltip": "Propager"
+            },
+            "ja": {
+                "name": "スプレッド",
+                "tooltip": "スプレッド"
+            }
+        }
+    },
+    "GEOM/STB_Q_FACE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Quadrangle Face",
+                "tooltip": "Quadrangle Face"
+            },
+            "fr": {
+                "name": "Face quadrangulaire ",
+                "tooltip": "Face quadrangulaire "
+            },
+            "ja": {
+                "name": "四角形フェース",
+                "tooltip": "四角形フェース"
+            }
+        }
+    },
+    "GEOM/STB_RECTANGLE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Rectangle",
+                "tooltip": "Create rectangular face"
+            },
+            "fr": {
+                "name": "Rectangle",
+                "tooltip": "Créer une face rectangulaire "
+            },
+            "ja": {
+                "name": "四角形",
+                "tooltip": "長方形の面を作成"
+            }
+        }
+    },
+    "GEOM/STB_RELOAD_IMPORTED": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Reload From Disk",
+                "tooltip": "Reload imported shape from its original place on disk"
+            },
+            "fr": {
+                "name": "Recharger à partir du disque",
+                "tooltip": "Recharger l'objet importé depuis le disque"
+            },
+            "ja": {
+                "name": "ディスクから再読み込み",
+                "tooltip": "ディスク上の元の場所からインポートした形状をリロード"
+            }
+        }
+    },
+    "GEOM/STB_REMOVE_EXTRA_EDGES": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Remove Extra Edges",
+                "tooltip": "Remove extra edges"
+            },
+            "fr": {
+                "name": "Supprimer les arêtes inutiles",
+                "tooltip": "Supprimer les arêtes inutiles"
+            },
+            "ja": {
+                "name": "不要なエッジを削除",
+                "tooltip": "不要なエッジを削除"
+            }
+        }
+    },
+    "GEOM/STB_REMOVE_WEBS": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Remove Internal Faces",
+                "tooltip": "Remove internal faces"
+            },
+            "fr": {
+                "name": "Supprimer les faces internes",
+                "tooltip": "Supprimer les faces internes"
+            },
+            "ja": {
+                "name": "内部面の削除",
+                "tooltip": "内部面を削除します。"
+            }
+        }
+    },
+    "GEOM/STB_REVOLUTION": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Revolution",
+                "tooltip": "Create a revolution"
+            },
+            "fr": {
+                "name": "Révolution",
+                "tooltip": "Créer une révolution"
+            },
+            "ja": {
+                "name": "回転押し出し",
+                "tooltip": "回転押し出しの作成"
+            }
+        }
+    },
+    "GEOM/STB_ROTATION": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Rotation",
+                "tooltip": "Rotate a shape"
+            },
+            "fr": {
+                "name": "Rotation",
+                "tooltip": "Tourner un objet"
+            },
+            "ja": {
+                "name": "回転",
+                "tooltip": "オブジェクトを回転"
+            }
+        }
+    },
+    "GEOM/STB_SCALE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Scale Transform",
+                "tooltip": "Scale a shape"
+            },
+            "fr": {
+                "name": "Redimensionner",
+                "tooltip": "Redimensionner un objet"
+            },
+            "ja": {
+                "name": "サイズを変更",
+                "tooltip": "オブジェクトのサイズを変更"
+            }
+        }
+    },
+    "GEOM/STB_SECTION": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Intersection",
+                "tooltip": "Intersection"
+            },
+            "fr": {
+                "name": "Section",
+                "tooltip": "Section"
+            },
+            "ja": {
+                "name": "セクション",
+                "tooltip": "セクション"
+            }
+        }
+    },
+    "GEOM/STB_SEWING": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Sewing",
+                "tooltip": "Perform sewing"
+            },
+            "fr": {
+                "name": "Couture",
+                "tooltip": "Effectuer la couture"
+            },
+            "ja": {
+                "name": "縫合",
+                "tooltip": "縫い合わせ実行"
+            }
+        }
+    },
+    "GEOM/STB_SHADING": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Shading",
+                "tooltip": "Shading"
+            },
+            "fr": {
+                "name": "Ombrage",
+                "tooltip": "Ombrage"
+            },
+            "ja": {
+                "name": "網かけ",
+                "tooltip": "網かけ"
+            }
+        }
+    },
+    "GEOM/STB_SHADING_WITH_EDGES": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Shading With Edges",
+                "tooltip": "Shading with edges"
+            },
+            "fr": {
+                "name": "Ombrage avec arêtes",
+                "tooltip": "Ombrage avec arêtes"
+            },
+            "ja": {
+                "name": "陰影とエッジ",
+                "tooltip": "陰影とエッジ"
+            }
+        }
+    },
+    "GEOM/STB_SHAPE_PROCESS": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Shape Processing",
+                "tooltip": "Perform shape processing "
+            },
+            "fr": {
+                "name": "Traitement de forme",
+                "tooltip": "Effectuer le traitement de formes"
+            },
+            "ja": {
+                "name": "形状処理",
+                "tooltip": "形状処理を実行する"
+            }
+        }
+    },
+    "GEOM/STB_SHAPE_STATISTICS": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Shape Statistics",
+                "tooltip": "Shape Statistics"
+            },
+            "fr": {
+                "name": "Statistiques sur l'objet",
+                "tooltip": "Statistique de l'objet"
+            },
+            "ja": {
+                "name": "形状の統計",
+                "tooltip": "形状の統計"
+            }
+        }
+    },
+    "GEOM/STB_SHELL": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Shell",
+                "tooltip": "Build a shell"
+            },
+            "fr": {
+                "name": "Coque",
+                "tooltip": "Construire une coque"
+            },
+            "ja": {
+                "name": "シェル",
+                "tooltip": "シェルを構築"
+            }
+        }
+    },
+    "GEOM/STB_SHELL_SEL_ONLY": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Shell",
+                "tooltip": "Select only a Shells"
+            },
+            "fr": {
+                "name": "Coque",
+                "tooltip": "Ne choisir que des coques"
+            },
+            "ja": {
+                "name": "シェル",
+                "tooltip": "シェルのみを選択"
+            }
+        }
+    },
+    "GEOM/STB_SHOW_ONLY_CHILDREN": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Show Only Children",
+                "tooltip": "Show Only Children"
+            },
+            "fr": {
+                "name": "Afficher uniquement les enfants",
+                "tooltip": "Afficher uniquement les enfants"
+            },
+            "ja": {
+                "name": "子供だけを表示します。",
+                "tooltip": "子供だけを表示します。"
+            }
+        }
+    },
+    "GEOM/STB_SKETCH": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "2D Sketch",
+                "tooltip": "Create 2D sketch"
+            },
+            "fr": {
+                "name": "Esquisse 2D",
+                "tooltip": "Créer une esquisse 2D"
+            },
+            "ja": {
+                "name": "2D スケッチ",
+                "tooltip": "2Dスケッチを作成"
+            }
+        }
+    },
+    "GEOM/STB_SOLID": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Solid",
+                "tooltip": "Build a solid"
+            },
+            "fr": {
+                "name": "Solide",
+                "tooltip": "Construire un solide"
+            },
+            "ja": {
+                "name": "ソリッド",
+                "tooltip": "ソリッドを構築"
+            }
+        }
+    },
+    "GEOM/STB_SOLID_SEL_ONLY": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Solid",
+                "tooltip": "Select only a Solids"
+            },
+            "fr": {
+                "name": "Solide",
+                "tooltip": "Ne choisir que des solides"
+            },
+            "ja": {
+                "name": "ソリッド",
+                "tooltip": "ソリッドだけを選択"
+            }
+        }
+    },
+    "GEOM/STB_SPHERE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Sphere",
+                "tooltip": "Create a sphere"
+            },
+            "fr": {
+                "name": "Sphère",
+                "tooltip": "Créer une sphère"
+            },
+            "ja": {
+                "name": "球",
+                "tooltip": "球を作成"
+            }
+        }
+    },
+    "GEOM/STB_SUPPERSS_HOLES": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Suppress Holes",
+                "tooltip": "Perform suppress holes"
+            },
+            "fr": {
+                "name": "Supprimer les trous",
+                "tooltip": "Effectuer la suppression des trous"
+            },
+            "ja": {
+                "name": "穴を削除",
+                "tooltip": "穴の削除を実行"
+            }
+        }
+    },
+    "GEOM/STB_SUPPRESS_FACES": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Suppress Faces",
+                "tooltip": "Perform suppress faces"
+            },
+            "fr": {
+                "name": "Supprimer des faces",
+                "tooltip": "Effectuer la suppression des faces"
+            },
+            "ja": {
+                "name": "フェースを削除",
+                "tooltip": "フェースの削除を実行"
+            }
+        }
+    },
+    "GEOM/STB_SUPPRESS_INT_WIRES": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Suppress Internal Wires",
+                "tooltip": "Perform suppress internal wires"
+            },
+            "fr": {
+                "name": "Supprimer des contours internes",
+                "tooltip": "Effectuer la suppression des contours internes"
+            },
+            "ja": {
+                "name": "内部の輪郭を削除します。",
+                "tooltip": "内部ワイヤーの削除を実行"
+            }
+        }
+    },
+    "GEOM/STB_SURFACE_FROM_FACE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Surface From Face",
+                "tooltip": "Create a Surface From Face"
+            },
+            "fr": {
+                "name": "Surface depuis une face",
+                "tooltip": "Créer une surface depuis une face"
+            },
+            "ja": {
+                "name": "面から表面",
+                "tooltip": "面から表面の作成"
+            }
+        }
+    },
+    "GEOM/STB_TEXTURE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Texture",
+                "tooltip": "Texture"
+            },
+            "fr": {
+                "name": "Texture",
+                "tooltip": "Texture"
+            },
+            "ja": {
+                "name": "テクスチャ",
+                "tooltip": "テクスチャ"
+            }
+        }
+    },
+    "GEOM/STB_THICKNESS": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Thickness",
+                "tooltip": "Make a thick solid"
+            },
+            "fr": {
+                "name": "Epaisseur",
+                "tooltip": "Crée un solide par ajout d'épaisseur"
+            },
+            "ja": {
+                "name": "厚み",
+                "tooltip": "厚みのあるソリッドの作成"
+            }
+        }
+    },
+    "GEOM/STB_TOLERANCE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Tolerance",
+                "tooltip": "Compute tolerance of the shape"
+            },
+            "fr": {
+                "name": "Tolérance",
+                "tooltip": "Calculer la tolérance d'un objet"
+            },
+            "ja": {
+                "name": "公差",
+                "tooltip": "オブジェクトの距離を計算"
+            }
+        }
+    },
+    "GEOM/STB_TORUS": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Torus",
+                "tooltip": "Create a torus"
+            },
+            "fr": {
+                "name": "Tore",
+                "tooltip": "Créer un tore"
+            },
+            "ja": {
+                "name": "円環",
+                "tooltip": "円環を作成"
+            }
+        }
+    },
+    "GEOM/STB_TRANSFER_DATA": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Transfer Data",
+                "tooltip": "Transfer Data"
+            },
+            "fr": {
+                "name": "Transfert de données",
+                "tooltip": "Transfert de données"
+            },
+            "ja": {
+                "name": "データ転送",
+                "tooltip": "データ転送"
+            }
+        }
+    },
+    "GEOM/STB_TRANSLATION": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Translation",
+                "tooltip": "Translate shape"
+            },
+            "fr": {
+                "name": "Translation",
+                "tooltip": "Translater un objet"
+            },
+            "ja": {
+                "name": "変換",
+                "tooltip": "オブジェクトを移動"
+            }
+        }
+    },
+    "GEOM/STB_UNION_FACES": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Union Faces",
+                "tooltip": "Union faces"
+            },
+            "fr": {
+                "name": "Unir les Faces",
+                "tooltip": "Unir les faces"
+            },
+            "ja": {
+                "name": "面の共有",
+                "tooltip": "連合に直面しています。"
+            }
+        }
+    },
+    "GEOM/STB_VECTOR": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Vector",
+                "tooltip": "Create a vector"
+            },
+            "fr": {
+                "name": "Vecteur",
+                "tooltip": "Créer un vecteur"
+            },
+            "ja": {
+                "name": "ベクトル",
+                "tooltip": "ベクトルを作成"
+            }
+        }
+    },
+    "GEOM/STB_VECTOR_MODE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Change Edge Presentation Mode",
+                "tooltip": "Change Edge Presentation Mode"
+            },
+            "fr": {
+                "name": "Changer le mode de représentation des arêtes",
+                "tooltip": "Changer le mode de représentation des arêtes"
+            },
+            "ja": {
+                "name": "エッジの表示モードを変更",
+                "tooltip": "エッジの表示モードを変更"
+            }
+        }
+    },
+    "GEOM/STB_VERTEX_SEL_ONLY": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Vertex",
+                "tooltip": "Select only a Points"
+            },
+            "fr": {
+                "name": "Point",
+                "tooltip": "Ne choisir que des points"
+            },
+            "ja": {
+                "name": "基準点",
+                "tooltip": "ポイントのみを選択"
+            }
+        }
+    },
+    "GEOM/STB_VERTICES_MODE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Mode of vertices",
+                "tooltip": "Mode of vertices"
+            },
+            "fr": {
+                "name": "Mode des sommets",
+                "tooltip": "Mode des sommets"
+            },
+            "ja": {
+                "name": "頂点のモード",
+                "tooltip": "頂点のモード"
+            }
+        }
+    },
+    "GEOM/STB_WHAT_IS": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "What is",
+                "tooltip": "What is"
+            },
+            "fr": {
+                "name": "Qu'est-ce que c'est ?",
+                "tooltip": "Qu'est-ce que c'est ?"
+            },
+            "ja": {
+                "name": "選択対象の情報",
+                "tooltip": "Whatis"
+            }
+        }
+    },
+    "GEOM/STB_WIRE": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Wire",
+                "tooltip": "Build a wire"
+            },
+            "fr": {
+                "name": "Contour",
+                "tooltip": "Construire un contour"
+            },
+            "ja": {
+                "name": "ワイヤー",
+                "tooltip": "ワイヤーを構築"
+            }
+        }
+    },
+    "GEOM/STB_WIREFRAME": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Wireframe",
+                "tooltip": "Wireframe"
+            },
+            "fr": {
+                "name": "Filaire",
+                "tooltip": "Contours"
+            },
+            "ja": {
+                "name": "ワイヤ フレーム",
+                "tooltip": "Wires"
+            }
+        }
+    },
+    "GEOM/STB_WIRE_SEL_ONLY": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Wire",
+                "tooltip": "Select only a Wires"
+            },
+            "fr": {
+                "name": "Contour",
+                "tooltip": "Ne choisir que des contours"
+            },
+            "ja": {
+                "name": "ワイヤー",
+                "tooltip": "ワイヤーだけを選択"
+            }
+        }
+    },
+    "GEOM/STEPPlugin/Export_STEP": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Export STEP",
+                "tooltip": "Export STEP"
+            },
+            "fr": {
+                "name": "Exporter STEP",
+                "tooltip": "Exporter STEP"
+            },
+            "ja": {
+                "name": "STEPエクスポート",
+                "tooltip": "STEPエクスポート"
+            }
+        }
+    },
+    "GEOM/STEPPlugin/Import_STEP": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Import STEP",
+                "tooltip": "Import STEP"
+            },
+            "fr": {
+                "name": "Importer STEP",
+                "tooltip": "Importer STEP"
+            },
+            "ja": {
+                "name": "STEPインポート",
+                "tooltip": "STEPインポート"
+            }
+        }
+    },
+    "GEOM/STLPlugin/Export_STL": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Export STL",
+                "tooltip": "Export STL"
+            },
+            "fr": {
+                "name": "Exporter STL",
+                "tooltip": "Exporter STL"
+            },
+            "ja": {
+                "name": "STLエクスポート",
+                "tooltip": "STLエクスポート"
+            }
+        }
+    },
+    "GEOM/STLPlugin/Import_STL": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Import STL",
+                "tooltip": "Import STL"
+            },
+            "fr": {
+                "name": "Importer STL",
+                "tooltip": "Importer STL"
+            },
+            "ja": {
+                "name": "STLインポート",
+                "tooltip": "STLインポート"
+            }
+        }
+    },
+    "GEOM/Transparency/Decrease": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Decrease transparency",
+                "tooltip": "Decrease transparency"
+            },
+            "fr": {
+                "name": "Diminuer la transparence",
+                "tooltip": "Diminuer la transparence"
+            },
+            "ja": {
+                "name": "透明度を下げる",
+                "tooltip": "透明度を下げる"
+            }
+        }
+    },
+    "GEOM/Transparency/Increase": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Increase transparency",
+                "tooltip": "Increase transparency"
+            },
+            "fr": {
+                "name": "Augmenter la transparence",
+                "tooltip": "Augmenter la transparence"
+            },
+            "ja": {
+                "name": "透明度を高める",
+                "tooltip": "透明度を高める"
+            }
+        }
+    },
+    "GEOM/VTKPlugin/Export_VTK": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Export VTK",
+                "tooltip": "Export VTK"
+            },
+            "fr": {
+                "name": "Exporter VTK",
+                "tooltip": "Exporter VTK"
+            },
+            "ja": {
+                "name": "VTKエクスポート",
+                "tooltip": "VTKエクスポート"
+            }
+        }
+    },
+    "GEOM/XAOPlugin/Export_XAO": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Export XAO",
+                "tooltip": "Export XAO"
+            },
+            "fr": {
+                "name": "Exporter XAO",
+                "tooltip": "Exporter XAO"
+            },
+            "ja": {
+                "name": "XAOエクスポート",
+                "tooltip": "XAOのエクスポート"
+            }
+        }
+    },
+    "GEOM/XAOPlugin/Import_XAO": {
+        "iconPath": "",
+        "langDependentAssets": {
+            "en": {
+                "name": "Import XAO",
+                "tooltip": "Import XAO"
+            },
+            "fr": {
+                "name": "Importer XAO",
+                "tooltip": "Importer XAO"
+            },
+            "ja": {
+                "name": "XAOインポート",
+                "tooltip": "XAOのインポート"
+            }
+        }
+    }
+}
index 50c67b212e27840cb994dd1c521296ebfc7cfd59..c52d2a92f4cd3d0e547ffc78873cdbcb8859cc78 100644 (file)
@@ -138,6 +138,9 @@ static Standard_Boolean ModifySurface(const TopoDS_Face&          theFace,
         gp_Ax3 ax3 = sp.Position();
         if (Abs(Vmax-Vmin) < PI2) {
           gp_Ax3 axnew3 (ax3.Axis().Location(), ax3.Direction()^ax3.XDirection(), ax3.XDirection());
+          if (!ax3.Direct()) {
+            axnew3.YReverse();
+          }
           sp.SetPosition(axnew3);
           Handle(Geom_SphericalSurface) aNewSphere = new Geom_SphericalSurface(sp);
           theNewSurface = aNewSphere;
@@ -157,6 +160,9 @@ static Standard_Boolean ModifySurface(const TopoDS_Face&          theFace,
           gp_Dir newNorm(gp_Vec(PC,PN));
           gp_Dir newDirX(gp_Vec(PC,PX));
           gp_Ax3 axnew3(ax3.Axis().Location(), newNorm, newDirX);
+          if (!ax3.Direct()) {
+            axnew3.YReverse();
+          }
           sp.SetPosition(axnew3);
 
           // check if both new poles are outside theFace
@@ -276,6 +282,10 @@ static Standard_Boolean ModifySurface(const TopoDS_Face&          theFace,
       }
 
       gp_Ax3 anAxisOfNewSphere (aCentre, anUp, XDirOfCircle);
+      gp_Ax3 ax3 = sp.Position();
+      if (!ax3.Direct()) {
+        anAxisOfNewSphere.YReverse();
+      }
       theNewSurface = new Geom_SphericalSurface (anAxisOfNewSphere, Radius);
       break;
     } //for (; itw.More(); itw.Next()) (iteration on outer wire)
index 8a75aa7305e5e3ce2e1f2715fd9d5887695a0aea..39585b77155219eae632e333fc6fe0ba52c2e1b2 100644 (file)
@@ -60,10 +60,7 @@ SET(GEOMAlgo_HEADERS
   GEOMAlgo_DataMapOfShapeMapOfShape.hxx
   GEOMAlgo_DataMapOfShapePnt.hxx
   GEOMAlgo_Extractor.hxx
-  GEOMAlgo_FinderShapeOn.hxx
-  GEOMAlgo_FinderShapeOn1.hxx
   GEOMAlgo_FinderShapeOn2.hxx
-  GEOMAlgo_FinderShapeOnQuad.hxx
   GEOMAlgo_GetInPlace.hxx
   GEOMAlgo_GetInPlaceAPI.hxx
   GEOMAlgo_GlueAnalyser.hxx
index 82401d0c973945ac2d80e263fbfa7c7477b6a348..7e9cc0b1b5a65eeb69b14724d56e7c91d4b1d1d2 100644 (file)
@@ -80,7 +80,6 @@
 #include <BRepTools.hxx>
 #include <BRepTools_WireExplorer.hxx>
 #include <BRepBndLib.hxx>
-#include <BRepMesh_IncrementalMesh.hxx>
 #include <BRepGProp.hxx>
 
 #include <IntTools_Tools.hxx>
@@ -834,57 +833,6 @@ Standard_Integer GEOMAlgo_AlgoTools::RefineSDShapes
   //
   return 0;
 }
-//=======================================================================
-//function : BuildTriangulation
-//purpose  :
-//=======================================================================
-Standard_Boolean 
-  GEOMAlgo_AlgoTools::BuildTriangulation (const TopoDS_Shape& theShape)
-{
-  // calculate deflection
-  Standard_Real aDeviationCoefficient = 0.001;
-
-  Bnd_Box B;
-  BRepBndLib::Add(theShape, B);
-  Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax;
-  B.Get(aXmin, aYmin, aZmin, aXmax, aYmax, aZmax);
-
-  Standard_Real dx = aXmax - aXmin, dy = aYmax - aYmin, dz = aZmax - aZmin;
-  Standard_Real aDeflection = Max(Max(dx, dy), dz) * aDeviationCoefficient * 4;
-  Standard_Real aHLRAngle = 0.349066;
-
-  // build triangulation
-  BRepMesh_IncrementalMesh Inc (theShape, aDeflection, Standard_False, aHLRAngle);
-
-  // check triangulation
-  bool isTriangulation = true;
-
-  TopExp_Explorer exp (theShape, TopAbs_FACE);
-  if (exp.More())
-  {
-    TopLoc_Location aTopLoc;
-    Handle(Poly_Triangulation) aTRF;
-    aTRF = BRep_Tool::Triangulation(TopoDS::Face(exp.Current()), aTopLoc);
-    if (aTRF.IsNull()) {
-      isTriangulation = false;
-    }
-  }
-  else // no faces, try edges
-  {
-    TopExp_Explorer expe (theShape, TopAbs_EDGE);
-    if (!expe.More()) {
-      isTriangulation = false;
-    }
-    else {
-      TopLoc_Location aLoc;
-      Handle(Poly_Polygon3D) aPE = BRep_Tool::Polygon3D(TopoDS::Edge(expe.Current()), aLoc);
-      if (aPE.IsNull()) {
-        isTriangulation = false;
-      }
-    }
-  }
-  return isTriangulation;
-}
 
 //=======================================================================
 //function : IsCompositeShape
index 793373fc0845b76c038e34fd94fd63abaf48f62d..2d318a1dc40987b374cb64f7951c5b8ed355a3ff 100644 (file)
@@ -87,9 +87,6 @@ class GEOMAlgo_AlgoTools  {
     static  Standard_Boolean IsCompositeShape(const TopoDS_Shape& aS) ;
 
 
-  Standard_EXPORT
-    static  Standard_Boolean BuildTriangulation(const TopoDS_Shape& aS) ;
-
   Standard_EXPORT
     static  Standard_Integer RefineSDShapes
       (GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape& aMSD,
index 20a6e6033bef498be95c8d85fe2df0ba92956e56..039486cbe5f70b81884eddd3c20909904f3dfdb2 100644 (file)
 #ifndef _GEOMAlgo_ClsfSolid_HeaderFile
 #define _GEOMAlgo_ClsfSolid_HeaderFile
 
+#include <Basics_OCCTVersion.hxx>
+
 #include <Standard.hxx>
 #include <Standard_DefineHandle.hxx>
 #include <TopoDS_Shape.hxx>
+#if OCC_VERSION_LARGE < 0x07080000
 #include <Standard_Address.hxx>
+#else
+#include <Standard_TypeDef.hxx>
+#endif
 #include <GEOMAlgo_Clsf.hxx>
 
 DEFINE_STANDARD_HANDLE(GEOMAlgo_ClsfSolid, GEOMAlgo_Clsf)
index 2dbddd3536f6539bd7238b0782b14be298150e45..973834342d27367d50843ab3f08bd380fab4d1cd 100644 (file)
 #ifndef GEOMAlgo_DataMapOfPassKeyInteger_HeaderFile
 #define GEOMAlgo_DataMapOfPassKeyInteger_HeaderFile
 
+#include <Basics_OCCTVersion.hxx>
+
 #include <GEOMAlgo_PassKey.hxx>
 #include <Standard_Integer.hxx>
+
+#if OCC_VERSION_LARGE < 0x07080000
 #include <GEOMAlgo_PassKeyMapHasher.hxx>
 
 #define _NCollection_MapHasher
 #include <NCollection_DataMap.hxx>
 
 typedef NCollection_DataMap<GEOMAlgo_PassKey, Standard_Integer, GEOMAlgo_PassKeyMapHasher> GEOMAlgo_DataMapOfPassKeyInteger;
+
+#else
+
+#include <NCollection_DataMap.hxx>
+
+typedef NCollection_DataMap<GEOMAlgo_PassKey, Standard_Integer> GEOMAlgo_DataMapOfPassKeyInteger;
+
+#endif // OCC_VERSION_LARGE < 0x07080000
+
+
 typedef GEOMAlgo_DataMapOfPassKeyInteger::Iterator GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger;
 
 #undef _NCollection_MapHasher
diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cxx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cxx
deleted file mode 100644 (file)
index bf84c45..0000000
+++ /dev/null
@@ -1,611 +0,0 @@
-// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
-//
-// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-// 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
-//
-
-// File:        GEOMAlgo_FinderShapeOn.cxx
-// Created:     Tue Jan 11 14:44:31 2005
-// Author:      Peter KURNEV
-
-#include <GEOMAlgo_FinderShapeOn.hxx>
-
-#include <Precision.hxx>
-
-#include <gp_Pnt.hxx>
-
-#include <TopAbs_ShapeEnum.hxx>
-#include <TopAbs_Orientation.hxx>
-
-#include <TopoDS.hxx>
-#include <TopoDS_Face.hxx>
-#include <TopoDS_Shape.hxx>
-#include <TopoDS_Compound.hxx>
-#include <TopoDS_Shell.hxx>
-#include <TopoDS_Solid.hxx>
-#include <TopoDS_Vertex.hxx>
-#include <TopoDS_Edge.hxx>
-#include <TopoDS_Iterator.hxx>
-
-#include <TopTools_ListIteratorOfListOfShape.hxx>
-#include <TopTools_IndexedMapOfShape.hxx>
-#include <TopTools_DataMapOfShapeShape.hxx>
-
-#include <Bnd_Box.hxx>
-#include <BRepBndLib.hxx>
-#include <BRepMesh_IncrementalMesh.hxx>
-
-#include <BRep_Builder.hxx>
-#include <BRep_Tool.hxx>
-
-#include <TopExp.hxx>
-#include <TopExp_Explorer.hxx>
-
-#include <BRepLib_MakeFace.hxx>
-#include <BRepLib_FaceError.hxx>
-
-
-#include <GEOMAlgo_WireSolid.hxx>
-#include <GEOMAlgo_ShellSolid.hxx>
-#include <GEOMAlgo_VertexSolid.hxx>
-#include <GEOMAlgo_ShapeSolid.hxx>
-#include <GEOMAlgo_SolidSolid.hxx>
-#include <GEOMAlgo_SurfaceTools.hxx>
-#include <GEOMAlgo_AlgoTools.hxx>
-
-#include <BOPAlgo_PaveFiller.hxx>
-#include <BOPCol_ListOfShape.hxx>
-
-//=======================================================================
-//function : GEOMAlgo_FinderShapeOn
-//purpose  :
-//=======================================================================
-GEOMAlgo_FinderShapeOn::GEOMAlgo_FinderShapeOn()
-:
-  GEOMAlgo_ShapeAlgo()
-{
-  myTolerance=0.0001;
-  myShapeType=TopAbs_VERTEX;
-  myState=GEOMAlgo_ST_UNKNOWN;
-  myIsAnalytic=Standard_True;
-}
-//=======================================================================
-//function : ~
-//purpose  :
-//=======================================================================
-GEOMAlgo_FinderShapeOn::~GEOMAlgo_FinderShapeOn()
-{
-}
-//=======================================================================
-//function : SetSurface
-//purpose  :
-//=======================================================================
-void GEOMAlgo_FinderShapeOn::SetSurface(const Handle(Geom_Surface)& aS)
-{
-  mySurface=aS;
-}
-//=======================================================================
-//function : Surface
-//purpose  :
-//=======================================================================
-const Handle(Geom_Surface)& GEOMAlgo_FinderShapeOn::Surface() const
-{
-  return mySurface;
-}
-//=======================================================================
-//function : SetShapeType
-//purpose  :
-//=======================================================================
-void GEOMAlgo_FinderShapeOn::SetShapeType(const TopAbs_ShapeEnum aType)
-{
-  myShapeType=aType;
-}
-//=======================================================================
-//function : ShapeType
-//purpose  :
-//=======================================================================
-TopAbs_ShapeEnum GEOMAlgo_FinderShapeOn::ShapeType()const
-{
-  return myShapeType;
-}
-//=======================================================================
-//function : SetState
-//purpose  :
-//=======================================================================
-void GEOMAlgo_FinderShapeOn::SetState(const GEOMAlgo_State aState)
-{
-  myState=aState;
-}
-//=======================================================================
-//function : State
-//purpose  :
-//=======================================================================
-GEOMAlgo_State GEOMAlgo_FinderShapeOn::State() const
-{
-  return myState;
-}
-//=======================================================================
-// function: Shapes
-// purpose:
-//=======================================================================
-const TopTools_ListOfShape& GEOMAlgo_FinderShapeOn::Shapes() const
-{
-  Standard_Boolean bIsConformState;
-  Standard_Integer i, aNb;
-  TopAbs_State aSt;
-  TopTools_ListOfShape* pL;
-  //
-  pL=(TopTools_ListOfShape*) &myLS;
-  pL->Clear();
-  //
-  aNb=myMSS.Extent();
-  for (i=1; i<=aNb; ++i) {
-    const TopoDS_Shape& aS=myMSS.FindKey(i);
-    aSt=myMSS.FindFromIndex(i);
-    //
-    bIsConformState=GEOMAlgo_SurfaceTools::IsConformState(aSt, myState);
-    if (bIsConformState) {
-      pL->Append(aS);
-    }
-  }
-  return myLS;
-}
-//=======================================================================
-//function : Perform
-//purpose  :
-//=======================================================================
-void GEOMAlgo_FinderShapeOn::Perform()
-{
-  myErrorStatus=0;
-  myWarningStatus=0;
-  myLS.Clear();
-  myMSS.Clear();
-  //
-  if (!myResult.IsNull()){
-    myResult.Nullify();
-  }
-  //
-  CheckData();
-  if(myErrorStatus) {
-    return;
-  }
-  //
-  // Initialize the context
-  GEOMAlgo_ShapeAlgo::Perform();
-  //
-  myIsAnalytic=GEOMAlgo_SurfaceTools::IsAnalytic(mySurface);
-  //
-  MakeArgument1();
-  if(myErrorStatus) {
-    return;
-  }
-  //
-  if (myIsAnalytic && myShapeType==TopAbs_VERTEX) {
-    FindVertices();
-    return;
-  }
-  //
-  MakeArgument2();
-  if(myErrorStatus) {
-    return;
-  }
-  //
-  Find();
-  if(myErrorStatus || myWarningStatus) {
-    return;
-  }
-  //
-}
-//=======================================================================
-//function : FindVertices
-//purpose  :
-//=======================================================================
-void GEOMAlgo_FinderShapeOn::FindVertices()
-{
-  Standard_Integer i, aNb, iErr;
-  TopAbs_State aSt;
-  TopAbs_Orientation aOr;
-  gp_Pnt aP;
-  TopTools_IndexedMapOfShape aM;
-  //
-  TopExp::MapShapes(myArg1, TopAbs_FACE, aM);
-  const TopoDS_Face& aF=TopoDS::Face(aM(1));
-  aOr=aF.Orientation();
-  //
-  aM.Clear();
-  TopExp::MapShapes(myShape, myShapeType, aM);
-  aNb=aM.Extent();
-  if (!aNb) {
-    myWarningStatus=10; // No found sub-shapes of type myShapeType
-    return;
-  }
-  //
-  for (i=1; i<=aNb; ++i) {
-    const TopoDS_Shape& aS=aM(i);
-    const TopoDS_Vertex& aV=TopoDS::Vertex(aS);
-    aP=BRep_Tool::Pnt(aV);
-    iErr=GEOMAlgo_SurfaceTools::GetState(aP, mySurface, myTolerance, aSt);
-    if (aOr==TopAbs_REVERSED) {
-      aSt=GEOMAlgo_SurfaceTools::ReverseState(aSt);
-    }
-    myMSS.Add(aS, aSt);
-  }
-}
-//=======================================================================
-//function : Find
-//purpose  :
-//=======================================================================
-void GEOMAlgo_FinderShapeOn::Find()
-{
-  Standard_Integer i, aNb;
-  Standard_Boolean bICS;
-  TopTools_IndexedMapOfShape aM;
-  //
-  TopExp::MapShapes(myArg2, myShapeType, aM);
-  //
-  aNb=aM.Extent();
-  if (!aNb) {
-    myWarningStatus=10; // No found sub-shapes of type myShapeType
-    return;
-  }
-  //
-  bICS=GEOMAlgo_AlgoTools::IsCompositeShape(myArg2);
-  if (!bICS || myIsAnalytic) {
-    TopoDS_Compound aCmp;
-    BRep_Builder aBB;
-    //
-    aBB.MakeCompound(aCmp);
-    for (i=1; i<=aNb; ++i) {
-      const TopoDS_Shape& aSi=aM(i);
-      aBB.Add(aCmp, aSi);
-    }
-    //
-    aM.Clear();
-    aM.Add(aCmp);
-    aNb=1;
-  }
-  //
-  for (i=1; i<=aNb; ++i) {
-    const TopoDS_Shape& aS=aM(i);
-    Find(aS);
-    if (myErrorStatus) {
-      return;
-    }
-  }
-}
-//=======================================================================
-//function : Find
-//purpose  :
-//=======================================================================
-void GEOMAlgo_FinderShapeOn::Find(const TopoDS_Shape& aS)
-{
-  myErrorStatus=0;
-  //
-  Standard_Integer i, iErr;
-  TopAbs_State aSts[]={TopAbs_IN, TopAbs_OUT, TopAbs_ON};
-  TopTools_ListIteratorOfListOfShape aIt;
-  BOPCol_ListOfShape aLS;
-  BOPAlgo_PaveFiller aPF;
-  //
-  // 1. Prepare DSFiller
-  aLS.Append(myArg1);
-  aLS.Append(aS);
-  aPF.SetArguments(aLS);
-  //
-  aPF.Perform();
-  iErr=aPF.ErrorStatus();
-  if (iErr) {
-    myErrorStatus=31; //  PaveFiller is failed
-    return;
-  }
-  //
-  // 2. Find shapes
-  GEOMAlgo_ShapeSolid* pSS;
-  GEOMAlgo_VertexSolid aVXS;
-  GEOMAlgo_WireSolid aWRS;
-  GEOMAlgo_ShellSolid aSHS;
-  GEOMAlgo_SolidSolid aSLS;
-  //
-  pSS=NULL;
-  //
-  switch (myShapeType) {
-    case TopAbs_VERTEX:
-      pSS=&aVXS;
-      break;
-    case TopAbs_EDGE:
-      pSS=&aWRS;
-      break;
-    case TopAbs_FACE:
-      pSS=&aSHS;
-      break;
-    case TopAbs_SOLID:
-      aSLS.SetShape2(myArg2);
-      pSS=&aSLS;
-      break;
-    default:
-      myErrorStatus=12; // unallowed sub-shape type
-      return;
-  }
-  //
-  pSS->SetFiller(aPF);
-  pSS->Perform();
-  iErr=pSS->ErrorStatus();
-  if (iErr) {
-    myErrorStatus=32; // builder ShapeSolid failed
-    return;
-  }
-  //
-  for (i=0; i<3; ++i) {
-    const TopTools_ListOfShape& aLS=pSS->Shapes(aSts[i]);
-    aIt.Initialize(aLS);
-    for (; aIt.More(); aIt.Next()) {
-      const TopoDS_Shape& aSImage=aIt.Value();
-      if (myImages.IsBound(aSImage)) {
-        const TopoDS_Shape& aSx=myImages.Find(aSImage);
-        myMSS.Add(aSx, aSts[i]);
-      }
-      else {
-        myErrorStatus=33;// can not find original shape
-        return;
-      }
-    }
-  }
-}
-//=======================================================================
-//function : MakeArgument1
-//purpose  :
-//=======================================================================
-void GEOMAlgo_FinderShapeOn::MakeArgument1()
-{
-  myErrorStatus=0;
-  //
-  Standard_Integer i, aNb;
-  TopAbs_ShapeEnum aType;
-  BRepLib_FaceError aFErr;
-  BRepLib_MakeFace aMF;
-  TopTools_IndexedMapOfShape aM;
-  BRep_Builder aBB;
-  TopoDS_Face aFace;
-  TopoDS_Shell aSh;
-  TopoDS_Solid aSd;
-  //
-  // Argument 1
-  if (!myIsAnalytic) {
-    aMF.Init(mySurface, Standard_True, Precision::Confusion());
-
-    aFErr=aMF.Error();
-    if (aFErr!=BRepLib_FaceDone) {
-      myErrorStatus=20; // can not build the face
-      return;
-    }
-    //
-    const TopoDS_Shape& aF=aMF.Shape();
-    aFace=TopoDS::Face(aF);
-    //
-    // update tolerances
-    aM.Add(aF);
-    TopExp::MapShapes(aF, TopAbs_VERTEX, aM);
-    TopExp::MapShapes(aF, TopAbs_EDGE, aM);
-
-    aNb=aM.Extent();
-    for (i=1; i<=aNb; ++i) {
-      const TopoDS_Shape& aS=aM(i);
-      aType=aS.ShapeType();
-      switch (aType) {
-      case TopAbs_VERTEX: {
-        const TopoDS_Vertex& aVx=TopoDS::Vertex(aS);
-        aBB.UpdateVertex(aVx, myTolerance);
-      }
-        break;
-      case TopAbs_EDGE: {
-        const TopoDS_Edge& aEx=TopoDS::Edge(aS);
-        aBB.UpdateEdge(aEx, myTolerance);
-      }
-        break;
-      case TopAbs_FACE: {
-        const TopoDS_Face& aFx=TopoDS::Face(aS);
-        aBB.UpdateFace(aFx, myTolerance);
-      }
-        break;
-      default:
-        break;
-      }
-    }
-  } //
-  else {
-    aBB.MakeFace(aFace, mySurface, myTolerance);
-  }
-  //
-  // make solid
-  aBB.MakeShell(aSh);
-  aBB.Add(aSh, aFace);
-  aBB.MakeSolid(aSd);
-  aBB.Add(aSd, aSh);
-  myArg1=aSd;
-}
-//=======================================================================
-//function : MakeArgument2
-//purpose  :
-//=======================================================================
-void GEOMAlgo_FinderShapeOn::MakeArgument2()
-{
-  myErrorStatus=0;
-  //
-  TopoDS_Shape aSC;
-  TopTools_DataMapOfShapeShape aOriginals;
-  //
-  myImages.Clear();
-  //
-  GEOMAlgo_FinderShapeOn::CopySource(myShape, myImages, aOriginals, aSC);
-  //
-  myArg2=aSC;
-}
-//=======================================================================
-//function : CheckData
-//purpose  :
-//=======================================================================
-void GEOMAlgo_FinderShapeOn::CheckData()
-{
-  myErrorStatus=0;
-  //
-  if(mySurface.IsNull()) {
-    myErrorStatus=10; // mySurface=NULL
-    return;
-  }
-  //
-  if (myShape.IsNull()) {
-    myErrorStatus=11; // myShape=NULL
-    return;
-  }
-  //
-  if (!(myShapeType==TopAbs_VERTEX ||
-        myShapeType==TopAbs_EDGE ||
-        myShapeType==TopAbs_FACE ||
-        myShapeType==TopAbs_SOLID)) {
-    myErrorStatus=12; // unallowed sub-shape type
-    return;
-  }
-  //
-  if (myState==GEOMAlgo_ST_UNKNOWN ||
-      myState==GEOMAlgo_ST_INOUT) {
-    myErrorStatus=13; // unallowed state type
-    return;
-  }
-}
-//
-//=======================================================================
-//function : CopySource
-//purpose  :
-//=======================================================================
-void GEOMAlgo_FinderShapeOn::CopySource(const TopoDS_Shape& aE,
-                                        TopTools_DataMapOfShapeShape& aImages,
-                                        TopTools_DataMapOfShapeShape& aOriginals,
-                                        TopoDS_Shape& aEx)
-{
-  Standard_Boolean bFree;
-  TopAbs_ShapeEnum aType;
-  Standard_Integer aR;
-  BRep_Builder BB;
-  TopoDS_Iterator aIt;
-  //
-  aType=aE.ShapeType();
-  //
-  if (aOriginals.IsBound(aE)) {
-    aEx=aOriginals.ChangeFind(aE);
-    return;
-  }
-  else {
-    aEx=aE.EmptyCopied();
-    aOriginals.Bind(aE, aEx);
-    aImages.Bind(aEx, aE);
-  }
-  //
-  aR=(Standard_Integer)aType+1;
-  if (aR>TopAbs_VERTEX) {
-    return;
-  }
-  //
-  bFree=aEx.Free();
-  aEx.Free(Standard_True);
-  //
-  aType=(TopAbs_ShapeEnum) aR;
-  //
-  aIt.Initialize(aE);//, Standard_False);
-  for (; aIt.More();  aIt.Next()) {
-    const TopoDS_Shape& aV=aIt.Value();
-    TopoDS_Shape aVx;
-    //
-    CopySource (aV, aImages, aOriginals, aVx);
-    //
-    aVx.Orientation(aV.Orientation());
-    BB.Add(aEx, aVx);
-  }
-  //
-  aEx.Free(bFree);
-}
-//
-//=======================================================================
-//function : BuildTriangulation
-//purpose  :
-//=======================================================================
-Standard_Boolean
-  GEOMAlgo_FinderShapeOn::BuildTriangulation (const TopoDS_Shape& theShape)
-{
-  // calculate deflection
-  Standard_Real aDeviationCoefficient = 0.001;
-
-  Bnd_Box B;
-  BRepBndLib::Add(theShape, B);
-  Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax;
-  B.Get(aXmin, aYmin, aZmin, aXmax, aYmax, aZmax);
-
-  Standard_Real dx = aXmax - aXmin, dy = aYmax - aYmin, dz = aZmax - aZmin;
-  Standard_Real aDeflection = Max(Max(dx, dy), dz) * aDeviationCoefficient * 4;
-  Standard_Real aHLRAngle = 0.349066;
-
-  // build triangulation
-  BRepMesh_IncrementalMesh Inc (theShape, aDeflection, Standard_False, aHLRAngle);
-
-  // check triangulation
-  bool isTriangulation = true;
-
-  TopExp_Explorer exp (theShape, TopAbs_FACE);
-  if (exp.More())
-  {
-    TopLoc_Location aTopLoc;
-    Handle(Poly_Triangulation) aTRF;
-    aTRF = BRep_Tool::Triangulation(TopoDS::Face(exp.Current()), aTopLoc);
-    if (aTRF.IsNull()) {
-      isTriangulation = false;
-    }
-  }
-  else // no faces, try edges
-  {
-    TopExp_Explorer expe (theShape, TopAbs_EDGE);
-    if (!expe.More()) {
-      isTriangulation = false;
-    }
-    else {
-      TopLoc_Location aLoc;
-      Handle(Poly_Polygon3D) aPE = BRep_Tool::Polygon3D(TopoDS::Edge(expe.Current()), aLoc);
-      if (aPE.IsNull()) {
-        isTriangulation = false;
-      }
-    }
-  }
-
-  return isTriangulation;
-}
-
-//
-// myErrorStatus :
-//
-// 10 -mySurface=NULL
-// 11 -myShape=NULL
-// 12 -unallowed type of sub-shapes
-// 13 -unallowed state
-// 20 -can not build the face
-// 30 -wrong args are used for DSFiller
-// 31 -DSFiller failed
-// 32 -builder ShapeSolid failed
-// 33 -can not find original shape
-//
-// myWarningStatus
-//
-// 10 - sub-shapes of type myShapeType can not be fond in myShape
diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.hxx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.hxx
deleted file mode 100644 (file)
index cde1a3d..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-
-// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
-//
-// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-// 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
-//
-
-// File:        GEOMAlgo_FinderShapeOn.hxx
-// Created:     Tue Jan 11 14:44:31 2005
-// Author:      Peter KURNEV
-
-#ifndef _GEOMAlgo_FinderShapeOn_HeaderFile
-#define _GEOMAlgo_FinderShapeOn_HeaderFile
-
-#include <Standard.hxx>
-#include <Standard_Macro.hxx>
-#include <Standard_Boolean.hxx>
-
-#include <Geom_Surface.hxx>
-
-#include <TopAbs_ShapeEnum.hxx>
-
-#include <TopoDS_Shape.hxx>
-
-#include <TopTools_ListOfShape.hxx>
-#include <TopTools_DataMapOfShapeShape.hxx>
-
-
-#include <GEOMAlgo_State.hxx>
-#include <GEOMAlgo_ShapeAlgo.hxx>
-#include <GEOMAlgo_IndexedDataMapOfShapeState.hxx>
-
-//=======================================================================
-//function : GEOMAlgo_FinderShapeOn
-//purpose  :
-//=======================================================================
-class GEOMAlgo_FinderShapeOn  : public GEOMAlgo_ShapeAlgo
-{
- public:
-  Standard_EXPORT
-    GEOMAlgo_FinderShapeOn();
-
-  Standard_EXPORT
-    virtual ~GEOMAlgo_FinderShapeOn();
-
-  Standard_EXPORT
-    virtual  void Perform() ;
-
-  Standard_EXPORT
-    void SetSurface(const Handle(Geom_Surface)& aS) ;
-
-  Standard_EXPORT
-    void SetShapeType(const TopAbs_ShapeEnum aST) ;
-
-  Standard_EXPORT
-    void SetState(const GEOMAlgo_State aSF) ;
-
-  Standard_EXPORT
-    const Handle(Geom_Surface)& Surface() const;
-
-  Standard_EXPORT
-    TopAbs_ShapeEnum ShapeType() const;
-
-  Standard_EXPORT
-    GEOMAlgo_State State() const;
-
-  Standard_EXPORT
-    const TopTools_ListOfShape& Shapes() const;
-
-  Standard_EXPORT
-    static  void CopySource(const TopoDS_Shape& aS,
-                            TopTools_DataMapOfShapeShape& aImages,
-                            TopTools_DataMapOfShapeShape& aOriginals,
-                            TopoDS_Shape& aSC) ;
-
-  Standard_EXPORT
-    static  Standard_Boolean BuildTriangulation(const TopoDS_Shape& aS) ;
-
-protected:
-  Standard_EXPORT
-    virtual  void CheckData() ;
-
-  Standard_EXPORT
-    void MakeArgument1() ;
-
-  Standard_EXPORT
-    void MakeArgument2() ;
-
-  Standard_EXPORT
-    void Find() ;
-
-  Standard_EXPORT
-    void Find(const TopoDS_Shape& aS) ;
-
-  Standard_EXPORT
-    void FindVertices() ;
-
-
-  Handle(Geom_Surface) mySurface;
-  TopAbs_ShapeEnum myShapeType;
-  GEOMAlgo_State myState;
-  TopoDS_Shape myArg1;
-  TopoDS_Shape myArg2;
-  TopTools_ListOfShape myLS;
-  TopTools_DataMapOfShapeShape myImages;
-  GEOMAlgo_IndexedDataMapOfShapeState myMSS;
-  Standard_Boolean myIsAnalytic;
-};
-#endif
diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cxx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cxx
deleted file mode 100644 (file)
index 64d5024..0000000
+++ /dev/null
@@ -1,787 +0,0 @@
-// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
-//
-// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-// 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
-//
-
-// File:        GEOMAlgo_FinderShapeOn1.cxx
-// Created:     Fri Mar  4 10:31:06 2005
-// Author:      Peter KURNEV
-
-#include <GEOMAlgo_FinderShapeOn1.hxx>
-
-#include <math.h>
-
-#include <Precision.hxx>
-#include <TColStd_Array1OfInteger.hxx>
-#include <TColStd_MapOfInteger.hxx>
-
-#include <gp_Trsf.hxx>
-#include <gp_Cylinder.hxx>
-#include <gp_Pnt.hxx>
-
-#include <TColgp_Array1OfPnt.hxx>
-
-#include <Poly_Array1OfTriangle.hxx>
-#include <Poly_Triangle.hxx>
-#include <Poly_PolygonOnTriangulation.hxx>
-#include <Poly_Triangulation.hxx>
-#include <Poly_Polygon3D.hxx>
-
-#include <Geom_Curve.hxx>
-#include <Geom_Surface.hxx>
-#include <GeomAdaptor_Surface.hxx>
-#include <GeomAbs_SurfaceType.hxx>
-#include <GeomAdaptor_Curve.hxx>
-#include <GeomAbs_CurveType.hxx>
-
-#include <TopAbs_State.hxx>
-
-#include <TopLoc_Location.hxx>
-#include <TopoDS.hxx>
-#include <TopoDS_Shape.hxx>
-#include <TopoDS_Vertex.hxx>
-#include <TopoDS_Face.hxx>
-#include <TopoDS_Edge.hxx>
-
-#include <TopExp.hxx>
-#include <TopExp_Explorer.hxx>
-
-#include <TopTools_IndexedMapOfShape.hxx>
-
-#include <BRep_Tool.hxx>
-#include <BRepLib_MakeEdge.hxx>
-
-#include <GEOMAlgo_ListIteratorOfListOfPnt.hxx>
-#include <GEOMAlgo_SurfaceTools.hxx>
-#include <GEOMAlgo_StateCollector.hxx>
-#include <GEOMAlgo_AlgoTools.hxx>
-#include <GEOMAlgo_PassKey.hxx>
-#include <GEOMAlgo_DataMapOfPassKeyInteger.hxx>
-#include <GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger.hxx>
-
-
-//=======================================================================
-//function : GEOMAlgo_FinderShapeOn1
-//purpose  :
-//=======================================================================
-GEOMAlgo_FinderShapeOn1::GEOMAlgo_FinderShapeOn1()
-:
-  GEOMAlgo_ShapeAlgo()
-{
-  myTolerance=0.0001;
-  myShapeType=TopAbs_VERTEX;
-  myState=GEOMAlgo_ST_UNKNOWN;
-  myNbPntsMin=3;
-  myNbPntsMax=0;
-}
-//=======================================================================
-//function : ~
-//purpose  :
-//=======================================================================
-GEOMAlgo_FinderShapeOn1::~GEOMAlgo_FinderShapeOn1()
-{
-}
-//=======================================================================
-//function : SetSurface
-//purpose  :
-//=======================================================================
-void GEOMAlgo_FinderShapeOn1::SetSurface(const Handle(Geom_Surface)& aS)
-{
-  mySurface=aS;
-}
-//=======================================================================
-//function : Surface
-//purpose  :
-//=======================================================================
-const Handle(Geom_Surface)& GEOMAlgo_FinderShapeOn1::Surface() const
-{
-  return mySurface;
-}
-//=======================================================================
-//function : SetShapeType
-//purpose  :
-//=======================================================================
-void GEOMAlgo_FinderShapeOn1::SetShapeType(const TopAbs_ShapeEnum aType)
-{
-  myShapeType=aType;
-}
-//=======================================================================
-//function : ShapeType
-//purpose  :
-//=======================================================================
-TopAbs_ShapeEnum GEOMAlgo_FinderShapeOn1::ShapeType()const
-{
-  return myShapeType;
-}
-//=======================================================================
-//function : SetState
-//purpose  :
-//=======================================================================
-void GEOMAlgo_FinderShapeOn1::SetState(const GEOMAlgo_State aState)
-{
-  myState=aState;
-}
-//=======================================================================
-//function : State
-//purpose  :
-//=======================================================================
-GEOMAlgo_State GEOMAlgo_FinderShapeOn1::State() const
-{
-  return myState;
-}
-//=======================================================================
-//function : SetNbPntsMin
-//purpose  :
-//=======================================================================
-void GEOMAlgo_FinderShapeOn1::SetNbPntsMin(const Standard_Integer aNb)
-{
-  myNbPntsMin=aNb;
-}
-//=======================================================================
-//function : NbPntsMin
-//purpose  :
-//=======================================================================
-Standard_Integer GEOMAlgo_FinderShapeOn1::NbPntsMin()const
-{
-  return myNbPntsMin;
-}
-//=======================================================================
-//function : SetNbPntsMax
-//purpose  :
-//=======================================================================
-void GEOMAlgo_FinderShapeOn1::SetNbPntsMax(const Standard_Integer aNb)
-{
-  myNbPntsMax=aNb;
-}
-//=======================================================================
-//function : NbPntsMax
-//purpose  :
-//=======================================================================
-Standard_Integer GEOMAlgo_FinderShapeOn1::NbPntsMax()const
-{
-  return myNbPntsMax;
-}
-//=======================================================================
-// function: MSS
-// purpose:
-//=======================================================================
-const GEOMAlgo_IndexedDataMapOfShapeState& GEOMAlgo_FinderShapeOn1::MSS() const
-{
-  return myMSS;
-}
-//=======================================================================
-// function: Shapes
-// purpose:
-//=======================================================================
-const TopTools_ListOfShape& GEOMAlgo_FinderShapeOn1::Shapes() const
-{
-  Standard_Integer i, aNb;
-  TopTools_ListOfShape* pL;
-  //
-  pL=(TopTools_ListOfShape*) &myLS;
-  pL->Clear();
-  //
-  aNb=myMSS.Extent();
-  for (i=1; i<=aNb; ++i) {
-    const TopoDS_Shape& aS=myMSS.FindKey(i);
-    if (aS.ShapeType()==myShapeType) {
-      pL->Append(aS);
-    }
-  }
-  return myLS;
-}
-//=======================================================================
-//function : Perform
-//purpose  :
-//=======================================================================
-void GEOMAlgo_FinderShapeOn1::Perform()
-{
-  myErrorStatus=0;
-  myWarningStatus=0;
-  myLS.Clear();
-  myMSS.Clear();
-  //
-  CheckData();
-  if(myErrorStatus) {
-    return;
-  }
-  //
-  // Initialize the context
-  GEOMAlgo_ShapeAlgo::Perform();
-  //
-  // 1
-  ProcessVertices();
-  if(myErrorStatus) {
-    return;
-  }
-  if (myShapeType==TopAbs_VERTEX) {
-    return;
-  }
-  //
-  // 2
-  ProcessEdges();
-  if(myErrorStatus) {
-    return;
-  }
-  if (myShapeType==TopAbs_EDGE) {
-    return;
-  }
-  //
-  // 3
-  ProcessFaces();
-  if(myErrorStatus) {
-    return;
-  }
-  if (myShapeType==TopAbs_FACE) {
-    return;
-  }
-  //
-  // 4
-  ProcessSolids();
-  //
-}
-//=======================================================================
-//function : ProcessVertices
-//purpose  :
-//=======================================================================
-void GEOMAlgo_FinderShapeOn1::ProcessVertices()
-{
-  myErrorStatus=0;
-  //
-  Standard_Boolean bIsConformState;
-  Standard_Integer i, aNb;
-  gp_Pnt aP;
-  TopTools_IndexedMapOfShape aM;
-  TopAbs_State aSt;
-  //
-  TopExp::MapShapes(myShape, TopAbs_VERTEX, aM);
-  aNb=aM.Extent();
-  for (i=1; i<=aNb; ++i) {
-    const TopoDS_Vertex& aV=TopoDS::Vertex(aM(i));
-    aP=BRep_Tool::Pnt(aV);
-    //
-    aSt = GetPointState( aP );
-    bIsConformState=GEOMAlgo_SurfaceTools::IsConformState(aSt, myState);
-    //
-    if (myShapeType==TopAbs_VERTEX){
-      if (bIsConformState) {
-        myMSS.Add(aV, aSt);
-      }
-    }
-    else if (bIsConformState || aSt==TopAbs_ON) {
-      myMSS.Add(aV, aSt);
-    }
-  }
-}
-//=======================================================================
-//function : ProcessEdges
-//purpose  :
-//=======================================================================
-void GEOMAlgo_FinderShapeOn1::ProcessEdges()
-{
-  myErrorStatus=0;
-  //
-  Standard_Boolean bIsConformState, bIsToBreak;
-  Standard_Integer i, aNb, iCnt;
-  TopAbs_State aSt;
-  TopTools_IndexedMapOfShape aM;
-  TopExp_Explorer aExp;
-  GEOMAlgo_ListIteratorOfListOfPnt aIt;
-  GeomAbs_SurfaceType aType1;
-  //
-  aType1=myGAS.GetType();
-  //
-  TopExp::MapShapes(myShape, TopAbs_EDGE, aM);
-  //
-  bIsConformState=Standard_False;
-  //
-  aNb=aM.Extent();
-  for (i=1; i<=aNb; ++i) {
-    GEOMAlgo_ListOfPnt aLP;
-    GEOMAlgo_StateCollector aSC;
-    //
-    const TopoDS_Edge& aE=TopoDS::Edge(aM(i));
-    //
-    aExp.Init(aE, TopAbs_VERTEX);
-    for (; aExp.More(); aExp.Next()) {
-      const TopoDS_Shape& aV=aExp.Current();
-      //
-      bIsConformState=myMSS.Contains(aV);
-      if (!bIsConformState) {
-        break;// vertex has non-conformed state
-      }
-      else {
-        aSt=myMSS.FindFromKey(aV);
-        aSC.AppendState(aSt);
-      }
-    }
-    //
-    if (!bIsConformState) {
-      continue; // vertex has non-conformed state,skip edge
-    }
-    //
-    if (BRep_Tool::Degenerated(aE)) {
-      myMSS.Add(aE, aSt);
-      continue;
-    }
-    //
-    if (myState==GEOMAlgo_ST_ON && aType1==GeomAbs_Sphere) {
-      Standard_Real aT1, aT2;
-      Handle(Geom_Curve) aC;
-      GeomAdaptor_Curve aGAC;
-      GeomAbs_CurveType aType2;
-      //
-      aC=BRep_Tool::Curve(aE, aT1, aT2);
-      aGAC.Load(aC);
-      //
-      aType2=aGAC.GetType();
-      if (aType2==GeomAbs_Line) {
-        continue;
-      }
-    }
-    //
-    InnerPoints(aE, aLP);
-    if (myErrorStatus) {
-      return;
-    }
-    //
-    bIsConformState=Standard_True;
-    aIt.Initialize(aLP);
-    for (iCnt=0; aIt.More(); aIt.Next(), ++iCnt) {
-      if (myNbPntsMax) {
-        if (iCnt > myNbPntsMax) {
-          break;
-        }
-      }
-      //
-      const gp_Pnt& aP=aIt.Value();
-      aSt = GetPointState( aP );
-      bIsToBreak=aSC.AppendState(aSt);
-      if (bIsToBreak) {
-        break;
-      }
-    }
-    //
-    aSt=aSC.State();
-    //
-    bIsConformState=GEOMAlgo_SurfaceTools::IsConformState(aSt, myState);
-    if (myShapeType==TopAbs_EDGE) {
-      if (bIsConformState) {
-        myMSS.Add(aE, aSt);
-      }
-    }
-    else if (bIsConformState || aSt==TopAbs_ON) {
-      myMSS.Add(aE, aSt);
-    }
-  } //  for (i=1; i<=aNb; ++i) next edge
-}
-//=======================================================================
-//function : ProcessFaces
-//purpose  :
-//=======================================================================
-void GEOMAlgo_FinderShapeOn1::ProcessFaces()
-{
-  myErrorStatus=0;
-  //
-  Standard_Boolean bIsConformState, bIsToBreak;
-  Standard_Integer i, aNbF, iCnt;
-  TopAbs_State aSt;
-  TopTools_IndexedMapOfShape aM;
-  TopExp_Explorer aExp;
-  GEOMAlgo_ListIteratorOfListOfPnt aIt;
-  GeomAbs_SurfaceType aType1, aType2;
-  //
-  aType1=myGAS.GetType();
-  //
-  TopExp::MapShapes(myShape, TopAbs_FACE, aM);
-  aNbF=aM.Extent();
-  for (i=1; i<=aNbF; ++i) {
-    GEOMAlgo_StateCollector aSC;
-    GEOMAlgo_ListOfPnt aLP;
-    //
-    const TopoDS_Face& aF=TopoDS::Face(aM(i));
-    //
-    if (myState==GEOMAlgo_ST_ON) {
-      Handle(Geom_Surface) aS;
-      GeomAdaptor_Surface aGAS;
-      //
-      aS=BRep_Tool::Surface(aF);
-      aGAS.Load(aS);
-      aType2=aGAS.GetType();
-      if (aType2!=aType1) {
-        continue;
-      }
-    }
-    //
-    bIsConformState=Standard_False;
-    //
-    aExp.Init(aF, TopAbs_EDGE);
-    for (; aExp.More(); aExp.Next()) {
-      const TopoDS_Shape& aE=aExp.Current();
-      bIsConformState=myMSS.Contains(aE);
-      if (!bIsConformState) {
-        break;// edge has non-conformed state
-      }
-      else {
-        aSt=myMSS.FindFromKey(aE);
-        aSC.AppendState(aSt);
-      }
-    }
-    //
-    if (!bIsConformState) {
-      continue; // edge has non-conformed state,skip face
-    }
-    //
-    InnerPoints(aF, aLP);
-    if (myErrorStatus) {
-      return;
-    }
-    //
-    bIsConformState=Standard_True;
-    aIt.Initialize(aLP);
-    for (iCnt=0; aIt.More(); aIt.Next(), ++iCnt) {
-      if (myNbPntsMax) {
-        if (iCnt > myNbPntsMax) {
-          break;
-        }
-      }
-      //
-      const gp_Pnt& aP=aIt.Value();
-      aSt = GetPointState( aP );
-      bIsToBreak=aSC.AppendState(aSt);
-      if (bIsToBreak) {
-        break;
-      }
-    }
-    //
-    aSt=aSC.State();
-    //
-    bIsConformState=GEOMAlgo_SurfaceTools::IsConformState(aSt, myState);
-    if (myShapeType==TopAbs_FACE) {
-      if (bIsConformState) {
-        myMSS.Add(aF, aSt);
-      }
-    }
-    else if (bIsConformState || aSt==TopAbs_ON) {
-      myMSS.Add(aF, aSt);
-    }
-  }//  for (i=1; i<=aNb; ++i) next face
-}
-//=======================================================================
-//function : ProcessSolids
-//purpose  :
-//=======================================================================
-void GEOMAlgo_FinderShapeOn1::ProcessSolids()
-{
-  myErrorStatus=0;
-  //
-  Standard_Boolean bIsConformState;
-  Standard_Integer i, aNbS, j, aNbF;
-  TopTools_IndexedMapOfShape aM, aMF;
-  TopAbs_State aSt;
-  //
-  TopExp::MapShapes(myShape, TopAbs_SOLID, aM);
-  aNbS=aM.Extent();
-  for (i=1; i<=aNbS; ++i) {
-    GEOMAlgo_StateCollector aSC;
-    //
-    const TopoDS_Shape& aSd=aM(i);
-    aMF.Clear();
-    TopExp::MapShapes(aSd, TopAbs_FACE, aMF);
-    //
-    bIsConformState=Standard_False;
-    //
-    aNbF=aMF.Extent();
-    for (j=1; j<=aNbF; ++j) {
-      const TopoDS_Shape& aF=aMF(j);
-      bIsConformState=myMSS.Contains(aF);
-      if (!bIsConformState) {
-        break;// face has non-conformed state
-      }
-      else {
-        aSt=myMSS.FindFromKey(aF);
-        aSC.AppendState(aSt);
-      }
-    }
-    //
-    if (!bIsConformState) {
-      continue; // face has non-conformed state,skip solid
-    }
-    //
-    aSt=aSC.State();
-    //
-    bIsConformState=GEOMAlgo_SurfaceTools::IsConformState(aSt, myState);
-    if (bIsConformState) {
-      myMSS.Add(aSd, aSt);
-    }
-  }
-}
-//
-//=======================================================================
-//function : InnerPoints
-//purpose  :
-//=======================================================================
-void GEOMAlgo_FinderShapeOn1::InnerPoints(const TopoDS_Face& aF,
-                                          GEOMAlgo_ListOfPnt& aLP)
-{
-  myErrorStatus=0;
-  //
-  Standard_Integer j, j1, j2, k, n[4], aNbLinks, aNx, aNb, iCnt;//, aNbMax, *pIds;
-  TopLoc_Location aLoc;
-  Handle(Poly_Triangulation) aTRF;
-  TColStd_MapOfInteger aMBN;
-  GEOMAlgo_DataMapOfPassKeyInteger aMPKI;
-  GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger aIt;
-  gp_Pnt aP, aP1, aP2;
-  //
-  aLP.Clear();
-  //
-  aTRF=BRep_Tool::Triangulation(aF, aLoc);
-  if (aTRF.IsNull()) {
-    if (!GEOMAlgo_AlgoTools::BuildTriangulation(aF)) {
-      myWarningStatus=20; // no triangulation found
-      return;
-    }
-    aTRF=BRep_Tool::Triangulation(aF, aLoc);
-  }
-  //
-  const gp_Trsf& aTrsf=aLoc.Transformation();
-  const Poly_Array1OfTriangle& aTrs=aTRF->Triangles();
-  const TColgp_Array1OfPnt& aNodes=aTRF->Nodes();
-  //
-  // map link/nbtriangles
-  j1=aTrs.Lower();
-  j2=aTrs.Upper();
-  for (j=j1; j<=j2; ++j) {
-    const Poly_Triangle& aTr=aTrs(j);
-    aTr.Get(n[0], n[1], n[2]);
-    n[3]=n[0];
-    for (k=0; k<3; ++k) {
-      GEOMAlgo_PassKey aPK;
-      //
-      aPK.SetIds(n[k], n[k+1]);
-      if (aMPKI.IsBound(aPK)) {
-        Standard_Integer& iCntX=aMPKI.ChangeFind(aPK);
-        ++iCntX;
-      }
-      else {
-        aMPKI.Bind(aPK, 1);
-      }
-    }
-  }
-  //
-  // boundary nodes aMBN
-  aNbLinks=aMPKI.Extent();
-  aIt.Initialize(aMPKI);
-  for (; aIt.More(); aIt.Next()) {
-    iCnt=aIt.Value();
-    if (iCnt==1) {
-      const GEOMAlgo_PassKey& aPK=aIt.Key();
-      //
-      aNx=(Standard_Integer)aPK.Id(1);
-      aMBN.Add(aNx);
-      aNx=(Standard_Integer)aPK.Id(2);
-      aMBN.Add(aNx);
-    }
-  }
-  //
-  // inner nodes=all_nodes - boundary_nodes
-  j1=aNodes.Lower();
-  j2=aNodes.Upper();
-  for (j=j1; j<=j2; ++j) {
-    if (!aMBN.Contains(j)) {
-      aP=aNodes(j).Transformed(aTrsf);
-      aLP.Append(aP);
-    }
-  }
-  //
-  aNb=aLP.Extent();
-  //
-  if (!aNb && myNbPntsMin) {
-    // try to fill it yourself
-    Standard_Boolean bIsDone;
-    Standard_Integer aN1, aN2;
-    Handle(Geom_Surface) aS;
-    GeomAdaptor_Surface aGAS;
-    GeomAbs_SurfaceType aType;
-    //
-    aS=BRep_Tool::Surface(aF);
-    aGAS.Load(aS);
-    aType=aGAS.GetType();
-    if (aType==GeomAbs_Plane || aType==GeomAbs_Cylinder) {
-      // inner links
-      aNbLinks=aMPKI.Extent();
-      aIt.Initialize(aMPKI);
-      for (; aIt.More(); aIt.Next()) {
-        iCnt=aIt.Value();
-        if (iCnt>1) {
-          // take the first having occurred inner link
-          // and discretize it
-          const GEOMAlgo_PassKey& aPK=aIt.Key();
-          //
-          aN1=(Standard_Integer)aPK.Id(1);
-          aN2=(Standard_Integer)aPK.Id(2);
-          //
-          aP1=aNodes(aN1).Transformed(aTrsf);
-          aP2=aNodes(aN2).Transformed(aTrsf);
-          //
-          if (aType==GeomAbs_Cylinder) {
-            gp_Cylinder aCyl;
-            //
-            aCyl=aGAS.Cylinder();
-            if (!GEOMAlgo_SurfaceTools::IsCoaxial(aP1, aP2, aCyl, myTolerance)) {
-              continue;
-            }
-          }
-          //
-          BRepLib_MakeEdge aBME(aP1, aP2);
-          bIsDone=aBME.IsDone();
-          if (!bIsDone) {
-            myErrorStatus=30; //can not obtain the line from the link
-            return;
-          }
-          //
-          const TopoDS_Shape& aSx=aBME.Shape();
-          const TopoDS_Edge& aE=TopoDS::Edge(aSx);
-          //
-          InnerPoints(aE, myNbPntsMin, aLP);
-          break;
-        }// if (iCnt>1)
-      }// for (; aIt.More(); aIt.Next())
-    }// if (aType==GeomAbs_Plane || aType==GeomAbs_Cylinder)
-  }// if (!aNb && myNbPntsMin) {
-}
-//=======================================================================
-//function : InnerPoints
-//purpose  :
-//=======================================================================
-void GEOMAlgo_FinderShapeOn1::InnerPoints(const TopoDS_Edge& aE,
-                                          GEOMAlgo_ListOfPnt& aLP)
-{
-  Standard_Integer aNbPntsMin;
-  //
-  myErrorStatus=0;
-  aNbPntsMin=21;
-  //
-  aLP.Clear();
-  InnerPoints(aE, aNbPntsMin, aLP);
-}
-//=======================================================================
-//function : InnerPoints
-//purpose  :
-//=======================================================================
-void GEOMAlgo_FinderShapeOn1::InnerPoints(const TopoDS_Edge& aE,
-                                          const Standard_Integer aNbPntsMin,
-                                          GEOMAlgo_ListOfPnt& aLP)
-{
-  Standard_Boolean bInf1, bInf2;
-  Standard_Integer j, aNbT;
-  Standard_Real dT, aT, aT1, aT2;
-  gp_Pnt aP;
-  Handle(Geom_Curve) aC3D;
-  //
-  aC3D=BRep_Tool::Curve(aE, aT1, aT2);
-  if (aC3D.IsNull()) {
-    return;
-  }
-  //
-  bInf1=Precision::IsNegativeInfinite(aT1);
-  bInf2=Precision::IsPositiveInfinite(aT2);
-  if (bInf1 || bInf2) {
-    return;
-  }
-  //
-  aNbT=aNbPntsMin+1;
-  dT=(aT2-aT1)/aNbT;
-  for (j=1; j<aNbT; ++j) {
-    aT=aT1+j*dT;
-    aC3D->D0(aT, aP);
-    aLP.Append(aP);
-  }
-}
-
-//=======================================================================
-//function : CheckData
-//purpose  :
-//=======================================================================
-void GEOMAlgo_FinderShapeOn1::CheckData()
-{
-  myErrorStatus=0;
-  //
-  if(mySurface.IsNull()) {
-    myErrorStatus=10; // mySurface=NULL
-    return;
-  }
-  //
-  if (myShape.IsNull()) {
-    myErrorStatus=11; // myShape=NULL
-    return;
-  }
-  //
-  if (!(myShapeType==TopAbs_VERTEX ||
-        myShapeType==TopAbs_EDGE ||
-        myShapeType==TopAbs_FACE ||
-        myShapeType==TopAbs_SOLID)) {
-    myErrorStatus=12; // unallowed subshape type
-    return;
-  }
-  //
-  if (myState==GEOMAlgo_ST_UNKNOWN ||
-      myState==GEOMAlgo_ST_INOUT) {
-    myErrorStatus=13; // unallowed state type
-    return;
-  }
-  //
-  GeomAbs_SurfaceType aType;
-  //
-  myGAS.Load(mySurface);
-  aType=myGAS.GetType();
-  if (!(aType==GeomAbs_Plane ||
-        aType==GeomAbs_Cylinder ||
-        aType==GeomAbs_Sphere)) {
-    myErrorStatus=14; // unallowed surface type
-  }
-}
-
-//=======================================================================
-//function : GetPointState
-//purpose  :
-//=======================================================================
-
-TopAbs_State GEOMAlgo_FinderShapeOn1::GetPointState(const gp_Pnt& aP)
-{
-  TopAbs_State aSt;
-  GEOMAlgo_SurfaceTools::GetState(aP, myGAS, myTolerance, aSt);
-  return aSt;
-}
-
-
-//
-// myErrorStatus :
-//
-// 10 -mySurface=NULL
-// 11 -myShape=NULL
-// 12 -unallowed type of subshapes
-// 13 -unallowed state
-// 14 -unallowed surface type
-// 15 -unallowed surface type
-// 20- no triangulation found
-// 30- can not obtain the line from the link
-
diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.hxx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.hxx
deleted file mode 100644 (file)
index 5f67b10..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
-//
-// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-// 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
-//
-
-// File:        GEOMAlgo_FinderShapeOn1.hxx
-// Created:     Fri Mar  4 10:31:06 2005
-// Author:      Peter KURNEV
-
-#ifndef _GEOMAlgo_FinderShapeOn1_HeaderFile
-#define _GEOMAlgo_FinderShapeOn1_HeaderFile
-
-#include <GEOMAlgo_State.hxx>
-#include <GEOMAlgo_IndexedDataMapOfShapeState.hxx>
-#include <GEOMAlgo_ShapeAlgo.hxx>
-#include <GEOMAlgo_ListOfPnt.hxx>
-
-#include <TopAbs_State.hxx>
-#include <TopAbs_ShapeEnum.hxx>
-#include <TopoDS_Face.hxx>
-#include <TopoDS_Edge.hxx>
-#include <TopTools_ListOfShape.hxx>
-
-#include <Geom_Surface.hxx>
-#include <GeomAdaptor_Surface.hxx>
-
-#include <gp_Pnt.hxx>
-
-#include <Standard.hxx>
-#include <Standard_Macro.hxx>
-#include <Standard_Integer.hxx>
-
-//=======================================================================
-//function : GEOMAlgo_FinderShapeOn1
-//purpose  :
-//=======================================================================
-class GEOMAlgo_FinderShapeOn1  : public GEOMAlgo_ShapeAlgo
-{
- public:
-  Standard_EXPORT
-    GEOMAlgo_FinderShapeOn1();
-
-  Standard_EXPORT
-    virtual ~GEOMAlgo_FinderShapeOn1();
-
-  Standard_EXPORT
-    void SetSurface(const Handle(Geom_Surface)& aS) ;
-
-  Standard_EXPORT
-    void SetShapeType(const TopAbs_ShapeEnum aST) ;
-
-  Standard_EXPORT
-    void SetState(const GEOMAlgo_State aSF) ;
-
-  Standard_EXPORT
-    void SetNbPntsMin(const Standard_Integer aNb) ;
-
-  Standard_EXPORT
-    Standard_Integer NbPntsMin() const;
-
-  Standard_EXPORT
-    void SetNbPntsMax(const Standard_Integer aNb) ;
-
-  Standard_EXPORT
-    Standard_Integer NbPntsMax() const;
-
-  Standard_EXPORT
-    const Handle(Geom_Surface)& Surface() const;
-
-  Standard_EXPORT
-    TopAbs_ShapeEnum ShapeType() const;
-
-  Standard_EXPORT
-    GEOMAlgo_State State() const;
-
-  Standard_EXPORT
-    virtual  void Perform() ;
-
-  Standard_EXPORT
-    const TopTools_ListOfShape& Shapes() const;
-
-  Standard_EXPORT
-    const GEOMAlgo_IndexedDataMapOfShapeState& MSS() const;
-
- protected:
-  Standard_EXPORT
-    virtual  void CheckData() ;
-
-  Standard_EXPORT
-    void ProcessVertices() ;
-
-  Standard_EXPORT
-    void ProcessEdges() ;
-
-  Standard_EXPORT
-    void ProcessFaces() ;
-
-  Standard_EXPORT
-    void ProcessSolids() ;
-
-  Standard_EXPORT
-    void InnerPoints(const TopoDS_Face& aF,
-                     GEOMAlgo_ListOfPnt& aLP) ;
-
-  Standard_EXPORT
-    void InnerPoints(const TopoDS_Edge& aE,
-                     GEOMAlgo_ListOfPnt& aLP) ;
-
-  Standard_EXPORT
-    void InnerPoints(const TopoDS_Edge& aE,
-                     const Standard_Integer aNbPnts,
-                     GEOMAlgo_ListOfPnt& aLP) ;
-
-  Standard_EXPORT
-    virtual  TopAbs_State GetPointState(const gp_Pnt& aP) ;
-
-
-  Handle(Geom_Surface) mySurface;
-  TopAbs_ShapeEnum myShapeType;
-  GEOMAlgo_State myState;
-  Standard_Integer myNbPntsMin;
-  Standard_Integer myNbPntsMax;
-  GeomAdaptor_Surface myGAS;
-  TopTools_ListOfShape myLS;
-  GEOMAlgo_IndexedDataMapOfShapeState myMSS;
-};
-
-#endif
index 5fd59d517e174d8bab26644947b930b9fee2372b..34509300b603865b87b9ecfdb93be0e51a797463 100644 (file)
@@ -33,6 +33,8 @@
 #include <GEOMAlgo_StateCollector.hxx>
 #include <GEOMAlgo_SurfaceTools.hxx>
 
+#include <GEOMUtils.hxx>
+
 #include <Bnd_Box.hxx>
 #include <BRep_Tool.hxx>
 #include <BRepBndLib.hxx>
@@ -606,14 +608,13 @@ void GEOMAlgo_FinderShapeOn2::InnerPoints(const TopoDS_Face& aF,
   //
   aLP.Clear();
   //
-  aTRF=BRep_Tool::Triangulation(aF, aLoc);
-  if (aTRF.IsNull()) {
-    if (!BuildTriangulation(aF)) {
-      myWarningStatus=20; // no triangulation found
-      return;
-    }
-    aTRF=BRep_Tool::Triangulation(aF, aLoc);
+  if (!GEOMUtils::MeshShape(aF, /*deflection*/0.001, /*forced*/false,
+                            /*angle deflection*/0.349066, /*isRelative*/true,
+                            /*doPostCheck*/true)) {
+    myWarningStatus=20; // no triangulation found
+    return;
   }
+  aTRF=BRep_Tool::Triangulation(aF, aLoc);
   //
   const gp_Trsf& aTrsf=aLoc.Transformation();
   //
@@ -745,16 +746,15 @@ void GEOMAlgo_FinderShapeOn2::InnerPoints(const TopoDS_Edge& aE,
   gp_Pnt aP;
   //
   aLP.Clear();
+  if (!GEOMUtils::MeshShape(aE, /*deflection*/0.001, /*forced*/false,
+                            /*angle deflection*/0.349066, /*isRelative*/true,
+                            /*doPostCheck*/true)) {
+    myErrorStatus=20; // no triangulation found
+    return;
+  }
   BRep_Tool::PolygonOnTriangulation(aE, aPTE, aTRE, aLoc);
   if (aTRE.IsNull() || aPTE.IsNull()) {
     Handle(Poly_Polygon3D) aPE = BRep_Tool::Polygon3D(aE, aLoc);
-    if (aPE.IsNull()) {
-      if (!BuildTriangulation(aE)) {
-        myErrorStatus=20; // no triangulation found
-        return;
-      }
-      aPE = BRep_Tool::Polygon3D(aE, aLoc);
-    }
     const gp_Trsf& aTrsf=aLoc.Transformation();
     const TColgp_Array1OfPnt& aNodes=aPE->Nodes();
     //
@@ -819,59 +819,6 @@ void GEOMAlgo_FinderShapeOn2::InnerPoints(const TopoDS_Edge& aE,
   }
 }
 
-//=======================================================================
-//function : BuildTriangulation
-//purpose  :
-//=======================================================================
-Standard_Boolean
-  GEOMAlgo_FinderShapeOn2::BuildTriangulation (const TopoDS_Shape& theShape)
-{
-  // calculate deflection
-  Standard_Real aDeviationCoefficient = 0.001;
-
-  Bnd_Box B;
-  BRepBndLib::Add(theShape, B);
-  Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax;
-  B.Get(aXmin, aYmin, aZmin, aXmax, aYmax, aZmax);
-
-  Standard_Real dx = aXmax - aXmin, dy = aYmax - aYmin, dz = aZmax - aZmin;
-  Standard_Real aDeflection = Max(Max(dx, dy), dz) * aDeviationCoefficient * 4;
-  Standard_Real aHLRAngle = 0.349066;
-
-  // build triangulation
-  BRepMesh_IncrementalMesh Inc (theShape, aDeflection, Standard_False, aHLRAngle);
-
-  // check triangulation
-  bool isTriangulation = true;
-
-  TopExp_Explorer exp (theShape, TopAbs_FACE);
-  if (exp.More())
-  {
-    TopLoc_Location aTopLoc;
-    Handle(Poly_Triangulation) aTRF;
-    aTRF = BRep_Tool::Triangulation(TopoDS::Face(exp.Current()), aTopLoc);
-    if (aTRF.IsNull()) {
-      isTriangulation = false;
-    }
-  }
-  else // no faces, try edges
-  {
-    TopExp_Explorer expe (theShape, TopAbs_EDGE);
-    if (!expe.More()) {
-      isTriangulation = false;
-    }
-    else {
-      TopLoc_Location aLoc;
-      Handle(Poly_Polygon3D) aPE = BRep_Tool::Polygon3D(TopoDS::Edge(expe.Current()), aLoc);
-      if (aPE.IsNull()) {
-        isTriangulation = false;
-      }
-    }
-  }
-
-  return isTriangulation;
-}
-
 //
 // myErrorStatus :
 //
index 8f999f3933f8447ac393496acad3df269c51f1fc..6824e3c593aad415ac7fca6b55e4e7ed872daa06 100644 (file)
@@ -126,9 +126,6 @@ protected:
                      const Standard_Integer aNbPnts,
                      GEOMAlgo_ListOfPnt& aLP) ;
 
-  Standard_EXPORT
-    Standard_Boolean BuildTriangulation(const TopoDS_Shape& aS) ;
-
 
   TopAbs_ShapeEnum myShapeType;
   GEOMAlgo_State myState;
diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOnQuad.cxx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOnQuad.cxx
deleted file mode 100644 (file)
index 908cb47..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
-//
-// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-// 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
-//
-
-// File      : GEOMAlgo_FinderShapeOnQuad.cxx
-// Created   : Mon Oct 17 17:31:45 2005
-// Author    : Edward AGAPOV (eap)
-//
-#include "GEOMAlgo_FinderShapeOnQuad.hxx"
-#include "GEOMAlgo_SurfaceTools.hxx"
-
-#include <gp_Pnt.hxx>
-#include <gp_Vec.hxx>
-#include <Geom_Plane.hxx>
-
-
-GEOMAlgo_FinderShapeOnQuad::GEOMAlgo_FinderShapeOnQuad(const gp_Pnt & theTopLeftPoint,
-                                                       const gp_Pnt & theTopRightPoint,
-                                                       const gp_Pnt & theBottomLeftPoint,
-                                                       const gp_Pnt & theBottomRightPoint)
-{
-  myPoints.resize(6);
-  myPoints[0] = theTopLeftPoint    ;
-  myPoints[1] = theTopRightPoint   ;
-  myPoints[2] = theBottomRightPoint;
-  myPoints[3] = theBottomLeftPoint ;
-  myPoints[4] = myPoints[0];
-  myPoints[5] = myPoints[1];
-
-  // Find plane normal defined by corner points, it will be used to define a plane
-  // for each quadrangle side.
-  myQuadNormal.SetCoord (0,0,0);
-  for ( int i = 1; i <= 4; ++i )
-    myQuadNormal += gp_Vec( myPoints[i], myPoints[i+1] ) ^ gp_Vec( myPoints[i], myPoints[i-1] );
-  //std::cout<<std::endl<<" X Vec : "<<myQuadNormal.X()<<" "<<myQuadNormal.Y()<<" "<<myQuadNormal.Z()<<" "<<endl;
-
-  if ( myQuadNormal.SquareMagnitude() <= DBL_MIN ) {
-    myErrorStatus = 101;
-    return;
-  }
-
-  // detect concave quadrangle sides
-  myConcaveQuad = false;
-  myConcaveSide.resize (4, false);
-  for ( int i = 1; i <= 4; ++i ) {
-    gp_Vec localQN = gp_Vec( myPoints[i], myPoints[i+1] ) ^ gp_Vec( myPoints[i], myPoints[i-1] );
-    if ( myQuadNormal * localQN < 0 )
-      myConcaveSide[i-1] = myConcaveSide[i] = myConcaveQuad = true;
-  }
-
-  // loop on quadrangle sides
-  myPlanes.reserve( 4 );
-  for ( int i = 0; i < 4; ++i )
-  {
-    // point1 -> point2 vector
-    gp_Vec aSideVec( myPoints[ i ], myPoints[ i + 1 ]);
-    //std::cout<<" Y Vec : "<<aSideVec.X()<<" "<<aSideVec.Y()<<" "<<aSideVec.Z()<<" "<<endl;
-
-    // plane normal
-    gp_Vec aSideNorm = aSideVec ^ myQuadNormal;
-    if ( aSideNorm.SquareMagnitude() <= DBL_MIN )
-      continue;
-    //std::cout<<" Z Vec : "<<aSideNorm.X()<<" "<<aSideNorm.Y()<<" "<<aSideNorm.Z()<<" "<<endl;
-
-    // make plane
-    Handle(Geom_Plane) aPlane = new Geom_Plane( myPoints[ i ], aSideNorm );
-    myPlanes.push_back( GeomAdaptor_Surface() );
-    myPlanes.back().Load( aPlane );
-  }
-}
-
-//=======================================================================
-//function : CheckData
-//purpose  :
-//=======================================================================
-
-void GEOMAlgo_FinderShapeOnQuad::CheckData()
-{
-  if ( !myPlanes.empty() )
-    mySurface = myPlanes[0].Surface();
-  GEOMAlgo_FinderShapeOn1::CheckData();
-}
-
-//=======================================================================
-//function : GetPointState
-//purpose  :
-//=======================================================================
-
-TopAbs_State GEOMAlgo_FinderShapeOnQuad::GetPointState(const gp_Pnt& aP)
-{
-  // Return IN if aP has TopAbs_IN with all sides.
-  // In the case of concave quadrangle, return IN if
-  // aP is OUT of only one concave side
-  double nbIn = 0.;
-  for ( size_t i = 0; i < myPlanes.size(); ++i )
-  {
-    TopAbs_State aSt;
-    GEOMAlgo_SurfaceTools::GetState(aP, myPlanes[i], myTolerance, aSt);
-    if ( aSt == TopAbs_IN )
-    {
-      nbIn += myConcaveSide[i] ? 0.5 : 1.0;
-    }
-    else if ( aSt == TopAbs_ON )
-    {
-      // check that aP is between quadrangle corners
-      Handle(Geom_Plane) aSidePlane = Handle(Geom_Plane)::DownCast( myPlanes[i].Surface() );
-      gp_Vec aSideNorm = aSidePlane->Axis().Direction();
-      gp_Vec aSideVec = myQuadNormal ^ aSideNorm;
-      gp_Vec c1p ( myPoints[i], aP );
-      gp_Vec pc2 ( aP, myPoints[i+1] );
-      if ( aSideVec * c1p >= 0. && aSideVec * pc2 >= 0. )
-        return TopAbs_ON;
-      // consider to be IN (???????????)
-      //nbIn += myConcaveSide[i] ? 0.5 : 1.0;
-    }
-  }
-  Standard_Real inThreshold = myPlanes.size(); // usually 4.0
-  if ( myConcaveQuad )
-    inThreshold = 2.5; // 1.0 + 1.0 + 0.5
-
-  if ( nbIn >= inThreshold )
-    return TopAbs_IN;
-
-  return TopAbs_OUT;
-}
-
diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOnQuad.hxx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOnQuad.hxx
deleted file mode 100644 (file)
index 84b6fc0..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
-//
-// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-// 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
-//
-
-// File      : GEOMAlgo_FinderShapeOnQuad.hxx
-// Created   : Mon Oct 17 17:15:59 2005
-// Author    : Edward AGAPOV (eap)
-//
-#ifndef GEOMAlgo_FinderShapeOnQuad_HeaderFile
-#define GEOMAlgo_FinderShapeOnQuad_HeaderFile
-
-#include "GEOMAlgo_FinderShapeOn1.hxx"
-
-#include <gp_Vec.hxx>
-
-#include <vector>
-
-
-class GEOMAlgo_FinderShapeOnQuad: public GEOMAlgo_FinderShapeOn1
-{
-public:
-
-  Standard_EXPORT
-  GEOMAlgo_FinderShapeOnQuad(const gp_Pnt & theTopLeftPoint,
-                             const gp_Pnt & theTopRightPoint,
-                             const gp_Pnt & theBottomLeftPoint,
-                             const gp_Pnt & theBottomRightPoint);
-
-protected:
-
-  virtual  void CheckData() ;
-
-  virtual TopAbs_State GetPointState(const gp_Pnt& aP) ;
-
-private:
-
-  bool                              myConcaveQuad;
-  std::vector<bool>                 myConcaveSide;
-  std::vector<gp_Pnt>               myPoints;
-  std::vector<GeomAdaptor_Surface>  myPlanes;
-  gp_Vec                            myQuadNormal;
-};
-#endif
index c848ff86c53b51fcfe404d62b6d8c07acfa20903..68ad864de4c364eed7ccb98e16feef7b69029f98 100644 (file)
 
 #include <TopoDS_Shape.hxx>
 #include <Standard_Integer.hxx>
+
+#include <Basics_OCCTVersion.hxx>
+
+#if OCC_VERSION_LARGE < 0x07080000
+
 #include <TColStd_MapIntegerHasher.hxx>
 
 #define _NCollection_MapHasher
@@ -39,6 +44,13 @@ typedef NCollection_IndexedDataMap<Standard_Integer, TopoDS_Shape, TColStd_MapIn
 
 #undef _NCollection_MapHasher
 
+#else
+
+#include <NCollection_IndexedDataMap.hxx>
+
+typedef NCollection_IndexedDataMap<Standard_Integer, TopoDS_Shape> GEOMAlgo_IndexedDataMapOfIntegerShape;
+
+#endif // OCC_VERSION_LARGE < 0x07080000
 
 
 #endif
index 9f052c40f280987dc96a69e6d1b105a1c8d24704..2a031c2b062919fcb5ca1ce145a4e33cb8ab1b5e 100644 (file)
@@ -206,6 +206,7 @@ static
   }
   return !bRet;
 }
+#if OCC_VERSION_LARGE < 0x07080000
 //=======================================================================
 //function : HashCode
 //purpose  :
@@ -214,6 +215,7 @@ static
 {
   return ::HashCode(mySum, aUpper);
 }
+#endif
 //=======================================================================
 //function : Dump
 //purpose  :
index 77a74f073f0392fc4ae5f1b5eb1e48056a4b10e5..bb5185689ac5bbbfdf671f5b9f2505e6b28c56bc 100644 (file)
@@ -28,6 +28,8 @@
 #ifndef _GEOMAlgo_PassKey_HeaderFile
 #define _GEOMAlgo_PassKey_HeaderFile
 
+#include <Basics_OCCTVersion.hxx>
+
 #include <Standard.hxx>
 #include <Standard_Macro.hxx>
 #include <Standard_Integer.hxx>
@@ -88,8 +90,19 @@ class GEOMAlgo_PassKey  {
   Standard_EXPORT
     Standard_Boolean IsEqual(const GEOMAlgo_PassKey& aOther) const;
 
+#if OCC_VERSION_LARGE < 0x07080000
   Standard_EXPORT
     Standard_Integer HashCode(const Standard_Integer Upper) const;
+#endif
+
+  Standard_EXPORT
+  bool operator==(const GEOMAlgo_PassKey& theOther) const
+  {
+    return IsEqual(theOther);
+  }
+
+  Standard_EXPORT
+  size_t GetSum() const { return (size_t)mySum; }
 
   Standard_EXPORT
     Standard_Integer Id(const Standard_Integer aIndex) const;
@@ -102,4 +115,16 @@ class GEOMAlgo_PassKey  {
   Standard_Integer mySum;
   TColStd_IndexedMapOfInteger myMap;
 };
+
+namespace std
+{
+  template <>
+  struct hash<GEOMAlgo_PassKey>
+  {
+    size_t operator()(const GEOMAlgo_PassKey& thePK) const noexcept
+    {
+      return thePK.GetSum();
+    }
+  };
+}
 #endif
index 79d55846ebeefbe45cf7419f83a122fae91acdc6..9918596b4ee44331c6778adbe982a92e60852b0a 100644 (file)
@@ -27,6 +27,8 @@
 //
 #include <GEOMAlgo_PassKeyMapHasher.hxx>
 
+#if OCC_VERSION_LARGE < 0x07080000
+
 //=======================================================================
 //function : HashCode
 //purpose  :
 {
   return aPK1.IsEqual(aPK2);
 }
+
+#else
+
+size_t GEOMAlgo_PassKeyMapHasher::operator()(const GEOMAlgo_PassKey& aPKey) const
+{
+  return aPKey.GetSum();
+}
+
+bool GEOMAlgo_PassKeyMapHasher::operator()(const GEOMAlgo_PassKey& aPKey1,
+                                           const GEOMAlgo_PassKey& aPKey2) const
+{
+  return aPKey1.IsEqual(aPKey2);
+}
+
+#endif // OCC_VERSION_LARGE < 0x07080000
index a6ce772afa9233be320fd5bf629b56b2d9e1024a..144d5d14c311650cd023ecbb66e5ebd9008d93be 100644 (file)
 #include <Standard_Boolean.hxx>
 #include <GEOMAlgo_PassKey.hxx>
 
+#include <Basics_OCCTVersion.hxx>
+
 //=======================================================================
 //class : GEOMAlgo_PassKeyMapHasher
 //purpose  :
 //=======================================================================
 class GEOMAlgo_PassKeyMapHasher  {
  public:
+#if OCC_VERSION_LARGE < 0x07080000
   Standard_EXPORT
     static  Standard_Integer HashCode(const GEOMAlgo_PassKey& aPKey,
                                       const Standard_Integer Upper) ;
@@ -47,5 +50,13 @@ class GEOMAlgo_PassKeyMapHasher  {
   Standard_EXPORT
     static  Standard_Boolean IsEqual(const GEOMAlgo_PassKey& aPKey1,
                                      const GEOMAlgo_PassKey& aPKey2) ;
+#else
+  Standard_EXPORT
+  size_t operator()(const GEOMAlgo_PassKey& aPKey) const;
+
+  Standard_EXPORT
+  bool operator()(const GEOMAlgo_PassKey& aPKey1,
+                  const GEOMAlgo_PassKey& aPKey2) const;
+#endif // OCC_VERSION_LARGE < 0x07080000
 };
 #endif
index fa0c73ee7370b87a2a671ec4a12528ec9001eaf2..e4ceeb154231de212fe12cbae9f49f7c509fe350 100644 (file)
@@ -27,6 +27,8 @@
 //
 #include <GEOMAlgo_PassKeyShape.hxx>
 
+#include <Basics_OCCTVersion.hxx>
+
 #include <TopTools_ListOfShape.hxx>
 #include <TopTools_ListIteratorOfListOfShape.hxx>
 
@@ -94,7 +96,11 @@ static
   Clear();
   myNbIds=1;
   myMap.Add(aS1);
+#if OCC_VERSION_LARGE < 0x07080000
   aHC=aS1.HashCode(myUpper);
+#else
+  aHC = std::hash<TopoDS_Shape>{}(aS1);
+#endif
   mySum=NormalizedId(aHC, myNbIds);
 }
 //=======================================================================
@@ -160,7 +166,11 @@ static
   myNbIds=myMap.Extent();
   for(i=1; i<=myNbIds; ++i) {
     const TopoDS_Shape& aS=myMap(i);
+#if OCC_VERSION_LARGE < 0x07080000
     aId=aS.HashCode(myUpper);
+#else
+    aId = std::hash<TopoDS_Shape>{}(aS);
+#endif
     aIdN=NormalizedId(aId, myNbIds);
     mySum+=aIdN;
   }
@@ -195,6 +205,7 @@ static
   }
   return !bRet;
 }
+#if OCC_VERSION_LARGE < 0x07080000
 //=======================================================================
 //function : HashCode
 //purpose  :
@@ -203,6 +214,7 @@ static
 {
   return ::HashCode(mySum, aUpper);
 }
+#endif
 //=======================================================================
 //function : Dump
 //purpose  :
index f846bfbf76a5e9c76f8f903e4c70d66be4817c3c..4ea5803177cae02b81a9992a22e300fadee5287f 100644 (file)
@@ -29,6 +29,8 @@
 #ifndef _GEOMAlgo_PassKeyShape_HeaderFile
 #define _GEOMAlgo_PassKeyShape_HeaderFile
 
+#include <Basics_OCCTVersion.hxx>
+
 #include <Standard.hxx>
 #include <Standard_Macro.hxx>
 #include <Standard_Integer.hxx>
@@ -90,8 +92,19 @@ class GEOMAlgo_PassKeyShape  {
   Standard_EXPORT
     Standard_Boolean IsEqual(const GEOMAlgo_PassKeyShape& aOther) const;
 
+#if OCC_VERSION_LARGE < 0x07080000
   Standard_EXPORT
     Standard_Integer HashCode(const Standard_Integer Upper) const;
+#endif
+
+  Standard_EXPORT
+  bool operator==(const GEOMAlgo_PassKeyShape& theOther) const
+  {
+    return IsEqual(theOther);
+  }
+
+  Standard_EXPORT
+    size_t GetSum() const { return (size_t)mySum; }
 
   Standard_EXPORT
     void Dump(const Standard_Integer aHex = 0) const;
index 7e1dccbc101906819a9a9e4b9940f8286696cdfa..e926870f966e1adc85d292571820a711bf184c56 100644 (file)
@@ -27,6 +27,8 @@
 //
 #include <GEOMAlgo_PassKeyShapeMapHasher.hxx>
 
+#if OCC_VERSION_LARGE < 0x07080000
+
 //=======================================================================
 //function : HashCode
 //purpose  :
 {
   return aPK1.IsEqual(aPK2);
 }
+
+#else
+
+size_t GEOMAlgo_PassKeyShapeMapHasher::operator()(const GEOMAlgo_PassKeyShape& aPKey) const
+{
+  return aPKey.GetSum();
+}
+
+bool GEOMAlgo_PassKeyShapeMapHasher::operator()(const GEOMAlgo_PassKeyShape& aPKey1,
+                                                const GEOMAlgo_PassKeyShape& aPKey2) const
+{
+  return aPKey1.IsEqual(aPKey2);
+}
+
+#endif // OCC_VERSION_LARGE < 0x07080000
index 921d53db2520c1b1761e6198ad54e0bea631d1b7..c656c45a4c73f40e357d6713d57386c4dc282dae 100644 (file)
@@ -34,6 +34,8 @@
 #include <Standard_Boolean.hxx>
 #include <GEOMAlgo_PassKeyShape.hxx>
 
+#include <Basics_OCCTVersion.hxx>
+
 //=======================================================================
 //class    : GEOMAlgo_PassKeyShapeMapHasher
 //purpose  :
@@ -41,6 +43,7 @@
 class GEOMAlgo_PassKeyShapeMapHasher
 {
  public:
+#if OCC_VERSION_LARGE < 0x07080000
   Standard_EXPORT
     static  Standard_Integer HashCode(const GEOMAlgo_PassKeyShape& aPKey,
                                       const Standard_Integer Upper) ;
@@ -48,5 +51,13 @@ class GEOMAlgo_PassKeyShapeMapHasher
   Standard_EXPORT
     static  Standard_Boolean IsEqual(const GEOMAlgo_PassKeyShape& aPKey1,
                                      const GEOMAlgo_PassKeyShape& aPKey2) ;
+#else
+  Standard_EXPORT
+  size_t operator()(const GEOMAlgo_PassKeyShape& aPKey) const;
+
+  Standard_EXPORT
+  bool operator()(const GEOMAlgo_PassKeyShape& aPKey1,
+                  const GEOMAlgo_PassKeyShape& aPKey2) const;
+#endif // OCC_VERSION_LARGE < 0x07080000
 };
 #endif
index f345d2d8937f570bb45fd7f79060b2c948d97044..0b0cfe95f22e7b5d1852d83f3a9f0152a5f3a97e 100644 (file)
 //  File   : GeometryGUI.cxx
 //  Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
 
-#include <Standard_math.hxx>  // E.A. must be included before Python.h to fix compilation on windows
+#include <Basics_OCCTVersion.hxx>
+
+#include <Standard_Real.hxx>  // E.A. must be included before Python.h to fix compilation on windows
+
 #ifdef HAVE_FINITE
 #undef HAVE_FINITE            // VSR: avoid compilation warning on Linux : "HAVE_FINITE" redefined
 #endif
@@ -914,9 +917,10 @@ void GeometryGUI::OnMousePress( SUIT_ViewWindow* w, QMouseEvent* e )
 //=======================================================================
 // function : createGeomAction
 // purpose  :
+// \param inModuleActionID is passed further without modifications. It is required by SUIT_ShortcutMgr.
 //=======================================================================
 void GeometryGUI::createGeomAction( const int id, const QString& label, const QString& icolabel,
-                                    const int accel, const bool toggle, const QString& shortcutAction )
+                                    const int accel, const bool toggle, const QString& inModuleActionID )
 {
   SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
   QPixmap icon = icolabel.isEmpty() ? resMgr->loadPixmap( "GEOM", tr( (QString( "ICO_" )+label).toLatin1().constData() ), false )
@@ -930,7 +934,18 @@ void GeometryGUI::createGeomAction( const int id, const QString& label, const QS
                 application()->desktop(),
                 toggle,
                 this, SLOT( OnGUIEvent() ),
-                shortcutAction );
+                inModuleActionID );
+}
+
+//=======================================================================
+// function : createGeomAction
+// purpose  :
+// Generates in module action automatically.
+//=======================================================================
+void GeometryGUI::createGeomAction( const int id, const QString& label, const QString& icolabel,
+                                    const int accel, const bool toggle)
+{
+  createGeomAction( id, label, icolabel, accel, toggle, QString( "STB_%1" ).arg( label ) );
 }
 
 //=======================================================================
@@ -1192,15 +1207,15 @@ void GeometryGUI::initialize( CAM_Application* app )
 
   // Create actions for increase/decrease transparency shortcuts
   createGeomAction( GEOMOp::OpIncrTransparency, "", "", 0, false,
-                    "Geometry:Increase transparency");
+                    "Transparency/Increase");
   createGeomAction( GEOMOp::OpDecrTransparency, "", "", 0, false,
-                    "Geometry:Decrease transparency");
+                    "Transparency/Decrease");
 
   // Create actions for increase/decrease number of isolines
   createGeomAction( GEOMOp::OpIncrNbIsos, "", "", 0, false,
-                    "Geometry:Increase number of isolines");
+                    "Isolines/Increase number");
   createGeomAction( GEOMOp::OpDecrNbIsos, "", "", 0, false,
-                    "Geometry:Decrease number of isolines");
+                    "Isolines/Decrease number");
 
   //createGeomAction( GEOMOp::OpPipeTShape, "PIPETSHAPE" );
   //createGeomAction( GEOMOp::OpDividedDisk, "DIVIDEDDISK" );
@@ -1450,7 +1465,7 @@ void GeometryGUI::initialize( CAM_Application* app )
   createTool( GEOMOp::OpCurve,            basicTbId );
   createTool( GEOMOp::OpVector,           basicTbId );
   createTool( GEOMOp::Op2dSketcher,       basicTbId ); //rnc
-  createTool( GEOMOp::Op2dPolylineEditor, basicTbId ); 
+  createTool( GEOMOp::Op2dPolylineEditor, basicTbId );
   createTool( GEOMOp::Op3dSketcher,       basicTbId ); //rnc
   createTool( GEOMOp::OpIsoline,          basicTbId );
   createTool( GEOMOp::OpSurfaceFromFace,  basicTbId );
@@ -1821,7 +1836,7 @@ void GeometryGUI::addPluginActions()
       QString actionTool = stools.last();
       actionTool = actionTool.toUpper().prepend( "TOP_" );
       stools.removeLast();
-      
+
       QString actionStat = adata.statusText.c_str();
       actionStat = actionStat.toUpper().prepend( "STB_" );
 
@@ -1830,12 +1845,13 @@ void GeometryGUI::addPluginActions()
                     icon,
                     tr( actionName.toLatin1().constData() ),
                     tr( actionStat.toLatin1().constData() ),
-                    QKeySequence( tr( adata.accel.c_str() ) ),
+                    QKeySequence( tr( adata.accel.c_str() ) ), // Applied, if does not conflict with shortcuts in SUIT_ShortcutMgr.
                     application()->desktop(),
                     false /*toggle*/,
                     this, SLOT( OnGUIEvent() ),
-                    QString() /*shortcutAction*/ );
-      
+                    QString::fromStdString(pdata.name + "/" + adata.label)
+                  );
+
       int menuId = -1;
       foreach ( QString subMenu, smenus ) {
         QStringList subMenuList = subMenu.split( ":" );
@@ -1844,7 +1860,7 @@ void GeometryGUI::addPluginActions()
         menuId = createMenu( tr( subMenuName.toLatin1().constData() ), menuId, -1, subMenuGroup );
       }
       createMenu( id, menuId, -1 );
-      
+
       if ( !stools.isEmpty() ) {
         QString subTool = stools[0];
         subTool = subTool.toUpper().prepend( "TOOL_" );
@@ -1855,7 +1871,7 @@ void GeometryGUI::addPluginActions()
       // add action id to map
       PluginAction anAction( pdata.clientLib.c_str(), adata.label.c_str() );
       myPluginActions[id] = anAction;
-      
+
       id++;
     }
   }
@@ -1874,7 +1890,7 @@ namespace
 bool GeometryGUI::activateModule( SUIT_Study* study )
 {
   // Fill in: Help Panel
-  SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>( application() ); 
+  SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>( application() );
   app->infoPanel()->setTitle(tr("INFO_WELCOME_TO_GEOM"));
 
   int gb = app->infoPanel()->addGroup(tr("INFO_GRP_CREATE_MODEL"));
@@ -2247,7 +2263,7 @@ void GeometryGUI::onAutoBringToFront()
   bool isAutoBringToFront = SUIT_Session::session()->resourceMgr()->booleanValue( "Geometry", "auto_bring_to_front", "false" );
   if( !isAutoBringToFront )
     return;
-  
+
   SUIT_ViewWindow* SUIT_window = application()->desktop()->activeWindow();
   if ( !SUIT_window || SUIT_window->getViewManager()->getType() != OCCViewer_Viewer::Type() )
         return;
@@ -2256,12 +2272,12 @@ void GeometryGUI::onAutoBringToFront()
   if (!appStudy) return;
 
   GEOM_Displayer displayer;
-  
+
   SALOME_View* window = displayer.GetActiveView();
   if ( !window ) return;
-  
+
   int aMgrId = dynamic_cast< SUIT_ViewModel* >( window )->getViewManager()->getGlobalId();
-  
+
   SALOME_ListIO selected;
   getApp()->selectionMgr()->selectedObjects( selected );
   if (!myTopLevelIOList.IsEmpty())
@@ -2279,19 +2295,19 @@ void GeometryGUI::onAutoBringToFront()
       if (!isSelected && appStudy->findObjectByEntry(io->getEntry()))
       {
         appStudy->setObjectProperty( aMgrId, io->getEntry(), GEOM::propertyName( GEOM::TopLevel ), false );
-        if ( window->isVisible( io ) ) displayer.Redisplay( io, false );     
+        if ( window->isVisible( io ) ) displayer.Redisplay( io, false );
       }
     }
   }
-  
+
   myTopLevelIOList.Assign(selected);
   for( SALOME_ListIteratorOfListIO It( selected ); It.More(); It.Next() )
   {
     Handle( SALOME_InteractiveObject ) io = It.Value();
     appStudy->setObjectProperty( aMgrId, io->getEntry(), GEOM::propertyName( GEOM::TopLevel ), true );
-    if ( window->isVisible( io ) ) displayer.Redisplay( io, false );     
+    if ( window->isVisible( io ) ) displayer.Redisplay( io, false );
   }
-    
+
   displayer.UpdateViewer();
   GeometryGUI::Modified();
 }
@@ -2499,7 +2515,7 @@ void GeometryGUI::createPreferences()
   addPreference( tr( "PREF_DIMENSIONS_COLOR" ), aDimGroupId,
                  LightApp_Preferences::Color, "Geometry", "dimensions_color" );
 
-  int aDimLineWidthId = addPreference( tr( "PREF_DIMENSIONS_LINE_WIDTH" ), aDimGroupId, 
+  int aDimLineWidthId = addPreference( tr( "PREF_DIMENSIONS_LINE_WIDTH" ), aDimGroupId,
                                        LightApp_Preferences::IntSpin, "Geometry", "dimensions_line_width" );
 
   setPreferenceProperty( aDimLineWidthId, "min", 1 );
@@ -2518,7 +2534,7 @@ void GeometryGUI::createPreferences()
   // add enginier font into combobox
   /*int fontID =*/ QFontDatabase::addApplicationFont( aFontFile );
   Handle(Font_SystemFont) sf = new Font_SystemFont( TCollection_AsciiString("Y14.5M-2009") );
-  sf->SetFontPath( Font_FA_Regular, 
+  sf->SetFontPath( Font_FA_Regular,
     TCollection_AsciiString( aFontFile.toLatin1().data() ) );
   // register font in OCC font manager
   fmgr->RegisterFont( sf, Standard_False );
@@ -2584,7 +2600,7 @@ void GeometryGUI::createPreferences()
 
   addPreference( tr( "PREF_SHAPE_ANNOTATIONS_FONT_COLOR" ), aShapeAnnGroupId, LightApp_Preferences::Color, "Geometry", "shape_annotation_font_color" );
   addPreference( tr( "PREF_SHAPE_ANNOTATIONS_LINE_COLOR" ), aShapeAnnGroupId, LightApp_Preferences::Color, "Geometry", "shape_annotation_line_color" );
-  const int aShapeAnnFont = 
+  const int aShapeAnnFont =
     addPreference( tr( "PREF_SHAPE_ANNOTATIONS_FONT" ), aShapeAnnGroupId, LightApp_Preferences::Font, "Geometry", "shape_annotation_font" );
 
   int aShapeAnnFontFeatures = QtxFontEdit::Family | QtxFontEdit::Size | QtxFontEdit::Bold | QtxFontEdit::Italic;
@@ -2592,7 +2608,7 @@ void GeometryGUI::createPreferences()
   setPreferenceProperty( aShapeAnnFont, "mode", QtxFontEdit::Custom );
   setPreferenceProperty( aShapeAnnFont, "fonts", anOCCFonts );
 
-  const int aShapeAnnLineWidth = 
+  const int aShapeAnnLineWidth =
     addPreference( tr( "PREF_SHAPE_ANNOTATIONS_LINE_WIDTH" ), aShapeAnnGroupId, LightApp_Preferences::IntSpin, "Geometry", "shape_annotation_line_width" );
 
   setPreferenceProperty( aShapeAnnLineWidth, "min", 1 );
@@ -3072,7 +3088,7 @@ void GeometryGUI::storeVisualParameters (int savePoint)
           param = occParam + GEOM::propertyName( GEOM::Color );
           ip->setParameter(entry, param.toStdString(), val.join( GEOM::subSectionSeparator()).toStdString());
         }
-        
+
         if (aProps.contains(GEOM::propertyName( GEOM::Texture ))) {
           param = occParam + GEOM::propertyName( GEOM::Texture );
           ip->setParameter(entry, param.toStdString(), aProps.value(GEOM::propertyName( GEOM::Texture )).toString().toStdString());
@@ -3232,7 +3248,7 @@ void GeometryGUI::restoreVisualParameters (int savePoint)
 
     for (; namesIt != paramNames.end(); ++namesIt, ++valuesIt)
     {
-      // visual parameters are stored in strings as follows: 
+      // visual parameters are stored in strings as follows:
       //   1) ViewerType_ViewIndex_ParamName
       //   2) ViewerType_ParamName (shared for GEOM module)
       // '_' is used as separator and should not be used in viewer type or parameter names.
@@ -3636,7 +3652,7 @@ void GeometryGUI::updateMaterials()
   \brief Check if the module allows "drag" operation of its objects.
 
   Overloaded from LightApp_Module class.
-  
+
   This function is a part of the general drag-n-drop mechanism.
   The goal of this function is to check data object passed as a parameter
   and decide if it can be dragged or no.
@@ -3704,13 +3720,13 @@ bool GeometryGUI::isDropAccepted( const SUIT_DataObject* where ) const
 
 /*!
   \brief Complete drag-n-drop operation.
-  
+
   Overloaded from LightApp_Module class.
 
   This function is a part of the general drag-n-drop mechanism.
   Its goal is to handle dropping of the objects being dragged according
   to the chosen operation (move). The dropping is performed in the
-  context of the parent data object \a where and the \a row (position in the 
+  context of the parent data object \a where and the \a row (position in the
   children index) at which the data should be dropped. If \a row is equal to -1,
   this means that objects are added to the end of the children list.
 
@@ -3753,7 +3769,7 @@ void GeometryGUI::dropObjects( const DataObjectList& what, SUIT_DataObject* wher
     _PTR(SObject) sobj = dataObj->object();
     // check that dropped object is not a parent of target object
     if ( parentIDs.contains( sobj->GetID().c_str() ) ) {
-      return; // it's not allowed to move node into it's child 
+      return; // it's not allowed to move node into it's child
     }
     objects[i] = _CAST(SObject, sobj)->GetSObject();
     count++;
index 65e44c08b61ac7ffd75cda9d0192affcc3b2ef93..7b39b36df51c400bb0ae346bf515dda62ccacd76 100644 (file)
@@ -150,7 +150,7 @@ public:
 
   virtual bool                isDraggable( const SUIT_DataObject* what ) const;
   virtual bool                isDropAccepted( const SUIT_DataObject* where ) const;
-  virtual void                dropObjects( const DataObjectList& what, 
+  virtual void                dropObjects( const DataObjectList& what,
                                            SUIT_DataObject* where,
                                            const int row, Qt::DropAction action );
 
@@ -195,10 +195,14 @@ protected:
 private:
   GEOMGUI*                    getLibrary( const QString& libraryName );
   GEOMPluginGUI*              getPluginLibrary( const QString& libraryName );
+  void                        createGeomAction( const int id, const QString& po_id,
+                                                const QString& icon_id,
+                                                const int key, const bool toggle,
+                                                const QString& shortcutAction);
   void                        createGeomAction( const int id, const QString& po_id,
                                                 const QString& icon_id = QString(""),
-                                                const int key = 0, const bool toggle = false,
-                                                const QString& shortcutAction = QString() );
+                                                const int key = 0, const bool toggle = false);
+
   void                        createPopupItem( const int, const QString& clients, const QString& types,
                                                const bool isSingle = false, const int isVisible = -1,
                                                const bool isExpandAll = false, const bool isOCC = false,
@@ -210,7 +214,7 @@ private:
 public:
   static GEOM::GEOM_Gen_var   myComponentGeom;   // GEOM engine!!!
 
-private:  
+private:
 
   typedef QMap<QString, GEOMGUI*> GUIMap;
 
@@ -231,10 +235,10 @@ private:
   int                          myLocalSelectionMode; //Select Only
 
   GEOMGUI_CreationInfoWdg*     myCreationInfoWdg;
-  
+
   GEOMGUI_TextTreeWdg*        myTextTreeWdg;
   GEOMGUI_AnnotationMgr*      myAnnotationMgr;
-  
+
   SALOME_ListIO                myTopLevelIOList;
 
   friend class DisplayGUI;
index fef00a9ad2dc0efb1c6d9970760200500a04c013..eff9b923327bc8b740add25967556c9831a74bb0 100644 (file)
@@ -24,7 +24,8 @@
 // E.A. : On windows with python 2.6, there is a conflict
 // E.A. : between pymath.h and Standard_math.h which define
 // E.A. : some same symbols : acosh, asinh, ...
-#include <Standard_math.hxx>
+#include <Standard_Real.hxx>
+#include <pyport.h>
 #include <pymath.h>
 #endif
 
index db1ac798f0cb06b2d2c1bedcf36290cacdf4558e..6292333569651bded3dcf446c8246ecc0e41d716 100644 (file)
 
 #include <GEOMImpl_ITestOperations.hxx>
 
-#include <BRepBndLib.hxx>
+#include <GEOMUtils.hxx>
+
 #include <BRepBuilderAPI_Copy.hxx>
-#include <BRepMesh_IncrementalMesh.hxx>
-#include <BRepTools.hxx>
-#include <Bnd_Box.hxx>
+
 #include <utilities.h>
 
 #ifndef MAX2
@@ -83,25 +82,22 @@ bool GEOMImpl_ITestOperations::Tesselate(Handle(GEOM_Object) theShape,
 
   // reset error code
   SetErrorCode(KO);
+
   // create a copy of the source shape
   TopoDS_Shape aShape = BRepBuilderAPI_Copy(theShape->GetValue()).Shape();
+
   // use default deflection if necessary
   if (theLinearDeflection <= 0)
     theLinearDeflection = 0.001;
-  // compute absolute deflection if necessary: 0.001
-  if (theIsRelative) {
-    Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax;
-    Bnd_Box bndBox;
-    BRepBndLib::Add(aShape, bndBox);
-    bndBox.Get(aXmin, aYmin, aZmin, aXmax, aYmax, aZmax);
-    theLinearDeflection = MAX3(aXmax-aXmin, aYmax-aYmin, aZmax-aZmin) * theLinearDeflection * 4;
-  }
+
   // use default deviation angle if necessary: 20 degrees
   if (theAngularDeflection <= 0)
     theAngularDeflection = 20. * M_PI / 180.;
+
   // compute triangulation
-  BRepTools::Clean(aShape);
-  BRepMesh_IncrementalMesh aMesh(aShape, theLinearDeflection, Standard_False, theAngularDeflection);
+  GEOMUtils::MeshShape(aShape, theLinearDeflection, /*theForced*/ true,
+                       theAngularDeflection, theIsRelative);
+
   // set OK status and return
   SetErrorCode(OK);
   return true;
index 23404069bbf8e562c21fdf7cb96c20006cfb41ef..df823e314922a35c03670629ce7341a4d54280ab 100644 (file)
@@ -21,6 +21,8 @@
 #include <GEOMImpl_IProximity.hxx>
 #include <GEOMImpl_Types.hxx>
 
+#include <GEOMUtils.hxx>
+
 #include <BRep_Tool.hxx>
 #include <BRepAdaptor_Curve.hxx>
 #include <BRepAdaptor_Surface.hxx>
 #include <TopoDS.hxx>
 
 namespace {
-  static void tessellateShape(const TopoDS_Shape& theShape)
-  {
-    Standard_Boolean isTessellate = Standard_False;
-    TopLoc_Location aLoc;
-    for (TopExp_Explorer anExp(theShape, TopAbs_FACE); anExp.More() && !isTessellate; anExp.Next())
-    {
-      Handle(Poly_Triangulation) aTria = BRep_Tool::Triangulation(TopoDS::Face(anExp.Value()), aLoc);
-      isTessellate = aTria.IsNull();
-    }
-    for (TopExp_Explorer anExp(theShape, TopAbs_EDGE); anExp.More() && !isTessellate; anExp.Next())
-    {
-      Handle(Poly_Polygon3D) aPoly = BRep_Tool::Polygon3D(TopoDS::Edge(anExp.Value()), aLoc);
-      isTessellate = aPoly.IsNull();
-    }
-
-    if (isTessellate)
-    {
-      BRepMesh_IncrementalMesh aMesher(theShape, 0.1);
-      Standard_ProgramError_Raise_if(!aMesher.IsDone(), "Meshing failed");
-    }
-  }
-
   static Standard_Real paramOnCurve(const BRepAdaptor_Curve& theCurve, const gp_Pnt& thePoint, const Standard_Real theTol)
   {
     Extrema_ExtPC aParamSearch(thePoint, theCurve, theCurve.FirstParameter(), theCurve.LastParameter());
@@ -293,8 +273,8 @@ Standard_Integer GEOMImpl_ShapeProximityDriver::Execute(Handle(TFunction_Logbook
   if (aFunction->GetType() == PROXIMITY_COARSE)
   {
     // tessellate shapes if there is no mesh exists
-    tessellateShape(aShape1);
-    tessellateShape(aShape2);
+    GEOMUtils::MeshShape(aShape1, 0.1, /*theForced*/false, 0.5, /*isRelative*/false);
+    GEOMUtils::MeshShape(aShape2, 0.1, /*theForced*/false, 0.5, /*isRelative*/false);
 
     // compute proximity basing on the tessellation
     BRepExtrema_ShapeProximity aCalcProx;
index f61f871e76edebe69fb349337317eb304969ff33..cb36716e44fde8e49aabcd3b272925939cb899bd 100644 (file)
@@ -93,6 +93,8 @@
 #include <ProjLib.hxx>
 #include <ElSLib.hxx>
 
+#include <Prs3d.hxx>
+
 #include <vector>
 #include <sstream>
 #include <algorithm>
@@ -677,56 +679,6 @@ void GEOMUtils::AddSimpleShapes (const TopoDS_Shape& theShape, TopTools_ListOfSh
   }
 }
 
-//=======================================================================
-//function : CheckTriangulation
-//purpose  :
-//=======================================================================
-bool GEOMUtils::CheckTriangulation (const TopoDS_Shape& aShape)
-{
-  bool isTriangulation = true;
-
-  TopExp_Explorer exp (aShape, TopAbs_FACE);
-  if (exp.More())
-  {
-    TopLoc_Location aTopLoc;
-    Handle(Poly_Triangulation) aTRF;
-    aTRF = BRep_Tool::Triangulation(TopoDS::Face(exp.Current()), aTopLoc);
-    if (aTRF.IsNull()) {
-      isTriangulation = false;
-    }
-  }
-  else // no faces, try edges
-  {
-    TopExp_Explorer expe (aShape, TopAbs_EDGE);
-    if (!expe.More()) {
-      return false;
-    }
-    TopLoc_Location aLoc;
-    Handle(Poly_Polygon3D) aPE = BRep_Tool::Polygon3D(TopoDS::Edge(expe.Current()), aLoc);
-    if (aPE.IsNull()) {
-      isTriangulation = false;
-    }
-  }
-
-  if (!isTriangulation) {
-    // calculate deflection
-    Standard_Real aDeviationCoefficient = 0.001;
-
-    Bnd_Box B;
-    BRepBndLib::Add(aShape, B);
-    Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax;
-    B.Get(aXmin, aYmin, aZmin, aXmax, aYmax, aZmax);
-
-    Standard_Real dx = aXmax - aXmin, dy = aYmax - aYmin, dz = aZmax - aZmin;
-    Standard_Real aDeflection = Max(Max(dx, dy), dz) * aDeviationCoefficient * 4;
-    Standard_Real aHLRAngle = 0.349066;
-
-    BRepMesh_IncrementalMesh Inc (aShape, aDeflection, Standard_False, aHLRAngle);
-  }
-
-  return true;
-}
-
 //=======================================================================
 //function : GetTypeOfSimplePart
 //purpose  :
@@ -1286,44 +1238,110 @@ TopoDS_Shape GEOMUtils::ReduceCompound( const TopoDS_Shape& shape )
   return result;
 }
 
-void GEOMUtils::MeshShape( const TopoDS_Shape shape,
-                           double deflection, bool theForced )
+//=======================================================================
+//function : DefaultDeflection
+//purpose  :
+//=======================================================================
+double GEOMUtils::DefaultDeflection()
+{
+  return 0.001;
+}
+
+//=======================================================================
+//function : CanBeMeshed
+//purpose  :
+//=======================================================================
+static bool GEOMUtils_CanBeMeshed (const TopoDS_Shape& theShape,
+                                   const bool          theCheckMesh,
+                                   bool&               theHasMesh)
 {
-  Standard_Real aDeflection = ( deflection <= 0 ) ? DefaultDeflection() : deflection;
-  
   // Is shape triangulated?
-  Standard_Boolean alreadyMeshed = true;
-  TopExp_Explorer ex;
+  theHasMesh = true;
+
+  TopExp_Explorer ex (theShape, TopAbs_FACE);
   TopLoc_Location aLoc;
-  for ( ex.Init( shape, TopAbs_FACE ); ex.More() && alreadyMeshed; ex.Next() ) {
-    const TopoDS_Face& aFace = TopoDS::Face( ex.Current() );
-    Handle(Poly_Triangulation) aPoly = BRep_Tool::Triangulation( aFace, aLoc );
-    alreadyMeshed = !aPoly.IsNull(); 
+  if (ex.More()) {
+    if (theCheckMesh) {
+      for ( ; ex.More() && theHasMesh; ex.Next() ) {
+        const TopoDS_Face& aFace = TopoDS::Face( ex.Current() );
+        Handle(Poly_Triangulation) aPoly = BRep_Tool::Triangulation( aFace, aLoc );
+        theHasMesh = !aPoly.IsNull(); 
+      }
+    }
   }
-  
-  if ( !alreadyMeshed || theForced ) {
+  else { // no faces, try edges
+    ex.Init(theShape, TopAbs_EDGE);
+    if (!ex.More()) {
+      return false; // nothing to mesh
+    }
+    if (theCheckMesh) {
+      for ( ; ex.More() && theHasMesh; ex.Next() ) {
+        Handle(Poly_Polygon3D) aPE = BRep_Tool::Polygon3D(TopoDS::Edge(ex.Current()), aLoc);
+        theHasMesh = !aPE.IsNull();
+      }
+    }
+  }
+
+  return true;
+}
+
+//=======================================================================
+//function : MeshShape
+//purpose  :
+//=======================================================================
+bool GEOMUtils::MeshShape( const TopoDS_Shape theShape,
+                           const double theDeflection,
+                           const bool theForced,
+                           const double theAngleDeflection,
+                           const bool isRelative,
+                           const bool doPostCheck)
+{
+  Standard_Real aDeflection = (theDeflection <= 0) ? DefaultDeflection() : theDeflection;
+
+  // Is shape triangulated?
+  bool alreadyMeshed = true;
+  if (!GEOMUtils_CanBeMeshed (theShape, /*theCheckMesh*/true, alreadyMeshed))
+    return false;
+
+  if (alreadyMeshed && !theForced)
+    return true;
+
+  if (isRelative) {
     // Compute bounding box
     Bnd_Box B;
-    BRepBndLib::Add( shape, B );
-    if ( B.IsVoid() )
-      return; // NPAL15983 (Bug when displaying empty groups) 
-    Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax;
-    B.Get( aXmin, aYmin, aZmin, aXmax, aYmax, aZmax );
-    
-    // This magic line comes from Prs3d_ShadedShape.gxx in OCCT
-    aDeflection = MAX3(aXmax-aXmin, aYmax-aYmin, aZmax-aZmin) * aDeflection * 4;
-    
-    // Clean triangulation before compute incremental mesh
-    BRepTools::Clean( shape );
-    
-    // Compute triangulation
-    BRepMesh_IncrementalMesh mesh( shape, aDeflection ); 
+    BRepBndLib::Add(theShape, B);
+    if (B.IsVoid())
+      return false; // NPAL15983 (Bug when displaying empty groups)
+
+    Standard_Real aDeviationCoeff = aDeflection;
+    Standard_Real aMaxChordialDeviation = aDeflection;
+    aDeflection = Prs3d::GetDeflection(B, aDeviationCoeff, aMaxChordialDeviation);
   }
+
+  // Clean triangulation before compute incremental mesh
+  BRepTools::Clean(theShape);
+
+  // Compute triangulation
+  BRepMesh_IncrementalMesh mesh (theShape, aDeflection, Standard_False, theAngleDeflection); 
+
+  if (!doPostCheck)
+    return true;
+
+  if (!mesh.IsDone())
+    return false;
+
+  GEOMUtils_CanBeMeshed(theShape, /*theCheckMesh*/true, alreadyMeshed);
+  return alreadyMeshed;
 }
 
-double GEOMUtils::DefaultDeflection()
+//=======================================================================
+//function : CheckTriangulation
+//purpose  :
+//=======================================================================
+bool GEOMUtils::CheckTriangulation (const TopoDS_Shape& theShape)
 {
-  return 0.001;
+  Standard_Real aHLRAngle = 0.349066;
+  return MeshShape(theShape, DefaultDeflection(), false, aHLRAngle);
 }
 
 //=======================================================================
index fe36edd650a343e1f2a6619fcb3880c7a22bf71d..ba6b7d0459d4091d352eb0eb7b292c540ed0d226 100644 (file)
@@ -155,13 +155,6 @@ namespace GEOMUtils
   Standard_EXPORT void AddSimpleShapes (const TopoDS_Shape& theShape,
                                        TopTools_ListOfShape& theList);
 
-  /*!
-   * \brief Build a triangulation on \a theShape if it is absent.
-   * \param theShape The shape to check/build triangulation on.
-   * \retval bool Returns false if the shape has no faces, i.e. impossible to build triangulation.
-   */
-  Standard_EXPORT bool CheckTriangulation (const TopoDS_Shape& theShape);
-
   /*!
    * \brief Return type of shape for explode. In case of compound it will be a type of its first sub shape.
    * \param theShape The shape to get type of.
@@ -348,20 +341,38 @@ namespace GEOMUtils
   Standard_EXPORT TopoDS_Shape ReduceCompound( const TopoDS_Shape& shape );
 
   /*!
-   * \brief Generate triangulation for the shape.
+   * \brief Get default deflection coefficient used for triangulation
+   * \return default deflection value
+   */
+  Standard_EXPORT double DefaultDeflection();
+
+  /*!
+   * \brief Generate triangulation for \a theShape.
    *
-   * \param shape shape being meshed
-   * \param deflection deflection coefficient to be used
-   * \param forced if \c true, causes generation of mesh regardless it is already present in the shape
+   * \param theShape shape to be meshed.
+   * \param theDeflection deflection coefficient to be used.
+   * \param theForced if \c true, causes generation of mesh regardless it is already present in the shape.
+   * \param theAngleDeflection angular deflection coefficient to be used.
+   * \param isRelative if true, \a theDeflection is considered relative to \a theShape maximum axial dimension.
+   * \param doPostCheck if true, check mesh generation result and return corresponding boolean value.
+   * \retval bool Returns false in the following cases:
+   *              1. The shape has neither faces nor edges, i.e. impossible to build triangulation or polygon.
+   *              2. \a theForced is false and \a theShape has no mesh or has incomplete mesh.
+   *              3. \a doPostCheck is true and mesh generation failed or produced an incomplete mesh.
    */
-  Standard_EXPORT void MeshShape( const TopoDS_Shape shape,
-                                  double deflection, bool forced = true );
+  Standard_EXPORT bool MeshShape( const TopoDS_Shape theShape,
+                                  const double theDeflection = DefaultDeflection(),
+                                  const bool theForced = true,
+                                  const double theAngleDeflection = 0.5,
+                                  const bool isRelative = true,
+                                  const bool doPostCheck = false);
 
   /*!
-   * \brief Get default deflection coefficient used for triangulation
-   * \return default deflection value
+   * \brief Build a triangulation on \a theShape if it is absent.
+   * \param theShape The shape to check/build triangulation on.
+   * \retval bool Returns false if the shape has no faces, i.e. impossible to build triangulation.
    */
-  Standard_EXPORT double DefaultDeflection();
+  Standard_EXPORT bool CheckTriangulation (const TopoDS_Shape& theShape);
 
   /**
    * \brief Check if the shape is not a closed wire or edge.
index 377d4c3c0f31cd352bc903f6dffa0a9ce34e3361..e125b680600fe26da335843256eb00e7c03aefc9 100644 (file)
@@ -30,7 +30,6 @@
 #include <BRepTools.hxx>
 
 #include <BRepBndLib.hxx>
-#include <BRepMesh_IncrementalMesh.hxx>
 #include <Poly_Triangulation.hxx>
 #include <TopExp_Explorer.hxx>
 #include <TopoDS.hxx>
index 1ed99c516f512456e8535076161f7b9623301c96..fa7492ea1a13dcea85cadcf5802f3c4227e3779c 100644 (file)
@@ -33,6 +33,8 @@
 // OOCT includes
 #include <IFSelect_ReturnStatus.hxx>
 #include <STEPControl_Writer.hxx>
+#include <StepData_StepModel.hxx>
+#include <UnitsMethods.hxx>
 #include <Interface_Static.hxx>
 #include <TCollection_AsciiString.hxx>
 #include <TopoDS_Shape.hxx>
@@ -126,12 +128,22 @@ Standard_Integer STEPPlugin_ExportDriver::Execute(Handle(TFunction_Logbook)& /*l
     Interface_Static::SetCVal("xstep.cascade.unit","M");
     Interface_Static::SetCVal("write.step.unit", aWriteUnit.ToCString());
     Interface_Static::SetIVal("write.step.nonmanifold", 1);
-#else
+#elif OCC_VERSION_LARGE < 0x07080000
     STEPControl_Writer aWriterTmp;
     Interface_Static::SetCVal("xstep.cascade.unit","M");
     Interface_Static::SetCVal("write.step.unit", aWriteUnit.ToCString());
     Interface_Static::SetIVal("write.step.nonmanifold", 1);
     STEPControl_Writer aWriter;
+#else
+    STEPControl_Writer aWriter;
+    Interface_Static::SetCVal("xstep.cascade.unit","M");
+    Interface_Static::SetCVal("write.step.unit", aWriteUnit.ToCString());
+    Interface_Static::SetIVal("write.step.nonmanifold", 1);
+    Handle(StepData_StepModel) aModel = aWriter.Model();
+    aModel->InternalParameters.InitFromStatic();
+    Standard_Integer aWriteUnitInt = Interface_Static::IVal("write.step.unit");
+    Standard_Real aWriteUnitReal = UnitsMethods::GetLengthFactorValue(aWriteUnitInt);
+    aModel->SetWriteLengthUnit(aWriteUnitReal);
 #endif
 
     IFSelect_ReturnStatus status = aWriter.Transfer( aShape, STEPControl_AsIs );
index b98686a944afeaf07a5b53a051aad8590d7706a8..0bb1352cae673afb3643b827239cde885510c18a 100644 (file)
@@ -102,6 +102,7 @@ Standard_Integer STLPlugin_ExportDriver::Execute(Handle(TFunction_Logbook)& log)
       BRepBndLib::Add( aShape, bndBox );
       bndBox.Get( aXmin, aYmin, aZmin, aXmax, aYmax, aZmax );
       aDeflection = MAX3( aXmax-aXmin, aYmax-aYmin, aZmax-aZmin ) * aDeflection;
+      aDeflection = MAX2( aDeflection, Precision::Confusion() );
     }
     //Compute triangulation
     BRepTools::Clean( aCopyShape );