Merge from V5_1_main 10/06/2010
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 26 KiB |
BIN
doc/salome/gui/GEOM/images/partitionsn3.png
Normal file
After Width: | Height: | Size: 9.2 KiB |
@ -5,23 +5,35 @@
|
||||
\n To <b>Add Point on Edge</b> in the <b>Main Menu</b> select
|
||||
<b>Repair - > Add Point on Edge</b>.
|
||||
|
||||
\n This operation splits an edge in two in accordance with the
|
||||
\n This operation splits an edge in two new edges in accordance with the
|
||||
specified mode (by length or by parameter) and a value specifying the
|
||||
position of the point on edge (for example val =0.5; mode =
|
||||
Length). This operation is available in <b>OCC Viewer</b> only.
|
||||
by length). This operation is available in <b>OCC Viewer</b> only.
|
||||
|
||||
\n The \b Result will be a \b GEOM_Object.
|
||||
|
||||
\n <b>TUI Command:</b> <em>geompy.DivideEdge(Shape, EdgeID, Value,
|
||||
IsByParameter), </em> where \em Shape is a shape which contains an edge to
|
||||
be divided, \em EdgeID is the ID of the edge to be divided, if it = -1,
|
||||
then Shape is an edge, \em Value is a paramter on the edge or a
|
||||
length. \em IsByParameter if it is True then Value is the edge parameter
|
||||
in the range [0:1] otherwise it is a part of the length of the edge in the range
|
||||
[0: full length of the edge]
|
||||
\n <b>Arguments:</b> Name + 1 Edge + 1 value setting the position of
|
||||
IsByParameter)</em>
|
||||
- \em Shape is a shape which contains an edge to be divided
|
||||
- \em EdgeID is the ID of the edge to be divided, if it is = -1,
|
||||
then \em Shape should be an edge itself
|
||||
- \em Value is a value of parameter on edge or length parameter,
|
||||
depending on \em IsByParameter.
|
||||
- \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]
|
||||
|
||||
<b>Arguments:</b> Name + 1 Edge + 1 Value setting the position of
|
||||
the point according to one of the selected modes.
|
||||
|
||||
The difference between "by parameter" and "by length" modes becomes
|
||||
apparent on the edges with irregular parametrization (for example,
|
||||
b-splines which usually have irregular density by the length).
|
||||
For example, value 0.5 "by length" on such edge will produce the point
|
||||
in the middle of this edge (equidistant from both its ends); the same
|
||||
0.5 value "by parameter" will result in the point situated closer to
|
||||
one of the ends (depending on the actual parametrization).
|
||||
|
||||
\image html repair8.png
|
||||
|
||||
\n <b>Example:</b>
|
||||
|
@ -26,8 +26,8 @@ of the LCS are calculated automatically basing on the selected object.
|
||||
coordinates of origin by a point and axes directions by a line or a
|
||||
vector.
|
||||
\n <b>TUI command:</b> <em>geompy.MakeMarkerPntTwoVec(Center, VectorX,
|
||||
VectorY)</em> where Center is a point specified the coordinate system location,
|
||||
VectorX is a derection of OX axis and VectorY direction of OY axis.
|
||||
VectorY)</em> where Center is the origin of the coordinate system,
|
||||
VectorX is the direction of OX axis and VectorY is the direction of OY axis.
|
||||
\n <b>Arguments:</b> Name + 1 point of origin + X axis direction, Y axis direction.
|
||||
|
||||
\image html neo-localcs3.png
|
||||
@ -40,6 +40,6 @@ and in 3D viewer.
|
||||
|
||||
\image html image145.png "Local Coordinate System"
|
||||
|
||||
<b>TUI Script</b> provide you with useful example of creation of
|
||||
\ref tui_creation_lcs "Local Coordinate System".
|
||||
<b>TUI Script</b> provides you with a useful example of
|
||||
\ref tui_creation_lcs "Local Coordinate System" creation.
|
||||
*/
|
@ -5,23 +5,23 @@
|
||||
To create a \b PipeTShape in the <b>Main Menu</b> select <b>New Entity - >
|
||||
Advanced - > PipeTShape </b>
|
||||
|
||||
Specify the parameters of the PipeTShape object creation in the opened dialog
|
||||
Specify the parameters of the PipeTShape object in the opened dialog
|
||||
box and press "Apply" or "Apply & Close" button.
|
||||
Result of each operation will be a GEOM_Object.
|
||||
The <b>result</b> of the operation will be a <b>GEOM_Object</b>.
|
||||
|
||||
<b>TUI Command:</b> <em>geompy.MakePipeTShape(R1, W1, L1, R2, W2, L2, HexMesh=True, P1=None, P2=None, P3=None)</em>
|
||||
|
||||
<b>Arguments:</b>
|
||||
- \b R1 - Radius of main T-shape pipe.
|
||||
- \b W1 - Thickness of main T-shape pipe.
|
||||
- \b L1 - Length of main T-shape pipe.
|
||||
- \b R2 - Radius of incident T-shape pipe.
|
||||
- \b W2 - Thickness of incident T-shape pipe.
|
||||
- \b L2 - Length of incident T-shape pipe.
|
||||
- \b HexMesh - If True, the shape is splitted in blocks (suitable for hexaedral mesh).
|
||||
- \b P1 - First junction point of main pipe (GEOM Vertex).
|
||||
- \b P2 - Second junction point of main pipe (GEOM Vertex).
|
||||
- \b P3 - Junction point of incident pipe (GEOM Vertex).
|
||||
- \b R1 - Radius of the main T-shape pipe.
|
||||
- \b W1 - Thickness of the main T-shape pipe.
|
||||
- \b L1 - Length of the main T-shape pipe.
|
||||
- \b R2 - Radius of the incident T-shape pipe.
|
||||
- \b W2 - Thickness of the incident T-shape pipe.
|
||||
- \b L2 - Length of the incident T-shape pipe.
|
||||
- \b HexMesh - If True, the shape is splitted into blocks (suitable for hexaedral mesh).
|
||||
- \b P1 - First junction point of the main pipe (GEOM Vertex).
|
||||
- \b P2 - Second junction point of the main pipe (GEOM Vertex).
|
||||
- \b P3 - Junction point of the incident pipe (GEOM Vertex).
|
||||
|
||||
\image html pipetshape_dlg.png
|
||||
|
||||
@ -33,8 +33,8 @@ A Pipe T-Shape can be created with a chamfer at the junction of the main and the
|
||||
|
||||
<b>TUI Command:</b> <em>geompy.MakePipeTShapeChamfer(R1, W1, L1, R2, W2, L2, H, W, HexMesh=True, P1=None, P2=None, P3=None)</em>
|
||||
|
||||
<b>Arguments are the same as normal Pipe T-Shape plus:</b>
|
||||
- \b H - Height of the chamfer along incident pipe.
|
||||
<b>The arguments are the same as of the normal Pipe T-Shape plus:</b>
|
||||
- \b H - Height of the chamfer along the incident pipe.
|
||||
- \b W - Width of the chamfer along the main pipe.
|
||||
|
||||
Example:
|
||||
@ -45,7 +45,7 @@ A Pipe T-Shape can be created with a fillet at the junction of the main and the
|
||||
|
||||
<b>TUI Command:</b> <em>geompy.MakePipeTShapeFillet(R1, W1, L1, R2, W2, L2, RF, HexMesh=True, P1=None, P2=None, P3=None)</em>
|
||||
|
||||
<b>Arguments are the same as normal Pipe T-Shape plus:</b>
|
||||
<b>The arguments are the same as of the normal Pipe T-Shape plus:</b>
|
||||
- \b RF - Radius of the fillet.
|
||||
|
||||
Example:
|
||||
|
@ -54,13 +54,14 @@ is predefined and is equal to 90 degrees);</li>
|
||||
|
||||
\b Buttons:
|
||||
|
||||
<b>"Sketch Validation"</b> button applies the wire, only red part will be built by "Sketch Validation".
|
||||
<b>"Restore"</b> button orientates the viewer correspondingly to the chosen working plane and fits the scene to show all its objects.
|
||||
\n <b>"Sketch Validation"</b> button applies the wire, only red part will be built by "Sketch Validation".
|
||||
\n <b>"Sketch Closure"</b> will close the Sketch by straight line from last red part and apply it.
|
||||
|
||||
\n <b>Dialog Box:</b>
|
||||
|
||||
\image html neo-scetcher1.png
|
||||
|
||||
<br>
|
||||
\image html neo-scetcher2.png
|
||||
|
||||
\n <b>Example:</b>
|
||||
|
@ -2,8 +2,8 @@
|
||||
|
||||
\page deflection_page Deflection
|
||||
|
||||
\n In this menu you can change the deviation coefficient of the
|
||||
shape. Smaller coefficient provides better quality of the shape in the
|
||||
\n In this menu you can change the deflection coefficient of the
|
||||
shape. The less is the coefficient the better is the quality of the shape in the
|
||||
viewer.
|
||||
|
||||
\n <b>Arguments: </b>1 floating point value (deviation coefficient).
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
The <b>Type</b> property of the geometrical object specifies the
|
||||
way the object has been created. It is an integer identifier that
|
||||
has predefined value depending on the function type used for the
|
||||
has a predefined value depending on the function type used for the
|
||||
object creation. The type of the object can be retrieved using the
|
||||
\b %GetType() function of the \b GEOM_Object interface.
|
||||
|
||||
@ -70,10 +70,9 @@ The possible values of the geometrical objects are listed in the table below:
|
||||
</table>
|
||||
|
||||
Also geompy.py module provides a helper function ShapeIdToType()
|
||||
that allows converting of the geometrical object type id value
|
||||
to its string representation.
|
||||
that allows converting the geometrical object id value to its string representation.
|
||||
|
||||
For example:
|
||||
For example, the output of the following code:
|
||||
\code
|
||||
import geompy
|
||||
box = geompy.MakeBoxDXDYDZ(10,10,10)
|
||||
@ -81,12 +80,12 @@ type = geompy.ShapeIdToType(box.GetType())
|
||||
print type
|
||||
\endcode
|
||||
|
||||
The above code prints "BOX" value.
|
||||
will be the "BOX" value.
|
||||
|
||||
<b>GetShapeType function:</b>
|
||||
|
||||
The ShapeType property specifies the geometrical object in terms of
|
||||
its topology nature.
|
||||
its topologic nature.
|
||||
|
||||
The possible values are defined in the GEOM namespace: { COMPOUND, COMPSOLID,
|
||||
SOLID, SHELL, FACE, WIRE, EDGE, VERTEX, SHAPE }<br>
|
||||
@ -94,7 +93,7 @@ SOLID, SHELL, FACE, WIRE, EDGE, VERTEX, SHAPE }<br>
|
||||
This type can be retrieved using the \b %GetShapeType() function
|
||||
of the \b GEOM_Object interface.
|
||||
|
||||
Example code:
|
||||
For example:
|
||||
\code
|
||||
import geompy
|
||||
import GEOM
|
||||
@ -103,6 +102,6 @@ type = box.GetShapeType()
|
||||
print type == GEOM.SOLID
|
||||
\endcode
|
||||
|
||||
This code prints "True".
|
||||
The result is "True".
|
||||
|
||||
*/
|
||||
|
@ -13,9 +13,11 @@ using a wide range of functions;</li>
|
||||
<li>\subpage transform_geom_obj_page "transformation of geometrical objects" using
|
||||
various algorithms;</li>
|
||||
<li>\subpage repairing_operations_page "optimization of geometrical objects";</li>
|
||||
<li>\subpage geometrical_obj_prop_page "Geometrical object properties".</li>
|
||||
<li>\subpage using_measurement_tools_page "provision of information about geometrical objects".</li>
|
||||
<li>\subpage using_notebook_geom_page.</li>
|
||||
<li>viewing \subpage geometrical_obj_prop_page "geometrical object properties".</li>
|
||||
<li>and other information about geometrical objects using
|
||||
\subpage using_measurement_tools_page "measurement tools".</li>
|
||||
<li>easily setting parameters via the variables predefined in
|
||||
\subpage using_notebook_geom_page "Salome notebook".</li>
|
||||
</ul>
|
||||
|
||||
Almost all geometry module functionalities are accessible via
|
||||
|
@ -4,45 +4,66 @@
|
||||
|
||||
\n To produce a \b Partition in the <b>Main Menu</b> select <b>Operations - > Partition</b>
|
||||
|
||||
\n This operation builds a compound by intersection of several shapes with a tool object or a plane.
|
||||
\n This operation builds a compound by intersection of several shapes
|
||||
with a set of tool objects or with a plane.
|
||||
\n The \b Result will be any \b GEOM_Object.
|
||||
|
||||
<br><h2>Intersection of two shapes.</h2>
|
||||
|
||||
\image html partition1.png
|
||||
|
||||
\n <b>Arguments:</b> Name + 2 lists of shapes (the shapes from the
|
||||
first list will be intersected with the shapes from the second list) +
|
||||
Resulting Type of shape.
|
||||
|
||||
\n As far as the intersection of two objects can produce any type of
|
||||
geometrical objects, <b>Resulting type</b> box allows choosing the
|
||||
preferrable result, i.e. a solid, a shell, a list of faces, etc.
|
||||
\n <b>TUI Command:</b> <em>geompy.MakePartition(ListOfShapes,
|
||||
ListOfTools, ListOfKeepInside, ListOfRemoveInside, Limit, RemoveWebs,
|
||||
ListOfMaterials),</em> where where \em ListOfShapes is a list of shapes to
|
||||
be intersected and \em ListOfTools is a list of shapes to intersect the
|
||||
shapes from ListOfShapes.
|
||||
\n Since the implementation of a new version of PartitionAlgo other
|
||||
parameters are ignored by the current functionality and remain there
|
||||
only to support the old scripts.
|
||||
\n <b>Arguments:</b> Name + 2 lists of shapes (the shapes from the
|
||||
first list will be intersected with the shapes from the second list) +
|
||||
reconstruction limit.
|
||||
\n<b>Resulting type</b> has to be equal or lower than the type of the
|
||||
\em Objects. In other words, if the \em Objects don't contain any
|
||||
shape of this type, Partition fails.
|
||||
|
||||
<b>Keep shapes of lower type</b> checkbox manages standalone shapes of
|
||||
type other than the \em Limit. If it is checked, lower dimension
|
||||
objects will be preserved, else they will be lost.
|
||||
\n For example, you do a partition of a box (Solid) and a face (Face)
|
||||
without any tool. If you choose Resulting Type "Solid", you will
|
||||
obtain a compound of two solids (let's the box will be splitted by the
|
||||
face on two parts), but if you will also check <b>Keep shapes of lower
|
||||
type</b> checkbox, you will obtain a compound of two solids and one
|
||||
face (the face will have a hole where the original face lays inside
|
||||
the box, see corresponding \ref partition_picture_3 "picture" below).
|
||||
|
||||
\n <b>Advanced option:</b>
|
||||
\ref restore_presentation_parameters_page "Set presentation parameters and subshapes from arguments".
|
||||
|
||||
\image html partition1.png
|
||||
\n <b>TUI Command:</b> <em>geompy.MakePartition(ListOfShapes,
|
||||
ListOfTools, ListOfKeepInside, ListOfRemoveInside, Limit, RemoveWebs,
|
||||
ListOfMaterials, KeepNonlimitShapes),</em> where where \em
|
||||
ListOfShapes is a list of shapes to be intersected, \em ListOfTools is
|
||||
a list of shapes to intersect the shapes from ListOfShapes, \em Limit
|
||||
is a Type of resulting shapes and \em KeepNonlimitShapes is a flag
|
||||
that allows to preserve standalone shapes of low dimension (than
|
||||
Limit) in the result.
|
||||
|
||||
<b>Keep shapes of lower type</b> checkbox allows building geometrical objects.
|
||||
Only lower type objects will be preserved without the upper ones.
|
||||
\n Since the implementation of a new version of PartitionAlgo other
|
||||
parameters are ignored by the current functionality and remain there
|
||||
only to support the old scripts.
|
||||
|
||||
|
||||
<br><h2>Intersection of a Shape and a Plane.</h2>
|
||||
|
||||
\n <b>TUI Command:</b> <em> geompy.MakeHalfPartition(Shapes,
|
||||
Plane),</em> where \em Shapes are a list of Shapes to be intersected
|
||||
and \em Plane is a Tool shape, to intersect the \em Shapes.
|
||||
\image html partition2.png
|
||||
|
||||
\n <b>Arguments:</b> Name + a list of shapes which will be intersected
|
||||
+ 1 cutting plane.
|
||||
|
||||
\n <b>Advanced option:</b>
|
||||
\ref restore_presentation_parameters_page "Set presentation parameters and subshapes from arguments".
|
||||
|
||||
\image html partition2.png
|
||||
\n <b>TUI Command:</b> <em> geompy.MakeHalfPartition(Shapes,
|
||||
Plane),</em> where \em Shapes are a list of Shapes to be intersected
|
||||
and \em Plane is a Tool shape, to intersect the \em Shapes.
|
||||
|
||||
\n <b>Example:</b>
|
||||
|
||||
@ -50,6 +71,9 @@ and \em Plane is a Tool shape, to intersect the \em Shapes.
|
||||
|
||||
\image html partitionsn2.png "Result of intersection"
|
||||
|
||||
\anchor partition_picture_3
|
||||
\image html partitionsn3.png "Result of intersection of a box and a plane (both as \em Objects, no tools) with Resulting type \em Solid and checked \em Keep \em shapes \em of \em lower \em type"
|
||||
|
||||
Our <b>TUI Scripts</b> provide you with useful examples of the use of
|
||||
\ref tui_partition "Basic Operations".
|
||||
|
||||
|
@ -1,8 +1,10 @@
|
||||
/*!
|
||||
|
||||
\page restore_presentation_parameters_page Restore presentation parameters and a tree of subshapes
|
||||
\page restore_presentation_parameters_page Advanced Transformation Options
|
||||
|
||||
\n This functionality allows the operation result to inherit colour
|
||||
<br><center><b>Set presentation parameters and subshapes from arguments</b></center>
|
||||
|
||||
\n This option allows the operation result to inherit colour
|
||||
and subshapes from its arguments.
|
||||
|
||||
\n To activate this functionality, check in "Set
|
||||
@ -38,7 +40,7 @@ operation arguments and their published subshapes. The resulting shape
|
||||
has a default colour, but its subshapes inherit colors corresponding
|
||||
to arguments and their subshapes.
|
||||
|
||||
\image html restore-ss-viewer-after.png "Thev resulting shape"
|
||||
\image html restore-ss-viewer-after.png "The resulting shape"
|
||||
|
||||
|
||||
Please, note that when the resulting shape corresponds to one
|
||||
@ -51,12 +53,13 @@ inherited subshapes depend on the arguments.
|
||||
|
||||
\image html restore-ss-OB.png
|
||||
|
||||
<br><center><b>Add prefix to names of restored subshapes</b></center>
|
||||
Add prefix "from_" to names of restored sub-shapes, and prefix "from_subshapes_of_" to names of partially restored subshapes.
|
||||
By default this option is On.
|
||||
|
||||
|
||||
\n You can also call this functionality from your python scripts.
|
||||
See our <b>TUI Scripts</b> for \ref tui_restore_prs_params "example".
|
||||
|
||||
<br><center><b>Add prefix to names of restored subshapes</b></center>
|
||||
This option allows adding the prefix "from_" to the names of
|
||||
restored sub-shapes, and the prefix "from_subshapes_of_" to the names of partially restored subshapes.
|
||||
By default this option is On.
|
||||
|
||||
|
||||
*/
|
||||
|
@ -28,7 +28,7 @@ transparency of geometrical objects.</li>
|
||||
<li>\subpage isolines_page "Isos" - allows to change the number of
|
||||
isolines displayed within a shape.</li>
|
||||
<li>\subpage deflection_page "Deflection" - allows to change the
|
||||
deviation coefficient of a shape.</li>
|
||||
deflection coefficient of a shape.</li>
|
||||
<li>\subpage point_marker_page "Point Marker" - allows to change the
|
||||
representation of geometrical vertices.</li>
|
||||
<li><b>Auto color</b> / <b>Disable auto color</b> - activates the auto color
|
||||
|
@ -2180,10 +2180,10 @@ module GEOM
|
||||
* \note Each compound from ListShapes and ListTools will be exploded in order
|
||||
* to avoid possible intersection between shapes from this compound.
|
||||
* \param theLimit Type of resulting shapes (corresponding to TopAbs_ShapeEnum).
|
||||
# \param KeepNonlimitShapes: if this parameter == 0 - only shapes with
|
||||
# type <= Limit are kept in the result,
|
||||
# else - shapes with type > Limit are kept
|
||||
# also (if they exist)
|
||||
* \param KeepNonlimitShapes: if this parameter == 0, then only shapes of
|
||||
* target type (equal to Limit) are kept in the result,
|
||||
* else standalone shapes of lower dimension
|
||||
* are kept also (if they exist).
|
||||
*
|
||||
* After implementation new version of PartitionAlgo (October 2006)
|
||||
* other parameters are ignored by current functionality. They are kept
|
||||
|
@ -379,7 +379,7 @@ void AdvancedGUI_PipeTShapeDlg::SetPosition(bool isChecked) {
|
||||
//=================================================================================
|
||||
void AdvancedGUI_PipeTShapeDlg::ValueChangedInSpinBox(double newValue)
|
||||
{
|
||||
if (myOkPoint1 && myOkPoint2 && myOkPoint3)
|
||||
if (JunctionPointsSel->GroupBox1->isChecked() && myOkPoint1 && myOkPoint2 && myOkPoint3)
|
||||
CheckCompatiblePosition(myPoint1, myPoint2, myPoint3, 0.01);
|
||||
DisplayPreview();
|
||||
}
|
||||
|
@ -271,6 +271,7 @@ void BasicGUI_CircleDlg::ConstructorsClicked( int constructorId )
|
||||
qApp->processEvents();
|
||||
updateGeometry();
|
||||
resize( minimumSizeHint() );
|
||||
SelectionIntoArgument();
|
||||
|
||||
myEditCurrentArgument->setFocus();
|
||||
globalSelection(); // close local contexts, if any
|
||||
|
@ -158,6 +158,10 @@ void BasicGUI_CurveDlg::ConstructorsClicked( int id )
|
||||
myPoints->length( 0 );
|
||||
|
||||
myEditCurrentArgument->setText( "" );
|
||||
qApp->processEvents();
|
||||
updateGeometry();
|
||||
resize( minimumSizeHint() );
|
||||
SelectionIntoArgument();
|
||||
}
|
||||
|
||||
|
||||
|
@ -158,7 +158,8 @@ void BasicGUI_EllipseDlg::Init()
|
||||
|
||||
initName( tr( "GEOM_ELLIPSE" ) );
|
||||
|
||||
resize(100,100);
|
||||
resize( minimumSizeHint() );
|
||||
SelectionIntoArgument();
|
||||
displayPreview();
|
||||
}
|
||||
|
||||
|
@ -228,7 +228,6 @@ void BasicGUI_LineDlg::ConstructorsClicked( int constructorId )
|
||||
qApp->processEvents();
|
||||
updateGeometry();
|
||||
resize( minimumSizeHint() );
|
||||
|
||||
SelectionIntoArgument();
|
||||
}
|
||||
|
||||
|
@ -364,6 +364,7 @@ void BasicGUI_PlaneDlg::ConstructorsClicked( int constructorId )
|
||||
qApp->processEvents();
|
||||
updateGeometry();
|
||||
resize( minimumSizeHint() );
|
||||
SelectionIntoArgument();
|
||||
|
||||
myEditCurrentArgument->setFocus();
|
||||
connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ),
|
||||
|
@ -231,6 +231,7 @@ void BasicGUI_VectorDlg::ConstructorsClicked( int constructorId )
|
||||
qApp->processEvents();
|
||||
updateGeometry();
|
||||
resize( minimumSizeHint() );
|
||||
SelectionIntoArgument();
|
||||
|
||||
displayPreview();
|
||||
}
|
||||
|
@ -116,6 +116,7 @@ void BuildGUI_FaceDlg::Init()
|
||||
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
|
||||
|
||||
initName( tr( "GEOM_FACE" ) );
|
||||
SelectionIntoArgument();
|
||||
}
|
||||
|
||||
|
||||
|
@ -112,7 +112,6 @@ void BuildGUI_ShellDlg::Init()
|
||||
aSubShapes.append( GEOM_FACE );
|
||||
globalSelection( aMap, aSubShapes );
|
||||
|
||||
|
||||
/* signals and slots connections */
|
||||
connect( buttonOk(), SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) );
|
||||
connect( buttonApply(), SIGNAL( clicked() ), this, SLOT( ClickOnApply() ) );
|
||||
@ -123,6 +122,7 @@ void BuildGUI_ShellDlg::Init()
|
||||
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
|
||||
|
||||
initName( tr( "GEOM_SHELL" ) );
|
||||
SelectionIntoArgument();
|
||||
}
|
||||
|
||||
|
||||
|
@ -123,6 +123,7 @@ void BuildGUI_WireDlg::Init()
|
||||
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
|
||||
|
||||
initName( tr( "GEOM_WIRE" ) );
|
||||
SelectionIntoArgument();
|
||||
}
|
||||
|
||||
|
||||
|
@ -57,6 +57,8 @@
|
||||
|
||||
#include <gp_Pln.hxx>
|
||||
|
||||
#include <Basics_Utils.hxx>
|
||||
|
||||
//=================================================================================
|
||||
// class : EntityGUI_SketcherDlg()
|
||||
// purpose : Constructs a EntityGUI_SketcherDlg which is a child of 'parent', with the
|
||||
@ -105,12 +107,17 @@ EntityGUI_SketcherDlg::EntityGUI_SketcherDlg( GeometryGUI* GUI, QWidget* parent,
|
||||
/***************************************************************/
|
||||
|
||||
GroupBox1 = new QGroupBox(tr("GEOM_CS"), this);
|
||||
QGridLayout* OwnLayout = new QGridLayout(GroupBox1);
|
||||
OwnLayout->setSpacing(6);
|
||||
OwnLayout->setMargin(11);
|
||||
QHBoxLayout* planeLayout = new QHBoxLayout(GroupBox1);
|
||||
planeLayout->setSpacing(6);
|
||||
planeLayout->setMargin(11);
|
||||
|
||||
ComboBox1 = new QComboBox(GroupBox1);
|
||||
OwnLayout->addWidget(ComboBox1);
|
||||
ComboBox1->setSizePolicy( QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed) );
|
||||
planeLayout->addWidget(ComboBox1);
|
||||
|
||||
planeButton = new QPushButton (GroupBox1);
|
||||
planeButton->setText( tr( "GEOM_SKETCHER_RESTORE" ) );
|
||||
planeLayout->addWidget(planeButton);
|
||||
|
||||
topLayout->addWidget(GroupBox1);
|
||||
topLayout->addWidget( MainWidget );
|
||||
@ -233,6 +240,7 @@ EntityGUI_SketcherDlg::EntityGUI_SketcherDlg( GeometryGUI* GUI, QWidget* parent,
|
||||
connect( Group4Spin->SpinBox_DS, SIGNAL( valueChanged( double ) ), this, SLOT( ValueChangedInSpinBox( double ) ) );
|
||||
|
||||
connect( ComboBox1, SIGNAL( activated( int ) ), this, SLOT( SelectionIntoArgument() ) );
|
||||
connect( planeButton, SIGNAL( clicked() ), this, SLOT( ActivateLocalCS() ) );
|
||||
|
||||
connect( myGeometryGUI, SIGNAL( SignalDefaultStepValueChanged( double ) ), this, SLOT( SetDoubleSpinBoxStep( double ) ) );
|
||||
|
||||
@ -352,7 +360,7 @@ void EntityGUI_SketcherDlg::Init()
|
||||
FindLocalCS();
|
||||
resize(100,100);
|
||||
|
||||
|
||||
ActivateLocalCS();
|
||||
GEOMBase_Helper::displayPreview( false, true, true, myLineWidth );
|
||||
}
|
||||
|
||||
@ -896,6 +904,12 @@ void EntityGUI_SketcherDlg::SelectionIntoArgument()
|
||||
double tmpY = myY;
|
||||
myX = myLastX1;
|
||||
myY = myLastY1;
|
||||
// printf ("\nmyX = %f myY = %f", myX, myY);
|
||||
// printf ("\nmyLastX1 = %f myLastY1 = %f", myLastX1, myLastY1);
|
||||
// printf ("\nmyLastX2 = %f myLastY2 = %f", myLastX2, myLastY2);
|
||||
|
||||
if ( sender() == ComboBox1 )
|
||||
ActivateLocalCS();
|
||||
|
||||
LightApp_SelectionMgr* aSelMgr = myGeometryGUI->getApp()->selectionMgr();
|
||||
SALOME_ListIO aSelList;
|
||||
@ -1406,6 +1420,9 @@ bool EntityGUI_SketcherDlg::execute( ObjectList& objects )
|
||||
//Test if the current point is the same as the last one
|
||||
TopoDS_Shape myShape1, myShape2;
|
||||
|
||||
// Set "C" numeric locale
|
||||
Kernel_Utils::Localizer loc;
|
||||
|
||||
//Last Shape
|
||||
QString Command1 = myCommand.join( "" );
|
||||
Sketcher_Profile aProfile1( Command1.toAscii() );
|
||||
@ -1648,15 +1665,15 @@ void EntityGUI_SketcherDlg::initSpinBox( SalomeApp_DoubleSpinBox* spinBox,
|
||||
int aPrecision = resMgr->integerValue( "Geometry", quantity, 6 );
|
||||
|
||||
spinBox->setPrecision( aPrecision );
|
||||
spinBox->setDecimals( aPrecision ); // it's necessary to set decimals before the range setting,
|
||||
// by default Qt rounds boundaries to 2 decimals at setRange
|
||||
spinBox->setDecimals( qAbs( aPrecision ) ); // it's necessary to set decimals before the range setting,
|
||||
// by default Qt rounds boundaries to 2 decimals at setRange
|
||||
spinBox->setRange( min, max );
|
||||
spinBox->setSingleStep( step );
|
||||
|
||||
// Add a hint for the user saying how to tune precision
|
||||
QString userPropName = QObject::tr( QString( "PREF_%1" ).arg( quantity ).toLatin1().constData() );
|
||||
QString userPropName = QObject::tr( QString( "GEOM_PREF_%1" ).arg( quantity ).toLatin1().constData() );
|
||||
spinBox->setProperty( "validity_tune_hint",
|
||||
QVariant( QObject::tr( "PRECISION_HINT" ).arg( userPropName ) ) );
|
||||
QVariant( QObject::tr( "GEOM_PRECISION_HINT" ).arg( userPropName ) ) );
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
@ -1747,7 +1764,7 @@ void EntityGUI_SketcherDlg::FindLocalCS()
|
||||
|
||||
//=================================================================================
|
||||
// function : GetActiveLocalCS()
|
||||
// purpose : Find All Coordinates systems in study
|
||||
// purpose : Get Working plane
|
||||
//=================================================================================
|
||||
gp_Ax3 EntityGUI_SketcherDlg::GetActiveLocalCS()
|
||||
{
|
||||
@ -1757,7 +1774,15 @@ gp_Ax3 EntityGUI_SketcherDlg::GetActiveLocalCS()
|
||||
|
||||
gp_Ax3 aLCS = myLCSList.at(ind);
|
||||
|
||||
myGeometryGUI->SetWorkingPlane( aLCS );
|
||||
myGeometryGUI->ActiveWorkingPlane();
|
||||
return aLCS;
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
// function : ActivateLocalCS()
|
||||
// purpose : Activate & Fit Working plane
|
||||
//=================================================================================
|
||||
void EntityGUI_SketcherDlg::ActivateLocalCS()
|
||||
{
|
||||
myGeometryGUI->SetWorkingPlane( GetActiveLocalCS() );
|
||||
myGeometryGUI->ActiveWorkingPlane();
|
||||
}
|
||||
|
@ -145,6 +145,7 @@ private:
|
||||
|
||||
QGroupBox* GroupBox1;
|
||||
QComboBox* ComboBox1;
|
||||
QPushButton* planeButton;
|
||||
|
||||
GeometryGUI* myGeometryGUI;
|
||||
|
||||
@ -184,6 +185,7 @@ private slots:
|
||||
void SetDoubleSpinBoxStep( double );
|
||||
void FindLocalCS();
|
||||
gp_Ax3 GetActiveLocalCS();
|
||||
void ActivateLocalCS();
|
||||
};
|
||||
|
||||
#endif // ENTITYGUI_SKETCHERDLG_H
|
||||
|
@ -35,6 +35,8 @@
|
||||
|
||||
#include "utilities.h"
|
||||
|
||||
#include <Basics_Utils.hxx>
|
||||
|
||||
#include <TDF_Tool.hxx>
|
||||
#include <TDF_Data.hxx>
|
||||
#include <TDF_Reference.hxx>
|
||||
@ -528,6 +530,9 @@ TCollection_AsciiString GEOM_Engine::DumpPython(int theDocID,
|
||||
bool isPublished,
|
||||
bool& aValidScript)
|
||||
{
|
||||
// Set "C" numeric locale to save numbers correctly
|
||||
Kernel_Utils::Localizer loc;
|
||||
|
||||
TCollection_AsciiString aScript;
|
||||
Handle(TDocStd_Document) aDoc = GetDocument(theDocID);
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||
// Copyright (C) 2007-2008 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
|
||||
@ -19,7 +19,6 @@
|
||||
//
|
||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||
//
|
||||
|
||||
// File: GEOMAlgo_Builder.cxx
|
||||
// Created:
|
||||
// Author: Peter KURNEV
|
||||
@ -42,6 +41,7 @@
|
||||
|
||||
#include <BRepLib.hxx>
|
||||
#include <NMTTools_PaveFiller.hxx>
|
||||
#include <GEOMAlgo_Tools.hxx>
|
||||
|
||||
//=======================================================================
|
||||
//function :
|
||||
@ -158,28 +158,7 @@
|
||||
AddShape1(aS);
|
||||
}
|
||||
}
|
||||
//=======================================================================
|
||||
//function : PostTreat
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
void GEOMAlgo_Builder::PostTreat()
|
||||
{
|
||||
Standard_Integer aNbS;
|
||||
TopoDS_Iterator aIt;
|
||||
TopTools_ListOfShape aLS;
|
||||
//
|
||||
aIt.Initialize(myShape);
|
||||
for (; aIt.More(); aIt.Next()) {
|
||||
const TopoDS_Shape& aS=aIt.Value();
|
||||
aLS.Append(aS);
|
||||
}
|
||||
aNbS=aLS.Extent();
|
||||
if (aNbS==1) {
|
||||
myShape=aLS.First();
|
||||
}
|
||||
|
||||
BRepLib::SameParameter(myShape, 1.e-7, Standard_True);
|
||||
}
|
||||
//=======================================================================
|
||||
//function : AddShape1
|
||||
//purpose :
|
||||
@ -399,6 +378,34 @@
|
||||
PostTreat();
|
||||
}
|
||||
//
|
||||
static
|
||||
void CorrectWires(const TopoDS_Shape& aS);
|
||||
//
|
||||
//=======================================================================
|
||||
//function : PostTreat
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
void GEOMAlgo_Builder::PostTreat()
|
||||
{
|
||||
Standard_Integer aNbS;
|
||||
TopoDS_Iterator aIt;
|
||||
TopTools_ListOfShape aLS;
|
||||
//
|
||||
aIt.Initialize(myShape);
|
||||
for (; aIt.More(); aIt.Next()) {
|
||||
const TopoDS_Shape& aS=aIt.Value();
|
||||
aLS.Append(aS);
|
||||
}
|
||||
aNbS=aLS.Extent();
|
||||
if (aNbS==1) {
|
||||
myShape=aLS.First();
|
||||
}
|
||||
|
||||
BRepLib::SameParameter(myShape, 1.e-7, Standard_True);
|
||||
//
|
||||
GEOMAlgo_Tools::CorrectWires(myShape);
|
||||
}
|
||||
//
|
||||
// myErrorStatus
|
||||
//
|
||||
// 0 - Ok
|
||||
@ -406,3 +413,4 @@
|
||||
// 2 - PaveFiller is failed
|
||||
// 10 - No shapes to process
|
||||
// 30 - SolidBuilder failed
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
-- Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||
-- Copyright (C) 2007-2008 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
|
||||
@ -19,7 +19,6 @@
|
||||
--
|
||||
-- See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||
--
|
||||
|
||||
-- File: GEOMAlgo_Tools.cdl
|
||||
-- Created: Mon Dec 6 11:26:02 2004
|
||||
-- Author: Peter KURNEV
|
||||
@ -108,6 +107,9 @@ is
|
||||
aS:Surface from Geom)
|
||||
returns Boolean from Standard;
|
||||
|
||||
CorrectWires(myclass;
|
||||
aS :Shape from TopoDS)
|
||||
returns Boolean from Standard;
|
||||
--fields
|
||||
|
||||
end Tools;
|
||||
|
@ -1,24 +1,23 @@
|
||||
// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||
// File generated by CPPExt (Value)
|
||||
//
|
||||
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||
// Copyright (C) 1991 - 2000 by
|
||||
// Matra Datavision SA. All rights reserved.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License.
|
||||
// Copyright (C) 2001 - 2004 by
|
||||
// Open CASCADE SA. All rights reserved.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
// This file is part of the Open CASCADE Technology software.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
//
|
||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||
// This software may be distributed and/or modified under the terms and
|
||||
// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
|
||||
// and appearing in the file LICENSE included in the packaging of this file.
|
||||
//
|
||||
// This software is distributed on an "AS IS" basis, without warranty of any
|
||||
// kind, and Open CASCADE SA hereby disclaims all such warranties,
|
||||
// including without limitation, any warranties of merchantability, fitness
|
||||
// for a particular purpose or non-infringement. Please see the License for
|
||||
// the specific terms and conditions governing rights and limitations under the
|
||||
// License.
|
||||
|
||||
#ifndef _GEOMAlgo_Tools_HeaderFile
|
||||
#define _GEOMAlgo_Tools_HeaderFile
|
||||
@ -110,6 +109,9 @@ Standard_EXPORT static void RefinePCurveForEdgeOnFace(const TopoDS_Edge& aE,con
|
||||
Standard_EXPORT static Standard_Boolean IsUPeriodic(const Handle(Geom_Surface)& aS) ;
|
||||
|
||||
|
||||
Standard_EXPORT static Standard_Boolean CorrectWires(const TopoDS_Shape& aS) ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
323
src/GEOMAlgo/GEOMAlgo_Tools_1.cxx
Normal file
@ -0,0 +1,323 @@
|
||||
// File: GEOMAlgo_Tools_1.cxx
|
||||
// Created: Thu May 6 10:46:21 2010
|
||||
// Author: Peter KURNEV
|
||||
// <pkv@irinox>
|
||||
|
||||
|
||||
#include <GEOMAlgo_Tools.ixx>
|
||||
//
|
||||
#include <NCollection_DataMap.hxx>
|
||||
|
||||
#include <gp_Pnt2d.hxx>
|
||||
#include <gp_Pnt.hxx>
|
||||
|
||||
#include <Geom2dAdaptor_Curve.hxx>
|
||||
#include <Geom2dInt_GInter.hxx>
|
||||
#include <Geom2d_Curve.hxx>
|
||||
#include <Geom_Curve.hxx>
|
||||
#include <Geom_Surface.hxx>
|
||||
#include <GeomAdaptor_Surface.hxx>
|
||||
|
||||
#include <IntRes2d_Domain.hxx>
|
||||
#include <IntRes2d_IntersectionPoint.hxx>
|
||||
#include <IntRes2d_Transition.hxx>
|
||||
|
||||
#include <TopoDS_Iterator.hxx>
|
||||
#include <TopoDS_Face.hxx>
|
||||
#include <TopoDS_Wire.hxx>
|
||||
#include <TopoDS_Edge.hxx>
|
||||
#include <TopoDS_Vertex.hxx>
|
||||
#include <TopExp_Explorer.hxx>
|
||||
|
||||
#include <BRep_Tool.hxx>
|
||||
#include <BRep_Builder.hxx>
|
||||
|
||||
#include <TopTools_MapOfShape.hxx>
|
||||
#include <TopTools_ShapeMapHasher.hxx>
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#include <TopTools_DataMapOfShapeListOfShape.hxx>
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#include <TopTools_DataMapIteratorOfDataMapOfShapeListOfShape.hxx>
|
||||
|
||||
static
|
||||
inline Standard_Boolean IsEqual(const TopoDS_Shape& aS1,
|
||||
const TopoDS_Shape& aS2) {
|
||||
return TopTools_ShapeMapHasher::IsEqual(aS1, aS2);
|
||||
}
|
||||
//
|
||||
static
|
||||
Standard_Boolean CorrectWire(const TopoDS_Wire& aW,
|
||||
const TopoDS_Face& aF);
|
||||
|
||||
//=======================================================================
|
||||
//function : CorrectWires
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Standard_Boolean GEOMAlgo_Tools::CorrectWires(const TopoDS_Shape& aShape)
|
||||
{
|
||||
Standard_Boolean bRet;
|
||||
TopoDS_Iterator aItF;
|
||||
TopExp_Explorer aExp;
|
||||
TopTools_MapOfShape aMF;
|
||||
GeomAdaptor_Surface aGAS;
|
||||
GeomAbs_SurfaceType aTS;
|
||||
TopLoc_Location aLoc;
|
||||
//
|
||||
bRet=Standard_False;
|
||||
//
|
||||
aExp.Init(aShape, TopAbs_FACE);
|
||||
for (; aExp.More(); aExp.Next()) {
|
||||
const TopoDS_Face& aF=*((TopoDS_Face*)&aExp.Current());
|
||||
if (aMF.Add(aF)) {
|
||||
const Handle(Geom_Surface)& aS=BRep_Tool::Surface(aF, aLoc);
|
||||
aGAS.Load(aS);
|
||||
aTS=aGAS.GetType();
|
||||
if (aTS==GeomAbs_Cylinder) {
|
||||
aItF.Initialize(aF);
|
||||
for (; aItF.More(); aItF.Next()) {
|
||||
const TopoDS_Wire& aW=*((TopoDS_Wire*)&aItF.Value());
|
||||
if (CorrectWire(aW, aF)) {
|
||||
bRet=Standard_True;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return bRet;
|
||||
}
|
||||
//=======================================================================
|
||||
//class: GEOMAlgo_InfoEdge
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
class GEOMAlgo_InfoEdge {
|
||||
public:
|
||||
//
|
||||
GEOMAlgo_InfoEdge() {
|
||||
myErrorStatus=0;
|
||||
myTolInt=1.0e-10;
|
||||
};
|
||||
//
|
||||
~GEOMAlgo_InfoEdge(){
|
||||
};
|
||||
//
|
||||
void Init(const TopoDS_Edge& aE,
|
||||
const TopoDS_Face& aF);
|
||||
//
|
||||
void SetTolInt(const Standard_Real aTolInt) {
|
||||
myTolInt=aTolInt;
|
||||
};
|
||||
//
|
||||
const Standard_Real TolInt() const {
|
||||
return myTolInt;
|
||||
}
|
||||
//
|
||||
const Geom2dAdaptor_Curve& Adaptor() const {
|
||||
return myGAC2D;
|
||||
}
|
||||
//
|
||||
const IntRes2d_Domain& Domain()const {
|
||||
return myDomain;
|
||||
}
|
||||
//
|
||||
const Handle(Geom2d_Curve)& CurveOnSurface()const {
|
||||
return myC2D;
|
||||
}
|
||||
//
|
||||
const Handle(Geom_Curve)& Curve()const {
|
||||
return myC3D;
|
||||
}
|
||||
//
|
||||
Standard_Integer ErrorStatus()const {
|
||||
return myErrorStatus;
|
||||
}
|
||||
//
|
||||
protected:
|
||||
Standard_Integer myErrorStatus;
|
||||
Standard_Real myTolInt;
|
||||
Geom2dAdaptor_Curve myGAC2D;
|
||||
IntRes2d_Domain myDomain;
|
||||
Handle(Geom2d_Curve) myC2D;
|
||||
Handle(Geom_Curve) myC3D;
|
||||
};
|
||||
//
|
||||
typedef NCollection_DataMap<TopoDS_Shape, GEOMAlgo_InfoEdge> GEOMAlgo_DataMapOfShapeInfoEdge;
|
||||
typedef GEOMAlgo_DataMapOfShapeInfoEdge::Iterator GEOMAlgo_DataMapIteratorOfDataMapOfShapeInfoEdge;
|
||||
|
||||
//=======================================================================
|
||||
//function : Init
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
void GEOMAlgo_InfoEdge::Init(const TopoDS_Edge& aE,
|
||||
const TopoDS_Face& aF)
|
||||
{
|
||||
Standard_Real aT1, aT2, aT1x, aT2x;
|
||||
gp_Pnt2d aP2D1, aP2D2;
|
||||
//
|
||||
myErrorStatus=0;
|
||||
//
|
||||
myC3D=BRep_Tool::Curve(aE, aT1, aT2);
|
||||
myC2D=BRep_Tool::CurveOnSurface(aE ,aF, aT1, aT2);
|
||||
if (!myC2D.IsNull() && aT2>aT1) {
|
||||
myGAC2D.Load(myC2D);
|
||||
if(!myGAC2D.IsPeriodic()) {
|
||||
aT1x=myGAC2D.FirstParameter();
|
||||
aT2x=myGAC2D.LastParameter();
|
||||
if(aT1x > aT1) {
|
||||
aT1=aT1x;
|
||||
}
|
||||
if(aT2x < aT2) {
|
||||
aT2=aT2x;
|
||||
}
|
||||
}
|
||||
//
|
||||
BRep_Tool::UVPoints(aE, aF, aP2D1, aP2D2);
|
||||
myDomain.SetValues(aP2D1, aT1, myTolInt, aP2D2, aT2, myTolInt);
|
||||
}
|
||||
else {
|
||||
myErrorStatus=10;
|
||||
return;
|
||||
}
|
||||
}
|
||||
//=======================================================================
|
||||
//function : CorrectWire
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Standard_Boolean CorrectWire(const TopoDS_Wire& aW,
|
||||
const TopoDS_Face& aF)
|
||||
{
|
||||
Standard_Boolean bRet;
|
||||
Standard_Real aTolInt;
|
||||
Standard_Integer iErr, aNbV, aNbE;
|
||||
TopoDS_Iterator aItW, aItE;
|
||||
Geom2dInt_GInter aInter;
|
||||
GEOMAlgo_DataMapOfShapeInfoEdge aDMEIE;
|
||||
TopTools_DataMapOfShapeListOfShape aDMVLE;
|
||||
TopTools_DataMapIteratorOfDataMapOfShapeListOfShape aItDMVLE;
|
||||
//
|
||||
bRet=Standard_False;
|
||||
aTolInt=1.0e-10;
|
||||
//
|
||||
aItW.Initialize(aW);
|
||||
for (; aItW.More(); aItW.Next()) {
|
||||
const TopoDS_Edge& aE=*((TopoDS_Edge*)&aItW.Value());
|
||||
|
||||
aItE.Initialize(aE);
|
||||
for (aNbV=0; aItE.More(); aItE.Next(), ++aNbV) {
|
||||
}
|
||||
if (aNbV<2) {
|
||||
return bRet; //
|
||||
}
|
||||
//
|
||||
if (!aDMEIE.IsBound(aE)) {
|
||||
GEOMAlgo_InfoEdge aInfoEdge;
|
||||
//
|
||||
aInfoEdge.Init (aE, aF);
|
||||
iErr=aInfoEdge.ErrorStatus();
|
||||
if (iErr) {
|
||||
return bRet; //
|
||||
}
|
||||
//
|
||||
aDMEIE.Bind(aE, aInfoEdge);
|
||||
}
|
||||
//
|
||||
aItE.Initialize(aE);
|
||||
for (; aItE.More(); aItE.Next()) {
|
||||
const TopoDS_Shape& aV=aItE.Value();
|
||||
if (aDMVLE.IsBound(aV)) {
|
||||
TopTools_ListOfShape& aLE=aDMVLE.ChangeFind(aV);
|
||||
aLE.Append(aE);
|
||||
}
|
||||
else {
|
||||
TopTools_ListOfShape aLE;
|
||||
aLE.Append(aE);
|
||||
aDMVLE.Bind(aV, aLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
//
|
||||
// 2
|
||||
Standard_Real aTolV, aD1, aD2, aDmax, aCoeff;
|
||||
gp_Pnt aPV;
|
||||
Handle(Geom_Surface) aS;
|
||||
BRep_Builder aBB;
|
||||
//
|
||||
aCoeff=1.1;
|
||||
aS=BRep_Tool::Surface(aF);
|
||||
//
|
||||
aItDMVLE.Initialize(aDMVLE);
|
||||
for(; aItDMVLE.More(); aItDMVLE.Next()) {
|
||||
const TopoDS_Vertex& aV=*((TopoDS_Vertex*)&aItDMVLE.Key());
|
||||
const TopTools_ListOfShape& aLE=aItDMVLE.Value();
|
||||
aNbE=aLE.Extent();
|
||||
if (aNbE!=2) {
|
||||
continue;
|
||||
}
|
||||
//
|
||||
aPV=BRep_Tool::Pnt(aV);
|
||||
aTolV=BRep_Tool::Tolerance(aV);
|
||||
//
|
||||
const TopoDS_Edge& aE1=*((TopoDS_Edge*)&aLE.First());
|
||||
const GEOMAlgo_InfoEdge& aIE1=aDMEIE.Find(aE1);
|
||||
const Geom2dAdaptor_Curve& aGAC1=aIE1.Adaptor();
|
||||
const IntRes2d_Domain& aDomain1=aIE1.Domain();
|
||||
//
|
||||
const TopoDS_Edge& aE2=*((TopoDS_Edge*)&aLE.Last());
|
||||
const GEOMAlgo_InfoEdge& aIE2=aDMEIE.Find(aE2);
|
||||
const Geom2dAdaptor_Curve& aGAC2=aIE2.Adaptor();
|
||||
const IntRes2d_Domain& aDomain2=aIE2.Domain();
|
||||
//
|
||||
aInter.Perform(aGAC1, aDomain1,aGAC2, aDomain2, aTolInt, aTolInt);
|
||||
if(!aInter.IsDone()) {
|
||||
continue;
|
||||
}
|
||||
//
|
||||
Standard_Integer i, aNbP;
|
||||
Standard_Real aIP_ParamOnFirst, aIP_ParamOnSecond;
|
||||
gp_Pnt aP3D1, aP3D2;
|
||||
gp_Pnt2d aP2D1, aP2D2;
|
||||
IntRes2d_Transition aTr1, aTr2;
|
||||
//
|
||||
aNbP=aInter.NbPoints();
|
||||
for (i=1; i<=aNbP; ++i) {
|
||||
const IntRes2d_IntersectionPoint& aIP = aInter.Point(i);
|
||||
aIP_ParamOnFirst = aIP.ParamOnFirst();
|
||||
aIP_ParamOnSecond = aIP.ParamOnSecond();
|
||||
aTr1 =aIP.TransitionOfFirst();
|
||||
aTr2 =aIP.TransitionOfSecond();
|
||||
if(aTr1.PositionOnCurve()==IntRes2d_Middle ||
|
||||
aTr2.PositionOnCurve()==IntRes2d_Middle) {
|
||||
//
|
||||
const Handle(Geom_Curve)& aC3D1=aIE1.Curve();
|
||||
if (!aC3D1.IsNull()) {
|
||||
aP3D1=aC3D1->Value(aIP_ParamOnFirst);
|
||||
}
|
||||
else {
|
||||
aP2D1=aGAC1.Value(aIP_ParamOnFirst);
|
||||
aS->D0(aP2D1.X(), aP2D1.Y(), aP3D1);
|
||||
}
|
||||
//
|
||||
const Handle(Geom_Curve)& aC3D2=aIE2.Curve();
|
||||
if (!aC3D2.IsNull()) {
|
||||
aP3D2=aC3D2->Value(aIP_ParamOnSecond);
|
||||
}
|
||||
else {
|
||||
aP2D2=aGAC2.Value(aIP_ParamOnSecond);
|
||||
aS->D0(aP2D2.X(), aP2D2.Y(), aP3D2);
|
||||
}
|
||||
//
|
||||
aD1=aPV.Distance(aP3D1);
|
||||
aD2=aPV.Distance(aP3D2);
|
||||
aDmax=(aD1>aD2)? aD1 : aD2;
|
||||
if (aDmax>aCoeff*aTolV) {
|
||||
if (aDmax<10.*aTolV){
|
||||
aBB.UpdateVertex(aV, aDmax);
|
||||
bRet=Standard_True;
|
||||
}
|
||||
}
|
||||
}//
|
||||
}//for (i=1; i<=aNbP; ++i) {
|
||||
}//for(; aItDMVLE.More(); aItDMVLE.Next()) {
|
||||
return bRet;
|
||||
}
|
||||
|
||||
|
@ -103,6 +103,7 @@ dist_libGEOMAlgo_la_SOURCES = \
|
||||
GEOMAlgo_SurfaceTools.cxx \
|
||||
GEOMAlgo_Tools3D.cxx \
|
||||
GEOMAlgo_Tools.cxx \
|
||||
GEOMAlgo_Tools_1.cxx \
|
||||
GEOMAlgo_VertexSolid.cxx \
|
||||
GEOMAlgo_WESCorrector.cxx \
|
||||
GEOMAlgo_WireEdgeSet.cxx \
|
||||
|
@ -1555,6 +1555,10 @@ Please, select face, shell or solid and try again</translation>
|
||||
<source>GEOM_SKETCHER_EL</source>
|
||||
<translation>Element Type</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_SKETCHER_RESTORE</source>
|
||||
<translation>Restore</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_SKETCHER_LENGTH</source>
|
||||
<translation>Length</translation>
|
||||
|
@ -1278,7 +1278,7 @@ void GeometryGUI::viewManagers( QStringList& lst ) const
|
||||
|
||||
void GeometryGUI::onViewManagerAdded( SUIT_ViewManager* vm )
|
||||
{
|
||||
if ( vm->getType() == OCCViewer_Viewer::Type() )
|
||||
if ( vm && vm->getType() == OCCViewer_Viewer::Type() )
|
||||
{
|
||||
qDebug( "connect" );
|
||||
connect( vm, SIGNAL( keyPress ( SUIT_ViewWindow*, QKeyEvent* ) ),
|
||||
@ -1475,8 +1475,8 @@ void GeometryGUI::createPreferences()
|
||||
|
||||
// Set property for precision value for spinboxes
|
||||
for ( ii = 0; ii < nbQuantities; ii++ ){
|
||||
setPreferenceProperty( prec[ii], "min", -10 );
|
||||
setPreferenceProperty( prec[ii], "max", 10 );
|
||||
setPreferenceProperty( prec[ii], "min", -14 );
|
||||
setPreferenceProperty( prec[ii], "max", 14 );
|
||||
setPreferenceProperty( prec[ii], "precision", 2 );
|
||||
}
|
||||
|
||||
|
@ -438,13 +438,14 @@ Standard_Integer GEOMImpl_BooleanDriver::Execute(TFunction_Logbook& log) const
|
||||
//}
|
||||
|
||||
//Alternative case to check shape result Mantis 0020604: EDF 1172
|
||||
TopoDS_Iterator It (aShape, Standard_True, Standard_True);
|
||||
/* TopoDS_Iterator It (aShape, Standard_True, Standard_True);
|
||||
int nbSubshapes=0;
|
||||
for (; It.More(); It.Next())
|
||||
nbSubshapes++;
|
||||
if (!nbSubshapes)
|
||||
Standard_ConstructionError::Raise("Boolean operation aborted : result object is empty compound");
|
||||
Standard_ConstructionError::Raise("Boolean operation aborted : result object is empty compound");*/
|
||||
//end of 0020604: EDF 1172
|
||||
//! the changes temporary commented because of customer needs (see the same mantis bug)
|
||||
|
||||
aFunction->SetValue(aShape);
|
||||
|
||||
|
@ -17,12 +17,11 @@
|
||||
#
|
||||
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||
#
|
||||
|
||||
# GEOM GEOM_SWIG : binding of C++ omplementaion with Python
|
||||
# File : geompy.py
|
||||
# Author : Paul RASCLE, EDF
|
||||
# Module : GEOM
|
||||
#
|
||||
|
||||
"""
|
||||
\namespace geompy
|
||||
\brief Module geompy
|
||||
@ -535,13 +534,13 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
||||
# @param theFace The face for which tangent plane should be built.
|
||||
# @param theParameterV vertical value of the center point (0.0 - 1.0).
|
||||
# @param theParameterU horisontal value of the center point (0.0 - 1.0).
|
||||
# @param theTrimSize the size of plane.
|
||||
# @param theTrimSize the size of plane.
|
||||
# @return New GEOM_Object, containing the created tangent.
|
||||
#
|
||||
# @ref swig_MakeTangentPlaneOnFace "Example"
|
||||
def MakeTangentPlaneOnFace(self, theFace, theParameterU, theParameterV, theTrimSize):
|
||||
anObj = self.BasicOp.MakeTangentPlaneOnFace(theFace, theParameterU, theParameterV, theTrimSize)
|
||||
RaiseIfFailed("MakeTangentPlaneOnFace", self.BasicOp)
|
||||
def MakeTangentPlaneOnFace(self, theFace, theParameterU, theParameterV, theTrimSize):
|
||||
anObj = self.BasicOp.MakeTangentPlaneOnFace(theFace, theParameterU, theParameterV, theTrimSize)
|
||||
RaiseIfFailed("MakeTangentPlaneOnFace", self.BasicOp)
|
||||
return anObj
|
||||
|
||||
## Create a vector with the given components.
|
||||
@ -716,7 +715,7 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
||||
# @param theYVec Vector of Y direction
|
||||
# @return New GEOM_Object, containing the created coordinate system.
|
||||
#
|
||||
# @ref tui_creation_lcs "Example"
|
||||
# @ref tui_creation_lcs "Example"
|
||||
def MakeMarkerPntTwoVec(self, theOrigin, theXVec, theYVec):
|
||||
anObj = self.BasicOp.MakeMarkerPntTwoVec(theOrigin, theXVec, theYVec)
|
||||
RaiseIfFailed("MakeMarkerPntTwoVec", self.BasicOp)
|
||||
@ -945,9 +944,9 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
||||
RaiseIfFailed("MakeSketcherOnPlane", self.CurvesOp)
|
||||
return anObj
|
||||
|
||||
## Create a sketcher wire, following the numerical description,
|
||||
## Create a sketcher wire, following the numerical description,
|
||||
# passed through <VAR>theCoordinates</VAR> argument. \n
|
||||
# @param theCoordinates double values, defining points to create a wire,
|
||||
# @param theCoordinates double values, defining points to create a wire,
|
||||
# passing from it.
|
||||
# @return New GEOM_Object, containing the created wire.
|
||||
#
|
||||
@ -1008,7 +1007,7 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
||||
# with edges, parallel to this coordinate axes.
|
||||
# @param theH height of Face.
|
||||
# @param theW width of Face.
|
||||
# @param theOrientation orientation belong axis OXY OYZ OZX
|
||||
# @param theOrientation orientation belong axis OXY OYZ OZX
|
||||
# @return New GEOM_Object, containing the created face.
|
||||
#
|
||||
# @ref tui_creation_face "Example"
|
||||
@ -1023,7 +1022,7 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
||||
## Create a face from another plane and two sizes,
|
||||
# vertical size and horisontal size.
|
||||
# @param theObj Normale vector to the creating face or
|
||||
# the face object.
|
||||
# the face object.
|
||||
# @param theH Height (vertical size).
|
||||
# @param theW Width (horisontal size).
|
||||
# @return New GEOM_Object, containing the created face.
|
||||
@ -1065,7 +1064,7 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
||||
|
||||
## Create a disk with specified dimensions along OX-OY coordinate axes.
|
||||
# @param theR Radius of Face.
|
||||
# @param theOrientation set the orientation belong axis OXY or OYZ or OZX
|
||||
# @param theOrientation set the orientation belong axis OXY or OYZ or OZX
|
||||
# @return New GEOM_Object, containing the created disk.
|
||||
#
|
||||
# @ref tui_creation_face "Example"
|
||||
@ -2118,10 +2117,13 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
||||
# @return New GEOM_Object, containing processed shape.
|
||||
#
|
||||
# @ref tui_shape_processing "Example"
|
||||
def ProcessShape(self,theShape, theOperators, theParameters, theValues):
|
||||
def ProcessShape(self, theShape, theOperators, theParameters, theValues):
|
||||
# Example: see GEOM_TestHealing.py
|
||||
theValues,Parameters = ParseList(theValues)
|
||||
anObj = self.HealOp.ProcessShape(theShape, theOperators, theParameters, theValues)
|
||||
# To avoid script failure in case of good argument shape
|
||||
if self.HealOp.GetErrorCode() == "ShHealOper_NotError_msg":
|
||||
return theShape
|
||||
RaiseIfFailed("ProcessShape", self.HealOp)
|
||||
for string in (theOperators + theParameters):
|
||||
Parameters = ":" + Parameters
|
||||
@ -2375,10 +2377,10 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
||||
# in order to avoid possible intersection between shapes from
|
||||
# this compound.
|
||||
# @param Limit Type of resulting shapes (corresponding to TopAbs_ShapeEnum).
|
||||
# @param KeepNonlimitShapes: if this parameter == 0 - only shapes with
|
||||
# type <= Limit are kept in the result,
|
||||
# else - shapes with type > Limit are kept
|
||||
# also (if they exist)
|
||||
# @param KeepNonlimitShapes: if this parameter == 0, then only shapes of
|
||||
# target type (equal to Limit) are kept in the result,
|
||||
# else standalone shapes of lower dimension
|
||||
# are kept also (if they exist).
|
||||
#
|
||||
# After implementation new version of PartitionAlgo (October 2006)
|
||||
# other parameters are ignored by current functionality. They are kept
|
||||
@ -2701,9 +2703,9 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
||||
## Modify the Location of the given object by Path,
|
||||
# @param theObject The object to be displaced.
|
||||
# @param thePath Wire or Edge along that the object will be translated.
|
||||
# @param theDistance progress of Path (0 = start location, 1 = end of path location).
|
||||
# @param theCopy is to create a copy objects if true.
|
||||
# @param theReverse - 0 for usual direction, 1 to reverse path direction.
|
||||
# @param theDistance progress of Path (0 = start location, 1 = end of path location).
|
||||
# @param theCopy is to create a copy objects if true.
|
||||
# @param theReverse - 0 for usual direction, 1 to reverse path direction.
|
||||
# @return New GEOM_Object, containing the displaced shape.
|
||||
#
|
||||
# @ref tui_modify_location "Example"
|
||||
@ -4153,11 +4155,11 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
||||
# @ref tui_creation_pipetshape "Example"
|
||||
def MakePipeTShape(self, theR1, theW1, theL1, theR2, theW2, theL2, theHexMesh=True, theP1=None, theP2=None, theP3=None):
|
||||
theR1, theW1, theL1, theR2, theW2, theL2, Parameters = ParseParameters(theR1, theW1, theL1, theR2, theW2, theL2)
|
||||
if (theP1 and theP2 and theP3):
|
||||
anObj = self.AdvOp.MakePipeTShapeWithPosition(theR1, theW1, theL1, theR2, theW2, theL2, theHexMesh, theP1, theP2, theP3)
|
||||
else:
|
||||
anObj = self.AdvOp.MakePipeTShape(theR1, theW1, theL1, theR2, theW2, theL2, theHexMesh)
|
||||
RaiseIfFailed("MakePipeTShape", self.AdvOp)
|
||||
if (theP1 and theP2 and theP3):
|
||||
anObj = self.AdvOp.MakePipeTShapeWithPosition(theR1, theW1, theL1, theR2, theW2, theL2, theHexMesh, theP1, theP2, theP3)
|
||||
else:
|
||||
anObj = self.AdvOp.MakePipeTShape(theR1, theW1, theL1, theR2, theW2, theL2, theHexMesh)
|
||||
RaiseIfFailed("MakePipeTShape", self.AdvOp)
|
||||
if Parameters: anObj[0].SetParameters(Parameters)
|
||||
return anObj
|
||||
|
||||
@ -4185,17 +4187,17 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
||||
# @ref tui_creation_pipetshape "Example"
|
||||
def MakePipeTShapeChamfer(self, theR1, theW1, theL1, theR2, theW2, theL2, theH, theW, theHexMesh=True, theP1=None, theP2=None, theP3=None):
|
||||
theR1, theW1, theL1, theR2, theW2, theL2, theH, theW, Parameters = ParseParameters(theR1, theW1, theL1, theR2, theW2, theL2, theH, theW)
|
||||
if (theP1 and theP2 and theP3):
|
||||
anObj = self.AdvOp.MakePipeTShapeChamferWithPosition(theR1, theW1, theL1, theR2, theW2, theL2, theH, theW, theHexMesh, theP1, theP2, theP3)
|
||||
else:
|
||||
anObj = self.AdvOp.MakePipeTShapeChamfer(theR1, theW1, theL1, theR2, theW2, theL2, theH, theW, theHexMesh)
|
||||
if (theP1 and theP2 and theP3):
|
||||
anObj = self.AdvOp.MakePipeTShapeChamferWithPosition(theR1, theW1, theL1, theR2, theW2, theL2, theH, theW, theHexMesh, theP1, theP2, theP3)
|
||||
else:
|
||||
anObj = self.AdvOp.MakePipeTShapeChamfer(theR1, theW1, theL1, theR2, theW2, theL2, theH, theW, theHexMesh)
|
||||
RaiseIfFailed("MakePipeTShapeChamfer", self.AdvOp)
|
||||
if Parameters: anObj[0].SetParameters(Parameters)
|
||||
return anObj
|
||||
|
||||
## Create a T-shape object with fillet and with specified caracteristics for the main
|
||||
# and the incident pipes (radius, width, half-length). The fillet is
|
||||
# created on the junction of the pipes.
|
||||
# created on the junction of the pipes.
|
||||
# The extremities of the main pipe are located on junctions points P1 and P2.
|
||||
# The extremity of the incident pipe is located on junction point P3.
|
||||
# If P1, P2 and P3 are not given, the center of the shape is (0,0,0) and
|
||||
@ -4207,7 +4209,7 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
||||
# @param theW2 Width of incident pipe (R2+W2 < R1+W1)
|
||||
# @param theL2 Half-length of incident pipe
|
||||
# @param theRF Radius of curvature of fillet.
|
||||
# @param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=True)
|
||||
# @param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=True)
|
||||
# @param theP1 1st junction point of main pipe
|
||||
# @param theP2 2nd junction point of main pipe
|
||||
# @param theP3 Junction point of incident pipe
|
||||
@ -4216,10 +4218,10 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
||||
# @ref tui_creation_pipetshape "Example"
|
||||
def MakePipeTShapeFillet(self, theR1, theW1, theL1, theR2, theW2, theL2, theRF, theHexMesh=True, theP1=None, theP2=None, theP3=None):
|
||||
theR1, theW1, theL1, theR2, theW2, theL2, theRF, Parameters = ParseParameters(theR1, theW1, theL1, theR2, theW2, theL2, theRF)
|
||||
if (theP1 and theP2 and theP3):
|
||||
anObj = self.AdvOp.MakePipeTShapeFilletWithPosition(theR1, theW1, theL1, theR2, theW2, theL2, theRF, theHexMesh, theP1, theP2, theP3)
|
||||
else:
|
||||
anObj = self.AdvOp.MakePipeTShapeFillet(theR1, theW1, theL1, theR2, theW2, theL2, theRF, theHexMesh)
|
||||
if (theP1 and theP2 and theP3):
|
||||
anObj = self.AdvOp.MakePipeTShapeFilletWithPosition(theR1, theW1, theL1, theR2, theW2, theL2, theRF, theHexMesh, theP1, theP2, theP3)
|
||||
else:
|
||||
anObj = self.AdvOp.MakePipeTShapeFillet(theR1, theW1, theL1, theR2, theW2, theL2, theRF, theHexMesh)
|
||||
RaiseIfFailed("MakePipeTShapeFillet", self.AdvOp)
|
||||
if Parameters: anObj[0].SetParameters(Parameters)
|
||||
return anObj
|
||||
|
@ -298,6 +298,7 @@ void OperationGUI_FilletDlg::ConstructorsClicked (int constructorId)
|
||||
qApp->processEvents();
|
||||
updateGeometry();
|
||||
resize(minimumSizeHint());
|
||||
SelectionIntoArgument();
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
|
@ -202,6 +202,7 @@ void OperationGUI_PartitionDlg::ConstructorsClicked( int constructorId )
|
||||
myEditCurrentArgument->setFocus();
|
||||
connect( myGeomGUI->getApp()->selectionMgr(),
|
||||
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
|
||||
SelectionIntoArgument();
|
||||
}
|
||||
|
||||
|
||||
|
@ -54,8 +54,7 @@
|
||||
//=================================================================================
|
||||
PrimitiveGUI_BoxDlg::PrimitiveGUI_BoxDlg (GeometryGUI* theGeometryGUI, QWidget* parent,
|
||||
bool modal, Qt::WindowFlags fl)
|
||||
: GEOMBase_Skeleton(theGeometryGUI, parent, modal, fl),
|
||||
myInitial(true)
|
||||
: GEOMBase_Skeleton(theGeometryGUI, parent, modal, fl)
|
||||
{
|
||||
QPixmap image0 (SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_DLG_BOX_2P")));
|
||||
QPixmap image1 (SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_DLG_BOX_DXYZ")));
|
||||
@ -196,15 +195,9 @@ void PrimitiveGUI_BoxDlg::ConstructorsClicked (int constructorId)
|
||||
qApp->processEvents();
|
||||
updateGeometry();
|
||||
resize(minimumSizeHint());
|
||||
SelectionIntoArgument();
|
||||
|
||||
if (myInitial) {
|
||||
// on dialog initialization we init the first field with a selected object (if any)
|
||||
SelectionIntoArgument();
|
||||
myInitial = false;
|
||||
}
|
||||
else {
|
||||
displayPreview();
|
||||
}
|
||||
displayPreview();
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
@ -331,10 +324,6 @@ void PrimitiveGUI_BoxDlg::SetEditCurrentArgument()
|
||||
|
||||
// clear selection
|
||||
//disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
|
||||
//if (myInitial)
|
||||
// myInitial = false;
|
||||
//else
|
||||
// myGeomGUI->getApp()->selectionMgr()->clearSelected();
|
||||
|
||||
if (send == GroupPoints->PushButton1) {
|
||||
myEditCurrentArgument = GroupPoints->LineEdit1;
|
||||
|
@ -58,9 +58,6 @@ private:
|
||||
private:
|
||||
GEOM::GEOM_Object_var myPoint1, myPoint2; /* Points containing the vector */
|
||||
|
||||
// to initialize the first selection field with a selected object on the dialog creation
|
||||
bool myInitial;
|
||||
|
||||
DlgRef_2Sel* GroupPoints;
|
||||
DlgRef_3Spin* GroupDimensions;
|
||||
|
||||
|
@ -54,8 +54,7 @@
|
||||
//=================================================================================
|
||||
PrimitiveGUI_ConeDlg::PrimitiveGUI_ConeDlg (GeometryGUI* theGeometryGUI, QWidget* parent,
|
||||
bool modal, Qt::WindowFlags fl)
|
||||
: GEOMBase_Skeleton(theGeometryGUI, parent, modal, fl),
|
||||
myInitial(true)
|
||||
: GEOMBase_Skeleton(theGeometryGUI, parent, modal, fl)
|
||||
{
|
||||
QPixmap image0 (SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_DLG_CONE_PV")));
|
||||
QPixmap image1 (SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_DLG_CONE_DXYZ")));
|
||||
@ -211,15 +210,9 @@ void PrimitiveGUI_ConeDlg::ConstructorsClicked (int constructorId)
|
||||
qApp->processEvents();
|
||||
updateGeometry();
|
||||
resize(minimumSizeHint());
|
||||
SelectionIntoArgument();
|
||||
|
||||
if (myInitial) {
|
||||
// on dialog initialization we init the first field with a selected object (if any)
|
||||
SelectionIntoArgument();
|
||||
myInitial = false;
|
||||
}
|
||||
else {
|
||||
displayPreview();
|
||||
}
|
||||
displayPreview();
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
|
@ -61,9 +61,6 @@ private:
|
||||
private:
|
||||
GEOM::GEOM_Object_var myPoint, myDir;
|
||||
|
||||
// to initialize the first selection field with a selected object on the dialog creation
|
||||
bool myInitial;
|
||||
|
||||
DlgRef_2Sel3Spin* GroupPoints;
|
||||
DlgRef_3Spin* GroupDimensions;
|
||||
|
||||
|
@ -202,20 +202,9 @@ void PrimitiveGUI_CylinderDlg::ConstructorsClicked (int constructorId)
|
||||
qApp->processEvents();
|
||||
updateGeometry();
|
||||
resize(minimumSizeHint());
|
||||
SelectionIntoArgument();
|
||||
|
||||
if (myInitial) {
|
||||
myInitial = false;
|
||||
if (constructorId == 0) {
|
||||
// on dialog initialization we init the first field with a selected object (if any)
|
||||
SelectionIntoArgument();
|
||||
}
|
||||
else {
|
||||
displayPreview();
|
||||
}
|
||||
}
|
||||
else {
|
||||
displayPreview();
|
||||
}
|
||||
displayPreview();
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
|
@ -49,8 +49,7 @@
|
||||
//=================================================================================
|
||||
PrimitiveGUI_DiskDlg::PrimitiveGUI_DiskDlg (GeometryGUI* theGeometryGUI, QWidget* parent,
|
||||
bool modal, Qt::WindowFlags fl)
|
||||
: GEOMBase_Skeleton(theGeometryGUI, parent, modal, fl),
|
||||
myInitial(true)
|
||||
: GEOMBase_Skeleton(theGeometryGUI, parent, modal, fl)
|
||||
{
|
||||
SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr();
|
||||
QPixmap image0 (aResMgr->loadPixmap("GEOM", tr("ICON_DLG_DISK_PNT_VEC_R")));
|
||||
@ -253,20 +252,9 @@ void PrimitiveGUI_DiskDlg::ConstructorsClicked (int constructorId)
|
||||
qApp->processEvents();
|
||||
updateGeometry();
|
||||
resize(minimumSizeHint());
|
||||
SelectionIntoArgument();
|
||||
|
||||
if (myInitial) {
|
||||
myInitial = false;
|
||||
if (constructorId == 1 || constructorId == 2) {
|
||||
// on dialog initialization we init the first field with a selected object (if any)
|
||||
SelectionIntoArgument();
|
||||
}
|
||||
else {
|
||||
displayPreview();
|
||||
}
|
||||
}
|
||||
else {
|
||||
displayPreview();
|
||||
}
|
||||
displayPreview();
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
|
@ -60,9 +60,6 @@ private:
|
||||
private:
|
||||
GEOM::GEOM_Object_var myPoint, myDir, myPoint1, myPoint2, myPoint3;
|
||||
|
||||
// to initialize the first selection field with a selected object on the dialog creation
|
||||
bool myInitial;
|
||||
|
||||
DlgRef_2Sel1Spin* GroupPntVecR;
|
||||
DlgRef_3Sel* Group3Pnts;
|
||||
DlgRef_1Spin* GroupDimensions;
|
||||
|
@ -193,6 +193,7 @@ void PrimitiveGUI_SphereDlg::ConstructorsClicked( int constructorId )
|
||||
qApp->processEvents();
|
||||
updateGeometry();
|
||||
resize( minimumSizeHint() );
|
||||
SelectionIntoArgument();
|
||||
|
||||
displayPreview();
|
||||
}
|
||||
|
@ -54,8 +54,7 @@
|
||||
//=================================================================================
|
||||
PrimitiveGUI_TorusDlg::PrimitiveGUI_TorusDlg (GeometryGUI* theGeometryGUI, QWidget* parent,
|
||||
bool modal, Qt::WindowFlags fl)
|
||||
: GEOMBase_Skeleton(theGeometryGUI, parent, modal, fl),
|
||||
myInitial(true)
|
||||
: GEOMBase_Skeleton(theGeometryGUI, parent, modal, fl)
|
||||
{
|
||||
SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr();
|
||||
QPixmap image0 (aResMgr->loadPixmap("GEOM", tr("ICON_DLG_TORUS_PV")));
|
||||
@ -201,20 +200,9 @@ void PrimitiveGUI_TorusDlg::ConstructorsClicked (int constructorId)
|
||||
qApp->processEvents();
|
||||
updateGeometry();
|
||||
resize(minimumSizeHint());
|
||||
SelectionIntoArgument();
|
||||
|
||||
if (myInitial) {
|
||||
myInitial = false;
|
||||
if (constructorId == 0) {
|
||||
// on dialog initialization we init the first field with a selected object (if any)
|
||||
SelectionIntoArgument();
|
||||
}
|
||||
else {
|
||||
displayPreview();
|
||||
}
|
||||
}
|
||||
else {
|
||||
displayPreview();
|
||||
}
|
||||
displayPreview();
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
|
@ -60,9 +60,6 @@ private:
|
||||
private:
|
||||
GEOM::GEOM_Object_var myPoint, myDir;
|
||||
|
||||
// to initialize the first selection field with a selected object on the dialog creation
|
||||
bool myInitial;
|
||||
|
||||
DlgRef_2Sel2Spin* GroupPoints;
|
||||
DlgRef_2Spin* GroupDimensions;
|
||||
|
||||
|
@ -19,11 +19,10 @@
|
||||
//
|
||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||
//
|
||||
|
||||
// GEOM GEOMGUI : GUI for Geometry component
|
||||
// File : RepairGUI_SuppressFacesDlg.cxx
|
||||
// Author : Lucien PIGNOLONI, Open CASCADE S.A.S.
|
||||
//
|
||||
|
||||
#include "RepairGUI_SuppressFacesDlg.h"
|
||||
|
||||
#include <DlgRef.h>
|
||||
@ -207,6 +206,8 @@ void RepairGUI_SuppressFacesDlg::SelectionIntoArgument()
|
||||
}
|
||||
|
||||
if (aMap.IsEmpty() && aSelList.Extent() > 0) { // try to detect selected published sub-shape
|
||||
TColStd_MapOfInteger anIds;
|
||||
|
||||
SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>(myGeomGUI->getApp()->activeStudy());
|
||||
if (!appStudy) return;
|
||||
_PTR(Study) aStudy = appStudy->studyDS();
|
||||
@ -232,11 +233,30 @@ void RepairGUI_SuppressFacesDlg::SelectionIntoArgument()
|
||||
int anIndex = aMainMap.FindIndex(aSubShape);
|
||||
if (anIndex >= 0) {
|
||||
aMap.Add(anIndex);
|
||||
anIds.Add(anIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!aMap.IsEmpty()) {
|
||||
// highlight local faces, correspondent to OB selection
|
||||
disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
|
||||
|
||||
aSelMgr->clearSelected();
|
||||
|
||||
Standard_Boolean isOk;
|
||||
char* objIOR = GEOMBase::GetIORFromObject(myObject);
|
||||
Handle(GEOM_AISShape) aSh = GEOMBase::ConvertIORinGEOMAISShape(objIOR, isOk, true);
|
||||
free(objIOR);
|
||||
if (!isOk || aSh.IsNull())
|
||||
return;
|
||||
|
||||
aSelMgr->AddOrRemoveIndex(aSh->getIO(), anIds, false);
|
||||
|
||||
connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
|
||||
this, SLOT(SelectionIntoArgument()));
|
||||
}
|
||||
}
|
||||
|
||||
const int n = aMap.Extent();
|
||||
|
@ -130,6 +130,7 @@ void TransformationGUI_OffsetDlg::Init()
|
||||
|
||||
globalSelection( GEOM_ALLSHAPES );
|
||||
resize(100,100);
|
||||
SelectionIntoArgument();
|
||||
}
|
||||
|
||||
|
||||
|