GEOMDS_Resources
ShHealing
Y14.5M-2009.ttf
+ action_assets.json
3dsketch.png
isoline.png
isoline_v.png
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})
-
-
-
-
<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>
--- /dev/null
+{
+ "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のインポート"
+ }
+ }
+ }
+}
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;
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
}
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)
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
#include <BRepTools.hxx>
#include <BRepTools_WireExplorer.hxx>
#include <BRepBndLib.hxx>
-#include <BRepMesh_IncrementalMesh.hxx>
#include <BRepGProp.hxx>
#include <IntTools_Tools.hxx>
//
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
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,
#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)
#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
+++ /dev/null
-// 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
+++ /dev/null
-
-// 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
+++ /dev/null
-// 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
-
+++ /dev/null
-// 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
#include <GEOMAlgo_StateCollector.hxx>
#include <GEOMAlgo_SurfaceTools.hxx>
+#include <GEOMUtils.hxx>
+
#include <Bnd_Box.hxx>
#include <BRep_Tool.hxx>
#include <BRepBndLib.hxx>
//
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();
//
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();
//
}
}
-//=======================================================================
-//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 :
//
const Standard_Integer aNbPnts,
GEOMAlgo_ListOfPnt& aLP) ;
- Standard_EXPORT
- Standard_Boolean BuildTriangulation(const TopoDS_Shape& aS) ;
-
TopAbs_ShapeEnum myShapeType;
GEOMAlgo_State myState;
+++ /dev/null
-// 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;
-}
-
+++ /dev/null
-// 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
#include <TopoDS_Shape.hxx>
#include <Standard_Integer.hxx>
+
+#include <Basics_OCCTVersion.hxx>
+
+#if OCC_VERSION_LARGE < 0x07080000
+
#include <TColStd_MapIntegerHasher.hxx>
#define _NCollection_MapHasher
#undef _NCollection_MapHasher
+#else
+
+#include <NCollection_IndexedDataMap.hxx>
+
+typedef NCollection_IndexedDataMap<Standard_Integer, TopoDS_Shape> GEOMAlgo_IndexedDataMapOfIntegerShape;
+
+#endif // OCC_VERSION_LARGE < 0x07080000
#endif
}
return !bRet;
}
+#if OCC_VERSION_LARGE < 0x07080000
//=======================================================================
//function : HashCode
//purpose :
{
return ::HashCode(mySum, aUpper);
}
+#endif
//=======================================================================
//function : Dump
//purpose :
#ifndef _GEOMAlgo_PassKey_HeaderFile
#define _GEOMAlgo_PassKey_HeaderFile
+#include <Basics_OCCTVersion.hxx>
+
#include <Standard.hxx>
#include <Standard_Macro.hxx>
#include <Standard_Integer.hxx>
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;
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
//
#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
#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) ;
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
//
#include <GEOMAlgo_PassKeyShape.hxx>
+#include <Basics_OCCTVersion.hxx>
+
#include <TopTools_ListOfShape.hxx>
#include <TopTools_ListIteratorOfListOfShape.hxx>
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);
}
//=======================================================================
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;
}
}
return !bRet;
}
+#if OCC_VERSION_LARGE < 0x07080000
//=======================================================================
//function : HashCode
//purpose :
{
return ::HashCode(mySum, aUpper);
}
+#endif
//=======================================================================
//function : Dump
//purpose :
#ifndef _GEOMAlgo_PassKeyShape_HeaderFile
#define _GEOMAlgo_PassKeyShape_HeaderFile
+#include <Basics_OCCTVersion.hxx>
+
#include <Standard.hxx>
#include <Standard_Macro.hxx>
#include <Standard_Integer.hxx>
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;
//
#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
#include <Standard_Boolean.hxx>
#include <GEOMAlgo_PassKeyShape.hxx>
+#include <Basics_OCCTVersion.hxx>
+
//=======================================================================
//class : GEOMAlgo_PassKeyShapeMapHasher
//purpose :
class GEOMAlgo_PassKeyShapeMapHasher
{
public:
+#if OCC_VERSION_LARGE < 0x07080000
Standard_EXPORT
static Standard_Integer HashCode(const GEOMAlgo_PassKeyShape& aPKey,
const Standard_Integer Upper) ;
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
// 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
//=======================================================================
// 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 )
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 ) );
}
//=======================================================================
// 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" );
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 );
QString actionTool = stools.last();
actionTool = actionTool.toUpper().prepend( "TOP_" );
stools.removeLast();
-
+
QString actionStat = adata.statusText.c_str();
actionStat = actionStat.toUpper().prepend( "STB_" );
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( ":" );
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_" );
// add action id to map
PluginAction anAction( pdata.clientLib.c_str(), adata.label.c_str() );
myPluginActions[id] = anAction;
-
+
id++;
}
}
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"));
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;
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())
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();
}
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 );
// 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 );
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;
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 );
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());
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.
\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.
/*!
\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.
_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++;
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 );
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,
public:
static GEOM::GEOM_Gen_var myComponentGeom; // GEOM engine!!!
-private:
+private:
typedef QMap<QString, GEOMGUI*> GUIMap;
int myLocalSelectionMode; //Select Only
GEOMGUI_CreationInfoWdg* myCreationInfoWdg;
-
+
GEOMGUI_TextTreeWdg* myTextTreeWdg;
GEOMGUI_AnnotationMgr* myAnnotationMgr;
-
+
SALOME_ListIO myTopLevelIOList;
friend class DisplayGUI;
// 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
#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
// 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;
#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());
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;
#include <ProjLib.hxx>
#include <ElSLib.hxx>
+#include <Prs3d.hxx>
+
#include <vector>
#include <sstream>
#include <algorithm>
}
}
-//=======================================================================
-//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 :
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);
}
//=======================================================================
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.
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.
#include <BRepTools.hxx>
#include <BRepBndLib.hxx>
-#include <BRepMesh_IncrementalMesh.hxx>
#include <Poly_Triangulation.hxx>
#include <TopExp_Explorer.hxx>
#include <TopoDS.hxx>
// 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>
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 );
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 );