]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
Merge from V7_3_BR branch 18/12/2013
authorvsr <vsr@opencascade.com>
Wed, 18 Dec 2013 14:23:59 +0000 (14:23 +0000)
committervsr <vsr@opencascade.com>
Wed, 18 Dec 2013 14:23:59 +0000 (14:23 +0000)
61 files changed:
CMakeLists.txt
doc/salome/gui/GEOM/images/isos.png [new file with mode: 0644]
doc/salome/gui/GEOM/images/pipe.png
doc/salome/gui/GEOM/images/pipe2.png
doc/salome/gui/GEOM/input/common_operation.doc
doc/salome/gui/GEOM/input/creating_isoline.doc
doc/salome/gui/GEOM/input/creating_smoothingsurface.doc
doc/salome/gui/GEOM/input/cut_operation.doc
doc/salome/gui/GEOM/input/fuse_operation.doc
doc/salome/gui/GEOM/input/geometry_preferences.doc
doc/salome/gui/GEOM/input/import_export.doc
doc/salome/gui/GEOM/input/index.doc
doc/salome/gui/GEOM/input/material.doc
doc/salome/gui/GEOM/input/partition.doc
doc/salome/gui/GEOM/input/remove_webs_operation.doc
doc/salome/gui/GEOM/input/repairing_operations.doc
doc/salome/gui/GEOM/input/section_operation.doc
doc/salome/gui/GEOM/input/sewing_operation.doc
doc/salome/gui/GEOM/input/union_faces_operation.doc
doc/salome/gui/GEOM/input/using_boolean_operations.doc
doc/salome/gui/GEOM/input/using_measurement_tools.doc
doc/salome/gui/GEOM/input/viewing_geom_obj.doc
doc/salome/gui/GEOM/input/xao_format.doc
resources/pipesections.png
src/AdvancedGUI/AdvancedGUI_PipeTShapeDlg.cxx
src/AdvancedGUI/AdvancedGUI_msg_en.ts
src/AdvancedGUI/AdvancedGUI_msg_fr.ts
src/AdvancedGUI/AdvancedGUI_msg_ja.ts
src/BlockFix/BlockFix_UnionFaces.cxx
src/BuildGUI/BuildGUI_ShellDlg.cxx
src/DisplayGUI/DisplayGUI.cxx
src/EntityGUI/EntityGUI_3DSketcherDlg.cxx
src/EntityGUI/EntityGUI_FeatureDetectorDlg.cxx
src/EntityGUI/EntityGUI_FeatureDetectorDlg.h
src/EntityGUI/EntityGUI_PictureImportDlg.cxx
src/EntityGUI/EntityGUI_SubShapeDlg.cxx
src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cxx
src/GEOMAlgo/GEOMAlgo_FinderShapeOn2.cxx
src/GEOMAlgo/GEOMAlgo_SurfaceTools.cxx
src/GEOMGUI/GEOM_Displayer.cxx
src/GEOMGUI/GEOM_msg_en.ts
src/GEOMGUI/GEOM_msg_fr.ts
src/GEOMGUI/GEOM_msg_ja.ts
src/GEOMGUI/GeometryGUI.cxx
src/GEOMGUI/GeometryGUI_Operations.h
src/GEOMImpl/GEOMImpl_GlueDriver.cxx
src/GEOMImpl/GEOMImpl_GlueDriver.hxx
src/GEOMImpl/GEOMImpl_IMeasureOperations.cxx
src/GEOMImpl/GEOMImpl_TranslateDriver.cxx
src/GEOMToolsGUI/GEOMToolsGUI.cxx
src/GEOMToolsGUI/GEOMToolsGUI_1.cxx
src/GEOM_I/GEOM_Gen_i.cc
src/GroupGUI/GroupGUI_GroupDlg.cxx
src/MeasureGUI/MeasureGUI_AngleDlg.cxx
src/OBJECT/GEOM_Constants.cxx
src/OBJECT/GEOM_Constants.h
src/ShapeRecognition/ShapeRec_FeatureDetector.cxx
src/TransformationGUI/TransformationGUI_MultiRotationDlg.cxx
src/TransformationGUI/TransformationGUI_MultiTranslationDlg.cxx
src/XAO/tests/CMakeLists.txt
src/XAO/tests/TestUtils.hxx

index 9bebba4c6587380211d4f4c94a93b893c04af840..f858e7c26a505dd45409b74588a8b224cce80476 100755 (executable)
@@ -30,7 +30,7 @@ CMAKE_POLICY(SET CMP0003 NEW)
 STRING(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UC)
 
 SET(${PROJECT_NAME_UC}_MAJOR_VERSION 7)
-SET(${PROJECT_NAME_UC}_MINOR_VERSION 2)
+SET(${PROJECT_NAME_UC}_MINOR_VERSION 3)
 SET(${PROJECT_NAME_UC}_PATCH_VERSION 0)
 SET(${PROJECT_NAME_UC}_VERSION
   ${${PROJECT_NAME_UC}_MAJOR_VERSION}.${${PROJECT_NAME_UC}_MINOR_VERSION}.${${PROJECT_NAME_UC}_PATCH_VERSION})
diff --git a/doc/salome/gui/GEOM/images/isos.png b/doc/salome/gui/GEOM/images/isos.png
new file mode 100644 (file)
index 0000000..86433e1
Binary files /dev/null and b/doc/salome/gui/GEOM/images/isos.png differ
index e7caa83948a41088c1acab9c4a9e19cbba1effca..c1b77a98068b67449c3f42718c8834e3231911d5 100755 (executable)
Binary files a/doc/salome/gui/GEOM/images/pipe.png and b/doc/salome/gui/GEOM/images/pipe.png differ
index 5dbf37736cfa6334ef94a3d28337ecdd011c15f4..a94f2934ff970bd553fe8dba5dc1ea8589bf367f 100755 (executable)
Binary files a/doc/salome/gui/GEOM/images/pipe2.png and b/doc/salome/gui/GEOM/images/pipe2.png differ
index b317eed99ad7121f2a8eb0234a3d235adda2cc07..804fcfafb265f05a8fc0bef70a3ca9ed59308a7c 100644 (file)
@@ -2,29 +2,38 @@
 
 \page common_operation_page Common
 
-To produce a \b Common operation in the <b>Main Menu</b> select <b>Operations - > Boolean - > Common</b>
+\b Common operation cuts the common part of a list of shapes and transforms it into an independent geometrical object.
 
-This operation cuts the common part of a list of shapes and transforms it into an independent geometrical object.
+To produce it, select in the main menu  <b>Operations - > Boolean - > Common</b>.
 
-The \b Result will be a \b GEOM_Object.
+\image html bool2.png "Common dialog"
 
-<b>TUI Command:</b> <em>geompy.MakeCommonList(theShapesList, checkSelfInte)</em>\n
-<b>Arguments:</b> Name + a list of shapes + an optional flag for self-intersection check.\n
-<b>Advanced option:</b>
-\ref restore_presentation_parameters_page "Set presentation parameters and sub-shapes from arguments".
+In this dialog:
+- Input or accept the default \b Name of the resulting shape. 
+- Click the arrow button and select in the Object Browser or in the Viewer the <b>Objects</b> the common part which of should be found.
+- Activate the corresponding check-box if you wish to <b> Detect Self-intersections </b>
+- Activate \ref restore_presentation_parameters_page "Advanced options" if required.
+- Press "Apply" or "Apply & Close" button to get the result (GEOM_Object).
 
-\image html bool2.png "Common dialog"
 
-\note This algorithm doesn't find all types of self-intersections. It is tuned
+\note This algorithm does not find all types of self-intersections. It is tuned
       to detect vertex/vertex, vertex/edge, edge/edge, vertex/face and edge/face
       intersections. Face/face intersections detection is switched off as it
       is a time-consuming operation that gives an impact on performance. To find
-      all self-intersections please use \ref check_self_intersections_page
+      all self-intersections use \ref check_self_intersections_page
       "Detect Self-intersection tool".
+         
+         
+This operation can be performed using a <b>TUI Command:</b> 
+
+<em>geompy.MakeCommonList(theShapesList, checkSelfInte)</em>
+
+<b>Arguments:</b> Name + a list of shapes + an optional flag for self-intersection check.
+
+There is also a special <b>TUI Command</b> for the Common operation on two shapes :
 
-For a particular case with two shapes for the Common operation there is the following TUI command:
+<em>geompy.MakeCommon(s1, s2, checkSelfInte)</em>
 
-<b>TUI Command:</b> <em>geompy.MakeCommon(s1, s2, checkSelfInte)</em>\n
 <b>Arguments:</b> Name + 2 shapes + an optional flag for self-intersection check.
 
 <b>Example:</b>
@@ -38,8 +47,7 @@ Our <b>TUI Scripts</b> provide you with useful examples of the use of
 
 <b> More details </b>
 
-For a detailed description of the Boolean operations please refer to
-<a href="SALOME_BOA_PA.pdf">this document</a>.
+Please, refer to <a href="SALOME_BOA_PA.pdf">this document</a> for a detailed description of Boolean operations.
 It provides a general review of the Partition and Boolean
 operations algorithms, describes the usage methodology and highlights
 major limitations of these operations.
index 2aac337f199fc5ef6141249b70844e466ca2f085..c69418547ebbf10e564707fb3b4e96be27799a64 100644 (file)
@@ -2,21 +2,30 @@
 
 \page create_isoline_page Isoline
 
-To create an \b Isoline in the <b>Main Menu</b> select <b>New Entity - >
-Basic - > Isoline</b>
+\b Isoline is a 3D curve built on a bounded face limited by <em> [Umin, Umax] </em> and <em> [Vmin, Vmax] </em>
+values of U and V parameters. For all points of the isoline U or V parameter value is constant. 
 
-\n The \b Result of this operation will be a GEOM_Object.
-It may be either an edge or a compound of several edges.
-
-\n You can define an Isoline by a \b Face, \b Type and \b Parameter.
-\n <b>TUI Command:</b> <em>geompy.MakeIsoline(theFace, IsUIsoline, theParameter)</em>
-\n <b>Arguments:</b> Name + Face + Type (True for U-Isoline; False for V-Isoline) + Parameter.
+To create an \b Isoline of a face in the <b>Main Menu</b> select <b>New Entity - > Basic - > Isoline</b>.
 
 \image html isoline1.png
 
+In this dialog:
+- Input or accept the default \b Name of the resulting shape. 
+- Click the arrow button and select in the Object Browser or in the Viewer the \b Face, for which the Isoline is built. 
+- Select along which coordinate: \b U-Isoline or \b V-Isoline the Isoline is built;
+- Set \b Parameter (ranging from 0 to 1), which defines the proportion, at which a face is divided by the isoline.
+If Parameter=0.5, the isoline is a median.
+- Press "Apply" or "Apply & Close" button to get the result (an edge or a compound of several edges).
+
+This operation can be performed using a <b>TUI Command:</b> 
+
+<em>geompy.MakeIsoline(theFace, IsUIsoline, theParameter)</em>
+
+<b>Arguments:</b> Name + Face + Type (True for U-Isoline; False for V-Isoline) + Parameter.
+
 <b>Example:</b>
 
-\image html isoline2.png "Isoline on face"
+\image html isoline2.png "Isoline on a rectangle face"
 
 Our <b>TUI Scripts</b> provide you with useful examples of creation of 
 \ref tui_creation_curve "Basic Geometric Objects".
index 5f899eef40a7eac5fc00d70d3513d38cedcbea5f..a4b42cee3406fde4320daf2f075de8e3a267b1de 100644 (file)
@@ -1,18 +1,15 @@
 /*!
 
-\page create_smoothingsurface_page SmoothingSurface
+\page create_smoothingsurface_page Smoothing Surface
 
-To create a \b SmoothingSurface in the <b>Main Menu</b> select <b>New Entity - >
+To create a <b> Smoothing Surface</b> in the <b>Main Menu</b> select <b>New Entity - >
 Advanced - > SmoothingSurface </b>
 
-Specify the parameters of the SmoothingSurface object creation in the opened dialog
-box and press "Apply" or "Apply & Close" button.
-Result of each operation will be a GEOM_Object.
+Specify the \b Name of the surface and the list of \b Points, from which it is approximated and press "Apply" or "Apply & Close" button.
 
-<b>TUI Command:</b> <em>geompy.MakeSmoothingSurface(lPoints)</em>
+The result of the operation will be a GEOM_Object(Surface).
 
-<b>Arguments:</b>
-- \b Points - list of points
+<b>TUI Command:</b> <em>geompy.MakeSmoothingSurface(Points)</em>
 
 \image html smoothingsurface_dlg.png
 
index f4050a3182e3a68b2f3f807650be89134eae7974..30235d6de64004d146d8f4b56256e741941819a0 100644 (file)
@@ -2,29 +2,37 @@
 
 \page cut_operation_page Cut
 
-To produce a \b Cut operation in the <b>Main Menu</b> select <b>Operations - > Boolean - > Cut</b>
+\b Cut operation cuts a shape with a list of other shapes.
 
-This operation cuts a shape with a list of other shapes.
-
-The \b Result will be a \b GEOM_Object.
-
-<b>TUI Command:</b> <em>geompy.MakeCutList(theMainShape, theShapesList, checkSelfInte)</em>\n
-<b>Arguments:</b> Name + a main shape + a list of other shapes + an optional flag for self-intersection check.\n
-<b>Advanced option:</b>
-\ref restore_presentation_parameters_page "Set presentation parameters and sub-shapes from arguments".
+To produce it, select in the main menu <b>Operations - > Boolean - > Cut</b>
 
 \image html bool3.png "Cut dialog"
 
-\note This algorithm doesn't find all types of self-intersections. It is tuned
+In this dialog:
+- Input or accept the default \b Name of the resulting shape. 
+- Click the arrow button and select in the Object Browser or in the Viewer the <b>Main Object</b>, which will be cut by tool objects.
+- Select the <b>Tool objects</b>, which will cut the main object.
+- Activate the corresponding check-box if you wish to <b> Detect Self-intersections </b>.
+- Activate \ref restore_presentation_parameters_page "Advanced options" if required.
+- Press "Apply" or "Apply & Close" button to get the result (GEOM_Object).
+
+\note This algorithm does not find all types of self-intersections. It is tuned
       to detect vertex/vertex, vertex/edge, edge/edge, vertex/face and edge/face
       intersections. Face/face intersections detection is switched off as it
       is a time-consuming operation that gives an impact on performance. To find
-      all self-intersections please use \ref check_self_intersections_page
+      all self-intersections use \ref check_self_intersections_page
       "Detect Self-intersection tool".
 
-For a particular case with two shapes (object and tool) for the Cut operation there is the following TUI command:
+This operation can be performed using a <b>TUI Command:</b> 
+
+<em>geompy.MakeCutList(theMainShape, theShapesList, checkSelfInte)</em>
+
+<b>Arguments:</b> Name + a main shape + a list of other shapes + an optional flag for self-intersection check.
+
+There is also a special <b>TUI Command:</b> for the Cut operation on two shapes (object and tool) :
+
+<em>geompy.MakeCut(s1, s2, checkSelfInte)</em>
 
-<b>TUI Command:</b> <em>geompy.MakeCut(s1, s2, checkSelfInte)</em>\n
 <b>Arguments:</b> Name + the object + the tool + an optional flag for self-intersection check.
 
 <b>Example:</b>
@@ -38,8 +46,7 @@ Our <b>TUI Scripts</b> provide you with useful examples of the use of
 
 <b> More details </b>
 
-For a detailed description of the Boolean operations please refer to
-<a href="SALOME_BOA_PA.pdf">this document</a>.
+Please refer to <a href="SALOME_BOA_PA.pdf">this document</a> for a detailed description of Boolean operations.
 It provides a general review of the Partition and Boolean
 operations algorithms, describes the usage methodology and highlights
 major limitations of these operations.
index a2779fb0007d449e53230c8566256458dc451e51..95dc6ce06954869fa6cd63f53b8125e8049c15f9 100644 (file)
@@ -2,30 +2,36 @@
 
 \page fuse_operation_page Fuse
 
-To produce a \b Fuse operation in the <b>Main Menu</b> select
-<b>Operations - > Boolean - > Fuse</b>.
+\b Fuse operation creates one shape from a list of shapes.
 
-This operation creates one shape from a list of shapes.
-
-The \b Result will be a \b GEOM_Object.
-
-<b>TUI Command:</b> <em>geompy.MakeFuseList(theShapesList, checkSelfInte)</em>\n
-<b>Arguments:</b> Name + a list of shapes + an optional flag for self-intersection check.\n
-<b>Advanced option:</b>
-\ref restore_presentation_parameters_page "Set presentation parameters and sub-shapes from arguments".
+To produce it, select in the Main Menu <b>Operations - > Boolean - > Fuse</b>.
 
 \image html bool1.png "Fuse dialog"
 
-\note This algorithm doesn't find all types of self-intersections. It is tuned
+In this dialog:
+- Input or accept the default \b Name of the resulting shape. 
+- Click the arrow button and select in the Object Browser or in the Viewer the <b>Objects</b> to be fused.
+- Activate the corresponding check-box if you wish to <b> Detect Self-intersections </b>.
+- Activate \ref restore_presentation_parameters_page "Advanced options" if required.
+- Press "Apply" or "Apply & Close" button to get the result (GEOM_Object).
+
+\note This algorithm does not find all types of self-intersections. It is tuned
       to detect vertex/vertex, vertex/edge, edge/edge, vertex/face and edge/face
       intersections. Face/face intersections detection is switched off as it
       is a time-consuming operation that gives an impact on performance. To find
-      all self-intersections please use \ref check_self_intersections_page
+      all self-intersections use \ref check_self_intersections_page
       "Detect Self-intersection tool".
+This operation can be performed using a <b>TUI Command:</b> 
+
+<em>geompy.MakeFuseList(theShapesList, checkSelfInte)</em>
 
-For a particular case with two shapes to be fused there is the following TUI command:
+<b>Arguments:</b> Name + a list of shapes + an optional flag for self-intersection check.
+
+There is also a special <b>TUI Command</b> for \b Fuse operation on two shapes  :
+
+<em>geompy.MakeFuse(s1, s2, checkSelfInte)</em>
 
-<b>TUI Command:</b> <em>geompy.MakeFuse(s1, s2, checkSelfInte)</em>\n
 <b>Arguments:</b> Name + 2 shapes + an optional flag for self-intersection check.
 
 <b>Example:</b>
@@ -38,13 +44,13 @@ Our <b>TUI Scripts</b> provide you with useful examples of the use of
 \ref tui_fuse "Boolean Operations".
 
 <b> More details </b>
-<ul>
-  <li>For a detailed description of the Boolean operations please refer to
-<a href="SALOME_BOA_PA.pdf">this document</a>.
+
+Please, refer to <a href="SALOME_BOA_PA.pdf">this document</a> for a detailed description of Boolean operations.
 It provides a general review of the Partition and Boolean
 operations algorithms, describes the usage methodology and highlights
-major limitations of these operations.</li>
-  <li>Perhaps you also ask yourself : \ref partition_explanation "What is the difference between partition, compounds and fuse operation ?"</li>
-</ul>
+major limitations of these operations.
+
+Perhaps you also ask yourself : \ref partition_explanation "What is the difference between partition, compounds and fuse operation ?"
 
 */
index 81090266aa76798fa4be45b3b16965aa831fa965..bfce50129bab0ce2bacc4f03f5f121831e91d753 100644 (file)
@@ -44,32 +44,32 @@ predefined materials.</li>
 <li><b>Isolines width</b> - allows to define default width of the isolines.</li>
 <li><b>Preview edges width</b> - allows to define width of the edges for preview.</li>
 <li><b>Measures line width</b> - allows to define lines width of measurements tools.</li>
-<li><b>Automatic bring to front</b> - when option is ON: the objects selected by the user will be automatically 
-made "top-level".</li>
+<li><b>Automatic bring to front</b> - when the option is on, the objects selected by the user automatically become "top-level".</li>
 
 </ul>
 </ul>
 
 <ul>
-<li><b>Number of isolines</b></li> - this submenu allows to specify the 
-number of isolines along the axes of coordinates:
-<ul>
-<li><b>Along U</b>
-<li><b>Along V</b>
-</ul>
+<li><b>Number of isolines</b> - allows to specify the number of isolines along <b>Along U</b> and <b>Along V</b> coordinate axes. They are shown on each selected face. For example:
+
+\image html isos.png
+
+This preference is not related with <b>Create Isoline</b> operation. 
+By default <b>Along U</b> and <b>Along V</b> are null and isolines are not drawn. </li>
 </ul>
 
 <ul>
 <li><b>Input fields precision</b></li>
 <ul>
-<li><b>Length precision</b> - allows to ajust input precision of coordinates and dimensions.</li>
-<li><b>Angular precision</b> - allows to ajust input precision of angles.</li>
-<li><b>Length tolerance precision</b> - allows to ajust input precision of tolerance of coordinates and dimensions.</li>
-<li><b>Angular tolerance precision</b> - allows to ajust input precision of tolerance of angles.</li>
-<li><b>Weight precision</b> - allows to ajust input precision of weight and mass.</li>
-<li><b>Density precision</b> - allows to ajust input precision of density.</li>
-<li><b>Parametric precision</b> - allows to ajust input precision of parametric values.</li>
-<li><b>Parametric tolerance precision</b> - allows to ajust input precision of tolerance in parametric space.</li>
+<li><b>Length precision</b> - allows to adjust input precision of coordinates and dimensions.</li>
+<li><b>Angular precision</b> - allows to adjust input precision of angles.</li>
+<li><b>Length tolerance precision</b> - allows to adjust input precision of tolerance of coordinates and dimensions.</li>
+<li><b>Angular tolerance precision</b> - allows to adjust input precision of tolerance of angles.</li>
+<li><b>Weight precision</b> - allows to adjust input precision of weight and mass.</li>
+<li><b>Density precision</b> - allows to a just input precision of density.</li>
+<li><b>Parametric precision</b> - allows to adjust input precision of parametric values.</li>
+<li><b>Parametric tolerance precision</b> - allows to adjust input precision of tolerance in parametric space.</li>
 </ul>
 </ul>
 
index 775be618f751e31b3f122743e0d7a5eb4acc8cfc..ccc5c6a7e4900aa60434bd3d19ee31189f1ca7a4 100644 (file)
@@ -8,6 +8,8 @@ are implemented via plug-ins, which gives the opportunity to
 expand the range of available formats by adding more plug-ins (for
 example, CATIA 5).
 
+The \subpage xao_format_page "import and export of shapes in XAO format" is implemented differently.
+
 <em>To import geometrical objects from a BREP, IGES, STEP, ACIS or STL file:</em>
 
 \par
index 7a9035091df194b1e842a1ec9ca523b0ffe4c56e..00c1bf700fa65d456e30b961e005dedb8adadeff 100644 (file)
 - \subpage transform_geom_obj_page "transformation of geometrical objects"
   using various algorithms;
 - \subpage repairing_operations_page "optimization of geometrical objects";
-- viewing \subpage geometrical_obj_prop_page "geometrical object properties"
-  and other information about geometrical objects using
+- viewing information about geometrical objects using
   \subpage using_measurement_tools_page "measurement tools";
 - \subpage pictures_page "designing shapes from pictures";
-- easily setting parameters via the variables predefined in
-  \subpage using_notebook_geom_page "SALOME notebook".
-
-The possibility to classify the created geometrical objects by moving it into early created container (folder) is detailed on
-\subpage arranging_study_objects_page section.
 
-XAO format describing a shape with its topology, groups and fields is detailed on \subpage xao_format_page section.
+It is possible to easily set parameters via the variables predefined in
+  \subpage using_notebook_geom_page "SALOME notebook".
+Also, there is a possibility to customize an
+\subpage arranging_study_objects_page "arrangement of the geometrical objects in the SALOME study".
 
 Geometry module preferences are described in the
 \subpage geometry_preferences_page section of SALOME Geometry Help.
index 59a022351b8af1f4ece70de01c957649ee86e0db..d67becaaa6755cfe3a8be04179e80798a17cbfe1 100644 (file)
@@ -1,6 +1,6 @@
 /*!
 
-\page material_page Material properties
+\page material_page Material 
 
 <ul>
 <li>\ref material_general_description_anchor "General Description"</li>
 be changed in the future versions of SALOME Geometry module.
 
 You can change the material properties of the selected shape(s) in
-the dedicated dialog box. This dialog box can be invoked from the
-context popup menu. The layout of context menu can be customized via
+the context menu dialog. The layout of context menu can be customized via
 "Show predefined materials in popup menu" preferences option.
 If this option is switched off, only "Material properties" item will 
 be shown in the popup menu. If this option is on (by default), "Material 
-properties" item in the popup menu will open a submenu with list of predefined 
+properties" item in the popup menu will open a sub-menu with a list of predefined 
 materials:
 
 \image html hide_predef_material.png
@@ -44,9 +43,9 @@ the materials is different:
 - shape presentation in OCC and VTK viewers is not fully identical;
 - some material attributes can affect the presentation in a different way.
 
-\anchor material_opengl_model_anchor <h2>OpenGL ligthing model</h2>
+\anchor material_opengl_model_anchor <h2>OpenGL lighting model</h2>
 
-The material is specifed by several attributes of the lighting
+The material is specified by several attributes of the lighting
 model. More details can be found in the documentation related to the
 OpenGL programming, for example, here: http://www.glprogramming.com/red/chapter05.html.
 
@@ -54,7 +53,7 @@ In the OpenGL lighting model, the light in a scene comes from several
 light sources; the light sources have an effect only when there are
 surfaces that absorb and reflect light. Each surface is assumed to be
 composed of a material with various properties. A material might emit
-its own light (like headlights on an automobile), it might scatter
+its own light (like headlights of a vehicle), it might scatter
 some incoming light in all directions, and it might reflect a
 portion of the incoming light in a preferential direction like a
 mirror or other shiny surface.
@@ -120,7 +119,7 @@ predefined and custom.
   models are specified by the user and can be modified at any moment.
 </li>
 
-<li>The widgets to the right allow modifyng different properties of the material model:
+<li>The widgets to the right allow modifying different properties of the material model:
 - \b Ambient color and coefficient (floating point value between 0 and 1)
 - \b Diffuse color and coefficient (floating point value between 0 and 1)
 - \b Specular color and coefficient (floating point value between 0 and 1)
@@ -143,7 +142,7 @@ to change the name of material model.</li>
 \image html material.png
 
 In addition to the functionality of <b>Materials library</b>, this
-dialog provides objects selection mechanizm and \b Color property.
+dialog provides objects selection mechanism and \b Color property.
 
 If the material model is specified as a \em physical (\em Gold,
 for example), the shape color (more precisely its \em ambient color)
@@ -151,7 +150,7 @@ cannot be modified. If you assign a physical material model to the
 shape, the "Color" menu item will not be available in the popup menu.
 
 If the model is non-physical (\em artificial), the color can be changed
-to any appopriate one, only other attributes will be constant. In the
+to any appropriate one, only other attributes will be constant. In the
 dialog box you will be able to modify the color of the shape via the
 "Color" button. "Ambient color" button will be disabled to signalize
 that this attribute of the model is ignored. Also, it will be possible
index 13b09a7912aa6a370049fbf19fa64726015b909d..30ac52bbef905cf1b28477a8894da30c8f4b8c50 100644 (file)
@@ -2,15 +2,11 @@
 
 \page partition_page Partition
 
-<ul>
-<li>For a detailed description of the Partition operation please refer to
-<a href="SALOME_BOA_PA.pdf">this document</a>. 
-It provides a general review of the Partition and Boolean
-operations algorithms, describes the usage methodology and highlights
-major limitations of these operations.</li>
-  
-<li>Perhaps you also ask yourself : \ref partition_explanation "What's the difference between partition, compounds and fuse operation ?"</li>
-</ul>
+For a detailed description of the Partition operation please refer to <a href="SALOME_BOA_PA.pdf">this document</a>.
+It provides a general review of the Partition and Boolean operations algorithms, describes the usage methodology and highlights
+major limitations of these operations.
+
+Perhaps you also ask yourself : \ref partition_explanation "What's the difference between partition, compounds and fuse operation ?"
 
 To produce a \b Partition in the <b>Main Menu</b> select <b>Operations - > Partition</b>
 
@@ -28,7 +24,7 @@ Resulting Type of shape.
 
 As far as the intersection of two objects can produce any type of
 geometrical objects, <b>Resulting type</b> box allows choosing the
-preferrable result, i.e. a solid, a shell, a list of faces, etc.
+preferable result, i.e. a solid, a shell, a list of faces, etc.
 
 The <b>Resulting type</b> has to be equal or lower than the type of the
 \em Objects. In other words, if the \em Objects don't contain any
@@ -47,28 +43,27 @@ face (there will be a hole in the resulting face, where the original
 face intersects with the box, see the corresponding \ref partition_picture_3 "picture" below).
 
 <b>No sub-shapes intersection (Compounds only)</b> check box affects
-only input shapes of the Compound type. If this option is switched off (default
-behavior) each input compound will be automatically exploded into
-sub-shapes and the intersection between these shapes will be also
-computed. If this option is switched on, the intersection between
-sub-shapes will not be performed. In this case the Partition algorithm
-will work faster, but the result might differ from the default behavior.
-
-<b>Detect Self-intersections</b> check box is used to check arguments
-self-intersections. If this option is switched on (default behavior)
-each input shape is checked for self-intersection. In case of its detection
-the operation is aborted. If this option is switched off, the partition
-algorithm is performed without self-intersection checks.
-
-\note This algorithm doesn't find all types of self-intersections. It is tuned
+only input shapes of the Compound type.
+- If this option is switched off (default behavior) each input compound will be automatically
+exploded into sub-shapes and the intersection between these shapes will be also computed.
+- If this option is switched on, the intersection between sub-shapes will not be performed.
+In this case the Partition algorithm will work faster, but the result might differ from the 
+default behavior.
+
+<b>Detect Self-intersections</b> check box is used to check self-intersection of arguments.
+- If this option is switched on (by default), each input shape is checked for self-intersection.
+If self-intersection is detected, the operation is aborted.
+- If this option is switched off, the partition algorithm is performed without self-intersection
+checks.
+
+\note This algorithm does not find all types of self-intersections. It is tuned
       to detect vertex/vertex, vertex/edge, edge/edge, vertex/face and edge/face
       intersections. Face/face intersections detection is switched off as it
       is a time-consuming operation that gives an impact on performance. To find
       all self-intersections please use \ref check_self_intersections_page
       "Detect Self-intersection tool".
 
- <b>Advanced option:</b>
-   \ref restore_presentation_parameters_page "Set presentation parameters and sub-shapes from arguments".
+- Activate \ref restore_presentation_parameters_page "Advanced options" if required.
 
 \note Partition is a complex operation, so its result of it depends
       on the quality of the initial shapes. Sometimes, if partition fails,
@@ -95,7 +90,7 @@ Here,
 - \em Limit is a Type of resulting shapes
 - \em KeepNonlimitShapes is a flag that allows to preserve standalone
 shapes of low dimension (than \em Limit) in the result.
-- \em checkSelfInte is a flag that tells if the arguments should
+- \em checkSelfInte is a flag that indicates if the arguments should
 be checked for self-intersection prior to the operation.
 - Other parameters are obsolete and kept only for compatibility with
 previous versions of SALOME.
@@ -106,15 +101,14 @@ previous versions of SALOME.
 
 <b>Arguments:</b> Name + 1 shape to be intersected + 1 cutting plane.
 
-<b>Advanced option:</b>
-\ref restore_presentation_parameters_page "Set presentation parameters and sub-shapes from arguments".
+Activate \ref restore_presentation_parameters_page "Advanced options" if required.
 
 <b>TUI Command:</b>
 
 <em>geompy.MakeHalfPartition(Shape, Plane, checkSelfInte)</em>, where:
 - \em Shape is a source shape to be intersected by the \em Plane
 - \em Plane is a tool shape, to intersect the \em Shape.
-- \em checkSelfInte is a flag that tells if the arguments should
+- \em checkSelfInte is a flag that indicates if the arguments should
 be checked for self-intersection prior to the operation.
 
 <b>Examples:</b>
index 8c91ae20b95a6829ac4b7e7d7aad6c375512fded..26ab2efb1e4ce4e36a388c806f5155052c00746a 100644 (file)
@@ -6,7 +6,7 @@
 <b>Repair - > Remove internal faces</b>.
 
 \n This operation removes all shared faces from a compound to obtain
-one or more bigger solids from the set of smaller solids.
+one or more bigger solids from a set of smaller solids.
 
 \image html remove_webs.png
 
@@ -15,8 +15,8 @@ one or more bigger solids from the set of smaller solids.
    \ref restore_presentation_parameters_page "Set presentation parameters and sub-shapes from arguments".
 
 \note Only shared faces will be removed. Coincident but not shared
-faces will stay as is, use GlueFaces or MakePartition before
-RemoveInternalFaces if you need to remove them.
+faces will stay as is, use Glue Faces or Partition before
+Remove Internal Faces if you need to remove them.
 
 \n <b>TUI Command:</b> <em>geompy.RemoveInternalFaces(theCompound)</em>,
 where <em>theCompound</em> is a compound of solids.
index 4cbb1ed1b4e0f4bf525c4dd836d2d5469a513ad7..d0559d764ccbda15611a569384aa189254bc9cbe 100644 (file)
@@ -26,15 +26,15 @@ splits an edge in two.</li>
 <li>\subpage change_orientation_operation_page "Change orientation" -
 reverses the normals of the selected faces.</li>
 <li>\subpage remove_webs_operation_page "Remove internal faces" -
-rebuilds the topology of a compound of solids by removing of the faces
-that are shared by several solids.</li>
+rebuilds the topology of a compound of solids by removing the faces
+are shared by several solids.</li>
 <li>\subpage remove_extra_edges_operation_page "Remove extra edges" -
 removes seam and degenerated edges from the given shape.</li>
 <li>\subpage fuse_edges_operation_page "Fuse Collinear Edges within a Wire" -
 removes selected vertices from a given wire in case if adjacent edges
 are C1 continuous.</li>
 <li>\subpage union_faces_operation_page "Union faces" -
-unites all faces sharing one surface on a given shape.</li>
+unites on a given shape all faces sharing the same surface.</li>
 </ul>
 
 */
index b5909be8350003a18995b7a69ee02d48bebdad2d..0b741eed44c2465f905efaf1d4a664bb12547ef8 100644 (file)
@@ -2,26 +2,31 @@
 
 \page section_opeartion_page Section
 
-To produce a \b Section operation in the <b>Main Menu</b> select
-<b>Operations - > Boolean - > Section</b>
+\b Section operation creates an edge or a wire representing the intersection of surfaces of two shapes.
 
-This operation creates the section between 2 shapes.
-
-The \b Result will be any \b GEOM_Object (EDGE or WIRE).
-
-<b>TUI Command:</b> <em>geompy.MakeSection(s1, s2, checkSelfInte)</em>\n
-<b>Arguments:</b> Name + 2 shapes + an optional flag for self-intersection check.\n
-<b>Advanced option:</b>
-\ref restore_presentation_parameters_page "Set presentation parameters and sub-shapes from arguments".
+To produce it, select in the main menu <b>Operations - > Boolean - > Section</b>
 
 \image html neo-section.png "Section dialog"
 
-\note This algorithm doesn't find all types of self-intersections. It is tuned
+In this dialog:
+- Input or accept the default \b Name of the resulting shape. 
+- Click the arrow button and select in the Object Browser or in the Viewer the intersecting <b>Objects</b>.
+- Activate the corresponding check-box if you wish to <b> Detect Self-intersections </b>.
+- Activate \ref restore_presentation_parameters_page "Advanced options" if required.
+- Press "Apply" or "Apply & Close" button to get the result (EDGE or WIRE).
+
+\note This algorithm does not find all types of self-intersections. It is tuned
       to detect vertex/vertex, vertex/edge, edge/edge, vertex/face and edge/face
       intersections. Face/face intersections detection is switched off as it
       is a time-consuming operation that gives an impact on performance. To find
-      all self-intersections please use \ref check_self_intersections_page
+      all self-intersections use \ref check_self_intersections_page
       "Detect Self-intersection tool".
+         
+This operation can be performed using a <b>TUI Command:</b> 
+
+<em>geompy.MakeSection(s1, s2, checkSelfInte)</em>
+
+<b>Arguments:</b> Name + 2 shapes + an optional flag for self-intersection check.
 
 <b>Example:</b>
 
@@ -34,8 +39,7 @@ Our <b>TUI Scripts</b> provide you with useful examples of the use of
 
 <b> More details </b>
 
-For a detailed description of the Boolean operations please refer to
-<a href="SALOME_BOA_PA.pdf">this document</a>.
+Please refer to <a href="SALOME_BOA_PA.pdf">this document</a> for a detailed description of Boolean operations. 
 It provides a general review of the Partition and Boolean
 operations algorithms, describes the usage methodology and highlights
 major limitations of these operations.
index 2af3989cd3bf1071ab5e52dd311f016c41850932..18d95e881189b5aa227fc328e86f9e3c2fe498e2 100644 (file)
@@ -2,26 +2,28 @@
 
 \page sewing_operation_page Sewing
 
-\n To produce a \b Sewing operation in the <b>Main Menu</b> select <b>Repair - > Sewing</b>.
+To produce a \b Sewing operation in the <b>Main Menu</b> select <b>Repair - > Sewing</b>.
 
-\n It is possible to sew only compounds of faces or shells.
+The \b Result will be a \b GEOM_Object. 
 
-\n The \b Result will be a \b GEOM_Object. 
+\image html repair6.png
 
-\n <b>TUI Command:</b> <em>geompy.MakeSewing(ListOfShape, Precision, AllowNonManifold=False),</em>
- where \em ListOfShape is list of faces or shells to be sewed, \em Precision is a
-precision for sewing, \em AllowNonManifold flag that allows non-manifold sewing.
+In this dialog: 
+- Click on the "Arrow" button and select in the Object Browser or in the viewer one or more \b Shapes (faces or shells) to be sewn.
+- Activate <b>Allow Non Manifold </b> check-box to produce non-manifold sewing, if required.
+- Define precision for sewing in \b Tolerance field.
+- Activate <b> Detect Free boundaries</b> button to display the number of free boundaries in the shape:
+\image html neo-detect2.png 
+- Click \b Apply or <b>Apply and Close</b> button.
 
-\image html repair6.png
+This operation can be also launched using a <b>TUI Command:</b>
 
-\n <b>Arguments:</b> Name + 1 or more shapes + 1 value (sew
-precision).
-\n \b Detect button allows to display the number of free boundaries in
-your shape:
+<em>geompy.MakeSewing(ListOfShape, Precision, AllowNonManifold=False),</em>
 
-\image html neo-detect2.png
+where \em ListOfShape is a list of faces or shells to be sewn, \em Precision is a
+precision for sewing, \em AllowNonManifold is a flag that allows non-manifold sewing.
 
-\n <b>Example:</b>
+<b>Example:</b>
 
 \image html image112.png "The initial faces"
 
index 65cbd4307bca00b8249137f18460309cb2c04f7b..802f2213e3c5fb2e10d7cbd0ff9741fa29fa1227 100755 (executable)
@@ -2,20 +2,21 @@
 
 \page union_faces_operation_page Union Faces
 
-\n To <b>Union Faces</b> in the <b>Main Menu</b> select
-<b>Repair - > Union Faces</b>.
-\n This operation unites all faces sharing one surface on a given
-shape.
+This operation unites on a given shape all faces sharing the same surface. 
 
-\n <b>TUI Command:</b> <em>geompy.UnionFaces(theShape)</em>,
-where <em>theShape</em> is a compound or a single solid.
-\n <b>Arguments:</b> Name + one shape + a flag.
-\n <b>Advanced option:</b>
-   \ref restore_presentation_parameters_page "Set presentation parameters and sub-shapes from arguments".
+To <b>Union Faces</b> in the <b>Main Menu</b> select <b>Repair - > Union Faces</b>.
 
 \image html union_faces.png
 
-\n <b>Example:</b>
+In this dialog: 
+- Click on the "Arrow" button and select in the Object Browser or in the viewer one or more \b Shapes (compounds or single solids).
+- If necessary, activate \ref restore_presentation_parameters_page "Advanced Transformation Options".
+- Click \b Apply or <b>Apply and Close</b> button.
+
+This operation can be also launched using a <b>TUI Command:</b> <em>geompy.UnionFaces(theShape)</em>,
+where <em>theShape</em> is a compound or a single solid.
+
+<b>Example:</b>
 
 \image html union_faces1.png
 <center><em>Shape with not united faces</em></center>
index 26b90020e28c8e14f0b5edaf1ea9df2e6a4d5a7f..74acd1e8b20ab6d10730e72f9610488c9c7762ce 100644 (file)
@@ -2,10 +2,10 @@
 
 \page using_boolean_operations_page Boolean Operations
 
-For detail description of the Boolean operations please refer to
+For a detailed description of Boolean operations refer to
 <a href="SALOME_BOA_PA.pdf">this document</a>. 
 It provides a general review of the Partition and Boolean
-operations algorithms, describes the usage methodology and highlighs
+operations algorithms, describes the usage methodology and highlights
 major limitations of these operations.
 
 You can use the following boolean operations for construction of more
@@ -44,7 +44,7 @@ operation.
 \par
 <em>geompy.MakeBoolean(Shape1, Shape2, Operation, checkSelfInte),</em> where \em
 Shape1 is the first argument and \em Shape2 is the second argument of
-Boolean operation, \em Operation is a type of the Boolean operation (1
+a Boolean operation, \em Operation is the type of a Boolean operation (1
 &mdash; Common, 2 &mdash; Cut, 3 &mdash; Fuse, 4 &mdash; Section).
 
 
@@ -60,17 +60,17 @@ argument and \em Shape2 is the second argument of Common operation;
 <em>geompy.MakeCut(Shape1, Shape2, checkSelfInte)</em>, where \em Shape1 is the first
 argument and \em Shape2 is the second argument of Cut operation;
 
-The flag \em checkSelfInte tells whether arguments should be checked for
-self-intersection prior to an operation. Its default value is \em False which
+The flag \em checkSelfInte indicates whether the arguments should be checked for
+self-intersection prior to an operation. Its default value is \em False, which
 means that there is no need to check it. This option is provided to ensure that
-an operation is performed on not self-intersected shapes as these shapes are
+an operation is performed on not self-intersected shapes as they are
 not valid for boolean operations.
 
-\note This algorithm doesn't find all types of self-intersections. It is tuned
+\note This algorithm does not find all types of self-intersections. It is tuned
       to detect vertex/vertex, vertex/edge, edge/edge, vertex/face and edge/face
       intersections. Face/face intersections detection is switched off as it
       is a time-consuming operation that gives an impact on performance. To find
-      all self-intersections please use \ref check_self_intersections_page
+      all self-intersections use \ref check_self_intersections_page
       "Detect Self-intersection tool".
 
 Our <b>TUI Scripts</b> provide you with useful examples of the use of 
index 513f6077f41f6783447bd74c0d00deb2a191b3d7..238b12a08ceb7e6eab24d448bf97044b662c5ef1 100644 (file)
@@ -1,9 +1,10 @@
 /*!
 
-\page using_measurement_tools_page Measuring objects properties
+\page using_measurement_tools_page Object properties
 
-\n Measurement tools in GEOM are necessary for getting different data
-concerning created or imported geometrical objects :
+\n The key property of an object is its \subpage geometrical_obj_prop_page "Geometrical Type"
+  
+\n There are also various <b> Measurement tools </b> for getting data about created or imported geometrical objects :
 
 <ul>
 <li>\subpage point_coordinates_page "Point coordinates"</li>
index a5882fcfb33ee7607e75000e21288bf63c832332..774dbaac261c9110499fd2bd541f1c5a00092492 100644 (file)
@@ -101,10 +101,9 @@ and then displays only the children of the selected object(s).
   Switch the checkbox near the appropriate object and
   click <b>Publish</b> or <b>Publish And Close</b> button. 
 
-  "Eye" icons in this dialog box allow previewing unpublished objects in the viewer. All 
-  unpublished objects are by default sorted by the name in ascending order. It is possible
-  to change order of sorting (ascending / descending) by clicking the corresponding title
-  bar of the objects list.
+  "Eye" icons in this dialog box allow previewing unpublished objects in the viewer. By default all 
+  unpublished objects are sorted by name in ascending order. It is possible
+  to change the order (ascending / descending) by clicking the corresponding title bar of the objects list.
 </li>
 </ul>
 
@@ -115,8 +114,7 @@ window providing some information on a selected geometric object:
 
 - <b>Creation operation</b> shows a name of the operation
 used to create the selected object.
-- In a table under <b>Creation operation</b>, \b Parameter and \b
-Value are a name and a value of a parameter used to create the
-selected object.
+- The table below lists \b Parameters used to create the
+selected object and their \b Values.
 
 */
index b5c60a92d13a8184b391716cd124817565ec9570..00d810973e6b2c6be4f4e3e33bc5f6899fb92c96 100644 (file)
@@ -1,10 +1,24 @@
 /*!
 
-\page xao_format_page The XAO format
+\page xao_format_page Import and export of shapes in XAO format
 
 XAO is a file format which describes a shape with its topology, groups and fields.
 
-- \subpage export_xao_page "Export"
-- \subpage import_xao_page "Import"
+To import a shape in the \b XAO format, in the <b>Main Menu</b> select <b>New Entity ->
+Import / Export -> Import XAO. </b> 
+
+To export a shape in the \b XAO format, in the <b>Main Menu</b> select <b>New Entity ->
+Import / Export -> Export XAO. </b>
+
+\image html exportxao_dlg.png 
+
+In this dialog:
+- Click the arrow button and select in the Object Browser or in the Viewer the <b>Shape</b> to be exported.
+- Input the <b>File name</b> to create a new file or click browse button to save in an existing file.
+- Select the \b Groups of the chosen shape to be exported.
+- Select the \b Fields of the chosen shape to be exported.
+- Press "Apply" or "Apply & Close" button to get the result.
+
+It also possible to export a shape using the TUI Command: <em>geompy.MakeExportXAO(Shape, FileName, Groups, Fields)</em>
 
 */
index 410282221cc8a833516d8362b49cf3cdfba269c7..5e384ce3008ce1499881a20c597cb1ecb6ce86ca 100644 (file)
Binary files a/resources/pipesections.png and b/resources/pipesections.png differ
index 4e686ea82db43710c5da910ee84b436a63246a66..489ee5c8bc09589c4a2b029787828f1f229a0bcd 100644 (file)
@@ -871,18 +871,45 @@ bool AdvancedGUI_PipeTShapeDlg::isValid (QString& msg)
     ok = LReductionGroupParams->SpinBox2->isValid(msg, !IsPreview()) && ok;
     ok = LReductionGroupParams->SpinBox3->isValid(msg, !IsPreview()) && ok;
     ok = LReductionGroupParams->SpinBox4->isValid(msg, !IsPreview()) && ok;
+    if(MainTubeGroupParams->SpinBox_DX->value() == LReductionGroupParams->SpinBox1->value()) {
+      msg += tr("GEOM_PIPETSHAPE_ERR_EQUAL_RADII_L") + "\n";
+      ok = false;
+    }
+    if(MainTubeGroupParams->SpinBox_DX->value() + MainTubeGroupParams->SpinBox_DY->value() ==
+       LReductionGroupParams->SpinBox1->value() + LReductionGroupParams->SpinBox2->value()) {
+      msg += tr("GEOM_PIPETSHAPE_ERR_EQUAL_EXT_RADII_L") + "\n";
+      ok = false;
+    }
   }
   if (RReductionGroupParams->GroupBox1->isChecked()) {
     ok = RReductionGroupParams->SpinBox1->isValid(msg, !IsPreview()) && ok;
     ok = RReductionGroupParams->SpinBox2->isValid(msg, !IsPreview()) && ok;
     ok = RReductionGroupParams->SpinBox3->isValid(msg, !IsPreview()) && ok;
     ok = RReductionGroupParams->SpinBox4->isValid(msg, !IsPreview()) && ok;
+    if(MainTubeGroupParams->SpinBox_DX->value() == RReductionGroupParams->SpinBox1->value()) {
+      msg += tr("GEOM_PIPETSHAPE_ERR_EQUAL_RADII_R") + "\n";
+      ok = false;
+    }
+    if(MainTubeGroupParams->SpinBox_DX->value() + MainTubeGroupParams->SpinBox_DY->value() ==
+       RReductionGroupParams->SpinBox1->value() + RReductionGroupParams->SpinBox2->value()) {
+      msg += tr("GEOM_PIPETSHAPE_ERR_EQUAL_EXT_RADII_R") + "\n";
+      ok = false;
+    }
   }
   if (IReductionGroupParams->GroupBox1->isChecked()) {
     ok = IReductionGroupParams->SpinBox1->isValid(msg, !IsPreview()) && ok;
     ok = IReductionGroupParams->SpinBox2->isValid(msg, !IsPreview()) && ok;
     ok = IReductionGroupParams->SpinBox3->isValid(msg, !IsPreview()) && ok;
     ok = IReductionGroupParams->SpinBox4->isValid(msg, !IsPreview()) && ok;
+    if(IncidentTubeGroupParams->SpinBox_DX->value() == IReductionGroupParams->SpinBox1->value()) {
+      msg += tr("GEOM_PIPETSHAPE_ERR_EQUAL_RADII_I") + "\n";
+      ok = false;
+    }
+    if(IncidentTubeGroupParams->SpinBox_DX->value() + IncidentTubeGroupParams->SpinBox_DY->value() ==
+       IReductionGroupParams->SpinBox1->value() + IReductionGroupParams->SpinBox2->value()) {
+      msg += tr("GEOM_PIPETSHAPE_ERR_EQUAL_EXT_RADII_I") + "\n";
+      ok = false;
+    }
   }
 
   ok = fabs(MainTubeGroupParams->SpinBox_DX->value()) > Precision::Confusion() && ok;
index e7524147cb1530ad452d148c785e281d1a7608e6..2aab6e88ac713ffa834726334221af60ec1e492f 100644 (file)
         <source>GEOM_PIPETSHAPE_GROUPPOS</source>
         <translation>Position</translation>
     </message>
+    <message>
+        <source>GEOM_PIPETSHAPE_ERR_EQUAL_RADII_L</source>
+        <translation>Main pipe Radius can't be equal to Left thickness reduction Radius (rL)!</translation>
+    </message>
+    <message>
+        <source>GEOM_PIPETSHAPE_ERR_EQUAL_EXT_RADII_L</source>
+        <translation>Main pipe external Radius (Radius + Width) can't be equal to Left thickness reduction external Radius (rL + wL)!</translation>
+    </message>
+    <message>
+        <source>GEOM_PIPETSHAPE_ERR_EQUAL_RADII_R</source>
+        <translation>Main pipe Radius can't be equal to Right thickness reduction Radius (rR)!</translation>
+    </message>
+    <message>
+        <source>GEOM_PIPETSHAPE_ERR_EQUAL_EXT_RADII_R</source>
+        <translation>Main pipe external Radius (Radius + Width) can't be equal to Right thickness reduction external Radius (rR + wR)!</translation>
+    </message>
+    <message>
+        <source>GEOM_PIPETSHAPE_ERR_EQUAL_RADII_I</source>
+        <translation>Incident pipe Radius can't be equal to Incident pipe thickness reduction Radius (rI)!</translation>
+    </message>
+    <message>
+        <source>GEOM_PIPETSHAPE_ERR_EQUAL_EXT_RADII_I</source>
+        <translation>Incident pipe external Radius (Radius + Width) can't be equal to Incident pipe thickness reduction external Radius (rI + wI)!</translation>
+    </message>
 </context>
 <context>
     <name>AdvancedGUI_SmoothingSurfaceDlg</name>
index 69c38cbc9cba0d53f622bfe3861bf729f199f0c9..74bce48825e98024a939769d16ea1fe5e5451aee 100644 (file)
         <source>GEOM_PIPETSHAPE_GROUPPOS</source>
         <translation>Position</translation>
     </message>
+    <message>
+        <source>GEOM_PIPETSHAPE_ERR_EQUAL_RADII_L</source>
+        <translation type="unfinished">Main pipe Radius can't be equal to Left thickness reduction Radius (rL)!</translation>
+    </message>
+    <message>
+        <source>GEOM_PIPETSHAPE_ERR_EQUAL_EXT_RADII_L</source>
+        <translation type="unfinished">Main pipe external Radius (Radius + Width) can't be equal to Left thickness reduction external Radius (rL + wL)!</translation>
+    </message>
+    <message>
+        <source>GEOM_PIPETSHAPE_ERR_EQUAL_RADII_R</source>
+        <translation type="unfinished">Main pipe Radius can't be equal to Right thickness reduction Radius (rR)!</translation>
+    </message>
+    <message>
+        <source>GEOM_PIPETSHAPE_ERR_EQUAL_EXT_RADII_R</source>
+        <translation type="unfinished">Main pipe external Radius (Radius + Width) can't be equal to Right thickness reduction external Radius (rR + wR)!</translation>
+    </message>
+    <message>
+        <source>GEOM_PIPETSHAPE_ERR_EQUAL_RADII_I</source>
+        <translation type="unfinished">Incident pipe Radius can't be equal to Incident pipe thickness reduction Radius (rI)!</translation>
+    </message>
+    <message>
+        <source>GEOM_PIPETSHAPE_ERR_EQUAL_EXT_RADII_I</source>
+        <translation type="unfinished">Incident pipe external Radius (Radius + Width) can't be equal to Incident pipe thickness reduction external Radius (rI + wI)!</translation>
+    </message>
 </context>
 <context>
     <name>AdvancedGUI_SmoothingSurfaceDlg</name>
index 6bb1122f68b069f40420dd185c22c33e8e067c7a..e2535d2dc74acfd1b1d30d69dc59bb83247f5f14 100644 (file)
     <name>@default</name>
     <message>
       <source>GEOM_ADVANCED</source>
-      <translation>GEOM_ADVANCED</translation>
+      <translation>高度な形状: タイプ %1</translation>
     </message>
     <message>
       <source>GEOM_ADVANCED_201</source>
-      <translation>GEOM_ADVANCED_201</translation>
+      <translation>T型パイプ</translation>
     </message>
     <message>
       <source>GEOM_ADVANCED_202</source>
-      <translation>GEOM_ADVANCED_202</translation>
+      <translation>カット済みディスク</translation>
     </message>
     <message>
       <source>GEOM_ADVANCED_203</source>
-      <translation>GEOM_ADVANCED_203</translation>
+      <translation>カット シリンダー</translation>
     </message>
     <message>
       <source>GEOM_DIVIDEDDISK</source>
-      <translation>GEOM_DIVIDEDDISK</translation>
+      <translation>Divided_Disk</translation>
     </message>
     <message>
       <source>GEOM_DIVIDEDDISK_TITLE</source>
-      <translation>GEOM_DIVIDEDDISK_TITLE</translation>
+      <translation>分割ディスクの構築</translation>
     </message>
     <message>
       <source>GEOM_DIVIDEDCYLINDER</source>
-      <translation>GEOM_DIVIDEDCYLINDER</translation>
+      <translation>Divided_Cylinder</translation>
     </message>
     <message>
       <source>GEOM_DIVIDEDCYLINDER_TITLE</source>
-      <translation>GEOM_DIVIDEDCYLINDER_TITLE</translation>
+      <translation>分割シリンダの構築</translation>
     </message>
     <message>
       <source>MEN_DIVIDEDCYLINDER</source>
-      <translation>MEN_DIVIDEDCYLINDER</translation>
+      <translation>分割シリンダ</translation>
     </message>
     <message>
       <source>TOP_DIVIDEDCYLINDER</source>
-      <translation>TOP_DIVIDEDCYLINDER</translation>
+      <translation>分割シリンダ</translation>
     </message>
     <message>
       <source>STB_DIVIDEDCYLINDER</source>
-      <translation>STB_DIVIDEDCYLINDER</translation>
+      <translation>分割シリンダ</translation>
     </message>
     <message>
       <source>MEN_DIVIDEDDISK</source>
-      <translation>MEN_DIVIDEDDISK</translation>
+      <translation>分割ディスク</translation>
     </message>
     <message>
       <source>TOP_DIVIDEDDISK</source>
-      <translation>TOP_DIVIDEDDISK</translation>
+      <translation>分割ディスク</translation>
     </message>
     <message>
       <source>STB_DIVIDEDDISK</source>
-      <translation>STB_DIVIDEDDISK</translation>
+      <translation>分割ディスク</translation>
     </message>
     <message>
       <source>TOP_PIPETSHAPE</source>
-      <translation>TOP_PIPETSHAPE</translation>
+      <translation>T型パイプを作成</translation>
     </message>
     <message>
       <source>MEN_PIPETSHAPE</source>
-      <translation>MEN_PIPETSHAPE</translation>
+      <translation>T型パイプを作成</translation>
     </message>
     <message>
       <source>STB_PIPETSHAPE</source>
-      <translation>STB_PIPETSHAPE</translation>
+      <translation>T型パイプを作成</translation>
     </message>
     <message>
       <source>TOP_SMOOTHINGSURFACE</source>
-      <translation>TOP_SMOOTHINGSURFACE</translation>
+      <translation>表面のスムージング</translation>
     </message>
     <message>
       <source>MEN_SMOOTHINGSURFACE</source>
-      <translation>MEN_SMOOTHINGSURFACE</translation>
+      <translation>表面の平滑化</translation>
     </message>
     <message>
       <source>STB_SMOOTHINGSURFACE</source>
-      <translation>STB_SMOOTHINGSURFACE</translation>
+      <translation>表面のスムージング</translation>
     </message>
     <message>
       <source>HALF_LENGTH_MAIN_PIPE</source>
-      <translation>HALF_LENGTH_MAIN_PIPE</translation>
+      <translation>半分の長さのパイプを作成</translation>
     </message>
     <message>
       <source>HALF_LENGTH_INCIDENT_PIPE</source>
-      <translation>HALF_LENGTH_INCIDENT_PIPE</translation>
+      <translation>入射管長さ半分</translation>
     </message>
     <message>
       <source>CIRCULAR_QUARTER_PIPE</source>
-      <translation>CIRCULAR_QUARTER_PIPE</translation>
+      <translation>パイプの1/4形状</translation>
     </message>
     <message>
       <source>THICKNESS</source>
-      <translation>THICKNESS</translation>
+      <translation>厚み</translation>
     </message>
     <message>
       <source>FLANGE</source>
-      <translation>FLANGE</translation>
+      <translation>フランジ</translation>
     </message>
     <message>
       <source>CHAMFER_OR_FILLET</source>
-      <translation>CHAMFER_OR_FILLET</translation>
+      <translation>面取り 又は フィレット</translation>
     </message>
     <message>
       <source>CHAMFER</source>
-      <translation>CHAMFER</translation>
+      <translation>面取り</translation>
     </message>
     <message>
       <source>FILLET</source>
-      <translation>FILLET</translation>
+      <translation>フィレット</translation>
     </message>
     <message>
       <source>JUNCTION_FACE_1</source>
-      <translation>JUNCTION_FACE_1</translation>
+      <translation>Junction 1</translation>
     </message>
     <message>
       <source>JUNCTION_FACE_2</source>
-      <translation>JUNCTION_FACE_2</translation>
+      <translation>Junction 2</translation>
     </message>
     <message>
       <source>JUNCTION_FACE_3</source>
-      <translation>JUNCTION_FACE_3</translation>
+      <translation>Junction 3</translation>
     </message>
     <message>
       <source>INTERNAL_FACES</source>
-      <translation>INTERNAL_FACES</translation>
+      <translation>内部の顔</translation>
     </message>
   </context>
   <context>
     <name>AdvancedGUI_PipeTShapeDlg</name>
+    <message>
+        <source>GEOM_PIPETSHAPE_ERR_EQUAL_EXT_RADII_I</source>
+        <translation type="unfinished">Incident pipe external Radius (Radius + Width) can't be equal to Incident pipe thickness reduction external Radius (rI + wI)!</translation>
+    </message>
+    <message>
+        <source>GEOM_PIPETSHAPE_ERR_EQUAL_RADII_I</source>
+        <translation type="unfinished">Incident pipe Radius can't be equal to Incident pipe thickness reduction Radius (rI)!</translation>
+    </message>
+    <message>
+        <source>GEOM_PIPETSHAPE_ERR_EQUAL_EXT_RADII_R</source>
+        <translation type="unfinished">Main pipe external Radius (Radius + Width) can't be equal to Right thickness reduction external Radius (rR + wR)!</translation>
+    </message>
+    <message>
+        <source>GEOM_PIPETSHAPE_ERR_EQUAL_RADII_R</source>
+        <translation type="unfinished">Main pipe Radius can't be equal to Right thickness reduction Radius (rR)!</translation>
+    </message>
+    <message>
+        <source>GEOM_PIPETSHAPE_ERR_EQUAL_EXT_RADII_L</source>
+        <translation type="unfinished">Main pipe external Radius (Radius + Width) can't be equal to Left thickness reduction external Radius (rL + wL)!</translation>
+    </message>
+    <message>
+        <source>GEOM_PIPETSHAPE_ERR_EQUAL_RADII_L</source>
+        <translation type="unfinished">Main pipe Radius can't be equal to Left thickness reduction Radius (rL)!</translation>
+    </message>
     <message>
       <source>GEOM_PIPE_TSHAPE_TITLE</source>
-      <translation>GEOM_PIPE_TSHAPE_TITLE</translation>
+      <translation>T型パイプの作成</translation>
     </message>
     <message>
       <source>GEOM_PIPE_TSHAPE</source>
-      <translation>GEOM_PIPE_TSHAPE</translation>
+      <translation>PipeTShape</translation>
     </message>
     <message>
       <source>GEOM_PIPE_TSHAPE_MPIPE</source>
-      <translation>GEOM_PIPE_TSHAPE_MPIPE</translation>
+      <translation>メインパイプ</translation>
     </message>
     <message>
       <source>GEOM_PIPE_TSHAPE_R</source>
-      <translation>GEOM_PIPE_TSHAPE_R</translation>
+      <translation>半径</translation>
     </message>
     <message>
       <source>GEOM_PIPE_TSHAPE_W</source>
-      <translation>GEOM_PIPE_TSHAPE_W</translation>
+      <translation></translation>
     </message>
     <message>
       <source>GEOM_PIPE_TSHAPE_L</source>
-      <translation>GEOM_PIPE_TSHAPE_L</translation>
+      <translation>半分の長さ</translation>
     </message>
     <message>
       <source>GEOM_PIPE_TSHAPE_IPIPE</source>
-      <translation>GEOM_PIPE_TSHAPE_IPIPE</translation>
+      <translation>付随パイプ</translation>
     </message>
     <message>
       <source>GEOM_PIPE_TSHAPE_CHAMFER</source>
-      <translation>GEOM_PIPE_TSHAPE_CHAMFER</translation>
+      <translation>面取り</translation>
     </message>
     <message>
       <source>GEOM_PIPE_TSHAPE_CHAMFER_H</source>
-      <translation>GEOM_PIPE_TSHAPE_CHAMFER_H</translation>
+      <translation>高さ</translation>
     </message>
     <message>
       <source>GEOM_PIPE_TSHAPE_CHAMFER_W</source>
-      <translation>GEOM_PIPE_TSHAPE_CHAMFER_W</translation>
+      <translation></translation>
     </message>
     <message>
       <source>GEOM_PIPE_TSHAPE_FILLET</source>
-      <translation>GEOM_PIPE_TSHAPE_FILLET</translation>
+      <translation>フィレット</translation>
     </message>
     <message>
       <source>GEOM_PIPE_TSHAPE_HEX</source>
-      <translation>GEOM_PIPE_TSHAPE_HEX</translation>
+      <translation>六面体メッシュの準備</translation>
     </message>
     <message>
       <source>GEOM_PIPE_TSHAPE_POSITION</source>
-      <translation>GEOM_PIPE_TSHAPE_POSITION</translation>
+      <translation>位置を設定</translation>
     </message>
     <message>
       <source>GEOM_PIPE_TSHAPE_POSITION_P1</source>
-      <translation>GEOM_PIPE_TSHAPE_POSITION_P1</translation>
+      <translation>接続部 P1</translation>
     </message>
     <message>
       <source>GEOM_PIPE_TSHAPE_POSITION_P2</source>
-      <translation>GEOM_PIPE_TSHAPE_POSITION_P2</translation>
+      <translation>接続部 P2</translation>
     </message>
     <message>
       <source>GEOM_PIPE_TSHAPE_POSITION_P3</source>
-      <translation>GEOM_PIPE_TSHAPE_POSITION_P3</translation>
+      <translation>接続部 P3</translation>
     </message>
     <message>
       <source>GEOM_PIPE_TSHAPE_POSITION_LBL_L1</source>
-      <translation>GEOM_PIPE_TSHAPE_POSITION_LBL_L1</translation>
+      <translation>New L1</translation>
     </message>
     <message>
       <source>GEOM_PIPE_TSHAPE_POSITION_LBL_L2</source>
-      <translation>GEOM_PIPE_TSHAPE_POSITION_LBL_L2</translation>
+      <translation>New L2</translation>
     </message>
     <message>
       <source>GEOM_PIPE_TSHAPE_LEFT_TR</source>
-      <translation>GEOM_PIPE_TSHAPE_LEFT_TR</translation>
+      <translation>左側肉厚変更</translation>
     </message>
     <message>
       <source>GEOM_PIPE_TSHAPE_RIGHT_TR</source>
-      <translation>GEOM_PIPE_TSHAPE_RIGHT_TR</translation>
+      <translation>右側肉厚変更</translation>
     </message>
     <message>
       <source>GEOM_PIPE_TSHAPE_INCI_TR</source>
-      <translation>GEOM_PIPE_TSHAPE_INCI_TR</translation>
+      <translation>付随パイプ肉厚変更</translation>
     </message>
     <message>
       <source>GEOM_PIPE_TSHAPE_TR_R</source>
-      <translation>GEOM_PIPE_TSHAPE_TR_R</translation>
+      <translation>半径 (r%1)</translation>
     </message>
     <message>
       <source>GEOM_PIPE_TSHAPE_TR_W</source>
-      <translation>GEOM_PIPE_TSHAPE_TR_W</translation>
+      <translation>厚み (w%1)</translation>
     </message>
     <message>
       <source>GEOM_PIPE_TSHAPE_TR_L_TRANS</source>
-      <translation>GEOM_PIPE_TSHAPE_TR_L_TRANS</translation>
+      <translation>拡張部長さ (ltrans %1)</translation>
     </message>
     <message>
       <source>GEOM_PIPE_TSHAPE_TR_L_THIN</source>
-      <translation>GEOM_PIPE_TSHAPE_TR_L_THIN</translation>
+      <translation>接続部長さ (lthin %1)</translation>
     </message>
     <message>
       <source>GEOM_PIPETSHAPE_GROUPMAIN</source>
-      <translation>GEOM_PIPETSHAPE_GROUPMAIN</translation>
+      <translation>メインの設定</translation>
     </message>
     <message>
       <source>GEOM_PIPETSHAPE_GROUPREDUCT</source>
-      <translation>GEOM_PIPETSHAPE_GROUPREDUCT</translation>
+      <translation>接続部詳細設定</translation>
     </message>
     <message>
       <source>GEOM_PIPETSHAPE_GROUPPOS</source>
-      <translation>GEOM_PIPETSHAPE_GROUPPOS</translation>
+      <translation>位置による設定</translation>
     </message>
   </context>
   <context>
     <name>AdvancedGUI_SmoothingSurfaceDlg</name>
     <message>
       <source>GEOM_SMOOTHINGSURFACE_TITLE</source>
-      <translation>GEOM_SMOOTHINGSURFACE_TITLE</translation>
+      <translation>滑らかな表面の構造</translation>
     </message>
     <message>
       <source>GEOM_SMOOTHINGSURFACE</source>
-      <translation>GEOM_SMOOTHINGSURFACE</translation>
+      <translation>表面 lissee</translation>
     </message>
     <message>
       <source>GEOM_SMOOTHINGSURFACE_RESULT</source>
-      <translation>GEOM_SMOOTHINGSURFACE_RESULT</translation>
+      <translation>結果の名前</translation>
     </message>
     <message>
       <source>GEOM_SMOOTHINGSURFACE_ARG</source>
-      <translation>GEOM_SMOOTHINGSURFACE_ARG</translation>
+      <translation>節点</translation>
     </message>
     <message>
       <source>GEOM_SMOOTHINGSURFACE_ARG_POINTS</source>
-      <translation>GEOM_SMOOTHINGSURFACE_ARG_POINTS</translation>
+      <translation>ポイント</translation>
     </message>
   </context>
 </TS>
index 29228627642ffac9b2aaf712f4179f0419bec8af..34f0e2fafe7ad27bbc14f301abe23ea149ef6fa1 100644 (file)
@@ -233,6 +233,41 @@ static Standard_Boolean IsFacesOfSameSolids
   return isSame;
 }
 
+//=======================================================================
+//function : IsEdgeValidToMerge
+//purpose  : Edge is valid if it is not seam or if it is a seam and the face
+//           has another seam edge.
+//=======================================================================
+static Standard_Boolean IsEdgeValidToMerge(const TopoDS_Edge &theEdge,
+                                           const TopoDS_Face &theFace)
+{
+  Standard_Boolean isValid = Standard_True;
+
+  if (BRep_Tool::IsClosed(theEdge, theFace)) {
+    // This is a seam edge. Check if there are another seam edges on the face.
+    TopExp_Explorer anExp(theFace, TopAbs_EDGE);
+
+    for (; anExp.More(); anExp.Next()) {
+      const TopoDS_Shape &aShEdge = anExp.Current();
+
+      // Skip same edge.
+      if (theEdge.IsSame(aShEdge)) {
+        continue;
+      }
+
+      // Check if this edge is a seam.
+      TopoDS_Edge anEdge = TopoDS::Edge(aShEdge);
+
+      if (BRep_Tool::IsClosed(anEdge, theFace)) {
+        isValid = Standard_False;
+        break;
+      }
+    }
+  }
+
+  return isValid;
+}
+
 //=======================================================================
 //function : Perform
 //purpose  :
@@ -302,7 +337,7 @@ TopoDS_Shape BlockFix_UnionFaces::Perform(const TopoDS_Shape& Shape)
       Standard_Integer i;
       for (i = 1; i <= edges.Length(); i++) {
         TopoDS_Edge edge = TopoDS::Edge(edges(i));
-        if (BRep_Tool::Degenerated(edge) || BRep_Tool::IsClosed(edge, aFace))
+        if (BRep_Tool::Degenerated(edge) || !IsEdgeValidToMerge(edge, aFace))
           continue;
 
         const TopTools_ListOfShape& aList = aMapEdgeFaces.FindFromKey(edge);
@@ -315,7 +350,7 @@ TopoDS_Shape BlockFix_UnionFaces::Perform(const TopoDS_Shape& Shape)
           if (aProcessed.Contains(anCheckedFace))
             continue;
 
-          if (BRep_Tool::IsClosed(edge, anCheckedFace)) {
+          if (!IsEdgeValidToMerge(edge, anCheckedFace)) {
             // Skip seam edge.
             continue;
           }
index e4b12199c08c19600d98dcd035e8c00c20e7109b..37b8929304b5c4285aacf54bd940ce1fee3c3128 100644 (file)
@@ -32,6 +32,7 @@
 
 #include <GEOMImpl_Types.hxx>
 
+#include <SUIT_MessageBox.h>
 #include <SUIT_ResourceMgr.h>
 #include <SUIT_Session.h>
 #include <SalomeApp_Application.h>
@@ -260,8 +261,17 @@ bool BuildGUI_ShellDlg::execute( ObjectList& objects )
 
   GEOM::GEOM_Object_var anObj = anOper->MakeShell( objlist.in() );
 
-  if ( !anObj->_is_nil() )
+  if ( !anObj->_is_nil() ) {
+    TopoDS_Shape aShell;
+    GEOMBase::GetShape(anObj, aShell, TopAbs_SHELL);
+
+    if (aShell.IsNull()) {
+      SUIT_MessageBox::warning(this,
+                               QObject::tr("GEOM_WRN_WARNING"),
+                               QObject::tr("GEOM_WRN_FACES_NOT_SHELL"));
+    }
     objects.push_back( anObj._retn() );
+  }
 
   return true;
 }
index c4432718ce7dd9644c869216414c34421143eb16..230c751a3a76c922f38e1fae3735192e606a2a69 100644 (file)
@@ -105,6 +105,9 @@ bool DisplayGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent)
   case GEOMOp::OpDMShadingWithEdges:  // MENU VIEW - DISPLAY MODE - SHADING WITH EDGES
     SetDisplayMode( 2 );
     break;
+  case GEOMOp::OpDMTexture:           // MENU VIEW - DISPLAY MODE - TEXTURE
+    SetDisplayMode( 3 );
+    break;
   case GEOMOp::OpShowAll:        // MENU VIEW - SHOW ALL
     getGeometryGUI()->EmitSignalDeactivateDialog();
     DisplayAll();
index 64e1e5e12c2594b49ac9bbc075674acc0bb91339..88b730307226af1bfcd238e1769f45dcf2d60de2 100755 (executable)
@@ -1701,8 +1701,8 @@ Handle(AIS_AngleDimension) EntityGUI_3DSketcherDlg::createAISAngleDimension(doub
   std::string Angle_str = doubleToString(theAngle);
   
   // Construction of the plane
-  gce_MakePln gce_MP2(P0, P1, P2);
-  Handle(Geom_Plane) aPlane = new Geom_Plane(gce_MP2.Value());
+  //gce_MakePln gce_MP2(P0, P1, P2);
+  //Handle(Geom_Plane) aPlane = new Geom_Plane(gce_MP2.Value());
   
   TopoDS_Vertex V0 = BRepBuilderAPI_MakeVertex(P0);
   TopoDS_Vertex V1 = BRepBuilderAPI_MakeVertex(P1);
@@ -1725,7 +1725,7 @@ Handle(AIS_AngleDimension) EntityGUI_3DSketcherDlg::createAISAngleDimension(doub
 
   // todo : port
 
-  Handle(AIS_AngleDimension) anIO = new AIS_AngleDimension( anEdge1, anEdge2, aPlane->Pln() );
+  Handle(AIS_AngleDimension) anIO = new AIS_AngleDimension( anEdge1, anEdge2 );
 
   anIO->SetCustomValue( theAngle );
 
index cbb5645fded338fc123f0a8c7a71888c40028e25..96bbb34fe16c6bf706e9042fba6fdcbb29e2ef26 100644 (file)
@@ -282,7 +282,16 @@ EntityGUI_FeatureDetectorDlg::EntityGUI_FeatureDetectorDlg( GeometryGUI* theGeom
   myWidgets.insert( HIST_TYPE, histType );
   QDoubleSpinBox* thresholdValue = new QDoubleSpinBox();
   thresholdValue->setRange( 0, 254 );
-  thresholdValue->setValue( 128 );
+  // 1 is a good default value for the threshold. It means that we are very permissive
+  // about what will be considered INSIDE the zone we want to find the frontier of
+  // This makes the algorithm more robust against a bit inhomogeneous parts in the zone
+  // that we want to delimitate.
+  // The drawback is if we want to delimitate a zone wich color is very similar to the zone
+  // we consider as the OUTSIDE, the result will be bad.
+  // The current use cases are more of the first form : 
+  //  - Strongly contrasted INSIDE and OUTSIDE zones
+  //  - Small inhomogenities in each zone
+  thresholdValue->setValue( 1 );
   myWidgets.insert( THRESHOLD_VALUE, thresholdValue );
   QDoubleSpinBox* maxThreshold = new QDoubleSpinBox();
   maxThreshold->setRange( 1, 255 );
@@ -327,7 +336,7 @@ EntityGUI_FeatureDetectorDlg::EntityGUI_FeatureDetectorDlg( GeometryGUI* theGeom
 //   mainFrame()->GroupBoxName->hide();
   
   // Build an instance of detection used to perform image processing operations
-  aDetector = new ShapeRec_FeatureDetector();
+  myDetector = new ShapeRec_FeatureDetector();
   
   setHelpFileName( "shape_recognition_page.html" );
   
@@ -341,7 +350,7 @@ EntityGUI_FeatureDetectorDlg::EntityGUI_FeatureDetectorDlg( GeometryGUI* theGeom
 //=================================================================================
 EntityGUI_FeatureDetectorDlg::~EntityGUI_FeatureDetectorDlg()
 {
-  
+  delete myDetector;
 }
 
 //=================================================================================
@@ -447,9 +456,9 @@ void EntityGUI_FeatureDetectorDlg::SelectionIntoArgument()
         return ;
 
       // Setting the image caracteristics
-      aDetector->SetPath( theImgFileName );
-      height            =  aDetector->GetImgHeight();
-      width             =  aDetector->GetImgWidth();
+      myDetector->SetPath( theImgFileName );
+      height            =  myDetector->GetImgHeight();
+      width             =  myDetector->GetImgWidth();
       pictureLeft       = -0.5 * width;              // X coordinate of the top left  corner of the background image in the view
       pictureTop        =  0.5 * height;             // Y coordinate of both top corners
       
@@ -674,7 +683,7 @@ void EntityGUI_FeatureDetectorDlg::setEndPnt(const gp_Pnt& theEndPnt)
 {
   myEndPnt = theEndPnt;
   MESSAGE("myEndPnt = ("<<theEndPnt.X()<<", "<<theEndPnt.Y()<<")")
-  if (setSelectionRect() && aDetector->GetImgHeight() > 0)
+  if (setSelectionRect() && myDetector->GetImgHeight() > 0)
     showImageSample();
 }
 
@@ -705,8 +714,8 @@ bool EntityGUI_FeatureDetectorDlg::setSelectionRect()
 void EntityGUI_FeatureDetectorDlg::showImageSample()
 { 
   // Cropp the image to the selection rectangle given by the user
-  aDetector->SetROI( myRect ); 
-  std::string samplePicturePath = aDetector->CroppImage();
+  myDetector->SetROI( myRect ); 
+  std::string samplePicturePath = myDetector->CroppImage();
   
   // Display the result
   QPixmap pixmap(QString(samplePicturePath.c_str()));
@@ -753,9 +762,9 @@ bool EntityGUI_FeatureDetectorDlg::execute( ObjectList& objects )
        subPictureLeft    = pictureLeft;
        subPictureTop     = pictureTop;
       }
-      aDetector->ComputeCorners( useROI, parameters );
-      CvPoint2D32f* corners     = aDetector->GetCorners();
-      int cornerCount           = aDetector->GetCornerCount();
+      myDetector->ComputeCorners( useROI, parameters );
+      CvPoint2D32f* corners     = myDetector->GetCorners();
+      int cornerCount           = myDetector->GetCornerCount();
       int i;
     
       // Build the geom objects associated to the detected corners and returned by execute   
@@ -794,9 +803,9 @@ bool EntityGUI_FeatureDetectorDlg::execute( ObjectList& objects )
     {    
       GEOM::GEOM_ICurvesOperations_var aCurveOperations = myGeomGUI->GetGeomGen()->GetICurvesOperations( getStudyId() );
 
-      aDetector->ComputeContours( useROI, parameters );
-      std::vector< std::vector<cv::Point> >   contours  = aDetector->GetContours();
-      std::vector<cv::Vec4i>                  hierarchy = aDetector->GetContoursHierarchy();
+      myDetector->ComputeContours( useROI, parameters );
+      std::vector< std::vector<cv::Point> >   contours  = myDetector->GetContours();
+      std::vector<cv::Vec4i>                  hierarchy = myDetector->GetContoursHierarchy();
     
       std::vector< cv::Point >                contour;
       int idx = 0;
@@ -914,8 +923,8 @@ bool EntityGUI_FeatureDetectorDlg::execute( ObjectList& objects )
   
 //   else if(myConstructorId ==LINES)
 //   {
-//     aDetector->ComputeLines();
-//     std::vector<cv::Vec4i>  lines = aDetector->GetLines();
+//     myDetector->ComputeLines();
+//     std::vector<cv::Vec4i>  lines = myDetector->GetLines();
 //     GEOM::GEOM_Object_var  Pnt1;
 //     GEOM::GEOM_Object_var  Pnt2;
 //     GEOM::GEOM_Object_var  aLine;
index fdc850d8df8a68c733dcbec46953340213ebe19b..ca0461d5d72389da817fc57c2da78bf44bf8b550 100644 (file)
@@ -84,7 +84,7 @@ private slots:
   
   
 private:
-  ShapeRec_FeatureDetector*          aDetector;
+  ShapeRec_FeatureDetector*          myDetector;
   
   gp_Ax3                             myWPlane;
   gp_Ax3                             aGlobalCS;
index 3feaf26adbcd73fc023822feb571df9ae610c1e7..3e521dfdbdffde7f3f9536ee942e4a4acd7d1ae5 100644 (file)
@@ -184,12 +184,15 @@ bool EntityGUI_PictureImportDlg::execute( ObjectList& objects )
   int height            =  pixmap->height();
   int width             =  pixmap->width();
   
+  delete pixmap;
+  
   GEOM::GEOM_Object_var P1 = aBasicOperations->MakePointXYZ( -0.5*width, -0.5*height, 0 );
   GEOM::GEOM_Object_var P2 = aBasicOperations->MakePointXYZ( -0.5*width,  0.5*height, 0 );
   GEOM::GEOM_Object_var P3 = aBasicOperations->MakePointXYZ(  0.5*width,  0.5*height, 0 );
   GEOM::GEOM_Object_var P4 = aBasicOperations->MakePointXYZ(  0.5*width, -0.5*height, 0 );
   
   GEOM::GEOM_Object_var aFace = aBlocksOperations->MakeQuad4Vertices(P1,P2,P3,P4);
+  getDisplayer()->SetDisplayMode(3);
   getDisplayer()->SetTexture(theImgFileName.toStdString());
   
   if ( !aFace->_is_nil() )
@@ -198,8 +201,7 @@ bool EntityGUI_PictureImportDlg::execute( ObjectList& objects )
   }
   
   res=true;
-
+  
   return res;
 }
 
index 682dec2728befbf7073affbe6b75edb3cce22d7b..268d906774a3ee031a121e9fb1008a46dabf82a6 100644 (file)
@@ -589,10 +589,58 @@ void EntityGUI_SubShapeDlg::showOnlySelected()
       Handle(SALOME_InteractiveObject) io =
         new SALOME_InteractiveObject (aMainEntry.in(), "GEOM", "TEMP_IO");
       if (view->isVisible(io)) myIsHiddenMain = true;
-    }
 
-    aDisplayer->EraseAll(/*forced = false, updateViewer = true*/);
-    aDisplayer->Display(aSelList, true);
+      //keep the selected entry and IO in the map for checking
+      std::map<QString, Handle(SALOME_InteractiveObject)> aSelEntriesMap;
+      SALOME_ListIteratorOfListIO aSelIt(aSelList);
+      for ( ; aSelIt.More(); aSelIt.Next() ) {
+        //fill map <entry, io>
+        Handle(SALOME_InteractiveObject) anSelIO = aSelIt.Value();
+        aSelEntriesMap[anSelIO->getEntry()] = anSelIO;
+      }
+      //get the displayed sub-shapes
+      SALOME_ListIO displayed;
+      view->GetVisible(displayed);
+      // Erase all, except the selected shapes
+      std::map<QString, Handle(SALOME_InteractiveObject)>::iterator 
+        aSelDispIter = aSelEntriesMap.end();
+      SALOME_ListIteratorOfListIO aDispIt( displayed );
+      for ( ; aDispIt.More(); aDispIt.Next() ) {
+        Handle(SALOME_InteractiveObject) anIO = aDispIt.Value();
+        aSelDispIter = aSelEntriesMap.find( anIO->getEntry() );
+        if ( aSelDispIter != aSelEntriesMap.end() ) {
+          //sub-shape is selected, so erase it's record from map to keep in it not displayed, but selected sub-shapes only
+          aSelEntriesMap.erase(aSelDispIter);
+        } else {
+          //sub-shape is not in the map of selected, then erase it from view
+          aDisplayer->Erase( anIO, /*forced = */false, /*updateViewer = */false );
+        }
+      }
+      
+      if ( !aSelEntriesMap.empty() ) {
+        // Build a presentation of the selected, but not displayed sub-shapes
+        TopTools_IndexedMapOfShape aSubShapesMap;
+        TopExp::MapShapes(myShape, aSubShapesMap);
+        QString anEntryBase = aMainEntry.in();
+
+        TopExp_Explorer anExp (myShape, (TopAbs_ShapeEnum)shapeType());
+        for (; anExp.More(); anExp.Next())
+        {
+          TopoDS_Shape aSubShape = anExp.Current();
+          int index = aSubShapesMap.FindIndex(aSubShape);
+          QString anEntry = QString( "TEMP_" ) + anEntryBase + QString("_%1").arg(index);
+          if ( aSelEntriesMap.find( anEntry ) == aSelEntriesMap.end() ) {
+            //skip not selected sub-shapes
+            continue;
+          }
+          SALOME_Prs* aPrs = aDisplayer->buildSubshapePresentation(aSubShape, anEntry, view);
+          if (aPrs) {
+            displayPreview(aPrs, true, false); // append, do not update
+          }
+        }
+      }
+      aDisplayer->UpdateViewer();
+    }
 
     // Mantis issue 0021421: do not hide main shape, if explode on VERTEX
     if ((TopAbs_ShapeEnum)shapeType() == TopAbs_VERTEX && myIsHiddenMain) {
index 4b75209844a153153ed3555dde58e8198efbed37..0cf6e5ba06c90bb3aaa60c661749b8739fb561e5 100644 (file)
@@ -635,12 +635,10 @@ void GEOMAlgo_FinderShapeOn1::InnerPoints(const TopoDS_Face& aF,
           aP2=aNodes(aN2).Transformed(aTrsf);
           //
           if (aType==GeomAbs_Cylinder) {
-            Standard_Real aTolSM;
             gp_Cylinder aCyl;
             //
-            aTolSM=1.523e-6;//~1.-cos(0.1 deg)
             aCyl=aGAS.Cylinder();
-            if (!GEOMAlgo_SurfaceTools::IsCoaxial(aP1, aP2, aCyl, aTolSM)) {
+            if (!GEOMAlgo_SurfaceTools::IsCoaxial(aP1, aP2, aCyl, myTolerance)) {
               continue;
             }
           }
index 06fdbeff9a4cb90d6fc6424d5406096a9ea24633..3ede894038895e6df5ab3bea867b7713b4bb8772 100644 (file)
@@ -881,12 +881,10 @@ if (!aNb && myNbPntsMin) {
           aP2=aNodes(aN2).Transformed(aTrsf);
           //
           if (aType==GeomAbs_Cylinder) {
-            Standard_Real aTolSM;
             gp_Cylinder aCyl;
             //
-            aTolSM=1.523e-6;//~1.-cos(0.1 deg)
             aCyl=aGAS.Cylinder();
-            if (!GEOMAlgo_SurfaceTools::IsCoaxial(aP1, aP2, aCyl, aTolSM)) {
+            if (!GEOMAlgo_SurfaceTools::IsCoaxial(aP1, aP2, aCyl, myTolerance)) {
               continue;
             }
           }
index e50fc4c7c525742b4d2174e0064168b0f62c6c3c..21e6877b8accfed9a96c4ebc977d05fe900977fd 100644 (file)
@@ -140,21 +140,34 @@ Standard_Boolean GEOMAlgo_SurfaceTools::IsCoaxial(const gp_Pnt& aP1,
                                                   const gp_Cylinder& aCyl,
                                                   const Standard_Real aTol)
 {
-  Standard_Boolean bRet=Standard_False;
-  Standard_Real aSM;
-  //
-  gp_Vec aV12(aP1, aP2);
-  gp_Dir aD12(aV12);
-  //
-  const gp_Ax1& aAxis=aCyl.Axis();
-  const gp_Dir& aDAxis=aAxis.Direction();
-  //
-  aSM=fabs(aD12*aDAxis);
-  if (fabs(1.-aSM) > aTol) {
-    return bRet;
+  const gp_XYZ &aLoc   = aCyl.Location().XYZ();
+  const gp_Ax1 &aAxis  = aCyl.Axis();
+  const gp_XYZ &aDAxis = aAxis.Direction().XYZ();
+  gp_XYZ        aDP1   = aP1.XYZ().Subtracted(aLoc);
+  gp_XYZ        aDP2   = aP2.XYZ().Subtracted(aLoc);
+  Standard_Real aDot1  = aDP1.Dot(aDAxis);
+  Standard_Real aDot2  = aDP1.Dot(aDAxis);
+  Standard_Real aTol2  = aTol*aTol;
+
+  // Project P1 and P2 onto a plane with location aLoc and Norm aDAxis.
+  aDP1.Subtract(aDAxis.Multiplied(aDot1));
+  aDP2.Subtract(aDAxis.Multiplied(aDot2));
+
+  Standard_Real    aRadius1 = aDP1.Modulus();
+  Standard_Real    aRadius2 = aDP2.Modulus();
+  Standard_Boolean isOn     = Standard_False;
+
+  if (fabs(aRadius1 - aRadius2) <= aTol) {
+    // Check the deflection of the middle point.
+    gp_XYZ        aMidP       = 0.5*(aDP1 + aDP2);
+    Standard_Real aMidRadius1 = aMidP.Modulus();
+
+    if (fabs(aRadius1 - aRadius2) <= aTol) {
+      isOn = Standard_True;
+    }
   }
-  //
-  return !bRet;
+
+  return isOn;
 }
 //=======================================================================
 //function : IsAnalytic
index 25ad93b5a499797965365a51d99df7d77e412365..566e42c197dec7f22bc27f5051f960be1efd1cd9 100644 (file)
@@ -673,8 +673,7 @@ void GEOM_Displayer::updateShapeProperties( const Handle(GEOM_AISShape)& AISShap
   AISShape->SetDisplayVectors( propMap.value( GEOM::propertyName( GEOM::EdgesDirection ) ).toBool() );
 
   // set transparency
-  // VSR: ??? next line is commented: transparency property is set in the AfterDisplay() function
-  //AISShape->SetTransparency( propMap.value( GEOM::propertyName( GEOM::Transparency ) ).toDouble() );
+  AISShape->SetTransparency( propMap.value( GEOM::propertyName( GEOM::Transparency ) ).toDouble() );
 
   // set iso properties
   int uIsos = propMap.value( GEOM::propertyName( GEOM::NbIsos ) ).toString().split( GEOM::subSectionSeparator() )[0].toInt();
@@ -697,12 +696,36 @@ void GEOM_Displayer::updateShapeProperties( const Handle(GEOM_AISShape)& AISShap
   AISShape->SetOwnDeviationCoefficient( qMax( propMap.value( GEOM::propertyName( GEOM::Deflection ) ).toDouble(), GEOM::minDeflection() ) );
 
   // set texture
+  bool textureAdded = false;
   if ( HasTexture() ) {
     // predefined display texture, manually set to displayer via GEOM_Displayer::SetTexture() function 
     AISShape->SetTextureFileName( TCollection_AsciiString( GetTexture().c_str() ) );
+    if ( ! entry.isEmpty() ) {
+      // check that study is active
+      SalomeApp_Study* study = getActiveStudy();
+      if ( study ) {
+        // Store the texture in object properties for next displays
+        study->setObjectProperty( aMgrId, entry, GEOM::propertyName( GEOM::Texture ), QString( GetTexture().c_str() ) );
+        study->setObjectProperty( aMgrId, entry, GEOM::propertyName( GEOM::DisplayMode ), 3 );
+        
+        // Update porpeties map
+        propMap = getObjectProperties( study, entry, myViewFrame );
+      }
+    }
+    textureAdded = true;
+  }
+  else {
+    // Texture from properties
+    QString aTexture = propMap.value( GEOM::propertyName( GEOM::Texture ) ).toString();
+    if ( !aTexture.isEmpty() ) {
+       AISShape->SetTextureFileName( TCollection_AsciiString( aTexture.toStdString().c_str() ) );
+       textureAdded = true;
+    }
+  }
+  if ( textureAdded ){ 
     AISShape->SetTextureMapOn();
     AISShape->DisableTextureModulate();
-    AISShape->SetDisplayMode( 3 );
   }
 
   // set line width
@@ -1569,30 +1592,6 @@ void GEOM_Displayer::BeforeDisplay( SALOME_View* v, const SALOME_OCCPrs* )
 
 void GEOM_Displayer::AfterDisplay( SALOME_View* v, const SALOME_OCCPrs* p )
 {
-  SalomeApp_Study* aStudy = getStudy();
-  if (!aStudy) return;
-  SOCC_Viewer* vf = dynamic_cast<SOCC_Viewer*>( v );
-  if ( vf && !p->IsNull() ) {
-    int aMgrId = getViewManagerId( vf );
-    Handle(AIS_InteractiveContext) ic = vf->getAISContext();
-    const SOCC_Prs* prs = dynamic_cast<const SOCC_Prs*>( p );
-    if ( !ic.IsNull() && prs ) {
-      AIS_ListOfInteractive objects;
-      prs->GetObjects( objects );
-      AIS_ListIteratorOfListOfInteractive it( objects );
-      for ( ; it.More(); it.Next() ) {
-        Handle(GEOM_AISShape) sh = Handle(GEOM_AISShape)::DownCast( it.Value() );
-        if ( sh.IsNull() ) continue;
-        Handle(SALOME_InteractiveObject) IO = sh->getIO();
-        if ( IO.IsNull() ) continue;
-        PropMap aPropMap = aStudy->getObjectPropMap( aMgrId, IO->getEntry() );
-        if ( aPropMap.contains( GEOM::propertyName( GEOM::Transparency ) ) ) {
-          double transparency = aPropMap.value(GEOM::propertyName( GEOM::Transparency )).toDouble();
-          ic->SetTransparency( sh, transparency, true );
-        }
-      }
-    }
-  }
   UpdateColorScale(false,false);
 }
 
index a56f0efd878b62eddd25bae60ade1a15f8df9b13..add4553bd8818163314dc59338a79b41ac4efcfa 100644 (file)
@@ -2316,6 +2316,10 @@ Please, select face, shell or solid and try again</translation>
         <source>GEOM_WRN_WARNING</source>
         <translation>Warning</translation>
     </message>
+    <message>
+        <source>GEOM_WRN_FACES_NOT_SHELL</source>
+        <translation>Unable to create a shell. Result is a compound of faces.</translation>
+    </message>
     <message>
         <source>WRN_SHAPE_UNCLOSED</source>
         <translation>Unable to create solid from unclosed shape %1</translation>
@@ -3004,6 +3008,10 @@ Please, select face, shell or solid and try again</translation>
         <source>MEN_MATERIALS_LIBRARY</source>
         <translation>Materials library</translation>
     </message>
+    <message>
+        <source>MEN_TEXTURE</source>
+        <translation>Texture</translation>
+    </message>
     <message>
         <source>MEN_TORUS</source>
         <translation>Torus</translation>
@@ -3280,7 +3288,6 @@ Please, select face, shell or solid and try again</translation>
         <source>PREF_SCALAR_BAR_NUMBER_OF_INTERVALS</source>
         <translation>Number of intervals</translation>
     </message>
-
     <message>
         <source>PROCESS_SHAPE_NEW_OBJ_NAME</source>
         <translation>ProcessShape</translation>
@@ -4571,27 +4578,27 @@ Please, select face, shell or solid and try again</translation>
     </message>
     <message>
         <source>GEOM_REMOVE_WEBS_TITLE</source>
-        <translation type="unfinished">Remove internal faces</translation>
+        <translation>Remove internal faces</translation>
     </message>
     <message>
         <source>GEOM_REMOVE_WEBS</source>
-        <translation type="unfinished">Compound of solids</translation>
+        <translation>Compound of solids</translation>
     </message>
     <message>
         <source>REMOVE_WEBS_NEW_OBJ_NAME</source>
-        <translation type="unfinished">NoInternalFaces</translation>
+        <translation>NoInternalFaces</translation>
     </message>
     <message>
         <source>TOP_REMOVE_WEBS</source>
-        <translation type="unfinished">Remove internal faces</translation>
+        <translation>Remove internal faces</translation>
     </message>
     <message>
         <source>MEN_REMOVE_WEBS</source>
-        <translation type="unfinished">Remove Internal Faces</translation>
+        <translation>Remove Internal Faces</translation>
     </message>
     <message>
         <source>STB_REMOVE_WEBS</source>
-        <translation type="unfinished">Remove internal faces</translation>
+        <translation>Remove internal faces</translation>
     </message>
     <message>
         <source>GEOM_REMOVE_EXTRA_EDGES_TITLE</source>
@@ -4976,7 +4983,7 @@ Ignoring units will cause model scaling (as dimensions are supposed to be specif
     </message>
     <message>
         <source>TOP_SMOOTHINGSURFACE</source>
-        <translation type="unfinished">Smoothing Surface</translation>
+        <translation>Smoothing Surface</translation>
     </message>
     <message>
         <source>GEOM_SELECT_IMAGE</source>
@@ -5031,12 +5038,12 @@ Ignoring units will cause model scaling (as dimensions are supposed to be specif
         <translation>Import / Export</translation>
     </message>
     <message>
-      <source>CC_PNT_ITEM_X_Y</source>
-      <translation>X=%1, Y=%2</translation>
+        <source>CC_PNT_ITEM_X_Y</source>
+        <translation>X=%1, Y=%2</translation>
     </message>
     <message>
-      <source>CC_PNT_ITEM_X_Y_Z</source>
-      <translation>X=%1, Y=%2, Z=%3</translation>
+        <source>CC_PNT_ITEM_X_Y_Z</source>
+        <translation>X=%1, Y=%2, Z=%3</translation>
     </message>
 </context>
 <context>
@@ -5656,7 +5663,7 @@ Number of sketch points too small</translation>
     </message>
     <message>
         <source>LOWTHRESHOLD</source>
-        <translation>Low theshold</translation>
+        <translation>Low threshold</translation>
     </message>
     <message>
         <source>RATIO</source>
@@ -5878,7 +5885,7 @@ Number of sketch points too small</translation>
     </message>
     <message>
         <source>WRN_NOT_SUBSHAPE</source>
-        <translation type="unfinished">The selected shape is not a sub-shape of the main shape. Hide all extra shapes in the viewer for more suitable selection.</translation>
+        <translation>The selected shape is not a sub-shape of the main shape. Hide all extra shapes in the viewer for more suitable selection.</translation>
     </message>
 </context>
 <context>
@@ -5914,10 +5921,6 @@ Number of sketch points too small</translation>
         <source>DATA_TYPE</source>
         <translation>Type</translation>
     </message>
-    <message>
-        <source></source>
-        <translation></translation>
-    </message>
     <message>
         <source>BOOL</source>
         <translation>Boolean</translation>
@@ -6032,11 +6035,11 @@ Number of sketch points too small</translation>
     </message>
     <message>
         <source>WRN_NOT_SUBSHAPE</source>
-        <translation type="unfinished">The selected shape is not a sub-shape of the main shape. Hide all extra shapes in the viewer for more suitable selection.</translation>
+        <translation>The selected shape is not a sub-shape of the main shape. Hide all extra shapes in the viewer for more suitable selection.</translation>
     </message>
     <message>
         <source>ERR_STEP_EXISTS</source>
-        <translation type="unfinished">Step with such ID already exists.</translation>
+        <translation>Step with such ID already exists.</translation>
     </message>
 </context>
 <context>
@@ -6509,23 +6512,23 @@ Do you want to create new material?</translation>
         <translation>Step</translation>
     </message>
 </context>
-  <context>
+<context>
     <name>EntityGUI_IsolineDlg</name>
     <message>
-      <source>GEOM_ISOLINE_TITLE</source>
-      <translation>Isoline Construction</translation>
+        <source>GEOM_ISOLINE_TITLE</source>
+        <translation>Isoline Construction</translation>
     </message>
     <message>
-      <source>GEOM_ISOLINE</source>
-      <translation>Isoline</translation>
+        <source>GEOM_ISOLINE</source>
+        <translation>Isoline</translation>
     </message>
     <message>
-      <source>GEOM_ISOLINE_U</source>
-      <translation>U-Isoline</translation>
+        <source>GEOM_ISOLINE_U</source>
+        <translation>U-Isoline</translation>
     </message>
     <message>
-      <source>GEOM_ISOLINE_V</source>
-      <translation>V-Isoline</translation>
+        <source>GEOM_ISOLINE_V</source>
+        <translation>V-Isoline</translation>
     </message>
-  </context>
+</context>
 </TS>
index 371635ac41fed253595fde7220a2487a4937a794..5d3f8d8027fb86ecff66a7a67702a2b91d484d89 100644 (file)
@@ -4,12 +4,12 @@
 <context>
     <name>@default</name>
     <message>
-        <source>MEN_POP_CONCEAL_CHILDREN</source>
-        <translation>Retirer les sous-éléments</translation>
+        <source>MEN_TEXTURE</source>
+        <translation type="unfinished">Texture</translation>
     </message>
     <message>
-        <source>MEN_POP_DISCLOSE_CHILDREN</source>
-        <translation>Publier les sous-éléments</translation>
+        <source>GEOM_WRN_FACES_NOT_SHELL</source>
+        <translation type="unfinished">Unable to create a shell. Result is a compound of faces.</translation>
     </message>
     <message>
         <source>BRep_API: command not done</source>
     </message>
     <message>
         <source>DEP_OBJECT</source>
-        <translation>L&apos;objet choisi a été utilisé pour créer un autre objet.
-La suppression de cet objet peut entrainer un export python invalide. </translation>
+        <translation>L&apos;objet choisi a été utilisé pour créer un autre objet ou est référencé par un autre module.
+La suppression de cet objet peut entrainer un export python invalide. 
+
+Voulez-vous tout de même supprimer ces objets ?</translation>
     </message>
     <message>
         <source>DEVIDE_EDGE_NEW_OBJECT_NAME</source>
@@ -1676,7 +1678,7 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
     </message>
     <message>
         <source>GEOM_ALLOW_NON_MANIFOLD</source>
-        <translation type="unfinished">Allow Non Manifold</translation>
+        <translation>Non conformes autorisés</translation>
     </message>
     <message>
         <source>GEOM_SHAPE</source>
@@ -2356,7 +2358,7 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
     </message>
     <message>
         <source>MEN_CURVE_CREATOR</source>
-        <translation type="unfinished">Curve creator</translation>
+        <translation>Créateur de courbe</translation>
     </message>
     <message>
         <source>MEN_ALL_SEL_ONLY</source>
@@ -2799,12 +2801,12 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
         <translation>Editer champ</translation>
     </message>
     <message>
-        <source>MEN_POP_SHOW_CHILDREN</source>
-        <translation>Montrer les enfants</translation>
+        <source>MEN_POP_DISCLOSE_CHILDREN</source>
+        <translation>Publier les sous-éléments</translation>
     </message>
     <message>
-        <source>MEN_POP_HIDE_CHILDREN</source>
-        <translation>Cacher les enfants</translation>
+        <source>MEN_POP_CONCEAL_CHILDREN</source>
+        <translation>Retirer les sous-éléments</translation>
     </message>
     <message>
         <source>MEN_POP_UNPUBLISH_OBJ</source>
@@ -2966,6 +2968,10 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
         <source>MEN_3DSKETCH</source>
         <translation>Esquisse 3D</translation>
     </message>
+    <message>
+        <source>MEN_ISOLINE</source>
+        <translation>Isoligne</translation>
+    </message>
     <message>
         <source>MEN_SOLID</source>
         <translation>Solide</translation>
@@ -3654,6 +3660,10 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
         <source>STB_POP_CREATE_GROUP</source>
         <translation>Créer un groupe</translation>
     </message>
+    <message>
+        <source>STB_POP_EDIT_FIELD</source>
+        <translation>Editer un champ</translation>
+    </message>
     <message>
         <source>STB_POP_UNPUBLISH_OBJ</source>
         <translation>Dépublier l&apos;objet</translation>
@@ -3786,6 +3796,10 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
         <source>STB_3DSKETCH</source>
         <translation>Créer une esquisse 3D</translation>
     </message>
+    <message>
+        <source>STB_ISOLINE</source>
+        <translation>Créer une U ou V isoligne</translation>
+    </message>
     <message>
         <source>STB_SOLID</source>
         <translation>Construire un solide</translation>
@@ -4178,6 +4192,14 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
         <source>TOP_GROUP_CUT</source>
         <translation>Découpe de groupes</translation>
     </message>
+    <message>
+        <source>TOP_FIELD_CREATE</source>
+        <translation>Créer un champ</translation>
+    </message>
+    <message>
+        <source>TOP_FIELD_EDIT</source>
+        <translation>Editer un champ</translation>
+    </message>
     <message>
         <source>TOP_HEX_SOLID</source>
         <translation>Solide hexaédrique</translation>
@@ -4290,6 +4312,10 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
         <source>TOP_POP_CREATE_GROUP</source>
         <translation>Créer un groupe</translation>
     </message>
+    <message>
+        <source>TOP_POP_EDIT_FIELD</source>
+        <translation>Editer un champ</translation>
+    </message>
     <message>
         <source>TOP_POP_UNPUBLISH_OBJ</source>
         <translation>Dépublier l&apos;objet</translation>
@@ -4390,6 +4416,10 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
         <source>TOP_3DSKETCH</source>
         <translation>Esquisse 3D</translation>
     </message>
+    <message>
+        <source>TOP_ISOLINE</source>
+        <translation>Isoligne</translation>
+    </message>
     <message>
         <source>TOP_SOLID</source>
         <translation>Créer un solide</translation>
@@ -4955,14 +4985,6 @@ le paramètre &apos;%1&apos; aux préférences du module Géométrie.</translati
         <source>TOP_SMOOTHINGSURFACE</source>
         <translation>Surface lissée</translation>
     </message>
-    <message>
-        <source>MEN_SMOOTHINGSURFACE</source>
-        <translation>Surface lissée</translation>
-    </message>
-    <message>
-        <source>STB_SMOOTHINGSURFACE</source>
-        <translation>Surface lissée</translation>
-    </message>
     <message>
         <source>GEOM_SELECT_IMAGE</source>
         <translation>Sélectionner une image...</translation>
@@ -4971,6 +4993,10 @@ le paramètre &apos;%1&apos; aux préférences du module Géométrie.</translati
         <source>MEN_IMPORTEXPORT</source>
         <translation>Import / Export XAO</translation>
     </message>
+    <message>
+        <source>TOOL_IMPORTEXPORT</source>
+        <translation>Import / Export XAO</translation>
+    </message>
     <message>
         <source>TOP_EXPORTXAO</source>
         <translation>Export XAO</translation>
@@ -5012,12 +5038,12 @@ le paramètre &apos;%1&apos; aux préférences du module Géométrie.</translati
         <translation>Import / Export XAO</translation>
     </message>
     <message>
-      <source>CC_PNT_ITEM_X_Y</source>
-      <translation>X=%1, Y=%2</translation>
+        <source>CC_PNT_ITEM_X_Y</source>
+        <translation>X=%1, Y=%2</translation>
     </message>
     <message>
-      <source>CC_PNT_ITEM_X_Y_Z</source>
-      <translation>X=%1, Y=%2, Z=%3</translation>
+        <source>CC_PNT_ITEM_X_Y_Z</source>
+        <translation>X=%1, Y=%2, Z=%3</translation>
     </message>
 </context>
 <context>
@@ -5453,19 +5479,19 @@ le paramètre &apos;%1&apos; aux préférences du module Géométrie.</translati
     </message>
     <message>
         <source>SET_SECTIONS_POLYLINE</source>
-        <translation type="unfinished">Set polyline</translation>
+        <translation>Définir la polyligne</translation>
     </message>
     <message>
         <source>SET_SECTIONS_POLYLINE_TLT</source>
-        <translation type="unfinished">Set selected section type to polyline</translation>
+        <translation>Affecter le type de section sélectionné à la polyligne</translation>
     </message>
     <message>
         <source>SET_SECTIONS_SPLINE</source>
-        <translation type="unfinished">Set spline</translation>
+        <translation>Définir la spline</translation>
     </message>
     <message>
         <source>SET_SECTIONS_SPLINE_TLT</source>
-        <translation type="unfinished">Set selected section type to spline</translation>
+        <translation>Affecter le type de section sélectionné à la spline</translation>
     </message>
     <message>
         <source>REMOVE</source>
@@ -5593,7 +5619,7 @@ Le nombre de points n&apos;est pas suffisant</translation>
     </message>
     <message>
         <source>USE_ROI</source>
-        <translation type="unfinished">Use region of interest</translation>
+        <translation>Utiliser la région d&apos;intérêt</translation>
     </message>
     <message>
         <source>KERNEL_SIZE</source>
@@ -5609,75 +5635,75 @@ Le nombre de points n&apos;est pas suffisant</translation>
     </message>
     <message>
         <source>TYPE_CRITERIA</source>
-        <translation type="unfinished">Type criteria</translation>
+        <translation>Critère de type</translation>
     </message>
     <message>
         <source>CV_TERMCRIT_ITER</source>
-        <translation type="unfinished">Max number of iteration</translation>
+        <translation>Nombre max d&apos;itérations</translation>
     </message>
     <message>
         <source>CV_TERMCRIT_EPS</source>
-        <translation type="unfinished">Epsilon</translation>
+        <translation>Epsilon</translation>
     </message>
     <message>
         <source>CV_TERMCRIT_ITER | CV_TERMCRIT_EPS</source>
-        <translation type="unfinished">Max number of iteration or epsilon</translation>
+        <translation>Nombre max d&apos;itérations ou epsilon</translation>
     </message>
     <message>
         <source>MAX_ITER</source>
-        <translation type="unfinished">Max iteration</translation>
+        <translation>Iteration max</translation>
     </message>
     <message>
         <source>EPSILON</source>
-        <translation type="unfinished">Epsilon</translation>
+        <translation>Epsilon</translation>
     </message>
     <message>
         <source>L2GRADIENT</source>
-        <translation type="unfinished">L2 gradient</translation>
+        <translation>Gradient L2</translation>
     </message>
     <message>
         <source>LOWTHRESHOLD</source>
-        <translation type="unfinished">Low theshold</translation>
+        <translation>Niveau bas</translation>
     </message>
     <message>
         <source>RATIO</source>
-        <translation type="unfinished">Ratio</translation>
+        <translation>Ratio</translation>
     </message>
     <message>
         <source>SMOOTH_SIZE</source>
-        <translation type="unfinished">Smooth size</translation>
+        <translation>Adoucissement</translation>
     </message>
     <message>
         <source>HBINS</source>
-        <translation type="unfinished">Hbins</translation>
+        <translation>Hbins</translation>
     </message>
     <message>
         <source>SBINS</source>
-        <translation type="unfinished">Sbins</translation>
+        <translation>Sbins</translation>
     </message>
     <message>
         <source>HIST_TYPE</source>
-        <translation type="unfinished">Histogram type</translation>
+        <translation>Type d&apos;histogramme</translation>
     </message>
     <message>
         <source>CV_HIST_ARRAY</source>
-        <translation type="unfinished">Multi-dimensional dense array</translation>
+        <translation>Tableau dense multi-dimensionnel</translation>
     </message>
     <message>
         <source>CV_HIST_SPARSE</source>
-        <translation type="unfinished">Multi-dimensional sparse array</translation>
+        <translation>Tableau clairsemé multi-dimensionnel</translation>
     </message>
     <message>
         <source>THRESHOLD_VALUE</source>
-        <translation type="unfinished">Threshold value</translation>
+        <translation>Seuil</translation>
     </message>
     <message>
         <source>MAX_THRESHOLD</source>
-        <translation type="unfinished">Max threshold</translation>
+        <translation>Seuil max</translation>
     </message>
     <message>
         <source>FIND_CONTOURS_METHOD</source>
-        <translation type="unfinished">Chain approximation method</translation>
+        <translation>Méthode d&apos;approximation des chaînes</translation>
     </message>
     <message>
         <source>CV_CHAIN_APPROX_NONE</source>
@@ -5689,11 +5715,11 @@ Le nombre de points n&apos;est pas suffisant</translation>
     </message>
     <message>
         <source>CV_CHAIN_APPROX_TC89_KCOS</source>
-        <translation type="unfinished">TC89 KCOS</translation>
+        <translation>TC89 KCOS</translation>
     </message>
     <message>
         <source>CV_CHAIN_APPROX_TC89_L1</source>
-        <translation type="unfinished">TC89 L1</translation>
+        <translation>TC89 L1</translation>
     </message>
 </context>
 <context>
@@ -5859,7 +5885,7 @@ Le nombre de points n&apos;est pas suffisant</translation>
     </message>
     <message>
         <source>WRN_NOT_SUBSHAPE</source>
-        <translation>La forme sélectionnée n'est pas un sous-élémént de la forme principale. Pour choisir plus facilement, cacher les formes en trop dans la vue.</translation>
+        <translation>La forme sélectionnée n&apos;est pas un sous-élémént de la forme principale. Pour choisir plus facilement, cacher les formes en trop dans la vue.</translation>
     </message>
 </context>
 <context>
@@ -5913,7 +5939,7 @@ Le nombre de points n&apos;est pas suffisant</translation>
     </message>
     <message>
         <source>SHAPE_TYPE</source>
-        <translation>Type d'objet</translation>
+        <translation>Type d&apos;objet</translation>
     </message>
     <message>
         <source>VERTEX</source>
@@ -5973,7 +5999,7 @@ Le nombre de points n&apos;est pas suffisant</translation>
     </message>
     <message>
         <source>GEOM_NO_STUDY</source>
-        <translation>Pas d'étude disponible</translation>
+        <translation>Pas d&apos;étude disponible</translation>
     </message>
     <message>
         <source>NO_SHAPE</source>
@@ -6009,7 +6035,7 @@ Le nombre de points n&apos;est pas suffisant</translation>
     </message>
     <message>
         <source>WRN_NOT_SUBSHAPE</source>
-        <translation>La forme sélectionnée n'est pas un élément de la forme principale.</translation>
+        <translation>La forme sélectionnée n&apos;est pas un élément de la forme principale. Pour choisir plus facilement, cacher les formes en trop dans la vue.</translation>
     </message>
     <message>
         <source>ERR_STEP_EXISTS</source>
@@ -6400,24 +6426,24 @@ Voulez-vous en créer un nouveau ?</translation>
 <context>
     <name>GEOMGUI_CreationInfoWdg</name>
     <message>
-        <source>NO_INFO</source>
-        <translation>(aucune information disponible)</translation>
+        <source>CREATION_INFO_TITLE</source>
+        <translation>Information</translation>
     </message>
     <message>
-        <source>VALUE</source>
-        <translation>Valeur</translation>
+        <source>OPERATION</source>
+        <translation>Création</translation>
     </message>
     <message>
         <source>PARAMETER</source>
         <translation>Paramètre</translation>
     </message>
     <message>
-        <source>OPERATION</source>
-        <translation>Création</translation>
+        <source>VALUE</source>
+        <translation>Valeur</translation>
     </message>
     <message>
-        <source>CREATION_INFO_TITLE</source>
-        <translation>Information</translation>
+        <source>NO_INFO</source>
+        <translation>(aucune information disponible)</translation>
     </message>
 </context>
 <context>
@@ -6486,6 +6512,23 @@ Voulez-vous en créer un nouveau ?</translation>
         <translation>Pas</translation>
     </message>
 </context>
+<context>
+    <name>EntityGUI_IsolineDlg</name>
+    <message>
+        <source>GEOM_ISOLINE_TITLE</source>
+        <translation>Construction d&apos;isoligne</translation>
+    </message>
+    <message>
+        <source>GEOM_ISOLINE</source>
+        <translation>Isoligne</translation>
+    </message>
+    <message>
+        <source>GEOM_ISOLINE_U</source>
+        <translation>U-Isoligne</translation>
+    </message>
+    <message>
+        <source>GEOM_ISOLINE_V</source>
+        <translation>V-Isoligne</translation>
+    </message>
+</context>
 </TS>
-
-
index 77b266efce34a1c0f580a3b831b5286b436ae82e..8a673fc1b1455124cf5b7efdaa7d2949610bf58a 100644 (file)
@@ -3,6 +3,14 @@
 <TS>
   <context>
     <name>@default</name>
+    <message>
+        <source>MEN_TEXTURE</source>
+        <translation type="unfinished">Texture</translation>
+    </message>
+    <message>
+        <source>GEOM_WRN_FACES_NOT_SHELL</source>
+        <translation type="unfinished">Unable to create a shell. Result is a compound of faces.</translation>
+    </message>
     <message>
       <source>BRep_API: command not done</source>
       <translation>エラー: オブジェクトをビルドできませんでした</translation>
@@ -13,7 +21,7 @@
     </message>
     <message>
       <source>CHANGE_ORIENTATION_NEW_OBJ_NAME</source>
-      <translation>反転</translation>
+      <translation>Invert</translation>
     </message>
     <message>
       <source>EDGE_WIDTH_TLT</source>
     </message>
     <message>
       <source>CLOSE_CONTOUR_NEW_OBJ_NAME</source>
-      <translation>閉じた輪郭</translation>
+      <translation>CloseContour</translation>
     </message>
     <message>
       <source>DEP_OBJECT</source>
-      <translation>選択したオブジェクトは、別のオブジェクトの作成に使用されました。 削除することはできません。</translation>
+      <translation>選択したオブジェクトは、別のオブジェクトの作成に使用されました。このオブジェクトを削除する、python にエクスポートが無効になっている可能性があります。</translation>
     </message>
     <message>
       <source>DEVIDE_EDGE_NEW_OBJECT_NAME</source>
-      <translation>新しいオブジェクト</translation>
+      <translation>NewObject</translation>
     </message>
     <message>
       <source>ERROR_SHAPE_TYPE</source>
     </message>
     <message>
       <source>GEOM_ADD_POINT</source>
-      <translation>ポイントを追加</translation>
+      <translation>ポイントを追加します。</translation>
     </message>
     <message>
       <source>GEOM_ANGLE</source>
     </message>
     <message>
       <source>GEOM_ANGLE_STEP</source>
-      <translation>GEOM_ANGLE_STEP</translation>
+      <translation>角度ピッチ:</translation>
     </message>
     <message>
       <source>GEOM_ARC_ELLIPSE</source>
-      <translation>楕円弧</translation>
+      <translation>楕円弧</translation>
     </message>
     <message>
       <source>GEOM_ARC</source>
-      <translation>Arc</translation>
+      <translation>円弧</translation>
     </message>
     <message>
       <source>GEOM_ARCHIMEDE</source>
-      <translation>らせん</translation>
+      <translation>Archimede</translation>
     </message>
     <message>
       <source>GEOM_ARCHIMEDE_TITLE</source>
     </message>
     <message>
       <source>GEOM_BINORMAL</source>
-      <translation>BiNormal</translation>
+      <translation>従法線ベクトル</translation>
     </message>
     <message>
       <source>GEOM_BLOCK</source>
-      <translation>Hexahedral_Solid</translation>
+      <translation>六面体のソリッド</translation>
     </message>
     <message>
       <source>GEOM_BLOCKS_COMPOUND</source>
     </message>
     <message>
       <source>GEOM_BLOCK_MULTITRSF</source>
-      <translation>ブロック multi-transformation</translation>
+      <translation>Block Multi-Transformation</translation>
     </message>
     <message>
       <source>GEOM_BLOCK_MULTITRSF_DOUBLE</source>
     </message>
     <message>
       <source>GEOM_BLOCK_MULTITRSF_TITLE</source>
-      <translation>ブロック multi-transformation</translation>
+      <translation>ブロックの複数回移動</translation>
     </message>
     <message>
       <source>GEOM_BLOCK_TITLE</source>
     </message>
     <message>
       <source>GEOM_BNDBOX</source>
-      <translation>境界ボックス</translation>
+      <translation>Bounding Box</translation>
     </message>
     <message>
       <source>GEOM_BNDBOX_OBJDIM</source>
     </message>
     <message>
       <source>GEOM_CHAMFER</source>
-      <translation>面取り</translation>
+      <translation>Chamfer</translation>
     </message>
     <message>
       <source>GEOM_CHAMFER_ABORT</source>
     </message>
     <message>
       <source>GEOM_CIRCLE</source>
-      <translation></translation>
+      <translation>Circle</translation>
     </message>
     <message>
       <source>GEOM_CIRCLE_TITLE</source>
     </message>
     <message>
       <source>GEOM_CLOSECONTOUR_TITLE</source>
-      <translation>輪郭を閉じる</translation>
+      <translation>スケッチを終了</translation>
     </message>
     <message>
       <source>GEOM_CMASS</source>
     </message>
     <message>
       <source>GEOM_COMMON</source>
-      <translation>交差点</translation>
+      <translation>Common</translation>
     </message>
     <message>
       <source>GEOM_COMMON_TITLE</source>
-      <translation>交差部分を取り出す</translation>
+      <translation>オブジェクトの交差部分</translation>
     </message>
     <message>
       <source>GEOM_COMPOUND</source>
     </message>
     <message>
       <source>GEOM_CUT_TITLE</source>
-      <translation>オブジェクトの切</translation>
+      <translation>オブジェクトの切り抜き</translation>
     </message>
     <message>
       <source>GEOM_CYLINDER</source>
     </message>
     <message>
       <source>GEOM_EXTRUDED_BOSS_TITLE</source>
-      <translation>押し出しボス</translation>
+      <translation>押出し</translation>
     </message>
     <message>
       <source>GEOM_EXTRUDED_BOSS</source>
       <source>GEOM_LCS</source>
       <translation>ローカル座標系</translation>
     </message>
+    <message>
+      <source>GEOM_LOCATIONS</source>
+      <translation>位置</translation>
+    </message>
     <message>
       <source>GEOM_FACES</source>
       <translation>Faces</translation>
     </message>
     <message>
       <source>GEOM_FACE_OPT</source>
-      <translation>平らなフェースを作成してください</translation>
+      <translation>平らなフェースを作成</translation>
     </message>
     <message>
       <source>MAKE_FACE_TOLERANCE_TOO_BIG</source>
-      <translation>平面顔を構築できませんでした: \n 作成顔が高すぎるの公差</translation>
+      <translation>平坦な面を作成できません: 作成された顔があまりにも高い耐性</translation>
     </message>
     <message>
       <source>GEOM_FACE_OR_LCS</source>
     </message>
     <message>
       <source>GEOM_RECTANGLE_TITLE</source>
-      <translation>四角形の構築</translation>
+      <translation>四角形の作成</translation>
     </message>
     <message>
       <source>GEOM_RECTANGLE</source>
     </message>
     <message>
       <source>GEOM_FILLET_FACES</source>
-      <translation>é¡\94ã\81«æ®\8bã\81\99</translation>
+      <translation>é\81¸æ\8a\9eã\81\97ã\81\9fé\9d¢ã\81«ã\83\95ã\82£ã\83¬ã\83\83ã\83\88</translation>
     </message>
     <message>
       <source>GEOM_FILLET_TITLE</source>
     </message>
     <message>
       <source>GEOM_FixFaceSize</source>
-      <translation>é¡\94ã\81®ã\82µã\82¤ã\82ºã\82\92修正ã\81\97ã\81¾ã\81\99ã\80\82</translation>
+      <translation>é\9d¢ã\81®ã\82µã\82¤ã\82ºã\82\92修正ã\81\97ã\81¾ã\81\99</translation>
     </message>
     <message>
       <source>GEOM_FixShape</source>
     </message>
     <message>
       <source>GEOM_IMPORT</source>
-      <translation>Objet_importe</translation>
+      <translation>形状をインポート</translation>
     </message>
     <message>
       <source>GEOM_INCORRECT_INPUT</source>
     </message>
     <message>
       <source>GEOM_MEN_ALL_FILES</source>
-      <translation>すべてのファイル (※)</translation>
+      <translation>すべてのファイル (*)</translation>
     </message>
     <message>
       <source>GEOM_MEN_ANGLE</source>
     </message>
     <message>
       <source>GEOM_MEN_SHADING_WITH_EDGES</source>
-      <translation>陰影とエッジ</translation>
+      <translation>エッジ+シェーディング</translation>
     </message>
     <message>
       <source>GEOM_MEN_SKETCHER_X</source>
     </message>
     <message>
       <source>GEOM_MINDIST_NAME</source>
-      <translation>GEOM_MINDIST_NAME</translation>
+      <translation>DistMin</translation>
     </message>
     <message>
       <source>GEOM_MINDIST_NO_SOL</source>
-      <translation>GEOM_MINDIST_NO_SOL</translation>
+      <translation>解決策を見つけた</translation>
     </message>
     <message>
       <source>GEOM_MINDIST_OBJ</source>
     </message>
     <message>
       <source>GEOM_MINDIST_PUBLISH_TITLE</source>
-      <translation>GEOM_MINDIST_PUBLISH_TITLE</translation>
+      <translation>いくつかのソリューション</translation>
     </message>
     <message>
       <source>GEOM_MINDIST_PUBLISH_TEXT</source>
-      <translation>GEOM_MINDIST_PUBLISH_TEXT</translation>
+      <translation>研究で発見したすべてのソリューションを発行しますか。ない場合は、現在選択されている唯一のソリューションが公開されます。</translation>
     </message>
     <message>
       <source>GEOM_MINDIST_TITLE</source>
     </message>
     <message>
       <source>GEOM_MIRROR</source>
-      <translation>ミラー</translation>
+      <translation>Mirror</translation>
     </message>
     <message>
       <source>GEOM_MIRROR_TITLE</source>
     </message>
     <message>
       <source>GEOM_MULTIROTATION_TITLE</source>
-      <translation>Multi-rotation</translation>
+      <translation>オブジェクトの複数回回転</translation>
     </message>
     <message>
       <source>GEOM_MULTITRANSLATION</source>
     </message>
     <message>
       <source>GEOM_OFFSET</source>
-      <translation>オフセット</translation>
+      <translation>Offset</translation>
     </message>
     <message>
       <source>GEOM_OFFSET_TITLE</source>
     </message>
     <message>
       <source>GEOM_PROJECTION</source>
-      <translation>投影</translation>
+      <translation>Projection</translation>
     </message>
     <message>
       <source>GEOM_PROJECTION_TITLE</source>
     </message>
     <message>
       <source>GEOM_SOLUTION</source>
-      <translation>GEOM_SOLUTION</translation>
+      <translation>解決方法:</translation>
     </message>
     <message>
       <source>GEOM_SOLUTION_I</source>
-      <translation>GEOM_SOLUTION_I</translation>
+      <translation>%1 のソリューション</translation>
     </message>
     <message>
       <source>GEOM_TARGET_OBJECT</source>
       <translation>目的面</translation>
     </message>
+    <message>
+      <source>GEOM_WITH_CONTACT</source>
+      <translation>接触している</translation>
+    </message>
+    <message>
+      <source>GEOM_WITH_CORRECTION</source>
+      <translation>補正している</translation>
+    </message>
     <message>
       <source>GEOM_OPERATIONS</source>
       <translation>操作</translation>
     </message>
     <message>
       <source>GEOM_POSITION</source>
-      <translation>位置</translation>
+      <translation>Position</translation>
     </message>
     <message>
       <source>GEOM_POSITION_TITLE</source>
     </message>
     <message>
       <source>GEOM_RECONSTRUCTION_LIMIT_EDGE</source>
-      <translation>エッジ</translation>
+      <translation>Edge</translation>
     </message>
     <message>
       <source>GEOM_RECONSTRUCTION_LIMIT_FACE</source>
-      <translation>フェース</translation>
+      <translation>Face</translation>
     </message>
     <message>
       <source>GEOM_RECONSTRUCTION_LIMIT_SHAPE</source>
     </message>
     <message>
       <source>GEOM_REVERSE</source>
-      <translation>反転</translation>
+      <translation>裏返し</translation>
     </message>
     <message>
       <source>GEOM_REVERSE_DIRECTION</source>
     </message>
     <message>
       <source>GEOM_ROTATION</source>
-      <translation>回転</translation>
+      <translation>Rotation</translation>
     </message>
     <message>
       <source>GEOM_ROTATION_TITLE</source>
     </message>
     <message>
       <source>GEOM_SCALE</source>
-      <translation>スケール</translation>
+      <translation>Scale</translation>
     </message>
     <message>
       <source>GEOM_SCALE_FACTOR</source>
     </message>
     <message>
       <source>GEOM_SECTION</source>
-      <translation>セクション</translation>
+      <translation>Section</translation>
     </message>
     <message>
       <source>GEOM_SECTION_TITLE</source>
     </message>
     <message>
       <source>GEOM_SEWING</source>
-      <translation>つなぎ合わせ</translation>
+      <translation>Sewing</translation>
     </message>
     <message>
       <source>GEOM_SEWING_TITLE</source>
     </message>
     <message>
       <source>GEOM_ALLOW_NON_MANIFOLD</source>
-      <translation>GEOM_ALLOW_NON_MANIFOLD</translation>
+      <translation>非多様体を許可します。</translation>
     </message>
     <message>
       <source>GEOM_SHAPE</source>
     </message>
     <message>
       <source>GEOM_SKETCHER_ARC</source>
-      <translation>円弧</translation>
+      <translation>Arc</translation>
     </message>
     <message>
       <source>GEOM_SKETCHER_CENTER</source>
     </message>
     <message>
       <source>GEOM_SOLID</source>
-      <translation>Solid</translation>
+      <translation>ソリッド</translation>
     </message>
     <message>
       <source>GEOM_SOLID_TITLE</source>
     </message>
     <message>
       <source>GEOM_STEP_R</source>
-      <translation>GEOM_STEP_R</translation>
+      <translation>放射状のステップ:</translation>
     </message>
     <message>
       <source>GEOM_STEP_TITLE</source>
     </message>
     <message>
       <source>GEOM_THICKNESS</source>
-      <translation>GEOM_THICKNESS</translation>
+      <translation>厚み</translation>
     </message>
     <message>
       <source>GEOM_TOLERANCE</source>
     </message>
     <message>
       <source>GEOM_VERTEXES</source>
-      <translation>Vertexes</translation>
+      <translation>頂点</translation>
     </message>
     <message>
       <source>GEOM_WATER_DENSITY</source>
     </message>
     <message>
       <source>GEOM_WHATIS</source>
-      <translation>Whatis</translation>
+      <translation>選択対象の情報</translation>
     </message>
     <message>
       <source>GEOM_WHATIS_OBJECT</source>
     </message>
     <message>
       <source>GEOM_WHATIS_TITLE</source>
-      <translation>Whatis</translation>
+      <translation>選択対象の情報</translation>
     </message>
     <message>
       <source>GEOM_WIRE</source>
     </message>
     <message>
       <source>GLUE_NEW_OBJ_NAME</source>
-      <translation>固着</translation>
+      <translation>Glue</translation>
     </message>
     <message>
       <source>LIMIT_TOLERANCE_NEW_OBJ_NAME</source>
       <translation>Limit_tolerance</translation>
     </message>
+    <message>
+      <source>MEN_CURVE_CREATOR</source>
+      <translation>カーブの作成</translation>
+    </message>
     <message>
       <source>MEN_ALL_SEL_ONLY</source>
       <translation>すべてを選択</translation>
     </message>
     <message>
       <source>MEN_ARCHIMEDE</source>
-      <translation>アルキメデス</translation>
+      <translation>アルキメデスの螺旋</translation>
     </message>
     <message>
       <source>MEN_BASIC</source>
     </message>
     <message>
       <source>MEN_FEATURE_DETECTION</source>
-      <translation>パターン認識</translation>
+      <translation>形状認識</translation>
     </message>
     <message>
       <source>MEN_PICTURE_IMPORT</source>
-      <translation>ビュー内へのイメージの取り込み</translation>
+      <translation>ビューアーにイメージをインポート</translation>
     </message>
     <message>
       <source>MEN_CHAMFER</source>
     </message>
     <message>
       <source>MEN_CHECK_FREE_FACES</source>
-      <translation>フリーフェースの確認</translation>
+      <translation>フリーの確認</translation>
     </message>
     <message>
       <source>MEN_CHECK_GEOMETRY</source>
     </message>
     <message>
       <source>MEN_CLIPPING</source>
-      <translation>面で切断</translation>
+      <translation>クリップの範囲</translation>
     </message>
     <message>
       <source>MEN_CLOSE_CONTOUR</source>
     </message>
     <message>
       <source>MEN_COMPOUND</source>
-      <translation>コンパウンド</translation>
+      <translation>結合</translation>
     </message>
     <message>
       <source>MEN_COMPOUND_SEL_ONLY</source>
-      <translation>アセンブリ</translation>
+      <translation>結合</translation>
     </message>
     <message>
       <source>MEN_CONE</source>
     </message>
     <message>
       <source>MEN_CUT</source>
-      <translation>カット(&amp;t)</translation>
+      <translation>カット</translation>
     </message>
     <message>
       <source>MEN_CYLINDER</source>
     </message>
     <message>
       <source>MEN_CLS_BRING_TO_FRONT</source>
-      <translation>ã\83\95ã\82©ã\82¢ ã\82°ã\83©ã\82¦ã\83³ã\83\89ã\81§ã\82ªã\83\96ã\82¸ã\82§ã\82¯ã\83\88ã\82\92å\89\8aé\99¤ã\81\97ã\81¾ã\81\99ã\80\82</translation>
+      <translation>ã\83\88ã\83\83ã\83\97 ã\83¬ã\83\99ã\83«ã\81®ç\8a¶æ\85\8bã\82\92ã\82¯ã\83ªã\82¢</translation>
     </message>
     <message>
       <source>TOP_CLS_BRING_TO_FRONT</source>
     </message>
     <message>
       <source>MEN_ERASE</source>
-      <translation>消去</translation>
+      <translation>非表示</translation>
     </message>
     <message>
       <source>MEN_ERASE_ALL</source>
     </message>
     <message>
       <source>MEN_EXPLODE</source>
-      <translation>å\88\86解</translation>
+      <translation>å±\95é\96\8b</translation>
     </message>
     <message>
       <source>MEN_EXPLODE_BLOCKS</source>
     </message>
     <message>
       <source>MEN_EXTRUSION</source>
-      <translation>面の押出し</translation>
+      <translation>押出</translation>
     </message>
     <message>
       <source>MEN_EXTRUDED_CUT</source>
-      <translation>押込み</translation>
+      <translation>押出しカット</translation>
     </message>
     <message>
       <source>MEN_EXTRUDED_BOSS</source>
     </message>
     <message>
       <source>MEN_FACE</source>
-      <translation>フェース</translation>
+      <translation></translation>
     </message>
     <message>
       <source>MEN_FACE_SEL_ONLY</source>
-      <translation>フェース</translation>
+      <translation></translation>
     </message>
     <message>
       <source>MEN_FILE</source>
     </message>
     <message>
       <source>MEN_GENERATION</source>
-      <translation>ジェネレーション</translation>
+      <translation>生成</translation>
     </message>
     <message>
       <source>MEN_GLUE_FACES</source>
-      <translation>フェース固着</translation>
+      <translation>面の固着</translation>
     </message>
     <message>
       <source>MEN_GLUE_EDGES</source>
-      <translation>エッジ固着</translation>
+      <translation>エッジ固着</translation>
     </message>
     <message>
       <source>MEN_GROUP</source>
     </message>
     <message>
       <source>MEN_GROUP_EDIT</source>
-      <translation>編集</translation>
+      <translation>グループの編集</translation>
     </message>
     <message>
       <source>MEN_GROUP_UNION</source>
-      <translation>グループの合</translation>
+      <translation>グループの合</translation>
     </message>
     <message>
       <source>MEN_GROUP_INTERSECT</source>
-      <translation>グループの交差</translation>
+      <translation>グループの交差</translation>
     </message>
     <message>
       <source>MEN_GROUP_CUT</source>
-      <translation>切断グループ</translation>
+      <translation>グループのカット</translation>
     </message>
     <message>
       <source>MEN_FIELD</source>
-      <translation>MEN_FIELD</translation>
+      <translation>フィールド:</translation>
     </message>
     <message>
       <source>MEN_FIELD_CREATE</source>
-      <translation>MEN_FIELD_CREATE</translation>
+      <translation>フィールドを作成します。</translation>
     </message>
     <message>
       <source>MEN_FIELD_EDIT</source>
-      <translation>MEN_FIELD_EDIT</translation>
+      <translation>フィールドの編集</translation>
     </message>
     <message>
       <source>MEN_ADD_FIELD_STEP</source>
-      <translation>MEN_ADD_FIELD_STEP</translation>
+      <translation>フィールドステップの追加</translation>
     </message>
     <message>
       <source>MEN_RELOAD_IMPORTED</source>
     </message>
     <message>
       <source>MEN_MIN_DIST</source>
-      <translation>最距離</translation>
+      <translation>最距離</translation>
     </message>
     <message>
       <source>MEN_MIRROR</source>
-      <translation>ã\82ªã\83\96ã\82¸ã\82§ã\82¯ã\83\88ã\81®å\8f\8d転</translation>
+      <translation>ã\83\9fã\83©ã\83¼</translation>
     </message>
     <message>
       <source>MEN_MODIFY_LOCATION</source>
-      <translation>位置を変更します。</translation>
+      <translation>位置変更</translation>
     </message>
     <message>
       <source>MEN_MUL_ROTATION</source>
-      <translation>Multi-rotation</translation>
+      <translation>複数回回転</translation>
     </message>
     <message>
       <source>MEN_MUL_TRANSFORM</source>
-      <translation>Multi-transformation</translation>
+      <translation>複数回移動</translation>
     </message>
     <message>
       <source>MEN_MUL_TRANSLATION</source>
     </message>
     <message>
       <source>MEN_NEW_ENTITY</source>
-      <translation>æ\96°ã\81\97ã\81\84ã\82ªã\83\96ã\82¸ã\82§ã\82¯ã\83\88</translation>
+      <translation>æ\96°ã\81\97ã\81\84ã\82¨ã\83³ã\83\86ã\82£ã\83\86ã\82£</translation>
     </message>
     <message>
       <source>MEN_OFFSET</source>
     </message>
     <message>
       <source>MEN_ORIGIN_AND_VECTORS</source>
-      <translation>原点とベースベクトル</translation>
+      <translation>起源と基本ベクトル</translation>
     </message>
     <message>
       <source>MEN_PARTITION</source>
     </message>
     <message>
       <source>MEN_POINT</source>
-      <translation>基準点</translation>
+      <translation>点</translation>
     </message>
     <message>
       <source>MEN_POINT_COORDS</source>
     </message>
     <message>
       <source>MEN_POP_EDIT_FIELD</source>
-      <translation>MEN_POP_EDIT_FIELD</translation>
+      <translation>フィールドの編集</translation>
     </message>
     <message>
       <source>MEN_POP_DISCLOSE_CHILDREN</source>
-      <translation>子項目を開示します。</translation>
+      <translation>子項目を開示</translation>
     </message>
     <message>
       <source>MEN_POP_CONCEAL_CHILDREN</source>
     </message>
     <message>
       <source>MEN_POP_SHADING</source>
-      <translation>網かけ</translation>
+      <translation>シェーディング</translation>
     </message>
     <message>
       <source>MEN_POP_SHADING_WITH_EDGES</source>
-      <translation>陰影とエッジ</translation>
+      <translation>エッジ+シェーディング</translation>
     </message>
     <message>
       <source>MEN_POP_TEXTURE</source>
     </message>
     <message>
       <source>MEN_POP_VECTORS</source>
-      <translation>ã\82¨ã\83\83ã\82¸ã\81®æ\96¹å\90\91ã\82\92表示ã\81\97ã\81¾ã\81\99ã\80\82</translation>
+      <translation>ã\83\99ã\82¯ã\83\88ã\83«æ\96¹å\90\91表示</translation>
     </message>
     <message>
       <source>MEN_PREFERENCES</source>
     </message>
     <message>
       <source>MEN_ADVANCED</source>
-      <translation>高度な</translation>
+      <translation>高度な処理</translation>
     </message>
     <message>
       <source>MEN_PROPAGATE</source>
     </message>
     <message>
       <source>MEN_SHADING</source>
-      <translation>表面</translation>
+      <translation>網かけ</translation>
     </message>
     <message>
       <source>MEN_SHADING_WITH_EDGES</source>
       <source>MEN_3DSKETCH</source>
       <translation>3D スケッチ</translation>
     </message>
+    <message>
+      <source>MEN_ISOLINE</source>
+      <translation>等高線</translation>
+    </message>
     <message>
       <source>MEN_SOLID</source>
       <translation>ソリッド</translation>
     </message>
     <message>
       <source>MEN_MATERIALS_LIBRARY</source>
-      <translation>MEN_MATERIALS_LIBRARY</translation>
+      <translation>材料の特性</translation>
     </message>
     <message>
       <source>MEN_TORUS</source>
     </message>
     <message>
       <source>MEN_TRANSLATION</source>
-      <translation>移動</translation>
+      <translation>変換</translation>
     </message>
     <message>
       <source>MEN_VECTOR</source>
     </message>
     <message>
       <source>MEN_WHAT_IS</source>
-      <translation>Whatis</translation>
+      <translation>選択対象の情報</translation>
     </message>
     <message>
       <source>MEN_WIRE</source>
     </message>
     <message>
       <source>MEN_POP_POINT_MARKER</source>
-      <translation>ポイント マーカ</translation>
+      <translation>ポイント マーカ</translation>
     </message>
     <message>
       <source>MEN_POP_MATERIAL_PROPERTIES</source>
-      <translation>材料特性</translation>
+      <translation>材料特性</translation>
     </message>
     <message>
       <source>MEN_POP_PREDEF_MATER_CUSTOM</source>
-      <translation>MEN_POP_PREDEF_MATER_CUSTOM</translation>
+      <translation>カスタム...</translation>
     </message>
     <message>
       <source>NAME_LBL</source>
     </message>
     <message>
       <source>PREF_PREDEF_MATERIALS</source>
-      <translation>PREF_PREDEF_MATERIALS</translation>
+      <translation>コンテキスト メニューからプリセット マテリアルを表示します。</translation>
     </message>
     <message>
       <source>PREF_EDITGROUP_COLOR</source>
-      <translation>PREF_EDITGROUP_COLOR</translation>
+      <translation>グループの編集中にスロット形状の色</translation>
     </message>
     <message>
       <source>PREF_EDGE_WIDTH</source>
     </message>
     <message>
       <source>PREF_AUTO_BRING_TO_FRONT</source>
-      <translation>PREF_AUTO_BRING_TO_FRONT</translation>
+      <translation>フォア グラウンドで自動的に表示されます。</translation>
     </message>
     <message>
       <source>PREF_ISOS</source>
-      <translation>PREF_ISOS</translation>
+      <translation>輪郭の数</translation>
     </message>
     <message>
       <source>PREF_ISOS_U</source>
-      <translation>PREF_ISOS_U</translation>
+      <translation>U によると</translation>
     </message>
     <message>
       <source>PREF_ISOS_V</source>
-      <translation>PREF_ISOS_V</translation>
+      <translation>よると V</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_SCALAR_BAR</source>
+      <translation>場の分布表示についてのスカラバー</translation>
+    </message>
+    <message>
+      <source>PREF_SCALAR_BAR_X_POSITION</source>
+      <translation>X座標</translation>
+    </message>
+    <message>
+      <source>PREF_SCALAR_BAR_Y_POSITION</source>
+      <translation>Y座標</translation>
+    </message>
+    <message>
+      <source>PREF_SCALAR_BAR_WIDTH</source>
+      <translation>幅</translation>
+    </message>
+    <message>
+      <source>PREF_SCALAR_BAR_HEIGHT</source>
+      <translation>高さ</translation>
+    </message>
+    <message>
+      <source>PREF_SCALAR_BAR_TEXT_HEIGHT</source>
+      <translation>文字高さ</translation>
+    </message>
+    <message>
+      <source>PREF_SCALAR_BAR_NUMBER_OF_INTERVALS</source>
+      <translation>間隔の数</translation>
     </message>
     <message>
       <source>PROCESS_SHAPE_NEW_OBJ_NAME</source>
-      <translation>FormeRetraitee</translation>
+      <translation>ProcessShape</translation>
     </message>
     <message>
       <source>MATERIAL_LIBRARY_TLT</source>
-      <translation>MATERIAL_LIBRARY_TLT</translation>
+      <translation>図書館資料</translation>
     </message>
     <message>
       <source>REMOVE_HOLES_NEW_OBJ_NAME</source>
     </message>
     <message>
       <source>SEWING_NEW_OBJ_NAME</source>
-      <translation>つなぎ合わせ</translation>
+      <translation>Sewing</translation>
     </message>
     <message>
       <source>STB_ALL_SEL_ONLY</source>
     </message>
     <message>
       <source>STB_ARCHIMEDE</source>
-      <translation>ã\82\89ã\81\9bã\82\93æ\93\8dä½\9c</translation>
+      <translation>ã\82¢ã\83«ã\82­ã\83¡ã\83\87ã\82¹æ³\95ã\81§æ°´ä½\8dé\9d¢ã\82\92ä½\9cæ\88\90ã\81\97ã\81¾ã\81\99ã\80\82</translation>
     </message>
     <message>
       <source>STB_BASIC_PROPS</source>
     </message>
     <message>
       <source>STB_PICTURE_IMPORT</source>
-      <translation>ビュー内のイメージをインポートします。</translation>
+      <translation>ビューアーにイメージをインポートします。</translation>
     </message>
     <message>
       <source>STB_CHAMFER</source>
     </message>
     <message>
       <source>STB_COMMON</source>
-      <translation>交差点</translation>
+      <translation>共有領域</translation>
     </message>
     <message>
       <source>STB_COMPOUND</source>
     </message>
     <message>
       <source>STB_CUT</source>
-      <translation>切断</translation>
+      <translation>Cut</translation>
     </message>
     <message>
       <source>STB_CYLINDER</source>
     </message>
     <message>
       <source>STB_EXTRUDED_BOSS</source>
-      <translation>押し出しの上司</translation>
+      <translation>押出し</translation>
     </message>
     <message>
       <source>STB_FACE</source>
     </message>
     <message>
       <source>STB_GROUP_INTERSECT</source>
-      <translation>グループの交差点</translation>
+      <translation>グループの共有領域</translation>
     </message>
     <message>
       <source>STB_GROUP_CUT</source>
     </message>
     <message>
       <source>STB_FIELD_CREATE</source>
-      <translation>STB_FIELD_CREATE</translation>
+      <translation>フィールドを作成します。</translation>
     </message>
     <message>
       <source>STB_FIELD_EDIT</source>
-      <translation>STB_FIELD_EDIT</translation>
+      <translation>フィールドを編集します。</translation>
     </message>
     <message>
       <source>STB_RELOAD_IMPORTED</source>
     </message>
     <message>
       <source>STB_HEX_SOLID</source>
-      <translation>六面体ソリッド</translation>
+      <translation>Hexahedral_Solid</translation>
     </message>
     <message>
       <source>STB_IMPORT</source>
     </message>
     <message>
       <source>STB_MUL_ROTATION</source>
-      <translation>Multi-rotation を実行</translation>
+      <translation>複数回回転を実行します。</translation>
     </message>
     <message>
       <source>STB_MUL_TRANSFORM</source>
-      <translation>Multi-transformation を実行</translation>
+      <translation>複数回移動を実行します。</translation>
     </message>
     <message>
       <source>STB_MUL_TRANSLATION</source>
     </message>
     <message>
       <source>STB_POP_EDIT_FIELD</source>
-      <translation>STB_POP_EDIT_FIELD</translation>
+      <translation>フィールドを編集します。</translation>
     </message>
     <message>
       <source>STB_POP_UNPUBLISH_OBJ</source>
     </message>
     <message>
       <source>STB_POP_WIREFRAME</source>
-      <translation>ワイヤー</translation>
+      <translation>Wires</translation>
     </message>
     <message>
       <source>STB_MATERIALS_LIBRARY</source>
-      <translation>STB_MATERIALS_LIBRARY</translation>
+      <translation>材料のライブラリの内容を表示します。</translation>
     </message>
     <message>
       <source>STB_POP_PREDEF_MATER_CUSTOM</source>
-      <translation>STB_POP_PREDEF_MATER_CUSTOM</translation>
+      <translation>カスタム.</translation>
     </message>
     <message>
       <source>STB_PROPAGATE</source>
     </message>
     <message>
       <source>STB_WIREFRAME</source>
-      <translation>ワイヤー</translation>
+      <translation>Wires</translation>
     </message>
     <message>
       <source>STB_SHADING</source>
       <source>STB_3DSKETCH</source>
       <translation>3Dスケッチを作成</translation>
     </message>
+    <message>
+      <source>STB_ISOLINE</source>
+      <translation>UまたはV方向等高線の作成</translation>
+    </message>
     <message>
       <source>STB_SOLID</source>
       <translation>ソリッドを構築</translation>
     </message>
     <message>
       <source>TOOL_BASIC</source>
-      <translation>基オブジェクト</translation>
+      <translation>基オブジェクト</translation>
     </message>
     <message>
       <source>TOOL_BLOCKS</source>
-      <translation>ブロック</translation>
+      <translation>ブロック分割</translation>
     </message>
     <message>
       <source>TOOL_BOOLEAN</source>
     </message>
     <message>
       <source>TOOL_FEATURES</source>
-      <translation>変更</translation>
+      <translation>フィーチャー</translation>
     </message>
     <message>
       <source>TOOL_GENERATION</source>
-      <translation>ジェネレーション</translation>
+      <translation>押し出し/回転</translation>
     </message>
     <message>
       <source>TOOL_PRIMITIVES</source>
     </message>
     <message>
       <source>TOOL_TRANSFORMATION</source>
-      <translation>変形</translation>
+      <translation>変形/移動/回転</translation>
     </message>
     <message>
       <source>TOOL_BUILD</source>
-      <translation>ã\83\93ã\83«ã\83\89</translation>
+      <translation>æ§\8bç¯\89</translation>
     </message>
     <message>
       <source>TOOL_OPERATIONS</source>
     </message>
     <message>
       <source>TOOL_ADVANCED</source>
-      <translation>高度な</translation>
+      <translation>高度なツール</translation>
     </message>
     <message>
       <source>TOOL_MEASURES</source>
-      <translation>情報</translation>
+      <translation>情報/測定</translation>
     </message>
     <message>
       <source>TOP_ARC</source>
     </message>
     <message>
       <source>TOP_ARCHIMEDE</source>
-      <translation>ã\82\89ã\81\9bã\82\93</translation>
+      <translation>ã\82¢ã\83«ã\82­ã\83¡ã\83\87ã\82¹æ³\95ã\81§æ°´ä½\8dé\9d¢ã\82\92ä½\9cæ\88\90</translation>
     </message>
     <message>
       <source>TOP_BASIC_PROPS</source>
     </message>
     <message>
       <source>TOP_COMMON</source>
-      <translation>交差点</translation>
+      <translation>共有領域</translation>
     </message>
     <message>
       <source>TOP_COMPOUND</source>
     </message>
     <message>
       <source>TOP_CUT</source>
-      <translation>切断</translation>
+      <translation>Cut</translation>
     </message>
     <message>
       <source>TOP_CYLINDER</source>
     </message>
     <message>
       <source>TOP_EXTRUDED_BOSS</source>
-      <translation>押し出しの上司</translation>
+      <translation>押出し</translation>
     </message>
     <message>
       <source>TOP_EXTRUDED_CUT</source>
-      <translation>押出成形材料の除去</translation>
+      <translation>押出しカット</translation>
     </message>
     <message>
       <source>TOP_FACE</source>
     </message>
     <message>
       <source>TOP_GROUP_INTERSECT</source>
-      <translation>グループの交差点</translation>
+      <translation>グループの共有領域</translation>
     </message>
     <message>
       <source>TOP_GROUP_CUT</source>
     </message>
     <message>
       <source>TOP_FIELD_CREATE</source>
-      <translation>TOP_FIELD_CREATE</translation>
+      <translation>フィールドを作成します。</translation>
     </message>
     <message>
       <source>TOP_FIELD_EDIT</source>
-      <translation>TOP_FIELD_EDIT</translation>
+      <translation>フィールドを編集します。</translation>
     </message>
     <message>
       <source>TOP_HEX_SOLID</source>
-      <translation>六面体ソリッド</translation>
+      <translation>Hexahedral_Solid</translation>
     </message>
     <message>
       <source>TOP_IMPORT</source>
     </message>
     <message>
       <source>TOP_MODIFY_LOCATION</source>
-      <translation>位置を変更します。</translation>
+      <translation>座標系変更</translation>
     </message>
     <message>
       <source>TOP_MUL_ROTATION</source>
-      <translation>Multi-rotation</translation>
+      <translation>複数回回転</translation>
     </message>
     <message>
       <source>TOP_MUL_TRANSFORM</source>
-      <translation>Multi-transformation</translation>
+      <translation>複数回移動</translation>
     </message>
     <message>
       <source>TOP_MUL_TRANSLATION</source>
     </message>
     <message>
       <source>TOP_PICTURE_IMPORT</source>
-      <translation>ビュー内のイメージをインポートします。</translation>
+      <translation>ビューアーにイメージをインポート</translation>
     </message>
     <message>
       <source>TOP_FEATURE_DETECTION</source>
     </message>
     <message>
       <source>TOP_POP_EDIT_FIELD</source>
-      <translation>TOP_POP_EDIT_FIELD</translation>
+      <translation>フィールドを編集します。</translation>
     </message>
     <message>
       <source>TOP_POP_UNPUBLISH_OBJ</source>
     </message>
     <message>
       <source>TOP_POP_WIREFRAME</source>
-      <translation>ワイヤー</translation>
+      <translation>Wires</translation>
     </message>
     <message>
       <source>TOP_PROPAGATE</source>
     </message>
     <message>
       <source>TOP_SCALE</source>
-      <translation>サイズ変更</translation>
+      <translation>サイズ変更</translation>
     </message>
     <message>
       <source>TOP_SECTION</source>
     </message>
     <message>
       <source>TOP_3DSKETCH</source>
-      <translation>3Dスケッチャー</translation>
+      <translation>3D_Sketcher</translation>
+    </message>
+    <message>
+      <source>TOP_ISOLINE</source>
+      <translation>等高線</translation>
     </message>
     <message>
       <source>TOP_SOLID</source>
     </message>
     <message>
       <source>GEOM_REMOVE_WEBS_TITLE</source>
-      <translation>GEOM_REMOVE_WEBS_TITLE</translation>
+      <translation>内部面の削除</translation>
     </message>
     <message>
       <source>GEOM_REMOVE_WEBS</source>
-      <translation>梁を削除</translation>
+      <translation>固体の混合物</translation>
     </message>
     <message>
       <source>REMOVE_WEBS_NEW_OBJ_NAME</source>
-      <translation>REMOVE_WEBS_NEW_OBJ_NAME</translation>
+      <translation>NoInternalFaces</translation>
     </message>
     <message>
       <source>TOP_REMOVE_WEBS</source>
-      <translation>TOP_REMOVE_WEBS</translation>
+      <translation>内部面を削除します。</translation>
     </message>
     <message>
       <source>MEN_REMOVE_WEBS</source>
-      <translation>MEN_REMOVE_WEBS</translation>
+      <translation>内部面の削除</translation>
     </message>
     <message>
       <source>STB_REMOVE_WEBS</source>
-      <translation>STB_REMOVE_WEBS</translation>
+      <translation>内部面を削除します。</translation>
     </message>
     <message>
       <source>GEOM_REMOVE_EXTRA_EDGES_TITLE</source>
     </message>
     <message>
       <source>FUSE_EDGES_NEW_OBJ_NAME</source>
-      <translation>Fusionaretes</translation>
+      <translation>FuseEdges</translation>
     </message>
     <message>
       <source>TOP_FUSE_EDGES</source>
     </message>
     <message>
       <source>TOP_UNION_FACES</source>
-      <translation>TOP_UNION_FACES</translation>
+      <translation>連合に直面しています。</translation>
     </message>
     <message>
       <source>MEN_UNION_FACES</source>
-      <translation>MEN_UNION_FACES</translation>
+      <translation>連合に直面しています。</translation>
     </message>
     <message>
       <source>STB_UNION_FACES</source>
-      <translation>STB_UNION_FACES</translation>
+      <translation>連合に直面しています。</translation>
     </message>
     <message>
       <source>TOP_NORMALE</source>
     </message>
     <message>
       <source>MEN_POP_DISABLE_AUTO_COLOR</source>
-      <translation>自動カラー補正を無効にします。</translation>
+      <translation>自動色無効</translation>
     </message>
     <message>
       <source>STB_POP_DISABLE_AUTO_COLOR</source>
     </message>
     <message>
       <source>MEN_POP_CREATE_FOLDER</source>
-      <translation>MEN_POP_CREATE_FOLDER</translation>
+      <translation>フォルダ作成</translation>
     </message>
     <message>
       <source>STB_POP_CREATE_FOLDER</source>
-      <translation>STB_POP_CREATE_FOLDER</translation>
+      <translation>新しいフォルダーを作成します。</translation>
     </message>
     <message>
       <source>NEW_FOLDER_NAME</source>
-      <translation>NEW_FOLDER_NAME</translation>
+      <translation>新規フォルダー</translation>
     </message>
     <message>
       <source>MEN_POP_SORT_CHILD_ITEMS</source>
-      <translation>MEN_POP_SORT_CHILD_ITEMS</translation>
+      <translation>子供の並べ替え</translation>
     </message>
     <message>
       <source>STB_POP_SORT_CHILD_ITEMS</source>
-      <translation>STB_POP_SORT_CHILD_ITEMS</translation>
+      <translation>子アイテムを並べ替える</translation>
     </message>
     <message>
       <source>GEOM_RESULT_NAME_GRP</source>
     </message>
     <message>
       <source>GEOM_SHAPES_ON_SHAPE</source>
-      <translation>オブジェクトの要素を見つける</translation>
+      <translation>Shapes_On_Shape</translation>
     </message>
     <message>
       <source>GEOM_SHAPES_ON_SHAPE_ESHAPE</source>
     </message>
     <message>
       <source>GEOM_DISK_CIRCLE</source>
-      <translation>ディスク</translation>
+      <translation>Disk</translation>
     </message>
     <message>
       <source>GEOM_DISK_ELLIPSE</source>
     </message>
     <message>
       <source>EXPORT_IGES_HETEROGENEOUS_COMPOUND</source>
-      <translation>異なるモードの sauvegardees\ndans をある必要がありますエンティティを含んでいるのでこのアセンブリ IGES\nsans 損失の形式でエクスポートできません。頂点、エッジと et\nles シェルの輪郭と別の固体。</translation>
+      <translation>このアセンブリは異なるモードでバックアップする必要がありますエンティティを含んでいるので損失なし IGES フォーマットでエクスポートできません。頂点、エッジと 1 つの側面およびシェルとソリッドから別に輪郭です。</translation>
     </message>
     <message>
       <source>GEOM_PUBLISH_NAMED_SHAPES</source>
     </message>
     <message>
       <source>GEOM_SCALE_DIMENSIONS</source>
-      <translation>単位を考慮したいと思うか? \nIf ないモデルになる (メートル単位として解釈されます) ジオメトリをスケーリングします。</translation>
+      <translation>インポートしたファイルの単位をミリメートルからメートルに変換しますか?いいえを選んだ場合、メートル単位として解釈します。</translation>
     </message>
     <message>
       <source>GEOM_PRECISION_HINT</source>
-      <translation>ã\82¸ã\82ªã\83¡ã\83\88ã\83ªã\83¢ã\82¸ã\83¥ã\83¼ã\83«ã\81®è¨­å®\9aã\81§ã\83\91ã\83©ã\83¡ã\83¼ã\82¿ã\83¼ '%1' ã\82\92å\85¥å\8a\9bã\81\99ã\82\8bã\81\93ã\81¨ã\81§ç²¾åº¦ã\82\92調æ\95´ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cå\8f¯è\83½ã\81§ã\81\99。</translation>
+      <translation>ã\83\91ã\83©ã\83¡ã\83¼ã\82¿ã\83¼ã\81®å\85¥å\8a\9bå\80¤ã\81®ç²¾åº¦ã\82\92調æ\95´ã\81\99ã\82\8bã\81\93ã\81¨ã\81¯ '%1' ã\81®å¥½ã\81¿ã\81«ã\82¸ã\82ªã\83¡ã\83\88ã\83ª ã\83¢ã\82¸ã\83¥ã\83¼ã\83«ã\81®。</translation>
     </message>
     <message>
       <source>GEOM_PLUGINS_OTHER</source>
     </message>
     <message>
       <source>TOP_SMOOTHINGSURFACE</source>
-      <translation>TOP_SMOOTHINGSURFACE</translation>
+      <translation>表面 lissee</translation>
     </message>
     <message>
       <source>GEOM_SELECT_IMAGE</source>
     </message>
     <message>
       <source>MEN_IMPORTEXPORT</source>
-      <translation>MEN_IMPORTEXPORT</translation>
+      <translation>インポート/エクスポート</translation>
     </message>
     <message>
       <source>TOOL_IMPORTEXPORT</source>
-      <translation>TOOL_IMPORTEXPORT</translation>
+      <translation>インポート/エクスポート</translation>
     </message>
     <message>
       <source>TOP_EXPORTXAO</source>
-      <translation>TOP_EXPORTXAO</translation>
+      <translation>エクスポートしました。</translation>
     </message>
     <message>
       <source>MEN_EXPORTXAO</source>
-      <translation>MEN_EXPORTXAO</translation>
+      <translation>エクスポートしました。</translation>
     </message>
     <message>
       <source>STB_EXPORTXAO</source>
-      <translation>STB_EXPORTXAO</translation>
+      <translation>ソテーした形式でフォームをエクスポートします。</translation>
     </message>
     <message>
       <source>TOP_IMPORTXAO</source>
-      <translation>TOP_IMPORTXAO</translation>
+      <translation>インポートしました。</translation>
     </message>
     <message>
       <source>MEN_IMPORTXAO</source>
-      <translation>MEN_IMPORTXAO</translation>
+      <translation>インポートしました。</translation>
     </message>
     <message>
       <source>STB_IMPORTXAO</source>
-      <translation>STB_IMPORTXAO</translation>
+      <translation>ソテーしたフォームをインポートします。</translation>
     </message>
     <message>
       <source>GEOM_IMPORTEXPORT_204</source>
-      <translation>GEOM_IMPORTEXPORT_204</translation>
+      <translation>エクスポートしました。</translation>
     </message>
     <message>
       <source>GEOM_SELECT_EXPORT_XAO</source>
-      <translation>GEOM_SELECT_EXPORT_XAO</translation>
+      <translation>エクスポートしました。</translation>
     </message>
     <message>
       <source>XAO_FILES</source>
-      <translation>XAO_FILES</translation>
+      <translation>ファイルした (*.xao)</translation>
     </message>
     <message>
       <source>TOOLS_IMPORTEXPORT</source>
-      <translation>TOOLS_IMPORTEXPORT</translation>
+      <translation>インポート/エクスポート</translation>
+    </message>
+    <message>
+      <source>CC_PNT_ITEM_X_Y</source>
+      <translation>X=%1, Y=%2</translation>
+    </message>
+    <message>
+      <source>CC_PNT_ITEM_X_Y_Z</source>
+      <translation>X=%1, Y=%2, Z=%3</translation>
     </message>
   </context>
   <context>
     </message>
     <message>
       <source>GEOM_INTERPOL_TANGENTS</source>
-      <translation>GEOM_INTERPOL_TANGENTS</translation>
+      <translation>接線</translation>
     </message>
     <message>
       <source>GEOM_INTERPOL_FIRST_VEC</source>
-      <translation>GEOM_INTERPOL_FIRST_VEC</translation>
+      <translation>最初の接線ベクトル</translation>
     </message>
     <message>
       <source>GEOM_INTERPOL_LAST_VEC</source>
-      <translation>GEOM_INTERPOL_LAST_VEC</translation>
+      <translation>最後の接線ベクトル</translation>
     </message>
     <message>
       <source>GEOM_BOTH_TANGENTS_REQUIRED</source>
-      <translation>GEOM_BOTH_TANGENTS_REQUIRED</translation>
+      <translation>2 つの接線ベクトルを定義する必要があります。</translation>
     </message>
     <message>
       <source>GEOM_CURVE_CRMODE</source>
       <translation>フェース 2 V</translation>
     </message>
   </context>
+  <context>
+    <name>CurveCreator_NewPointDlg</name>
+    <message>
+      <source>ADD_NEW_POINT</source>
+      <translation>新しい点の追加</translation>
+    </message>
+    <message>
+      <source>X_COORD</source>
+      <translation>X</translation>
+    </message>
+    <message>
+      <source>Y_COORD</source>
+      <translation>Y</translation>
+    </message>
+    <message>
+      <source>Z_COORD</source>
+      <translation>Z</translation>
+    </message>
+    <message>
+      <source>ADD_BTN</source>
+      <translation>追加</translation>
+    </message>
+    <message>
+      <source>ADD_CONTINUE_BTN</source>
+      <translation>追加して継続</translation>
+    </message>
+    <message>
+      <source>ADD_NEW_POINT_TO_%1</source>
+      <translation>新しい点を%1に追加</translation>
+    </message>
+    <message>
+      <source>SET_POINT_COORDINATES</source>
+      <translation>点座標の設定</translation>
+    </message>
+  </context>
+  <context>
+    <name>CurveCreator_NewSectionDlg</name>
+    <message>
+      <source>NAME</source>
+      <translation>名前</translation>
+    </message>
+    <message>
+      <source>LINE_TYPE</source>
+      <translation>ライン</translation>
+    </message>
+    <message>
+      <source>POLYLINE_TYPE</source>
+      <translation>ポリライン</translation>
+    </message>
+    <message>
+      <source>SPLINE_TYPE</source>
+      <translation>スプライン</translation>
+    </message>
+    <message>
+      <source>LINE_CLOSED</source>
+      <translation>閉じたライン</translation>
+    </message>
+    <message>
+      <source>OK</source>
+      <translation>Ok</translation>
+    </message>
+    <message>
+      <source>ADD_BTN</source>
+      <translation>追加</translation>
+    </message>
+    <message>
+      <source>ADD_CONTINUE_BTN</source>
+      <translation>追加して継続</translation>
+    </message>
+    <message>
+      <source>ADD_NEW_SECTION</source>
+      <translation>新しい断面の追加</translation>
+    </message>
+    <message>
+      <source>SET_SECTION_PARAMETERS</source>
+      <translation>断面パラメータの設定</translation>
+    </message>
+  </context>
+  <context>
+    <name>CurveCreator_TreeViewModel</name>
+    <message>
+      <source>X=%1, Y=%2</source>
+      <translation>X=%1, Y=%2</translation>
+    </message>
+    <message>
+      <source>X=%1, Y=%2, Z=%3</source>
+      <translation>X=%1, Y=%2, Z=%3</translation>
+    </message>
+  </context>
+  <context>
+    <name>CurveCreator_Widget</name>
+    <message>
+      <source>CURVE_NAME_TLT</source>
+      <translation>カーブの名前</translation>
+    </message>
+    <message>
+      <source>SECTION_GROUP_TLT</source>
+      <translation>断面グループ</translation>
+    </message>
+    <message>
+      <source>UNDO</source>
+      <translation>元に戻す</translation>
+    </message>
+    <message>
+      <source>UNDO_TLT</source>
+      <translation>元に戻す</translation>
+    </message>
+    <message>
+      <source>REDO</source>
+      <translation>前に進む</translation>
+    </message>
+    <message>
+      <source>REDO_TLT</source>
+      <translation>前に進む</translation>
+    </message>
+    <message>
+      <source>NEW_SECTION</source>
+      <translation>新しい断面</translation>
+    </message>
+    <message>
+      <source>NEW_SECTION_TLT</source>
+      <translation>新しい断面の挿入</translation>
+    </message>
+    <message>
+      <source>INSERT_SECTION_BEFORE</source>
+      <translation>前に断面を挿入</translation>
+    </message>
+    <message>
+      <source>INSERT_SECTION_BEFORE_TLT</source>
+      <translation>前に断面を挿入</translation>
+    </message>
+    <message>
+      <source>INSERT_SECTION_AFTER</source>
+      <translation>後に断面の挿入</translation>
+    </message>
+    <message>
+      <source>INSERT_SECTION_AFTER_TLT</source>
+      <translation>後に断面の挿入</translation>
+    </message>
+    <message>
+      <source>ADDITION_MODE</source>
+      <translation>追加モード</translation>
+    </message>
+    <message>
+      <source>ADDITION_MODE_TLT</source>
+      <translation>追加モード</translation>
+    </message>
+    <message>
+      <source>MODIFICATION_MODE</source>
+      <translation>修正モード</translation>
+    </message>
+    <message>
+      <source>MODIFICATION_MODE_TLT</source>
+      <translation>修正モード</translation>
+    </message>
+    <message>
+      <source>DETECTION_MODE</source>
+      <translation>検出モード</translation>
+    </message>
+    <message>
+      <source>DETECTION_MODE_TLT</source>
+      <translation>検出モード</translation>
+    </message>
+    <message>
+      <source>INSERT_POINT_BEFORE</source>
+      <translation>前に点の挿入</translation>
+    </message>
+    <message>
+      <source>INSERT_POINT_BEFORE_TLT</source>
+      <translation>前に点の挿入</translation>
+    </message>
+    <message>
+      <source>INSERT_POINT_AFTER</source>
+      <translation>後に点の挿入</translation>
+    </message>
+    <message>
+      <source>CLOSE_SECTIONS</source>
+      <translation>断面を閉じる</translation>
+    </message>
+    <message>
+      <source>CLOSE_SECTIONS_TLT</source>
+      <translation>断面を閉じる</translation>
+    </message>
+    <message>
+      <source>UNCLOSE_SECTIONS</source>
+      <translation>断面を開く</translation>
+    </message>
+    <message>
+      <source>UNCLOSE_SECTIONS_TLT</source>
+      <translation>選択した断面を開く</translation>
+    </message>
+    <message>
+      <source>SET_SECTIONS_POLYLINE</source>
+      <translation>断面のポリラインを設定</translation>
+    </message>
+    <message>
+      <source>SET_SECTIONS_POLYLINE_TLT</source>
+      <translation>断面のポリラインを設定</translation>
+    </message>
+    <message>
+      <source>SET_SECTIONS_SPLINE</source>
+      <translation>断面のスプラインを設定</translation>
+    </message>
+    <message>
+      <source>SET_SECTIONS_SPLINE_TLT</source>
+      <translation>選択した断面をスプラインに設定</translation>
+    </message>
+    <message>
+      <source>REMOVE</source>
+      <translation>削除</translation>
+    </message>
+    <message>
+      <source>REMOVE_TLT</source>
+      <translation>削除</translation>
+    </message>
+    <message>
+      <source>JOIN</source>
+      <translation>結合</translation>
+    </message>
+    <message>
+      <source>JOIN_TLT</source>
+      <translation>選択した断面を結合</translation>
+    </message>
+    <message>
+      <source>STEP_UP</source>
+      <translation>上昇</translation>
+    </message>
+    <message>
+      <source>STEP_UP_TLT</source>
+      <translation>選択したオブジェクトを上昇</translation>
+    </message>
+    <message>
+      <source>STEP_DOWN</source>
+      <translation>下降</translation>
+    </message>
+    <message>
+      <source>STEP_DOWN_TLT</source>
+      <translation>選択したオブジェクトを下降</translation>
+    </message>
+    <message>
+      <source>CLEAR_ALL</source>
+      <translation>すべて消去</translation>
+    </message>
+    <message>
+      <source>CLEAR_ALL_TLT</source>
+      <translation>すべてのオブジェクトを削除</translation>
+    </message>
+    <message>
+      <source>JOIN_ALL</source>
+      <translation>すべての断面を結合</translation>
+    </message>
+    <message>
+      <source>JOIN_ALL_TLT</source>
+      <translation>すべての断面を結合</translation>
+    </message>
+  </context>
   <context>
     <name>EntityGUI_SketcherDlg</name>
     <message>
       <source>CANNOT_CLOSE</source>
-      <translation>スケッチを閉じることができません\nスケッチのポイント数が少なすぎます</translation>
+      <translation>閉じるには、アウトライン番号のポイントは十分ではないことはできません。</translation>
     </message>
   </context>
   <context>
     </message>
     <message>
       <source>GEOM_CONTOURS</source>
-      <translation>ワイヤー</translation>
+      <translation>Wires</translation>
     </message>
     <message>
       <source>GEOM_FEATURES</source>
     </message>
     <message>
       <source>GEOM_DETECT_ZONE</source>
-      <translation>Detection\n (すべて、既定のイメージ) の領域を選択します。</translation>
+      <translation>検出ゾーン (すべての既定のイメージ) を選択します</translation>
     </message>
     <message>
       <source>GEOM_DETECT_OUTPUT</source>
       <source>GEOM_LEFT</source>
       <translation>左 (X - Z)</translation>
     </message>
+    <message>
+      <source>USE_ROI</source>
+      <translation>希望の領域を使用</translation>
+    </message>
+    <message>
+      <source>KERNEL_SIZE</source>
+      <translation>カーネルサイズ</translation>
+    </message>
+    <message>
+      <source>QUALITY_LEVEL</source>
+      <translation>クオリティレベル</translation>
+    </message>
+    <message>
+      <source>MIN_DISTANCE</source>
+      <translation>最短距離</translation>
+    </message>
+    <message>
+      <source>TYPE_CRITERIA</source>
+      <translation>タイプの基準</translation>
+    </message>
+    <message>
+      <source>CV_TERMCRIT_ITER</source>
+      <translation>イタレーションの最大数</translation>
+    </message>
+    <message>
+      <source>CV_TERMCRIT_EPS</source>
+      <translation>許容範囲</translation>
+    </message>
+    <message>
+      <source>CV_TERMCRIT_ITER | CV_TERMCRIT_EPS</source>
+      <translation>イタレーションまたは許容範囲の最大数</translation>
+    </message>
+    <message>
+      <source>MAX_ITER</source>
+      <translation>最大イタレーション</translation>
+    </message>
+    <message>
+      <source>EPSILON</source>
+      <translation>許容範囲</translation>
+    </message>
+    <message>
+      <source>L2GRADIENT</source>
+      <translation>L2 gradient</translation>
+    </message>
+    <message>
+      <source>LOWTHRESHOLD</source>
+      <translation>低しきい値</translation>
+    </message>
+    <message>
+      <source>RATIO</source>
+      <translation>比</translation>
+    </message>
+    <message>
+      <source>SMOOTH_SIZE</source>
+      <translation>平滑サイズ</translation>
+    </message>
+    <message>
+      <source>HBINS</source>
+      <translation>Hbins</translation>
+    </message>
+    <message>
+      <source>SBINS</source>
+      <translation>Sbins</translation>
+    </message>
+    <message>
+      <source>HIST_TYPE</source>
+      <translation>ヒストグラムのタイプ</translation>
+    </message>
+    <message>
+      <source>CV_HIST_ARRAY</source>
+      <translation>多次元高密度配列</translation>
+    </message>
+    <message>
+      <source>CV_HIST_SPARSE</source>
+      <translation>多次元スパース配列</translation>
+    </message>
+    <message>
+      <source>THRESHOLD_VALUE</source>
+      <translation>しきい値</translation>
+    </message>
+    <message>
+      <source>MAX_THRESHOLD</source>
+      <translation>最大しきい値</translation>
+    </message>
+    <message>
+      <source>FIND_CONTOURS_METHOD</source>
+      <translation>輪郭取得法</translation>
+    </message>
+    <message>
+      <source>CV_CHAIN_APPROX_NONE</source>
+      <translation>チェーン近似がない</translation>
+    </message>
+    <message>
+      <source>CV_CHAIN_APPROX_SIMPLE</source>
+      <translation>チェーン近似はSimple</translation>
+    </message>
+    <message>
+      <source>CV_CHAIN_APPROX_TC89_KCOS</source>
+      <translation>チェーン近似はTC90 KCOS</translation>
+    </message>
+    <message>
+      <source>CV_CHAIN_APPROX_TC89_L1</source>
+      <translation>チェーン近似はTC90 L1</translation>
+    </message>
   </context>
   <context>
     <name>EntityGUI_PictureImportDlg</name>
     </message>
     <message>
       <source>GEOM_IMPORT_PICT_TITLE</source>
-      <translation>ã\83\93ã\83¥ã\83¼ã\82¢ã\83¼ã\81®ã\82¤ã\83¡ã\83¼ã\82¸ã\82\92ã\82¤ã\83³ã\83\9dã\83¼ã\83\88ã\81\97ã\81¾ã\81\99ã\80\82</translation>
+      <translation>ã\83\93ã\83¥ã\83¼ã\82¢ã\83¼ã\81«ã\82¤ã\83¡ã\83¼ã\82¸ã\82\92ã\82¤ã\83³ã\83\9dã\83¼ã\83\88</translation>
     </message>
   </context>
   <context>
     <name>GenerationGUI_PrismDlg</name>
     <message>
       <source>GEOM_THICKENING</source>
-      <translation>GEOM_THICKENING</translation>
+      <translation>Epaississement</translation>
     </message>
     <message>
       <source>GEOM_ADD_THICKNESS</source>
-      <translation>GEOM_ADD_THICKNESS</translation>
+      <translation>厚み追加(エッジまたはワイヤーのみ)</translation>
     </message>
     <message>
       <source>GEOM_TOWARDS_INSIDE</source>
-      <translation>GEOM_TOWARDS_INSIDE</translation>
+      <translation>内側に向かって厚く</translation>
     </message>
   </context>
   <context>
     </message>
     <message>
       <source>GEOM_INTERSECT_TITLE</source>
-      <translation>グループの交差点</translation>
+      <translation>グループの共有領域</translation>
     </message>
     <message>
       <source>GEOM_CUT</source>
     </message>
     <message>
       <source>GEOM_CUT_TITLE</source>
-      <translation>オブジェクトの切断</translation>
+      <translation>切断グループ</translation>
     </message>
     <message>
       <source>GEOM_GROUPS</source>
     </message>
     <message>
       <source>GEOM_MAIN_GROUPS</source>
-      <translation>主なグループ</translation>
+      <translation>メイングループ</translation>
     </message>
     <message>
       <source>GEOM_TOOL_GROUPS</source>
-      <translation>ã\82°ã\83«ã\83¼ã\83\97 ã\83\84ã\83¼ã\83«</translation>
+      <translation>ã\83\84ã\83¼ã\83« ã\82°ã\83«ã\83¼ã\83\97</translation>
     </message>
   </context>
   <context>
     </message>
     <message>
       <source>SELECT_ALL</source>
-      <translation>すべてを選択</translation>
+      <translation>選択</translation>
     </message>
     <message>
       <source>SHAPE_SEL_RESTR</source>
     </message>
     <message>
       <source>WRN_NOT_SUBSHAPE</source>
-      <translation>WRN_NOT_SUBSHAPE</translation>
+      <translation>選択した図形は、主要な図形のサブ図形ではありません。適切な選択については、ビューアー内のすべての余分な図形を非表示します。</translation>
     </message>
   </context>
   <context>
     <name>EntityGUI</name>
     <message>
       <source>NO_FIELD</source>
-      <translation>NO_FIELD</translation>
+      <translation>編集するフィールドを選択してください。</translation>
     </message>
   </context>
   <context>
     <name>EntityGUI_FieldDlg</name>
     <message>
       <source>CREATE_FIELD_TITLE</source>
-      <translation>CREATE_FIELD_TITLE</translation>
+      <translation>フィールドを作成します。</translation>
     </message>
     <message>
       <source>EDIT_FIELD_TITLE</source>
-      <translation>EDIT_FIELD_TITLE</translation>
+      <translation>フィールドを編集します。</translation>
     </message>
     <message>
       <source>FIELD_NAME</source>
-      <translation>FIELD_NAME</translation>
+      <translation>フィールド名</translation>
     </message>
     <message>
       <source>PROPERTIES</source>
-      <translation>PROPERTIES</translation>
+      <translation>オブジェクト インスペクター</translation>
     </message>
     <message>
       <source>SHAPE</source>
-      <translation>SHAPE</translation>
+      <translation>オブジェクト</translation>
     </message>
     <message>
       <source>DATA_TYPE</source>
-      <translation>DATA_TYPE</translation>
+      <translation>タイプ</translation>
     </message>
     <message>
       <source></source>
     </message>
     <message>
       <source>BOOL</source>
-      <translation>BOOL</translation>
+      <translation>ブーリアン</translation>
     </message>
     <message>
       <source>INT</source>
-      <translation>INT</translation>
+      <translation>整数</translation>
     </message>
     <message>
       <source>DOUBLE</source>
-      <translation>DOUBLE</translation>
+      <translation>ダブル</translation>
     </message>
     <message>
       <source>STRING</source>
-      <translation>STRING</translation>
+      <translation>文字列</translation>
     </message>
     <message>
       <source>SHAPE_TYPE</source>
-      <translation>SHAPE_TYPE</translation>
+      <translation>SubShape</translation>
     </message>
     <message>
       <source>VERTEX</source>
-      <translation>VERTEX</translation>
+      <translation>基準点</translation>
     </message>
     <message>
       <source>EDGE</source>
-      <translation>EDGE</translation>
+      <translation>Edge</translation>
     </message>
     <message>
       <source>FACE</source>
-      <translation>FACE</translation>
+      <translation>Face</translation>
     </message>
     <message>
       <source>SOLID</source>
-      <translation>SOLID</translation>
+      <translation>ソリッド</translation>
     </message>
     <message>
       <source>WHOLE</source>
-      <translation>WHOLE</translation>
+      <translation>図形全体</translation>
     </message>
     <message>
       <source>NB_COMPS</source>
-      <translation>NB_COMPS</translation>
+      <translation>注意コンポーネント</translation>
     </message>
     <message>
       <source>VALUES</source>
-      <translation>VALUES</translation>
+      <translation></translation>
     </message>
     <message>
       <source>PREV_STEP</source>
-      <translation>PREV_STEP</translation>
+      <translation>前の手順</translation>
     </message>
     <message>
       <source>STEP</source>
-      <translation>STEP</translation>
+      <translation>ステップ</translation>
     </message>
     <message>
       <source>NEXT_STEP</source>
-      <translation>NEXT_STEP</translation>
+      <translation>次のステップ</translation>
     </message>
     <message>
       <source>ADD_STEP</source>
-      <translation>ADD_STEP</translation>
+      <translation>ステップを追加します。</translation>
     </message>
     <message>
       <source>STAMP</source>
-      <translation>STAMP</translation>
+      <translation>スタンプ</translation>
     </message>
     <message>
       <source>REMOVE_STEP</source>
-      <translation>REMOVE_STEP</translation>
+      <translation>ステップを削除します。</translation>
     </message>
     <message>
       <source>FIELD_PREFIX</source>
-      <translation>FIELD_PREFIX</translation>
+      <translation>フィールド:</translation>
     </message>
     <message>
       <source>GEOM_NO_STUDY</source>
-      <translation>GEOM_NO_STUDY</translation>
+      <translation>ない研究桁</translation>
     </message>
     <message>
       <source>NO_SHAPE</source>
-      <translation>NO_SHAPE</translation>
+      <translation>図形が選択されていません</translation>
     </message>
     <message>
       <source>NO_FIELD</source>
-      <translation>NO_FIELD</translation>
+      <translation>選択されていないフィールド</translation>
     </message>
     <message>
       <source>EMPTY_NAME</source>
-      <translation>EMPTY_NAME</translation>
+      <translation>空でないフィールド名を指定してください。</translation>
     </message>
     <message>
       <source>NO_VALUES</source>
-      <translation>NO_VALUES</translation>
+      <translation>フィールドに追加手順なし</translation>
     </message>
     <message>
       <source>SUB_SHAPE_HEADER</source>
-      <translation>SUB_SHAPE_HEADER</translation>
+      <translation>SubShape</translation>
     </message>
     <message>
       <source>WHOLE_SHAPE_VHEADER</source>
-      <translation>WHOLE_SHAPE_VHEADER</translation>
+      <translation>オブジェクト</translation>
+    </message>
+    <message>
+      <source>RENAME_COMPONENT</source>
+      <translation>コンポーネントの名前変更</translation>
+    </message>
+    <message>
+      <source>COMPONENT_NAME</source>
+      <translation>コンポーネント名</translation>
+    </message>
+    <message>
+      <source>WRN_NOT_SUBSHAPE</source>
+      <translation>選択した形状は主要な図形のサブ図形ではありません。適切な選択については、ビューアー内のすべての余分な図形を非表示します。</translation>
+    </message>
+    <message>
+      <source>ERR_STEP_EXISTS</source>
+      <translation>そのIDのステップはすでに存在します。</translation>
     </message>
   </context>
   <context>
     <name>MeasureGUI_PointDlg</name>
     <message>
       <source>CAPTION</source>
-      <translation>点の座標</translation>
+      <translation>軸に目盛り付け</translation>
     </message>
     <message>
       <source>COORDINATES</source>
     </message>
     <message>
       <source>SELECTED_FACES</source>
-      <translation>フェース</translation>
+      <translation>選択面</translation>
     </message>
   </context>
   <context>
     <name>OperationGUI_FilletDlg</name>
     <message>
       <source>SELECTED_EDGES</source>
-      <translation>エッジ</translation>
+      <translation>選択エッジ</translation>
     </message>
     <message>
       <source>SELECTED_FACES</source>
-      <translation>フェース</translation>
+      <translation>Faces</translation>
     </message>
   </context>
   <context>
     <name>RepairGUI_FreeBoundDlg</name>
     <message>
       <source>CAPTION</source>
-      <translation>フリー境界チェック</translation>
+      <translation>自由境界をチェック</translation>
     </message>
     <message>
       <source>FREE_BOUND</source>
     </message>
     <message>
       <source>NAME_CLOSED</source>
-      <translation>NAME_CLOSED</translation>
+      <translation>Frontiere_Libre_Lermee_ %1</translation>
     </message>
     <message>
       <source>NAME_OPEN</source>
-      <translation>NAME_OPEN</translation>
+      <translation>Frontiere_Libre_Ouverte_ %1</translation>
     </message>
   </context>
   <context>
     <name>RepairGUI_GlueDlg</name>
     <message>
       <source>FACES_FOR_GLUING_ARE_DETECTED</source>
-      <translation>固着できる%1 のフェースがあります。それらは赤で強調表示されます。\nこのメッセージボックスを閉じ、固着するフェースを選択してください。</translation>
+      <translation>%1 の顔 (s) で強調表示された赤の色をピックアップするがあります。この警告ボックスを閉じるし、をピックアップする面を選択</translation>
     </message>
     <message>
       <source>EDGES_FOR_GLUING_ARE_DETECTED</source>
-      <translation>%1 のエッジが固着できます。それらはスクリーン上で赤く表示されます。\nこのメッセージボックスを閉じ、固着エッジを選択して下さい。</translation>
+      <translation>%1 のエッジ (s) で強調表示されている赤をピックアップするがあります。この警告ボックスを閉じるし、ピックアップするエッジを選択します。、</translation>
     </message>
     <message>
       <source>GLUE_FACES</source>
     </message>
     <message>
       <source>TIME_CONSUMING</source>
-      <translation>このオプションを有効にすると、いくつかの形状入力に非常に時間のかかる操作になることがあります。\n続行しますか?</translation>
+      <translation>このオプションを有効にすると、特定のオブジェクトを時間の無駄が可能性があります。続行しますか。</translation>
     </message>
   </context>
   <context>
     </message>
     <message>
       <source>OK_BTN</source>
-      <translation>OK(&amp;O)</translation>
+      <translation>わかりました(&amp;O)</translation>
     </message>
     <message>
       <source>CANCEL_BTN</source>
     </message>
     <message>
       <source>FRONT_FACE</source>
-      <translation>FRONT_FACE</translation>
+      <translation>フロント パネル</translation>
     </message>
     <message>
       <source>BACK_FACE</source>
-      <translation>BACK_FACE</translation>
+      <translation>背面の色</translation>
     </message>
     <message>
       <source>REFLECTION_0</source>
     </message>
     <message>
       <source>QUE_CREATE_NEW_MATERIAL</source>
-      <translation>事前のプロパティを変更することはできません-defini.\nvoulez-あなたは材料を新しいを作成するか?</translation>
+      <translation>定義済みのマテリアル プロパティを変更することはできません。新しいものを作成したいですか?</translation>
     </message>
     <message>
       <source>QUE_REMOVE_MATERIAL</source>
-      <translation>%1 の材料を削除しますか?</translation>
+      <translation>%1 のプロパティを削除しますか?</translation>
     </message>
     <message>
       <source>OK_BTN</source>
     </message>
     <message>
       <source>MSG_SHARED_SHAPES_TOO_FEW_SHAPES</source>
-      <translation>å\8d\81å\88\86なアイテムが選択されていない</translation>
+      <translation>å¿\85è¦\81なアイテムが選択されていない</translation>
     </message>
     <message>
       <source>GEOM_SHARED_SHAPE</source>
     </message>
     <message>
       <source>UNSELECT_ALL</source>
-      <translation>すべての選択を解除(&amp;n)</translation>
+      <translation>全選択解除(&amp;n)</translation>
     </message>
     <message>
       <source>SELECT_ALL</source>
-      <translation>すべて選択します。</translation>
+      <translation>全選択(&amp;A)</translation>
     </message>
     <message>
       <source>GEOM_PUBLISH_BTN</source>
     <name>RepairGUI_UnionFacesDlg</name>
     <message>
       <source>GEOM_UNION_FACES_TITLE</source>
-      <translation>GEOM_UNION_FACES_TITLE</translation>
+      <translation>共有面</translation>
     </message>
     <message>
       <source>GEOM_UNION_FACES</source>
-      <translation>GEOM_UNION_FACES</translation>
+      <translation>オブジェクト面の共有</translation>
     </message>
     <message>
       <source>UNION_FACES_NEW_OBJ_NAME</source>
-      <translation>UNION_FACES_NEW_OBJ_NAME</translation>
+      <translation>UnionFaces</translation>
     </message>
   </context>
   <context>
     <name>GEOMGUI_CreationInfoWdg</name>
     <message>
       <source>CREATION_INFO_TITLE</source>
-      <translation>CREATION_INFO_TITLE</translation>
+      <translation>情報</translation>
     </message>
     <message>
       <source>OPERATION</source>
-      <translation>OPERATION</translation>
+      <translation>操作</translation>
     </message>
     <message>
       <source>PARAMETER</source>
-      <translation>PARAMETER</translation>
+      <translation>パラメーター</translation>
     </message>
     <message>
       <source>VALUE</source>
-      <translation>VALUE</translation>
+      <translation></translation>
     </message>
     <message>
       <source>NO_INFO</source>
-      <translation>NO_INFO</translation>
+      <translation>(有効情報なし)</translation>
     </message>
   </context>
   <context>
     <name>ImportExportGUI_ExportXAODlg</name>
     <message>
       <source>GEOM_EXPORTXAO_TITLE</source>
-      <translation>GEOM_EXPORTXAO_TITLE</translation>
+      <translation>エクスポートしました。</translation>
     </message>
     <message>
       <source>GEOM_EXPORTXAO</source>
-      <translation>GEOM_EXPORTXAO</translation>
+      <translation>エクスポートしました。</translation>
     </message>
     <message>
       <source>GEOM_EXPORTXAO_EXPORTINGSHAPE</source>
-      <translation>GEOM_EXPORTXAO_EXPORTINGSHAPE</translation>
+      <translation>オブジェクト</translation>
     </message>
     <message>
       <source>GEOM_EXPORTXAO_FILENAME</source>
-      <translation>GEOM_EXPORTXAO_FILENAME</translation>
+      <translation>ファイル</translation>
     </message>
     <message>
       <source>GEOM_EXPORTXAO_AUTHOR</source>
-      <translation>GEOM_EXPORTXAO_AUTHOR</translation>
+      <translation>作成者</translation>
     </message>
     <message>
       <source>GEOM_EXPORTXAO_LGROUPS</source>
-      <translation>GEOM_EXPORTXAO_LGROUPS</translation>
+      <translation>グループ</translation>
     </message>
     <message>
       <source>GEOM_EXPORTXAO_LFIELDS</source>
-      <translation>GEOM_EXPORTXAO_LFIELDS</translation>
+      <translation>フィールド</translation>
+    </message>
+    <message>
+      <source>EXPORT_DLG_ACCEPT</source>
+      <translation>OK</translation>
     </message>
   </context>
   <context>
     <name>ImportExportGUI_ImportXAODlg</name>
     <message>
       <source>GEOM_IMPORTXAO_TITLE</source>
-      <translation>GEOM_IMPORTXAO_TITLE</translation>
+      <translation>インポートしました。</translation>
     </message>
     <message>
       <source>GEOM_IMPORTXAO</source>
-      <translation>GEOM_IMPORTXAO</translation>
+      <translation>インポートしました。</translation>
     </message>
     <message>
       <source>GEOM_IMPORTXAO_IMPORTINGSHAPE</source>
-      <translation>GEOM_IMPORTXAO_IMPORTINGSHAPE</translation>
+      <translation>オブジェクト</translation>
     </message>
     <message>
       <source>GEOM_IMPORTXAO_FILENAME</source>
-      <translation>GEOM_IMPORTXAO_FILENAME</translation>
+      <translation>ファイル</translation>
     </message>
     <message>
       <source>GEOM_IMPORTXAO_LGROUPS</source>
-      <translation>GEOM_IMPORTXAO_LGROUPS</translation>
+      <translation>グループ</translation>
     </message>
     <message>
       <source>GEOM_IMPORTXAO_LFIELDS</source>
-      <translation>GEOM_IMPORTXAO_LFIELDS</translation>
+      <translation>フィールド</translation>
+    </message>
+    <message>
+      <source>STEP</source>
+      <translation>Step</translation>
+    </message>
+  </context>
+  <context>
+    <name>EntityGUI_IsolineDlg</name>
+    <message>
+      <source>GEOM_ISOLINE_TITLE</source>
+      <translation>等高線の構築</translation>
+    </message>
+    <message>
+      <source>GEOM_ISOLINE</source>
+      <translation>Isoline</translation>
+    </message>
+    <message>
+      <source>GEOM_ISOLINE_U</source>
+      <translation>U-Isoline</translation>
+    </message>
+    <message>
+      <source>GEOM_ISOLINE_V</source>
+      <translation>V-Isoline</translation>
     </message>
   </context>
 </TS>
index bdf31b9688c0c77ed4ce5a4b191bb9ad1344c321..b334172ed1daba79cdf9088392ecf370b732f4de 100644 (file)
@@ -503,6 +503,7 @@ void GeometryGUI::OnGUIEvent( int id, const QVariant& theParam )
   case GEOMOp::OpDMWireframe:        // MENU VIEW - WIREFRAME
   case GEOMOp::OpDMShading:          // MENU VIEW - SHADING
   case GEOMOp::OpDMShadingWithEdges: // MENU VIEW - SHADING
+  case GEOMOp::OpDMTexture:          // MENU VIEW - TEXTURE
   case GEOMOp::OpShowAll:            // MENU VIEW - SHOW ALL
   case GEOMOp::OpShowOnly:           // MENU VIEW - DISPLAY ONLY
   case GEOMOp::OpShowOnlyChildren:   // MENU VIEW - SHOW ONLY CHILDREN
@@ -847,6 +848,11 @@ void GeometryGUI::createGeomAction( const int id, const QString& label, const QS
 void GeometryGUI::createOriginAndBaseVectors()
 {
   SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( application()->activeStudy() );
+  bool aLocked = (_PTR(AttributeStudyProperties)(appStudy->studyDS()->GetProperties()))->IsLocked();
+  if ( aLocked ) {
+    SUIT_MessageBox::warning ( application()->desktop(), QObject::tr("WRN_WARNING"), QObject::tr("WRN_STUDY_LOCKED") );
+    return;
+  }
   if ( appStudy ) {
     _PTR(Study) studyDS = appStudy->studyDS();
     if ( studyDS && !CORBA::is_nil( GetGeomGen() ) ) {
@@ -1019,6 +1025,7 @@ void GeometryGUI::initialize( CAM_Application* app )
   createGeomAction( GEOMOp::OpDMWireframe,        "WIREFRAME" );
   createGeomAction( GEOMOp::OpDMShading,          "SHADING" );
   createGeomAction( GEOMOp::OpDMShadingWithEdges, "SHADING_WITH_EDGES" );
+  createGeomAction( GEOMOp::OpDMTexture,          "TEXTURE" );
   createGeomAction( GEOMOp::OpShowAll,          "DISPLAY_ALL" );
   createGeomAction( GEOMOp::OpHideAll,          "ERASE_ALL" );
   createGeomAction( GEOMOp::OpShow,             "DISPLAY" );
@@ -1291,6 +1298,7 @@ void GeometryGUI::initialize( CAM_Application* app )
   createMenu( GEOMOp::OpDMWireframe,        dispmodeId, -1 );
   createMenu( GEOMOp::OpDMShading,          dispmodeId, -1 );
   createMenu( GEOMOp::OpDMShadingWithEdges, dispmodeId, -1 );
+  createMenu( GEOMOp::OpDMTexture,          dispmodeId, -1 );
   createMenu( separator(),                  dispmodeId, -1 );
   createMenu( GEOMOp::OpSwitchVectors,      dispmodeId, -1 );
 
@@ -2663,6 +2671,11 @@ void GeometryGUI::storeVisualParameters (int savePoint)
           param = occParam + GEOM::propertyName( GEOM::Color );
           ip->setParameter(entry, param.toStdString(), val.join( GEOM::subSectionSeparator()).toStdString());
         }
+        
+        if (aProps.contains(GEOM::propertyName( GEOM::Texture ))) {
+          param = occParam + GEOM::propertyName( GEOM::Texture );
+          ip->setParameter(entry, param.toStdString(), aProps.value(GEOM::propertyName( GEOM::Texture )).toString().toStdString());
+        }
 
         if (vType == SVTK_Viewer::Type()) {
           if (aProps.contains(GEOM::propertyName( GEOM::Opacity ))) {
@@ -2813,6 +2826,8 @@ void GeometryGUI::restoreVisualParameters (int savePoint)
           QColor c = QColor::fromRgbF(rgb[0].toDouble(), rgb[1].toDouble(), rgb[2].toDouble());
           aListOfMap[viewIndex].insert( GEOM::propertyName( GEOM::Color ), c);
         }
+      } else if (paramNameStr == GEOM::propertyName( GEOM::Texture )) {
+        aListOfMap[viewIndex].insert( GEOM::propertyName( GEOM::Texture ), val );
       } else if (paramNameStr == GEOM::propertyName( GEOM::EdgesDirection )) {
         aListOfMap[viewIndex].insert( GEOM::propertyName( GEOM::EdgesDirection ), val == "true" || val == "1");
       } else if (paramNameStr == GEOM::propertyName( GEOM::Deflection )) {
index 965e9e44509b7bd002ce55428d0178cd41e12da2..304220b0b0ebb2cdd7d2e484b687edaa3eb99e11 100644 (file)
@@ -68,6 +68,7 @@ namespace GEOMOp {
     OpDMWireframe         = 2010,   // MENU VIEW  - DISPLAY MODE - WIREFRAME
     OpDMShading           = 2011,   // MENU VIEW  - DISPLAY MODE - SHADING
     OpDMShadingWithEdges  = 2012,   // MENU VIEW  - DISPLAY MODE - SHADING WITH EDGES
+    OpDMTexture           = 2013,   // MENU VIEW  - DISPLAY MODE - TEXTURE
     OpShow                = 2100,   // POPUP MENU - SHOW
     OpShowOnly            = 2101,   // POPUP MENU - SHOW ONLY
     OpHide                = 2102,   // POPUP MENU - HIDE
index c0ace03080560e1a2fdc44b594686daba63267ab..2e45e7ba53e11c0d66c8ecd4047bacce800414ef 100644 (file)
@@ -18,6 +18,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 
 #include <Standard_Stream.hxx>
 
@@ -38,7 +39,6 @@
 #include "utilities.h"
 
 #include <TDataStd_IntegerArray.hxx>
-#include <TNaming_CopyShape.hxx>
 
 #include <TopExp.hxx>
 #include <TopoDS_Shape.hxx>
@@ -47,8 +47,6 @@
 #include <TopTools_ListOfShape.hxx>
 #include <TopTools_ListIteratorOfListOfShape.hxx>
 
-#include <TColStd_IndexedDataMapOfTransientTransient.hxx>
-
 #include <ShapeFix_Shape.hxx>
 
 #include <Standard_NullObject.hxx>
@@ -423,8 +421,7 @@ TopoDS_Shape GEOMImpl_GlueDriver::GlueWithWarnings (const TopoDS_Shape& theShape
                                                     const Standard_Real theTolerance,
                                                     const TopAbs_ShapeEnum theShapeType,
                                                     const Standard_Boolean doKeepNonSolids,
-                                                    TCollection_AsciiString& theWarning,
-                                                    const TopTools_DataMapOfShapeShape& aCopyMap) const
+                                                    TCollection_AsciiString& theWarning) const
 {
   TopoDS_Shape aRes;
 
@@ -554,18 +551,10 @@ TopoDS_Shape GEOMImpl_GlueDriver::GlueWithWarnings (const TopoDS_Shape& theShape
     TDF_Label anArgumentHistoryLabel =
       aFunction->GetArgumentHistoryEntry(anArgumentRefLabel, Standard_True);
 
-    TopTools_ListOfShape aModified;
     for (Standard_Integer ie = 1; ie <= nbArgumentEntities; ie++) {
       TopoDS_Shape anEntity = anArgumentIndices.FindKey(ie);
-      if (aCopyMap.IsBound(anEntity)) {
-        anEntity = aCopyMap.Find(anEntity);
-      }
-      aModified = aGA.Modified(anEntity);
+      const TopTools_ListOfShape& aModified = aGA.Modified(anEntity);
       Standard_Integer nbModified = aModified.Extent();
-      if (!nbModified && aResIndices.Contains(anEntity)) {
-        aModified.Append(anEntity);
-        nbModified = 1;
-      }
 
       if (nbModified > 0) {
         TDF_Label aWhatHistoryLabel = anArgumentHistoryLabel.FindChild(ie, Standard_True);
@@ -754,35 +743,18 @@ Standard_Integer GEOMImpl_GlueDriver::Execute(TFunction_Logbook& log) const
 
   Standard_Boolean aKeepNonSolids = aCI.GetKeepNonSolids();
 
-  // Copy initial shape to prevent its modification by gluing algorithm
-  TopoDS_Shape aShapeCopy;
-  TColStd_IndexedDataMapOfTransientTransient aMapTShapes;
-  TNaming_CopyShape::CopyTool(aShapeBase, aMapTShapes, aShapeCopy);
-  //
-  // map sub-shapes
-  TopTools_IndexedMapOfShape aShapeBase_inds, aShapeCopy_inds;
-  TopTools_DataMapOfShapeShape aCopyMap;
-  Standard_Integer aNbInd, i;
-  //
-  TopExp::MapShapes(aShapeBase, aShapeBase_inds);
-  TopExp::MapShapes(aShapeCopy, aShapeCopy_inds);
-  //
-  aNbInd = aShapeBase_inds.Extent();
-  for (i = 1; i <= aNbInd; ++i) {
-    aCopyMap.Bind(aShapeBase_inds(i), aShapeCopy_inds(i));
-  }
-  //
   if (aType == GLUE_FACES) {
-    aShape = GlueWithWarnings(aShapeCopy, tol3d, TopAbs_FACE, aKeepNonSolids, aWrn, aCopyMap);
+    //aShape = GlueFacesWithWarnings(aShapeBase, tol3d, aKeepNonSolids, aWrn);
+    aShape = GlueWithWarnings(aShapeBase, tol3d, TopAbs_FACE, aKeepNonSolids, aWrn);
   }
   else if (aType == GLUE_EDGES) {
-    aShape = GlueWithWarnings(aShapeCopy, tol3d, TopAbs_EDGE, aKeepNonSolids, aWrn, aCopyMap);
+    aShape = GlueWithWarnings(aShapeBase, tol3d, TopAbs_EDGE, aKeepNonSolids, aWrn);
   }
   else if (aType == GLUE_FACES_BY_LIST || aType == GLUE_EDGES_BY_LIST) {
     Handle(TColStd_HSequenceOfTransient) SF = aCI.GetFaces();
     TopTools_MapOfShape aFaces;
-
-    for (i = 1; i <= SF->Length(); i++) {
+    int i = 1;
+    for (; i <= SF->Length(); i++) {
       Handle(Standard_Transient) anItem = SF->Value(i);
       if (anItem.IsNull())
         continue;
@@ -792,14 +764,7 @@ Standard_Integer GEOMImpl_GlueDriver::Execute(TFunction_Logbook& log) const
       TopoDS_Shape aFace = aRefSh->GetValue();
       if (aFace.IsNull())
         continue;
-
-      // get copy of face to correspond to aShapeCopy
-      if (aShapeBase_inds.Contains(aFace)) {
-        int ind = aShapeBase_inds.FindIndex(aFace);
-        aFace = aShapeCopy_inds.FindKey(ind);
-
-        aFaces.Add(aFace);
-      }
+      aFaces.Add(aFace);
     }
 
     Standard_Boolean aGlueAllEdges = Standard_False;
@@ -807,7 +772,7 @@ Standard_Integer GEOMImpl_GlueDriver::Execute(TFunction_Logbook& log) const
       aGlueAllEdges = aCI.GetGlueAllEdges();
 
     //aShape = GlueFacesByList(aShapeBase, tol3d, aKeepNonSolids, aFaces);
-    aShape = GlueByList(aShapeCopy, tol3d, aKeepNonSolids, aFaces, aGlueAllEdges);
+    aShape = GlueByList(aShapeBase, tol3d, aKeepNonSolids, aFaces, aGlueAllEdges);
   }
 
   if (aShape.IsNull()) return 0;
index 6e0c60bbbd7bf5974e7de2c9d602c591d996541e..1e1a3100e0aedb56289251efadec8a10af35155e 100644 (file)
@@ -48,7 +48,7 @@
 #endif 
 
 #include <TopTools_MapOfShape.hxx>
-#include <TopTools_DataMapOfShapeShape.hxx>
+
 
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
@@ -104,8 +104,7 @@ Standard_EXPORT TopoDS_Shape GlueWithWarnings (const TopoDS_Shape& theShape,
                                                const Standard_Real theTolerance,
                                                const TopAbs_ShapeEnum theShapeType,
                                                const Standard_Boolean doKeepNonSolids,
-                                               TCollection_AsciiString& theWarning,
-                                               const TopTools_DataMapOfShapeShape& aCopyMap) const;
+                                               TCollection_AsciiString& theWarning) const;
 
 Standard_EXPORT static TopoDS_Shape GlueByList (const TopoDS_Shape& theShape,
                                                 const Standard_Real theTolerance,
index 2879a1b9fd84cfb48005492c43145ae92e73f5fa..aaa0b4ed86df74b97ec38973f0acc4b00ae37a9c 100644 (file)
@@ -60,6 +60,7 @@
 #include <BRepCheck_Result.hxx>
 #include <BRepCheck_Shell.hxx>
 #include <BRepClass3d_SolidClassifier.hxx>
+#include <BRepClass_FaceClassifier.hxx>
 #include <BRepExtrema_DistShapeShape.hxx>
 #include <BRepGProp.hxx>
 #include <BRepTools.hxx>
@@ -85,6 +86,7 @@
 
 #include <GeomAPI_IntSS.hxx>
 #include <GeomAPI_ProjectPointOnCurve.hxx>
+#include <GeomAPI_ProjectPointOnSurf.hxx>
 
 #include <GeomAbs_SurfaceType.hxx>
 
@@ -1551,40 +1553,116 @@ TCollection_AsciiString GEOMImpl_IMeasureOperations::WhatIs (Handle(GEOM_Object)
  *  AreCoordsInside
  */
 //=============================================================================
-std::vector<bool> GEOMImpl_IMeasureOperations::AreCoordsInside(Handle(GEOM_Object) theShape,
-                                                               const std::vector<double>& coords,
-                                                               double tolerance)
+std::vector<bool>
+GEOMImpl_IMeasureOperations::AreCoordsInside(Handle(GEOM_Object)        theShape,
+                                             const std::vector<double>& coords,
+                                             double                     tolerance)
 {
-  std::vector<bool> res;
+  std::vector<bool> isInsideRes;
   if (!theShape.IsNull()) {
     Handle(GEOM_Function) aRefShape = theShape->GetLastFunction();
     if (!aRefShape.IsNull()) {
       TopoDS_Shape aShape = aRefShape->GetValue();
-      if (!aShape.IsNull()) {
-        unsigned int nb_points = coords.size()/3;
-        for (int i = 0; i < nb_points; i++) {
-          double x = coords[3*i];
-          double y = coords[3*i+1];
-          double z = coords[3*i+2];
-          gp_Pnt aPnt(x, y, z);
-          if ( aShape.ShapeType() == TopAbs_COMPOUND || aShape.ShapeType() == TopAbs_COMPSOLID ||
-               aShape.ShapeType() == TopAbs_SOLID ) {
-            TopExp_Explorer anExp;
-            bool isFound = false;
-            for ( anExp.Init( aShape, TopAbs_SOLID ); anExp.More() && !isFound; anExp.Next() ) {
-              BRepClass3d_SolidClassifier SC( anExp.Current() );
+      if (!aShape.IsNull())
+      {
+        TopTools_IndexedMapOfShape mapShape;
+        {
+          TopExp_Explorer anExp;
+          for ( anExp.Init( aShape, TopAbs_SOLID ); anExp.More(); anExp.Next() )
+            mapShape.Add( anExp.Current() );
+          for ( anExp.Init( aShape, TopAbs_FACE, TopAbs_SOLID ); anExp.More(); anExp.Next() )
+            mapShape.Add( anExp.Current() );
+          for ( anExp.Init( aShape, TopAbs_EDGE, TopAbs_FACE ); anExp.More(); anExp.Next() )
+            mapShape.Add( anExp.Current() );
+          for ( anExp.Init( aShape, TopAbs_VERTEX, TopAbs_EDGE ); anExp.More(); anExp.Next() )
+            mapShape.Add( anExp.Current() ); //// ?????????
+        }
+        size_t nb_points = coords.size()/3, nb_points_inside = 0;
+        isInsideRes.resize( nb_points, false );
+
+        for ( int iS = 1; iS <= mapShape.Extent(); ++iS )
+        {
+          if ( nb_points_inside == nb_points )
+            break;
+          aShape = mapShape( iS );
+          switch ( aShape.ShapeType() ) {
+          case TopAbs_SOLID:
+          {
+            BRepClass3d_SolidClassifier SC( TopoDS::Solid( aShape ));
+            for ( size_t i = 0; i < nb_points; i++)
+            {
+              if ( isInsideRes[ i ]) continue;
+              gp_Pnt aPnt( coords[3*i], coords[3*i+1], coords[3*i+2] );
               SC.Perform( aPnt, tolerance );
-              isFound = ( SC.State() == TopAbs_IN ) || ( SC.State() == TopAbs_ON );
+              isInsideRes[ i ] = (( SC.State() == TopAbs_IN ) || ( SC.State() == TopAbs_ON ));
+              nb_points_inside += isInsideRes[ i ];
+            }
+            break;
+          }
+          case TopAbs_FACE:
+          {
+            Standard_Real u1,u2,v1,v2;
+            const TopoDS_Face&   face = TopoDS::Face( aShape );
+            Handle(Geom_Surface) surf = BRep_Tool::Surface( face );
+            surf->Bounds( u1,u2,v1,v2 );
+            GeomAPI_ProjectPointOnSurf project;
+            project.Init(surf, u1,u2, v1,v2, tolerance );
+            for ( size_t i = 0; i < nb_points; i++)
+            {
+              if ( isInsideRes[ i ]) continue;
+              gp_Pnt aPnt( coords[3*i], coords[3*i+1], coords[3*i+2] );
+              project.Perform( aPnt );
+              if ( project.IsDone() &&
+                   project.NbPoints() > 0 &&
+                   project.LowerDistance() <= tolerance )
+              {
+                Quantity_Parameter u, v;
+                project.LowerDistanceParameters(u, v);
+                gp_Pnt2d uv( u, v );
+                BRepClass_FaceClassifier FC ( face, uv, tolerance );
+                isInsideRes[ i ] = (( FC.State() == TopAbs_IN ) || ( FC.State() == TopAbs_ON ));
+                nb_points_inside += isInsideRes[ i ];
+              }
+            }
+            break;
+          }
+          case TopAbs_EDGE:
+          {
+            Standard_Real f,l;
+            const TopoDS_Edge&  edge = TopoDS::Edge( aShape );
+            Handle(Geom_Curve) curve = BRep_Tool::Curve( edge, f, l );
+            GeomAPI_ProjectPointOnCurve project;
+            project.Init( curve, f, l );
+            for ( size_t i = 0; i < nb_points; i++)
+            {
+              if ( isInsideRes[ i ]) continue;
+              gp_Pnt aPnt( coords[3*i], coords[3*i+1], coords[3*i+2] );
+              project.Perform( aPnt );
+              isInsideRes[ i ] = ( project.NbPoints() > 0 &&
+                                   project.LowerDistance() <= tolerance );
+              nb_points_inside += isInsideRes[ i ];
+            }
+            break;
+          }
+          case TopAbs_VERTEX:
+          {
+            gp_Pnt aVPnt = BRep_Tool::Pnt( TopoDS::Vertex( aShape ));
+            for ( size_t i = 0; i < nb_points; i++)
+            {
+              if ( isInsideRes[ i ]) continue;
+              gp_Pnt aPnt( coords[3*i], coords[3*i+1], coords[3*i+2] );
+              isInsideRes[ i ] = ( aPnt.SquareDistance( aVPnt ) <= tolerance * tolerance );
+              nb_points_inside += isInsideRes[ i ];
             }
-            res.push_back( isFound );
+            break;
           }
-          else
-            res.push_back( false );
+          default:;
+          } // switch ( aShape.ShapeType() )
         }
       }
     }
   }
-  return res;
+  return isInsideRes;
 }
 
 //=============================================================================
@@ -1592,10 +1670,15 @@ std::vector<bool> GEOMImpl_IMeasureOperations::AreCoordsInside(Handle(GEOM_Objec
  *  GetMinDistance
  */
 //=============================================================================
-Standard_Real GEOMImpl_IMeasureOperations::GetMinDistance
-  (Handle(GEOM_Object) theShape1, Handle(GEOM_Object) theShape2,
-   Standard_Real& X1, Standard_Real& Y1, Standard_Real& Z1,
-   Standard_Real& X2, Standard_Real& Y2, Standard_Real& Z2)
+Standard_Real
+GEOMImpl_IMeasureOperations::GetMinDistance (Handle(GEOM_Object) theShape1,
+                                             Handle(GEOM_Object) theShape2,
+                                             Standard_Real& X1,
+                                             Standard_Real& Y1,
+                                             Standard_Real& Z1,
+                                             Standard_Real& X2,
+                                             Standard_Real& Y2,
+                                             Standard_Real& Z2)
 {
   SetErrorCode(KO);
   Standard_Real MinDist = 1.e9;
index 69311116399b70c5e2682b16125c203c84eb368f..a25a16004f5471f00ec893757605fe70f993a4ec 100644 (file)
@@ -27,6 +27,7 @@
 #include <GEOMImpl_ITransformOperations.hxx>
 #include <GEOMImpl_Types.hxx>
 #include <GEOM_Function.hxx>
+#include <GEOMUtils.hxx>
 
 #include <ShapeFix_Shape.hxx>
 #include <ShapeFix_ShapeTolerance.hxx>
@@ -175,10 +176,7 @@ Standard_Integer GEOMImpl_TranslateDriver::Execute(TFunction_Logbook& log) const
     Handle(GEOM_Function) aVector = TI.GetVector();
     gp_Vec Vec = gp::DX();
     if (!aVector.IsNull()) {
-      TopoDS_Shape aV = aVector->GetValue();
-      if (aV.IsNull() || aV.ShapeType() != TopAbs_EDGE) return 0;
-      TopoDS_Edge anEdge = TopoDS::Edge(aV);
-      Vec = gp_Vec(BRep_Tool::Pnt(TopExp::FirstVertex(anEdge)), BRep_Tool::Pnt(TopExp::LastVertex(anEdge)));
+      Vec = GEOMUtils::GetVector( aVector->GetValue(), Standard_False );
       Vec.Normalize();
     }
 
@@ -211,18 +209,12 @@ Standard_Integer GEOMImpl_TranslateDriver::Execute(TFunction_Logbook& log) const
     gp_Vec Vec2 = gp::DY();
 
     if (!aVector.IsNull()) {
-      TopoDS_Shape aV = aVector->GetValue();
-      if (aV.IsNull() || aV.ShapeType() != TopAbs_EDGE) return 0;
-      TopoDS_Edge anEdge = TopoDS::Edge(aV);
-      Vec1 = gp_Vec(BRep_Tool::Pnt(TopExp::FirstVertex(anEdge)), BRep_Tool::Pnt(TopExp::LastVertex(anEdge)));
+      Vec1 = GEOMUtils::GetVector( aVector->GetValue(), Standard_False );
       Vec1.Normalize();
     }
 
     if (!aVector2.IsNull()) {
-      TopoDS_Shape aV = aVector2->GetValue();
-      if (aV.IsNull() || aV.ShapeType() != TopAbs_EDGE) return 0;
-      TopoDS_Edge anEdge = TopoDS::Edge(aV);
-      Vec2 = gp_Vec(BRep_Tool::Pnt(TopExp::FirstVertex(anEdge)), BRep_Tool::Pnt(TopExp::LastVertex(anEdge)));
+      Vec2 = GEOMUtils::GetVector( aVector2->GetValue(), Standard_False );
       Vec2.Normalize();
     }
 
index f774f30001ea31ff198cfb2d80409856f6de2818..8ac38a4bba7ff7cd011a0b0ba89a27f10da75cc1 100644 (file)
@@ -725,8 +725,8 @@ bool GEOMToolsGUI::Import()
       app->putInfo( tr( "GEOM_PRP_LOADING" ).arg( SUIT_Tools::file( fileName, /*withExten=*/true ) ) );
       anOp->start();
 
-      CORBA::String_var fileN = fileName.toLatin1().constData();
-      CORBA::String_var fileT = aCurrentType.toLatin1().constData();
+      CORBA::String_var fileN = fileName.toUtf8().constData();
+      CORBA::String_var fileT = aCurrentType.toUtf8().constData();
 
       // jfa 21.08.2012 for mantis issue 21511 (STEP file units)
       CORBA::String_var aUnits = aInsOp->ReadValue(fileN, fileT, "LEN_UNITS");
@@ -945,7 +945,7 @@ bool GEOMToolsGUI::Export()
 
       anOp->start();
 
-      aInsOp->Export( anObj, file.toStdString().c_str(), fileType.toLatin1().constData() );
+      aInsOp->Export( anObj, file.toUtf8().constData(), fileType.toUtf8().constData() );
 
       if (aInsOp->IsDone())
         anOp->commit();
index eb95c26bc5fd3dd6681fb7e41c8708e6896532a0..d557d098c77eb47fb1fe1103204bc4bbcca57526 100644 (file)
@@ -298,9 +298,9 @@ void GEOMToolsGUI::OnTexture()
 
   QString aTexture = QFileDialog::getOpenFileName( dynamic_cast< SUIT_ViewWindow* >( window ),tr("GEOM_SELECT_IMAGE"),QString(), tr("OCC_TEXTURE_FILES"));
   if( !aTexture.isEmpty() ) {
-    displayer.SetTexture( aTexture.toStdString() );
     for ( SALOME_ListIteratorOfListIO It( selected ); It.More(); It.Next() ) {
       Handle( SALOME_InteractiveObject ) io = It.Value();
+      appStudy->setObjectProperty( aMgrId, io->getEntry(), GEOM::propertyName( GEOM::Texture ), aTexture );
       appStudy->setObjectProperty( aMgrId, io->getEntry(), GEOM::propertyName( GEOM::DisplayMode ), 3 );
       if ( window->isVisible( io ) ) displayer.Redisplay( io, false );
     }
index 29aa20836c0374efe59aa532bbc6e0e2697d93dc..ff48a03e9892078bdec555d998f576c0a8c15af0 100644 (file)
@@ -42,6 +42,7 @@
 #include "GEOM_PythonDump.hxx"
 #include "GEOMImpl_Types.hxx"
 #include "GEOMImpl_CopyDriver.hxx"
+#include "GEOMImpl_IInsertOperations.hxx"
 #include "GEOM_wrap.hxx"
 
 // Cascade headers
@@ -240,10 +241,9 @@ SALOMEDS::SObject_ptr GEOM_Gen_i::PublishInStudy(SALOMEDS::Study_ptr   theStudy,
   CORBA::String_var aGeomObjIOR = _orb->object_to_string(theObject);
   aResultSO->SetAttrString("AttributeIOR",aGeomObjIOR);
 
-  TCollection_AsciiString anObjectName("Shape_");
+  TCollection_AsciiString anObjectName, aNamePrefix("Shape_");
 
   // BEGIN: try to find existed name for current shape
-  bool HasName = false;
   if ( !aShape->_is_nil() )
   {
     // recieve current TopoDS shape
@@ -263,7 +263,7 @@ SALOMEDS::SObject_ptr GEOM_Gen_i::PublishInStudy(SALOMEDS::Study_ptr   theStudy,
     // check all named shapes using iterator
     TDF_ChildIDIterator anIt (aMainLbl, TNaming_NamedShape::GetID(), Standard_True);
 
-    for (; anIt.More() && !HasName; anIt.Next()) {
+    for (; anIt.More() && anObjectName.IsEmpty(); anIt.Next()) {
       Handle(TNaming_NamedShape) anAttr =
         Handle(TNaming_NamedShape)::DownCast(anIt.Value());
       if (anAttr.IsNull()) continue;
@@ -271,10 +271,8 @@ SALOMEDS::SObject_ptr GEOM_Gen_i::PublishInStudy(SALOMEDS::Study_ptr   theStudy,
       if (S.IsEqual(TopoSh)) {
         TDF_Label L = anAttr->Label();
         Handle(TDataStd_Name) aName;
-        if (L.FindAttribute(TDataStd_Name::GetID(), aName)) {
+        if (L.FindAttribute(TDataStd_Name::GetID(), aName))
           anObjectName = aName->Get();
-          HasName = true;
-        }
       }
     }
   }
@@ -286,32 +284,32 @@ SALOMEDS::SObject_ptr GEOM_Gen_i::PublishInStudy(SALOMEDS::Study_ptr   theStudy,
     switch ( (TopAbs_ShapeEnum)anOp->GetType( aShape )) {
     case TopAbs_VERTEX:
       aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_GROUP_PNT" );
-      anObjectName = "Group_Of_Vertices_";
+      aNamePrefix = "Group_Of_Vertices_";
       break;
     case TopAbs_EDGE:
       aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_GROUP_EDGE");
-      anObjectName = "Group_Of_Edges_";
+      aNamePrefix = "Group_Of_Edges_";
       break;
     case TopAbs_FACE:
       aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_GROUP_FACE");
-      anObjectName = "Group_Of_Faces_";
+      aNamePrefix = "Group_Of_Faces_";
       break;
     case TopAbs_SOLID:
       aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_GROUP_SOLID");
-      anObjectName = "Group_Of_Solids_";
+      aNamePrefix = "Group_Of_Solids_";
       break;
     }
   } else if ( mytype == GEOM_MARKER ) {
     aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_LCS");
-    anObjectName = "LocalCS_";
+    aNamePrefix = "LocalCS_";
   } else if ( mytype > ADVANCED_BASE ) {
     char buf[20];
     sprintf( buf, "%d", aBaseObj->GetType() );
     std::string advId = "ICON_OBJBROWSER_ADVANCED_"; advId += buf;
     aResultSO->SetAttrString("AttributePixMap",advId.c_str());
-    anObjectName = "Advanced_";
+    aNamePrefix = "Advanced_";
   } else if ( mytype == GEOM_FIELD ) {
-    anObjectName = "Field_";
+    aNamePrefix = "Field_";
     GEOM::GEOM_Field_var aField = GEOM::GEOM_Field::_narrow(theObject);
     if ( !aField->_is_nil() )
       switch( aField->GetDimension() ) {
@@ -327,38 +325,38 @@ SALOMEDS::SObject_ptr GEOM_Gen_i::PublishInStudy(SALOMEDS::Study_ptr   theStudy,
         aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_FIELD_SOLID");
       }
   } else if ( mytype == GEOM_FIELD_STEP ) {
-    anObjectName = "Step_";
+    aNamePrefix = "Step_";
   } else if ( !aShape->_is_nil() ) {
     GEOM::shape_type myshapetype=aShape->GetShapeType();
     if ( myshapetype == GEOM::COMPOUND ) {
       aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_COMPOUND" );
-      anObjectName = "Compound_";
+      aNamePrefix = "Compound_";
     } else if ( myshapetype == GEOM::COMPSOLID ) {
       aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_COMPSOLID");
-      anObjectName = "Compsolid_";
+      aNamePrefix = "Compsolid_";
     } else if ( myshapetype == GEOM::SOLID ) {
       aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_SOLID");
-      anObjectName = "Solid_";
+      aNamePrefix = "Solid_";
     } else if ( myshapetype == GEOM::SHELL ) {
       aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_SHELL");
-      anObjectName = "Shell_";
+      aNamePrefix = "Shell_";
     } else if ( myshapetype == GEOM::FACE ) {
       aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_FACE");
-      anObjectName = "Face_";
+      aNamePrefix = "Face_";
     } else if ( myshapetype == GEOM::WIRE ) {
       aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_WIRE");
-      anObjectName = "Wire_";
+      aNamePrefix = "Wire_";
     } else if ( myshapetype == GEOM::EDGE ) {
       aResultSO->SetAttrString("AttributePixMap", "ICON_OBJBROWSER_EDGE");
-      anObjectName = "Edge_";
+      aNamePrefix = "Edge_";
     } else if ( myshapetype == GEOM::VERTEX ) {
       aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_VERTEX" );
-      anObjectName = "Vertex_";
+      aNamePrefix = "Vertex_";
     }
   }
-  if (!HasName)
+  if ( anObjectName.IsEmpty() )
   {
-    //if (strlen(theName) == 0) anObjectName += TCollection_AsciiString(aResultSO->Tag());
+    //if (strlen(theName) == 0) aNamePrefix += TCollection_AsciiString(aResultSO->Tag());
     //else anObjectName = TCollection_AsciiString(CORBA::string_dup(theName));
 
     // asv : 11.11.04 Introducing a more sofisticated method of name creation, just as
@@ -368,16 +366,15 @@ SALOMEDS::SObject_ptr GEOM_Gen_i::PublishInStudy(SALOMEDS::Study_ptr   theStudy,
     if ( strlen( theName ) == 0 ) { // MOST PROBABLY CALLED FROM BATCHMODE OR SUPERVISOR
       int i = 0;                    // (WITH EMPTY NEW NAME)
       SALOMEDS::SObject_var obj;
-      TCollection_AsciiString aNewObjectName;
       do {
-        aNewObjectName = anObjectName + TCollection_AsciiString(++i);
-        obj = theStudy->FindObject( aNewObjectName.ToCString() );
+        anObjectName = aNamePrefix + TCollection_AsciiString(++i);
+        obj = theStudy->FindObject( anObjectName.ToCString() );
       }
       while ( !obj->_is_nil() );
-      anObjectName = aNewObjectName;
     }
-    else // MOST PROBABLY CALLED FROM GEOM GUI (ALREADY WITH VALID NAME)
+    else // MOST PROBABLY CALLED FROM GEOM GUI (ALREADY WITH VALID NAME)
       anObjectName = theName;
+    }
   }
 
   //Set the study entry as a name of  the published GEOM_Object
@@ -750,6 +747,7 @@ SALOMEDS::SObject_ptr GEOM_Gen_i::PasteInto(const SALOMEDS::TMPFile& theStream,
   // Find the current Study and StudyBuilder
   SALOMEDS::Study_var aStudy = theObject->GetStudy();
   SALOMEDS::StudyBuilder_var aStudyBuilder = aStudy->NewBuilder();
+  SALOMEDS::UseCaseBuilder_var anUseCaseBuilder = aStudy->GetUseCaseBuilder();
   SALOMEDS::SObject_var aNewSO;
   // Retrieve a TopoDS_Shape from byte stream
   TopoDS_Shape aTopology;
@@ -786,6 +784,10 @@ SALOMEDS::SObject_ptr GEOM_Gen_i::PasteInto(const SALOMEDS::TMPFile& theStream,
   anIOR->SetValue(objStr.in());
   anIOR->UnRegister();
 
+  // add object to the use case tree
+  // (to support tree representation customization and drag-n-drop)
+  anUseCaseBuilder->AppendTo( aNewSO->GetFather(), aNewSO );
+
   // Return the created in the Study SObject
   return aNewSO._retn();
 }
@@ -2905,11 +2907,11 @@ Engines::ListOfIdentifiers* GEOM_Gen_i::importData(
   if (aFileName.rfind("/") != std::string::npos) { // remove folders from the name
     aFileName = aFileName.substr(aFileName.rfind("/") + 1);
   }
+
   std::string anExtension(data->extension());
   aFileName += "." + anExtension;
   // convert extension to upper case
   std::transform(anExtension.begin(), anExtension.end(), anExtension.begin(), ::toupper);
-
   std::string aFullPath = aTmpDir + aFileName;
 
   Engines::TMPFile* aFileStream = data->get();
@@ -2922,16 +2924,30 @@ Engines::ListOfIdentifiers* GEOM_Gen_i::importData(
   aFile.write(aBuffer, aFileStream->length());
   aFile.close();
 
-  GEOM::GEOM_Object_var anObj = aInsOp->ImportFile(aFullPath.c_str(), anExtension.c_str());
-  if ( !anObj->_is_nil() && aInsOp->IsDone() ) {
-    SALOMEDS::SObject_var aSO = PublishInStudy(aStudy, SALOMEDS::SObject::_nil(), anObj, data->name());
-    aResult->length(1);
+  GEOM::GEOM_Object_var aShapeObj;
+  GEOM::ListOfGO_var aSubShape = new GEOM::ListOfGO;
+  GEOM::ListOfGO_var aGroups = new GEOM::ListOfGO;
+  GEOM::ListOfFields_var aFields = new GEOM::ListOfFields;
+
+  CORBA::Boolean isResultOK = aInsOp->ImportXAO(aFullPath.c_str(), aShapeObj.out(), aSubShape.out(), aGroups.out(), aFields.out());
+
+  if ( isResultOK && !aShapeObj->_is_nil() && aInsOp->IsDone() ) {
+    SALOMEDS::SObject_var aSO = PublishInStudy(aStudy, SALOMEDS::SObject::_nil(), aShapeObj, aShapeObj->GetName());
+    aResult->length(aGroups->length() + 1);
     aResult[0] = aSO->GetID(); // unioque identifer of the object in GEOM is entry of SObject
-  } else {
-    if (anObj->_is_nil())
+    //Iteration for objects of the group.
+    for (int i = 0; i < aGroups->length(); i++) {
+      SALOMEDS::SObject_var aSOChild = AddInStudy(aStudy, aGroups[i], aGroups[i]->GetName(), aShapeObj);
+      aResult[i+1] = aSOChild->GetID();
+    }
+  }
+  else {
+    if (aShapeObj->_is_nil())
       MESSAGE("Result of the import operation is incorrect for file "<<aFullPath.c_str());
     if (!aInsOp->IsDone())
       MESSAGE("Import operation is not done for file "<<aFullPath.c_str());
+    if (!isResultOK)
+      MESSAGE("ImportXAO operation is failed for file "<<aFullPath.c_str());
     return aResult._retn();
   }
 
@@ -2940,7 +2956,7 @@ Engines::ListOfIdentifiers* GEOM_Gen_i::importData(
   aTmpFiles.length(1);
   aTmpFiles[0] = aFileName.c_str();
   SALOMEDS_Tool::RemoveTemporaryFiles(aTmpDir, aTmpFiles, true);
-  
+
   _impl->DocumentModified(studyId, false);
   return aResult._retn();
 }
@@ -2965,10 +2981,16 @@ Engines::ListOfData* GEOM_Gen_i::getModifiedData(CORBA::Long studyId)
   if (CORBA::is_nil(aComponent))
     return aResult._retn();
   SALOMEDS::ChildIterator_var anIter = aStudy->NewChildIterator(aComponent); // check only published shapes
-  TopoDS_Compound aResultComp;
-  BRep_Builder aBB;
-  aBB.MakeCompound(aResultComp);
-  int aNumInComp = 0; // number of shapes in resulting compound
+
+  GEOM::GEOM_Object_var shapeObj;
+  GEOM::ListOfGO_var groups = new GEOM::ListOfGO;
+  GEOM::ListOfFields_var fields = new GEOM::ListOfFields;
+  std::string anAuthorName = "SIMAN Author";
+  
+  GEOM::GEOM_IShapesOperations_var  aShapesOp = GetIShapesOperations(aStudy->StudyId());
+  GEOM::GEOM_IInsertOperations_var aInsOp = GetIInsertOperations(aStudy->StudyId());
+
+  int aSeqLength = 0; // the sequence length
   for(; anIter->More(); anIter->Next()) {
     SALOMEDS::SObject_var aSO = anIter->Value();
     SALOMEDS::SObject_var aRefSO;
@@ -2979,30 +3001,42 @@ Engines::ListOfData* GEOM_Gen_i::getModifiedData(CORBA::Long studyId)
         GEOM::GEOM_Object_var aCORBAMainShape = GEOM::GEOM_Object::_narrow(anObj);
         if(!aCORBAMainShape->_is_nil()) {
           CORBA::String_var entry = aCORBAMainShape->GetEntry();
-          Handle(GEOM_Object) aMainShape = Handle(GEOM_Object)::DownCast( _impl->GetObject(studyId, entry) );
-          if (!aMainShape.IsNull()) {
-            TopoDS_Shape aMainSh = aMainShape->GetValue();
-            if (!aMainSh.IsNull()) {
-              aBB.Add(aResultComp, aMainSh);
-              aNumInComp++;
+          Handle(GEOM_Object) aMainShape = Handle(GEOM_Object)::DownCast(_impl->GetObject(studyId, entry));
+
+          GEOM::shape_type aCORBAShapeType = aCORBAMainShape->GetShapeType();
+          if (!aMainShape.IsNull() && !(aCORBAShapeType == GEOM::VERTEX) && !(aCORBAShapeType == GEOM::EDGE)) {
+            aSeqLength++;
+            shapeObj = aCORBAMainShape;
+            if (aShapesOp->_is_nil()) {
+              MESSAGE("No shapes operations!");
+              return aResult._retn();
             }
+            groups = aShapesOp->GetExistingSubObjects(aCORBAMainShape, true);
+            break;
           }
         }
       }
     }
   }
-  if (aNumInComp > 0) { // compund is correct, write it to the temporary file
-    std::string aFullPath = Kernel_Utils::GetTmpFileName() + ".brep";
-    BRepTools::Write(aResultComp, aFullPath.c_str());
-    MESSAGE("Write compound of "<<aNumInComp<<" shapes to "<<aFullPath.c_str());
+
+  if (aInsOp->_is_nil()) {
+    MESSAGE("No insert operations!");
+    return aResult._retn();
+  }
+
+  if (aSeqLength > 0) { // Shape is correct, write it to the temporary file
+
+    std::string aFullXaoPath = Kernel_Utils::GetTmpFileName() + ".xao";
+    CORBA::Boolean isResultOK = aInsOp->ExportXAO(shapeObj.in(), groups.in(), fields.in(), anAuthorName.c_str(), aFullXaoPath.c_str());
+
     aResult->length(1);
     Engines::DataContainer_var aData = (new Engines_DataContainer_i(
-                    aFullPath.c_str(), "", "", true))->_this();
+                    aFullXaoPath.c_str(), "", "", true))->_this();
     aResult[0] = aData;
   } else {
     MESSAGE("No shapes to export");
   }
-  
+
   return aResult._retn();
 }
                                                                
index 2bb5769667a73c2719de2d4c2c54ea4199fa6879..31bef761aaf915d39201410e8cff932b7744ce8a 100644 (file)
@@ -674,10 +674,57 @@ void GroupGUI_GroupDlg::showOnlySelected()
       Handle(SALOME_InteractiveObject) io =
         new SALOME_InteractiveObject (aMainEntry.in(), "GEOM", "TEMP_IO");
       if (view->isVisible(io)) myIsHiddenMain = true;
-    }
+      
+      //keep the selected entry and IO in the map for checking
+      std::map<QString, Handle(SALOME_InteractiveObject)> aSelEntriesMap;
+      SALOME_ListIteratorOfListIO aSelIt(aSelList);
+      for ( ; aSelIt.More(); aSelIt.Next() ) {
+        Handle(SALOME_InteractiveObject) anSelIO = aSelIt.Value();
+        aSelEntriesMap[anSelIO->getEntry()] = anSelIO;
+      }
+      //get the displayed sub-shapes
+      SALOME_ListIO displayed;
+      view->GetVisible(displayed);
+      // Erase all, except the selected sub-shapes
+      std::map<QString, Handle(SALOME_InteractiveObject)>::iterator 
+        aSelDispIter = aSelEntriesMap.end();
+      SALOME_ListIteratorOfListIO aDispIt( displayed );
+      for ( ; aDispIt.More(); aDispIt.Next() ) {
+        Handle(SALOME_InteractiveObject) anIO = aDispIt.Value();
+        aSelDispIter = aSelEntriesMap.find( anIO->getEntry() );
+        if ( aSelDispIter != aSelEntriesMap.end() ) {
+          //sub-shape is selected, so erase it's record from map to keep in it not displayed, but selected sub-shapes only
+          aSelEntriesMap.erase(aSelDispIter);
+        } else {
+          //sub-shape is not in the map of selected, then erase it from view
+          aDisplayer->Erase( anIO, /*forced = */false, /*updateViewer = */false );
+        }
+      }
+
+      if ( !aSelEntriesMap.empty() ) {
+        // Build a presentation of the selected, but not displayed sub-shapes
+        TopoDS_Shape aMainShape = GEOM_Client::get_client().GetShape(GeometryGUI::GetGeomGen(), myMainObj);
+        TopTools_IndexedMapOfShape aSubShapesMap;
+        TopExp::MapShapes(aMainShape, aSubShapesMap);
+        QString anEntryBase = aMainEntry.in();
 
-    aDisplayer->EraseAll(/*forced = false, updateViewer = true*/);
-    aDisplayer->Display(aSelList, true);
+        TopExp_Explorer anExp (aMainShape, getShapeType());
+        for (; anExp.More(); anExp.Next()) {
+          TopoDS_Shape aSubShape = anExp.Current();
+          int index = aSubShapesMap.FindIndex(aSubShape);
+          QString anEntry = QString( "TEMP_" ) + anEntryBase + QString("_%1").arg(index);
+          if ( aSelEntriesMap.find( anEntry ) == aSelEntriesMap.end() ) {
+            //skip not selected sub-shapes
+            continue;
+          }
+          SALOME_Prs* aPrs = aDisplayer->buildSubshapePresentation(aSubShape, anEntry, view);
+          if (aPrs) {
+            displayPreview(aPrs, true, false); // append, do not update
+          }
+        }
+      }
+      aDisplayer->UpdateViewer();
+    }
 
     // Mantis issue 0021421: do not hide main shape, if explode on VERTEX
     if (getShapeType() == TopAbs_VERTEX && myIsHiddenMain) {
index afb373a9d76f78d624f6fb8d7872865115e8e126..8dfeeea01a5ba0bd14a35248690b178978f9c296 100644 (file)
@@ -347,7 +347,7 @@ SALOME_Prs* MeasureGUI_AngleDlg::buildPrs()
         gce_MakePln gce_MP(aP11, aP12, aP3);
         Handle(Geom_Plane) aPlane = new Geom_Plane(gce_MP.Value());
 
-        Handle(AIS_AngleDimension) anIO = new AIS_AngleDimension( anEdge1, anEdge2, aPlane->Pln() );
+        Handle(AIS_AngleDimension) anIO = new AIS_AngleDimension( anEdge1, anEdge2 );
 
         Handle(Prs3d_DimensionAspect) aDimensionStyle = new Prs3d_DimensionAspect;
 
index 95a5840c2c7ae5717322aa479a8216e630bd3b16..8b89a773f97f63dc42eaef0a2045596c9fb9e9b8 100644 (file)
@@ -95,6 +95,8 @@ namespace GEOM
       "IsosColor",       // -
       // outlines color
       "OutlineColor",    // -
+      // texture
+      "Texture",         // -
     };
     return ( type >= GEOM::Visibility && type <= GEOM::LastProperty ) ? names[type] : QString();
   }
index 19b0c514fc4ba5989c5ae9b7621f0d0743d7463f..aee0709b4ab2152cd8bdf147aebf0caf55a53567 100644 (file)
@@ -54,7 +54,8 @@ namespace GEOM
     PointColor,
     IsosColor,
     OutlineColor,
-    LastProperty = OutlineColor,
+    Texture,
+    LastProperty = Texture,
   };
 
   GEOM_OBJECT_EXPORT double minDeflection();
index b452a9c67933be5aa9fde269501e7c93bc145bfd..2bf97cb55c573af73854cbdb264f9ea6b6a4aa8a 100644 (file)
@@ -59,14 +59,16 @@ void ShapeRec_FeatureDetector::SetPath( const std::string& thePath )
   {
     IplImage* src = cvLoadImage(imagePath.c_str(),CV_LOAD_IMAGE_COLOR);
     imgHeight = src->height;
-    imgWidth = src->width; 
+    imgWidth = src->width;
+    cvReleaseImage(&src);
   }
 }
 
 /*!
   Computes the corners of the image located at imagePath
 */
-void ShapeRec_FeatureDetector::ComputeCorners( bool useROI, ShapeRec_Parameters* parameters ){
+void ShapeRec_FeatureDetector::ComputeCorners( bool useROI, ShapeRec_Parameters* parameters )
+{
   ShapeRec_CornersParameters* aCornersParameters = dynamic_cast<ShapeRec_CornersParameters*>( parameters );
   if ( !aCornersParameters ) aCornersParameters = new  ShapeRec_CornersParameters();
 
@@ -105,8 +107,8 @@ void ShapeRec_FeatureDetector::ComputeCorners( bool useROI, ShapeRec_Parameters*
 /*!
   Computes the contours of the image located at imagePath
 */
-bool ShapeRec_FeatureDetector::ComputeContours( bool useROI, ShapeRec_Parameters* parameters ){
+bool ShapeRec_FeatureDetector::ComputeContours( bool useROI, ShapeRec_Parameters* parameters )
+{ 
   // Initialising images
   cv::Mat src, src_gray;
   cv::Mat detected_edges;
@@ -135,40 +137,44 @@ bool ShapeRec_FeatureDetector::ComputeContours( bool useROI, ShapeRec_Parameters
   }
   else //COLORFILTER
   {
-    IplImage* find_image = cvLoadImage(imagePath.c_str(),CV_LOAD_IMAGE_COLOR);
+    // Load the input image where we want to detect contours
+    IplImage* input_image = cvLoadImage(imagePath.c_str(),CV_LOAD_IMAGE_COLOR);
 
     ShapeRec_ColorFilterParameters* aColorFilterParameters = dynamic_cast<ShapeRec_ColorFilterParameters*>( parameters );
     if ( !aColorFilterParameters ) aColorFilterParameters = new ShapeRec_ColorFilterParameters();
 
     // Reduce noise
-    cvSmooth( find_image, find_image, CV_GAUSSIAN, aColorFilterParameters->smoothSize, aColorFilterParameters->smoothSize );
+    cvSmooth( input_image, input_image, CV_GAUSSIAN, aColorFilterParameters->smoothSize, aColorFilterParameters->smoothSize );
   
-    // Crop the image to build an histogram from the selected part
-    cvSetImageROI(find_image, rect);
-    IplImage* test_image = cvCreateImage(cvGetSize(find_image),
-                                        find_image->depth,
-                                        find_image->nChannels);
-    cvCopy(find_image, test_image, NULL);
-    cvResetImageROI(find_image);
+    // Crop the image to the selected part only (sample_image)
+    cvSetImageROI(input_image, rect);
+    IplImage* sample_image = cvCreateImage(cvGetSize(input_image),
+                                           input_image->depth,
+                                           input_image->nChannels);
+    cvCopy(input_image, sample_image, NULL);
+    cvResetImageROI(input_image);
   
-    IplImage* test_hsv = cvCreateImage(cvGetSize(test_image),8,3);
-    IplImage* h_plane = cvCreateImage( cvGetSize(test_image), 8, 1 );
-    IplImage* s_plane = cvCreateImage( cvGetSize(test_image), 8, 1 );
-    CvHistogram* hist;
+    IplImage* sample_hsv = cvCreateImage( cvGetSize(sample_image),8,3 );
+    IplImage* sample_h_plane  = cvCreateImage( cvGetSize(sample_image), 8, 1 );
+    IplImage* sample_s_plane = cvCreateImage( cvGetSize(sample_image), 8, 1 );
+    CvHistogram* sample_hist;
 
-    cvCvtColor(test_image, test_hsv, CV_BGR2HSV);
+    cvCvtColor(sample_image, sample_hsv, CV_BGR2HSV);
   
-    cvCvtPixToPlane(test_hsv, h_plane, s_plane, 0, 0);
-    IplImage* planes[] = { h_plane, s_plane };
+    cvCvtPixToPlane(sample_hsv, sample_h_plane, sample_s_plane, 0, 0);
+    IplImage* sample_planes[] = { sample_h_plane, sample_s_plane };
   
-    //create hist
+    // Create the hue / saturation histogram of the SAMPLE image.
+    // This histogramm will be representative of what is the zone
+    // we want to find the frontier of. Indeed, the sample image is meant to 
+    // be representative of this zone
     float hranges[] = { 0, 180 };
     float sranges[] = { 0, 256 };
     float* ranges[] = { hranges, sranges };
-    hist = cvCreateHist( 2, aColorFilterParameters->histSize, aColorFilterParameters->histType, ranges );
+    sample_hist = cvCreateHist( 2, aColorFilterParameters->histSize, aColorFilterParameters->histType, ranges );
   
     //calculate hue /saturation histogram
-    cvCalcHist(planes, hist, 0 ,0);
+    cvCalcHist(sample_planes, sample_hist, 0 ,0);
 
 //   // TEST print of the histogram for debugging
 //   IplImage* hist_image = cvCreateImage(cvSize(320,300),8,3);
@@ -194,18 +200,37 @@ bool ShapeRec_FeatureDetector::ComputeContours( bool useROI, ShapeRec_Parameters
 //   cvNamedWindow("hist", 1); cvShowImage("hist",hist_image);
   
   
-    //calculate back projection of hue and saturation planes of input image
-    IplImage* backproject = cvCreateImage(cvGetSize(test_image), 8, 1);
-    IplImage* binary_backproject = cvCreateImage(cvGetSize(test_image), 8, 1);
-    cvCalcBackProject(planes, backproject, hist);
+    // Calculate the back projection of hue and saturation planes of the INPUT image
+    // by mean of the histogram of the SAMPLE image.
+    //
+    // The pixels which (h,s) coordinates correspond to high values in the histogram
+    // will have high values in the grey image result. It means that a pixel of the INPUT image 
+    // which is more probably in the zone represented by the SAMPLE image, will be whiter 
+    // in the back projection.
+    IplImage* backproject = cvCreateImage(cvGetSize(input_image), 8, 1);
+    IplImage* binary_backproject = cvCreateImage(cvGetSize(input_image), 8, 1);
+    IplImage* input_hsv = cvCreateImage(cvGetSize(input_image),8,3);
+    IplImage* input_hplane = cvCreateImage(cvGetSize(input_image),8,1);
+    IplImage* input_splane = cvCreateImage(cvGetSize(input_image),8,1);
   
-    // Threshold in order to obtain binary image
+    // Get hue and saturation planes of the INPUT image
+    cvCvtColor(input_image, input_hsv, CV_BGR2HSV);
+    cvCvtPixToPlane(input_hsv, input_hplane, input_splane, 0, 0);
+    IplImage* input_planes[] = { input_hplane, input_splane };
+    
+    // Compute the back projection
+    cvCalcBackProject(input_planes, backproject, sample_hist);
+  
+    // Threshold in order to obtain a binary image
     cvThreshold(backproject, binary_backproject, aColorFilterParameters->threshold, aColorFilterParameters->maxThreshold, CV_THRESH_BINARY);
-    cvReleaseImage(&test_image);
-    cvReleaseImage(&test_hsv);
-    cvReleaseImage(&h_plane);
-    cvReleaseImage(&s_plane);
-    cvReleaseImage(&find_image);
+    cvReleaseImage(&sample_image);
+    cvReleaseImage(&sample_hsv);
+    cvReleaseImage(&sample_h_plane);
+    cvReleaseImage(&sample_s_plane);
+    cvReleaseImage(&input_image);
+    cvReleaseImage(&input_hsv);
+    cvReleaseImage(&input_hplane);
+    cvReleaseImage(&input_splane);
     cvReleaseImage(&backproject);
   
     detected_edges = cv::Mat(binary_backproject);
@@ -218,7 +243,7 @@ bool ShapeRec_FeatureDetector::ComputeContours( bool useROI, ShapeRec_Parameters
 
   //  _detectAndRetrieveContours( detected_edges, parameters->findContoursMethod );
   detected_edges = detected_edges > 1;
-  findContours( detected_edges, contours, hierarchy, CV_RETR_CCOMP, parameters->findContoursMethod, useROI ? cvPoint(rect.x,rect.y) : cvPoint(0,0) );
+  findContours( detected_edges, contours, hierarchy, CV_RETR_CCOMP, parameters->findContoursMethod);
 
   return true;
   
@@ -269,6 +294,9 @@ std::string ShapeRec_FeatureDetector::CroppImage()
   
   cvSaveImage ("/tmp/cropped_image.bmp", cropped_image);
   
+  cvReleaseImage(&src);
+  cvReleaseImage(&cropped_image);
+  
   return "/tmp/cropped_image.bmp";
 }
 
index 8c8e3cbe4fd3bf8f14343bd06e198c022e9e53ed..fa4fa14b6c1a975a2224fe0b4c03f4536156fed8 100644 (file)
@@ -174,11 +174,11 @@ void TransformationGUI_MultiRotationDlg::ConstructorsClicked (int constructorId)
 {
   disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
 
-  myBase.nullify();
-  myVector.nullify();
+  //myBase.nullify();
+  //myVector.nullify();
 
-  GroupArgs->LineEdit1->setText("");
-  GroupArgs->LineEdit2->setText("");
+  //GroupArgs->LineEdit1->setText("");
+  //GroupArgs->LineEdit2->setText("");
 
   GroupArgs->SpinBox_DX1->setValue(myAng);
   GroupArgs->SpinBox_DY1->setValue(myNbTimes1);
@@ -275,7 +275,8 @@ void TransformationGUI_MultiRotationDlg::SelectionIntoArgument()
         // angular step
         double diag = sqrt((Xmax-Xmin)*(Xmax-Xmin) + (Ymax-Ymin)*(Ymax-Ymin));
         double d = sqrt((0.5*(Xmax+Xmin))*(0.5*(Xmax+Xmin)) + (0.5*(Ymax+Ymin))*(0.5*(Ymax+Ymin)));
-        myAng = floor(2.0 * atan(diag/d) * 180.0 / M_PI);
+        if ( fabs(d) > 1.e-16 )
+         myAng = floor(2.0 * atan(diag/d) * 180.0 / M_PI);
         GroupArgs->SpinBox_DX1->setValue(myAng);
 
         // radial step
@@ -293,10 +294,10 @@ void TransformationGUI_MultiRotationDlg::SelectionIntoArgument()
     }
     
     // clear selection
-    disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
-    myGeomGUI->getApp()->selectionMgr()->clearSelected();
-    connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
-            this, SLOT(SelectionIntoArgument()));
+    // disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
+    // myGeomGUI->getApp()->selectionMgr()->clearSelected();
+    // connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
+    //         this, SLOT(SelectionIntoArgument()));
   }
   else {
     if ( myEditCurrentArgument == GroupArgs->LineEdit1 )
index 286e2dc00b9b51b8734c2c33ab755a86d98bedd3..1cb934f8ad0d5b80e8b504e668adaabcc8b21a14 100644 (file)
@@ -239,15 +239,21 @@ void TransformationGUI_MultiTranslationDlg::ConstructorsClicked (int constructor
       GroupDimensions->hide();
       GroupPoints->show();
 
-      GroupPoints->LineEdit1->setText("");
-      GroupPoints->LineEdit2->setText("");
-      myBase.nullify();
-      myVectorU.nullify();
+      //GroupPoints->LineEdit1->setText("");
+      //GroupPoints->LineEdit2->setText("");
+      //myBase.nullify();
+      //myVectorU.nullify();
+
+      if ( myBase ) GroupDimensions->LineEdit1->setText( GEOMBase::GetName( myBase.get() ) );
+      if ( myVectorU ) GroupDimensions->LineEdit2->setText( GEOMBase::GetName( myVectorU.get() ) );
 
       GroupPoints->SpinBox_DX->setValue(myStepU);
       GroupPoints->SpinBox_DY->setValue(myNbTimesU);
 
-      GroupPoints->PushButton1->click();
+      if ( !myBase )
+       GroupPoints->PushButton1->click();
+      else if ( !myVectorU )
+       GroupPoints->PushButton2->click();
       break;
     }
   case 1: // Translate double
@@ -255,19 +261,28 @@ void TransformationGUI_MultiTranslationDlg::ConstructorsClicked (int constructor
       GroupPoints->hide();
       GroupDimensions->show();
 
-      GroupDimensions->LineEdit1->setText("");
-      GroupDimensions->LineEdit2->setText("");
-      GroupDimensions->LineEdit3->setText("");
-      myBase.nullify();
-      myVectorU.nullify();
-      myVectorV.nullify();
+      //GroupDimensions->LineEdit1->setText("");
+      //GroupDimensions->LineEdit2->setText("");
+      //GroupDimensions->LineEdit3->setText("");
+      //myBase.nullify();
+      //myVectorU.nullify();
+      //myVectorV.nullify();
+
+      if ( myBase ) GroupDimensions->LineEdit1->setText( GEOMBase::GetName( myBase.get() ) );
+      if ( myVectorU ) GroupDimensions->LineEdit2->setText( GEOMBase::GetName( myVectorU.get() ) );
+      if ( myVectorV ) GroupDimensions->LineEdit3->setText( GEOMBase::GetName( myVectorV.get() ) );
 
       GroupDimensions->SpinBox_DX1->setValue(myStepU);
       GroupDimensions->SpinBox_DY1->setValue(myNbTimesU);
       GroupDimensions->SpinBox_DX2->setValue(myStepV);
       GroupDimensions->SpinBox_DY2->setValue(myNbTimesV);
 
-      GroupDimensions->PushButton1->click();
+      if ( !myBase )
+       GroupDimensions->PushButton1->click();
+      else if ( !myVectorU )
+       GroupDimensions->PushButton2->click();
+      else if ( !myVectorV )
+       GroupDimensions->PushButton3->click();
       break;
     }
   }
@@ -329,7 +344,7 @@ void TransformationGUI_MultiTranslationDlg::SelectionIntoArgument()
     QString aName = GEOMBase::GetName( aSelectedObject.get() );
     myEditCurrentArgument->setText( aName );
 
-    if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) {
+    if ( myEditCurrentArgument == GroupPoints->LineEdit1 || myEditCurrentArgument == GroupDimensions->LineEdit1 ) {
       myBase = aSelectedObject;
 
       // recompute myStepU (Mantis issue 0021718)
@@ -338,36 +353,26 @@ void TransformationGUI_MultiTranslationDlg::SelectionIntoArgument()
       anOper->GetBoundingBox(myBase.get(), true, Xmin, Xmax, Ymin, Ymax, Zmin, Zmax);
       if (anOper->IsDone()) {
         myStepU = floor(1.5 * (Xmax - Xmin));
+        myStepV = floor(1.5 * (Ymax - Ymin));
         GroupPoints->SpinBox_DX->setValue(myStepU);
+        GroupDimensions->SpinBox_DX1->setValue(myStepU);
+        GroupDimensions->SpinBox_DX2->setValue(myStepV);
       }
 
-      if (!myVectorU)
+      if ( myEditCurrentArgument == GroupPoints->LineEdit1 && !myVectorU )
         GroupPoints->PushButton2->click();
+      if ( myEditCurrentArgument == GroupDimensions->LineEdit1 ) {
+       if ( !myVectorU )
+         GroupDimensions->PushButton2->click();
+       else if ( !myVectorV )
+         GroupDimensions->PushButton3->click();
+      }
     }
     else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) {
       myVectorU = aSelectedObject;
       if ( !myBase )
         GroupPoints->PushButton1->click();
     }
-    else if ( myEditCurrentArgument == GroupDimensions->LineEdit1 ) {
-      myBase = aSelectedObject;
-
-      // recompute myStepU and myStepV (Mantis issue 0021718)
-      GEOM::GEOM_IMeasureOperations_var anOper = getGeomEngine()->GetIMeasureOperations(getStudyId());
-      double Xmin, Xmax, Ymin, Ymax, Zmin, Zmax;
-      anOper->GetBoundingBox(myBase.get(), true, Xmin, Xmax, Ymin, Ymax, Zmin, Zmax);
-      if (anOper->IsDone()) {
-        myStepU = floor(1.5 * (Xmax - Xmin));
-        myStepV = floor(1.5 * (Ymax - Ymin));
-        GroupDimensions->SpinBox_DX1->setValue(myStepU);
-        GroupDimensions->SpinBox_DX2->setValue(myStepV);
-      }
-
-      if ( !myVectorU )
-        GroupDimensions->PushButton2->click();
-      else if ( !myVectorV )
-        GroupDimensions->PushButton3->click();
-    }
     else if ( myEditCurrentArgument == GroupDimensions->LineEdit2 ) {
       myVectorU = aSelectedObject;
       if ( !myVectorV )
@@ -384,10 +389,10 @@ void TransformationGUI_MultiTranslationDlg::SelectionIntoArgument()
     }
 
     // clear selection
-    disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
-    myGeomGUI->getApp()->selectionMgr()->clearSelected();
-    connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
-            this, SLOT(SelectionIntoArgument()));
+    // disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
+    // myGeomGUI->getApp()->selectionMgr()->clearSelected();
+    // connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
+    //         this, SLOT(SelectionIntoArgument()));
   }
   else {
     if ( myEditCurrentArgument == GroupPoints->LineEdit1 ||
@@ -668,8 +673,8 @@ bool TransformationGUI_MultiTranslationDlg::execute (ObjectList& objects)
     createPathPreview(myVectorU.get());
     createPathPreview(myVectorV.get());
     anObj = anOper->MultiTranslate2D(myBase.get(),
-                                     myVectorU.get(), myStepU, myNbTimesU,
-                                     myVectorV.get(), myStepV, myNbTimesV);
+                                    myVectorU.get(), myStepU, myNbTimesU,
+                                    myVectorV.get(), myStepV, myNbTimesV);
     if (!IsPreview()) {
       aParameters << GroupDimensions->SpinBox_DX1->text();
       aParameters << GroupDimensions->SpinBox_DY1->text();
@@ -743,10 +748,11 @@ void TransformationGUI_MultiTranslationDlg::createPathPreview ( GEOM::GEOM_Objec
     ShapeAnalysis_Edge aShapeAnal;
     TopoDS_Vertex aFirst = aShapeAnal.FirstVertex( anEdge );
     TopoDS_Vertex aLast = aShapeAnal.LastVertex( anEdge );
+    if ( BRep_Tool::Pnt(aFirst).IsEqual( BRep_Tool::Pnt(aLast), Precision::Confusion() ) ) return;
     TopoDS_Shape aVector = BRepBuilderAPI_MakeEdge(BRep_Tool::Pnt(aFirst), BRep_Tool::Pnt(aLast)).Shape();
     const char* aName = "tmpVector";
     Handle(GEOM_AISVector) anIO = new GEOM_AISVector( aVector, aName );
-
+    
     // add Prs to preview
     SUIT_ViewWindow* vw = SUIT_Session::session()->activeApplication()->desktop()->activeWindow();
     SOCC_Prs* aPrs = dynamic_cast<SOCC_Prs*>(((SOCC_Viewer*)(vw->getViewManager()->getViewModel()))->CreatePrs(0));
index 9a1a748e850da83edf809e6d1dc8124be7b5ec7a..79355ed7760ef8b167d0e85dcffff0c9a42e4630 100644 (file)
@@ -55,7 +55,10 @@ SET(TestXAO_SOURCES
 
 ADD_EXECUTABLE(TestXAO ${TestXAO_SOURCES})
 TARGET_LINK_LIBRARIES(TestXAO ${_link_LIBRARIES})
+
+SALOME_GENERATE_TESTS_ENVIRONMENT(tests_env)
+
 ADD_TEST(TestXAO TestXAO)
-SET_TESTS_PROPERTIES(TestXAO PROPERTIES ENVIRONMENT "GEOM_SRC_DIR=${PROJECT_SOURCE_DIR}")
+SET_TESTS_PROPERTIES(TestXAO PROPERTIES ENVIRONMENT "GEOM_SRC_DIR=${PROJECT_SOURCE_DIR};${tests_env}")
 
 INSTALL(TARGETS TestXAO DESTINATION ${SALOME_INSTALL_BINS})
index 83e3436806df3f47cf6d6a287e1b2d197bf22194..1221c9582d8dcdec55b825c0c616f582796169be 100644 (file)
@@ -25,8 +25,9 @@ namespace XAO
             rstr.seekg(0, rstr.end);        // go to the end
             length = rstr.tellg();          // report location (this is the length)
             rstr.seekg(0, rstr.beg);        // go back to the beginning
-            char* txt = new char[length];   // allocate memory for a buffer of appropriate dimension
+            char* txt = new char[length+1]; // allocate memory for a buffer of appropriate dimension
             rstr.read(txt, length);         // read the whole file into the buffer
+            txt[length] = '\0';
             rstr.close();
 
             return txt;