mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2025-01-13 02:00:35 +05:00
Merge branch V7_6_BR
This commit is contained in:
commit
b46831ede7
@ -30,8 +30,8 @@ CMAKE_POLICY(SET CMP0003 NEW)
|
|||||||
STRING(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UC)
|
STRING(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UC)
|
||||||
|
|
||||||
SET(${PROJECT_NAME_UC}_MAJOR_VERSION 7)
|
SET(${PROJECT_NAME_UC}_MAJOR_VERSION 7)
|
||||||
SET(${PROJECT_NAME_UC}_MINOR_VERSION 5)
|
SET(${PROJECT_NAME_UC}_MINOR_VERSION 6)
|
||||||
SET(${PROJECT_NAME_UC}_PATCH_VERSION 1)
|
SET(${PROJECT_NAME_UC}_PATCH_VERSION 0)
|
||||||
SET(${PROJECT_NAME_UC}_VERSION
|
SET(${PROJECT_NAME_UC}_VERSION
|
||||||
${${PROJECT_NAME_UC}_MAJOR_VERSION}.${${PROJECT_NAME_UC}_MINOR_VERSION}.${${PROJECT_NAME_UC}_PATCH_VERSION})
|
${${PROJECT_NAME_UC}_MAJOR_VERSION}.${${PROJECT_NAME_UC}_MINOR_VERSION}.${${PROJECT_NAME_UC}_PATCH_VERSION})
|
||||||
SET(${PROJECT_NAME_UC}_VERSION_DEV 1)
|
SET(${PROJECT_NAME_UC}_VERSION_DEV 1)
|
||||||
|
@ -23,7 +23,14 @@
|
|||||||
#
|
#
|
||||||
# !! Please read the generic detection procedure in SalomeMacros.cmake !!
|
# !! Please read the generic detection procedure in SalomeMacros.cmake !!
|
||||||
#
|
#
|
||||||
SALOME_FIND_PACKAGE_AND_DETECT_CONFLICTS(OpenCV OpenCV_DIR 2)
|
SET(UpCount 2)
|
||||||
|
|
||||||
|
IF (WIN32)
|
||||||
|
SET(UpCount 0)
|
||||||
|
ENDIF (WIN32)
|
||||||
|
|
||||||
|
SALOME_FIND_PACKAGE_AND_DETECT_CONFLICTS(OpenCV OpenCV_DIR ${UpCount})
|
||||||
|
|
||||||
#MARK_AS_ADVANCED()
|
#MARK_AS_ADVANCED()
|
||||||
|
|
||||||
IF(OpenCV_FOUND)
|
IF(OpenCV_FOUND)
|
||||||
|
@ -118,15 +118,21 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
f = open(options.output, "w")
|
f = open(options.output, "w")
|
||||||
|
|
||||||
|
if len(args) > 1:
|
||||||
|
plugins_names = " ".join(args) + " plugins"
|
||||||
|
elif len(args) == 1:
|
||||||
|
plugins_names = args[0] + " plugin"
|
||||||
|
else:
|
||||||
|
plugins_names = ""
|
||||||
output = []
|
output = []
|
||||||
if options.dummygeomhelp:
|
if options.dummygeomhelp:
|
||||||
output.append( "## @package geomBuilder" )
|
output.append( "## @package geomBuilder" )
|
||||||
output.append( "# Documentation of the methods dynamically added by the " + plugin_name + " Geometry plug-in to the geomBuilder class." )
|
output.append( "# Documentation of the methods dynamically added by the " + plugins_names + " to the @b %geomBuilder class." )
|
||||||
# Add dummy Geometry help
|
# Add dummy Geometry help
|
||||||
# This is supposed to be done when generating documentation for Geometry module plug-ins
|
# This is supposed to be done when generating documentation for Geometry module plug-ins
|
||||||
output.append( "# @note The documentation below does not provide complete description of class @b %geomBuilder" )
|
output.append( "# @note The documentation below does not provide complete description of class @b %geomBuilder" )
|
||||||
output.append( "# from @b geomBuilder package. This documentation provides only information about" )
|
output.append( "# from @b geomBuilder package. This documentation provides only information about" )
|
||||||
output.append( "# the methods dynamically added to the %geomBuilder class by the " + plugin_name + " plugin" )
|
output.append( "# the methods dynamically added to the %geomBuilder class by the " + plugins_names + "." )
|
||||||
output.append( "# For more details on the %geomBuilder class, please refer to the SALOME %Geometry module" )
|
output.append( "# For more details on the %geomBuilder class, please refer to the SALOME %Geometry module" )
|
||||||
output.append( "# documentation." )
|
output.append( "# documentation." )
|
||||||
pass
|
pass
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 105 KiB |
BIN
doc/salome/gui/GEOM/images/tolerances.png
Normal file
BIN
doc/salome/gui/GEOM/images/tolerances.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.0 KiB |
@ -10,25 +10,24 @@ This operation is available in <b>OCC Viewer</b> only.
|
|||||||
|
|
||||||
The \b Result will be a \b GEOM_Object.
|
The \b Result will be a \b GEOM_Object.
|
||||||
|
|
||||||
\n Location of a new vertex on a selected edge can be defined two ways:
|
\n The location of a new vertex on the selected edge can be defined in two ways:
|
||||||
<ol>
|
<ol>
|
||||||
<li> We can specify a position (ranging from 0.0 to 1.0) of the
|
<li> By specifying the position (ranging from 0.0 to 1.0) by length or by parameter.
|
||||||
vertex on the selected edge either by length or by parameter.
|
|
||||||
<p>
|
<p>
|
||||||
<b>TUI Command:</b> <em>geompy.DivideEdge(Shape, EdgeID, Value,
|
<b>TUI Command:</b> <em>geompy.DivideEdge(Shape, EdgeID, Value,
|
||||||
IsByParameter)</em>
|
IsByParameter)</em>
|
||||||
<ul>
|
<ul>
|
||||||
<li> \em Shape is a shape which contains an edge to be divided</li>
|
<li> \em Shape is a shape, which contains an edge to be divided;</li>
|
||||||
<li>\em EdgeID is the ID of the edge to be divided, if it is = -1,
|
<li>\em EdgeID is the ID of the edge to be divided, if it is = -1,
|
||||||
then \em Shape should be an edge itself.</li>
|
then \em Shape should be an edge itself;</li>
|
||||||
<li> \em Value is a value of parameter on edge or length parameter,
|
<li> \em Value is a value of parameter on edge or length parameter,
|
||||||
depending on \em IsByParameter. </li>
|
depending on \em IsByParameter;</li>
|
||||||
<li> \em IsByParameter is a boolean flag, specifying operation mode:
|
<li> \em IsByParameter is a boolean flag, specifying the operation mode:
|
||||||
- \c True: \em Value is treated as a curve parameter [0..1]
|
- \c True: \em Value is treated as a curve parameter; [0..1]
|
||||||
- \c False: \em Value is treated as a length parameter [0..1] </li>
|
- \c False: \em Value is treated as a length parameter. [0..1] </li>
|
||||||
</ul>
|
</ul>
|
||||||
\b Arguments: Name + 1 Edge + 1 Value setting the position of
|
\b Arguments: Name + 1 Edge + 1 Value setting the position of
|
||||||
the point according to one of the selected modes.
|
the point according to the selected mode.
|
||||||
|
|
||||||
The difference between "by parameter" and "by length" modes becomes
|
The difference between "by parameter" and "by length" modes becomes
|
||||||
apparent on the edges with irregular parametrization (for example,
|
apparent on the edges with irregular parametrization (for example,
|
||||||
@ -41,15 +40,15 @@ The \b Result will be a \b GEOM_Object.
|
|||||||
\image html repair8.png
|
\image html repair8.png
|
||||||
\n\n
|
\n\n
|
||||||
</li>
|
</li>
|
||||||
<li>We can select several points that will be projected to the selected
|
<li> By selecting several points that will be projected to the selected
|
||||||
edge to find the location of new vertices.
|
edge to find the location of new vertices.
|
||||||
<p>
|
<p>
|
||||||
<b>TUI Command:</b> <em>geompy.DivideEdgeByPoint(Shape, Edge, Points)</em>
|
<b>TUI Command:</b> <em>geompy.DivideEdgeByPoint(Shape, Edge, Points):</em>
|
||||||
<ul>
|
<ul>
|
||||||
<li> \em Shape is a shape which contains an edge to be divided</li>
|
<li> \em Shape is a shape, which contains an edge to be divided;</li>
|
||||||
<li>\em Edge is an edge to be divided (or it's ID, if it is = -1,
|
<li>\em Edge is an edge to be divided (or its ID, if it is = -1,
|
||||||
then \em Shape should be an edge itself).</li>
|
then \em Shape should be an edge itself);</li>
|
||||||
<li> \em Points is a list of points to project to \a Edge. </li>
|
<li> \em Points is a list of points to be projected to the \a Edge.</li>
|
||||||
</ul>
|
</ul>
|
||||||
\b Arguments: Name + 1 Edge + 1 or more Points.
|
\b Arguments: Name + 1 Edge + 1 or more Points.
|
||||||
|
|
||||||
|
@ -8,10 +8,10 @@ This operation checks whether a shape is a compound of glued blocks.
|
|||||||
|
|
||||||
To be considered as a compound of blocks, the given shape must satisfy the
|
To be considered as a compound of blocks, the given shape must satisfy the
|
||||||
following conditions:
|
following conditions:
|
||||||
- Each element of the compound should be a Block (6 quadrangle faces);
|
- Each element of the compound should be a Block, i.e. have 6 quadrangle faces;
|
||||||
- Each quadrangle face is a face that has 1 wire with 4 edges. If there are
|
- Each quadrangle face should have one wire with four edges. If there are
|
||||||
more than 4 edges in a single wire and C1 continuity mode is switched on,
|
more than four edges in a single wire and C1 continuity mode is switched on,
|
||||||
a face is quadrangular if it has 4 bounds of C1 continuity.
|
a face is quadrangular if it has four bounds with C1 continuity.
|
||||||
- Blocks can be connected only via an entire quadrangle face or an entire edge;
|
- Blocks can be connected only via an entire quadrangle face or an entire edge;
|
||||||
- The compound should be connected;
|
- The compound should be connected;
|
||||||
- Each couple of connecting quadrangle faces should be glued.
|
- Each couple of connecting quadrangle faces should be glued.
|
||||||
@ -20,7 +20,7 @@ a face is quadrangular if it has 4 bounds of C1 continuity.
|
|||||||
In this dialog:
|
In this dialog:
|
||||||
|
|
||||||
- \b Object - the checked object. \b Selection button allows picking it in the viewer or in the object browser.
|
- \b Object - the checked object. \b Selection button allows picking it in the viewer or in the object browser.
|
||||||
- <b>Use C1 criterion</b> - option that shitches on/off the C1 continuity mode.
|
- <b>Use C1 criterion</b> - option switches on/off the C1 continuity mode.
|
||||||
- <b>Angular Tolerance</b> - angular tolerance to check C1 continuity between neighbor edges in a wire.
|
- <b>Angular Tolerance</b> - angular tolerance to check C1 continuity between neighbor edges in a wire.
|
||||||
- \b Errors list informs of possible errors, for example:
|
- \b Errors list informs of possible errors, for example:
|
||||||
- Not a block;
|
- Not a block;
|
||||||
|
@ -9,17 +9,14 @@ This operation checks the topology of the selected shape to detect self-intersec
|
|||||||
In this dialog:
|
In this dialog:
|
||||||
|
|
||||||
- \b Object - the checked object. \b Selection button allows picking it in the viewer or in the object browser.
|
- \b Object - the checked object. \b Selection button allows picking it in the viewer or in the object browser.
|
||||||
- <b>Level of check</b> - The combo box that allows to set the level of checking shape on self-interference.
|
- <b>Level of check</b> - combo box allows setting the level of self-interference checking. It defines, which interferences will be checked. The default value is "All interferences".
|
||||||
It defines which interferferences will be checked. Default value is "All interferences".
|
- <b>Compute self-intersections</b> button performs the computation.
|
||||||
- <b>Compute self-intersections</b> button computes self-interferences.
|
- \b Summary section contains the general report about self-intersections of the object and/or errors that occurred during the computation.
|
||||||
- \b Summary section contains the general report if the object has self-intersections and/or if errors are occured during computation.
|
- \b Self-intersections list contains the list of detected self-intersections. Select the intersection to show <b>Sub-shapes</b> in the field to the right.
|
||||||
- \b Self-intersections list contains the list of self-intersections detected.
|
- \b Apply and <b>Apply and Close</b> buttons store the interferences selected in the <b>Self-intersections</b> list box in the study for further analysis.
|
||||||
Select the intersection(s) to show <b>Sub-shapes</b> in the field to the right.
|
If no interferences are selected, all of them are published in the study. Each interference is published as a child compound of the source shape and contains a couple of intersecting sub-shapes.
|
||||||
- \b Apply and <b>Apply and Close</b> buttons are used to store interferences selected in the "Self-intersections" list box in the study for further analysis.
|
|
||||||
If no any interference is selected, all interferences are published in the study. Each interference is published as a child
|
|
||||||
compound of the source shape and contains a couple of intersecting sub-shapes.
|
|
||||||
|
|
||||||
\note This tool is useful for detection of shapes, not suitable for
|
\note This tool is useful for detection of shapes that are not suitable as
|
||||||
arguments of Boolean operations and Partition algorithm.
|
arguments of Boolean operations and Partition algorithm.
|
||||||
For more information about Partition and Boolean Operations Algorithms
|
For more information about Partition and Boolean Operations Algorithms
|
||||||
and their limitations refer to <a href="SALOME_BOA_PA.pdf">this document</a>.
|
and their limitations refer to <a href="SALOME_BOA_PA.pdf">this document</a>.
|
||||||
|
@ -15,10 +15,8 @@ axis, creating a body of revolution.</li>
|
|||||||
<li>\subpage create_extrusion_alongpath_page "Extrude an object along a path",
|
<li>\subpage create_extrusion_alongpath_page "Extrude an object along a path",
|
||||||
creating a more complex trajectory object.</li>
|
creating a more complex trajectory object.</li>
|
||||||
<li>\subpage create_pipe_path_page "Restore Path" of a pipe-like shape.</li>
|
<li>\subpage create_pipe_path_page "Restore Path" of a pipe-like shape.</li>
|
||||||
<li>\subpage create_thickness_page "Thickness" operation that allows to add a thickness to objects.</li>
|
<li>\subpage create_thickness_page "Add thickness" to objects.</li>
|
||||||
|
<li>\subpage create_groups_page "Generate Groups" for certain generation operations.</li>
|
||||||
<li>\subpage create_groups_page "Generate Groups".
|
|
||||||
This cross-operation functionality allows creation of groups for certain generation operations.</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<b> New entity -> Advanced </b> sub-menu allows creating new geometric
|
<b> New entity -> Advanced </b> sub-menu allows creating new geometric
|
||||||
|
@ -16,7 +16,7 @@ obtain from it.
|
|||||||
The \b Result of the operation will be a List of \b GEOM_Objects
|
The \b Result of the operation will be a List of \b GEOM_Objects
|
||||||
(vertexes, edges, wires, faces, shells or solids).
|
(vertexes, edges, wires, faces, shells or solids).
|
||||||
|
|
||||||
Available choices in the <b>Sub Shapes Type</b> combo box depend on the type
|
The choices available in the <b>Sub Shapes Type</b> combo box depend on the type
|
||||||
of selected <b>Main Object</b>:
|
of selected <b>Main Object</b>:
|
||||||
- \b Compound: to extract compounds;
|
- \b Compound: to extract compounds;
|
||||||
- \b Compsolid: to extract compsolids;
|
- \b Compsolid: to extract compsolids;
|
||||||
@ -29,72 +29,70 @@ of selected <b>Main Object</b>:
|
|||||||
- \b Shape: to extract top-level contents of the compound shape;
|
- \b Shape: to extract top-level contents of the compound shape;
|
||||||
- \b Flat: to extract "flat" contents of the compound shape.
|
- \b Flat: to extract "flat" contents of the compound shape.
|
||||||
|
|
||||||
Note: "flat" contents means top-level simple-type sub-shapes extracted from
|
Note: "flat" contents means that top-level simple-type sub-shapes are extracted from
|
||||||
the compound object recursively (i.e. there is no compounds in the result).
|
the compound object recursively (i.e. there are no compounds in the result).
|
||||||
For example, if a compound C1 contains a solid S1 and another compound C2 that
|
|
||||||
contains solids S2 and S3 (see picture below):
|
Let us take, for example, compound C1 that contains solid S1 and another compound C2 that
|
||||||
|
contains solids S2 and S3 (see the picture below):
|
||||||
- Explode operation with \b Shape type given as parameter will return S1 and C2;
|
- Explode operation with \b Shape type given as parameter will return S1 and C2;
|
||||||
- Explode operation with \b Flat type given as parameter will return S1, S2 and S3.
|
- Explode operation with \b Flat type given as parameter will return S1, S2 and S3.
|
||||||
|
|
||||||
\image html flat_contents.png
|
\image html flat_contents.png
|
||||||
|
|
||||||
Switching on <b>Select Sub-shapes</b> check box allows manual selection of sub-shapes
|
Switching on <b>Select Sub-shapes</b> check box allows manual selection of sub-shapes
|
||||||
to be extracted from the main object. In this mode the user can select sub-shapes
|
to be extracted from the main object. In this mode it is possible to select sub-shapes
|
||||||
directly in 3D viewer.
|
directly in 3D viewer.
|
||||||
|
|
||||||
When <b>Select Sub-shapes</b> check box is switched on, additional \b Filter controls
|
When <b>Select Sub-shapes</b> check box is switched on, additional \b Filter controls
|
||||||
allow to automatically pick up entites which satisfy specified threshold value(s).
|
allow to automatically pick up entities, which satisfy the specified threshold value(s).
|
||||||
The numerical functor for each sub-shape that is compared with threshold value(s)
|
The numerical functor for each sub-shape that is compared with the threshold value(s)
|
||||||
is computed according to the shape's topological properties:
|
is computed according to the topological properties of the shape:
|
||||||
- length for edges and wires
|
- length for edges and wires;
|
||||||
- area for faces and shells
|
- area for faces and shells;
|
||||||
- volume for solids, compounds, compsolids
|
- volume for solids, compounds and compsolids.
|
||||||
|
|
||||||
Filtering capabilities are not available for vertices.
|
Filtering capabilities are not available for vertices.
|
||||||
|
|
||||||
In order to filter out some entities:
|
To filter out some entities it is necessary to do the following:
|
||||||
- Activate one or two filtering controls by switching on corresponding check boxes;
|
- Activate one or two filtering controls by switching on the corresponding check boxes;
|
||||||
- Select required threshold comparator type; the following choices are available:
|
- Select the required threshold comparator type; the following choices are available:
|
||||||
- <b>Less Than</b> or <b>Equal or Less Than</b> for the first comparator;
|
- <b>Less Than</b> or <b>Equal or Less Than</b> for the first comparator;
|
||||||
- <b>Greater Than</b> or <b>Equal or Greater Than</b> for the second comparator;
|
- <b>Greater Than</b> or <b>Equal or Greater Than</b> for the second comparator;
|
||||||
- Enter required threshold value (values);
|
- Enter the required threshold value (values);
|
||||||
- Press \b Apply button in the \b Filter group.
|
- Press \b Apply button in the \b Filter group.
|
||||||
|
|
||||||
The entities which satisfy entered filtering parameters will be automatically highlighted
|
The entities, which correspond to the entered filtering parameters, will be automatically highlighted
|
||||||
in the 3D viewer.
|
in the 3D viewer.
|
||||||
|
|
||||||
Using <b>TUI Commands</b> you can perform this operation in a
|
Using <b>TUI Commands</b> you can perform this operation in a
|
||||||
variety of ways:
|
variety of ways:
|
||||||
- <em>geompy.ExtractShapes(Shape, Type, isSorted)</em> explodes a
|
- <em>geompy.ExtractShapes(Shape, Type, isSorted)</em> explodes a
|
||||||
Shape into sub-shapes of a given Type and returns a List of sub-shapes.
|
Shape into sub-shapes of a given Type and returns a List of sub-shapes.
|
||||||
This method does not return the Shape itself if it matches the
|
This method does not return the Shape itself if it matches the Type.
|
||||||
Type.
|
- <em>geompy.SubShapeAll(Shape, Type)</em> explodes a Shape into
|
||||||
- <em>geompy.SubShapeAll(Shape, Type)</em> explodes a Shape on
|
|
||||||
sub-shapes of a given Type and returns a List of sub-shapes.
|
sub-shapes of a given Type and returns a List of sub-shapes.
|
||||||
- <em>geompy.SubShapeAllIDs(Shape, Type)</em> explodes a Shape on
|
- <em>geompy.SubShapeAllIDs(Shape, Type)</em> explodes a Shape into sub-shapes of a given Type and returns a List of IDs of sub-shapes.
|
||||||
sub-shapes of a given Type and returns a List of IDs of
|
|
||||||
sub-shapes.
|
|
||||||
- <em>geompy.SubShapeAllSortedCentres(Shape, Type)</em> explodes a
|
- <em>geompy.SubShapeAllSortedCentres(Shape, Type)</em> explodes a
|
||||||
shape on sub-shapes of a given type and sorts them taking into account
|
shape into sub-shapes of a given type and sorts them taking into account
|
||||||
their gravity centers, to provide a stable order of sub-shapes.
|
their gravity centers, to provide a stable order of sub-shapes.
|
||||||
It returns a list of sub-shapes.
|
It returns a list of sub-shapes.
|
||||||
- <em>geompy.SubShapeAllSortedCentresIDs(Shape, Type)</em> explodes
|
- <em>geompy.SubShapeAllSortedCentresIDs(Shape, Type)</em> explodes
|
||||||
a shape on sub-shapes of a given type and sorts them taking into
|
a shape into sub-shapes of a given type and sorts them taking into
|
||||||
account their gravity centers, to provide a stable order of sub-shapes.
|
account their gravity centers, to provide a stable order of sub-shapes.
|
||||||
It returns a List of IDs of sub-shapes.
|
It returns a List of IDs of sub-shapes.
|
||||||
- <em>geompy.SubShape(Shape, Type, ListOfInd)</em> allows to obtain
|
- <em>geompy.SubShape(Shape, Type, ListOfInd)</em> allows to obtain
|
||||||
a compound of sub-shapes of the Shape, selected by they indices in a
|
a compound of sub-shapes of the Shape, selected by their indexes in a
|
||||||
list of all sub-shapes of the given Type. Each index is in the range
|
list of all sub-shapes of the given Type. Each index is in the range
|
||||||
[1, Nb_Sub-Shapes_Of_Given_Type].
|
[1, Nb_Sub-Shapes_Of_Given_Type].
|
||||||
- <em>geompy.SubShapeSortedCentres(Shape, Type, ListOfInd)</em>
|
- <em>geompy.SubShapeSortedCentres(Shape, Type, ListOfInd)</em>
|
||||||
allows to obtain a compound of sub-shapes of the Shape, selected by
|
allows to obtain a compound of sub-shapes of the Shape, selected by
|
||||||
they indices in sorted list of all sub-shapes of the given Type. Each
|
their indexes in a sorted list of all sub-shapes of the given Type. Each
|
||||||
index is in the range [1, Nb_Sub-Shapes_Of_Given_Type]
|
index is in the range [1, Nb_Sub-Shapes_Of_Given_Type]
|
||||||
|
|
||||||
<b>Arguments: </b>1 SHAPE + 1 type of SubShape.
|
<b>Arguments: </b>1 SHAPE + 1 type of SubShape.
|
||||||
|
|
||||||
<b>Example:</b>
|
<b>Example:</b>
|
||||||
|
|
||||||
\image html explode.png "A box, exploded into faces"
|
\image html explode.png "A box exploded into faces"
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
@ -4,10 +4,10 @@
|
|||||||
|
|
||||||
To create a <b>Surface From Face</B> in the <b>Main Menu</b> select <b>New Entity - > Basic - > Surface From Face</b>
|
To create a <b>Surface From Face</B> in the <b>Main Menu</b> select <b>New Entity - > Basic - > Surface From Face</b>
|
||||||
|
|
||||||
\n This function takes some face as input parameter and creates new
|
\n This function takes a face at input and creates a new
|
||||||
GEOM_Object, i.e. topological shape by extracting underlying surface
|
<b>GEOM_Object</b>, i.e. topological shape by extracting the underlying surface
|
||||||
of the source face and limiting it by the Umin, Umax, Vmin, Vmax
|
of the source face and limiting it by the <b>Umin, Umax, Vmin</b> and <b>Vmax</b>
|
||||||
parameters of the source face (in the parametrical space).
|
parameters of the source face (in the parametric space).
|
||||||
\n
|
\n
|
||||||
\ref restore_presentation_parameters_page "Advanced options".
|
\ref restore_presentation_parameters_page "Advanced options".
|
||||||
|
|
||||||
|
@ -2,26 +2,28 @@
|
|||||||
|
|
||||||
\page create_thickness_page Thickness Construction
|
\page create_thickness_page Thickness Construction
|
||||||
|
|
||||||
To add a \b Thickness to a shape in the <b>Main Menu</b> select <b>New Entity - > Generation - > Thickness</b>
|
To add \b Thickness to a shape in the <b>Main Menu</b> select <b>New Entity - > Generation - > Thickness</b>.
|
||||||
\n
|
|
||||||
It is possible to create a Solid from a Face or a Shell by applying a
|
Switch between adding thickness to a Face (Shell) or a Solid using radio buttons.
|
||||||
\b Thickness. To do it you should define an \b Object that is a Face or a
|
|
||||||
Shell, \b Thickness and to define the thickness direction by means of
|
Firstly, \b Thickness can be applied to a Face or a Shell to create a Solid.
|
||||||
<b>Thicken towards the inside</b> check box.
|
|
||||||
|
|
||||||
\image html thickness.png
|
\image html thickness.png
|
||||||
|
|
||||||
|
It is necessary to define an \b Object (Face or Shell) and the value of \b Thickness.
|
||||||
|
<b>Thicken towards the inside</b> check box allows changing the thickness direction.
|
||||||
|
|
||||||
<b>Example:</b>
|
<b>Example:</b>
|
||||||
|
|
||||||
\image html thickness_result.png "Thickness of Shell"
|
\image html thickness_result.png "Thickness of Shell"
|
||||||
|
|
||||||
It is possible to apply \b Thickness to a Solid. The result of this operation
|
Secondly, the \b Thickness can be applied to a Solid to create a hollowed Solid.
|
||||||
is the hollowed Solid. To do it you should define an \b Object that is a Solid,
|
|
||||||
\b Faces to be removed from result, \b Thickness and the thickness direction by
|
|
||||||
means of <b>Thicken towards the inside</b> check box.
|
|
||||||
|
|
||||||
\image html thicksolid.png
|
\image html thicksolid.png
|
||||||
|
|
||||||
|
It is necessary to define a Solid \b Object \b Faces to be removed from the result and \b Thickness.
|
||||||
|
<b>Thicken towards the inside</b> check box allows changing the thickness direction.
|
||||||
|
|
||||||
<b>Example:</b>
|
<b>Example:</b>
|
||||||
|
|
||||||
\image html thicksolid_result.png "Thickness of Solid"
|
\image html thicksolid_result.png "Thickness of Solid"
|
||||||
@ -36,8 +38,8 @@ Modifies a shape to make it a thick solid.
|
|||||||
|
|
||||||
<b>Arguments:</b> Name + 1 shape (face, shell or solid) + thickness +
|
<b>Arguments:</b> Name + 1 shape (face, shell or solid) + thickness +
|
||||||
the list of face IDs.
|
the list of face IDs.
|
||||||
\n If the shape is face or shell the list of face IDs is not used.
|
\n If the shape is a face or a shell the list of face IDs is not used.
|
||||||
The thickness can be positive or negative for thicken towards the inside.
|
The thickness can be positive or negative for thickening towards the inside.
|
||||||
\n\n <b>Advanced options</b> \ref preview_anchor "Preview"
|
\n\n <b>Advanced options</b> \ref preview_anchor "Preview"
|
||||||
|
|
||||||
Our <b>TUI Scripts</b> provide you with useful examples of creation of
|
Our <b>TUI Scripts</b> provide you with useful examples of creation of
|
||||||
|
@ -34,7 +34,7 @@ All necessary parameters of Dependency Tree Viewer can be edited in the \ref pre
|
|||||||
Tree nodes in the Dependency Viewer are named according to the study
|
Tree nodes in the Dependency Viewer are named according to the study
|
||||||
names of the corresponding objects.
|
names of the corresponding objects.
|
||||||
|
|
||||||
All nodes have fixed size, so long names are cut; the full object name can be seen in the tooltip
|
All nodes have fixed size, so long names are cut; the full object name can be seen in the tool-tip
|
||||||
when the cursor is hovered over the node.
|
when the cursor is hovered over the node.
|
||||||
|
|
||||||
"Dependency Tree" view supports the following states of nodes:
|
"Dependency Tree" view supports the following states of nodes:
|
||||||
@ -61,11 +61,11 @@ Browser, OCC Viewer or Dependency Tree Viewer;</li></ul>
|
|||||||
Dependency Tree Viewer shows oriented links between nodes to
|
Dependency Tree Viewer shows oriented links between nodes to
|
||||||
represent the dependency direction. The viewer supports the following states of links:
|
represent the dependency direction. The viewer supports the following states of links:
|
||||||
|
|
||||||
<ul><li><b>Unidirectional link</b> - shows that object B depends on object A;</li></ul>
|
<ul><li><b>Unidirectional link</b> - shows that object \b B depends on object \b A;</li></ul>
|
||||||
\image html tree_unidir_link.png
|
\image html tree_unidir_link.png
|
||||||
|
|
||||||
<ul><li><b>Bidirectional link</b> - shows that object B depends on
|
<ul><li><b>Bidirectional link</b> - shows that object \b B depends on
|
||||||
object A and, at the same time, object A depends on object B;</li></ul>
|
object \b A and, at the same time, object \b A depends on object \b B;</li></ul>
|
||||||
\image html tree_bidir_link.png
|
\image html tree_bidir_link.png
|
||||||
|
|
||||||
<ul><li><b>Self-dependency link</b> - shows that an object depends on itself;</li></ul>
|
<ul><li><b>Self-dependency link</b> - shows that an object depends on itself;</li></ul>
|
||||||
|
@ -29,7 +29,7 @@ functionality for all objects in the current view via the main menu
|
|||||||
|
|
||||||
\n <b>TUI Command:</b> <em>gg.setVectorsMode(ID, Bool)</em>
|
\n <b>TUI Command:</b> <em>gg.setVectorsMode(ID, Bool)</em>
|
||||||
|
|
||||||
\n Also it is possible to show the vertices of the selected
|
\n It is possible to show the vertices of the selected
|
||||||
shape. For this, choose in the context menu of the shape
|
shape. For this, choose in the context menu of the shape
|
||||||
<b>Display mode -> Show Vertices</b>, or apply this
|
<b>Display mode -> Show Vertices</b>, or apply this
|
||||||
functionality for all objects in the current view via the main menu
|
functionality for all objects in the current view via the main menu
|
||||||
@ -40,10 +40,9 @@ functionality for all objects in the current view via the main menu
|
|||||||
|
|
||||||
\n <b>TUI Command:</b> <em>gg.setVerticesMode(ID, Bool)</em>
|
\n <b>TUI Command:</b> <em>gg.setVerticesMode(ID, Bool)</em>
|
||||||
|
|
||||||
\n Moreover user can show the name of the selected
|
\n To show the name of the selected shape, choose in its context menu
|
||||||
shape. For this, choose in the context menu of the shape
|
|
||||||
<b>Display mode -> Show Name</b>, or apply this
|
<b>Display mode -> Show Name</b>, or apply this
|
||||||
functionality for all objects in the current view via the main menu
|
functionality for all objects in the current view via the main menu option
|
||||||
<b> View -> Display Mode -> Show/Hide Name.</b>
|
<b> View -> Display Mode -> Show/Hide Name.</b>
|
||||||
|
|
||||||
\image html name_mode.png
|
\image html name_mode.png
|
||||||
|
@ -1,25 +1,20 @@
|
|||||||
/*!
|
/*!
|
||||||
|
|
||||||
\page extension_operation_page Extension of an Edge or a Face
|
\page extension_operation_page Extension
|
||||||
|
|
||||||
\n To produce an \b Extension in the <b>Main Menu</b> select
|
\n To produce an \b Extension of an Edge or a Face select in the <b>Main Menu</b>
|
||||||
<b>Operations - > Transformation - > Extension</b>
|
<b>Operations - > Transformation - > Extension</b>. The type of extension is defined using the radio buttons.
|
||||||
|
|
||||||
\n This operation resizes an \b Edge by means of first
|
Firstly it is possible to resize an \b Edge by modifying its first
|
||||||
and last parameters modification or a \b Face by means of modification
|
and last parameters
|
||||||
of minimal and maximal U- and V-Parameters. \n
|
|
||||||
\ref restore_presentation_parameters_page "Advanced options".
|
|
||||||
|
|
||||||
The type of extension is defined using the radio buttons.
|
\image html extension1.png "Edge Extension"
|
||||||
|
|
||||||
Firstly it is possible to resize an \b Edge.
|
|
||||||
\n <b>TUI Command:</b> <em>geompy.ExtendEdge(theEdge, theMin, theMax)</em>,
|
\n <b>TUI Command:</b> <em>geompy.ExtendEdge(theEdge, theMin, theMax)</em>,
|
||||||
where \em theEdge the input edge to be resized, \em theMin the minimal
|
where \em theEdge the input edge to be resized, \em theMin the minimal
|
||||||
parameter value, \em theMax the maximal parameter value.
|
parameter value, \em theMax the maximal parameter value.
|
||||||
\n <b>Arguments:</b> Name + Object (Edge) + 2 values (Min and Max Parameters).
|
\n <b>Arguments:</b> Name + Object (Edge) + 2 values (Min and Max Parameters).
|
||||||
|
|
||||||
\image html extension1.png "Extension of an Edge"
|
|
||||||
|
|
||||||
\n <b>Example:</b>
|
\n <b>Example:</b>
|
||||||
|
|
||||||
\image html extend_edge_example.png "Original edge (white) and extended edge"
|
\image html extend_edge_example.png "Original edge (white) and extended edge"
|
||||||
@ -29,7 +24,11 @@ parameter value, \em theMax the maximal parameter value.
|
|||||||
\b theMin parameter. If \b theMax is greater than 1, the Edge is
|
\b theMin parameter. If \b theMax is greater than 1, the Edge is
|
||||||
extended, otherwise it is shrinked by \b theMax parameter.
|
extended, otherwise it is shrinked by \b theMax parameter.
|
||||||
|
|
||||||
Secondly it is possible to resize a \b Face.
|
Secondly it is possible to resize a \b Face by modifying its
|
||||||
|
minimal and maximal U- and V-Parameters.
|
||||||
|
|
||||||
|
\image html extension2.png "Face Extension"
|
||||||
|
|
||||||
\n <b>TUI Command:</b> <em>geompy.ExtendFace(theFace, theUMin, theUMax,
|
\n <b>TUI Command:</b> <em>geompy.ExtendFace(theFace, theUMin, theUMax,
|
||||||
theVMin, theVMax)</em>, where \em theFace the input face to be resized,
|
theVMin, theVMax)</em>, where \em theFace the input face to be resized,
|
||||||
\em theUMin the minimal U-Parameter value, \em theUMax the maximal U-Parameter
|
\em theUMin the minimal U-Parameter value, \em theUMax the maximal U-Parameter
|
||||||
@ -38,18 +37,16 @@ V-Parameter value.
|
|||||||
\n <b>Arguments:</b> Name + Object (Face) + 4 values (Min and Max U- and
|
\n <b>Arguments:</b> Name + Object (Face) + 4 values (Min and Max U- and
|
||||||
V-Parameters).
|
V-Parameters).
|
||||||
|
|
||||||
\image html extension2.png "Extension of a Face"
|
|
||||||
|
|
||||||
\n <b>Example:</b>
|
\n <b>Example:</b>
|
||||||
|
|
||||||
\image html extend_face_example.png "The original face (gray) and a result
|
\image html extend_face_example.png "The original face (gray) and a result face shrinked along U-Direction and extended along V-Direction"
|
||||||
face shrinked along U-Direction and extended along V-Direction"
|
|
||||||
|
|
||||||
\note The input Face U- and V-Parameters range is [0, 1]. If \b theUMin
|
\note The input Face U- and V-Parameters range is [0, 1]. If \b theUMin
|
||||||
parameter is negative, the input Face is extended, otherwise it is
|
parameter is negative, the input Face is extended, otherwise it is
|
||||||
shrinked along U-Direction by \b theUMin parameter. If theUMax is
|
shrinked along U-Direction by \b theUMin parameter. If \b theUMax is
|
||||||
greater than 1, the Face is extended, otherwise it is shrinked along
|
greater than 1, the Face is extended, otherwise it is shrinked along
|
||||||
U-Direction by \b theUMax parameter. So as for \b theVMin, \b theVMax
|
U-Direction by \b theUMax parameter. The same applies to \b theVMin, \b theVMax
|
||||||
and V-Direction of the input Face.
|
and V-Direction of the input Face.
|
||||||
|
|
||||||
Our <b>TUI Scripts</b> provide you with useful examples of the use of
|
Our <b>TUI Scripts</b> provide you with useful examples of the use of
|
||||||
|
@ -6,6 +6,7 @@ Here you can find the answers to some frequently asked questions:
|
|||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>\subpage partition_explanation "What is the difference between partition, compounds and fuse operation ?" </li>
|
<li>\subpage partition_explanation "What is the difference between partition, compounds and fuse operation ?" </li>
|
||||||
|
<li>\subpage size_models_range "What are the valid sizes of models ?" </li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
/*!
|
/*!
|
||||||
\page fast_intersection_page Fast intersection
|
\page fast_intersection_page Fast intersection
|
||||||
|
|
||||||
This operation checks whether or not two selected shapes are overlapped.
|
This operation checks if two selected shapes are overlapped.
|
||||||
|
|
||||||
This tool is useful for fast detection of intersections and gaps.
|
This tool is useful for fast detection of intersections and gaps.
|
||||||
In contrast to Boolean Operations, Partition and Detect Self-intersection
|
In contrast to Boolean Operations, Partition and Detect Self-intersection
|
||||||
algorithms that compute topological intersections, this algoritm computes
|
algorithms that compute topological intersections, this algorithm computes
|
||||||
intersections by generating tessellation (triangulation) of the source
|
intersections by generating tessellation (triangulation) of the source
|
||||||
shapes and detecting overlapping of resulting meshes. High performance is
|
shapes and detecting overlapping of resulting meshes. High performance is
|
||||||
achieved through the use of existing triangulation of faces.
|
achieved through the use of existing triangulation of faces.
|
||||||
@ -28,22 +28,21 @@ of the GUI module's documentation.
|
|||||||
|
|
||||||
In this dialog:
|
In this dialog:
|
||||||
|
|
||||||
- \b Object 1 - first checked object. \b Selection button allows picking it in the viewer or in the object browser.
|
- <b> Object 1 </b> and <b> Object 2 </b> the checked objects. \b Selection button allows picking them in the viewer or in the object browser.
|
||||||
- \b Object 2 - second checked object. \b Selection button allows picking it in the viewer or in the object browser.
|
|
||||||
- <b>Deflection coefficient</b> specifies the quality of shapes tessellation.
|
- <b>Deflection coefficient</b> specifies the quality of shapes tessellation.
|
||||||
- <b>Detect gaps</b> - when switched on, allows detecting gaps between shapes.
|
- <b>Detect gaps</b> - when switched on, allows detecting gaps between shapes.
|
||||||
- <b>Tolerance</b> - specifies a distance between shapes used for detecting gaps.
|
- <b>Tolerance</b> - specifies the distance between shapes used for detecting gaps.
|
||||||
- <b>Compute intersections</b> - press this button to compute interferences.
|
- <b>Compute intersections</b> - press this button to compute interferences.
|
||||||
- <b>Sub-shapes of Object 1</b> - list of sub-shapes from the first source shape that localize the intersection.
|
- <b>Sub-shapes of Object 1</b> - list of sub-shapes from the first source shape that localize the intersection.
|
||||||
- <b>Sub-shapes of Object 2</b> - list of sub-shapes from the second source shape that localize the intersection.
|
- <b>Sub-shapes of Object 2</b> - list of sub-shapes from the second source shape that localize the intersection.
|
||||||
- \b Apply and <b>Apply and Close</b> buttons are used to store selected intersected shapes in the study for
|
- \b Apply and <b>Apply and Close</b> buttons are used to store selected intersected shapes in the study for
|
||||||
further analysis (see below).
|
further analysis (see below).
|
||||||
|
|
||||||
\note Quality of the result depends on the quality of triangulation. Changing a value of the deflection coefficient
|
\note The result quality depends on the quality of triangulation. Changing the value of the deflection coefficient
|
||||||
parameter can strongly affect the result. On the other hand, small values of deflection coefficient might lead to
|
parameter can strongly affect the result. However, small values of the deflection coefficient might lead to
|
||||||
some performance loss of the algorithm, as number of triangles of the tesselation mesh depends on this parameter.
|
some performance loss of the algorithm, as number of triangles of the tesselation mesh depends on this parameter.
|
||||||
|
|
||||||
It is possible to store sub-shapes selected by the user in the study, for the further analysis.
|
Press <b>Apply and Close</b> or \b Apply button to store the selected sub-shapes in the study for further analysis.
|
||||||
The selection will be published as a compound containing intersected sub-shapes from both source objects.
|
The selection will be published as a compound containing intersected sub-shapes from both source objects.
|
||||||
|
|
||||||
<b>TUI Command:</b> <em>geompy.FastIntersect(theShape1, theShape2, theTolerance = 0.0, theDeflection = 0.001),</em> \n
|
<b>TUI Command:</b> <em>geompy.FastIntersect(theShape1, theShape2, theTolerance = 0.0, theDeflection = 0.001),</em> \n
|
||||||
|
@ -5,7 +5,8 @@
|
|||||||
\anchor pref_settings <h2>Settings</h2>
|
\anchor pref_settings <h2>Settings</h2>
|
||||||
|
|
||||||
In the \b Geometry module you can set preferences for visualization of
|
In the \b Geometry module you can set preferences for visualization of
|
||||||
geometrical figures, which can be used in later sessions with this module.
|
geometrical figures, which can be used right now or in later sessions
|
||||||
|
with this module according to the preferences.
|
||||||
|
|
||||||
|
|
||||||
\image html pref15.png
|
\image html pref15.png
|
||||||
@ -48,16 +49,16 @@ place (in the back) and add the additional wireframe actor in the viewer foregro
|
|||||||
<li><b>Shading With Edges</b> - allows to switch display mode to shading with edges mode after
|
<li><b>Shading With Edges</b> - allows to switch display mode to shading with edges mode after
|
||||||
"top-level" operation.</li>
|
"top-level" operation.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<li><b>Transparency</b> - allows to define default transparency value.</li>
|
<li><b>Default transparency</b> - allows to define default transparency value.</li>
|
||||||
<li><b>Deflection coefficient</b> - allows to define default deflection
|
<li><b>Default deflection coefficient</b> - allows to define default deflection
|
||||||
coefficient for lines and surfaces. A smaller coefficient provides
|
coefficient for lines and surfaces. A smaller coefficient provides
|
||||||
better quality of a shape in the viewer.</li>
|
better quality of a shape in the viewer.</li>
|
||||||
<li><b>Show predefined materials in popup menu</b> - allows to customize the displaying of popup menu with list of
|
<li><b>Show predefined materials in popup menu</b> - allows to customize the displaying of popup menu with list of
|
||||||
predefined materials.</li>
|
predefined materials.</li>
|
||||||
<li><b>Default material</b> - allows to define default material.</li>
|
<li><b>Default material</b> - allows to define default material.</li>
|
||||||
<li><b>Subshapes color for editing a group</b> - allows to select default color for subshapes in a group.</li>
|
<li><b>Subshapes color for editing a group</b> - allows to select default color for subshapes in a group.</li>
|
||||||
<li><b>Edges width</b> - allows to define default width of the edges.</li>
|
<li><b>Default edges width</b> - allows to define default width of the edges.</li>
|
||||||
<li><b>Isolines width</b> - allows to define default width of the isolines.</li>
|
<li><b>Default 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>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>Measures line width</b> - allows to define lines width of measurements tools.</li>
|
||||||
<li><b>Step value for spin boxes</b> - allows to define the increment
|
<li><b>Step value for spin boxes</b> - allows to define the increment
|
||||||
@ -82,7 +83,7 @@ of values set in spin boxes.</li>
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<ul>
|
<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:
|
<li><b>Default number of isolines</b> - allows to specify the default 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
|
\image html isos.png
|
||||||
|
|
||||||
@ -107,26 +108,15 @@ precision for floating-point data.</li>
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>Marker of Points</b></li>
|
<li><b>Default marker of points</b></li>
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>Type</b> - allows to select the symbol for representation of
|
<li><b>Type</b> - allows to select the default symbol for representation of
|
||||||
points (cross, asterisk, etc.).</li>
|
points (cross, asterisk, etc.).</li>
|
||||||
<li><b>Size</b> - allows to define the size of the marker from 1
|
<li><b>Size</b> - allows to define the default size of the marker from 1
|
||||||
(smallest) to 7 (largest).</li>
|
(smallest) to 7 (largest).</li>
|
||||||
</ul>
|
</ul>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><b>Origin and base vectors</b></li>
|
|
||||||
<ul>
|
|
||||||
<li><b>Length of base vectors</b> - allows to define the length
|
|
||||||
of base vectors.</li>
|
|
||||||
<li><b>Auto create</b> - allows to automatically create a point
|
|
||||||
of origin and three base vectors of the rectangular coordinate
|
|
||||||
system immediately after the module activation.</li>
|
|
||||||
</ul>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>Scalar bar for field presentation</b></li>
|
<li><b>Scalar bar for field presentation</b></li>
|
||||||
<ul>
|
<ul>
|
||||||
@ -139,11 +129,23 @@ system immediately after the module activation.</li>
|
|||||||
</ul>
|
</ul>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><b>Origin and base vectors</b></li>
|
||||||
|
<ul>
|
||||||
|
<li><b>Length of base vectors</b> - allows to define the length
|
||||||
|
of base vectors.</li>
|
||||||
|
<li><b>Auto create</b> - allows to automatically create a point
|
||||||
|
of origin and three base vectors of the rectangular coordinate
|
||||||
|
system immediately after the module activation.</li>
|
||||||
|
</ul>
|
||||||
|
</ul>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>Operations</b></li>
|
<li><b>Operations</b></li>
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>Preview</b> - allows to customize the displaying preview by default.</li>
|
<li><b>Preview</b> - allows to customize the displaying preview by default.</li>
|
||||||
|
<li><b>Hide input objects from the viewer</b> - allows automatic hiding of input
|
||||||
|
shapes from the 3D viewer (OCC and VTK) in all operations of Geometry module.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ given tolerance value.
|
|||||||
|
|
||||||
\n <b>TUI Command:</b>
|
\n <b>TUI Command:</b>
|
||||||
<p><em>geompy.MakeGlueEdges( theShapes, theTolerance )</em>,
|
<p><em>geompy.MakeGlueEdges( theShapes, theTolerance )</em>,
|
||||||
\n where \em theShapes is either a list or compound of shapes to be
|
\n where \em theShapes is a list or compound of shapes to be
|
||||||
glued, and \em theTolerance is a maximum distance between two
|
glued, and \em theTolerance is a maximum distance between two
|
||||||
edges, which can be considered as coincident.
|
edges, which can be considered as coincident.
|
||||||
|
|
||||||
@ -41,12 +41,12 @@ The selected edges will be marked in white.
|
|||||||
theTolerance is a maximum distance between two edges, which can
|
theTolerance is a maximum distance between two edges, which can
|
||||||
be considered as coincident. The \b Result will be a list of \b
|
be considered as coincident. The \b Result will be a list of \b
|
||||||
GEOM_Objects (edges), containing one sub-shape per each detected set of
|
GEOM_Objects (edges), containing one sub-shape per each detected set of
|
||||||
coincident sub-shapes. For example if there are two coincident edges
|
coincident sub-shapes. For example, if there are two coincident edges
|
||||||
in selected shapes, the result list contains one of the two coincident edges.
|
in the selected shapes, the result list contains one of the two coincident edges.
|
||||||
|
|
||||||
<em>geompy.MakeGlueEdgesByList( theShapes, theTolerance, theEdges )</em>,
|
<em>geompy.MakeGlueEdgesByList( theShapes, theTolerance, theEdges )</em>,
|
||||||
\n where \em theShape is either a list or compound of shapes to be glued, \em
|
\n where \em theShape is a list or compound of shapes to be glued,
|
||||||
theTolerance is a maximum distance between two edges, which can
|
\em theTolerance is a maximum distance between two edges, which can
|
||||||
be considered as coincident, \em theEdges is a list of
|
be considered as coincident, \em theEdges is a list of
|
||||||
edges to be glued.
|
edges to be glued.
|
||||||
|
|
||||||
|
@ -41,12 +41,12 @@ The selected faces will be marked in white.
|
|||||||
|
|
||||||
When the faces are glued their edges are glued as well. By default, other
|
When the faces are glued their edges are glued as well. By default, other
|
||||||
edges are not glued. To force gluing of all edges, check <b>Glue all coincident edges</b>
|
edges are not glued. To force gluing of all edges, check <b>Glue all coincident edges</b>
|
||||||
checkbox.
|
check-box.
|
||||||
|
|
||||||
\n <b>TUI Commands:</b>
|
\n <b>TUI Commands:</b>
|
||||||
|
|
||||||
<em>geompy.GetGlueFaces( theShapes, theTolerance )</em>,
|
<em>geompy.GetGlueFaces( theShapes, theTolerance )</em>,
|
||||||
\n where \em theShapes is either a list or compound of shapes to be glued, \em
|
\n where \em theShapes is a list or compound of shapes to be glued, \em
|
||||||
theTolerance is a maximum distance between two faces, which can
|
theTolerance is a maximum distance between two faces, which can
|
||||||
be considered as coincident. The \b Result will be a list of \b
|
be considered as coincident. The \b Result will be a list of \b
|
||||||
GEOM_Objects (faces), containing one sub-shape per each detected set of
|
GEOM_Objects (faces), containing one sub-shape per each detected set of
|
||||||
|
@ -12,11 +12,11 @@ In this dialog:
|
|||||||
- Click on the "selection" button and select an object to inspect in the Object Browser or in the viewer.
|
- Click on the "selection" button and select an object to inspect in the Object Browser or in the viewer.
|
||||||
- Show/hide sub-shape(s) in the 3D viewer, by pressing “eye” icon in the first column of the tree view.
|
- Show/hide sub-shape(s) in the 3D viewer, by pressing “eye” icon in the first column of the tree view.
|
||||||
- Show/hide all sub-shapes in the 3D viewer, by pressing “eye” icon in the first column of the tree view header.
|
- Show/hide all sub-shapes in the 3D viewer, by pressing “eye” icon in the first column of the tree view header.
|
||||||
- Rename selected sub-shape by double-clicking on the item or pressing <F2> key.
|
- Rename the selected sub-shape by double-clicking on the item or pressing <F2> key.
|
||||||
- Show selected sub-shape(s) in the 3D viewer by pressing <b>Show Selected</b> button.
|
- Show the selected sub-shape(s) in the 3D viewer by pressing <b>Show Selected</b> button.
|
||||||
- Show selected sub-shape(s) in the 3D viewer and erase all currently shown objects by pressing <b>Show Only Selected</b> button.
|
- Show the selected sub-shape(s) in the 3D viewer and erase all currently shown objects by pressing <b>Show Only Selected</b> button.
|
||||||
- Hide selected sub-shape(s) from the 3D viewer by pressing <b>Hide Selected</b> button.
|
- Hide the selected sub-shape(s) from the 3D viewer by pressing <b>Hide Selected</b> button.
|
||||||
- Publish selected sub-shapes in the study, by pressing <b>Publish Selected</b> button.
|
- Publish the selected sub-shapes in the study, by pressing <b>Publish Selected</b> button.
|
||||||
- Close dialog box, by pressing <b>Close</b> button.
|
- Close dialog box, by pressing <b>Close</b> button.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
@ -14,12 +14,11 @@ To make a projection it is necessary to define:
|
|||||||
- \b Object to be projected. It can be either a planar wire or a face;
|
- \b Object to be projected. It can be either a planar wire or a face;
|
||||||
- \b Radius of the cylinder;
|
- \b Radius of the cylinder;
|
||||||
- <b>Starting angle</b> from the cylinder's X axis around Z axis. This is
|
- <b>Starting angle</b> from the cylinder's X axis around Z axis. This is
|
||||||
the angle of the projection starting.
|
the angle of the projection start.
|
||||||
- <b>Length angle</b> in which to project the total length of
|
- <b>Length angle</b> where the total length of
|
||||||
the wire. If it is unchecked the projection is not scaled and natural
|
the wire should be projected. If it is unchecked the projection is not scaled and the natural
|
||||||
wire length is kept for the projection.
|
wire length is kept for the projection.
|
||||||
|
- \ref restore_presentation_parameters_page "Advanced options".
|
||||||
\ref restore_presentation_parameters_page "Advanced options".
|
|
||||||
|
|
||||||
\image html proj_on_cyl_dlg.png
|
\image html proj_on_cyl_dlg.png
|
||||||
|
|
||||||
@ -29,8 +28,8 @@ wire length is kept for the projection.
|
|||||||
|
|
||||||
\n <b>TUI Command:</b> <em>geompy.MakeProjectionOnCylinder(theObject, theRadius,
|
\n <b>TUI Command:</b> <em>geompy.MakeProjectionOnCylinder(theObject, theRadius,
|
||||||
theStartAngle=0.0, theAngleLength=-1.0),</em>
|
theStartAngle=0.0, theAngleLength=-1.0),</em>
|
||||||
where \em theObject is a shape which has to be projected, \em theRadius
|
where \em theObject is a shape to be projected, \em theRadius
|
||||||
is a cylinder radius, \em theStartAngle the starting angle of projection in
|
is a cylinder radius, \em theStartAngle is the starting angle of projection in
|
||||||
radians, \em theAngleLength the projection length angle in radians.
|
radians, \em theAngleLength the projection length angle in radians.
|
||||||
The \em Result will be a \em GEOM_Object.
|
The \em Result will be a \em GEOM_Object.
|
||||||
|
|
||||||
|
@ -3,18 +3,18 @@
|
|||||||
\page sewing_operation_page Sewing
|
\page sewing_operation_page Sewing
|
||||||
|
|
||||||
\b Sewing operation allows uniting several faces (possibly contained
|
\b Sewing operation allows uniting several faces (possibly contained
|
||||||
in a shell, solid or compound) into one shell while geometrically
|
in a shell, solid or compound) into one shell. Geometrically
|
||||||
coincident (within a specified tolerance) edges (or parts of edges) of
|
coincident (within a specified tolerance) edges (or parts of edges) of
|
||||||
different faces are replaced by one edge thus producing a shell of
|
different faces are replaced by one edge thus producing a shell of
|
||||||
faces with shared boundaries.<p>
|
faces with shared boundaries.<p>
|
||||||
This operation is similar to <b>New Entity - > Build - > Shell</b>
|
This operation is similar to <b>New Entity - > Build - > Shell</b>
|
||||||
operation, the difference is that with \b Sewing you can specify the
|
operation, the difference is that with \b Sewing you can specify the
|
||||||
tolerance and can get a non-manifold result. <p>
|
tolerance and get a non-manifold result. <p>
|
||||||
Possibility to create a non-manifold shell can be used e.g. to create a
|
The possibility to create a non-manifold shell can be used e.g. to create a
|
||||||
shell forming several closed domains and then to create several solids
|
shell forming several closed domains and then to create several solids
|
||||||
with shared boundaries from this shell.
|
with shared boundaries from this shell.
|
||||||
|
|
||||||
\note Geometrically coincident faces (or part of faces) won't be
|
\note Geometrically coincident faces (or parts of faces) will not be
|
||||||
replaced by one face during \b Sewing.
|
replaced by one face during \b Sewing.
|
||||||
|
|
||||||
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>.
|
||||||
|
@ -56,22 +56,22 @@ merge with neighboring edges.</li>
|
|||||||
<li><b>3D Tolerance</b> (DropSmallEdges.Tolerance3d) - defines minimum
|
<li><b>3D Tolerance</b> (DropSmallEdges.Tolerance3d) - defines minimum
|
||||||
possible distance between two parallel edges.</li>
|
possible distance between two parallel edges.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<li><b>Drop Small Solids</b> (DropSmallSolids) - either removes small
|
<li><b>Drop Small Solids</b> (DropSmallSolids) - removes small
|
||||||
solids or merges them with neighboring ones.</li>
|
solids or merges them with neighboring ones.</li>
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>Width factor tol.</b> (DropSmallSolids.WidthFactorThreshold) -
|
<li><b>Width factor tol.</b> (DropSmallSolids.WidthFactorThreshold) -
|
||||||
defines maximum value of <em>2V/S</em> of a solid which is
|
defines the maximum value of <em>2V/S</em> of a solid, which is
|
||||||
considered small, where \a V is volume and \a S is surface area of
|
considered small, where \a V is the volume and \a S is the surface area of
|
||||||
the solid.</li>
|
the solid.</li>
|
||||||
<li><b>Volume tol.</b> (DropSmallSolids.VolumeThreshold) - defines
|
<li><b>Volume tol.</b> (DropSmallSolids.VolumeThreshold) - defines
|
||||||
maximum volume of a solid which is considered small.</li>
|
the maximum volume of a solid, which is considered small.</li>
|
||||||
<li><b>To merge solids</b> (DropSmallSolids.MergeSolids) - if
|
<li><b>To merge solids</b> (DropSmallSolids.MergeSolids) - if
|
||||||
activated, small solids are removed, else small solids are merged to
|
activated, small solids are removed, else small solids are merged to
|
||||||
adjacent non-small solids or left untouched if cannot be merged.
|
adjacent non-small solids or left untouched if they cannot be merged.
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
If the both tolerances are activated a solid is considered small if
|
If the both tolerances are activated a solid is considered small if
|
||||||
it meets the both criteria.
|
it meets both criteria.
|
||||||
<li><b>Split Angle</b> (SplitAngle) - splits faces based on conical
|
<li><b>Split Angle</b> (SplitAngle) - splits faces based on conical
|
||||||
surfaces, surfaces of revolution and cylindrical surfaces in segments
|
surfaces, surfaces of revolution and cylindrical surfaces in segments
|
||||||
using a certain angle.</li>
|
using a certain angle.</li>
|
||||||
|
@ -15,22 +15,22 @@ Shared Shapes.</b> The following dialog box will appear.
|
|||||||
|
|
||||||
In this dialog:
|
In this dialog:
|
||||||
- <b>Name</b> is the base name of the resulting shapes.
|
- <b>Name</b> is the base name of the resulting shapes.
|
||||||
- <b>Shapes</b> are the shapes to fing shared sub-shapes of.
|
- <b>Shapes</b> are the shapes whose shared sub-shapes should be found.
|
||||||
- <b>Sub-shapes Type</b> is the type of required sub-shapes.
|
- <b>Sub-shapes Type</b> is the type of required sub-shapes.
|
||||||
- <b>Shared by all</b> option specifies what type of shared sub-shapes should be checked:
|
- <b>Shared by all</b> option specifies what type of shared sub-shapes should be checked:
|
||||||
- \b On: causes to search sub-shapes from the first input shape shared with all other input shapes;
|
- \b On: searches for sub-shapes from the first input shape shared with all other input shapes;
|
||||||
- \b Off: causes to search sub-shapes shared between couples of input shapes.
|
- \b Off: searches for sub-shapes shared between couples of input shapes.
|
||||||
|
|
||||||
\note For the case when "Shared by all" option is switched off - if an input list of shapes
|
\note For the case when "Shared by all" option is switched off - if an input list of shapes
|
||||||
contains single compound, the sub-shapes shared between all possible couples of its top-level shapes
|
contains a single compound, the sub-shapes shared between all possible couples of its top-level shapes
|
||||||
are searched; otherwise, only sub-shapes that are shared between first input shape and all rest input
|
are searched for; otherwise, only sub-shapes that are shared between the first input shape and
|
||||||
shapes are searched.
|
all other input shapes are searched.
|
||||||
|
|
||||||
<b>Advanced options:</b> \ref preview_anchor "Preview"
|
<b>Advanced options:</b> \ref preview_anchor "Preview"
|
||||||
|
|
||||||
<b>TUI Command:</b> <em> geompy.GetSharedShapesMulti( Shapes, Type ),</em>
|
<b>TUI Command:</b> <em> geompy.GetSharedShapesMulti( Shapes, Type ),</em>
|
||||||
<br> where \em Shapes is a list or compound of shapes to fing shared sub-
|
<br> where \em Shapes is a list or compound of shapes, whose shared sub-
|
||||||
shapes of and \em Type is the type of required sub-shapes.
|
shapes should be found and \em Type is the type of required sub-shapes.
|
||||||
|
|
||||||
Our <b>TUI Scripts</b> provide you with useful examples of the use of
|
Our <b>TUI Scripts</b> provide you with useful examples of the use of
|
||||||
Get Shared Shapes functionality:
|
Get Shared Shapes functionality:
|
||||||
|
83
doc/salome/gui/GEOM/input/size_models_range.doc
Normal file
83
doc/salome/gui/GEOM/input/size_models_range.doc
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
/*!
|
||||||
|
|
||||||
|
\page size_models_range Sizes of Models in Salome
|
||||||
|
|
||||||
|
\tableofcontents
|
||||||
|
|
||||||
|
In Salome and Open CASCADE Technology (OCCT), which is a modeling core
|
||||||
|
of Salome %GEOM module, any model has its location in the 3D-space and size.
|
||||||
|
|
||||||
|
This document defines the range of values (tolerances, locations
|
||||||
|
and sizes) that should be taken into account for any 3D model design.
|
||||||
|
|
||||||
|
It is not obligatory to create models within this range,
|
||||||
|
however, algorithms can fail or return unexpected results if the
|
||||||
|
recommendations are not followed.
|
||||||
|
|
||||||
|
\section sec1 Maximal Size of the Model
|
||||||
|
|
||||||
|
The Maximal Size of the model corresponds to the maximal diameter of
|
||||||
|
enclosed sphere built for the model. In OCCT any model has a location defined
|
||||||
|
relatively to the absolute origin. Thus the maximal diameter should be built
|
||||||
|
taking into account the model itself and its location.
|
||||||
|
|
||||||
|
In OCCT there are two tolerances: Tolerance Confusion (TolC)
|
||||||
|
and Tolerance Angular (TolA) (see OCCT Precision package for more details).
|
||||||
|
These values are used for geometric comparisons. However, they are not used inside
|
||||||
|
low-level algorithms (e.g. intersection), where more precise values are
|
||||||
|
used instead. The value TolC guarantees that the error associated with
|
||||||
|
the computations for a given geometric entity is not greater than TolC.
|
||||||
|
|
||||||
|
- TolC - precision value used to check the coincidence of two points
|
||||||
|
[by default 1.e-7];
|
||||||
|
- TolA - precision value used to check the equality of two angles
|
||||||
|
[by default 1.e-12].
|
||||||
|
|
||||||
|
For more information on tolerance definition please see
|
||||||
|
<a href="SALOME_BOA_PA.pdf">Chapter 4 of this document</a>. To see limitations
|
||||||
|
that are due to modeling errors or inaccuracies of tolerance usage please
|
||||||
|
refer to <a href="SALOME_BOA_PA.pdf">Chapter 9.2.2 of the same document</a>.
|
||||||
|
|
||||||
|
To provide robust geometric modeling the computations should be consistent,
|
||||||
|
i.e. the one tolerance value should be used for all computations. Thus, the
|
||||||
|
TolC and TolA values should be consistent:
|
||||||
|
|
||||||
|
<CENTER><B><PRE>Smax = TolC / TolA (1)</PRE></B></CENTER>
|
||||||
|
|
||||||
|
\image html tolerances.png "TolC, TolA and Maximal Size Consistency"
|
||||||
|
|
||||||
|
In accordance with <B>(1)</B> the Maximal Size for the Model is [by default]:
|
||||||
|
|
||||||
|
<CENTER><B><PRE>Smax = 1.e-7 / 1.e-12 = 1.e+5 (2)</PRE></B></CENTER>
|
||||||
|
|
||||||
|
\section sec2 Minimal Size of the Model
|
||||||
|
|
||||||
|
The Minimal Size of the Model is defined as the maximal diameter of enclosed
|
||||||
|
sphere built for the smallest BRep entity of the Model.
|
||||||
|
|
||||||
|
All models in OCCT are represented using double precision
|
||||||
|
floating point numbers. This representation contains approximately 14-16
|
||||||
|
significant digits.
|
||||||
|
|
||||||
|
From the experience, it is considered that the last four significant
|
||||||
|
digits contain rounding-off errors occurring during the computation. So
|
||||||
|
(taking into account the worst cases), there are ten reliable significant digits
|
||||||
|
for double precision floating point numbers. Having the estimation it is
|
||||||
|
possible to compute the value of the Minimal size of the model:
|
||||||
|
|
||||||
|
<CENTER><B><PRE>Smin=Smax / 1.e+10 (3)</PRE></B></CENTER>
|
||||||
|
|
||||||
|
In accordance with <B>(2)</B> for the default value it will be [by default]:
|
||||||
|
|
||||||
|
<CENTER><B><PRE>Smin=1.e-5. (4)</PRE></B></CENTER>
|
||||||
|
|
||||||
|
\section sec3 Full Range of Sizes
|
||||||
|
|
||||||
|
The values <B>Smax (2)</B>, <B>Smin (4)</B> are theoretical. Taking into
|
||||||
|
account the practical purposes of improving the reliability, the lower limit
|
||||||
|
should be restricted by one order. Thus, the full Range of Sizes of the Models
|
||||||
|
is:
|
||||||
|
|
||||||
|
<CENTER><B><PRE>[Smin, Smax] = [1.e-4, 1.e+5] (5)</PRE></B></CENTER>
|
||||||
|
|
||||||
|
*/
|
@ -21,24 +21,23 @@ In this dialog:
|
|||||||
<ul>
|
<ul>
|
||||||
<li> <b>Source Shape</b> is an object that is a source of non-topological data.</li>
|
<li> <b>Source Shape</b> is an object that is a source of non-topological data.</li>
|
||||||
<li> <b>Destination Shape</b> is a data destination object. </li>
|
<li> <b>Destination Shape</b> is a data destination object. </li>
|
||||||
<li> <b>Type of detection operation</b> is the method to search sub-shapes of
|
<li> <b>Type of detection operation</b> allows choosing how to search sub-shapes of the
|
||||||
<b>Source Shape</b> in <b>Destination Shape</b>. Data are transferred
|
<b>Source Shape</b> in the <b>Destination Shape</b>. The data are transferred
|
||||||
from these corresponding sub-shapes. This is a combo-box with the following
|
from these corresponding sub-shapes. The following methods are possible:
|
||||||
possible values:
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>Get In Place</b> - current implementation of Get In Place algorithm
|
<li><b>Get In Place</b> - the current implementation of Get In Place algorithm
|
||||||
(default value).</li>
|
(default value).</li>
|
||||||
<li><b>Get In Place (old)</b> - old implementation of Get In Place
|
<li><b>Get In Place (old)</b> - the old implementation of Get In Place
|
||||||
algorithm.</li>
|
algorithm.</li>
|
||||||
<li><b>Get In Place By History</b> - Get In Place By History algorithm.</li>
|
<li><b>Get In Place By History</b> - Get In Place By History algorithm.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
To copy data click on \b Apply or <b>Apply and Close</b> button. As the result
|
To copy the data click on \b Apply or <b>Apply and Close</b> button.
|
||||||
it is possible to see how many names and materials are copied as well as
|
It is possible to see how many names and materials are copied as well as
|
||||||
maximum number of names and materials available for copying. This information is
|
the maximum number of names and materials available for copying. This information is
|
||||||
provided on the following message box:
|
provided in the following message box:
|
||||||
|
|
||||||
\image html transfer_data2.png "Transfer Data Information"
|
\image html transfer_data2.png "Transfer Data Information"
|
||||||
|
|
||||||
|
@ -5,13 +5,13 @@
|
|||||||
This operation provides the list of types and quantities of all topological
|
This operation provides the list of types and quantities of all topological
|
||||||
entities, composing the selected geometrical object.
|
entities, composing the selected geometrical object.
|
||||||
|
|
||||||
For the \em COMPOUND or \em COMPSOLID shape, additionally the information about
|
The information about \em COMPOUND or \em COMPSOLID shapes additionally shows
|
||||||
"flat" content is shown - a number of "simple" top-level shapes enclosed into the compound.
|
"flat" content - the number of "simple" top-level shapes enclosed into the compound.
|
||||||
|
|
||||||
\image html measures8.png
|
\image html measures8.png
|
||||||
|
|
||||||
\note This dialog supports navigation through the selectable objects (in OCC 3D viewer only):
|
\note This dialog supports navigation through the selectable objects (in OCC 3D viewer only):
|
||||||
- Scroll mouse wheel with pressed \em Ctrl key or press \em "S", \em "P" keys when input focus is
|
- Scroll mouse wheel with pressed \em Ctrl key or press \em "S", \em "P" keys when the input focus is
|
||||||
in the viewer to navigate between selectable objects.
|
in the viewer to navigate between selectable objects.
|
||||||
- Press left mouse button to select an appropriate object to the dialog box.
|
- Press left mouse button to select an appropriate object to the dialog box.
|
||||||
.
|
.
|
||||||
|
@ -81,24 +81,24 @@ creation of other groups), or skip it by clicking \b Close button.
|
|||||||
|
|
||||||
\n The Result of the operation will be a \b GEOM_Object.
|
\n The Result of the operation will be a \b GEOM_Object.
|
||||||
|
|
||||||
The \b Filter controls allow to automatically pick up entites which satisfy specified
|
The \b Filter controls allow to automatically pick up entities, which satisfy specified
|
||||||
threshold value(s). The numerical functor for each sub-shape that is compared with
|
threshold value(s). The numerical functor for each sub-shape that is compared with
|
||||||
threshold value(s) is computed according to the shape's topological properties:
|
threshold value(s) is computed according to the shape's topological properties:
|
||||||
- length for edges and wires
|
- length for edges and wires;
|
||||||
- area for faces and shells
|
- area for faces and shells;
|
||||||
- volume for solids, compounds, compsolids
|
- volume for solids, compounds, compsolids.
|
||||||
|
|
||||||
Filtering capabilities are not available for vertices.
|
Filtering capabilities are not available for vertices.
|
||||||
|
|
||||||
In order to filter out some entities:
|
In order to filter out some entities:
|
||||||
- Activate one or two filtering controls by switching on corresponding check boxes;
|
- Activate one or two filtering controls by switching on the corresponding check boxes;
|
||||||
- Select required threshold comparator type; the following choices are available:
|
- Select the required threshold comparator type; the following choices are available:
|
||||||
- <b>Less Than</b> or <b>Equal or Less Than</b> for the first comparator;
|
- <b>Less Than</b> or <b>Equal or Less Than</b> for the first comparator;
|
||||||
- <b>Greater Than</b> or <b>Equal or Greater Than</b> for the second comparator;
|
- <b>Greater Than</b> or <b>Equal or Greater Than</b> for the second comparator;
|
||||||
- Enter required threshold value (values);
|
- Enter the required threshold value (values);
|
||||||
- Press \b Apply button in the \b Filter group.
|
- Press \b Apply button in the \b Filter group.
|
||||||
|
|
||||||
The entities which satisfy entered filtering parameters will be automatically highlighted
|
The entities, which satisfy the entered filtering parameters, will be automatically highlighted
|
||||||
in the 3D viewer.
|
in the 3D viewer.
|
||||||
|
|
||||||
\b Plot button into "Filter" group box provides an access
|
\b Plot button into "Filter" group box provides an access
|
||||||
|
@ -26,7 +26,10 @@ SALOME_CONFIGURE_FILE(static/header.html.in static/header.html)
|
|||||||
ADD_CUSTOM_TARGET(dev_docs ${DOXYGEN_EXECUTABLE})
|
ADD_CUSTOM_TARGET(dev_docs ${DOXYGEN_EXECUTABLE})
|
||||||
|
|
||||||
INSTALL(CODE "FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/GEOM)")
|
INSTALL(CODE "FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/GEOM)")
|
||||||
INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/GEOM DESTINATION ${SALOME_INSTALL_DOC}/tui)
|
INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/GEOM
|
||||||
|
DESTINATION ${SALOME_INSTALL_DOC}/tui
|
||||||
|
PATTERN "*.md5" EXCLUDE
|
||||||
|
PATTERN "*.map" EXCLUDE)
|
||||||
INSTALL(FILES images/head.png DESTINATION ${SALOME_INSTALL_DOC}/tui/GEOM)
|
INSTALL(FILES images/head.png DESTINATION ${SALOME_INSTALL_DOC}/tui/GEOM)
|
||||||
|
|
||||||
SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES GEOM)
|
SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES GEOM)
|
||||||
|
@ -226,6 +226,7 @@ module GEOM
|
|||||||
string operationName;
|
string operationName;
|
||||||
Parameters params;
|
Parameters params;
|
||||||
};
|
};
|
||||||
|
typedef sequence<CreationInformation> CreationInformationSeq;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Reporting on shape healing
|
* \brief Reporting on shape healing
|
||||||
@ -348,7 +349,7 @@ module GEOM
|
|||||||
/*!
|
/*!
|
||||||
* \brief Return name of operation and values of parameters used for object creation
|
* \brief Return name of operation and values of parameters used for object creation
|
||||||
*/
|
*/
|
||||||
CreationInformation GetCreationInformation();
|
CreationInformationSeq GetCreationInformation();
|
||||||
};
|
};
|
||||||
|
|
||||||
//# GEOM_Object
|
//# GEOM_Object
|
||||||
|
@ -1474,70 +1474,16 @@ bool AdvancedEngine_IOperations::MakePipeTShapePartition(Handle(GEOM_Object) the
|
|||||||
face_t->GetLastFunction()->SetDescription("");
|
face_t->GetLastFunction()->SetDescription("");
|
||||||
theShapes.push_back(face_t);
|
theShapes.push_back(face_t);
|
||||||
|
|
||||||
gp_Pnt aP2 = BRep_Tool::Pnt(TopoDS::Vertex(P2->GetValue()));
|
// Create a prism from edge_chan_inc
|
||||||
gp_Pnt aP5 = BRep_Tool::Pnt(TopoDS::Vertex(vi1->GetValue()));
|
Handle(GEOM_Object) aPrismDir = myBasicOperations->MakeVectorDXDYDZ(1., 1., 0.);
|
||||||
double deltaZ = aP2.Z() - aP5.Z();
|
|
||||||
// std::cerr << "Creating new point from vi1 with deltaZ = " << deltaZ << std::endl;
|
if (aPrismDir.IsNull()) {
|
||||||
Handle(GEOM_Object) P5bis = myTransformOperations->TranslateDXDYDZCopy(vi1, 0, 0, deltaZ);
|
SetErrorCode("Impossible to build Prism direction");
|
||||||
if (P5bis.IsNull()) {
|
|
||||||
SetErrorCode("Impossible to translate vertex");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
P5bis->GetLastFunction()->SetDescription("");
|
aPrismDir->GetLastFunction()->SetDescription("");
|
||||||
|
face_t2 = my3DPrimOperations->MakePrismVecH(edge_chan_inc, aPrismDir, theR2 + theW2);
|
||||||
|
|
||||||
gp_Pnt aP4 = BRep_Tool::Pnt(TopoDS::Vertex(P4->GetValue()));
|
|
||||||
gp_Pnt aP6 = BRep_Tool::Pnt(TopoDS::Vertex(vi2->GetValue()));
|
|
||||||
deltaZ = aP4.Z() - aP6.Z();
|
|
||||||
// std::cerr << "Creating new point from vi2 with deltaZ = " << deltaZ << std::endl;
|
|
||||||
Handle(GEOM_Object) P6bis = myTransformOperations->TranslateDXDYDZCopy(vi2, 0, 0, deltaZ);
|
|
||||||
if (P6bis.IsNull()) {
|
|
||||||
SetErrorCode("Impossible to translate vertex");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
P6bis->GetLastFunction()->SetDescription("");
|
|
||||||
|
|
||||||
// std::cerr << "Creating new line 1 from 2 previous points" << std::endl;
|
|
||||||
Handle(GEOM_Object) Cote_3 = myBasicOperations->MakeLineTwoPnt(P5bis, P2);
|
|
||||||
if (Cote_3.IsNull()) {
|
|
||||||
SetErrorCode("Impossible to build edge in thickness");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
Cote_3->GetLastFunction()->SetDescription("");
|
|
||||||
|
|
||||||
// std::cerr << "Creating new line 2 from 2 previous points" << std::endl;
|
|
||||||
Handle(GEOM_Object) Cote_4 = myBasicOperations->MakeLineTwoPnt(P6bis, P4);
|
|
||||||
if (Cote_4.IsNull()) {
|
|
||||||
SetErrorCode("Impossible to build edge in thickness");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
Cote_4->GetLastFunction()->SetDescription("");
|
|
||||||
|
|
||||||
// std::cerr << "Creating new line 3 from 2 previous points" << std::endl;
|
|
||||||
Handle(GEOM_Object) Cote_5 = myBasicOperations->MakeLineTwoPnt(P5bis, P6bis);
|
|
||||||
if (Cote_4.IsNull()) {
|
|
||||||
SetErrorCode("Impossible to build edge in thickness");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
Cote_5->GetLastFunction()->SetDescription("");
|
|
||||||
|
|
||||||
//std::list<Handle(GEOM_Object)> edgeList2;
|
|
||||||
//edgeList2.push_back(edge_chan_inc);
|
|
||||||
//edgeList2.push_back(Cote_3);
|
|
||||||
//edgeList2.push_back(Cote_5);
|
|
||||||
//edgeList2.push_back(Cote_4);
|
|
||||||
// std::cerr << "Creating wire 2" << std::endl;
|
|
||||||
//wire_t2 = myShapesOperations->MakeWire(edgeList2, 1e-7);
|
|
||||||
//if (wire_t2.IsNull()) {
|
|
||||||
// SetErrorCode("Impossible to build wire");
|
|
||||||
// return false;
|
|
||||||
//}
|
|
||||||
//wire_t2->GetLastFunction()->SetDescription("");
|
|
||||||
// std::cerr << "Creating face 2" << std::endl;
|
|
||||||
//face_t2 = myShapesOperations->MakeFace(wire_t2, false);
|
|
||||||
|
|
||||||
// Mantis issue 0021682
|
|
||||||
face_t2 = my3DPrimOperations->MakePrismVecH(edge_chan_inc, Cote_4, - (theR2 + theW2));
|
|
||||||
//face_t2 = my3DPrimOperations->MakePrismVecH(edge_chan_inc, Cote_4, - 2.0*theR2);
|
|
||||||
if (face_t2.IsNull()) {
|
if (face_t2.IsNull()) {
|
||||||
SetErrorCode("Impossible to build face");
|
SetErrorCode("Impossible to build face");
|
||||||
return false;
|
return false;
|
||||||
|
@ -129,7 +129,7 @@
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>INTERNAL_FACES</source>
|
<source>INTERNAL_FACES</source>
|
||||||
<translation>内部の顔</translation>
|
<translation>内部の面</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
<name>BREPPlugin_GUI</name>
|
<name>BREPPlugin_GUI</name>
|
||||||
<message>
|
<message>
|
||||||
<source>BREP_FILES</source>
|
<source>BREP_FILES</source>
|
||||||
<translation>BREPファイル</translation>
|
<translation>BREP ファイル ( *.brep )</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>EXPORT_TITLE</source>
|
<source>EXPORT_TITLE</source>
|
||||||
|
@ -613,9 +613,9 @@ void BasicGUI_PointDlg::SetEditCurrentArgument()
|
|||||||
}
|
}
|
||||||
send->setDown(true);
|
send->setDown(true);
|
||||||
|
|
||||||
if ((send == GroupLineIntersection->PushButton1 ||
|
// if ((send == GroupLineIntersection->PushButton1 ||
|
||||||
send == GroupLineIntersection->PushButton2) && !myBusy)
|
// send == GroupLineIntersection->PushButton2) && !myBusy)
|
||||||
SelectionIntoArgument();
|
// SelectionIntoArgument();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -95,9 +95,11 @@
|
|||||||
// be merged. The edges can be merged if:
|
// be merged. The edges can be merged if:
|
||||||
// 1. They belong to same faces.
|
// 1. They belong to same faces.
|
||||||
// 2. They either both seam or both not seam on each face.
|
// 2. They either both seam or both not seam on each face.
|
||||||
// 3. They are based on coincident lines, or:
|
// 3. There are no another edges (e.g. seam) on each common face
|
||||||
// 4. They are based on coincident circles, or:
|
// that are connected to the common vertex of two edges.
|
||||||
// 5. They are based on either Bezier of BSplines.
|
// 4. They are based on coincident lines, or:
|
||||||
|
// 5. They are based on coincident circles, or:
|
||||||
|
// 6. They are based on either Bezier of BSplines.
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
static Standard_Boolean IsToMerge
|
static Standard_Boolean IsToMerge
|
||||||
(const TopoDS_Edge &theEdge1,
|
(const TopoDS_Edge &theEdge1,
|
||||||
@ -108,7 +110,6 @@ static Standard_Boolean IsToMerge
|
|||||||
Standard_Boolean aResult = Standard_False;
|
Standard_Boolean aResult = Standard_False;
|
||||||
Standard_Boolean isDegen1 = BRep_Tool::Degenerated(theEdge1);
|
Standard_Boolean isDegen1 = BRep_Tool::Degenerated(theEdge1);
|
||||||
Standard_Boolean isDegen2 = BRep_Tool::Degenerated(theEdge2);
|
Standard_Boolean isDegen2 = BRep_Tool::Degenerated(theEdge2);
|
||||||
Standard_Boolean isCompareGeom = Standard_False;
|
|
||||||
|
|
||||||
if (isDegen1 && isDegen2) {
|
if (isDegen1 && isDegen2) {
|
||||||
// Both of edges are degenerated.
|
// Both of edges are degenerated.
|
||||||
@ -141,6 +142,44 @@ static Standard_Boolean IsToMerge
|
|||||||
Standard_Boolean isSeam2 = BRep_Tool::IsClosed(theEdge2, aFace1);
|
Standard_Boolean isSeam2 = BRep_Tool::IsClosed(theEdge2, aFace1);
|
||||||
|
|
||||||
isSame = (isSeam1 && isSeam2) || (isSeam1 == isSeam2);
|
isSame = (isSeam1 && isSeam2) || (isSeam1 == isSeam2);
|
||||||
|
|
||||||
|
if (isSame) {
|
||||||
|
// Check if there are no other edges (e.g. seam) on this face
|
||||||
|
// that are connected to the common vertex.
|
||||||
|
TopoDS_Vertex aVCommon;
|
||||||
|
|
||||||
|
if (TopExp::CommonVertex(theEdge1, theEdge2, aVCommon)) {
|
||||||
|
TopTools_IndexedDataMapOfShapeListOfShape aMapVE;
|
||||||
|
|
||||||
|
TopExp::MapShapesAndAncestors
|
||||||
|
(aFace1, TopAbs_VERTEX, TopAbs_EDGE, aMapVE);
|
||||||
|
|
||||||
|
if (aMapVE.Contains(aVCommon)) {
|
||||||
|
TopTools_ListIteratorOfListOfShape
|
||||||
|
anItE(aMapVE.FindFromKey(aVCommon));
|
||||||
|
|
||||||
|
for (; anItE.More(); anItE.Next()) {
|
||||||
|
const TopoDS_Shape &anEdge = anItE.Value();
|
||||||
|
|
||||||
|
if (!theEdge1.IsSame(anEdge) &&
|
||||||
|
!theEdge2.IsSame(anEdge)) {
|
||||||
|
// There is another edge that shares the common vertex.
|
||||||
|
// Nothing to merge.
|
||||||
|
isSame = Standard_False;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Common vertex doesn't belong to the face.
|
||||||
|
// Nothing to merge. NEVERREACHED.
|
||||||
|
isSame = Standard_False;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// No common vertex. Nothing to merge. NEVERREACHED.
|
||||||
|
isSame = Standard_False;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -582,7 +582,7 @@ void CurveCreator_Utils::setSelectedPoints( Handle(AIS_InteractiveContext) theCo
|
|||||||
for( aSelection->Init(); aSelection->More(); aSelection->Next() )
|
for( aSelection->Init(); aSelection->More(); aSelection->Next() )
|
||||||
{
|
{
|
||||||
#if OCC_VERSION_LARGE > 0x06080100
|
#if OCC_VERSION_LARGE > 0x06080100
|
||||||
const SelectMgr_HSensitiveEntity aHSenEntity = aSelection->Sensitive();
|
const Handle(SelectMgr_SensitiveEntity) aHSenEntity = aSelection->Sensitive();
|
||||||
if( aHSenEntity.IsNull() )
|
if( aHSenEntity.IsNull() )
|
||||||
continue;
|
continue;
|
||||||
Handle_SelectBasics_SensitiveEntity aSenEntity = aHSenEntity->BaseSensitive();
|
Handle_SelectBasics_SensitiveEntity aSenEntity = aHSenEntity->BaseSensitive();
|
||||||
|
@ -31,16 +31,14 @@
|
|||||||
<source>UPDATE</source>
|
<source>UPDATE</source>
|
||||||
<translation>Mise à jour</translation>
|
<translation>Mise à jour</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
|
||||||
<context>
|
|
||||||
<name>DependencyTree_ViewModel</name>
|
<name>DependencyTree_ViewModel</name>
|
||||||
<message>
|
<message>
|
||||||
<source>MEN_REBUILD_THE_TREE</source>
|
<source>MEN_REBUILD_THE_TREE</source>
|
||||||
<translation type="unfinished">Rebuild the tree</translation>
|
<translation>Reconstruire l'arbre</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>MEN_REDUCE_STUDY</source>
|
<source>MEN_REDUCE_STUDY</source>
|
||||||
<translation type="unfinished">Reduce study</translation>
|
<translation>Réduire l'étude</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
@ -5,40 +5,40 @@
|
|||||||
<name>DependencyTree_View</name>
|
<name>DependencyTree_View</name>
|
||||||
<message>
|
<message>
|
||||||
<source>DEPENDENCY_TREE</source>
|
<source>DEPENDENCY_TREE</source>
|
||||||
<translation type="unfinished">Dependency Tree</translation>
|
<translation>依存関係ツリー</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>MOVE_NODES</source>
|
<source>MOVE_NODES</source>
|
||||||
<translation type="unfinished">Move nodes</translation>
|
<translation>ノードの移動</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>HIERARCHY_DEPTH</source>
|
<source>HIERARCHY_DEPTH</source>
|
||||||
<translation type="unfinished">Hierarchy depth </translation>
|
<translation>階層の深さ</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>DISPLAY_ASCENDANTS</source>
|
<source>DISPLAY_ASCENDANTS</source>
|
||||||
<translation type="unfinished">Display ascendants</translation>
|
<translation>上位の表示</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>DISPLAY_DESCENDANTS</source>
|
<source>DISPLAY_DESCENDANTS</source>
|
||||||
<translation type="unfinished">Display descendants</translation>
|
<translation>下位の表示</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>SHOW_ALL</source>
|
<source>SHOW_ALL</source>
|
||||||
<translation type="unfinished">Show all</translation>
|
<translation>すべてを表示</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>UPDATE</source>
|
<source>UPDATE</source>
|
||||||
<translation type="unfinished">Update</translation>
|
<translation>更新</translation>
|
||||||
</message>
|
</message>
|
||||||
<name>DependencyTree_ViewModel</name>
|
<name>DependencyTree_ViewModel</name>
|
||||||
<message>
|
<message>
|
||||||
<source>MEN_REBUILD_THE_TREE</source>
|
<source>MEN_REBUILD_THE_TREE</source>
|
||||||
<translation type="unfinished">Rebuild the tree</translation>
|
<translation>ツリーの再構築</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>MEN_REDUCE_STUDY</source>
|
<source>MEN_REDUCE_STUDY</source>
|
||||||
<translation type="unfinished">Reduce study</translation>
|
<translation>スタディの削減</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
@ -26,7 +26,8 @@
|
|||||||
|
|
||||||
// SALOME includes
|
// SALOME includes
|
||||||
#include "EntityGUI_FeatureDetectorDlg.h"
|
#include "EntityGUI_FeatureDetectorDlg.h"
|
||||||
#include <ShapeRec_FeatureDetector.hxx>
|
#include "ShapeRec_FeatureDetector.hxx"
|
||||||
|
#include "GEOM_Constants.h"
|
||||||
|
|
||||||
#include <OCCViewer_ViewWindow.h>
|
#include <OCCViewer_ViewWindow.h>
|
||||||
#include <OCCViewer_ViewManager.h>
|
#include <OCCViewer_ViewManager.h>
|
||||||
@ -399,7 +400,6 @@ void EntityGUI_FeatureDetectorDlg::SelectionIntoArgument()
|
|||||||
|
|
||||||
// TODO supprimer les lignes qui ne servent à rien le cas échéant
|
// TODO supprimer les lignes qui ne servent à rien le cas échéant
|
||||||
SUIT_ViewWindow* theViewWindow = getDesktop()->activeWindow();
|
SUIT_ViewWindow* theViewWindow = getDesktop()->activeWindow();
|
||||||
std::map< std::string , std::vector<Handle(AIS_InteractiveObject)> >::iterator AISit;
|
|
||||||
SOCC_Viewer* soccViewer = (SOCC_Viewer*)(theViewWindow->getViewManager()->getViewModel());
|
SOCC_Viewer* soccViewer = (SOCC_Viewer*)(theViewWindow->getViewManager()->getViewModel());
|
||||||
|
|
||||||
if (!myEditCurrentArgument->isEnabled())
|
if (!myEditCurrentArgument->isEnabled())
|
||||||
@ -433,24 +433,20 @@ void EntityGUI_FeatureDetectorDlg::SelectionIntoArgument()
|
|||||||
|
|
||||||
if ( myEditCurrentArgument == mySelectionGroup->LineEdit1 ) {
|
if ( myEditCurrentArgument == mySelectionGroup->LineEdit1 ) {
|
||||||
myFace = aSelectedObject;
|
myFace = aSelectedObject;
|
||||||
AISit = soccViewer->entry2aisobjects.find(myFaceEntry.toStdString());
|
|
||||||
if (AISit == soccViewer->entry2aisobjects.end())
|
SalomeApp_Study* study = dynamic_cast<SalomeApp_Study*>( SUIT_Session::session()->activeApplication()->activeStudy() );
|
||||||
|
if ( !study ) return;
|
||||||
|
LightApp_Application* app = ::qobject_cast<LightApp_Application*>( study->application() );
|
||||||
|
if ( !app ) return;
|
||||||
|
SUIT_ViewManager* vm = app->activeViewManager();
|
||||||
|
if ( !vm ) return;
|
||||||
|
PropMap propMap = study->getObjectProperties( vm->getGlobalId(), myFaceEntry );
|
||||||
|
QString theImgFileName = propMap.value( GEOM::propertyName( GEOM::Texture ) ).toString();
|
||||||
|
if ( theImgFileName.isEmpty() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Handle(AIS_InteractiveObject) myAIS = (*AISit).second[0];
|
|
||||||
Handle(GEOM_AISShape) myAISShape;
|
|
||||||
if( myAIS->IsInstance( STANDARD_TYPE(GEOM_AISShape) ) ) {
|
|
||||||
myAISShape = Handle(GEOM_AISShape)::DownCast( myAIS );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return ;
|
|
||||||
|
|
||||||
std::string theImgFileName = myAISShape->TextureFile();
|
|
||||||
if ( theImgFileName == "" )
|
|
||||||
return ;
|
|
||||||
|
|
||||||
// Setting the image caracteristics
|
// Setting the image caracteristics
|
||||||
myDetector->SetPath( theImgFileName );
|
myDetector->SetPath( theImgFileName.toStdString() );
|
||||||
height = myDetector->GetImgHeight();
|
height = myDetector->GetImgHeight();
|
||||||
width = myDetector->GetImgWidth();
|
width = myDetector->GetImgWidth();
|
||||||
pictureLeft = -0.5 * width; // X coordinate of the top left corner of the background image in the view
|
pictureLeft = -0.5 * width; // X coordinate of the top left corner of the background image in the view
|
||||||
|
@ -188,9 +188,9 @@ bool EntityGUI_PictureImportDlg::execute( ObjectList& objects )
|
|||||||
delete pixmap;
|
delete pixmap;
|
||||||
|
|
||||||
GEOM::GEOM_Object_var P1 = aBasicOperations->MakePointXYZ( -0.5*width, -0.5*height, 0 );
|
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 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 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 P4 = aBasicOperations->MakePointXYZ( -0.5*width, 0.5*height, 0 );
|
||||||
|
|
||||||
GEOM::GEOM_Object_var aFace = aBlocksOperations->MakeQuad4Vertices(P1,P2,P3,P4);
|
GEOM::GEOM_Object_var aFace = aBlocksOperations->MakeQuad4Vertices(P1,P2,P3,P4);
|
||||||
getDisplayer()->SetDisplayMode(3);
|
getDisplayer()->SetDisplayMode(3);
|
||||||
|
@ -162,6 +162,7 @@ EntityGUI_PolylineDlg::EntityGUI_PolylineDlg
|
|||||||
EntityGUI_PolylineDlg::~EntityGUI_PolylineDlg()
|
EntityGUI_PolylineDlg::~EntityGUI_PolylineDlg()
|
||||||
{
|
{
|
||||||
erasePreview();
|
erasePreview();
|
||||||
|
myEditorWidget->SetViewer2DMode(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
@ -381,16 +382,6 @@ bool EntityGUI_PolylineDlg::ClickOnApply()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
|
||||||
// function : ClickOnCancel()
|
|
||||||
// purpose :
|
|
||||||
//=================================================================================
|
|
||||||
void EntityGUI_PolylineDlg::ClickOnCancel()
|
|
||||||
{
|
|
||||||
myEditorWidget->SetViewer2DMode(false);
|
|
||||||
GEOMBase_Skeleton::ClickOnCancel();
|
|
||||||
}
|
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
// function : processStartedSubOperation
|
// function : processStartedSubOperation
|
||||||
// purpose :
|
// purpose :
|
||||||
|
@ -152,7 +152,6 @@ protected slots:
|
|||||||
|
|
||||||
void ClickOnOk();
|
void ClickOnOk();
|
||||||
bool ClickOnApply();
|
bool ClickOnApply();
|
||||||
void ClickOnCancel();
|
|
||||||
void processStartedSubOperation( QWidget*, bool );
|
void processStartedSubOperation( QWidget*, bool );
|
||||||
void processFinishedSubOperation( QWidget* );
|
void processFinishedSubOperation( QWidget* );
|
||||||
void SetEditCurrentArgument( bool );
|
void SetEditCurrentArgument( bool );
|
||||||
|
@ -634,13 +634,12 @@ void EntityGUI_SketcherDlg::RectClicked()
|
|||||||
GroupRect->show();
|
GroupRect->show();
|
||||||
|
|
||||||
myX1=0;
|
myX1=0;
|
||||||
myX2=10;
|
|
||||||
myY1=0;
|
|
||||||
myY2=10;
|
|
||||||
|
|
||||||
GroupRect->SpinBox_DX1->setValue(myX1);
|
GroupRect->SpinBox_DX1->setValue(myX1);
|
||||||
|
myY1=0;
|
||||||
GroupRect->SpinBox_DY1->setValue(myY1);
|
GroupRect->SpinBox_DY1->setValue(myY1);
|
||||||
|
myX2=10;
|
||||||
GroupRect->SpinBox_DX2->setValue(myX2);
|
GroupRect->SpinBox_DX2->setValue(myX2);
|
||||||
|
myY2=10;
|
||||||
GroupRect->SpinBox_DY2->setValue(myY2);
|
GroupRect->SpinBox_DY2->setValue(myY2);
|
||||||
|
|
||||||
resize( minimumSizeHint() );
|
resize( minimumSizeHint() );
|
||||||
|
@ -493,18 +493,17 @@ Handle(TColStd_HSequenceOfTransient) GEOM_BaseObject::GetLastDependency()
|
|||||||
*/
|
*/
|
||||||
//================================================================================
|
//================================================================================
|
||||||
|
|
||||||
Handle(TFunction_Driver) GEOM_BaseObject::GetCreationDriver()
|
Handle(TFunction_Driver) GEOM_BaseObject::GetCreationDriver(int funNb)
|
||||||
{
|
{
|
||||||
Handle(TFunction_Driver) aDriver;
|
Handle(TFunction_Driver) driver;
|
||||||
|
Handle(GEOM_Function) function = GetFunction(funNb);
|
||||||
Handle(GEOM_Function) function = GetFunction(1);
|
|
||||||
if ( !function.IsNull() )
|
if ( !function.IsNull() )
|
||||||
{
|
{
|
||||||
Standard_GUID aGUID = function->GetDriverGUID();
|
Standard_GUID aGUID = function->GetDriverGUID();
|
||||||
if ( TFunction_DriverTable::Get()->FindDriver(aGUID, aDriver))
|
if ( TFunction_DriverTable::Get()->FindDriver(aGUID, driver ))
|
||||||
aDriver->Init( function->GetEntry() );
|
driver->Init( function->GetEntry() );
|
||||||
}
|
}
|
||||||
return aDriver;
|
return driver;
|
||||||
}
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
@ -31,6 +31,8 @@
|
|||||||
#include <TDF_Label.hxx>
|
#include <TDF_Label.hxx>
|
||||||
#include <TDataStd_TreeNode.hxx>
|
#include <TDataStd_TreeNode.hxx>
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
class GEOM_BaseObject;
|
class GEOM_BaseObject;
|
||||||
class Handle(TFunction_Driver);
|
class Handle(TFunction_Driver);
|
||||||
class GEOM_Engine;
|
class GEOM_Engine;
|
||||||
@ -146,8 +148,8 @@ public:
|
|||||||
//Returns the dependencies of the last function
|
//Returns the dependencies of the last function
|
||||||
Standard_EXPORT Handle(TColStd_HSequenceOfTransient) GetLastDependency();
|
Standard_EXPORT Handle(TColStd_HSequenceOfTransient) GetLastDependency();
|
||||||
|
|
||||||
//Returns a driver creator of this object
|
//Returns drivers creators of this object
|
||||||
Standard_EXPORT Handle(TFunction_Driver) GetCreationDriver();
|
Standard_EXPORT Handle(TFunction_Driver) GetCreationDriver(int funNb);
|
||||||
|
|
||||||
//###########################################################
|
//###########################################################
|
||||||
// Internal methods
|
// Internal methods
|
||||||
|
@ -222,6 +222,19 @@ Standard_Integer GEOMAlgo_AlgoTools::BuildPCurveForEdgeOnFace
|
|||||||
return iRet;
|
return iRet;
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
|
#if OCC_VERSION_LARGE > 0x06080000
|
||||||
|
// Try to copy PCurve from old edge to the new one.
|
||||||
|
iRet = BOPTools_AlgoTools2D::AttachExistingPCurve(aEold, aEnew, aF, aCtx);
|
||||||
|
|
||||||
|
if (iRet) {
|
||||||
|
// Do PCurve using projection algorithm.
|
||||||
|
iRet = 0;
|
||||||
|
} else {
|
||||||
|
// The PCurve is attached successfully.
|
||||||
|
return iRet;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
//
|
||||||
BOPTools_AlgoTools2D::BuildPCurveForEdgeOnFace(aEnew, aF);
|
BOPTools_AlgoTools2D::BuildPCurveForEdgeOnFace(aEnew, aF);
|
||||||
aC2D=BRep_Tool::CurveOnSurface(aEnew, aF, aT1, aT2);
|
aC2D=BRep_Tool::CurveOnSurface(aEnew, aF, aT1, aT2);
|
||||||
if (aC2D.IsNull()){
|
if (aC2D.IsNull()){
|
||||||
|
@ -126,93 +126,75 @@ Standard_Integer GEOMAlgo_GetInPlaceAPI::GetInPlaceOld
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
TopoDS_Shape aPntShape;
|
// Check shape type.
|
||||||
TopoDS_Vertex aVertex;
|
TopAbs_ShapeEnum iType = GEOMUtils::GetTypeOfSimplePart(theWhat);
|
||||||
bool isFound = false;
|
|
||||||
TopAbs_ShapeEnum iType = TopAbs_SOLID;
|
|
||||||
//Standard_Real aWhat_Mass = 0., aWhere_Mass = 0.;
|
|
||||||
Standard_Real tab_aWhat[4], tab_aWhere[4];
|
|
||||||
Standard_Real dl_l = 1e-3;
|
|
||||||
Standard_Real min_l, Tol_0D, Tol_1D, Tol_2D, Tol_3D, Tol_Mass;
|
|
||||||
Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax;
|
|
||||||
Bnd_Box BoundingBox;
|
|
||||||
gp_Pnt aPnt, aPnt_aWhat, tab_Pnt[2];
|
|
||||||
GProp_GProps aProps;
|
|
||||||
|
|
||||||
iType = GEOMUtils::GetTypeOfSimplePart(theWhat);
|
|
||||||
if (iType == TopAbs_SHAPE) {
|
if (iType == TopAbs_SHAPE) {
|
||||||
// Error: An attempt to extract a shape of not supported type.
|
// Error: An attempt to extract a shape of not supported type.
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
TopExp_Explorer Exp_aWhat ( theWhat, iType );
|
// Compute confusion tolerance.
|
||||||
TopExp_Explorer Exp_aWhere ( theWhere, iType );
|
Standard_Real aTolConf = Precision::Confusion();
|
||||||
TopExp_Explorer Exp_Edge ( theWhere, TopAbs_EDGE );
|
Standard_Integer i;
|
||||||
|
|
||||||
// Find the shortest edge in theShapeWhere shape
|
for (i = 0; i < 2; ++i) {
|
||||||
BRepBndLib::Add(theWhere, BoundingBox);
|
TopExp_Explorer anExp(i == 0 ? theWhere : theWhat, TopAbs_VERTEX);
|
||||||
BoundingBox.Get(aXmin, aYmin, aZmin, aXmax, aYmax, aZmax);
|
|
||||||
min_l = fabs(aXmax - aXmin);
|
for (; anExp.More(); anExp.Next()) {
|
||||||
if( min_l < fabs(aYmax - aYmin) ) min_l = fabs(aYmax - aYmin);
|
const TopoDS_Vertex aVtx = TopoDS::Vertex(anExp.Current());
|
||||||
if( min_l < fabs(aZmax - aZmin) ) min_l = fabs(aZmax - aZmin);
|
const Standard_Real aTolVtx = BRep_Tool::Tolerance(aVtx);
|
||||||
min_l /= dl_l;
|
|
||||||
// Mantis issue 0020908 BEGIN
|
if (aTolVtx > aTolConf) {
|
||||||
if (!Exp_Edge.More()) {
|
aTolConf = aTolVtx;
|
||||||
min_l = Precision::Confusion();
|
}
|
||||||
}
|
|
||||||
// Mantis issue 0020908 END
|
|
||||||
for ( Standard_Integer nbEdge = 0; Exp_Edge.More(); Exp_Edge.Next(), nbEdge++ ) {
|
|
||||||
TopExp_Explorer Exp_Vertex( Exp_Edge.Current(), TopAbs_VERTEX);
|
|
||||||
for ( Standard_Integer nbVertex = 0; Exp_Vertex.More(); Exp_Vertex.Next(), nbVertex++ ) {
|
|
||||||
aPnt = BRep_Tool::Pnt( TopoDS::Vertex( Exp_Vertex.Current() ) );
|
|
||||||
tab_Pnt[nbVertex] = aPnt;
|
|
||||||
}
|
|
||||||
if ( ! tab_Pnt[0].IsEqual(tab_Pnt[1], dl_l) ) {
|
|
||||||
BRepGProp::LinearProperties(Exp_Edge.Current(), aProps);
|
|
||||||
if ( aProps.Mass() < min_l ) min_l = aProps.Mass();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Compute tolerances
|
// Compute mass tolerance.
|
||||||
Tol_0D = dl_l;
|
Bnd_Box aBoundingBox;
|
||||||
Tol_1D = dl_l * min_l;
|
Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax;
|
||||||
Tol_2D = dl_l * ( min_l * min_l) * ( 2. + dl_l);
|
Standard_Real aMassTol;
|
||||||
Tol_3D = dl_l * ( min_l * min_l * min_l ) * ( 3. + (3 * dl_l) + (dl_l * dl_l) );
|
|
||||||
|
|
||||||
if (Tol_0D < Precision::Confusion()) Tol_0D = Precision::Confusion();
|
BRepBndLib::Add(theWhere, aBoundingBox);
|
||||||
if (Tol_1D < Precision::Confusion()) Tol_1D = Precision::Confusion();
|
BRepBndLib::Add(theWhat, aBoundingBox);
|
||||||
if (Tol_2D < Precision::Confusion()) Tol_2D = Precision::Confusion();
|
aBoundingBox.Get(aXmin, aYmin, aZmin, aXmax, aYmax, aZmax);
|
||||||
if (Tol_3D < Precision::Confusion()) Tol_3D = Precision::Confusion();
|
aMassTol = Max(aXmax - aXmin, aYmax - aYmin);
|
||||||
|
aMassTol = Max(aMassTol, aZmax - aZmin);
|
||||||
|
aMassTol *= aTolConf;
|
||||||
|
|
||||||
Tol_Mass = Tol_3D;
|
// Compute the result.
|
||||||
if ( iType == TopAbs_VERTEX ) Tol_Mass = Tol_0D;
|
TopExp_Explorer Exp_aWhat (theWhat, iType);
|
||||||
else if ( iType == TopAbs_EDGE ) Tol_Mass = Tol_1D;
|
TopExp_Explorer Exp_aWhere (theWhere, iType);
|
||||||
else if ( iType == TopAbs_FACE ) Tol_Mass = Tol_2D;
|
Standard_Real tab_aWhat[4], tab_aWhere[4];
|
||||||
|
gp_Pnt aPnt, aPnt_aWhat;
|
||||||
// Searching for the sub-shapes inside the ShapeWhere shape
|
TopoDS_Shape aPntShape;
|
||||||
|
TopoDS_Vertex aVertex;
|
||||||
|
bool isFound = false;
|
||||||
TopTools_MapOfShape map_aWhere;
|
TopTools_MapOfShape map_aWhere;
|
||||||
for ( Exp_aWhere.ReInit(); Exp_aWhere.More(); Exp_aWhere.Next() ) {
|
|
||||||
|
for (; Exp_aWhere.More(); Exp_aWhere.Next()) {
|
||||||
if (!map_aWhere.Add(Exp_aWhere.Current()))
|
if (!map_aWhere.Add(Exp_aWhere.Current()))
|
||||||
continue; // skip repeated shape to avoid mass addition
|
continue; // skip repeated shape to avoid mass addition
|
||||||
GetShapeProperties( Exp_aWhere.Current(), tab_aWhere, aPnt );
|
GetShapeProperties( Exp_aWhere.Current(), tab_aWhere, aPnt );
|
||||||
for ( Exp_aWhat.ReInit(); Exp_aWhat.More(); Exp_aWhat.Next() ) {
|
for ( Exp_aWhat.ReInit(); Exp_aWhat.More(); Exp_aWhat.Next() ) {
|
||||||
GetShapeProperties( Exp_aWhat.Current(), tab_aWhat, aPnt_aWhat );
|
GetShapeProperties( Exp_aWhat.Current(), tab_aWhat, aPnt_aWhat );
|
||||||
if ( fabs(tab_aWhat[3] - tab_aWhere[3]) <= Tol_Mass && aPnt_aWhat.Distance(aPnt) <= Tol_1D )
|
if (fabs(tab_aWhat[3] - tab_aWhere[3]) <= aMassTol && aPnt_aWhat.Distance(aPnt) <= aTolConf)
|
||||||
isFound = true;
|
isFound = true;
|
||||||
else {
|
else {
|
||||||
if ( (tab_aWhat[3] - tab_aWhere[3]) > Tol_Mass ) {
|
if ((tab_aWhat[3] - tab_aWhere[3]) > aMassTol) {
|
||||||
aPntShape = BRepBuilderAPI_MakeVertex( aPnt ).Shape();
|
aPntShape = BRepBuilderAPI_MakeVertex( aPnt ).Shape();
|
||||||
aVertex = TopoDS::Vertex( aPntShape );
|
aVertex = TopoDS::Vertex( aPntShape );
|
||||||
BRepExtrema_DistShapeShape aWhereDistance ( aVertex, Exp_aWhere.Current() );
|
BRepExtrema_DistShapeShape aWhereDistance ( aVertex, Exp_aWhere.Current() );
|
||||||
BRepExtrema_DistShapeShape aWhatDistance ( aVertex, Exp_aWhat.Current() );
|
BRepExtrema_DistShapeShape aWhatDistance ( aVertex, Exp_aWhat.Current() );
|
||||||
if ( aWhereDistance.IsDone() && aWhatDistance.IsDone() &&
|
if (aWhereDistance.IsDone() && aWhatDistance.IsDone() &&
|
||||||
fabs(aWhereDistance.Value() - aWhatDistance.Value()) <= Tol_1D )
|
fabs(aWhereDistance.Value() - aWhatDistance.Value()) <= aTolConf)
|
||||||
{
|
{
|
||||||
// 0020162: "EDF 961 GEOM : Getinplace is getting additionnal orthogonal faces"
|
// 0020162: "EDF 961 GEOM : Getinplace is getting additionnal orthogonal faces"
|
||||||
// aVertex must be projected to the same point on Where and on What
|
// aVertex must be projected to the same point on Where and on What
|
||||||
gp_Pnt pOnWhat = aWhatDistance.PointOnShape2(1);
|
gp_Pnt pOnWhat = aWhatDistance.PointOnShape2(1);
|
||||||
gp_Pnt pOnWhere = aWhereDistance.PointOnShape2(1);
|
gp_Pnt pOnWhere = aWhereDistance.PointOnShape2(1);
|
||||||
isFound = ( pOnWhat.Distance(pOnWhere) <= Tol_1D );
|
isFound = (pOnWhat.Distance(pOnWhere) <= aTolConf);
|
||||||
if ( isFound && iType == TopAbs_FACE )
|
if ( isFound && iType == TopAbs_FACE )
|
||||||
{
|
{
|
||||||
// check normals at pOnWhat and pOnWhere
|
// check normals at pOnWhat and pOnWhere
|
||||||
|
@ -424,19 +424,18 @@ void GEOMAlgo_ShapeInfoFiller::FillDetails(const TopoDS_Face& aF,
|
|||||||
aPx[i]=aInfoEx.Location();
|
aPx[i]=aInfoEx.Location();
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
|
Standard_Boolean isRectangle = Standard_True;
|
||||||
for (i=0; i<4; ++i) {
|
for (i=0; i<4; ++i) {
|
||||||
j=(i==3) ? 0 : i+1;
|
j=(i==3) ? 0 : i+1;
|
||||||
aDot=aDx[i]*aDx[j];
|
aDot=aDx[i]*aDx[j];
|
||||||
if (fabs (aDot) > myTolerance) {
|
if (fabs (aDot) > myTolerance) {
|
||||||
aInfo.SetKindOfName(GEOMAlgo_KN_QUADRANGLE);
|
isRectangle = Standard_False;
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
// rectangle
|
// rectangle
|
||||||
aInfo.SetKindOfName(GEOMAlgo_KN_RECTANGLE);
|
// shift location to the center
|
||||||
//
|
|
||||||
// shift location to the center and calc. sizes
|
|
||||||
aXYZc.SetCoord(0.,0.,0.);
|
aXYZc.SetCoord(0.,0.,0.);
|
||||||
TopExp::MapShapes(aF, TopAbs_VERTEX, aMV);
|
TopExp::MapShapes(aF, TopAbs_VERTEX, aMV);
|
||||||
for (i=1; i<=aNbV; ++i) {
|
for (i=1; i<=aNbV; ++i) {
|
||||||
@ -448,33 +447,41 @@ void GEOMAlgo_ShapeInfoFiller::FillDetails(const TopoDS_Face& aF,
|
|||||||
//
|
//
|
||||||
// Location : aPc in center of rectangle
|
// Location : aPc in center of rectangle
|
||||||
// Position : 0z is plane normal
|
// Position : 0z is plane normal
|
||||||
// 0x is along length
|
// 0x is along the first edge (quadrangle) or
|
||||||
|
// along length (rectangle)
|
||||||
//
|
//
|
||||||
aXYZc.Divide(4.);
|
aXYZc.Divide(4.);
|
||||||
aPc.SetXYZ(aXYZc);
|
aPc.SetXYZ(aXYZc);
|
||||||
//
|
aDX=aDx[0];
|
||||||
gp_Lin aL0(aPx[0], aDx[0]);
|
aInfo.SetLocation(aPc);
|
||||||
gp_Lin aL1(aPx[1], aDx[1]);
|
|
||||||
//
|
if (isRectangle) {
|
||||||
aD0=aL0.Distance(aPc);
|
// Calculate sizes
|
||||||
aD1=aL1.Distance(aPc);
|
gp_Lin aL0(aPx[0], aDx[0]);
|
||||||
//
|
gp_Lin aL1(aPx[1], aDx[1]);
|
||||||
aLength=aD0;
|
//
|
||||||
aWidth =aD1;
|
aD0=aL0.Distance(aPc);
|
||||||
aDX=aL1.Direction();
|
aD1=aL1.Distance(aPc);
|
||||||
if (aD0<aD1) {
|
//
|
||||||
aLength=aD1;
|
aLength=aD1;
|
||||||
aWidth =aD0;
|
aWidth =aD0;
|
||||||
aDX=aL0.Direction();
|
|
||||||
|
if (aD0>aD1) {
|
||||||
|
aLength=aD0;
|
||||||
|
aWidth =aD1;
|
||||||
|
aDX=aDx[1];
|
||||||
|
}
|
||||||
|
//
|
||||||
|
aLength=2.*aLength;
|
||||||
|
aWidth =2.*aWidth;
|
||||||
|
//
|
||||||
|
aInfo.SetLength(aLength);
|
||||||
|
aInfo.SetWidth(aWidth);
|
||||||
|
aInfo.SetKindOfName(GEOMAlgo_KN_RECTANGLE);
|
||||||
|
} else {
|
||||||
|
aInfo.SetKindOfName(GEOMAlgo_KN_QUADRANGLE);
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
aLength=2.*aLength;
|
|
||||||
aWidth =2.*aWidth;
|
|
||||||
//
|
|
||||||
aInfo.SetLocation(aPc);
|
|
||||||
aInfo.SetLength(aLength);
|
|
||||||
aInfo.SetWidth(aWidth);
|
|
||||||
//
|
|
||||||
const gp_Dir& aDZ=aPln.Axis().Direction();
|
const gp_Dir& aDZ=aPln.Axis().Direction();
|
||||||
gp_Ax2 aAx2(aPc, aDZ, aDX);
|
gp_Ax2 aAx2(aPc, aDZ, aDX);
|
||||||
gp_Ax3 aAx3(aAx2);
|
gp_Ax3 aAx3(aAx2);
|
||||||
|
@ -22,8 +22,12 @@
|
|||||||
|
|
||||||
#include "GEOMGUI_CreationInfoWdg.h"
|
#include "GEOMGUI_CreationInfoWdg.h"
|
||||||
|
|
||||||
#include <SalomeApp_Application.h>
|
#include "GEOMImpl_Types.hxx"
|
||||||
|
|
||||||
#include <SUIT_Desktop.h>
|
#include <SUIT_Desktop.h>
|
||||||
|
#include <SUIT_ResourceMgr.h>
|
||||||
|
#include <SUIT_Session.h>
|
||||||
|
#include <SalomeApp_Application.h>
|
||||||
|
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
@ -38,33 +42,16 @@ GEOMGUI_CreationInfoWdg::GEOMGUI_CreationInfoWdg( SalomeApp_Application* app )
|
|||||||
//:QWidget( app->desktop() )
|
//:QWidget( app->desktop() )
|
||||||
{
|
{
|
||||||
setWindowTitle( tr( "CREATION_INFO_TITLE" ) );
|
setWindowTitle( tr( "CREATION_INFO_TITLE" ) );
|
||||||
setObjectName( "geomCreationInformation" );
|
|
||||||
|
|
||||||
QFrame* frame = new QFrame( this );
|
myParamsTreeWd = new QTreeWidget( this );
|
||||||
|
|
||||||
QVBoxLayout* myLayout = new QVBoxLayout( this );
|
|
||||||
myLayout->addWidget( frame );
|
|
||||||
myLayout->setMargin(0);
|
|
||||||
|
|
||||||
QGroupBox* operationGB = new QGroupBox( tr( "OPERATION" ), frame );
|
|
||||||
|
|
||||||
myIconLbl = new QLabel( operationGB );
|
|
||||||
myOperaionLnEd = new QLineEdit( operationGB );
|
|
||||||
myOperaionLnEd->setReadOnly( true );
|
|
||||||
myParamsTreeWd = new QTreeWidget( frame );
|
|
||||||
myParamsTreeWd->setColumnCount( 2 );
|
myParamsTreeWd->setColumnCount( 2 );
|
||||||
myParamsTreeWd->setHeaderLabels( QStringList() << tr( "PARAMETER" ) << tr( "VALUE" ) );
|
myParamsTreeWd->setHeaderLabels( QStringList() << tr( "PARAMETER" ) << tr( "VALUE" ) );
|
||||||
myParamsTreeWd->header()->setStretchLastSection( true );
|
myParamsTreeWd->header()->setStretchLastSection( true );
|
||||||
myParamsTreeWd->header()->setResizeMode( 0, QHeaderView::ResizeToContents );
|
myParamsTreeWd->header()->setResizeMode( 0, QHeaderView::ResizeToContents );
|
||||||
|
|
||||||
QHBoxLayout* operationLay = new QHBoxLayout( operationGB );
|
QVBoxLayout* aLayout = new QVBoxLayout( this );
|
||||||
operationLay->addWidget( myIconLbl );
|
|
||||||
operationLay->addWidget( myOperaionLnEd );
|
|
||||||
operationLay->setMargin(5);
|
|
||||||
|
|
||||||
QVBoxLayout* aLayout = new QVBoxLayout( frame );
|
|
||||||
aLayout->addWidget( operationGB );
|
|
||||||
aLayout->addWidget( myParamsTreeWd );
|
aLayout->addWidget( myParamsTreeWd );
|
||||||
|
aLayout->setMargin(11);
|
||||||
|
|
||||||
// get a free dockable window id
|
// get a free dockable window id
|
||||||
myWindowID = 10;
|
myWindowID = 10;
|
||||||
@ -73,19 +60,26 @@ GEOMGUI_CreationInfoWdg::GEOMGUI_CreationInfoWdg( SalomeApp_Application* app )
|
|||||||
++myWindowID; // pb when a GEOM is a sole module: CreationInfoWdg replaces Python console
|
++myWindowID; // pb when a GEOM is a sole module: CreationInfoWdg replaces Python console
|
||||||
}
|
}
|
||||||
|
|
||||||
void GEOMGUI_CreationInfoWdg::setOperation(const QPixmap& icon, const QString& name)
|
QTreeWidgetItem* GEOMGUI_CreationInfoWdg::addOperation(const QPixmap& icon, const QString& name)
|
||||||
{
|
|
||||||
myIconLbl->setPixmap( icon );
|
|
||||||
myOperaionLnEd->setText( name );
|
|
||||||
|
|
||||||
if ( name.isEmpty() )
|
|
||||||
myOperaionLnEd->setText( tr("NO_INFO"));
|
|
||||||
}
|
|
||||||
|
|
||||||
void GEOMGUI_CreationInfoWdg::addParam (const QString& name, const QString& value)
|
|
||||||
{
|
{
|
||||||
QTreeWidgetItem* item = new QTreeWidgetItem( myParamsTreeWd );
|
QTreeWidgetItem* item = new QTreeWidgetItem( myParamsTreeWd );
|
||||||
|
|
||||||
|
item->setIcon( 0, icon );
|
||||||
|
item->setText( 0, name );
|
||||||
|
if ( name.isEmpty() )
|
||||||
|
item->setText( 0, tr("NO_INFO"));
|
||||||
|
|
||||||
|
item->setExpanded( true );
|
||||||
|
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GEOMGUI_CreationInfoWdg::addParam (QTreeWidgetItem* operation,
|
||||||
|
const QString& name,
|
||||||
|
const QString& value)
|
||||||
|
{
|
||||||
|
QTreeWidgetItem* item = new QTreeWidgetItem( operation );
|
||||||
|
|
||||||
//item->setFlags( Qt::NoItemFlags );
|
//item->setFlags( Qt::NoItemFlags );
|
||||||
item->setExpanded( true );
|
item->setExpanded( true );
|
||||||
|
|
||||||
@ -95,8 +89,6 @@ void GEOMGUI_CreationInfoWdg::addParam (const QString& name, const QString& valu
|
|||||||
|
|
||||||
void GEOMGUI_CreationInfoWdg::clear()
|
void GEOMGUI_CreationInfoWdg::clear()
|
||||||
{
|
{
|
||||||
myIconLbl->setPixmap( QPixmap() );
|
|
||||||
myOperaionLnEd->setText( "" );
|
|
||||||
myParamsTreeWd->clear();
|
myParamsTreeWd->clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,3 +96,57 @@ GEOMGUI_CreationInfoWdg::~GEOMGUI_CreationInfoWdg()
|
|||||||
{
|
{
|
||||||
//std::cout<<"~GEOMGUI_CreationInfoWdg"<<std::endl;
|
//std::cout<<"~GEOMGUI_CreationInfoWdg"<<std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GEOMGUI_CreationInfoWdg::setInfo( GEOM::CreationInformationSeq& info )
|
||||||
|
{
|
||||||
|
clear();
|
||||||
|
|
||||||
|
QPixmap icon;
|
||||||
|
QString operationName;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if ( &info && info.length() > 0 )
|
||||||
|
{
|
||||||
|
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
|
||||||
|
for ( int j = 0, nb = info.length(); j < nb; ++j )
|
||||||
|
{
|
||||||
|
QString name = info[j].operationName.in();
|
||||||
|
if ( !name.isEmpty() )
|
||||||
|
{
|
||||||
|
// get plugin_name if any
|
||||||
|
QString plugin_name;
|
||||||
|
for ( size_t i = 0; i < info[j].params.length(); ++i )
|
||||||
|
{
|
||||||
|
QString value = info[j].params[i].name.in();
|
||||||
|
if ( value == PLUGIN_NAME )
|
||||||
|
plugin_name = info[j].params[i].value.in();
|
||||||
|
}
|
||||||
|
// get icon
|
||||||
|
QString prefix = plugin_name.isEmpty() ? "GEOM" : plugin_name;
|
||||||
|
icon = resMgr->loadPixmap( prefix, tr( ("ICO_"+name).toLatin1().constData() ), false );
|
||||||
|
|
||||||
|
// translate operation name
|
||||||
|
operationName = tr( ("MEN_"+name).toLatin1().constData() );
|
||||||
|
if ( operationName.startsWith( "MEN_" ))
|
||||||
|
operationName = name; // no translation
|
||||||
|
|
||||||
|
QTreeWidgetItem* operation = addOperation( icon, operationName );
|
||||||
|
|
||||||
|
// add parameters
|
||||||
|
for ( size_t i = 0; i < info[j].params.length(); ++i )
|
||||||
|
addParam( operation,
|
||||||
|
info[j].params[i].name.in(),
|
||||||
|
info[j].params[i].value.in() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
addOperation( icon, operationName );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -22,12 +22,16 @@
|
|||||||
|
|
||||||
#include "GEOM_GEOMGUI.hxx"
|
#include "GEOM_GEOMGUI.hxx"
|
||||||
|
|
||||||
|
#include <SALOMEconfig.h>
|
||||||
|
#include CORBA_SERVER_HEADER(GEOM_Gen)
|
||||||
|
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
|
||||||
class QString;
|
|
||||||
class QLabel;
|
class QLabel;
|
||||||
class QLineEdit;
|
class QLineEdit;
|
||||||
|
class QString;
|
||||||
class QTreeWidget;
|
class QTreeWidget;
|
||||||
|
class QTreeWidgetItem;
|
||||||
class SalomeApp_Application;
|
class SalomeApp_Application;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -46,16 +50,18 @@ class GEOMGUI_EXPORT GEOMGUI_CreationInfoWdg : public QWidget
|
|||||||
GEOMGUI_CreationInfoWdg( SalomeApp_Application* app );
|
GEOMGUI_CreationInfoWdg( SalomeApp_Application* app );
|
||||||
~GEOMGUI_CreationInfoWdg();
|
~GEOMGUI_CreationInfoWdg();
|
||||||
|
|
||||||
int getWinID() { return myWindowID; }
|
void setInfo( GEOM::CreationInformationSeq& info );
|
||||||
|
|
||||||
void clear();
|
void clear();
|
||||||
void setOperation(const QPixmap& icon, const QString& name);
|
|
||||||
void addParam (const QString& name, const QString& value);
|
int getWinID() { return myWindowID; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
QLabel* myIconLbl;
|
QTreeWidgetItem* addOperation(const QPixmap& icon, const QString& name);
|
||||||
QLineEdit* myOperaionLnEd;
|
void addParam (QTreeWidgetItem* operation, const QString& name, const QString& value);
|
||||||
|
|
||||||
|
QLabel* myIconLbl;
|
||||||
|
//QLineEdit* myOperaionLnEd;
|
||||||
QTreeWidget* myParamsTreeWd;
|
QTreeWidget* myParamsTreeWd;
|
||||||
int myWindowID;
|
int myWindowID;
|
||||||
|
|
||||||
|
@ -179,7 +179,7 @@ static void getEntityOwners( const Handle(AIS_InteractiveObject)& theObj,
|
|||||||
|
|
||||||
for ( sel->Init(); sel->More(); sel->Next() ) {
|
for ( sel->Init(); sel->More(); sel->Next() ) {
|
||||||
#if OCC_VERSION_LARGE > 0x06080100
|
#if OCC_VERSION_LARGE > 0x06080100
|
||||||
const SelectMgr_HSensitiveEntity aHSenEntity = sel->Sensitive();
|
const Handle(SelectMgr_SensitiveEntity) aHSenEntity = sel->Sensitive();
|
||||||
if( aHSenEntity.IsNull() )
|
if( aHSenEntity.IsNull() )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -541,7 +541,7 @@ Please, select face, shell or solid and try again</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>GEOM_CYLINDER_ANGLE_ERR</source>
|
<source>GEOM_CYLINDER_ANGLE_ERR</source>
|
||||||
<translation>Angle values 0 and 360 are unsafe to build proper volumes. Please uncheck the "Angle" box to use the regular cylinder constructor.</translation>
|
<translation>Angle values 0 and 360 are unsafe to build proper volumes. Please uncheck the "Angle" box to use the regular cylinder constructor.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>GEOM_D1</source>
|
<source>GEOM_D1</source>
|
||||||
@ -2477,12 +2477,12 @@ Please, select face, shell or solid and try again</translation>
|
|||||||
<translation>2D Polyline</translation>
|
<translation>2D Polyline</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>TOP_CURVE_CREATOR</source>
|
<source>TOP_CURVE_CREATOR</source>
|
||||||
<translation>Create 2D polyline</translation>
|
<translation>Create 2D polyline</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>STB_CURVE_CREATOR</source>
|
<source>STB_CURVE_CREATOR</source>
|
||||||
<translation>Create 2D polyline</translation>
|
<translation>Create 2D polyline</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>MEN_ALL_SEL_ONLY</source>
|
<source>MEN_ALL_SEL_ONLY</source>
|
||||||
@ -3270,7 +3270,7 @@ Please, select face, shell or solid and try again</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>PREF_DEFLECTION</source>
|
<source>PREF_DEFLECTION</source>
|
||||||
<translation>Deflection coefficient</translation>
|
<translation>Default deflection coefficient</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>GEOM_PREF_def_precision</source>
|
<source>GEOM_PREF_def_precision</source>
|
||||||
@ -3318,7 +3318,7 @@ Please, select face, shell or solid and try again</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>PREF_TRANSPARENCY</source>
|
<source>PREF_TRANSPARENCY</source>
|
||||||
<translation>Transparency</translation>
|
<translation>Default transparency</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>PREF_FREE_BOUND_COLOR</source>
|
<source>PREF_FREE_BOUND_COLOR</source>
|
||||||
@ -3342,7 +3342,7 @@ Please, select face, shell or solid and try again</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>PREF_GROUP_VERTEX</source>
|
<source>PREF_GROUP_VERTEX</source>
|
||||||
<translation>Marker of Points</translation>
|
<translation>Default marker of points</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>PREF_ISOS_COLOR</source>
|
<source>PREF_ISOS_COLOR</source>
|
||||||
@ -3422,11 +3422,11 @@ Please, select face, shell or solid and try again</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>PREF_EDGE_WIDTH</source>
|
<source>PREF_EDGE_WIDTH</source>
|
||||||
<translation>Edges width</translation>
|
<translation>Default edges width</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>PREF_ISOLINES_WIDTH</source>
|
<source>PREF_ISOLINES_WIDTH</source>
|
||||||
<translation>Iso lines width</translation>
|
<translation>Default isolines width</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>PREF_PREVIEW_EDGE_WIDTH</source>
|
<source>PREF_PREVIEW_EDGE_WIDTH</source>
|
||||||
@ -3486,7 +3486,7 @@ Please, select face, shell or solid and try again</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>PREF_ISOS</source>
|
<source>PREF_ISOS</source>
|
||||||
<translation>Number of isolines</translation>
|
<translation>Default number of isolines</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>PREF_ISOS_U</source>
|
<source>PREF_ISOS_U</source>
|
||||||
@ -5759,23 +5759,23 @@ shells and solids on the other hand.</translation>
|
|||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>CurveCreator_TableView</name>
|
<name>CurveCreator_TableView</name>
|
||||||
<message>
|
<message>
|
||||||
<source>TABLE_SECTION</source>
|
<source>TABLE_SECTION</source>
|
||||||
<translation>Section</translation>
|
<translation>Section</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>TABLE_INDEX</source>
|
<source>TABLE_INDEX</source>
|
||||||
<translation>Index</translation>
|
<translation>Index</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>TABLE_X</source>
|
<source>TABLE_X</source>
|
||||||
<translation>X</translation>
|
<translation>X</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>TABLE_Y</source>
|
<source>TABLE_Y</source>
|
||||||
<translation>Y</translation>
|
<translation>Y</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>CurveCreator_Widget</name>
|
<name>CurveCreator_Widget</name>
|
||||||
@ -7199,7 +7199,7 @@ Do you want to create new material?</translation>
|
|||||||
<translation>Main shape</translation>
|
<translation>Main shape</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>GEOM_INSPECT_OBJECT_SHOW</source>
|
<source>GEOM_INSPECT_OBJECT_SHOW</source>
|
||||||
<translation>Show Selected</translation>
|
<translation>Show Selected</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@ -7322,22 +7322,22 @@ Do you want to create new material?</translation>
|
|||||||
<source>GEOM_CHECK_INTE_V_E</source>
|
<source>GEOM_CHECK_INTE_V_E</source>
|
||||||
<translation>Vertex to Edge + all above</translation>
|
<translation>Vertex to Edge + all above</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>GEOM_CHECK_INTE_E_E</source>
|
<source>GEOM_CHECK_INTE_E_E</source>
|
||||||
<translation>Edge to Edge + all above</translation>
|
<translation>Edge to Edge + all above</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>GEOM_CHECK_INTE_V_F</source>
|
<source>GEOM_CHECK_INTE_V_F</source>
|
||||||
<translation>Vertex to Face + all above</translation>
|
<translation>Vertex to Face + all above</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>GEOM_CHECK_INTE_E_F</source>
|
<source>GEOM_CHECK_INTE_E_F</source>
|
||||||
<translation>Edge to Face + all above</translation>
|
<translation>Edge to Face + all above</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>GEOM_CHECK_INTE_ALL</source>
|
<source>GEOM_CHECK_INTE_ALL</source>
|
||||||
<translation>Face to Face + all above</translation>
|
<translation>Face to Face + all above</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>MeasureGUI_FastCheckIntersectionsDlg</name>
|
<name>MeasureGUI_FastCheckIntersectionsDlg</name>
|
||||||
@ -7549,16 +7549,16 @@ Do you want to create new material?</translation>
|
|||||||
<context>
|
<context>
|
||||||
<name>TransformationGUI_ProjectionOnCylDlg</name>
|
<name>TransformationGUI_ProjectionOnCylDlg</name>
|
||||||
<message>
|
<message>
|
||||||
<source>GEOM_PROJ_ON_CYL_TITLE</source>
|
<source>GEOM_PROJ_ON_CYL_TITLE</source>
|
||||||
<translation>Projection On A Cylinder</translation>
|
<translation>Projection On A Cylinder</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>GEOM_PROJ_ON_CYL_START_ANGLE</source>
|
<source>GEOM_PROJ_ON_CYL_START_ANGLE</source>
|
||||||
<translation>Starting angle</translation>
|
<translation>Starting angle</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>GEOM_PROJ_ON_CYL_LENGTH_ANGLE</source>
|
<source>GEOM_PROJ_ON_CYL_LENGTH_ANGLE</source>
|
||||||
<translation>Length angle</translation>
|
<translation>Length angle</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
@ -679,6 +679,18 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
|
|||||||
<source>GEOM_EXTRUSION_TITLE</source>
|
<source>GEOM_EXTRUSION_TITLE</source>
|
||||||
<translation>Construction par extrusion</translation>
|
<translation>Construction par extrusion</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GEOM_THICKNESS_TITLE</source>
|
||||||
|
<translation>Epaississement</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GEOM_THICKNESS_NAME</source>
|
||||||
|
<translation>Epaississement</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GEOM_TOWARDS_INSIDE</source>
|
||||||
|
<translation>Epaissit vers l'intérieur</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>GEOM_SCALE_PRISM</source>
|
<source>GEOM_SCALE_PRISM</source>
|
||||||
<translation>Appliquer le facteur d'échelle</translation>
|
<translation>Appliquer le facteur d'échelle</translation>
|
||||||
@ -1252,6 +1264,10 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
|
|||||||
<source>GEOM_PROJECTION_TITLE</source>
|
<source>GEOM_PROJECTION_TITLE</source>
|
||||||
<translation>Projection sur une face</translation>
|
<translation>Projection sur une face</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GEOM_PROJECTION_NAME</source>
|
||||||
|
<translation>Projection</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>GEOM_PROJ_ON_FACE_SOURCE</source>
|
<source>GEOM_PROJ_ON_FACE_SOURCE</source>
|
||||||
<translation>Point, arête ou contour source</translation>
|
<translation>Point, arête ou contour source</translation>
|
||||||
@ -1400,6 +1416,14 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
|
|||||||
<source>GEOM_SELECT_UNPUBLISHED_EDGES</source>
|
<source>GEOM_SELECT_UNPUBLISHED_EDGES</source>
|
||||||
<translation>Choisir les arêtes non-publiées</translation>
|
<translation>Choisir les arêtes non-publiées</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GEOM_GENERATE_GROUPS</source>
|
||||||
|
<translation>Générer les groupes</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GEOM_GROUP_NAME_PREFIX</source>
|
||||||
|
<translation>Préfixe des groupes</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>GEOM_PLANE</source>
|
<source>GEOM_PLANE</source>
|
||||||
<translation>Plan</translation>
|
<translation>Plan</translation>
|
||||||
@ -2408,6 +2432,26 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
|
|||||||
<source>WRN_NULL_OBJECT_OR_SHAPE</source>
|
<source>WRN_NULL_OBJECT_OR_SHAPE</source>
|
||||||
<translation>La forme %1 pour la création d'un solide est invalide</translation>
|
<translation>La forme %1 pour la création d'un solide est invalide</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GROUP_DOWN</source>
|
||||||
|
<translation>Bas</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GROUP_UP</source>
|
||||||
|
<translation>Haut</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GROUP_SIDE1</source>
|
||||||
|
<translation>Gauche</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GROUP_SIDE2</source>
|
||||||
|
<translation>Droite</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GROUP_OTHER</source>
|
||||||
|
<translation>Autre</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>GEOM_X</source>
|
<source>GEOM_X</source>
|
||||||
<translation>X :</translation>
|
<translation>X :</translation>
|
||||||
@ -2433,12 +2477,12 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
|
|||||||
<translation>Créateur de courbe</translation>
|
<translation>Créateur de courbe</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>TOP_CURVE_CREATOR</source>
|
<source>TOP_CURVE_CREATOR</source>
|
||||||
<translation>Créer une courbe</translation>
|
<translation>Créer une courbe</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>STB_CURVE_CREATOR</source>
|
<source>STB_CURVE_CREATOR</source>
|
||||||
<translation>Créer une courbe</translation>
|
<translation>Créer une courbe</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>MEN_ALL_SEL_ONLY</source>
|
<source>MEN_ALL_SEL_ONLY</source>
|
||||||
@ -2840,6 +2884,10 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
|
|||||||
<source>MEN_PROJECTION</source>
|
<source>MEN_PROJECTION</source>
|
||||||
<translation>Projection</translation>
|
<translation>Projection</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>MEN_PROJ_ON_CYL</source>
|
||||||
|
<translation>Projection sur un cylindre</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>MEN_OPERATIONS</source>
|
<source>MEN_OPERATIONS</source>
|
||||||
<translation>Opérations</translation>
|
<translation>Opérations</translation>
|
||||||
@ -2860,6 +2908,10 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
|
|||||||
<source>MEN_PIPE_PATH</source>
|
<source>MEN_PIPE_PATH</source>
|
||||||
<translation>Retrouver le chemin</translation>
|
<translation>Retrouver le chemin</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>MEN_THICKNESS</source>
|
||||||
|
<translation>Epaisseur</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>MEN_PLANE</source>
|
<source>MEN_PLANE</source>
|
||||||
<translation>Plan</translation>
|
<translation>Plan</translation>
|
||||||
@ -3218,7 +3270,7 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>PREF_DEFLECTION</source>
|
<source>PREF_DEFLECTION</source>
|
||||||
<translation>Coefficient de déformation</translation>
|
<translation>Coefficient de déformation par défaut</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>GEOM_PREF_def_precision</source>
|
<source>GEOM_PREF_def_precision</source>
|
||||||
@ -3266,7 +3318,7 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>PREF_TRANSPARENCY</source>
|
<source>PREF_TRANSPARENCY</source>
|
||||||
<translation>Transparence</translation>
|
<translation>Transparence par défaut</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>PREF_FREE_BOUND_COLOR</source>
|
<source>PREF_FREE_BOUND_COLOR</source>
|
||||||
@ -3290,7 +3342,7 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>PREF_GROUP_VERTEX</source>
|
<source>PREF_GROUP_VERTEX</source>
|
||||||
<translation>Marqueurs de points</translation>
|
<translation>Marqueurs de points par défaut</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>PREF_ISOS_COLOR</source>
|
<source>PREF_ISOS_COLOR</source>
|
||||||
@ -3298,7 +3350,7 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>PREF_LABEL_COLOR</source>
|
<source>PREF_LABEL_COLOR</source>
|
||||||
<translation type="unfinished">Color of labels</translation>
|
<translation>Couleur des étiquettes</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>PREF_TOPLEVEL_COLOR</source>
|
<source>PREF_TOPLEVEL_COLOR</source>
|
||||||
@ -3370,11 +3422,11 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>PREF_EDGE_WIDTH</source>
|
<source>PREF_EDGE_WIDTH</source>
|
||||||
<translation>Epaisseur des arêtes</translation>
|
<translation>Epaisseur des arêtes par défaut</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>PREF_ISOLINES_WIDTH</source>
|
<source>PREF_ISOLINES_WIDTH</source>
|
||||||
<translation>Epaisseur des isolignes</translation>
|
<translation>Epaisseur des isolignes par défaut</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>PREF_PREVIEW_EDGE_WIDTH</source>
|
<source>PREF_PREVIEW_EDGE_WIDTH</source>
|
||||||
@ -3430,11 +3482,11 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>PREF_HIDE_INPUT_OBJECT</source>
|
<source>PREF_HIDE_INPUT_OBJECT</source>
|
||||||
<translation type="unfinished">Hide input objects from the viewer</translation>
|
<translation>Cacher dans la vue les objets en entrée</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>PREF_ISOS</source>
|
<source>PREF_ISOS</source>
|
||||||
<translation>Nombre d'isolignes</translation>
|
<translation>Nombre d'isolignes par défaut</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>PREF_ISOS_U</source>
|
<source>PREF_ISOS_U</source>
|
||||||
@ -3804,6 +3856,10 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
|
|||||||
<source>STB_PROJECTION</source>
|
<source>STB_PROJECTION</source>
|
||||||
<translation>Projeter un point, une arête ou un contour sur une face</translation>
|
<translation>Projeter un point, une arête ou un contour sur une face</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>STB_PROJ_ON_CYL</source>
|
||||||
|
<translation>Projète un contour ou une face sur un cylindre</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>STB_ORIGIN_AND_VECTORS</source>
|
<source>STB_ORIGIN_AND_VECTORS</source>
|
||||||
<translation>Créer les vecteurs de base et l'origine</translation>
|
<translation>Créer les vecteurs de base et l'origine</translation>
|
||||||
@ -3820,6 +3876,10 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
|
|||||||
<source>STB_PIPE_PATH</source>
|
<source>STB_PIPE_PATH</source>
|
||||||
<translation>Retrouver le chemin à partir d'un objet de type tuyau</translation>
|
<translation>Retrouver le chemin à partir d'un objet de type tuyau</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>STB_THICKNESS</source>
|
||||||
|
<translation>Crée un solide par ajout d'épaisseur</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>STB_PLANE</source>
|
<source>STB_PLANE</source>
|
||||||
<translation>Créer un plan</translation>
|
<translation>Créer un plan</translation>
|
||||||
@ -3966,7 +4026,7 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>STB_NAME_MODE</source>
|
<source>STB_NAME_MODE</source>
|
||||||
<translation type="unfinished">Show/Hide names of visible shapes</translation>
|
<translation>Montrer/cacher le nom des objets visibles</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>STB_SHADING_COLOR</source>
|
<source>STB_SHADING_COLOR</source>
|
||||||
@ -4424,6 +4484,10 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
|
|||||||
<source>TOP_PROJECTION</source>
|
<source>TOP_PROJECTION</source>
|
||||||
<translation>Projection</translation>
|
<translation>Projection</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>TOP_PROJ_ON_CYL</source>
|
||||||
|
<translation>Projection sur un cylindre</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>TOP_ORIGIN_AND_VECTORS</source>
|
<source>TOP_ORIGIN_AND_VECTORS</source>
|
||||||
<translation>Créer l'origine et les vecteurs de base</translation>
|
<translation>Créer l'origine et les vecteurs de base</translation>
|
||||||
@ -4440,6 +4504,10 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
|
|||||||
<source>TOP_PIPE_PATH</source>
|
<source>TOP_PIPE_PATH</source>
|
||||||
<translation>Retrouver le chemin</translation>
|
<translation>Retrouver le chemin</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>TOP_THICKNESS</source>
|
||||||
|
<translation>Epaississement</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>TOP_PLANE</source>
|
<source>TOP_PLANE</source>
|
||||||
<translation>Créer un plan</translation>
|
<translation>Créer un plan</translation>
|
||||||
@ -5395,22 +5463,6 @@ le paramètre '%1' aux préférences du module Géométrie.</translati
|
|||||||
<source>TOOL_IMPORTEXPORT</source>
|
<source>TOOL_IMPORTEXPORT</source>
|
||||||
<translation>Import / Export XAO</translation>
|
<translation>Import / Export XAO</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>TABLE_SECTION</source>
|
|
||||||
<translation>Section</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>TABLE_INDEX</source>
|
|
||||||
<translation>Indice</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>TABLE_X</source>
|
|
||||||
<translation>X</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>TABLE_Y</source>
|
|
||||||
<translation>Y</translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>BasicGUI_CurveDlg</name>
|
<name>BasicGUI_CurveDlg</name>
|
||||||
@ -5706,6 +5758,25 @@ le paramètre '%1' aux préférences du module Géométrie.</translati
|
|||||||
<translation>X=%1, Y=%2, Z=%3</translation>
|
<translation>X=%1, Y=%2, Z=%3</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>CurveCreator_TableView</name>
|
||||||
|
<message>
|
||||||
|
<source>TABLE_SECTION</source>
|
||||||
|
<translation>Section</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>TABLE_INDEX</source>
|
||||||
|
<translation>Indice</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>TABLE_X</source>
|
||||||
|
<translation>X</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>TABLE_Y</source>
|
||||||
|
<translation>Y</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>CurveCreator_Widget</name>
|
<name>CurveCreator_Widget</name>
|
||||||
<message>
|
<message>
|
||||||
@ -6064,10 +6135,6 @@ Le nombre de points n'est pas suffisant</translation>
|
|||||||
<source>GEOM_ADD_THICKNESS</source>
|
<source>GEOM_ADD_THICKNESS</source>
|
||||||
<translation>Epaissir (arêtes ou contours uniquement)</translation>
|
<translation>Epaissir (arêtes ou contours uniquement)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>GEOM_TOWARDS_INSIDE</source>
|
|
||||||
<translation>Epaissir vers l'intérieur</translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>GroupGUI</name>
|
<name>GroupGUI</name>
|
||||||
@ -7132,7 +7199,7 @@ Voulez-vous en créer un nouveau ?</translation>
|
|||||||
<translation>Forme principale</translation>
|
<translation>Forme principale</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>GEOM_INSPECT_OBJECT_SHOW</source>
|
<source>GEOM_INSPECT_OBJECT_SHOW</source>
|
||||||
<translation>Afficher la sélection</translation>
|
<translation>Afficher la sélection</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@ -7255,22 +7322,22 @@ Voulez-vous en créer un nouveau ?</translation>
|
|||||||
<source>GEOM_CHECK_INTE_V_E</source>
|
<source>GEOM_CHECK_INTE_V_E</source>
|
||||||
<translation>Point à arête + tout au-delà</translation>
|
<translation>Point à arête + tout au-delà</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>GEOM_CHECK_INTE_E_E</source>
|
<source>GEOM_CHECK_INTE_E_E</source>
|
||||||
<translation>Arête à arête + tout au-delà</translation>
|
<translation>Arête à arête + tout au-delà</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>GEOM_CHECK_INTE_V_F</source>
|
<source>GEOM_CHECK_INTE_V_F</source>
|
||||||
<translation>Point à face + tout au-delà</translation>
|
<translation>Point à face + tout au-delà</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>GEOM_CHECK_INTE_E_F</source>
|
<source>GEOM_CHECK_INTE_E_F</source>
|
||||||
<translation>Arête à Face + tout au-delà</translation>
|
<translation>Arête à Face + tout au-delà</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>GEOM_CHECK_INTE_ALL</source>
|
<source>GEOM_CHECK_INTE_ALL</source>
|
||||||
<translation>Face à Face + tout au-delà</translation>
|
<translation>Face à Face + tout au-delà</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>MeasureGUI_FastCheckIntersectionsDlg</name>
|
<name>MeasureGUI_FastCheckIntersectionsDlg</name>
|
||||||
@ -7479,4 +7546,19 @@ Voulez-vous en créer un nouveau ?</translation>
|
|||||||
<translation>Matériaux: %1 de %2</translation>
|
<translation>Matériaux: %1 de %2</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>TransformationGUI_ProjectionOnCylDlg</name>
|
||||||
|
<message>
|
||||||
|
<source>GEOM_PROJ_ON_CYL_TITLE</source>
|
||||||
|
<translation>Projection sur un cylindre</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GEOM_PROJ_ON_CYL_START_ANGLE</source>
|
||||||
|
<translation>Angle de départ</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GEOM_PROJ_ON_CYL_LENGTH_ANGLE</source>
|
||||||
|
<translation>Longueur de l'angle</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1686,7 +1686,7 @@ void GeometryGUI::addPluginActions()
|
|||||||
// icon
|
// icon
|
||||||
QPixmap icon;
|
QPixmap icon;
|
||||||
if ( !adata.icon.empty() )
|
if ( !adata.icon.empty() )
|
||||||
icon = resMgr->loadPixmap( pdata.name.c_str(), adata.icon.c_str() );
|
icon = resMgr->loadPixmap( pdata.name.c_str(), adata.icon.c_str() );
|
||||||
// menu text (path)
|
// menu text (path)
|
||||||
QStringList smenus = QString( adata.menuText.c_str() ).split( "/" );
|
QStringList smenus = QString( adata.menuText.c_str() ).split( "/" );
|
||||||
QString actionName = smenus.last();
|
QString actionName = smenus.last();
|
||||||
@ -1703,30 +1703,30 @@ void GeometryGUI::addPluginActions()
|
|||||||
actionStat = actionStat.toUpper().prepend( "STB_" );
|
actionStat = actionStat.toUpper().prepend( "STB_" );
|
||||||
|
|
||||||
createAction( id, // ~ adata.label
|
createAction( id, // ~ adata.label
|
||||||
tr( actionTool.toLatin1().constData() ),
|
tr( actionTool.toLatin1().constData() ),
|
||||||
icon,
|
icon,
|
||||||
tr( actionName.toLatin1().constData() ),
|
tr( actionName.toLatin1().constData() ),
|
||||||
tr( actionStat.toLatin1().constData() ),
|
tr( actionStat.toLatin1().constData() ),
|
||||||
QKeySequence( tr( adata.accel.c_str() ) ),
|
QKeySequence( tr( adata.accel.c_str() ) ),
|
||||||
application()->desktop(),
|
application()->desktop(),
|
||||||
false /*toggle*/,
|
false /*toggle*/,
|
||||||
this, SLOT( OnGUIEvent() ),
|
this, SLOT( OnGUIEvent() ),
|
||||||
QString() /*shortcutAction*/ );
|
QString() /*shortcutAction*/ );
|
||||||
|
|
||||||
int menuId = -1;
|
int menuId = -1;
|
||||||
foreach ( QString subMenu, smenus ) {
|
foreach ( QString subMenu, smenus ) {
|
||||||
QStringList subMenuList = subMenu.split( ":" );
|
QStringList subMenuList = subMenu.split( ":" );
|
||||||
QString subMenuName = subMenuList[0].toUpper().prepend( "MEN_" );
|
QString subMenuName = subMenuList[0].toUpper().prepend( "MEN_" );
|
||||||
int subMenuGroup = subMenuList.size() > 1 ? subMenuList[1].toInt() : -1;
|
int subMenuGroup = subMenuList.size() > 1 ? subMenuList[1].toInt() : -1;
|
||||||
menuId = createMenu( tr( subMenuName.toLatin1().constData() ), menuId, -1, subMenuGroup );
|
menuId = createMenu( tr( subMenuName.toLatin1().constData() ), menuId, -1, subMenuGroup );
|
||||||
}
|
}
|
||||||
createMenu( id, menuId, -1 );
|
createMenu( id, menuId, -1 );
|
||||||
|
|
||||||
if ( !stools.isEmpty() ) {
|
if ( !stools.isEmpty() ) {
|
||||||
QString subTool = stools[0];
|
QString subTool = stools[0];
|
||||||
subTool = subTool.toUpper().prepend( "TOOL_" );
|
subTool = subTool.toUpper().prepend( "TOOL_" );
|
||||||
int toolId = createTool( tr( subTool.toLatin1().constData() ) );
|
int toolId = createTool( tr( subTool.toLatin1().constData() ) );
|
||||||
createTool(id, toolId);
|
createTool(id, toolId);
|
||||||
}
|
}
|
||||||
|
|
||||||
// add action id to map
|
// add action id to map
|
||||||
@ -1763,8 +1763,8 @@ bool GeometryGUI::activateModule( SUIT_Study* study )
|
|||||||
else {
|
else {
|
||||||
PyObjWrapper result =
|
PyObjWrapper result =
|
||||||
PyObject_CallMethod(pluginsmanager, (char*)"initialize", (char*)"isss", 1, "geom",
|
PyObject_CallMethod(pluginsmanager, (char*)"initialize", (char*)"isss", 1, "geom",
|
||||||
tr("MEN_NEW_ENTITY").toStdString().c_str(),
|
tr("MEN_NEW_ENTITY").toUtf8().data(),
|
||||||
tr("GEOM_PLUGINS_OTHER").toStdString().c_str());
|
tr("GEOM_PLUGINS_OTHER").toUtf8().data());
|
||||||
if ( !result )
|
if ( !result )
|
||||||
PyErr_Print();
|
PyErr_Print();
|
||||||
}
|
}
|
||||||
@ -2041,38 +2041,15 @@ void GeometryGUI::updateCreationInfo()
|
|||||||
// pass creation info of geomObj to myCreationInfoWdg
|
// pass creation info of geomObj to myCreationInfoWdg
|
||||||
|
|
||||||
if ( myCreationInfoWdg ) {
|
if ( myCreationInfoWdg ) {
|
||||||
QPixmap icon;
|
|
||||||
QString operationName;
|
|
||||||
myCreationInfoWdg->setOperation( icon, operationName );
|
|
||||||
|
|
||||||
|
GEOM::CreationInformationSeq_var info;
|
||||||
try {
|
try {
|
||||||
OCC_CATCH_SIGNALS;
|
OCC_CATCH_SIGNALS;
|
||||||
GEOM::CreationInformation_var info = geomObj->GetCreationInformation();
|
info = geomObj->GetCreationInformation();
|
||||||
if ( &info.in() ) {
|
|
||||||
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
|
|
||||||
QString name = info->operationName.in();
|
|
||||||
if ( !name.isEmpty() ) {
|
|
||||||
|
|
||||||
QString plugin_name;
|
|
||||||
for ( size_t i = 0; i < info->params.length(); ++i ) {
|
|
||||||
myCreationInfoWdg->addParam( info->params[i].name.in(),
|
|
||||||
info->params[i].value.in() );
|
|
||||||
QString value = info->params[i].name.in();
|
|
||||||
if( value == PLUGIN_NAME ) {
|
|
||||||
plugin_name = info->params[i].value.in();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
QString prefix = plugin_name.isEmpty() ? "GEOM" : plugin_name;
|
|
||||||
icon = resMgr->loadPixmap( prefix, tr( ("ICO_"+name).toLatin1().constData() ), false );
|
|
||||||
operationName = tr( ("MEN_"+name).toLatin1().constData() );
|
|
||||||
if ( operationName.startsWith( "MEN_" ))
|
|
||||||
operationName = name; // no translation
|
|
||||||
myCreationInfoWdg->setOperation( icon, operationName );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (...) {
|
catch (...) {
|
||||||
}
|
}
|
||||||
|
myCreationInfoWdg->setInfo( info );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2304,7 +2281,7 @@ void GeometryGUI::createPreferences()
|
|||||||
LightApp_Preferences::Selector, "Geometry", "toplevel_dm" );
|
LightApp_Preferences::Selector, "Geometry", "toplevel_dm" );
|
||||||
|
|
||||||
int transparency = addPreference( tr( "PREF_TRANSPARENCY" ), genGroup,
|
int transparency = addPreference( tr( "PREF_TRANSPARENCY" ), genGroup,
|
||||||
LightApp_Preferences::IntSpin, "Geometry", "transparency" );
|
LightApp_Preferences::IntSpin, "Geometry", "transparency" );
|
||||||
|
|
||||||
int defl = addPreference( tr( "PREF_DEFLECTION" ), genGroup,
|
int defl = addPreference( tr( "PREF_DEFLECTION" ), genGroup,
|
||||||
LightApp_Preferences::DblSpin, "Geometry", "deflection_coeff" );
|
LightApp_Preferences::DblSpin, "Geometry", "deflection_coeff" );
|
||||||
|
@ -548,71 +548,6 @@ TopoDS_Shape GEOMImpl_BooleanDriver::performOperation
|
|||||||
if ( !GEOMUtils::CheckShape(aShape, true) && !GEOMUtils::FixShapeTolerance(aShape) )
|
if ( !GEOMUtils::CheckShape(aShape, true) && !GEOMUtils::FixShapeTolerance(aShape) )
|
||||||
Standard_ConstructionError::Raise("Boolean operation aborted : non valid shape result");
|
Standard_ConstructionError::Raise("Boolean operation aborted : non valid shape result");
|
||||||
|
|
||||||
// BEGIN: Mantis issue 0021060: always limit tolerance of BOP result
|
|
||||||
// 1. Get shape parameters for comparison
|
|
||||||
int nbTypes [TopAbs_SHAPE];
|
|
||||||
{
|
|
||||||
for (int iType = 0; iType < TopAbs_SHAPE; ++iType)
|
|
||||||
nbTypes[iType] = 0;
|
|
||||||
nbTypes[aShape.ShapeType()]++;
|
|
||||||
|
|
||||||
TopTools_MapOfShape aMapOfShape;
|
|
||||||
aMapOfShape.Add(aShape);
|
|
||||||
TopTools_ListOfShape aListOfShape;
|
|
||||||
aListOfShape.Append(aShape);
|
|
||||||
|
|
||||||
TopTools_ListIteratorOfListOfShape itL (aListOfShape);
|
|
||||||
for (; itL.More(); itL.Next()) {
|
|
||||||
TopoDS_Iterator it (itL.Value());
|
|
||||||
for (; it.More(); it.Next()) {
|
|
||||||
TopoDS_Shape s = it.Value();
|
|
||||||
if (aMapOfShape.Add(s)) {
|
|
||||||
aListOfShape.Append(s);
|
|
||||||
nbTypes[s.ShapeType()]++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 2. Limit tolerance
|
|
||||||
TopoDS_Shape aShapeCopy;
|
|
||||||
TColStd_IndexedDataMapOfTransientTransient aMapTShapes;
|
|
||||||
TNaming_CopyShape::CopyTool(aShape, aMapTShapes, aShapeCopy);
|
|
||||||
|
|
||||||
if ( GEOMUtils::FixShapeTolerance(aShapeCopy, true) ) {
|
|
||||||
int iType, nbTypesCopy [TopAbs_SHAPE];
|
|
||||||
|
|
||||||
for (iType = 0; iType < TopAbs_SHAPE; ++iType)
|
|
||||||
nbTypesCopy[iType] = 0;
|
|
||||||
nbTypesCopy[aShapeCopy.ShapeType()]++;
|
|
||||||
|
|
||||||
TopTools_MapOfShape aMapOfShape;
|
|
||||||
aMapOfShape.Add(aShapeCopy);
|
|
||||||
TopTools_ListOfShape aListOfShape;
|
|
||||||
aListOfShape.Append(aShapeCopy);
|
|
||||||
|
|
||||||
TopTools_ListIteratorOfListOfShape itL (aListOfShape);
|
|
||||||
for (; itL.More(); itL.Next()) {
|
|
||||||
TopoDS_Iterator it (itL.Value());
|
|
||||||
for (; it.More(); it.Next()) {
|
|
||||||
TopoDS_Shape s = it.Value();
|
|
||||||
if (aMapOfShape.Add(s)) {
|
|
||||||
aListOfShape.Append(s);
|
|
||||||
nbTypesCopy[s.ShapeType()]++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool isEqual = true;
|
|
||||||
for (iType = 0; iType < TopAbs_SHAPE && isEqual; ++iType) {
|
|
||||||
if (nbTypes[iType] != nbTypesCopy[iType])
|
|
||||||
isEqual = false;
|
|
||||||
}
|
|
||||||
if (isEqual)
|
|
||||||
aShape = aShapeCopy;
|
|
||||||
}
|
|
||||||
// END: Mantis issue 0021060
|
|
||||||
|
|
||||||
return aShape;
|
return aShape;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
25
src/GEOMImpl/GEOMImpl_DiskDriver.cxx
Executable file → Normal file
25
src/GEOMImpl/GEOMImpl_DiskDriver.cxx
Executable file → Normal file
@ -41,6 +41,7 @@
|
|||||||
|
|
||||||
#include <Standard_ConstructionError.hxx>
|
#include <Standard_ConstructionError.hxx>
|
||||||
#include <Precision.hxx>
|
#include <Precision.hxx>
|
||||||
|
#include <gp_Pln.hxx>
|
||||||
#include <gp_Pnt.hxx>
|
#include <gp_Pnt.hxx>
|
||||||
#include <gp_Vec.hxx>
|
#include <gp_Vec.hxx>
|
||||||
#include <gp_Circ.hxx>
|
#include <gp_Circ.hxx>
|
||||||
@ -91,12 +92,15 @@ Standard_Integer GEOMImpl_DiskDriver::Execute(TFunction_Logbook& log) const
|
|||||||
TopExp::Vertices(anE, V1, V2, Standard_True);
|
TopExp::Vertices(anE, V1, V2, Standard_True);
|
||||||
if (!V1.IsNull() && !V2.IsNull()) {
|
if (!V1.IsNull() && !V2.IsNull()) {
|
||||||
gp_Vec aV (BRep_Tool::Pnt(V1), BRep_Tool::Pnt(V2));
|
gp_Vec aV (BRep_Tool::Pnt(V1), BRep_Tool::Pnt(V2));
|
||||||
gp_Ax2 anAxes (aP, -aV);
|
gp_Ax2 anAxes (aP, aV);
|
||||||
gp_Circ aCirc (anAxes, aCI.GetRadius());
|
gp_Ax3 anAxes3(anAxes);
|
||||||
|
gp_Pln aPln(anAxes3);
|
||||||
|
gp_Ax2 anAxes1(aP, -aV);
|
||||||
|
gp_Circ aCirc (anAxes1, aCI.GetRadius());
|
||||||
TopoDS_Shape aCircle = BRepBuilderAPI_MakeEdge(aCirc).Edge();
|
TopoDS_Shape aCircle = BRepBuilderAPI_MakeEdge(aCirc).Edge();
|
||||||
BRepBuilderAPI_MakeWire MW;
|
BRepBuilderAPI_MakeWire MW;
|
||||||
MW.Add(TopoDS::Edge(aCircle));
|
MW.Add(TopoDS::Edge(aCircle));
|
||||||
BRepBuilderAPI_MakeFace MF (MW, Standard_False);
|
BRepBuilderAPI_MakeFace MF (aPln, MW);
|
||||||
aShape = MF.Shape();
|
aShape = MF.Shape();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -121,10 +125,14 @@ Standard_Integer GEOMImpl_DiskDriver::Execute(TFunction_Logbook& log) const
|
|||||||
if (gp_Vec(aP1, aP2).IsParallel(gp_Vec(aP1, aP3), Precision::Angular()))
|
if (gp_Vec(aP1, aP2).IsParallel(gp_Vec(aP1, aP3), Precision::Angular()))
|
||||||
Standard_ConstructionError::Raise("Disk creation aborted: points lay on one line");
|
Standard_ConstructionError::Raise("Disk creation aborted: points lay on one line");
|
||||||
Handle(Geom_Circle) aCirc = GC_MakeCircle(aP3, aP2, aP1).Value();
|
Handle(Geom_Circle) aCirc = GC_MakeCircle(aP3, aP2, aP1).Value();
|
||||||
|
gp_Circ aGpCirc = aCirc->Circ();
|
||||||
|
gp_Ax2 anAxes = aGpCirc.Position();
|
||||||
|
gp_Ax3 anAxes3(anAxes.Location(), -anAxes.Direction());
|
||||||
|
gp_Pln aPln(anAxes3);
|
||||||
TopoDS_Shape aCircle = BRepBuilderAPI_MakeEdge(aCirc).Edge();
|
TopoDS_Shape aCircle = BRepBuilderAPI_MakeEdge(aCirc).Edge();
|
||||||
BRepBuilderAPI_MakeWire MW;
|
BRepBuilderAPI_MakeWire MW;
|
||||||
MW.Add(TopoDS::Edge(aCircle));
|
MW.Add(TopoDS::Edge(aCircle));
|
||||||
BRepBuilderAPI_MakeFace MF (MW, Standard_False);
|
BRepBuilderAPI_MakeFace MF (aPln, MW);
|
||||||
aShape = MF.Shape();
|
aShape = MF.Shape();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -139,12 +147,15 @@ Standard_Integer GEOMImpl_DiskDriver::Execute(TFunction_Logbook& log) const
|
|||||||
else if (anOrient == 3)
|
else if (anOrient == 3)
|
||||||
aV = gp::DY();
|
aV = gp::DY();
|
||||||
|
|
||||||
gp_Ax2 anAxes (aP, -aV);
|
gp_Ax2 anAxes (aP, aV);
|
||||||
gp_Circ aCirc (anAxes, aCI.GetRadius());
|
gp_Ax2 anAxes1(aP, -aV);
|
||||||
|
gp_Ax3 anAxes3(anAxes);
|
||||||
|
gp_Pln aPln(anAxes3);
|
||||||
|
gp_Circ aCirc (anAxes1, aCI.GetRadius());
|
||||||
TopoDS_Shape aCircle = BRepBuilderAPI_MakeEdge(aCirc).Edge();
|
TopoDS_Shape aCircle = BRepBuilderAPI_MakeEdge(aCirc).Edge();
|
||||||
BRepBuilderAPI_MakeWire MW;
|
BRepBuilderAPI_MakeWire MW;
|
||||||
MW.Add(TopoDS::Edge(aCircle));
|
MW.Add(TopoDS::Edge(aCircle));
|
||||||
BRepBuilderAPI_MakeFace MF (MW, Standard_False);
|
BRepBuilderAPI_MakeFace MF (aPln, MW);
|
||||||
aShape = MF.Shape();
|
aShape = MF.Shape();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -83,6 +83,20 @@ GetCreationInformation(std::string& theOperationName,
|
|||||||
AddParam( theParams, "Step", data.GetStepID() );
|
AddParam( theParams, "Step", data.GetStepID() );
|
||||||
AddParam( theParams, "Stamp", data.GetStepStamp() );
|
AddParam( theParams, "Stamp", data.GetStepStamp() );
|
||||||
}
|
}
|
||||||
|
else if ( funType == GEOM_Field::FUN_CHANGE_COMP_NAMES )
|
||||||
|
{
|
||||||
|
theOperationName = "Change component names";
|
||||||
|
}
|
||||||
|
else if ( funType == GEOM_Field::FUN_CHANGE_STEP_STAMP )
|
||||||
|
{
|
||||||
|
theOperationName = "Change stamp";
|
||||||
|
AddParam( theParams, "Stamp", data.GetStepStamp() );
|
||||||
|
}
|
||||||
|
else if ( funType == GEOM_Field::FUN_CHANGE_VALUE )
|
||||||
|
{
|
||||||
|
theOperationName = "FIELD_EDIT";//"Change values";
|
||||||
|
AddParam( theParams, "Values", "..." );
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
@ -24,10 +24,10 @@
|
|||||||
|
|
||||||
#include "GEOM_Function.hxx"
|
#include "GEOM_Function.hxx"
|
||||||
|
|
||||||
#define PROJECTION_ARG_SHAPE 1
|
#define PROJCYL_ARG_SHAPE 1
|
||||||
#define PROJECTION_ARG_RADIUS 2
|
#define PROJCYL_ARG_RADIUS 2
|
||||||
#define PROJECTION_ARG_START_ANGLE 3
|
#define PROJCYL_ARG_START_ANGLE 3
|
||||||
#define PROJECTION_ARG_ANGLE_LENGTH 4
|
#define PROJCYL_ARG_ANGLE_LENGTH 4
|
||||||
|
|
||||||
class GEOMImpl_IProjOnCyl
|
class GEOMImpl_IProjOnCyl
|
||||||
{
|
{
|
||||||
@ -37,22 +37,22 @@ public:
|
|||||||
GEOMImpl_IProjOnCyl(Handle(GEOM_Function) theFunction): _func(theFunction) {}
|
GEOMImpl_IProjOnCyl(Handle(GEOM_Function) theFunction): _func(theFunction) {}
|
||||||
|
|
||||||
void SetShape (const Handle(GEOM_Function) &theShape)
|
void SetShape (const Handle(GEOM_Function) &theShape)
|
||||||
{ _func->SetReference(PROJECTION_ARG_SHAPE, theShape); }
|
{ _func->SetReference(PROJCYL_ARG_SHAPE, theShape); }
|
||||||
void SetRadius (const Standard_Real theRadius)
|
void SetRadius (const Standard_Real theRadius)
|
||||||
{ _func->SetReal(PROJECTION_ARG_RADIUS, theRadius); }
|
{ _func->SetReal(PROJCYL_ARG_RADIUS, theRadius); }
|
||||||
void SetStartAngle (const Standard_Real theStartAngle)
|
void SetStartAngle (const Standard_Real theStartAngle)
|
||||||
{ _func->SetReal(PROJECTION_ARG_START_ANGLE, theStartAngle); }
|
{ _func->SetReal(PROJCYL_ARG_START_ANGLE, theStartAngle); }
|
||||||
void SetAngleLength (const Standard_Real theAngleLength)
|
void SetAngleLength (const Standard_Real theAngleLength)
|
||||||
{ _func->SetReal(PROJECTION_ARG_ANGLE_LENGTH, theAngleLength); }
|
{ _func->SetReal(PROJCYL_ARG_ANGLE_LENGTH, theAngleLength); }
|
||||||
|
|
||||||
Handle(GEOM_Function) GetShape()
|
Handle(GEOM_Function) GetShape()
|
||||||
{ return _func->GetReference(PROJECTION_ARG_SHAPE); }
|
{ return _func->GetReference(PROJCYL_ARG_SHAPE); }
|
||||||
Standard_Real GetRadius()
|
Standard_Real GetRadius()
|
||||||
{ return _func->GetReal(PROJECTION_ARG_RADIUS ); }
|
{ return _func->GetReal(PROJCYL_ARG_RADIUS ); }
|
||||||
Standard_Real GetStartAngle()
|
Standard_Real GetStartAngle()
|
||||||
{ return _func->GetReal(PROJECTION_ARG_START_ANGLE ); }
|
{ return _func->GetReal(PROJCYL_ARG_START_ANGLE ); }
|
||||||
Standard_Real GetAngleLength()
|
Standard_Real GetAngleLength()
|
||||||
{ return _func->GetReal(PROJECTION_ARG_ANGLE_LENGTH ); }
|
{ return _func->GetReal(PROJCYL_ARG_ANGLE_LENGTH ); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
@ -2787,9 +2787,31 @@ Handle(TColStd_HSequenceOfInteger)
|
|||||||
return aSeqOfIDs;
|
return aSeqOfIDs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Compute classification tolerance.
|
||||||
|
TopTools_IndexedMapOfShape aMapVtx;
|
||||||
|
Standard_Real aTol = Precision::Confusion();
|
||||||
|
|
||||||
|
TopExp::MapShapes(aShape, TopAbs_VERTEX, aMapVtx);
|
||||||
|
|
||||||
|
Standard_Integer i;
|
||||||
|
Standard_Integer aNbVtx = aMapVtx.Extent();
|
||||||
|
|
||||||
|
for (i = 1; i <= aNbVtx; ++i) {
|
||||||
|
const TopoDS_Vertex aVtx = TopoDS::Vertex(aMapVtx.FindKey(i));
|
||||||
|
const Standard_Real aVtxTol = BRep_Tool::Tolerance(aVtx);
|
||||||
|
|
||||||
|
if (aTol < aVtxTol) {
|
||||||
|
aTol = aVtxTol;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bound the tolerance value.
|
||||||
|
if (aTol > 0.0001) {
|
||||||
|
aTol = 0.0001;
|
||||||
|
}
|
||||||
|
|
||||||
// Call algo
|
// Call algo
|
||||||
GEOMAlgo_FinderShapeOn2 aFinder;
|
GEOMAlgo_FinderShapeOn2 aFinder;
|
||||||
Standard_Real aTol = 0.0001; // default value
|
|
||||||
|
|
||||||
Handle(GEOMAlgo_ClsfSolid) aClsfSolid = new GEOMAlgo_ClsfSolid;
|
Handle(GEOMAlgo_ClsfSolid) aClsfSolid = new GEOMAlgo_ClsfSolid;
|
||||||
aClsfSolid->SetShape(aCheckShape);
|
aClsfSolid->SetShape(aCheckShape);
|
||||||
|
@ -210,7 +210,7 @@ GetCreationInformation(std::string& theOperationName,
|
|||||||
break;
|
break;
|
||||||
case OFFSET_THICKENING:
|
case OFFSET_THICKENING:
|
||||||
case OFFSET_THICKENING_COPY:
|
case OFFSET_THICKENING_COPY:
|
||||||
theOperationName = "MakeThickening";
|
theOperationName = "THICKNESS";
|
||||||
AddParam( theParams, "Object", aCI.GetShape() );
|
AddParam( theParams, "Object", aCI.GetShape() );
|
||||||
AddParam( theParams, "Offset", aCI.GetParam() ? -aCI.GetValue() : aCI.GetValue() );
|
AddParam( theParams, "Offset", aCI.GetParam() ? -aCI.GetValue() : aCI.GetValue() );
|
||||||
{
|
{
|
||||||
|
@ -473,37 +473,39 @@ GetCreationInformation(std::string& theOperationName,
|
|||||||
|
|
||||||
switch ( aType ) {
|
switch ( aType ) {
|
||||||
case PROJECTION_COPY:
|
case PROJECTION_COPY:
|
||||||
{
|
{
|
||||||
GEOMImpl_IMirror aCI( function );
|
GEOMImpl_IMirror aCI( function );
|
||||||
|
|
||||||
AddParam( theParams, "Source object", aCI.GetOriginal() );
|
AddParam( theParams, "Source object", aCI.GetOriginal() );
|
||||||
AddParam( theParams, "Target face", aCI.GetPlane() );
|
AddParam( theParams, "Target face", aCI.GetPlane() );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PROJECTION_ON_WIRE:
|
case PROJECTION_ON_WIRE:
|
||||||
{
|
{
|
||||||
GEOMImpl_IProjection aProj (function);
|
GEOMImpl_IProjection aProj (function);
|
||||||
|
|
||||||
AddParam(theParams, "Point", aProj.GetPoint());
|
AddParam(theParams, "Point", aProj.GetPoint());
|
||||||
AddParam(theParams, "Shape", aProj.GetShape());
|
AddParam(theParams, "Shape", aProj.GetShape());
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PROJECTION_ON_CYLINDER:
|
case PROJECTION_ON_CYLINDER:
|
||||||
{
|
{
|
||||||
GEOMImpl_IProjOnCyl aProj (function);
|
theOperationName = "PROJ_ON_CYL";
|
||||||
const Standard_Real aLengthAngle = aProj.GetAngleLength();
|
|
||||||
|
|
||||||
AddParam(theParams, "Shape", aProj.GetShape());
|
GEOMImpl_IProjOnCyl aProj (function);
|
||||||
AddParam(theParams, "Radius", aProj.GetRadius());
|
const Standard_Real aLengthAngle = aProj.GetAngleLength();
|
||||||
AddParam(theParams, "Start angle", aProj.GetStartAngle());
|
|
||||||
|
|
||||||
if (aLengthAngle >= 0.) {
|
AddParam(theParams, "Shape", aProj.GetShape());
|
||||||
AddParam(theParams, "Length angle", aLengthAngle);
|
AddParam(theParams, "Radius", aProj.GetRadius());
|
||||||
}
|
AddParam(theParams, "Start angle", aProj.GetStartAngle());
|
||||||
|
|
||||||
break;
|
if (aLengthAngle >= 0.) {
|
||||||
|
AddParam(theParams, "Length angle", aLengthAngle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -661,7 +663,7 @@ TopoDS_Shape GEOMImpl_ProjectionDriver::projectOnCylinder
|
|||||||
GEOMUtils::Handle(HTrsfCurve2d) aTrsfCurve =
|
GEOMUtils::Handle(HTrsfCurve2d) aTrsfCurve =
|
||||||
new GEOMUtils::HTrsfCurve2d(aCurve, aPar[0], aPar[1], aTrsf2d);
|
new GEOMUtils::HTrsfCurve2d(aCurve, aPar[0], aPar[1], aTrsf2d);
|
||||||
Approx_Curve2d aConv (aTrsfCurve, aPar[0], aPar[1],
|
Approx_Curve2d aConv (aTrsfCurve, aPar[0], aPar[1],
|
||||||
aUResol, aVResol, GeomAbs_C1,
|
aUResol, aVResol, GeomAbs_C1,
|
||||||
9, 1000);
|
9, 1000);
|
||||||
|
|
||||||
if (!aConv.IsDone() && !aConv.HasResult()) {
|
if (!aConv.IsDone() && !aConv.HasResult()) {
|
||||||
|
@ -59,6 +59,8 @@
|
|||||||
#include <ShapeAnalysis.hxx>
|
#include <ShapeAnalysis.hxx>
|
||||||
#include <ShapeAnalysis_FreeBounds.hxx>
|
#include <ShapeAnalysis_FreeBounds.hxx>
|
||||||
|
|
||||||
|
#include <TNaming_CopyShape.hxx>
|
||||||
|
|
||||||
#include <TopAbs.hxx>
|
#include <TopAbs.hxx>
|
||||||
#include <TopExp.hxx>
|
#include <TopExp.hxx>
|
||||||
#include <TopExp_Explorer.hxx>
|
#include <TopExp_Explorer.hxx>
|
||||||
@ -86,6 +88,7 @@
|
|||||||
#include <GeomConvert.hxx>
|
#include <GeomConvert.hxx>
|
||||||
#include <GeomLProp.hxx>
|
#include <GeomLProp.hxx>
|
||||||
|
|
||||||
|
#include <TColStd_IndexedDataMapOfTransientTransient.hxx>
|
||||||
#include <TColStd_SequenceOfReal.hxx>
|
#include <TColStd_SequenceOfReal.hxx>
|
||||||
#include <TColStd_HSequenceOfTransient.hxx>
|
#include <TColStd_HSequenceOfTransient.hxx>
|
||||||
#include <TColStd_Array1OfReal.hxx>
|
#include <TColStd_Array1OfReal.hxx>
|
||||||
@ -208,6 +211,7 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const
|
|||||||
// 1. Extract all edges from the given arguments
|
// 1. Extract all edges from the given arguments
|
||||||
TopTools_MapOfShape aMapEdges;
|
TopTools_MapOfShape aMapEdges;
|
||||||
Handle(TopTools_HSequenceOfShape) aSeqEdgesIn = new TopTools_HSequenceOfShape;
|
Handle(TopTools_HSequenceOfShape) aSeqEdgesIn = new TopTools_HSequenceOfShape;
|
||||||
|
TColStd_IndexedDataMapOfTransientTransient aMapTShapes;
|
||||||
|
|
||||||
for (ind = 1; ind <= nbshapes; ind++) {
|
for (ind = 1; ind <= nbshapes; ind++) {
|
||||||
Handle(GEOM_Function) aRefSh_i = Handle(GEOM_Function)::DownCast(aShapes->Value(ind));
|
Handle(GEOM_Function) aRefSh_i = Handle(GEOM_Function)::DownCast(aShapes->Value(ind));
|
||||||
@ -216,7 +220,12 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const
|
|||||||
TopExp_Explorer anExpE_i (aSh_i, TopAbs_EDGE);
|
TopExp_Explorer anExpE_i (aSh_i, TopAbs_EDGE);
|
||||||
for (; anExpE_i.More(); anExpE_i.Next()) {
|
for (; anExpE_i.More(); anExpE_i.Next()) {
|
||||||
if (aMapEdges.Add(anExpE_i.Current())) {
|
if (aMapEdges.Add(anExpE_i.Current())) {
|
||||||
aSeqEdgesIn->Append(anExpE_i.Current());
|
// Copy the original shape.
|
||||||
|
TopoDS_Shape aShapeCopy;
|
||||||
|
|
||||||
|
TNaming_CopyShape::CopyTool
|
||||||
|
(anExpE_i.Current(), aMapTShapes, aShapeCopy);
|
||||||
|
aSeqEdgesIn->Append(aShapeCopy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -55,7 +55,7 @@
|
|||||||
// Below macro specifies how the closed point set is processed (issue 0022885).
|
// Below macro specifies how the closed point set is processed (issue 0022885).
|
||||||
// See below for more information.
|
// See below for more information.
|
||||||
// Currently solution 4 is chosen!
|
// Currently solution 4 is chosen!
|
||||||
#define BSPLINE_PROCESS_CLOSED_PNTSET 4
|
#define BSPLINE_PROCESS_CLOSED_PNTSET 2
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
@ -152,6 +152,8 @@ Standard_Integer GEOMImpl_SplineDriver::Execute(TFunction_Logbook& log) const
|
|||||||
|
|
||||||
// reorder points if required (bspline only)
|
// reorder points if required (bspline only)
|
||||||
if ((aType == SPLINE_INTERPOLATION || aType == SPLINE_INTERPOL_TANGENTS) && aCI.GetDoReordering()) {
|
if ((aType == SPLINE_INTERPOLATION || aType == SPLINE_INTERPOL_TANGENTS) && aCI.GetDoReordering()) {
|
||||||
|
int nbDup = 0;
|
||||||
|
gp_Pnt pPrev = points->Value(1);
|
||||||
for (int i = 1; i < length - 1; i++) {
|
for (int i = 1; i < length - 1; i++) {
|
||||||
gp_Pnt pi = points->Value(i);
|
gp_Pnt pi = points->Value(i);
|
||||||
int nearest = 0;
|
int nearest = 0;
|
||||||
@ -175,6 +177,22 @@ Standard_Integer GEOMImpl_SplineDriver::Execute(TFunction_Logbook& log) const
|
|||||||
points->SetValue(j, points->Value(j-1));
|
points->SetValue(j, points->Value(j-1));
|
||||||
points->SetValue(i+1, p);
|
points->SetValue(i+1, p);
|
||||||
}
|
}
|
||||||
|
if ( pPrev.Distance(points->Value(i+1)) <= Precision::Confusion() )
|
||||||
|
nbDup++;
|
||||||
|
else
|
||||||
|
pPrev = points->Value(i+1);
|
||||||
|
}
|
||||||
|
if ( nbDup > 0 ) {
|
||||||
|
Handle(TColgp_HArray1OfPnt) tmpPoints = new TColgp_HArray1OfPnt(1, length-nbDup);
|
||||||
|
int j = 1;
|
||||||
|
for (int i = 1; i <= length; i++) {
|
||||||
|
if (i == 1 || pPrev.Distance(points->Value(i)) > Precision::Confusion() ) {
|
||||||
|
tmpPoints->SetValue(j++, points->Value(i));
|
||||||
|
pPrev = points->Value(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
points = tmpPoints;
|
||||||
|
length = points->Length();
|
||||||
}
|
}
|
||||||
} // end of reordering
|
} // end of reordering
|
||||||
|
|
||||||
|
@ -1,7 +1,4 @@
|
|||||||
// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE
|
// Copyright (C) 2015 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||||
//
|
|
||||||
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
|
||||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
|
||||||
//
|
//
|
||||||
// This library is free software; you can redistribute it and/or
|
// This library is free software; you can redistribute it and/or
|
||||||
// modify it under the terms of the GNU Lesser General Public
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
@ -1,7 +1,4 @@
|
|||||||
// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE
|
// Copyright (C) 2015 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||||
//
|
|
||||||
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
|
||||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
|
||||||
//
|
//
|
||||||
// This library is free software; you can redistribute it and/or
|
// This library is free software; you can redistribute it and/or
|
||||||
// modify it under the terms of the GNU Lesser General Public
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
@ -1,7 +1,4 @@
|
|||||||
// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE
|
// Copyright (C) 2015 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||||
//
|
|
||||||
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
|
||||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
|
||||||
//
|
//
|
||||||
// This library is free software; you can redistribute it and/or
|
// This library is free software; you can redistribute it and/or
|
||||||
// modify it under the terms of the GNU Lesser General Public
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
@ -1,7 +1,4 @@
|
|||||||
// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE
|
// Copyright (C) 2015 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||||
//
|
|
||||||
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
|
||||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
|
||||||
//
|
//
|
||||||
// This library is free software; you can redistribute it and/or
|
// This library is free software; you can redistribute it and/or
|
||||||
// modify it under the terms of the GNU Lesser General Public
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
@ -1,7 +1,4 @@
|
|||||||
// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE
|
// Copyright (C) 2015 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||||
//
|
|
||||||
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
|
||||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
|
||||||
//
|
//
|
||||||
// This library is free software; you can redistribute it and/or
|
// This library is free software; you can redistribute it and/or
|
||||||
// modify it under the terms of the GNU Lesser General Public
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
@ -1,7 +1,4 @@
|
|||||||
// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE
|
// Copyright (C) 2015 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||||
//
|
|
||||||
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
|
||||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
|
||||||
//
|
//
|
||||||
// This library is free software; you can redistribute it and/or
|
// This library is free software; you can redistribute it and/or
|
||||||
// modify it under the terms of the GNU Lesser General Public
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
@ -268,50 +268,59 @@ char* GEOM_BaseObject_i::GetParameters()
|
|||||||
*/
|
*/
|
||||||
//================================================================================
|
//================================================================================
|
||||||
|
|
||||||
GEOM::CreationInformation* GEOM_BaseObject_i::GetCreationInformation()
|
GEOM::CreationInformationSeq* GEOM_BaseObject_i::GetCreationInformation()
|
||||||
{
|
{
|
||||||
GEOM::CreationInformation_var info = new GEOM::CreationInformation;
|
GEOM::CreationInformationSeq_var info = new GEOM::CreationInformationSeq();
|
||||||
|
|
||||||
Handle(GEOM_BaseDriver) driver =
|
int nbFun = _impl->GetNbFunctions();
|
||||||
Handle(GEOM_BaseDriver)::DownCast( _impl->GetCreationDriver() );
|
info->length( nbFun );
|
||||||
if ( !driver.IsNull() )
|
int nbI = 0;
|
||||||
|
for ( int i = 1; i <= nbFun; ++i )
|
||||||
{
|
{
|
||||||
std::vector<GEOM_Param> params;
|
Handle(GEOM_BaseDriver) driver =
|
||||||
std::string operationName;
|
Handle(GEOM_BaseDriver)::DownCast( _impl->GetCreationDriver( i ));
|
||||||
try
|
if ( !driver.IsNull() )
|
||||||
{
|
{
|
||||||
OCC_CATCH_SIGNALS;
|
std::vector<GEOM_Param> params;
|
||||||
if ( driver->GetCreationInformation( operationName, params ))
|
std::string operationName;
|
||||||
|
try
|
||||||
{
|
{
|
||||||
info->operationName = operationName.c_str();
|
OCC_CATCH_SIGNALS;
|
||||||
info->params.length( params.size() );
|
if ( driver->GetCreationInformation( operationName, params ))
|
||||||
for ( size_t i = 0; i < params.size(); ++i )
|
|
||||||
{
|
{
|
||||||
info->params[i].name = params[i].name.c_str();
|
info[nbI].operationName = operationName.c_str();
|
||||||
info->params[i].value = params[i].value.c_str();
|
info[nbI].params.length( params.size() );
|
||||||
|
for ( size_t i = 0; i < params.size(); ++i )
|
||||||
|
{
|
||||||
|
info[nbI].params[i].name = params[i].name.c_str();
|
||||||
|
info[nbI].params[i].value = params[i].value.c_str();
|
||||||
|
}
|
||||||
|
nbI++;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
#ifdef _DEBUG_
|
#ifdef _DEBUG_
|
||||||
if ( operationName.empty() )
|
if ( operationName.empty() )
|
||||||
|
{
|
||||||
|
cout << endl << endl << endl << "Warning: " << endl << "Dear developer!!!" << endl
|
||||||
|
<< " Consider implementing "
|
||||||
|
<< typeid(*(driver.operator->())).name() << "::GetCreationInformation() " << endl
|
||||||
|
<< " for the case of operation which has created '" << GetName() << "' object" << endl
|
||||||
|
<< "PLEEEEEEEASE" << endl
|
||||||
|
<< "\tPLEEEEEEEASE" << endl
|
||||||
|
<< "\t\tPLEEEEEEEASE" << endl
|
||||||
|
<< "\t\t\tPLEEEEEEEASE" << endl
|
||||||
|
<< "\t\t\t\tPLEEEEEEEASE" << endl;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
catch(...)
|
||||||
{
|
{
|
||||||
cout << endl << endl << endl << "Warning: " << endl << "Dear developer!!!" << endl
|
|
||||||
<< " Consider implementing "
|
|
||||||
<< typeid(*(driver.operator->())).name() << "::GetCreationInformation() " << endl
|
|
||||||
<< " for the case of operation which has created '" << GetName() << "' object" << endl
|
|
||||||
<< "PLEEEEEEEASE" << endl
|
|
||||||
<< "\tPLEEEEEEEASE" << endl
|
|
||||||
<< "\t\tPLEEEEEEEASE" << endl
|
|
||||||
<< "\t\t\tPLEEEEEEEASE" << endl
|
|
||||||
<< "\t\t\t\tPLEEEEEEEASE" << endl;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{
|
|
||||||
#ifdef _DEBUG_
|
#ifdef _DEBUG_
|
||||||
cout << "Ecxeption in GEOM_BaseObject_i::GetCreationInformation()" << endl;
|
cout << "Ecxeption in GEOM_BaseObject_i::GetCreationInformation()" << endl;
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
info->length( nbI );
|
||||||
|
|
||||||
return info._retn();
|
return info._retn();
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,7 @@ class GEOM_I_EXPORT GEOM_BaseObject_i : public virtual POA_GEOM::GEOM_BaseObject
|
|||||||
|
|
||||||
virtual char* GetParameters();
|
virtual char* GetParameters();
|
||||||
|
|
||||||
virtual GEOM::CreationInformation* GetCreationInformation();
|
virtual GEOM::CreationInformationSeq* GetCreationInformation();
|
||||||
|
|
||||||
Handle(GEOM_BaseObject) GetImpl() { return _impl; }
|
Handle(GEOM_BaseObject) GetImpl() { return _impl; }
|
||||||
|
|
||||||
|
@ -320,24 +320,25 @@ SALOMEDS::SObject_ptr GEOM_Gen_i::PublishInStudy(SALOMEDS::Study_ptr theStudy,
|
|||||||
aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_LCS");
|
aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_LCS");
|
||||||
aNamePrefix = "LocalCS_";
|
aNamePrefix = "LocalCS_";
|
||||||
} else if ( mytype >= USER_TYPE_EX ) {
|
} else if ( mytype >= USER_TYPE_EX ) {
|
||||||
char buf[20];
|
char buf[20];
|
||||||
sprintf( buf, "%d", aBaseObj->GetType() );
|
sprintf( buf, "%d", aBaseObj->GetType() );
|
||||||
GEOM::CreationInformation_var info = aBaseObj->GetCreationInformation();
|
GEOM::CreationInformationSeq_var infoSeq = aBaseObj->GetCreationInformation();
|
||||||
std::string plgId;
|
std::string plgId;
|
||||||
for ( size_t i = 0; i < info->params.length(); ++i ) {
|
for ( size_t j = 0; j < infoSeq->length(); ++j )
|
||||||
std::string param_name = info->params[i].name.in();
|
for ( size_t i = 0; i < infoSeq[j].params.length(); ++i ) {
|
||||||
std::string param_value = info->params[i].value.in();
|
std::string param_name = infoSeq[j].params[i].name.in();
|
||||||
if( param_name == PLUGIN_NAME) {
|
std::string param_value = infoSeq[j].params[i].value.in();
|
||||||
plgId = param_value;
|
if( param_name == PLUGIN_NAME) {
|
||||||
break;
|
plgId = param_value;
|
||||||
}
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(plgId.length() > 0 ) {
|
if(plgId.length() > 0 ) {
|
||||||
plgId += "::";
|
plgId += "::";
|
||||||
}
|
}
|
||||||
plgId +="ICON_OBJBROWSER_";
|
plgId +="ICON_OBJBROWSER_";
|
||||||
plgId += buf;
|
plgId += buf;
|
||||||
aResultSO->SetAttrString("AttributePixMap",plgId.c_str());
|
aResultSO->SetAttrString("AttributePixMap",plgId.c_str());
|
||||||
} else if ( mytype > USER_TYPE ) {
|
} else if ( mytype > USER_TYPE ) {
|
||||||
char buf[20];
|
char buf[20];
|
||||||
sprintf( buf, "%d", aBaseObj->GetType() );
|
sprintf( buf, "%d", aBaseObj->GetType() );
|
||||||
|
@ -3055,10 +3055,12 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen):
|
|||||||
theR,theH,theA,Parameters = ParseParameters(theR, theH, theA)
|
theR,theH,theA,Parameters = ParseParameters(theR, theH, theA)
|
||||||
if flag:
|
if flag:
|
||||||
theA = theA*math.pi/180.
|
theA = theA*math.pi/180.
|
||||||
anObj = self.PrimOp.MakeCylinderPntVecRHA(thePnt, theAxis, theR, theH, theA)
|
if theA<=0. or theA>=2*math.pi:
|
||||||
RaiseIfFailed("MakeCylinderPntVecRHA", self.PrimOp)
|
raise ValueError("The angle parameter should be strictly between 0 and 2*pi.")
|
||||||
anObj.SetParameters(Parameters)
|
anObj = self.PrimOp.MakeCylinderPntVecRHA(thePnt, theAxis, theR, theH, theA)
|
||||||
self._autoPublish(anObj, theName, "cylinder")
|
RaiseIfFailed("MakeCylinderPntVecRHA", self.PrimOp)
|
||||||
|
anObj.SetParameters(Parameters)
|
||||||
|
self._autoPublish(anObj, theName, "cylinder")
|
||||||
return anObj
|
return anObj
|
||||||
|
|
||||||
## Create a cylinder with given radius and height at
|
## Create a cylinder with given radius and height at
|
||||||
@ -3136,6 +3138,8 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen):
|
|||||||
theR,theH,theA,Parameters = ParseParameters(theR, theH, theA)
|
theR,theH,theA,Parameters = ParseParameters(theR, theH, theA)
|
||||||
if flag:
|
if flag:
|
||||||
theA = theA*math.pi/180.
|
theA = theA*math.pi/180.
|
||||||
|
if theA<=0. or theA>=2*math.pi:
|
||||||
|
raise ValueError("The angle parameter should be strictly between 0 and 2*pi.")
|
||||||
anObj = self.PrimOp.MakeCylinderRHA(theR, theH, theA)
|
anObj = self.PrimOp.MakeCylinderRHA(theR, theH, theA)
|
||||||
RaiseIfFailed("MakeCylinderRHA", self.PrimOp)
|
RaiseIfFailed("MakeCylinderRHA", self.PrimOp)
|
||||||
anObj.SetParameters(Parameters)
|
anObj.SetParameters(Parameters)
|
||||||
@ -4472,7 +4476,7 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen):
|
|||||||
# end of l3_complex
|
# end of l3_complex
|
||||||
## @}
|
## @}
|
||||||
|
|
||||||
## @addtogroup l3_advanced
|
## @addtogroup l3_basic_go
|
||||||
## @{
|
## @{
|
||||||
|
|
||||||
## Create a linear edge with specified ends.
|
## Create a linear edge with specified ends.
|
||||||
@ -4904,7 +4908,7 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen):
|
|||||||
self._autoPublish(anObj, theName, "solid")
|
self._autoPublish(anObj, theName, "solid")
|
||||||
return anObj
|
return anObj
|
||||||
|
|
||||||
# end of l3_advanced
|
# end of l3_basic_go
|
||||||
## @}
|
## @}
|
||||||
|
|
||||||
## @addtogroup l2_measure
|
## @addtogroup l2_measure
|
||||||
@ -7375,7 +7379,7 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen):
|
|||||||
Returns:
|
Returns:
|
||||||
New GEOM.GEOM_Object, containing copies of theShapes without coincident faces.
|
New GEOM.GEOM_Object, containing copies of theShapes without coincident faces.
|
||||||
"""
|
"""
|
||||||
anObj = self.ShapesOp.MakeGlueFacesByList(ToList(theShapes), theTolerance, theFaces,
|
anObj = self.ShapesOp.MakeGlueFacesByList(ToList(theShapes), theTolerance, ToList(theFaces),
|
||||||
doKeepNonSolids, doGlueAllEdges)
|
doKeepNonSolids, doGlueAllEdges)
|
||||||
if anObj is None:
|
if anObj is None:
|
||||||
raise RuntimeError, "MakeGlueFacesByList : " + self.ShapesOp.GetErrorCode()
|
raise RuntimeError, "MakeGlueFacesByList : " + self.ShapesOp.GetErrorCode()
|
||||||
@ -9161,7 +9165,7 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen):
|
|||||||
self._autoPublish(anObj, theName, "projection")
|
self._autoPublish(anObj, theName, "projection")
|
||||||
return anObj
|
return anObj
|
||||||
|
|
||||||
## Create a projection projection of the given point on a wire or an edge.
|
## Create a projection of the given point on a wire or an edge.
|
||||||
# If there are no solutions or there are 2 or more solutions It throws an
|
# If there are no solutions or there are 2 or more solutions It throws an
|
||||||
# exception.
|
# exception.
|
||||||
# @param thePoint the point to be projected.
|
# @param thePoint the point to be projected.
|
||||||
@ -9179,7 +9183,7 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen):
|
|||||||
@ManageTransactions("TrsfOp")
|
@ManageTransactions("TrsfOp")
|
||||||
def MakeProjectionOnWire(self, thePoint, theWire, theName=None):
|
def MakeProjectionOnWire(self, thePoint, theWire, theName=None):
|
||||||
"""
|
"""
|
||||||
Create a projection projection of the given point on a wire or an edge.
|
Create a projection of the given point on a wire or an edge.
|
||||||
If there are no solutions or there are 2 or more solutions It throws an
|
If there are no solutions or there are 2 or more solutions It throws an
|
||||||
exception.
|
exception.
|
||||||
|
|
||||||
@ -10966,14 +10970,17 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen):
|
|||||||
return aDict
|
return aDict
|
||||||
|
|
||||||
def GetCreationInformation(self, theShape):
|
def GetCreationInformation(self, theShape):
|
||||||
info = theShape.GetCreationInformation()
|
res = ''
|
||||||
# operationName
|
infos = theShape.GetCreationInformation()
|
||||||
opName = info.operationName
|
for info in infos:
|
||||||
if not opName: opName = "no info available"
|
# operationName
|
||||||
res = "Operation: " + opName
|
opName = info.operationName
|
||||||
# parameters
|
if not opName: opName = "no info available"
|
||||||
for parVal in info.params:
|
if res: res += "\n"
|
||||||
res += " \n %s = %s" % ( parVal.name, parVal.value )
|
res += "Operation: " + opName
|
||||||
|
# parameters
|
||||||
|
for parVal in info.params:
|
||||||
|
res += "\n \t%s = %s" % ( parVal.name, parVal.value )
|
||||||
return res
|
return res
|
||||||
|
|
||||||
## Get a point, situated at the centre of mass of theShape.
|
## Get a point, situated at the centre of mass of theShape.
|
||||||
|
@ -50,6 +50,10 @@ ADD_DEFINITIONS(
|
|||||||
${QT_DEFINITIONS}
|
${QT_DEFINITIONS}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
IF(WIN32)
|
||||||
|
ADD_DEFINITIONS(-DNOGDI)
|
||||||
|
ENDIF(WIN32)
|
||||||
|
|
||||||
# libraries to link to
|
# libraries to link to
|
||||||
SET(_link_LIBRARIES
|
SET(_link_LIBRARIES
|
||||||
GEOMObject
|
GEOMObject
|
||||||
|
@ -443,11 +443,17 @@ void GroupGUI_GroupDlg::SetEditCurrentArgument()
|
|||||||
if (send == mySelBtn) {
|
if (send == mySelBtn) {
|
||||||
myEditCurrentArgument = myMainName;
|
myEditCurrentArgument = myMainName;
|
||||||
myShape2Name->setText("");
|
myShape2Name->setText("");
|
||||||
|
mySelBtn->setDown(true);
|
||||||
|
mySelBtn2->setDown(false);
|
||||||
}
|
}
|
||||||
else if (send == mySelBtn2 || sender() == myRestrictGroup) {
|
else if (send == mySelBtn2 || sender() == myRestrictGroup) {
|
||||||
setInPlaceObj(GEOM::GEOM_Object::_nil());
|
setInPlaceObj(GEOM::GEOM_Object::_nil());
|
||||||
myShape2Name->setText("");
|
myShape2Name->setText("");
|
||||||
if (subSelectionWay() != ALL_SUBSHAPES) {
|
if ( send == mySelBtn2 ) {
|
||||||
|
mySelBtn2->setDown(true);
|
||||||
|
mySelBtn->setDown(false);
|
||||||
|
}
|
||||||
|
if (subSelectionWay() != ALL_SUBSHAPES) {
|
||||||
myEditCurrentArgument = myShape2Name;
|
myEditCurrentArgument = myShape2Name;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -455,7 +461,11 @@ void GroupGUI_GroupDlg::SetEditCurrentArgument()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
activateSelection();
|
// activateSelection();
|
||||||
|
if(myEditCurrentArgument) {
|
||||||
|
myEditCurrentArgument->setFocus();
|
||||||
|
send->setDown(true);
|
||||||
|
}
|
||||||
|
|
||||||
updateState();
|
updateState();
|
||||||
}
|
}
|
||||||
@ -562,6 +572,9 @@ void GroupGUI_GroupDlg::SelectionIntoArgument()
|
|||||||
{
|
{
|
||||||
if (subSelectionWay() != ALL_SUBSHAPES && myEditCurrentArgument == myShape2Name) {
|
if (subSelectionWay() != ALL_SUBSHAPES && myEditCurrentArgument == myShape2Name) {
|
||||||
onGetInPlace();
|
onGetInPlace();
|
||||||
|
if( !myInPlaceObj->_is_nil() ) {
|
||||||
|
mySelBtn2->setDown(false);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -586,6 +599,7 @@ void GroupGUI_GroupDlg::SelectionIntoArgument()
|
|||||||
}
|
}
|
||||||
myMainObj = anObj;
|
myMainObj = anObj;
|
||||||
if (!CORBA::is_nil(myMainObj)) {
|
if (!CORBA::is_nil(myMainObj)) {
|
||||||
|
mySelBtn->setDown(false);
|
||||||
SALOME_View* view = GEOM_Displayer::GetActiveView();
|
SALOME_View* view = GEOM_Displayer::GetActiveView();
|
||||||
if (view) {
|
if (view) {
|
||||||
CORBA::String_var aMainEntry = myMainObj->GetStudyEntry();
|
CORBA::String_var aMainEntry = myMainObj->GetStudyEntry();
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
<name>IGESPlugin_GUI</name>
|
<name>IGESPlugin_GUI</name>
|
||||||
<message>
|
<message>
|
||||||
<source>IGES_FILES</source>
|
<source>IGES_FILES</source>
|
||||||
<translation>IGESファイル</translation>
|
<translation>IGES ファイル ( *.iges *.igs )</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>EXPORT_TITLE</source>
|
<source>EXPORT_TITLE</source>
|
||||||
|
@ -135,7 +135,7 @@ MeasureGUI_ManageDimensionsDlg::MeasureGUI_ManageDimensionsDlg( GeometryGUI* the
|
|||||||
{
|
{
|
||||||
myObjectSelector->PushButton1->click();
|
myObjectSelector->PushButton1->click();
|
||||||
}
|
}
|
||||||
|
myIsNeedRedisplay = false;
|
||||||
setHelpFileName("managing_dimensions_page.html");
|
setHelpFileName("managing_dimensions_page.html");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -809,7 +809,9 @@ void MeasureGUI_ManageDimensionsDlg::OnFinish()
|
|||||||
GEOM::propertyName( GEOM::Dimensions ),
|
GEOM::propertyName( GEOM::Dimensions ),
|
||||||
QVariant() );
|
QVariant() );
|
||||||
|
|
||||||
redisplay( myEditObject.get() );
|
if ( myIsNeedRedisplay ) {
|
||||||
|
redisplay( myEditObject.get() );
|
||||||
|
}
|
||||||
|
|
||||||
myGeomGUI->emitDimensionsUpdated( QString( myEditObject->GetStudyEntry() ) );
|
myGeomGUI->emitDimensionsUpdated( QString( myEditObject->GetStudyEntry() ) );
|
||||||
}
|
}
|
||||||
@ -894,8 +896,8 @@ void MeasureGUI_ManageDimensionsDlg::SetEditObject( const GEOM::GeomObjPtr& theO
|
|||||||
|
|
||||||
if ( myEditObject.isNull() )
|
if ( myEditObject.isNull() )
|
||||||
{
|
{
|
||||||
|
myDimensionView->TreeWidget->clear();
|
||||||
myDimensionView->setEnabled( false );
|
myDimensionView->setEnabled( false );
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -960,8 +962,6 @@ void MeasureGUI_ManageDimensionsDlg::RestoreState()
|
|||||||
myEditObject->GetStudyEntry(),
|
myEditObject->GetStudyEntry(),
|
||||||
GEOM::propertyName( GEOM::Dimensions ),
|
GEOM::propertyName( GEOM::Dimensions ),
|
||||||
QVariant() );
|
QVariant() );
|
||||||
|
|
||||||
RedisplayObject();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
@ -1112,8 +1112,8 @@ bool MeasureGUI_ManageDimensionsDlg::AllowedToCancelChanges()
|
|||||||
tr( "WRN_MSG_CHANGES_LOST" ),
|
tr( "WRN_MSG_CHANGES_LOST" ),
|
||||||
QMessageBox::Ok,
|
QMessageBox::Ok,
|
||||||
QMessageBox::Cancel );
|
QMessageBox::Cancel );
|
||||||
|
myIsNeedRedisplay = ( aResponse == QMessageBox::Ok );
|
||||||
return aResponse == QMessageBox::Ok;
|
return myIsNeedRedisplay;
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
|
@ -114,7 +114,7 @@ private:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
GEOM::GeomObjPtr myEditObject;
|
GEOM::GeomObjPtr myEditObject;
|
||||||
|
bool myIsNeedRedisplay;
|
||||||
private:
|
private:
|
||||||
DlgRef_1Sel* myObjectSelector;
|
DlgRef_1Sel* myObjectSelector;
|
||||||
MeasureGUI_1TreeWidget_4Button* myDimensionView;
|
MeasureGUI_1TreeWidget_4Button* myDimensionView;
|
||||||
|
@ -109,7 +109,7 @@ static void getEntityOwners( const Handle(AIS_InteractiveObject)& theObj,
|
|||||||
|
|
||||||
for ( sel->Init(); sel->More(); sel->Next() ) {
|
for ( sel->Init(); sel->More(); sel->Next() ) {
|
||||||
#if OCC_VERSION_LARGE > 0x06080100
|
#if OCC_VERSION_LARGE > 0x06080100
|
||||||
const SelectMgr_HSensitiveEntity aHSenEntity = sel->Sensitive();
|
const Handle(SelectMgr_SensitiveEntity) aHSenEntity = sel->Sensitive();
|
||||||
if( aHSenEntity.IsNull() )
|
if( aHSenEntity.IsNull() )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -259,6 +259,7 @@ void GEOM_VTKTrihedron::SetSize( double theSize )
|
|||||||
aRes->AddInputConnection( aSrcZ->GetOutputPort() );
|
aRes->AddInputConnection( aSrcZ->GetOutputPort() );
|
||||||
|
|
||||||
myMapper->SetInputConnection( aRes->GetOutputPort() );
|
myMapper->SetInputConnection( aRes->GetOutputPort() );
|
||||||
|
aRes->Update();
|
||||||
SALOME_Actor::SetMapper( myMapper );
|
SALOME_Actor::SetMapper( myMapper );
|
||||||
|
|
||||||
aSrcX->Delete();
|
aSrcX->Delete();
|
||||||
|
@ -411,7 +411,7 @@ bool PrimitiveGUI_CylinderDlg::isValid (QString& msg)
|
|||||||
{
|
{
|
||||||
ok = GroupDimensions->SpinBox_DX->isValid( msg, !IsPreview() ) &&
|
ok = GroupDimensions->SpinBox_DX->isValid( msg, !IsPreview() ) &&
|
||||||
GroupDimensions->SpinBox_DY->isValid( msg, !IsPreview() ) &&
|
GroupDimensions->SpinBox_DY->isValid( msg, !IsPreview() ) &&
|
||||||
( GroupDimensions->checkBox->isChecked() || GroupDimensions->SpinBox_DZ->isValid( msg, !IsPreview() ) );
|
( !GroupDimensions->checkBox->isChecked() || GroupDimensions->SpinBox_DZ->isValid( msg, !IsPreview() ) );
|
||||||
if ( GroupDimensions->checkBox->isChecked() &&
|
if ( GroupDimensions->checkBox->isChecked() &&
|
||||||
( GroupDimensions->SpinBox_DZ->value() <= 0. || GroupDimensions->SpinBox_DZ->value() >= 360. ) ) {
|
( GroupDimensions->SpinBox_DZ->value() <= 0. || GroupDimensions->SpinBox_DZ->value() >= 360. ) ) {
|
||||||
msg += tr("GEOM_CYLINDER_ANGLE_ERR") + "\n";
|
msg += tr("GEOM_CYLINDER_ANGLE_ERR") + "\n";
|
||||||
|
@ -959,6 +959,7 @@ void RepairGUI_ShapeProcessDlg::operatorChecked( QListWidgetItem * item )
|
|||||||
{
|
{
|
||||||
if ( item && item->checkState() == Qt::Checked )
|
if ( item && item->checkState() == Qt::Checked )
|
||||||
{
|
{
|
||||||
|
item->setSelected(true);
|
||||||
myStack->setCurrentIndex( myOpList->row( item ));
|
myStack->setCurrentIndex( myOpList->row( item ));
|
||||||
}
|
}
|
||||||
updateSelectAll();
|
updateSelectAll();
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
<name>STEPPlugin_GUI</name>
|
<name>STEPPlugin_GUI</name>
|
||||||
<message>
|
<message>
|
||||||
<source>STEP_FILES</source>
|
<source>STEP_FILES</source>
|
||||||
<translation>STEPファイル</translation>
|
<translation>STEP ファイル ( *.step *.stp )</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>EXPORT_TITLE</source>
|
<source>EXPORT_TITLE</source>
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
<name>STLPlugin_GUI</name>
|
<name>STLPlugin_GUI</name>
|
||||||
<message>
|
<message>
|
||||||
<source>STL_FILES</source>
|
<source>STL_FILES</source>
|
||||||
<translation>STLファイル</translation>
|
<translation>STL ファイル( *.stl )</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>EXPORT_TITLE</source>
|
<source>EXPORT_TITLE</source>
|
||||||
@ -51,11 +51,11 @@
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>RELATIVE</source>
|
<source>RELATIVE</source>
|
||||||
<translation type="unfinished">Relative</translation>
|
<translation>相対</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>DEFLECTION</source>
|
<source>DEFLECTION</source>
|
||||||
<translation type="unfinished">Deflection</translation>
|
<translation>たわみ</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
<name>VTKPlugin_GUI</name>
|
<name>VTKPlugin_GUI</name>
|
||||||
<message>
|
<message>
|
||||||
<source>VTK_FILES</source>
|
<source>VTK_FILES</source>
|
||||||
<translation>VTKファイル</translation>
|
<translation>VTKファイル( *.vtk )</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>EXPORT_TITLE</source>
|
<source>EXPORT_TITLE</source>
|
||||||
@ -43,7 +43,7 @@
|
|||||||
<name>VTKPlugin_ExportDlg</name>
|
<name>VTKPlugin_ExportDlg</name>
|
||||||
<message>
|
<message>
|
||||||
<source>DEFLECTION</source>
|
<source>DEFLECTION</source>
|
||||||
<translation type="unfinished">Deflection</translation>
|
<translation>たわみ</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
@ -5,27 +5,27 @@
|
|||||||
<name>@default</name>
|
<name>@default</name>
|
||||||
<message>
|
<message>
|
||||||
<source>MEN_EXPORTXAO</source>
|
<source>MEN_EXPORTXAO</source>
|
||||||
<translation>エクスポートしました。</translation>
|
<translation>XAOエクスポート</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>TOP_EXPORTXAO</source>
|
<source>TOP_EXPORTXAO</source>
|
||||||
<translation>エクスポートしました。</translation>
|
<translation>XAOのエクスポート</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>STB_EXPORTXAO</source>
|
<source>STB_EXPORTXAO</source>
|
||||||
<translation>ソテーした形式でフォームをエクスポートします。</translation>
|
<translation>XAOのエクスポート</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>MEN_IMPORTXAO</source>
|
<source>MEN_IMPORTXAO</source>
|
||||||
<translation>インポートしました。</translation>
|
<translation>XAOインポート</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>TOP_IMPORTXAO</source>
|
<source>TOP_IMPORTXAO</source>
|
||||||
<translation>インポートしました。</translation>
|
<translation>XAOのインポート</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>STB_IMPORTXAO</source>
|
<source>STB_IMPORTXAO</source>
|
||||||
<translation>ソテーしたフォームをインポートします。</translation>
|
<translation>XAOのインポート</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>XAOPLUGIN_IMPORT_SELECT</source>
|
<source>XAOPLUGIN_IMPORT_SELECT</source>
|
||||||
@ -33,22 +33,22 @@
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>XAOPLUGIN_EXPORT_SELECT</source>
|
<source>XAOPLUGIN_EXPORT_SELECT</source>
|
||||||
<translation>エクスポートしました。</translation>
|
<translation>XAOへのエクスポート</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>XAOPLUGIN_FILES</source>
|
<source>XAOPLUGIN_FILES</source>
|
||||||
<translation>ファイルした (*.xao)</translation>
|
<translation>XAO ファイル (*.xao)</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>XAOPlugin_ExportDlg</name>
|
<name>XAOPlugin_ExportDlg</name>
|
||||||
<message>
|
<message>
|
||||||
<source>XAOPLUGIN_EXPORT_TITLE</source>
|
<source>XAOPLUGIN_EXPORT_TITLE</source>
|
||||||
<translation>エクスポートしました。</translation>
|
<translation>XAOエクスポート</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>XAOPLUGIN_EXPORTXAO</source>
|
<source>XAOPLUGIN_EXPORTXAO</source>
|
||||||
<translation>エクスポートしました。</translation>
|
<translation>XAOエクスポート</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>XAOPLUGIN_EXPORT_INGSHAPE</source>
|
<source>XAOPLUGIN_EXPORT_INGSHAPE</source>
|
||||||
@ -75,11 +75,11 @@
|
|||||||
<name>XAOPlugin_ImportDlg</name>
|
<name>XAOPlugin_ImportDlg</name>
|
||||||
<message>
|
<message>
|
||||||
<source>XAOPLUGIN_IMPORT_TITLE</source>
|
<source>XAOPLUGIN_IMPORT_TITLE</source>
|
||||||
<translation>インポートしました。</translation>
|
<translation>XAOインポート</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>XAOPLUGIN_IMPORTXAO</source>
|
<source>XAOPLUGIN_IMPORTXAO</source>
|
||||||
<translation>インポートしました。</translation>
|
<translation>XAOインポート</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>XAOPLUGIN_IMPORT_INGSHAPE</source>
|
<source>XAOPLUGIN_IMPORT_INGSHAPE</source>
|
||||||
|
Loading…
Reference in New Issue
Block a user