mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2025-01-12 17:50: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)
|
||||
|
||||
SET(${PROJECT_NAME_UC}_MAJOR_VERSION 7)
|
||||
SET(${PROJECT_NAME_UC}_MINOR_VERSION 5)
|
||||
SET(${PROJECT_NAME_UC}_PATCH_VERSION 1)
|
||||
SET(${PROJECT_NAME_UC}_MINOR_VERSION 6)
|
||||
SET(${PROJECT_NAME_UC}_PATCH_VERSION 0)
|
||||
SET(${PROJECT_NAME_UC}_VERSION
|
||||
${${PROJECT_NAME_UC}_MAJOR_VERSION}.${${PROJECT_NAME_UC}_MINOR_VERSION}.${${PROJECT_NAME_UC}_PATCH_VERSION})
|
||||
SET(${PROJECT_NAME_UC}_VERSION_DEV 1)
|
||||
|
@ -23,7 +23,14 @@
|
||||
#
|
||||
# !! 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()
|
||||
|
||||
IF(OpenCV_FOUND)
|
||||
|
@ -117,16 +117,22 @@ if __name__ == "__main__":
|
||||
if len( args ) < 1: sys.exit("Plugin name is not specified")
|
||||
|
||||
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 = []
|
||||
if options.dummygeomhelp:
|
||||
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
|
||||
# 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( "# 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( "# documentation." )
|
||||
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.
|
||||
|
||||
\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>
|
||||
<li> We can specify a position (ranging from 0.0 to 1.0) of the
|
||||
vertex on the selected edge either by length or by parameter.
|
||||
<li> By specifying the position (ranging from 0.0 to 1.0) by length or by parameter.
|
||||
<p>
|
||||
<b>TUI Command:</b> <em>geompy.DivideEdge(Shape, EdgeID, Value,
|
||||
IsByParameter)</em>
|
||||
<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,
|
||||
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,
|
||||
depending on \em IsByParameter. </li>
|
||||
<li> \em IsByParameter is a boolean flag, specifying operation mode:
|
||||
- \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>
|
||||
depending on \em IsByParameter;</li>
|
||||
<li> \em IsByParameter is a boolean flag, specifying the operation mode:
|
||||
- \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>
|
||||
</ul>
|
||||
\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
|
||||
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
|
||||
\n\n
|
||||
</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.
|
||||
<p>
|
||||
<b>TUI Command:</b> <em>geompy.DivideEdgeByPoint(Shape, Edge, Points)</em>
|
||||
<b>TUI Command:</b> <em>geompy.DivideEdgeByPoint(Shape, Edge, Points):</em>
|
||||
<ul>
|
||||
<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,
|
||||
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 Shape is a shape, which contains an edge to be divided;</li>
|
||||
<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>
|
||||
<li> \em Points is a list of points to be projected to the \a Edge.</li>
|
||||
</ul>
|
||||
\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
|
||||
following conditions:
|
||||
- Each element of the compound should be a Block (6 quadrangle faces);
|
||||
- Each quadrangle face is a face that has 1 wire with 4 edges. If there are
|
||||
more than 4 edges in a single wire and C1 continuity mode is switched on,
|
||||
a face is quadrangular if it has 4 bounds of C1 continuity.
|
||||
- Each element of the compound should be a Block, i.e. have 6 quadrangle faces;
|
||||
- Each quadrangle face should have one wire with four edges. If there are
|
||||
more than four edges in a single wire and C1 continuity mode is switched on,
|
||||
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;
|
||||
- The compound should be connected;
|
||||
- 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:
|
||||
|
||||
- \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 Errors list informs of possible errors, for example:
|
||||
- Not a block;
|
||||
|
@ -9,17 +9,14 @@ This operation checks the topology of the selected shape to detect self-intersec
|
||||
In this dialog:
|
||||
|
||||
- \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.
|
||||
It defines which interferferences will be checked. Default value is "All interferences".
|
||||
- <b>Compute self-intersections</b> button computes self-interferences.
|
||||
- \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 self-intersections detected.
|
||||
Select the intersection(s) to show <b>Sub-shapes</b> in the field to the right.
|
||||
- \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.
|
||||
- <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".
|
||||
- <b>Compute self-intersections</b> button performs the computation.
|
||||
- \b Summary section contains the general report about self-intersections of the object and/or errors that occurred during the 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 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.
|
||||
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.
|
||||
|
||||
\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.
|
||||
For more information about Partition and Boolean Operations Algorithms
|
||||
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",
|
||||
creating a more complex trajectory object.</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_groups_page "Generate Groups".
|
||||
This cross-operation functionality allows creation of groups for certain generation operations.</li>
|
||||
<li>\subpage create_thickness_page "Add thickness" to objects.</li>
|
||||
<li>\subpage create_groups_page "Generate Groups" for certain generation operations.</li>
|
||||
</ul>
|
||||
|
||||
<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
|
||||
(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>:
|
||||
- \b Compound: to extract compounds;
|
||||
- \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 Flat: to extract "flat" contents of the compound shape.
|
||||
|
||||
Note: "flat" contents means top-level simple-type sub-shapes extracted from
|
||||
the compound object recursively (i.e. there is 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):
|
||||
Note: "flat" contents means that top-level simple-type sub-shapes are extracted from
|
||||
the compound object recursively (i.e. there are no compounds in the result).
|
||||
|
||||
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 Flat type given as parameter will return S1, S2 and S3.
|
||||
|
||||
\image html flat_contents.png
|
||||
|
||||
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.
|
||||
|
||||
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).
|
||||
The numerical functor for each sub-shape that is compared with threshold value(s)
|
||||
is computed according to the shape's topological properties:
|
||||
- length for edges and wires
|
||||
- area for faces and shells
|
||||
- volume for solids, compounds, compsolids
|
||||
allow to automatically pick up entities, which satisfy the specified threshold value(s).
|
||||
The numerical functor for each sub-shape that is compared with the threshold value(s)
|
||||
is computed according to the topological properties of the shape:
|
||||
- length for edges and wires;
|
||||
- area for faces and shells;
|
||||
- volume for solids, compounds and compsolids.
|
||||
|
||||
Filtering capabilities are not available for vertices.
|
||||
|
||||
In order to filter out some entities:
|
||||
- Activate one or two filtering controls by switching on corresponding check boxes;
|
||||
- Select required threshold comparator type; the following choices are available:
|
||||
To filter out some entities it is necessary to do the following:
|
||||
- Activate one or two filtering controls by switching on the corresponding check boxes;
|
||||
- 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>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.
|
||||
|
||||
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.
|
||||
|
||||
Using <b>TUI Commands</b> you can perform this operation in a
|
||||
variety of ways:
|
||||
- <em>geompy.ExtractShapes(Shape, Type, isSorted)</em> explodes a
|
||||
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
|
||||
Type.
|
||||
- <em>geompy.SubShapeAll(Shape, Type)</em> explodes a Shape on
|
||||
This method does not return the Shape itself if it matches the Type.
|
||||
- <em>geompy.SubShapeAll(Shape, Type)</em> explodes a Shape into
|
||||
sub-shapes of a given Type and returns a List of sub-shapes.
|
||||
- <em>geompy.SubShapeAllIDs(Shape, Type)</em> explodes a Shape on
|
||||
sub-shapes of a given Type and returns a List of IDs of
|
||||
sub-shapes.
|
||||
- <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.
|
||||
- <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.
|
||||
It returns a list of sub-shapes.
|
||||
- <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.
|
||||
It returns a List of IDs of sub-shapes.
|
||||
- <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
|
||||
[1, Nb_Sub-Shapes_Of_Given_Type].
|
||||
- <em>geompy.SubShapeSortedCentres(Shape, Type, ListOfInd)</em>
|
||||
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]
|
||||
|
||||
<b>Arguments: </b>1 SHAPE + 1 type of SubShape.
|
||||
|
||||
<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>
|
||||
|
||||
\n This function takes some face as input parameter and creates new
|
||||
GEOM_Object, i.e. topological shape by extracting underlying surface
|
||||
of the source face and limiting it by the Umin, Umax, Vmin, Vmax
|
||||
parameters of the source face (in the parametrical space).
|
||||
\n This function takes a face at input and creates a new
|
||||
<b>GEOM_Object</b>, i.e. topological shape by extracting the underlying surface
|
||||
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 parametric space).
|
||||
\n
|
||||
\ref restore_presentation_parameters_page "Advanced options".
|
||||
|
||||
|
@ -2,26 +2,28 @@
|
||||
|
||||
\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>
|
||||
\n
|
||||
It is possible to create a Solid from a Face or a Shell by applying a
|
||||
\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
|
||||
<b>Thicken towards the inside</b> check box.
|
||||
To add \b Thickness to a shape in the <b>Main Menu</b> select <b>New Entity - > Generation - > Thickness</b>.
|
||||
|
||||
Switch between adding thickness to a Face (Shell) or a Solid using radio buttons.
|
||||
|
||||
Firstly, \b Thickness can be applied to a Face or a Shell to create a Solid.
|
||||
|
||||
\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>
|
||||
|
||||
\image html thickness_result.png "Thickness of Shell"
|
||||
|
||||
It is possible to apply \b Thickness to a Solid. The result of this operation
|
||||
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.
|
||||
Secondly, the \b Thickness can be applied to a Solid to create a hollowed Solid.
|
||||
|
||||
\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>
|
||||
|
||||
\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 +
|
||||
the list of face IDs.
|
||||
\n If the shape is face or shell the list of face IDs is not used.
|
||||
The thickness can be positive or negative for thicken towards the inside.
|
||||
\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 thickening towards the inside.
|
||||
\n\n <b>Advanced options</b> \ref preview_anchor "Preview"
|
||||
|
||||
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
|
||||
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.
|
||||
|
||||
"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
|
||||
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
|
||||
|
||||
<ul><li><b>Bidirectional link</b> - shows that object B depends on
|
||||
object A and, at the same time, object A depends on object B;</li></ul>
|
||||
<ul><li><b>Bidirectional link</b> - shows that object \b B depends on
|
||||
object \b A and, at the same time, object \b A depends on object \b B;</li></ul>
|
||||
\image html tree_bidir_link.png
|
||||
|
||||
<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 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
|
||||
<b>Display mode -> Show Vertices</b>, or apply this
|
||||
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 Moreover user can show the name of the selected
|
||||
shape. For this, choose in the context menu of the shape
|
||||
\n To show the name of the selected shape, choose in its context menu
|
||||
<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>
|
||||
|
||||
\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
|
||||
<b>Operations - > Transformation - > Extension</b>
|
||||
\n To produce an \b Extension of an Edge or a Face select in the <b>Main Menu</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
|
||||
and last parameters modification or a \b Face by means of modification
|
||||
of minimal and maximal U- and V-Parameters. \n
|
||||
\ref restore_presentation_parameters_page "Advanced options".
|
||||
Firstly it is possible to resize an \b Edge by modifying its first
|
||||
and last parameters
|
||||
|
||||
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>,
|
||||
where \em theEdge the input edge to be resized, \em theMin the minimal
|
||||
parameter value, \em theMax the maximal parameter value.
|
||||
\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>
|
||||
|
||||
\image html extend_edge_example.png "Original edge (white) and extended edge"
|
||||
@ -28,8 +23,12 @@ parameter value, \em theMax the maximal parameter value.
|
||||
negative, the input Edge is extended, otherwise it is shrinked by
|
||||
\b theMin parameter. If \b theMax is greater than 1, the Edge is
|
||||
extended, otherwise it is shrinked by \b theMax parameter.
|
||||
|
||||
Secondly it is possible to resize a \b Face by modifying its
|
||||
minimal and maximal U- and V-Parameters.
|
||||
|
||||
Secondly it is possible to resize a \b Face.
|
||||
\image html extension2.png "Face Extension"
|
||||
|
||||
\n <b>TUI Command:</b> <em>geompy.ExtendFace(theFace, theUMin, theUMax,
|
||||
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
|
||||
@ -38,18 +37,16 @@ V-Parameter value.
|
||||
\n <b>Arguments:</b> Name + Object (Face) + 4 values (Min and Max U- and
|
||||
V-Parameters).
|
||||
|
||||
\image html extension2.png "Extension of a Face"
|
||||
|
||||
\n <b>Example:</b>
|
||||
|
||||
\image html extend_face_example.png "The original face (gray) and a result
|
||||
face shrinked along U-Direction and extended along V-Direction"
|
||||
\image html extend_face_example.png "The original face (gray) and a result 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
|
||||
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
|
||||
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.
|
||||
|
||||
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>
|
||||
<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>
|
||||
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
/*!
|
||||
\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.
|
||||
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
|
||||
shapes and detecting overlapping of resulting meshes. High performance is
|
||||
achieved through the use of existing triangulation of faces.
|
||||
@ -28,22 +28,21 @@ of the GUI module's documentation.
|
||||
|
||||
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 2 - second 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>Deflection coefficient</b> specifies the quality of shapes tessellation.
|
||||
- <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>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 Apply and <b>Apply and Close</b> buttons are used to store selected intersected shapes in the study for
|
||||
further analysis (see below).
|
||||
|
||||
\note Quality of the result depends on the quality of triangulation. Changing a value of the deflection coefficient
|
||||
parameter can strongly affect the result. On the other hand, small values of deflection coefficient might lead to
|
||||
\note The result quality depends on the quality of triangulation. Changing the value of the deflection coefficient
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
<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>
|
||||
|
||||
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
|
||||
@ -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
|
||||
"top-level" operation.</li>
|
||||
</ul>
|
||||
<li><b>Transparency</b> - allows to define default transparency value.</li>
|
||||
<li><b>Deflection coefficient</b> - allows to define default deflection
|
||||
<li><b>Default transparency</b> - allows to define default transparency value.</li>
|
||||
<li><b>Default deflection coefficient</b> - allows to define default deflection
|
||||
coefficient for lines and surfaces. A smaller coefficient provides
|
||||
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
|
||||
predefined materials.</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>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 edges width</b> - allows to define default width of the edges.</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>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
|
||||
@ -82,7 +83,7 @@ of values set in spin boxes.</li>
|
||||
</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
|
||||
|
||||
@ -107,26 +108,15 @@ precision for floating-point data.</li>
|
||||
</ul>
|
||||
|
||||
<ul>
|
||||
<li><b>Marker of Points</b></li>
|
||||
<li><b>Default marker of points</b></li>
|
||||
<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>
|
||||
<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>
|
||||
</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>
|
||||
<li><b>Scalar bar for field presentation</b></li>
|
||||
<ul>
|
||||
@ -139,11 +129,23 @@ system immediately after the module activation.</li>
|
||||
</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>
|
||||
<li><b>Operations</b></li>
|
||||
<ul>
|
||||
<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>
|
||||
|
||||
|
@ -17,7 +17,7 @@ given tolerance value.
|
||||
|
||||
\n <b>TUI Command:</b>
|
||||
<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
|
||||
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
|
||||
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
|
||||
coincident sub-shapes. For example if there are two coincident edges
|
||||
in selected shapes, the result list contains one of the two coincident edges.
|
||||
coincident sub-shapes. For example, if there are two coincident edges
|
||||
in the selected shapes, the result list contains one of the two coincident edges.
|
||||
|
||||
<em>geompy.MakeGlueEdgesByList( theShapes, theTolerance, theEdges )</em>,
|
||||
\n where \em theShape is either a list or compound of shapes to be glued, \em
|
||||
theTolerance is a maximum distance between two edges, which can
|
||||
\n where \em theShape is a list or compound of shapes to be glued,
|
||||
\em theTolerance is a maximum distance between two edges, which can
|
||||
be considered as coincident, \em theEdges is a list of
|
||||
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
|
||||
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>
|
||||
|
||||
<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
|
||||
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
|
||||
|
@ -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.
|
||||
- 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.
|
||||
- Rename 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 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.
|
||||
- Publish selected sub-shapes in the study, by pressing <b>Publish Selected</b> button.
|
||||
- Rename the selected sub-shape by double-clicking on the item or pressing <F2> key.
|
||||
- Show the 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 and erase all currently shown objects by pressing <b>Show Only Selected</b> button.
|
||||
- Hide the selected sub-shape(s) from the 3D viewer by pressing <b>Hide 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.
|
||||
|
||||
*/
|
||||
|
@ -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 Radius of the cylinder;
|
||||
- <b>Starting angle</b> from the cylinder's X axis around Z axis. This is
|
||||
the angle of the projection starting.
|
||||
- <b>Length angle</b> in which to project the total length of
|
||||
the wire. If it is unchecked the projection is not scaled and natural
|
||||
the angle of the projection start.
|
||||
- <b>Length angle</b> where the total length of
|
||||
the wire should be projected. If it is unchecked the projection is not scaled and the natural
|
||||
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
|
||||
|
||||
@ -29,8 +28,8 @@ wire length is kept for the projection.
|
||||
|
||||
\n <b>TUI Command:</b> <em>geompy.MakeProjectionOnCylinder(theObject, theRadius,
|
||||
theStartAngle=0.0, theAngleLength=-1.0),</em>
|
||||
where \em theObject is a shape which has to be projected, \em theRadius
|
||||
is a cylinder radius, \em theStartAngle the starting angle of projection in
|
||||
where \em theObject is a shape to be projected, \em theRadius
|
||||
is a cylinder radius, \em theStartAngle is the starting angle of projection in
|
||||
radians, \em theAngleLength the projection length angle in radians.
|
||||
The \em Result will be a \em GEOM_Object.
|
||||
|
||||
|
@ -3,18 +3,18 @@
|
||||
\page sewing_operation_page Sewing
|
||||
|
||||
\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
|
||||
different faces are replaced by one edge thus producing a shell of
|
||||
faces with shared boundaries.<p>
|
||||
This operation is similar to <b>New Entity - > Build - > Shell</b>
|
||||
operation, the difference is that with \b Sewing you can specify the
|
||||
tolerance and can get a non-manifold result. <p>
|
||||
Possibility to create a non-manifold shell can be used e.g. to create a
|
||||
tolerance and get a non-manifold result. <p>
|
||||
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
|
||||
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.
|
||||
|
||||
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
|
||||
possible distance between two parallel edges.</li>
|
||||
</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>
|
||||
<ul>
|
||||
<li><b>Width factor tol.</b> (DropSmallSolids.WidthFactorThreshold) -
|
||||
defines 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
|
||||
defines the maximum value of <em>2V/S</em> of a solid, which is
|
||||
considered small, where \a V is the volume and \a S is the surface area of
|
||||
the solid.</li>
|
||||
<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
|
||||
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>
|
||||
</ul>
|
||||
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
|
||||
surfaces, surfaces of revolution and cylindrical surfaces in segments
|
||||
using a certain angle.</li>
|
||||
|
@ -15,22 +15,22 @@ Shared Shapes.</b> The following dialog box will appear.
|
||||
|
||||
In this dialog:
|
||||
- <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>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 Off: causes to search sub-shapes shared between couples of input shapes.
|
||||
- \b On: searches for sub-shapes from the first input shape shared with all other 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
|
||||
contains 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
|
||||
shapes are searched.
|
||||
contains a single compound, the sub-shapes shared between all possible couples of its top-level shapes
|
||||
are searched for; otherwise, only sub-shapes that are shared between the first input shape and
|
||||
all other input shapes are searched.
|
||||
|
||||
<b>Advanced options:</b> \ref preview_anchor "Preview"
|
||||
|
||||
<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-
|
||||
shapes of and \em Type is the type of required sub-shapes.
|
||||
<br> where \em Shapes is a list or compound of shapes, whose shared sub-
|
||||
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
|
||||
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>
|
||||
<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>Type of detection operation</b> is the method to search sub-shapes of
|
||||
<b>Source Shape</b> in <b>Destination Shape</b>. Data are transferred
|
||||
from these corresponding sub-shapes. This is a combo-box with the following
|
||||
possible values:
|
||||
<li> <b>Type of detection operation</b> allows choosing how to search sub-shapes of the
|
||||
<b>Source Shape</b> in the <b>Destination Shape</b>. The data are transferred
|
||||
from these corresponding sub-shapes. The following methods are possible:
|
||||
<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>
|
||||
<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>
|
||||
<li><b>Get In Place By History</b> - Get In Place By History algorithm.</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
To copy data click on \b Apply or <b>Apply and Close</b> button. As the result
|
||||
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
|
||||
provided on the following message box:
|
||||
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
|
||||
the maximum number of names and materials available for copying. This information is
|
||||
provided in the following message box:
|
||||
|
||||
\image html transfer_data2.png "Transfer Data Information"
|
||||
|
||||
|
@ -5,13 +5,13 @@
|
||||
This operation provides the list of types and quantities of all topological
|
||||
entities, composing the selected geometrical object.
|
||||
|
||||
For the \em COMPOUND or \em COMPSOLID shape, additionally the information about
|
||||
"flat" content is shown - a number of "simple" top-level shapes enclosed into the compound.
|
||||
The information about \em COMPOUND or \em COMPSOLID shapes additionally shows
|
||||
"flat" content - the number of "simple" top-level shapes enclosed into the compound.
|
||||
|
||||
\image html measures8.png
|
||||
|
||||
\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.
|
||||
- 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.
|
||||
|
||||
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) is computed according to the shape's topological properties:
|
||||
- length for edges and wires
|
||||
- area for faces and shells
|
||||
- volume for solids, compounds, compsolids
|
||||
- length for edges and wires;
|
||||
- area for faces and shells;
|
||||
- volume for solids, compounds, compsolids.
|
||||
|
||||
Filtering capabilities are not available for vertices.
|
||||
|
||||
In order to filter out some entities:
|
||||
- Activate one or two filtering controls by switching on corresponding check boxes;
|
||||
- Select required threshold comparator type; the following choices are available:
|
||||
- Activate one or two filtering controls by switching on the corresponding check boxes;
|
||||
- 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>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.
|
||||
|
||||
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.
|
||||
|
||||
\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})
|
||||
|
||||
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)
|
||||
|
||||
SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES GEOM)
|
||||
|
@ -226,6 +226,7 @@ module GEOM
|
||||
string operationName;
|
||||
Parameters params;
|
||||
};
|
||||
typedef sequence<CreationInformation> CreationInformationSeq;
|
||||
|
||||
/*!
|
||||
* \brief Reporting on shape healing
|
||||
@ -348,7 +349,7 @@ module GEOM
|
||||
/*!
|
||||
* \brief Return name of operation and values of parameters used for object creation
|
||||
*/
|
||||
CreationInformation GetCreationInformation();
|
||||
CreationInformationSeq GetCreationInformation();
|
||||
};
|
||||
|
||||
//# GEOM_Object
|
||||
|
@ -1474,70 +1474,16 @@ bool AdvancedEngine_IOperations::MakePipeTShapePartition(Handle(GEOM_Object) the
|
||||
face_t->GetLastFunction()->SetDescription("");
|
||||
theShapes.push_back(face_t);
|
||||
|
||||
gp_Pnt aP2 = BRep_Tool::Pnt(TopoDS::Vertex(P2->GetValue()));
|
||||
gp_Pnt aP5 = BRep_Tool::Pnt(TopoDS::Vertex(vi1->GetValue()));
|
||||
double deltaZ = aP2.Z() - aP5.Z();
|
||||
// std::cerr << "Creating new point from vi1 with deltaZ = " << deltaZ << std::endl;
|
||||
Handle(GEOM_Object) P5bis = myTransformOperations->TranslateDXDYDZCopy(vi1, 0, 0, deltaZ);
|
||||
if (P5bis.IsNull()) {
|
||||
SetErrorCode("Impossible to translate vertex");
|
||||
// Create a prism from edge_chan_inc
|
||||
Handle(GEOM_Object) aPrismDir = myBasicOperations->MakeVectorDXDYDZ(1., 1., 0.);
|
||||
|
||||
if (aPrismDir.IsNull()) {
|
||||
SetErrorCode("Impossible to build Prism direction");
|
||||
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()) {
|
||||
SetErrorCode("Impossible to build face");
|
||||
return false;
|
||||
|
@ -129,7 +129,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>INTERNAL_FACES</source>
|
||||
<translation>内部の顔</translation>
|
||||
<translation>内部の面</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -32,7 +32,7 @@
|
||||
<name>BREPPlugin_GUI</name>
|
||||
<message>
|
||||
<source>BREP_FILES</source>
|
||||
<translation>BREPファイル</translation>
|
||||
<translation>BREP ファイル ( *.brep )</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>EXPORT_TITLE</source>
|
||||
|
@ -613,9 +613,9 @@ void BasicGUI_PointDlg::SetEditCurrentArgument()
|
||||
}
|
||||
send->setDown(true);
|
||||
|
||||
if ((send == GroupLineIntersection->PushButton1 ||
|
||||
send == GroupLineIntersection->PushButton2) && !myBusy)
|
||||
SelectionIntoArgument();
|
||||
// if ((send == GroupLineIntersection->PushButton1 ||
|
||||
// send == GroupLineIntersection->PushButton2) && !myBusy)
|
||||
// SelectionIntoArgument();
|
||||
}
|
||||
|
||||
|
||||
|
@ -95,9 +95,11 @@
|
||||
// be merged. The edges can be merged if:
|
||||
// 1. They belong to same faces.
|
||||
// 2. They either both seam or both not seam on each face.
|
||||
// 3. They are based on coincident lines, or:
|
||||
// 4. They are based on coincident circles, or:
|
||||
// 5. They are based on either Bezier of BSplines.
|
||||
// 3. There are no another edges (e.g. seam) on each common face
|
||||
// that are connected to the common vertex of two edges.
|
||||
// 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
|
||||
(const TopoDS_Edge &theEdge1,
|
||||
@ -108,7 +110,6 @@ static Standard_Boolean IsToMerge
|
||||
Standard_Boolean aResult = Standard_False;
|
||||
Standard_Boolean isDegen1 = BRep_Tool::Degenerated(theEdge1);
|
||||
Standard_Boolean isDegen2 = BRep_Tool::Degenerated(theEdge2);
|
||||
Standard_Boolean isCompareGeom = Standard_False;
|
||||
|
||||
if (isDegen1 && isDegen2) {
|
||||
// Both of edges are degenerated.
|
||||
@ -141,6 +142,44 @@ static Standard_Boolean IsToMerge
|
||||
Standard_Boolean isSeam2 = BRep_Tool::IsClosed(theEdge2, aFace1);
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
@ -582,7 +582,7 @@ void CurveCreator_Utils::setSelectedPoints( Handle(AIS_InteractiveContext) theCo
|
||||
for( aSelection->Init(); aSelection->More(); aSelection->Next() )
|
||||
{
|
||||
#if OCC_VERSION_LARGE > 0x06080100
|
||||
const SelectMgr_HSensitiveEntity aHSenEntity = aSelection->Sensitive();
|
||||
const Handle(SelectMgr_SensitiveEntity) aHSenEntity = aSelection->Sensitive();
|
||||
if( aHSenEntity.IsNull() )
|
||||
continue;
|
||||
Handle_SelectBasics_SensitiveEntity aSenEntity = aHSenEntity->BaseSensitive();
|
||||
|
@ -31,16 +31,14 @@
|
||||
<source>UPDATE</source>
|
||||
<translation>Mise à jour</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DependencyTree_ViewModel</name>
|
||||
<message>
|
||||
<source>MEN_REBUILD_THE_TREE</source>
|
||||
<translation type="unfinished">Rebuild the tree</translation>
|
||||
<translation>Reconstruire l'arbre</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>MEN_REDUCE_STUDY</source>
|
||||
<translation type="unfinished">Reduce study</translation>
|
||||
<translation>Réduire l'étude</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
@ -5,40 +5,40 @@
|
||||
<name>DependencyTree_View</name>
|
||||
<message>
|
||||
<source>DEPENDENCY_TREE</source>
|
||||
<translation type="unfinished">Dependency Tree</translation>
|
||||
<translation>依存関係ツリー</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>MOVE_NODES</source>
|
||||
<translation type="unfinished">Move nodes</translation>
|
||||
<translation>ノードの移動</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>HIERARCHY_DEPTH</source>
|
||||
<translation type="unfinished">Hierarchy depth </translation>
|
||||
<translation>階層の深さ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DISPLAY_ASCENDANTS</source>
|
||||
<translation type="unfinished">Display ascendants</translation>
|
||||
<translation>上位の表示</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DISPLAY_DESCENDANTS</source>
|
||||
<translation type="unfinished">Display descendants</translation>
|
||||
<translation>下位の表示</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>SHOW_ALL</source>
|
||||
<translation type="unfinished">Show all</translation>
|
||||
<translation>すべてを表示</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>UPDATE</source>
|
||||
<translation type="unfinished">Update</translation>
|
||||
<translation>更新</translation>
|
||||
</message>
|
||||
<name>DependencyTree_ViewModel</name>
|
||||
<message>
|
||||
<source>MEN_REBUILD_THE_TREE</source>
|
||||
<translation type="unfinished">Rebuild the tree</translation>
|
||||
<translation>ツリーの再構築</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>MEN_REDUCE_STUDY</source>
|
||||
<translation type="unfinished">Reduce study</translation>
|
||||
<translation>スタディの削減</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
@ -26,7 +26,8 @@
|
||||
|
||||
// SALOME includes
|
||||
#include "EntityGUI_FeatureDetectorDlg.h"
|
||||
#include <ShapeRec_FeatureDetector.hxx>
|
||||
#include "ShapeRec_FeatureDetector.hxx"
|
||||
#include "GEOM_Constants.h"
|
||||
|
||||
#include <OCCViewer_ViewWindow.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
|
||||
SUIT_ViewWindow* theViewWindow = getDesktop()->activeWindow();
|
||||
std::map< std::string , std::vector<Handle(AIS_InteractiveObject)> >::iterator AISit;
|
||||
SOCC_Viewer* soccViewer = (SOCC_Viewer*)(theViewWindow->getViewManager()->getViewModel());
|
||||
|
||||
if (!myEditCurrentArgument->isEnabled())
|
||||
@ -433,24 +433,20 @@ void EntityGUI_FeatureDetectorDlg::SelectionIntoArgument()
|
||||
|
||||
if ( myEditCurrentArgument == mySelectionGroup->LineEdit1 ) {
|
||||
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;
|
||||
|
||||
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
|
||||
myDetector->SetPath( theImgFileName );
|
||||
myDetector->SetPath( theImgFileName.toStdString() );
|
||||
height = myDetector->GetImgHeight();
|
||||
width = myDetector->GetImgWidth();
|
||||
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;
|
||||
|
||||
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 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);
|
||||
getDisplayer()->SetDisplayMode(3);
|
||||
|
@ -162,6 +162,7 @@ EntityGUI_PolylineDlg::EntityGUI_PolylineDlg
|
||||
EntityGUI_PolylineDlg::~EntityGUI_PolylineDlg()
|
||||
{
|
||||
erasePreview();
|
||||
myEditorWidget->SetViewer2DMode(false);
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
@ -381,16 +382,6 @@ bool EntityGUI_PolylineDlg::ClickOnApply()
|
||||
return true;
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
// function : ClickOnCancel()
|
||||
// purpose :
|
||||
//=================================================================================
|
||||
void EntityGUI_PolylineDlg::ClickOnCancel()
|
||||
{
|
||||
myEditorWidget->SetViewer2DMode(false);
|
||||
GEOMBase_Skeleton::ClickOnCancel();
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
// function : processStartedSubOperation
|
||||
// purpose :
|
||||
|
@ -152,7 +152,6 @@ protected slots:
|
||||
|
||||
void ClickOnOk();
|
||||
bool ClickOnApply();
|
||||
void ClickOnCancel();
|
||||
void processStartedSubOperation( QWidget*, bool );
|
||||
void processFinishedSubOperation( QWidget* );
|
||||
void SetEditCurrentArgument( bool );
|
||||
|
@ -632,15 +632,14 @@ void EntityGUI_SketcherDlg::RectClicked()
|
||||
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
|
||||
|
||||
GroupRect->show();
|
||||
|
||||
|
||||
myX1=0;
|
||||
myX2=10;
|
||||
myY1=0;
|
||||
myY2=10;
|
||||
|
||||
GroupRect->SpinBox_DX1->setValue(myX1);
|
||||
myY1=0;
|
||||
GroupRect->SpinBox_DY1->setValue(myY1);
|
||||
myX2=10;
|
||||
GroupRect->SpinBox_DX2->setValue(myX2);
|
||||
myY2=10;
|
||||
GroupRect->SpinBox_DY2->setValue(myY2);
|
||||
|
||||
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(GEOM_Function) function = GetFunction(1);
|
||||
Handle(TFunction_Driver) driver;
|
||||
Handle(GEOM_Function) function = GetFunction(funNb);
|
||||
if ( !function.IsNull() )
|
||||
{
|
||||
Standard_GUID aGUID = function->GetDriverGUID();
|
||||
if ( TFunction_DriverTable::Get()->FindDriver(aGUID, aDriver))
|
||||
aDriver->Init( function->GetEntry() );
|
||||
if ( TFunction_DriverTable::Get()->FindDriver(aGUID, driver ))
|
||||
driver->Init( function->GetEntry() );
|
||||
}
|
||||
return aDriver;
|
||||
return driver;
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
|
@ -31,6 +31,8 @@
|
||||
#include <TDF_Label.hxx>
|
||||
#include <TDataStd_TreeNode.hxx>
|
||||
|
||||
#include <vector>
|
||||
|
||||
class GEOM_BaseObject;
|
||||
class Handle(TFunction_Driver);
|
||||
class GEOM_Engine;
|
||||
@ -146,8 +148,8 @@ public:
|
||||
//Returns the dependencies of the last function
|
||||
Standard_EXPORT Handle(TColStd_HSequenceOfTransient) GetLastDependency();
|
||||
|
||||
//Returns a driver creator of this object
|
||||
Standard_EXPORT Handle(TFunction_Driver) GetCreationDriver();
|
||||
//Returns drivers creators of this object
|
||||
Standard_EXPORT Handle(TFunction_Driver) GetCreationDriver(int funNb);
|
||||
|
||||
//###########################################################
|
||||
// Internal methods
|
||||
|
@ -222,6 +222,19 @@ Standard_Integer GEOMAlgo_AlgoTools::BuildPCurveForEdgeOnFace
|
||||
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);
|
||||
aC2D=BRep_Tool::CurveOnSurface(aEnew, aF, aT1, aT2);
|
||||
if (aC2D.IsNull()){
|
||||
|
@ -126,93 +126,75 @@ Standard_Integer GEOMAlgo_GetInPlaceAPI::GetInPlaceOld
|
||||
return 1;
|
||||
}
|
||||
|
||||
TopoDS_Shape aPntShape;
|
||||
TopoDS_Vertex aVertex;
|
||||
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;
|
||||
// Check shape type.
|
||||
TopAbs_ShapeEnum iType = GEOMUtils::GetTypeOfSimplePart(theWhat);
|
||||
|
||||
iType = GEOMUtils::GetTypeOfSimplePart(theWhat);
|
||||
if (iType == TopAbs_SHAPE) {
|
||||
// Error: An attempt to extract a shape of not supported type.
|
||||
return 2;
|
||||
}
|
||||
|
||||
TopExp_Explorer Exp_aWhat ( theWhat, iType );
|
||||
TopExp_Explorer Exp_aWhere ( theWhere, iType );
|
||||
TopExp_Explorer Exp_Edge ( theWhere, TopAbs_EDGE );
|
||||
// Compute confusion tolerance.
|
||||
Standard_Real aTolConf = Precision::Confusion();
|
||||
Standard_Integer i;
|
||||
|
||||
// Find the shortest edge in theShapeWhere shape
|
||||
BRepBndLib::Add(theWhere, BoundingBox);
|
||||
BoundingBox.Get(aXmin, aYmin, aZmin, aXmax, aYmax, aZmax);
|
||||
min_l = fabs(aXmax - aXmin);
|
||||
if( min_l < fabs(aYmax - aYmin) ) min_l = fabs(aYmax - aYmin);
|
||||
if( min_l < fabs(aZmax - aZmin) ) min_l = fabs(aZmax - aZmin);
|
||||
min_l /= dl_l;
|
||||
// Mantis issue 0020908 BEGIN
|
||||
if (!Exp_Edge.More()) {
|
||||
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();
|
||||
for (i = 0; i < 2; ++i) {
|
||||
TopExp_Explorer anExp(i == 0 ? theWhere : theWhat, TopAbs_VERTEX);
|
||||
|
||||
for (; anExp.More(); anExp.Next()) {
|
||||
const TopoDS_Vertex aVtx = TopoDS::Vertex(anExp.Current());
|
||||
const Standard_Real aTolVtx = BRep_Tool::Tolerance(aVtx);
|
||||
|
||||
if (aTolVtx > aTolConf) {
|
||||
aTolConf = aTolVtx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Compute tolerances
|
||||
Tol_0D = dl_l;
|
||||
Tol_1D = dl_l * min_l;
|
||||
Tol_2D = dl_l * ( min_l * min_l) * ( 2. + dl_l);
|
||||
Tol_3D = dl_l * ( min_l * min_l * min_l ) * ( 3. + (3 * dl_l) + (dl_l * dl_l) );
|
||||
// Compute mass tolerance.
|
||||
Bnd_Box aBoundingBox;
|
||||
Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax;
|
||||
Standard_Real aMassTol;
|
||||
|
||||
if (Tol_0D < Precision::Confusion()) Tol_0D = Precision::Confusion();
|
||||
if (Tol_1D < Precision::Confusion()) Tol_1D = Precision::Confusion();
|
||||
if (Tol_2D < Precision::Confusion()) Tol_2D = Precision::Confusion();
|
||||
if (Tol_3D < Precision::Confusion()) Tol_3D = Precision::Confusion();
|
||||
BRepBndLib::Add(theWhere, aBoundingBox);
|
||||
BRepBndLib::Add(theWhat, aBoundingBox);
|
||||
aBoundingBox.Get(aXmin, aYmin, aZmin, aXmax, aYmax, aZmax);
|
||||
aMassTol = Max(aXmax - aXmin, aYmax - aYmin);
|
||||
aMassTol = Max(aMassTol, aZmax - aZmin);
|
||||
aMassTol *= aTolConf;
|
||||
|
||||
Tol_Mass = Tol_3D;
|
||||
if ( iType == TopAbs_VERTEX ) Tol_Mass = Tol_0D;
|
||||
else if ( iType == TopAbs_EDGE ) Tol_Mass = Tol_1D;
|
||||
else if ( iType == TopAbs_FACE ) Tol_Mass = Tol_2D;
|
||||
|
||||
// Searching for the sub-shapes inside the ShapeWhere shape
|
||||
// Compute the result.
|
||||
TopExp_Explorer Exp_aWhat (theWhat, iType);
|
||||
TopExp_Explorer Exp_aWhere (theWhere, iType);
|
||||
Standard_Real tab_aWhat[4], tab_aWhere[4];
|
||||
gp_Pnt aPnt, aPnt_aWhat;
|
||||
TopoDS_Shape aPntShape;
|
||||
TopoDS_Vertex aVertex;
|
||||
bool isFound = false;
|
||||
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()))
|
||||
continue; // skip repeated shape to avoid mass addition
|
||||
GetShapeProperties( Exp_aWhere.Current(), tab_aWhere, aPnt );
|
||||
for ( Exp_aWhat.ReInit(); Exp_aWhat.More(); Exp_aWhat.Next() ) {
|
||||
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;
|
||||
else {
|
||||
if ( (tab_aWhat[3] - tab_aWhere[3]) > Tol_Mass ) {
|
||||
if ((tab_aWhat[3] - tab_aWhere[3]) > aMassTol) {
|
||||
aPntShape = BRepBuilderAPI_MakeVertex( aPnt ).Shape();
|
||||
aVertex = TopoDS::Vertex( aPntShape );
|
||||
BRepExtrema_DistShapeShape aWhereDistance ( aVertex, Exp_aWhere.Current() );
|
||||
BRepExtrema_DistShapeShape aWhatDistance ( aVertex, Exp_aWhat.Current() );
|
||||
if ( aWhereDistance.IsDone() && aWhatDistance.IsDone() &&
|
||||
fabs(aWhereDistance.Value() - aWhatDistance.Value()) <= Tol_1D )
|
||||
if (aWhereDistance.IsDone() && aWhatDistance.IsDone() &&
|
||||
fabs(aWhereDistance.Value() - aWhatDistance.Value()) <= aTolConf)
|
||||
{
|
||||
// 0020162: "EDF 961 GEOM : Getinplace is getting additionnal orthogonal faces"
|
||||
// aVertex must be projected to the same point on Where and on What
|
||||
gp_Pnt pOnWhat = aWhatDistance.PointOnShape2(1);
|
||||
gp_Pnt pOnWhere = aWhereDistance.PointOnShape2(1);
|
||||
isFound = ( pOnWhat.Distance(pOnWhere) <= Tol_1D );
|
||||
isFound = (pOnWhat.Distance(pOnWhere) <= aTolConf);
|
||||
if ( isFound && iType == TopAbs_FACE )
|
||||
{
|
||||
// check normals at pOnWhat and pOnWhere
|
||||
|
@ -424,19 +424,18 @@ void GEOMAlgo_ShapeInfoFiller::FillDetails(const TopoDS_Face& aF,
|
||||
aPx[i]=aInfoEx.Location();
|
||||
}
|
||||
//
|
||||
Standard_Boolean isRectangle = Standard_True;
|
||||
for (i=0; i<4; ++i) {
|
||||
j=(i==3) ? 0 : i+1;
|
||||
aDot=aDx[i]*aDx[j];
|
||||
if (fabs (aDot) > myTolerance) {
|
||||
aInfo.SetKindOfName(GEOMAlgo_KN_QUADRANGLE);
|
||||
return;
|
||||
isRectangle = Standard_False;
|
||||
break;
|
||||
}
|
||||
}
|
||||
//
|
||||
// rectangle
|
||||
aInfo.SetKindOfName(GEOMAlgo_KN_RECTANGLE);
|
||||
//
|
||||
// shift location to the center and calc. sizes
|
||||
// shift location to the center
|
||||
aXYZc.SetCoord(0.,0.,0.);
|
||||
TopExp::MapShapes(aF, TopAbs_VERTEX, aMV);
|
||||
for (i=1; i<=aNbV; ++i) {
|
||||
@ -448,33 +447,41 @@ void GEOMAlgo_ShapeInfoFiller::FillDetails(const TopoDS_Face& aF,
|
||||
//
|
||||
// Location : aPc in center of rectangle
|
||||
// Position : 0z is plane normal
|
||||
// 0x is along length
|
||||
// 0x is along the first edge (quadrangle) or
|
||||
// along length (rectangle)
|
||||
//
|
||||
aXYZc.Divide(4.);
|
||||
aPc.SetXYZ(aXYZc);
|
||||
//
|
||||
gp_Lin aL0(aPx[0], aDx[0]);
|
||||
gp_Lin aL1(aPx[1], aDx[1]);
|
||||
//
|
||||
aD0=aL0.Distance(aPc);
|
||||
aD1=aL1.Distance(aPc);
|
||||
//
|
||||
aLength=aD0;
|
||||
aWidth =aD1;
|
||||
aDX=aL1.Direction();
|
||||
if (aD0<aD1) {
|
||||
aDX=aDx[0];
|
||||
aInfo.SetLocation(aPc);
|
||||
|
||||
if (isRectangle) {
|
||||
// Calculate sizes
|
||||
gp_Lin aL0(aPx[0], aDx[0]);
|
||||
gp_Lin aL1(aPx[1], aDx[1]);
|
||||
//
|
||||
aD0=aL0.Distance(aPc);
|
||||
aD1=aL1.Distance(aPc);
|
||||
//
|
||||
aLength=aD1;
|
||||
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();
|
||||
gp_Ax2 aAx2(aPc, aDZ, aDX);
|
||||
gp_Ax3 aAx3(aAx2);
|
||||
|
@ -21,9 +21,13 @@
|
||||
// Author : Edward AGAPOV (eap)
|
||||
|
||||
#include "GEOMGUI_CreationInfoWdg.h"
|
||||
|
||||
#include "GEOMImpl_Types.hxx"
|
||||
|
||||
#include <SalomeApp_Application.h>
|
||||
#include <SUIT_Desktop.h>
|
||||
#include <SUIT_ResourceMgr.h>
|
||||
#include <SUIT_Session.h>
|
||||
#include <SalomeApp_Application.h>
|
||||
|
||||
#include <QString>
|
||||
#include <QLabel>
|
||||
@ -38,33 +42,16 @@ GEOMGUI_CreationInfoWdg::GEOMGUI_CreationInfoWdg( SalomeApp_Application* app )
|
||||
//:QWidget( app->desktop() )
|
||||
{
|
||||
setWindowTitle( tr( "CREATION_INFO_TITLE" ) );
|
||||
setObjectName( "geomCreationInformation" );
|
||||
|
||||
QFrame* frame = new QFrame( 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 = new QTreeWidget( this );
|
||||
myParamsTreeWd->setColumnCount( 2 );
|
||||
myParamsTreeWd->setHeaderLabels( QStringList() << tr( "PARAMETER" ) << tr( "VALUE" ) );
|
||||
myParamsTreeWd->header()->setStretchLastSection( true );
|
||||
myParamsTreeWd->header()->setResizeMode( 0, QHeaderView::ResizeToContents );
|
||||
|
||||
QHBoxLayout* operationLay = new QHBoxLayout( operationGB );
|
||||
operationLay->addWidget( myIconLbl );
|
||||
operationLay->addWidget( myOperaionLnEd );
|
||||
operationLay->setMargin(5);
|
||||
|
||||
QVBoxLayout* aLayout = new QVBoxLayout( frame );
|
||||
aLayout->addWidget( operationGB );
|
||||
QVBoxLayout* aLayout = new QVBoxLayout( this );
|
||||
aLayout->addWidget( myParamsTreeWd );
|
||||
aLayout->setMargin(11);
|
||||
|
||||
// get a free dockable window id
|
||||
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
|
||||
}
|
||||
|
||||
void GEOMGUI_CreationInfoWdg::setOperation(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* GEOMGUI_CreationInfoWdg::addOperation(const QPixmap& icon, const QString& name)
|
||||
{
|
||||
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->setExpanded( true );
|
||||
|
||||
@ -95,8 +89,6 @@ void GEOMGUI_CreationInfoWdg::addParam (const QString& name, const QString& valu
|
||||
|
||||
void GEOMGUI_CreationInfoWdg::clear()
|
||||
{
|
||||
myIconLbl->setPixmap( QPixmap() );
|
||||
myOperaionLnEd->setText( "" );
|
||||
myParamsTreeWd->clear();
|
||||
}
|
||||
|
||||
@ -104,3 +96,57 @@ GEOMGUI_CreationInfoWdg::~GEOMGUI_CreationInfoWdg()
|
||||
{
|
||||
//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 <SALOMEconfig.h>
|
||||
#include CORBA_SERVER_HEADER(GEOM_Gen)
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
class QString;
|
||||
class QLabel;
|
||||
class QLineEdit;
|
||||
class QString;
|
||||
class QTreeWidget;
|
||||
class QTreeWidgetItem;
|
||||
class SalomeApp_Application;
|
||||
|
||||
/*!
|
||||
@ -46,16 +50,18 @@ class GEOMGUI_EXPORT GEOMGUI_CreationInfoWdg : public QWidget
|
||||
GEOMGUI_CreationInfoWdg( SalomeApp_Application* app );
|
||||
~GEOMGUI_CreationInfoWdg();
|
||||
|
||||
int getWinID() { return myWindowID; }
|
||||
|
||||
void setInfo( GEOM::CreationInformationSeq& info );
|
||||
void clear();
|
||||
void setOperation(const QPixmap& icon, const QString& name);
|
||||
void addParam (const QString& name, const QString& value);
|
||||
|
||||
int getWinID() { return myWindowID; }
|
||||
|
||||
private:
|
||||
|
||||
QLabel* myIconLbl;
|
||||
QLineEdit* myOperaionLnEd;
|
||||
QTreeWidgetItem* addOperation(const QPixmap& icon, const QString& name);
|
||||
void addParam (QTreeWidgetItem* operation, const QString& name, const QString& value);
|
||||
|
||||
QLabel* myIconLbl;
|
||||
//QLineEdit* myOperaionLnEd;
|
||||
QTreeWidget* myParamsTreeWd;
|
||||
int myWindowID;
|
||||
|
||||
|
@ -179,7 +179,7 @@ static void getEntityOwners( const Handle(AIS_InteractiveObject)& theObj,
|
||||
|
||||
for ( sel->Init(); sel->More(); sel->Next() ) {
|
||||
#if OCC_VERSION_LARGE > 0x06080100
|
||||
const SelectMgr_HSensitiveEntity aHSenEntity = sel->Sensitive();
|
||||
const Handle(SelectMgr_SensitiveEntity) aHSenEntity = sel->Sensitive();
|
||||
if( aHSenEntity.IsNull() )
|
||||
continue;
|
||||
|
||||
|
@ -541,7 +541,7 @@ Please, select face, shell or solid and try again</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<source>GEOM_D1</source>
|
||||
@ -2477,12 +2477,12 @@ Please, select face, shell or solid and try again</translation>
|
||||
<translation>2D Polyline</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>TOP_CURVE_CREATOR</source>
|
||||
<translation>Create 2D polyline</translation>
|
||||
<source>TOP_CURVE_CREATOR</source>
|
||||
<translation>Create 2D polyline</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>STB_CURVE_CREATOR</source>
|
||||
<translation>Create 2D polyline</translation>
|
||||
<source>STB_CURVE_CREATOR</source>
|
||||
<translation>Create 2D polyline</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>MEN_ALL_SEL_ONLY</source>
|
||||
@ -3270,7 +3270,7 @@ Please, select face, shell or solid and try again</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PREF_DEFLECTION</source>
|
||||
<translation>Deflection coefficient</translation>
|
||||
<translation>Default deflection coefficient</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_PREF_def_precision</source>
|
||||
@ -3318,7 +3318,7 @@ Please, select face, shell or solid and try again</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PREF_TRANSPARENCY</source>
|
||||
<translation>Transparency</translation>
|
||||
<translation>Default transparency</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PREF_FREE_BOUND_COLOR</source>
|
||||
@ -3342,7 +3342,7 @@ Please, select face, shell or solid and try again</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PREF_GROUP_VERTEX</source>
|
||||
<translation>Marker of Points</translation>
|
||||
<translation>Default marker of points</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PREF_ISOS_COLOR</source>
|
||||
@ -3422,11 +3422,11 @@ Please, select face, shell or solid and try again</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PREF_EDGE_WIDTH</source>
|
||||
<translation>Edges width</translation>
|
||||
<translation>Default edges width</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PREF_ISOLINES_WIDTH</source>
|
||||
<translation>Iso lines width</translation>
|
||||
<translation>Default isolines width</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PREF_PREVIEW_EDGE_WIDTH</source>
|
||||
@ -3486,7 +3486,7 @@ Please, select face, shell or solid and try again</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PREF_ISOS</source>
|
||||
<translation>Number of isolines</translation>
|
||||
<translation>Default number of isolines</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PREF_ISOS_U</source>
|
||||
@ -5759,23 +5759,23 @@ shells and solids on the other hand.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CurveCreator_TableView</name>
|
||||
<message>
|
||||
<source>TABLE_SECTION</source>
|
||||
<translation>Section</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>TABLE_INDEX</source>
|
||||
<translation>Index</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>TABLE_X</source>
|
||||
<translation>X</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>TABLE_Y</source>
|
||||
<translation>Y</translation>
|
||||
</message>
|
||||
<name>CurveCreator_TableView</name>
|
||||
<message>
|
||||
<source>TABLE_SECTION</source>
|
||||
<translation>Section</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>TABLE_INDEX</source>
|
||||
<translation>Index</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>TABLE_X</source>
|
||||
<translation>X</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>TABLE_Y</source>
|
||||
<translation>Y</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CurveCreator_Widget</name>
|
||||
@ -7199,7 +7199,7 @@ Do you want to create new material?</translation>
|
||||
<translation>Main shape</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_INSPECT_OBJECT_SHOW</source>
|
||||
<source>GEOM_INSPECT_OBJECT_SHOW</source>
|
||||
<translation>Show Selected</translation>
|
||||
</message>
|
||||
<message>
|
||||
@ -7322,22 +7322,22 @@ Do you want to create new material?</translation>
|
||||
<source>GEOM_CHECK_INTE_V_E</source>
|
||||
<translation>Vertex to Edge + all above</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_CHECK_INTE_E_E</source>
|
||||
<translation>Edge to Edge + all above</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_CHECK_INTE_V_F</source>
|
||||
<translation>Vertex to Face + all above</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_CHECK_INTE_E_F</source>
|
||||
<translation>Edge to Face + all above</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_CHECK_INTE_ALL</source>
|
||||
<translation>Face to Face + all above</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_CHECK_INTE_E_E</source>
|
||||
<translation>Edge to Edge + all above</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_CHECK_INTE_V_F</source>
|
||||
<translation>Vertex to Face + all above</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_CHECK_INTE_E_F</source>
|
||||
<translation>Edge to Face + all above</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_CHECK_INTE_ALL</source>
|
||||
<translation>Face to Face + all above</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MeasureGUI_FastCheckIntersectionsDlg</name>
|
||||
@ -7549,16 +7549,16 @@ Do you want to create new material?</translation>
|
||||
<context>
|
||||
<name>TransformationGUI_ProjectionOnCylDlg</name>
|
||||
<message>
|
||||
<source>GEOM_PROJ_ON_CYL_TITLE</source>
|
||||
<translation>Projection On A Cylinder</translation>
|
||||
<source>GEOM_PROJ_ON_CYL_TITLE</source>
|
||||
<translation>Projection On A Cylinder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_PROJ_ON_CYL_START_ANGLE</source>
|
||||
<translation>Starting angle</translation>
|
||||
<source>GEOM_PROJ_ON_CYL_START_ANGLE</source>
|
||||
<translation>Starting angle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_PROJ_ON_CYL_LENGTH_ANGLE</source>
|
||||
<translation>Length angle</translation>
|
||||
<source>GEOM_PROJ_ON_CYL_LENGTH_ANGLE</source>
|
||||
<translation>Length angle</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
@ -679,6 +679,18 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
|
||||
<source>GEOM_EXTRUSION_TITLE</source>
|
||||
<translation>Construction par extrusion</translation>
|
||||
</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>
|
||||
<source>GEOM_SCALE_PRISM</source>
|
||||
<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>
|
||||
<translation>Projection sur une face</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_PROJECTION_NAME</source>
|
||||
<translation>Projection</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_PROJ_ON_FACE_SOURCE</source>
|
||||
<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>
|
||||
<translation>Choisir les arêtes non-publiées</translation>
|
||||
</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>
|
||||
<source>GEOM_PLANE</source>
|
||||
<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>
|
||||
<translation>La forme %1 pour la création d'un solide est invalide</translation>
|
||||
</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>
|
||||
<source>GEOM_X</source>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<source>TOP_CURVE_CREATOR</source>
|
||||
<translation>Créer une courbe</translation>
|
||||
<source>TOP_CURVE_CREATOR</source>
|
||||
<translation>Créer une courbe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>STB_CURVE_CREATOR</source>
|
||||
<translation>Créer une courbe</translation>
|
||||
<source>STB_CURVE_CREATOR</source>
|
||||
<translation>Créer une courbe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<translation>Projection</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>MEN_PROJ_ON_CYL</source>
|
||||
<translation>Projection sur un cylindre</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>MEN_OPERATIONS</source>
|
||||
<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>
|
||||
<translation>Retrouver le chemin</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>MEN_THICKNESS</source>
|
||||
<translation>Epaisseur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>MEN_PLANE</source>
|
||||
<translation>Plan</translation>
|
||||
@ -3218,7 +3270,7 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PREF_DEFLECTION</source>
|
||||
<translation>Coefficient de déformation</translation>
|
||||
<translation>Coefficient de déformation par défaut</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<source>PREF_TRANSPARENCY</source>
|
||||
<translation>Transparence</translation>
|
||||
<translation>Transparence par défaut</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<source>PREF_GROUP_VERTEX</source>
|
||||
<translation>Marqueurs de points</translation>
|
||||
<translation>Marqueurs de points par défaut</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PREF_ISOS_COLOR</source>
|
||||
@ -3298,7 +3350,7 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PREF_LABEL_COLOR</source>
|
||||
<translation type="unfinished">Color of labels</translation>
|
||||
<translation>Couleur des étiquettes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PREF_TOPLEVEL_COLOR</source>
|
||||
@ -3370,11 +3422,11 @@ Choisissez une face, une coque ou un solide et essayez de nouveau</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PREF_EDGE_WIDTH</source>
|
||||
<translation>Epaisseur des arêtes</translation>
|
||||
<translation>Epaisseur des arêtes par défaut</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PREF_ISOLINES_WIDTH</source>
|
||||
<translation>Epaisseur des isolignes</translation>
|
||||
<translation>Epaisseur des isolignes par défaut</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<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>
|
||||
<source>PREF_ISOS</source>
|
||||
<translation>Nombre d'isolignes</translation>
|
||||
<translation>Nombre d'isolignes par défaut</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<translation>Projeter un point, une arête ou un contour sur une face</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>STB_PROJ_ON_CYL</source>
|
||||
<translation>Projète un contour ou une face sur un cylindre</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>STB_ORIGIN_AND_VECTORS</source>
|
||||
<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>
|
||||
<translation>Retrouver le chemin à partir d'un objet de type tuyau</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>STB_THICKNESS</source>
|
||||
<translation>Crée un solide par ajout d'épaisseur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>STB_PLANE</source>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<translation>Projection</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>TOP_PROJ_ON_CYL</source>
|
||||
<translation>Projection sur un cylindre</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>TOP_ORIGIN_AND_VECTORS</source>
|
||||
<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>
|
||||
<translation>Retrouver le chemin</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>TOP_THICKNESS</source>
|
||||
<translation>Epaississement</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>TOP_PLANE</source>
|
||||
<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>
|
||||
<translation>Import / Export XAO</translation>
|
||||
</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>
|
||||
<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>
|
||||
</message>
|
||||
</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>
|
||||
<name>CurveCreator_Widget</name>
|
||||
<message>
|
||||
@ -6064,10 +6135,6 @@ Le nombre de points n'est pas suffisant</translation>
|
||||
<source>GEOM_ADD_THICKNESS</source>
|
||||
<translation>Epaissir (arêtes ou contours uniquement)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_TOWARDS_INSIDE</source>
|
||||
<translation>Epaissir vers l'intérieur</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GroupGUI</name>
|
||||
@ -7132,7 +7199,7 @@ Voulez-vous en créer un nouveau ?</translation>
|
||||
<translation>Forme principale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_INSPECT_OBJECT_SHOW</source>
|
||||
<source>GEOM_INSPECT_OBJECT_SHOW</source>
|
||||
<translation>Afficher la sélection</translation>
|
||||
</message>
|
||||
<message>
|
||||
@ -7255,22 +7322,22 @@ Voulez-vous en créer un nouveau ?</translation>
|
||||
<source>GEOM_CHECK_INTE_V_E</source>
|
||||
<translation>Point à arête + tout au-delà</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_CHECK_INTE_E_E</source>
|
||||
<translation>Arête à arête + tout au-delà</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_CHECK_INTE_V_F</source>
|
||||
<translation>Point à face + tout au-delà</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_CHECK_INTE_E_F</source>
|
||||
<translation>Arête à Face + tout au-delà</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_CHECK_INTE_ALL</source>
|
||||
<translation>Face à Face + tout au-delà</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_CHECK_INTE_E_E</source>
|
||||
<translation>Arête à arête + tout au-delà</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_CHECK_INTE_V_F</source>
|
||||
<translation>Point à face + tout au-delà</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_CHECK_INTE_E_F</source>
|
||||
<translation>Arête à Face + tout au-delà</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_CHECK_INTE_ALL</source>
|
||||
<translation>Face à Face + tout au-delà</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MeasureGUI_FastCheckIntersectionsDlg</name>
|
||||
@ -7479,4 +7546,19 @@ Voulez-vous en créer un nouveau ?</translation>
|
||||
<translation>Matériaux: %1 de %2</translation>
|
||||
</message>
|
||||
</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>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1686,7 +1686,7 @@ void GeometryGUI::addPluginActions()
|
||||
// icon
|
||||
QPixmap icon;
|
||||
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)
|
||||
QStringList smenus = QString( adata.menuText.c_str() ).split( "/" );
|
||||
QString actionName = smenus.last();
|
||||
@ -1703,30 +1703,30 @@ void GeometryGUI::addPluginActions()
|
||||
actionStat = actionStat.toUpper().prepend( "STB_" );
|
||||
|
||||
createAction( id, // ~ adata.label
|
||||
tr( actionTool.toLatin1().constData() ),
|
||||
icon,
|
||||
tr( actionName.toLatin1().constData() ),
|
||||
tr( actionStat.toLatin1().constData() ),
|
||||
QKeySequence( tr( adata.accel.c_str() ) ),
|
||||
application()->desktop(),
|
||||
false /*toggle*/,
|
||||
this, SLOT( OnGUIEvent() ),
|
||||
QString() /*shortcutAction*/ );
|
||||
tr( actionTool.toLatin1().constData() ),
|
||||
icon,
|
||||
tr( actionName.toLatin1().constData() ),
|
||||
tr( actionStat.toLatin1().constData() ),
|
||||
QKeySequence( tr( adata.accel.c_str() ) ),
|
||||
application()->desktop(),
|
||||
false /*toggle*/,
|
||||
this, SLOT( OnGUIEvent() ),
|
||||
QString() /*shortcutAction*/ );
|
||||
|
||||
int menuId = -1;
|
||||
foreach ( QString subMenu, smenus ) {
|
||||
QStringList subMenuList = subMenu.split( ":" );
|
||||
QString subMenuName = subMenuList[0].toUpper().prepend( "MEN_" );
|
||||
int subMenuGroup = subMenuList.size() > 1 ? subMenuList[1].toInt() : -1;
|
||||
menuId = createMenu( tr( subMenuName.toLatin1().constData() ), menuId, -1, subMenuGroup );
|
||||
QStringList subMenuList = subMenu.split( ":" );
|
||||
QString subMenuName = subMenuList[0].toUpper().prepend( "MEN_" );
|
||||
int subMenuGroup = subMenuList.size() > 1 ? subMenuList[1].toInt() : -1;
|
||||
menuId = createMenu( tr( subMenuName.toLatin1().constData() ), menuId, -1, subMenuGroup );
|
||||
}
|
||||
createMenu( id, menuId, -1 );
|
||||
|
||||
if ( !stools.isEmpty() ) {
|
||||
QString subTool = stools[0];
|
||||
subTool = subTool.toUpper().prepend( "TOOL_" );
|
||||
int toolId = createTool( tr( subTool.toLatin1().constData() ) );
|
||||
createTool(id, toolId);
|
||||
QString subTool = stools[0];
|
||||
subTool = subTool.toUpper().prepend( "TOOL_" );
|
||||
int toolId = createTool( tr( subTool.toLatin1().constData() ) );
|
||||
createTool(id, toolId);
|
||||
}
|
||||
|
||||
// add action id to map
|
||||
@ -1763,8 +1763,8 @@ bool GeometryGUI::activateModule( SUIT_Study* study )
|
||||
else {
|
||||
PyObjWrapper result =
|
||||
PyObject_CallMethod(pluginsmanager, (char*)"initialize", (char*)"isss", 1, "geom",
|
||||
tr("MEN_NEW_ENTITY").toStdString().c_str(),
|
||||
tr("GEOM_PLUGINS_OTHER").toStdString().c_str());
|
||||
tr("MEN_NEW_ENTITY").toUtf8().data(),
|
||||
tr("GEOM_PLUGINS_OTHER").toUtf8().data());
|
||||
if ( !result )
|
||||
PyErr_Print();
|
||||
}
|
||||
@ -2041,38 +2041,15 @@ void GeometryGUI::updateCreationInfo()
|
||||
// pass creation info of geomObj to myCreationInfoWdg
|
||||
|
||||
if ( myCreationInfoWdg ) {
|
||||
QPixmap icon;
|
||||
QString operationName;
|
||||
myCreationInfoWdg->setOperation( icon, operationName );
|
||||
|
||||
GEOM::CreationInformationSeq_var info;
|
||||
try {
|
||||
OCC_CATCH_SIGNALS;
|
||||
GEOM::CreationInformation_var 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 );
|
||||
}
|
||||
}
|
||||
info = geomObj->GetCreationInformation();
|
||||
}
|
||||
catch (...) {
|
||||
}
|
||||
myCreationInfoWdg->setInfo( info );
|
||||
}
|
||||
}
|
||||
|
||||
@ -2304,7 +2281,7 @@ void GeometryGUI::createPreferences()
|
||||
LightApp_Preferences::Selector, "Geometry", "toplevel_dm" );
|
||||
|
||||
int transparency = addPreference( tr( "PREF_TRANSPARENCY" ), genGroup,
|
||||
LightApp_Preferences::IntSpin, "Geometry", "transparency" );
|
||||
LightApp_Preferences::IntSpin, "Geometry", "transparency" );
|
||||
|
||||
int defl = addPreference( tr( "PREF_DEFLECTION" ), genGroup,
|
||||
LightApp_Preferences::DblSpin, "Geometry", "deflection_coeff" );
|
||||
|
@ -548,71 +548,6 @@ TopoDS_Shape GEOMImpl_BooleanDriver::performOperation
|
||||
if ( !GEOMUtils::CheckShape(aShape, true) && !GEOMUtils::FixShapeTolerance(aShape) )
|
||||
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;
|
||||
}
|
||||
|
||||
|
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 <Precision.hxx>
|
||||
#include <gp_Pln.hxx>
|
||||
#include <gp_Pnt.hxx>
|
||||
#include <gp_Vec.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);
|
||||
if (!V1.IsNull() && !V2.IsNull()) {
|
||||
gp_Vec aV (BRep_Tool::Pnt(V1), BRep_Tool::Pnt(V2));
|
||||
gp_Ax2 anAxes (aP, -aV);
|
||||
gp_Circ aCirc (anAxes, aCI.GetRadius());
|
||||
gp_Ax2 anAxes (aP, aV);
|
||||
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();
|
||||
BRepBuilderAPI_MakeWire MW;
|
||||
MW.Add(TopoDS::Edge(aCircle));
|
||||
BRepBuilderAPI_MakeFace MF (MW, Standard_False);
|
||||
BRepBuilderAPI_MakeFace MF (aPln, MW);
|
||||
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()))
|
||||
Standard_ConstructionError::Raise("Disk creation aborted: points lay on one line");
|
||||
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();
|
||||
BRepBuilderAPI_MakeWire MW;
|
||||
MW.Add(TopoDS::Edge(aCircle));
|
||||
BRepBuilderAPI_MakeFace MF (MW, Standard_False);
|
||||
BRepBuilderAPI_MakeFace MF (aPln, MW);
|
||||
aShape = MF.Shape();
|
||||
}
|
||||
}
|
||||
@ -139,12 +147,15 @@ Standard_Integer GEOMImpl_DiskDriver::Execute(TFunction_Logbook& log) const
|
||||
else if (anOrient == 3)
|
||||
aV = gp::DY();
|
||||
|
||||
gp_Ax2 anAxes (aP, -aV);
|
||||
gp_Circ aCirc (anAxes, aCI.GetRadius());
|
||||
gp_Ax2 anAxes (aP, aV);
|
||||
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();
|
||||
BRepBuilderAPI_MakeWire MW;
|
||||
MW.Add(TopoDS::Edge(aCircle));
|
||||
BRepBuilderAPI_MakeFace MF (MW, Standard_False);
|
||||
BRepBuilderAPI_MakeFace MF (aPln, MW);
|
||||
aShape = MF.Shape();
|
||||
}
|
||||
else {
|
||||
|
@ -83,6 +83,20 @@ GetCreationInformation(std::string& theOperationName,
|
||||
AddParam( theParams, "Step", data.GetStepID() );
|
||||
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
|
||||
{
|
||||
return false;
|
||||
|
@ -24,10 +24,10 @@
|
||||
|
||||
#include "GEOM_Function.hxx"
|
||||
|
||||
#define PROJECTION_ARG_SHAPE 1
|
||||
#define PROJECTION_ARG_RADIUS 2
|
||||
#define PROJECTION_ARG_START_ANGLE 3
|
||||
#define PROJECTION_ARG_ANGLE_LENGTH 4
|
||||
#define PROJCYL_ARG_SHAPE 1
|
||||
#define PROJCYL_ARG_RADIUS 2
|
||||
#define PROJCYL_ARG_START_ANGLE 3
|
||||
#define PROJCYL_ARG_ANGLE_LENGTH 4
|
||||
|
||||
class GEOMImpl_IProjOnCyl
|
||||
{
|
||||
@ -37,22 +37,22 @@ public:
|
||||
GEOMImpl_IProjOnCyl(Handle(GEOM_Function) theFunction): _func(theFunction) {}
|
||||
|
||||
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)
|
||||
{ _func->SetReal(PROJECTION_ARG_RADIUS, theRadius); }
|
||||
{ _func->SetReal(PROJCYL_ARG_RADIUS, theRadius); }
|
||||
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)
|
||||
{ _func->SetReal(PROJECTION_ARG_ANGLE_LENGTH, theAngleLength); }
|
||||
{ _func->SetReal(PROJCYL_ARG_ANGLE_LENGTH, theAngleLength); }
|
||||
|
||||
Handle(GEOM_Function) GetShape()
|
||||
{ return _func->GetReference(PROJECTION_ARG_SHAPE); }
|
||||
{ return _func->GetReference(PROJCYL_ARG_SHAPE); }
|
||||
Standard_Real GetRadius()
|
||||
{ return _func->GetReal(PROJECTION_ARG_RADIUS ); }
|
||||
{ return _func->GetReal(PROJCYL_ARG_RADIUS ); }
|
||||
Standard_Real GetStartAngle()
|
||||
{ return _func->GetReal(PROJECTION_ARG_START_ANGLE ); }
|
||||
{ return _func->GetReal(PROJCYL_ARG_START_ANGLE ); }
|
||||
Standard_Real GetAngleLength()
|
||||
{ return _func->GetReal(PROJECTION_ARG_ANGLE_LENGTH ); }
|
||||
{ return _func->GetReal(PROJCYL_ARG_ANGLE_LENGTH ); }
|
||||
|
||||
private:
|
||||
|
||||
|
@ -2787,9 +2787,31 @@ Handle(TColStd_HSequenceOfInteger)
|
||||
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
|
||||
GEOMAlgo_FinderShapeOn2 aFinder;
|
||||
Standard_Real aTol = 0.0001; // default value
|
||||
|
||||
Handle(GEOMAlgo_ClsfSolid) aClsfSolid = new GEOMAlgo_ClsfSolid;
|
||||
aClsfSolid->SetShape(aCheckShape);
|
||||
|
@ -210,7 +210,7 @@ GetCreationInformation(std::string& theOperationName,
|
||||
break;
|
||||
case OFFSET_THICKENING:
|
||||
case OFFSET_THICKENING_COPY:
|
||||
theOperationName = "MakeThickening";
|
||||
theOperationName = "THICKNESS";
|
||||
AddParam( theParams, "Object", aCI.GetShape() );
|
||||
AddParam( theParams, "Offset", aCI.GetParam() ? -aCI.GetValue() : aCI.GetValue() );
|
||||
{
|
||||
|
@ -473,41 +473,43 @@ GetCreationInformation(std::string& theOperationName,
|
||||
|
||||
switch ( aType ) {
|
||||
case PROJECTION_COPY:
|
||||
{
|
||||
GEOMImpl_IMirror aCI( function );
|
||||
{
|
||||
GEOMImpl_IMirror aCI( function );
|
||||
|
||||
AddParam( theParams, "Source object", aCI.GetOriginal() );
|
||||
AddParam( theParams, "Target face", aCI.GetPlane() );
|
||||
break;
|
||||
}
|
||||
AddParam( theParams, "Source object", aCI.GetOriginal() );
|
||||
AddParam( theParams, "Target face", aCI.GetPlane() );
|
||||
break;
|
||||
}
|
||||
case PROJECTION_ON_WIRE:
|
||||
{
|
||||
GEOMImpl_IProjection aProj (function);
|
||||
{
|
||||
GEOMImpl_IProjection aProj (function);
|
||||
|
||||
AddParam(theParams, "Point", aProj.GetPoint());
|
||||
AddParam(theParams, "Shape", aProj.GetShape());
|
||||
AddParam(theParams, "Point", aProj.GetPoint());
|
||||
AddParam(theParams, "Shape", aProj.GetShape());
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case PROJECTION_ON_CYLINDER:
|
||||
{
|
||||
GEOMImpl_IProjOnCyl aProj (function);
|
||||
const Standard_Real aLengthAngle = aProj.GetAngleLength();
|
||||
{
|
||||
theOperationName = "PROJ_ON_CYL";
|
||||
|
||||
AddParam(theParams, "Shape", aProj.GetShape());
|
||||
AddParam(theParams, "Radius", aProj.GetRadius());
|
||||
AddParam(theParams, "Start angle", aProj.GetStartAngle());
|
||||
GEOMImpl_IProjOnCyl aProj (function);
|
||||
const Standard_Real aLengthAngle = aProj.GetAngleLength();
|
||||
|
||||
if (aLengthAngle >= 0.) {
|
||||
AddParam(theParams, "Length angle", aLengthAngle);
|
||||
}
|
||||
AddParam(theParams, "Shape", aProj.GetShape());
|
||||
AddParam(theParams, "Radius", aProj.GetRadius());
|
||||
AddParam(theParams, "Start angle", aProj.GetStartAngle());
|
||||
|
||||
break;
|
||||
if (aLengthAngle >= 0.) {
|
||||
AddParam(theParams, "Length angle", aLengthAngle);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -661,7 +663,7 @@ TopoDS_Shape GEOMImpl_ProjectionDriver::projectOnCylinder
|
||||
GEOMUtils::Handle(HTrsfCurve2d) aTrsfCurve =
|
||||
new GEOMUtils::HTrsfCurve2d(aCurve, aPar[0], aPar[1], aTrsf2d);
|
||||
Approx_Curve2d aConv (aTrsfCurve, aPar[0], aPar[1],
|
||||
aUResol, aVResol, GeomAbs_C1,
|
||||
aUResol, aVResol, GeomAbs_C1,
|
||||
9, 1000);
|
||||
|
||||
if (!aConv.IsDone() && !aConv.HasResult()) {
|
||||
|
@ -59,6 +59,8 @@
|
||||
#include <ShapeAnalysis.hxx>
|
||||
#include <ShapeAnalysis_FreeBounds.hxx>
|
||||
|
||||
#include <TNaming_CopyShape.hxx>
|
||||
|
||||
#include <TopAbs.hxx>
|
||||
#include <TopExp.hxx>
|
||||
#include <TopExp_Explorer.hxx>
|
||||
@ -86,6 +88,7 @@
|
||||
#include <GeomConvert.hxx>
|
||||
#include <GeomLProp.hxx>
|
||||
|
||||
#include <TColStd_IndexedDataMapOfTransientTransient.hxx>
|
||||
#include <TColStd_SequenceOfReal.hxx>
|
||||
#include <TColStd_HSequenceOfTransient.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
|
||||
TopTools_MapOfShape aMapEdges;
|
||||
Handle(TopTools_HSequenceOfShape) aSeqEdgesIn = new TopTools_HSequenceOfShape;
|
||||
TColStd_IndexedDataMapOfTransientTransient aMapTShapes;
|
||||
|
||||
for (ind = 1; ind <= nbshapes; 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);
|
||||
for (; anExpE_i.More(); anExpE_i.Next()) {
|
||||
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).
|
||||
// See below for more information.
|
||||
// Currently solution 4 is chosen!
|
||||
#define BSPLINE_PROCESS_CLOSED_PNTSET 4
|
||||
#define BSPLINE_PROCESS_CLOSED_PNTSET 2
|
||||
|
||||
namespace
|
||||
{
|
||||
@ -152,6 +152,8 @@ Standard_Integer GEOMImpl_SplineDriver::Execute(TFunction_Logbook& log) const
|
||||
|
||||
// reorder points if required (bspline only)
|
||||
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++) {
|
||||
gp_Pnt pi = points->Value(i);
|
||||
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(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
|
||||
|
||||
|
@ -1,7 +1,4 @@
|
||||
// Copyright (C) 2007-2014 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
|
||||
// Copyright (C) 2015 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// 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) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||
// Copyright (C) 2015 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// 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) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||
// Copyright (C) 2015 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// 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) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||
// Copyright (C) 2015 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// 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) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||
// Copyright (C) 2015 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// 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) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||
// Copyright (C) 2015 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// 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 =
|
||||
Handle(GEOM_BaseDriver)::DownCast( _impl->GetCreationDriver() );
|
||||
if ( !driver.IsNull() )
|
||||
int nbFun = _impl->GetNbFunctions();
|
||||
info->length( nbFun );
|
||||
int nbI = 0;
|
||||
for ( int i = 1; i <= nbFun; ++i )
|
||||
{
|
||||
std::vector<GEOM_Param> params;
|
||||
std::string operationName;
|
||||
try
|
||||
Handle(GEOM_BaseDriver) driver =
|
||||
Handle(GEOM_BaseDriver)::DownCast( _impl->GetCreationDriver( i ));
|
||||
if ( !driver.IsNull() )
|
||||
{
|
||||
OCC_CATCH_SIGNALS;
|
||||
if ( driver->GetCreationInformation( operationName, params ))
|
||||
std::vector<GEOM_Param> params;
|
||||
std::string operationName;
|
||||
try
|
||||
{
|
||||
info->operationName = operationName.c_str();
|
||||
info->params.length( params.size() );
|
||||
for ( size_t i = 0; i < params.size(); ++i )
|
||||
OCC_CATCH_SIGNALS;
|
||||
if ( driver->GetCreationInformation( operationName, params ))
|
||||
{
|
||||
info->params[i].name = params[i].name.c_str();
|
||||
info->params[i].value = params[i].value.c_str();
|
||||
info[nbI].operationName = operationName.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_
|
||||
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_
|
||||
cout << "Ecxeption in GEOM_BaseObject_i::GetCreationInformation()" << endl;
|
||||
cout << "Ecxeption in GEOM_BaseObject_i::GetCreationInformation()" << endl;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
info->length( nbI );
|
||||
|
||||
return info._retn();
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ class GEOM_I_EXPORT GEOM_BaseObject_i : public virtual POA_GEOM::GEOM_BaseObject
|
||||
|
||||
virtual char* GetParameters();
|
||||
|
||||
virtual GEOM::CreationInformation* GetCreationInformation();
|
||||
virtual GEOM::CreationInformationSeq* GetCreationInformation();
|
||||
|
||||
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");
|
||||
aNamePrefix = "LocalCS_";
|
||||
} else if ( mytype >= USER_TYPE_EX ) {
|
||||
char buf[20];
|
||||
sprintf( buf, "%d", aBaseObj->GetType() );
|
||||
GEOM::CreationInformation_var info = aBaseObj->GetCreationInformation();
|
||||
std::string plgId;
|
||||
for ( size_t i = 0; i < info->params.length(); ++i ) {
|
||||
std::string param_name = info->params[i].name.in();
|
||||
std::string param_value = info->params[i].value.in();
|
||||
if( param_name == PLUGIN_NAME) {
|
||||
plgId = param_value;
|
||||
break;
|
||||
}
|
||||
char buf[20];
|
||||
sprintf( buf, "%d", aBaseObj->GetType() );
|
||||
GEOM::CreationInformationSeq_var infoSeq = aBaseObj->GetCreationInformation();
|
||||
std::string plgId;
|
||||
for ( size_t j = 0; j < infoSeq->length(); ++j )
|
||||
for ( size_t i = 0; i < infoSeq[j].params.length(); ++i ) {
|
||||
std::string param_name = infoSeq[j].params[i].name.in();
|
||||
std::string param_value = infoSeq[j].params[i].value.in();
|
||||
if( param_name == PLUGIN_NAME) {
|
||||
plgId = param_value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(plgId.length() > 0 ) {
|
||||
plgId += "::";
|
||||
}
|
||||
plgId +="ICON_OBJBROWSER_";
|
||||
plgId += buf;
|
||||
aResultSO->SetAttrString("AttributePixMap",plgId.c_str());
|
||||
if(plgId.length() > 0 ) {
|
||||
plgId += "::";
|
||||
}
|
||||
plgId +="ICON_OBJBROWSER_";
|
||||
plgId += buf;
|
||||
aResultSO->SetAttrString("AttributePixMap",plgId.c_str());
|
||||
} else if ( mytype > USER_TYPE ) {
|
||||
char buf[20];
|
||||
sprintf( buf, "%d", aBaseObj->GetType() );
|
||||
|
@ -3055,10 +3055,12 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen):
|
||||
theR,theH,theA,Parameters = ParseParameters(theR, theH, theA)
|
||||
if flag:
|
||||
theA = theA*math.pi/180.
|
||||
anObj = self.PrimOp.MakeCylinderPntVecRHA(thePnt, theAxis, theR, theH, theA)
|
||||
RaiseIfFailed("MakeCylinderPntVecRHA", self.PrimOp)
|
||||
anObj.SetParameters(Parameters)
|
||||
self._autoPublish(anObj, theName, "cylinder")
|
||||
if theA<=0. or theA>=2*math.pi:
|
||||
raise ValueError("The angle parameter should be strictly between 0 and 2*pi.")
|
||||
anObj = self.PrimOp.MakeCylinderPntVecRHA(thePnt, theAxis, theR, theH, theA)
|
||||
RaiseIfFailed("MakeCylinderPntVecRHA", self.PrimOp)
|
||||
anObj.SetParameters(Parameters)
|
||||
self._autoPublish(anObj, theName, "cylinder")
|
||||
return anObj
|
||||
|
||||
## 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)
|
||||
if flag:
|
||||
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)
|
||||
RaiseIfFailed("MakeCylinderRHA", self.PrimOp)
|
||||
anObj.SetParameters(Parameters)
|
||||
@ -4472,7 +4476,7 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen):
|
||||
# end of l3_complex
|
||||
## @}
|
||||
|
||||
## @addtogroup l3_advanced
|
||||
## @addtogroup l3_basic_go
|
||||
## @{
|
||||
|
||||
## Create a linear edge with specified ends.
|
||||
@ -4904,7 +4908,7 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen):
|
||||
self._autoPublish(anObj, theName, "solid")
|
||||
return anObj
|
||||
|
||||
# end of l3_advanced
|
||||
# end of l3_basic_go
|
||||
## @}
|
||||
|
||||
## @addtogroup l2_measure
|
||||
@ -7375,7 +7379,7 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen):
|
||||
Returns:
|
||||
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)
|
||||
if anObj is None:
|
||||
raise RuntimeError, "MakeGlueFacesByList : " + self.ShapesOp.GetErrorCode()
|
||||
@ -9161,7 +9165,7 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen):
|
||||
self._autoPublish(anObj, theName, "projection")
|
||||
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
|
||||
# exception.
|
||||
# @param thePoint the point to be projected.
|
||||
@ -9179,7 +9183,7 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen):
|
||||
@ManageTransactions("TrsfOp")
|
||||
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
|
||||
exception.
|
||||
|
||||
@ -10966,14 +10970,17 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen):
|
||||
return aDict
|
||||
|
||||
def GetCreationInformation(self, theShape):
|
||||
info = theShape.GetCreationInformation()
|
||||
# operationName
|
||||
opName = info.operationName
|
||||
if not opName: opName = "no info available"
|
||||
res = "Operation: " + opName
|
||||
# parameters
|
||||
for parVal in info.params:
|
||||
res += " \n %s = %s" % ( parVal.name, parVal.value )
|
||||
res = ''
|
||||
infos = theShape.GetCreationInformation()
|
||||
for info in infos:
|
||||
# operationName
|
||||
opName = info.operationName
|
||||
if not opName: opName = "no info available"
|
||||
if res: res += "\n"
|
||||
res += "Operation: " + opName
|
||||
# parameters
|
||||
for parVal in info.params:
|
||||
res += "\n \t%s = %s" % ( parVal.name, parVal.value )
|
||||
return res
|
||||
|
||||
## Get a point, situated at the centre of mass of theShape.
|
||||
|
@ -50,6 +50,10 @@ ADD_DEFINITIONS(
|
||||
${QT_DEFINITIONS}
|
||||
)
|
||||
|
||||
IF(WIN32)
|
||||
ADD_DEFINITIONS(-DNOGDI)
|
||||
ENDIF(WIN32)
|
||||
|
||||
# libraries to link to
|
||||
SET(_link_LIBRARIES
|
||||
GEOMObject
|
||||
|
@ -443,11 +443,17 @@ void GroupGUI_GroupDlg::SetEditCurrentArgument()
|
||||
if (send == mySelBtn) {
|
||||
myEditCurrentArgument = myMainName;
|
||||
myShape2Name->setText("");
|
||||
mySelBtn->setDown(true);
|
||||
mySelBtn2->setDown(false);
|
||||
}
|
||||
else if (send == mySelBtn2 || sender() == myRestrictGroup) {
|
||||
setInPlaceObj(GEOM::GEOM_Object::_nil());
|
||||
myShape2Name->setText("");
|
||||
if (subSelectionWay() != ALL_SUBSHAPES) {
|
||||
if ( send == mySelBtn2 ) {
|
||||
mySelBtn2->setDown(true);
|
||||
mySelBtn->setDown(false);
|
||||
}
|
||||
if (subSelectionWay() != ALL_SUBSHAPES) {
|
||||
myEditCurrentArgument = myShape2Name;
|
||||
}
|
||||
else {
|
||||
@ -455,7 +461,11 @@ void GroupGUI_GroupDlg::SetEditCurrentArgument()
|
||||
}
|
||||
}
|
||||
|
||||
activateSelection();
|
||||
// activateSelection();
|
||||
if(myEditCurrentArgument) {
|
||||
myEditCurrentArgument->setFocus();
|
||||
send->setDown(true);
|
||||
}
|
||||
|
||||
updateState();
|
||||
}
|
||||
@ -562,6 +572,9 @@ void GroupGUI_GroupDlg::SelectionIntoArgument()
|
||||
{
|
||||
if (subSelectionWay() != ALL_SUBSHAPES && myEditCurrentArgument == myShape2Name) {
|
||||
onGetInPlace();
|
||||
if( !myInPlaceObj->_is_nil() ) {
|
||||
mySelBtn2->setDown(false);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@ -586,6 +599,7 @@ void GroupGUI_GroupDlg::SelectionIntoArgument()
|
||||
}
|
||||
myMainObj = anObj;
|
||||
if (!CORBA::is_nil(myMainObj)) {
|
||||
mySelBtn->setDown(false);
|
||||
SALOME_View* view = GEOM_Displayer::GetActiveView();
|
||||
if (view) {
|
||||
CORBA::String_var aMainEntry = myMainObj->GetStudyEntry();
|
||||
|
@ -32,7 +32,7 @@
|
||||
<name>IGESPlugin_GUI</name>
|
||||
<message>
|
||||
<source>IGES_FILES</source>
|
||||
<translation>IGESファイル</translation>
|
||||
<translation>IGES ファイル ( *.iges *.igs )</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>EXPORT_TITLE</source>
|
||||
|
@ -135,7 +135,7 @@ MeasureGUI_ManageDimensionsDlg::MeasureGUI_ManageDimensionsDlg( GeometryGUI* the
|
||||
{
|
||||
myObjectSelector->PushButton1->click();
|
||||
}
|
||||
|
||||
myIsNeedRedisplay = false;
|
||||
setHelpFileName("managing_dimensions_page.html");
|
||||
}
|
||||
|
||||
@ -809,7 +809,9 @@ void MeasureGUI_ManageDimensionsDlg::OnFinish()
|
||||
GEOM::propertyName( GEOM::Dimensions ),
|
||||
QVariant() );
|
||||
|
||||
redisplay( myEditObject.get() );
|
||||
if ( myIsNeedRedisplay ) {
|
||||
redisplay( myEditObject.get() );
|
||||
}
|
||||
|
||||
myGeomGUI->emitDimensionsUpdated( QString( myEditObject->GetStudyEntry() ) );
|
||||
}
|
||||
@ -894,8 +896,8 @@ void MeasureGUI_ManageDimensionsDlg::SetEditObject( const GEOM::GeomObjPtr& theO
|
||||
|
||||
if ( myEditObject.isNull() )
|
||||
{
|
||||
myDimensionView->TreeWidget->clear();
|
||||
myDimensionView->setEnabled( false );
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -960,8 +962,6 @@ void MeasureGUI_ManageDimensionsDlg::RestoreState()
|
||||
myEditObject->GetStudyEntry(),
|
||||
GEOM::propertyName( GEOM::Dimensions ),
|
||||
QVariant() );
|
||||
|
||||
RedisplayObject();
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
@ -1112,8 +1112,8 @@ bool MeasureGUI_ManageDimensionsDlg::AllowedToCancelChanges()
|
||||
tr( "WRN_MSG_CHANGES_LOST" ),
|
||||
QMessageBox::Ok,
|
||||
QMessageBox::Cancel );
|
||||
|
||||
return aResponse == QMessageBox::Ok;
|
||||
myIsNeedRedisplay = ( aResponse == QMessageBox::Ok );
|
||||
return myIsNeedRedisplay;
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
|
@ -114,7 +114,7 @@ private:
|
||||
|
||||
private:
|
||||
GEOM::GeomObjPtr myEditObject;
|
||||
|
||||
bool myIsNeedRedisplay;
|
||||
private:
|
||||
DlgRef_1Sel* myObjectSelector;
|
||||
MeasureGUI_1TreeWidget_4Button* myDimensionView;
|
||||
|
@ -109,7 +109,7 @@ static void getEntityOwners( const Handle(AIS_InteractiveObject)& theObj,
|
||||
|
||||
for ( sel->Init(); sel->More(); sel->Next() ) {
|
||||
#if OCC_VERSION_LARGE > 0x06080100
|
||||
const SelectMgr_HSensitiveEntity aHSenEntity = sel->Sensitive();
|
||||
const Handle(SelectMgr_SensitiveEntity) aHSenEntity = sel->Sensitive();
|
||||
if( aHSenEntity.IsNull() )
|
||||
continue;
|
||||
|
||||
|
@ -259,6 +259,7 @@ void GEOM_VTKTrihedron::SetSize( double theSize )
|
||||
aRes->AddInputConnection( aSrcZ->GetOutputPort() );
|
||||
|
||||
myMapper->SetInputConnection( aRes->GetOutputPort() );
|
||||
aRes->Update();
|
||||
SALOME_Actor::SetMapper( myMapper );
|
||||
|
||||
aSrcX->Delete();
|
||||
|
@ -411,7 +411,7 @@ bool PrimitiveGUI_CylinderDlg::isValid (QString& msg)
|
||||
{
|
||||
ok = GroupDimensions->SpinBox_DX->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() &&
|
||||
( GroupDimensions->SpinBox_DZ->value() <= 0. || GroupDimensions->SpinBox_DZ->value() >= 360. ) ) {
|
||||
msg += tr("GEOM_CYLINDER_ANGLE_ERR") + "\n";
|
||||
|
@ -959,6 +959,7 @@ void RepairGUI_ShapeProcessDlg::operatorChecked( QListWidgetItem * item )
|
||||
{
|
||||
if ( item && item->checkState() == Qt::Checked )
|
||||
{
|
||||
item->setSelected(true);
|
||||
myStack->setCurrentIndex( myOpList->row( item ));
|
||||
}
|
||||
updateSelectAll();
|
||||
|
@ -32,7 +32,7 @@
|
||||
<name>STEPPlugin_GUI</name>
|
||||
<message>
|
||||
<source>STEP_FILES</source>
|
||||
<translation>STEPファイル</translation>
|
||||
<translation>STEP ファイル ( *.step *.stp )</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>EXPORT_TITLE</source>
|
||||
|
@ -32,7 +32,7 @@
|
||||
<name>STLPlugin_GUI</name>
|
||||
<message>
|
||||
<source>STL_FILES</source>
|
||||
<translation>STLファイル</translation>
|
||||
<translation>STL ファイル( *.stl )</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>EXPORT_TITLE</source>
|
||||
@ -51,11 +51,11 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>RELATIVE</source>
|
||||
<translation type="unfinished">Relative</translation>
|
||||
<translation>相対</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DEFLECTION</source>
|
||||
<translation type="unfinished">Deflection</translation>
|
||||
<translation>たわみ</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
@ -32,7 +32,7 @@
|
||||
<name>VTKPlugin_GUI</name>
|
||||
<message>
|
||||
<source>VTK_FILES</source>
|
||||
<translation>VTKファイル</translation>
|
||||
<translation>VTKファイル( *.vtk )</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>EXPORT_TITLE</source>
|
||||
@ -43,7 +43,7 @@
|
||||
<name>VTKPlugin_ExportDlg</name>
|
||||
<message>
|
||||
<source>DEFLECTION</source>
|
||||
<translation type="unfinished">Deflection</translation>
|
||||
<translation>たわみ</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
@ -5,27 +5,27 @@
|
||||
<name>@default</name>
|
||||
<message>
|
||||
<source>MEN_EXPORTXAO</source>
|
||||
<translation>エクスポートしました。</translation>
|
||||
<translation>XAOエクスポート</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>TOP_EXPORTXAO</source>
|
||||
<translation>エクスポートしました。</translation>
|
||||
<translation>XAOのエクスポート</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>STB_EXPORTXAO</source>
|
||||
<translation>ソテーした形式でフォームをエクスポートします。</translation>
|
||||
<translation>XAOのエクスポート</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>MEN_IMPORTXAO</source>
|
||||
<translation>インポートしました。</translation>
|
||||
<translation>XAOインポート</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>TOP_IMPORTXAO</source>
|
||||
<translation>インポートしました。</translation>
|
||||
<translation>XAOのインポート</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>STB_IMPORTXAO</source>
|
||||
<translation>ソテーしたフォームをインポートします。</translation>
|
||||
<translation>XAOのインポート</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>XAOPLUGIN_IMPORT_SELECT</source>
|
||||
@ -33,22 +33,22 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>XAOPLUGIN_EXPORT_SELECT</source>
|
||||
<translation>エクスポートしました。</translation>
|
||||
<translation>XAOへのエクスポート</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>XAOPLUGIN_FILES</source>
|
||||
<translation>ファイルした (*.xao)</translation>
|
||||
<translation>XAO ファイル (*.xao)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>XAOPlugin_ExportDlg</name>
|
||||
<message>
|
||||
<source>XAOPLUGIN_EXPORT_TITLE</source>
|
||||
<translation>エクスポートしました。</translation>
|
||||
<translation>XAOエクスポート</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>XAOPLUGIN_EXPORTXAO</source>
|
||||
<translation>エクスポートしました。</translation>
|
||||
<translation>XAOエクスポート</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>XAOPLUGIN_EXPORT_INGSHAPE</source>
|
||||
@ -75,11 +75,11 @@
|
||||
<name>XAOPlugin_ImportDlg</name>
|
||||
<message>
|
||||
<source>XAOPLUGIN_IMPORT_TITLE</source>
|
||||
<translation>インポートしました。</translation>
|
||||
<translation>XAOインポート</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>XAOPLUGIN_IMPORTXAO</source>
|
||||
<translation>インポートしました。</translation>
|
||||
<translation>XAOインポート</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>XAOPLUGIN_IMPORT_INGSHAPE</source>
|
||||
|
Loading…
Reference in New Issue
Block a user