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})
\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>
<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.
\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".
/*!
-\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
\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>
<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.
\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>
\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 ?"
*/
<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>
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
- \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.
/*!
-\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
- 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.
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.
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)
\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)
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
\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>
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
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,
- \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.
<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>
<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
\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.
<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>
*/
\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>
<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.
\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"
\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>
\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
\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
— Common, 2 — Cut, 3 — Fuse, 4 — Section).
<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
/*!
-\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>
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>
- <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.
*/
/*!
-\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>
*/
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;
<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>
<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>
<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>
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 :
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);
if (aProcessed.Contains(anCheckedFace))
continue;
- if (BRep_Tool::IsClosed(edge, anCheckedFace)) {
+ if (!IsEdgeValidToMerge(edge, anCheckedFace)) {
// Skip seam edge.
continue;
}
#include <GEOMImpl_Types.hxx>
+#include <SUIT_MessageBox.h>
#include <SUIT_ResourceMgr.h>
#include <SUIT_Session.h>
#include <SalomeApp_Application.h>
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;
}
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();
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);
// 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 );
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 );
// 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" );
//=================================================================================
EntityGUI_FeatureDetectorDlg::~EntityGUI_FeatureDetectorDlg()
{
-
+ delete myDetector;
}
//=================================================================================
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
{
myEndPnt = theEndPnt;
MESSAGE("myEndPnt = ("<<theEndPnt.X()<<", "<<theEndPnt.Y()<<")")
- if (setSelectionRect() && aDetector->GetImgHeight() > 0)
+ if (setSelectionRect() && myDetector->GetImgHeight() > 0)
showImageSample();
}
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()));
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
{
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;
// 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;
private:
- ShapeRec_FeatureDetector* aDetector;
+ ShapeRec_FeatureDetector* myDetector;
gp_Ax3 myWPlane;
gp_Ax3 aGlobalCS;
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() )
}
res=true;
-
-
+
return res;
}
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) {
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;
}
}
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;
}
}
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
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();
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
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);
}
<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>
<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>
<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>
</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>
</message>
<message>
<source>TOP_SMOOTHINGSURFACE</source>
- <translation type="unfinished">Smoothing Surface</translation>
+ <translation>Smoothing Surface</translation>
</message>
<message>
<source>GEOM_SELECT_IMAGE</source>
<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>
</message>
<message>
<source>LOWTHRESHOLD</source>
- <translation>Low theshold</translation>
+ <translation>Low threshold</translation>
</message>
<message>
<source>RATIO</source>
</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>
<source>DATA_TYPE</source>
<translation>Type</translation>
</message>
- <message>
- <source></source>
- <translation></translation>
- </message>
<message>
<source>BOOL</source>
<translation>Boolean</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>
<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>
<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'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'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>
</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>
</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>
<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>
<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>
<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'objet</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>
<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>
<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'objet</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>
<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>
<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>
<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>
</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>
</message>
<message>
<source>USE_ROI</source>
- <translation type="unfinished">Use region of interest</translation>
+ <translation>Utiliser la région d'intérêt</translation>
</message>
<message>
<source>KERNEL_SIZE</source>
</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'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'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'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'approximation des chaînes</translation>
</message>
<message>
<source>CV_CHAIN_APPROX_NONE</source>
</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>
</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'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>
</message>
<message>
<source>SHAPE_TYPE</source>
- <translation>Type d'objet</translation>
+ <translation>Type d'objet</translation>
</message>
<message>
<source>VERTEX</source>
</message>
<message>
<source>GEOM_NO_STUDY</source>
- <translation>Pas d'étude disponible</translation>
+ <translation>Pas d'étude disponible</translation>
</message>
<message>
<source>NO_SHAPE</source>
</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'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>
<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>
<translation>Pas</translation>
</message>
</context>
+<context>
+ <name>EntityGUI_IsolineDlg</name>
+ <message>
+ <source>GEOM_ISOLINE_TITLE</source>
+ <translation>Construction d'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>
-
-
<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>
</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>カット(&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(&O)</translation>
+ <translation>わかりました(&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>すべての選択を解除(&n)</translation>
+ <translation>全選択解除(&n)</translation>
</message>
<message>
<source>SELECT_ALL</source>
- <translation>すべて選択します。</translation>
+ <translation>全選択(&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>
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
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() ) ) {
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" );
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 );
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 ))) {
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 )) {
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
// 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>
#include "utilities.h"
#include <TDataStd_IntegerArray.hxx>
-#include <TNaming_CopyShape.hxx>
#include <TopExp.hxx>
#include <TopoDS_Shape.hxx>
#include <TopTools_ListOfShape.hxx>
#include <TopTools_ListIteratorOfListOfShape.hxx>
-#include <TColStd_IndexedDataMapOfTransientTransient.hxx>
-
#include <ShapeFix_Shape.hxx>
#include <Standard_NullObject.hxx>
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;
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);
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;
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;
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;
#endif
#include <TopTools_MapOfShape.hxx>
-#include <TopTools_DataMapOfShapeShape.hxx>
+
#ifndef _TFunction_Driver_HeaderFile
#include <TFunction_Driver.hxx>
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,
#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>
#include <GeomAPI_IntSS.hxx>
#include <GeomAPI_ProjectPointOnCurve.hxx>
+#include <GeomAPI_ProjectPointOnSurf.hxx>
#include <GeomAbs_SurfaceType.hxx>
* 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;
}
//=============================================================================
* 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;
#include <GEOMImpl_ITransformOperations.hxx>
#include <GEOMImpl_Types.hxx>
#include <GEOM_Function.hxx>
+#include <GEOMUtils.hxx>
#include <ShapeFix_Shape.hxx>
#include <ShapeFix_ShapeTolerance.hxx>
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();
}
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();
}
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");
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();
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 );
}
#include "GEOM_PythonDump.hxx"
#include "GEOMImpl_Types.hxx"
#include "GEOMImpl_CopyDriver.hxx"
+#include "GEOMImpl_IInsertOperations.hxx"
#include "GEOM_wrap.hxx"
// Cascade headers
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
// 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;
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;
- }
}
}
}
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() ) {
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
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
// 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;
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();
}
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();
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();
}
aTmpFiles.length(1);
aTmpFiles[0] = aFileName.c_str();
SALOMEDS_Tool::RemoveTemporaryFiles(aTmpDir, aTmpFiles, true);
-
+
_impl->DocumentModified(studyId, false);
return aResult._retn();
}
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;
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();
}
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) {
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;
"IsosColor", // -
// outlines color
"OutlineColor", // -
+ // texture
+ "Texture", // -
};
return ( type >= GEOM::Visibility && type <= GEOM::LastProperty ) ? names[type] : QString();
}
PointColor,
IsosColor,
OutlineColor,
- LastProperty = OutlineColor,
+ Texture,
+ LastProperty = Texture,
};
GEOM_OBJECT_EXPORT double minDeflection();
{
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();
/*!
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;
}
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);
// 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);
// _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;
cvSaveImage ("/tmp/cropped_image.bmp", cropped_image);
+ cvReleaseImage(&src);
+ cvReleaseImage(&cropped_image);
+
return "/tmp/cropped_image.bmp";
}
{
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);
// 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
}
// 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 )
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
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;
}
}
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)
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 )
}
// 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 ||
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();
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));
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})
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;