Mantis issue 0021718: EDF 1874: Ergonomic of multi-translation / multi-rotation
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 30 KiB |
@ -5,24 +5,28 @@
|
|||||||
\n To produce a <b>Multi Rotation</b> in the <b>Main Menu</b> select
|
\n To produce a <b>Multi Rotation</b> in the <b>Main Menu</b> select
|
||||||
<b>Operations - > Transformation - > Multi Rotation</b>
|
<b>Operations - > Transformation - > Multi Rotation</b>
|
||||||
|
|
||||||
\n This operation creates several geometrical objects rotated in one
|
\n This operation creates a compound of several shapes rotated in one
|
||||||
or two dimensions basing on the initial geometrical object.
|
or two dimensions basing on the initial shape.
|
||||||
\n The \b Result will be one or several \b GEOM_Objects (compound).
|
\n The \b Result will be one \b GEOM_Object (compound).
|
||||||
|
|
||||||
\n To produce a <b>Simple Multi Rotation</b> (in one dimension) you
|
\n To produce a <b>Simple Multi Rotation</b> (in one dimension) you
|
||||||
need to define a \b Shape to be rotated, an \b Axis of rotation and a
|
need to define a \b Shape to be rotated, an \b Axis of rotation (DZ by
|
||||||
<b>Number of Times</b> the shape must be rotated. <b>Rotation Angle</b> will
|
default), Angle of rotation (optionally) and a <b>Number of Times</b>
|
||||||
be 2 * \a PI / \a NbTimes. Number of shapes in the resulting compound will be equal
|
the shape must be rotated. If <b>Angular step</b> is not defined
|
||||||
to \a NbTimes (if \a NbTimes = 1, the result will contain only the initial
|
(checkbox is not checked), it will be 2 * \a PI / \a NbTimes. Number
|
||||||
non-transformed shape).
|
of shape's copies in the resulting compound will be equal to
|
||||||
\n <b>TUI Command:</b> <em>geompy.MultiRotate1D(Shape, Axis, NbTimes)</em>
|
\a NbTimes (if \a NbTimes = 1, the result will contain only the
|
||||||
\n <b>Arguments:</b> Name + 1 shape + 1 vector for direction + 1 value
|
initial non-transformed shape).
|
||||||
(repetition).
|
|
||||||
|
\n <b>TUI Commands:</b>
|
||||||
|
\n <em>geompy.MultiRotate1DNbTimes(Shape, Axis, NbTimes)</em>
|
||||||
|
\n <em>geompy.MultiRotate1DByStep(Shape, Axis, AngleStep, NbTimes)</em>
|
||||||
|
|
||||||
\b <b>NB!</b> There is another way to execute a Multi-rotation
|
\b <b>NB!</b> There is another way to execute a Multi-rotation
|
||||||
operation, which is currently accessible only via TUI commands:
|
operation, which is currently accessible only via TUI commands:
|
||||||
<em>geompy.MakeMultiRotation1D(Shape, Dir, Point, NbTimes)</em> which works in
|
<em>geompy.MakeMultiRotation1DNbTimes(Shape, Dir, Point, NbTimes)</em>,
|
||||||
the same way, but the Axis is defined by direction and point.
|
<em>geompy.MakeMultiRotation1DByStep(Shape, Dir, Point, AngleStep, NbTimes)</em>,
|
||||||
|
which works in the same way, but the Axis is defined by direction and point.
|
||||||
|
|
||||||
\image html neo-mrot1.png
|
\image html neo-mrot1.png
|
||||||
|
|
||||||
@ -31,23 +35,27 @@ the same way, but the Axis is defined by direction and point.
|
|||||||
\image html multi_rotation1d2.png "The result of a simple multi-rotation"
|
\image html multi_rotation1d2.png "The result of a simple multi-rotation"
|
||||||
|
|
||||||
\n <b>Double Multi Rotation</b> (in two dimensions) rotates the given
|
\n <b>Double Multi Rotation</b> (in two dimensions) rotates the given
|
||||||
\b Object around the given \b Axis on the given \b Angle a given
|
\b Object around the given \b Axis (DZ by default) on the given
|
||||||
<b>Number of Times</b> and multi-translates each rotation
|
\b Angle (optional) a given <b>Number of Times</b> and
|
||||||
result. Translation direction passes through the center of gravity of
|
multi-translates each rotation result.
|
||||||
the rotated shape and its projection on the rotation axis. Number of
|
If <b>Angular step</b> is not defined (checkbox is not checked), it
|
||||||
shapes in the resulting compound will be equal to \a NbTimes1 x \a NbTimes2 (if
|
will be 2 * \a PI / \a NbTimes.
|
||||||
both \a NbTimes1 and \a NbTimes2 are equal to 1, the result will contain
|
Translation direction passes through the center of gravity of the
|
||||||
|
initial shape and its projection on the rotation axis. Number of
|
||||||
|
shape's copies in the resulting compound will be equal to \a NbTimes1 x \a NbTimes2
|
||||||
|
(if both \a NbTimes1 and \a NbTimes2 are equal to 1, the result will contain
|
||||||
only the initial non-transformed shape).
|
only the initial non-transformed shape).
|
||||||
\b Reverse checkbox allows to set the direction of rotation.
|
\b Reverse checkbox allows to set the direction of rotation.
|
||||||
\n <b>TUI Command:</b> <em>geompy.MultiRotate2D(Shape, Axis, Angle, NbTimes1, Step, NbTimes2)</em>
|
|
||||||
\n <b>Arguments:</b> Name + 1 shape + 1 vector for direction + 1 angle
|
\n <b>TUI Commands:</b>
|
||||||
+ 1 value (repetition) + 1 step value + 1 value (repetition).
|
\n <em>geompy.MultiRotate2DNbTimes(Shape, Axis, NbTimes1, RadialStep, NbTimes2)</em>
|
||||||
|
\n <em>geompy.MultiRotate2DByStep(Shape, Axis, AngleStep, NbTimes1, RadialStep, NbTimes2)</em>
|
||||||
|
|
||||||
<b>NB!</b> There is another way to execute a Double Multi-rotation
|
<b>NB!</b> There is another way to execute a Double Multi-rotation
|
||||||
operation, which is currently accessible only via TUI commands:
|
operation, which is currently accessible only via TUI commands:
|
||||||
<em>geompy.MakeMultiRotation2D(Shape, Dir, Point, Angle, nbtimes1, Step,nbtimes2)</em>
|
<em>geompy.MakeMultiRotation2DNbTimes(Shape, Dir, Point, NbTimes1, RadialStep, NbTimes2)</em>,
|
||||||
which works in the same way,
|
<em>geompy.MakeMultiRotation2DByStep(Shape, Dir, Point, AngleStep, NbTimes1, RadialStep, NbTimes2)</em>,
|
||||||
but the Axis is defined by direction and point.
|
which works in the same way, but the Axis is defined by direction and point.
|
||||||
|
|
||||||
\image html neo-mrot2.png
|
\image html neo-mrot2.png
|
||||||
|
|
||||||
|
@ -7,9 +7,8 @@ select <b>Operations - > Transformation - > Multi Translation</b>
|
|||||||
|
|
||||||
\n This operation makes several translations of a shape in \b one or \b
|
\n This operation makes several translations of a shape in \b one or \b
|
||||||
two directions.
|
two directions.
|
||||||
\n The \b Result will be one or several \b GEOM_Objects
|
\n The \b Result will be one \b GEOM_Object (compound). The total
|
||||||
(compound). The total number of shapes in the resulting compound (for
|
number of shape copies in the resulting compound will be equal to:
|
||||||
a single initial selected shape) will be equal to:
|
|
||||||
- in case of \ref single_multi_translation "Single multi translation":
|
- in case of \ref single_multi_translation "Single multi translation":
|
||||||
\a NbTimes (if \a NbTimes parameter is equal to 1, the result will
|
\a NbTimes (if \a NbTimes parameter is equal to 1, the result will
|
||||||
contain only the initial non-translated shape).
|
contain only the initial non-translated shape).
|
||||||
@ -21,14 +20,11 @@ initial shape).
|
|||||||
\anchor single_multi_translation
|
\anchor single_multi_translation
|
||||||
\n To produce a <b>Simple Multi Translation</b> (in one direction) you
|
\n To produce a <b>Simple Multi Translation</b> (in one direction) you
|
||||||
need to indicate an \b Object to be translated, a \b Vector of
|
need to indicate an \b Object to be translated, a \b Vector of
|
||||||
translation, a \b Step of translation and a <b>Number of Times</b> the
|
translation (DX by default), a \b Step of translation and a <b>Number
|
||||||
Object should be duplicated. If a curve has been selected instead of
|
of Times</b> the Object should be duplicated. If a curve has been
|
||||||
the Vector, only its first and last vertices will be used to get the vector direction
|
selected instead of the Vector, only its first and last vertices will
|
||||||
and the dialog preview will display the vector along which the object will be translated.
|
be used to get the vector direction and the dialog preview will
|
||||||
\n <b>TUI Command:</b> <em>geompy.MakeMultiTranslation1D(Shape, Dir,
|
display the vector along which the object will be translated.
|
||||||
Step, NbTimes)</em>
|
|
||||||
\n <b>Arguments:</b> Name + 1 shape + 1 vector (for direction) + 1
|
|
||||||
step value + 1 value (repetition).
|
|
||||||
|
|
||||||
\image html mtrans1.png
|
\image html mtrans1.png
|
||||||
|
|
||||||
@ -36,12 +32,26 @@ step value + 1 value (repetition).
|
|||||||
|
|
||||||
\image html multi_translation1dsn.png "The result of a simple multi-translation"
|
\image html multi_translation1dsn.png "The result of a simple multi-translation"
|
||||||
|
|
||||||
|
\n <b>TUI Command:</b> <em>geompy.MakeMultiTranslation1D(Shape, Dir,
|
||||||
|
Step, NbTimes)</em>
|
||||||
|
\n <b>Arguments:</b> Name + 1 shape + 1 vector (for direction) + 1
|
||||||
|
step value + 1 value (repetition).
|
||||||
|
|
||||||
\anchor double_multi_translation
|
\anchor double_multi_translation
|
||||||
\n To produce a <b>Double Multi Translation</b> (in two directions) you need to
|
\n To produce a <b>Double Multi Translation</b> (in two directions) you need to
|
||||||
indicate an \b Object to be translated, and, for both axes, a \b
|
indicate an \b Object to be translated, and, for both axes, a \b
|
||||||
Vector of translation, a \b Step of translation and a <b>Number of Times</b> the shape must be duplicated.
|
Vector of translation (DX and DY by default), a \b Step of translation
|
||||||
If a curve has been selected instead of the Vector, only its first and last vertices will be used to get the vector direction
|
and a <b>Number of Times</b> the shape must be duplicated.
|
||||||
and the dialog preview will display the vector along which the object will be translated.
|
If a curve has been selected instead of the Vector, only its first and
|
||||||
|
last vertices will be used to get the vector direction and the dialog
|
||||||
|
preview will display the vector along which the object will be
|
||||||
|
translated.
|
||||||
|
|
||||||
|
\image html mtrans2.png
|
||||||
|
|
||||||
|
\image html multi_translation_initialsn.png "The initial object"
|
||||||
|
|
||||||
|
\image html multi_translation2dsn.png "The result of a double multi-translation"
|
||||||
|
|
||||||
\n <b>TUI Command:</b> <em>geompy.MakeMultiTranslation2D(Shape, Dir1,
|
\n <b>TUI Command:</b> <em>geompy.MakeMultiTranslation2D(Shape, Dir1,
|
||||||
Step1, NbTimes1, Dir2, Step2, NbTimes2),</em> where \em Shape is a shape
|
Step1, NbTimes1, Dir2, Step2, NbTimes2),</em> where \em Shape is a shape
|
||||||
@ -53,12 +63,6 @@ along \em Dir2.
|
|||||||
\n <b>Arguments:</b> Name + 1 shape + 2 vectors defining the direction
|
\n <b>Arguments:</b> Name + 1 shape + 2 vectors defining the direction
|
||||||
+ 2 step values + 2 values (repetitions).
|
+ 2 step values + 2 values (repetitions).
|
||||||
|
|
||||||
\image html mtrans2.png
|
|
||||||
|
|
||||||
\image html multi_translation_initialsn.png "The initial object"
|
|
||||||
|
|
||||||
\image html multi_translation2dsn.png "The result of a double multi-translation"
|
|
||||||
|
|
||||||
Our <b>TUI Scripts</b> provide you with useful examples of the use of
|
Our <b>TUI Scripts</b> provide you with useful examples of the use of
|
||||||
\ref tui_multi_translation "Transformation Operations".
|
\ref tui_multi_translation "Transformation Operations".
|
||||||
|
|
||||||
|
@ -340,6 +340,7 @@ gg.setDisplayMode(id_tr2d,1)
|
|||||||
import geompy
|
import geompy
|
||||||
import salome
|
import salome
|
||||||
gg = salome.ImportComponentGUI("GEOM")
|
gg = salome.ImportComponentGUI("GEOM")
|
||||||
|
import math
|
||||||
|
|
||||||
# create vertices and vectors
|
# create vertices and vectors
|
||||||
p0 = geompy.MakeVertex( 0., 0., 0.)
|
p0 = geompy.MakeVertex( 0., 0., 0.)
|
||||||
@ -349,7 +350,7 @@ pz = geompy.MakeVertex( 0., 0., 20.)
|
|||||||
pxyz = geompy.MakeVertex( 50., 50., 10.)
|
pxyz = geompy.MakeVertex( 50., 50., 10.)
|
||||||
vz = geompy.MakeVector(p0, pz)
|
vz = geompy.MakeVector(p0, pz)
|
||||||
vxy = geompy.MakeVector(px, py)
|
vxy = geompy.MakeVector(px, py)
|
||||||
vrot1d = geompy.MakeVector(p0, pxyz)
|
vrot = geompy.MakeVector(p0, pxyz)
|
||||||
|
|
||||||
# create an arc
|
# create an arc
|
||||||
arc = geompy.MakeArc(py, pz, px)
|
arc = geompy.MakeArc(py, pz, px)
|
||||||
@ -363,25 +364,41 @@ face = geompy.MakeFace(wire, 1)
|
|||||||
# create a prism
|
# create a prism
|
||||||
prism = geompy.MakePrismVecH(face, vz, 20.0)
|
prism = geompy.MakePrismVecH(face, vz, 20.0)
|
||||||
|
|
||||||
# rotate the given object around the given axis by the given angle a given number of times
|
# 1. Rotate the prism around the axis vrot 4 times
|
||||||
rot1d = geompy.MultiRotate1D(prism, vrot1d, 4)
|
|
||||||
|
|
||||||
# rotate the given object around the given axis by the given angle a given number of times
|
# rotation angle = 2 * PI / 4
|
||||||
# and multi-translate the result of each rotation
|
rot1da = geompy.MultiRotate1DNbTimes(prism, vrot, 4)
|
||||||
rot2d = geompy.MultiRotate2D(prism, vrot1d, 60, 4, 50, 5)
|
|
||||||
|
# by the given angle of 30 degrees
|
||||||
|
rot1db = geompy.MultiRotate1DByStep(prism, vrot, math.pi/6., 4)
|
||||||
|
|
||||||
|
# 2. Rotate the prism around the axis vrot 4 times
|
||||||
|
# and translate the result of each rotation 5 times on distance 50
|
||||||
|
|
||||||
|
# rotation angle = 2 * PI / 4
|
||||||
|
rot2da = geompy.MultiRotate2DNbTimes(prism, vrot, 4, 50, 5)
|
||||||
|
|
||||||
|
# by the given angle of 60 degrees
|
||||||
|
rot2db = geompy.MultiRotate2DByStep(prism, vrot, math.pi/3., 4, 50, 5)
|
||||||
|
|
||||||
# add objects in the study
|
# add objects in the study
|
||||||
id_prism = geompy.addToStudy(prism,"Prism")
|
id_prism = geompy.addToStudy(prism,"Prism")
|
||||||
id_rot1d = geompy.addToStudy(rot1d,"Rotation 1D")
|
id_rot1da = geompy.addToStudy(rot1da,"Rotation 1D Nb.Times")
|
||||||
id_rot2d = geompy.addToStudy(rot2d,"Rotation 2D")
|
id_rot1db = geompy.addToStudy(rot1db,"Rotation 1D By Step")
|
||||||
|
id_rot2da = geompy.addToStudy(rot2da,"Rotation 2D Nb.Times")
|
||||||
|
id_rot2db = geompy.addToStudy(rot2db,"Rotation 2D By Step")
|
||||||
|
|
||||||
# display the prism and the results of fillet operation
|
# display the prism and the results of fillet operation
|
||||||
gg.createAndDisplayGO(id_prism)
|
gg.createAndDisplayGO(id_prism)
|
||||||
gg.setDisplayMode(id_prism,1)
|
gg.setDisplayMode(id_prism,1)
|
||||||
gg.createAndDisplayGO(id_rot1d)
|
gg.createAndDisplayGO(id_rot1da)
|
||||||
gg.setDisplayMode(id_rot1d,1)
|
gg.setDisplayMode(id_rot1da,1)
|
||||||
gg.createAndDisplayGO(id_rot2d)
|
gg.createAndDisplayGO(id_rot1db)
|
||||||
gg.setDisplayMode(id_rot2d,1)
|
gg.setDisplayMode(id_rot1db,1)
|
||||||
|
gg.createAndDisplayGO(id_rot2da)
|
||||||
|
gg.setDisplayMode(id_rot2da,1)
|
||||||
|
gg.createAndDisplayGO(id_rot2db)
|
||||||
|
gg.setDisplayMode(id_rot2db,1)
|
||||||
\endcode
|
\endcode
|
||||||
|
|
||||||
\anchor tui_fillet2d
|
\anchor tui_fillet2d
|
||||||
|
103
idl/GEOM_Gen.idl
@ -804,7 +804,7 @@ module GEOM
|
|||||||
/*!
|
/*!
|
||||||
* \brief Translate the given object along the given vector a given number times
|
* \brief Translate the given object along the given vector a given number times
|
||||||
* \param theObject The object to be translated.
|
* \param theObject The object to be translated.
|
||||||
* \param theVector Direction of the translation.
|
* \param theVector Direction of the translation. DX if None.
|
||||||
* \param theStep Distance to translate on.
|
* \param theStep Distance to translate on.
|
||||||
* \param theNbTimes Quantity of translations to be done.
|
* \param theNbTimes Quantity of translations to be done.
|
||||||
* \return New GEOM_Object, containing compound of all
|
* \return New GEOM_Object, containing compound of all
|
||||||
@ -818,10 +818,10 @@ module GEOM
|
|||||||
/*!
|
/*!
|
||||||
* \brief Conseqently apply two specified translations to theObject specified number of times.
|
* \brief Conseqently apply two specified translations to theObject specified number of times.
|
||||||
* \param theObject The object to be translated.
|
* \param theObject The object to be translated.
|
||||||
* \param theVector1 Direction of the first translation.
|
* \param theVector1 Direction of the first translation. DX if None.
|
||||||
* \param theStep1 Step of the first translation.
|
* \param theStep1 Step of the first translation.
|
||||||
* \param theNbTimes1 Quantity of translations to be done along theVector1.
|
* \param theNbTimes1 Quantity of translations to be done along theVector1.
|
||||||
* \param theVector2 Direction of the second translation.
|
* \param theVector2 Direction of the second translation. DY if None.
|
||||||
* \param theStep2 Step of the second translation.
|
* \param theStep2 Step of the second translation.
|
||||||
* \param theNbTimes2 Quantity of translations to be done along theVector2.
|
* \param theNbTimes2 Quantity of translations to be done along theVector2.
|
||||||
* \return New GEOM_Object, containing compound of all
|
* \return New GEOM_Object, containing compound of all
|
||||||
@ -888,20 +888,56 @@ module GEOM
|
|||||||
in GEOM_Object theAxis,
|
in GEOM_Object theAxis,
|
||||||
in double theAngle);
|
in double theAngle);
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Rotate the given object around the given axis a given number times.
|
* \brief Rotate the given object around the given axis a given number times.
|
||||||
*
|
*
|
||||||
* Rotation angle will be 2*PI/theNbTimes.
|
* Rotation angle will be 2*PI/theNbObjects.
|
||||||
* \param theObject The object to be rotated.
|
* \param theObject The object to be rotated.
|
||||||
* \param theAxis The rotation axis.
|
* \param theAxis The rotation axis. DZ if None.
|
||||||
* \param theNbTimes Quantity of rotations to be done.
|
* \param theNbObjects Quantity of rotations to be done.
|
||||||
* \return New GEOM_Object, containing compound of all the
|
* \return New GEOM_Object, containing compound of all the
|
||||||
* shapes, obtained after each rotation.
|
* shapes, obtained after each rotation.
|
||||||
*/
|
*/
|
||||||
GEOM_Object MultiRotate1D (in GEOM_Object theObject,
|
GEOM_Object MultiRotate1D (in GEOM_Object theObject,
|
||||||
in GEOM_Object theAxis,
|
in GEOM_Object theAxis,
|
||||||
in long theNbTimes);
|
in long theNbObjects);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Rotate the given object around the given axis
|
||||||
|
* a given number times on the given angle.
|
||||||
|
*
|
||||||
|
* \param theObject The object to be rotated.
|
||||||
|
* \param theAxis The rotation axis. DZ if None.
|
||||||
|
* \param theAngleStep Rotation angle in radians.
|
||||||
|
* \param theNbSteps Quantity of rotations to be done.
|
||||||
|
* \return New GEOM_Object, containing compound of all the
|
||||||
|
* shapes, obtained after each rotation.
|
||||||
|
*/
|
||||||
|
GEOM_Object MultiRotate1DByStep (in GEOM_Object theObject,
|
||||||
|
in GEOM_Object theAxis,
|
||||||
|
in double theAngleStep,
|
||||||
|
in long theNbSteps);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Rotate the given object around the given axis
|
||||||
|
* a given number times and multi-translate each rotation result.
|
||||||
|
*
|
||||||
|
* Rotation angle will be 2*PI/theNbObjects.
|
||||||
|
* Translation direction passes through center of gravity
|
||||||
|
* of rotated shape and its projection on the rotation axis.
|
||||||
|
* \param theObject The object to be rotated.
|
||||||
|
* \param theAxis Rotation axis. DZ if None.
|
||||||
|
* \param theNbObjects Quantity of rotations to be done.
|
||||||
|
* \param theRadialStep Translation distance.
|
||||||
|
* \param theNbSteps Quantity of translations to be done.
|
||||||
|
* \return New GEOM_Object, containing compound of all the
|
||||||
|
* shapes, obtained after each transformation.
|
||||||
|
*/
|
||||||
|
GEOM_Object MultiRotate2DNbTimes (in GEOM_Object theObject,
|
||||||
|
in GEOM_Object theAxis,
|
||||||
|
in long theNbObjects,
|
||||||
|
in double theRadialStep,
|
||||||
|
in long theNbSteps);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Rotate the given object around the
|
* \brief Rotate the given object around the
|
||||||
@ -911,20 +947,43 @@ module GEOM
|
|||||||
* Translation direction passes through center of gravity
|
* Translation direction passes through center of gravity
|
||||||
* of rotated shape and its projection on the rotation axis.
|
* of rotated shape and its projection on the rotation axis.
|
||||||
* \param theObject The object to be rotated.
|
* \param theObject The object to be rotated.
|
||||||
* \param theAxis Rotation axis.
|
* \param theAxis Rotation axis. DZ if None.
|
||||||
* \param theAngle Rotation angle in graduces.
|
* \param theAngleStep Rotation angle in radians.
|
||||||
* \param theNbTimes1 Quantity of rotations to be done.
|
* \param theNbSteps1 Quantity of rotations to be done.
|
||||||
* \param theStep Translation distance.
|
* \param theRadialStep Translation distance.
|
||||||
* \param theNbTimes2 Quantity of translations to be done.
|
* \param theNbSteps2 Quantity of translations to be done.
|
||||||
|
* \return New GEOM_Object, containing compound of all the
|
||||||
|
* shapes, obtained after each transformation.
|
||||||
|
*/
|
||||||
|
GEOM_Object MultiRotate2DByStep (in GEOM_Object theObject,
|
||||||
|
in GEOM_Object theAxis,
|
||||||
|
in double theAngleStep,
|
||||||
|
in long theNbSteps1,
|
||||||
|
in double theRadialStep,
|
||||||
|
in long theNbSteps2);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Rotate the given object around the
|
||||||
|
* given axis on the given angle a given number
|
||||||
|
* times and multi-translate each rotation result.
|
||||||
|
*
|
||||||
|
* Translation direction passes through center of gravity
|
||||||
|
* of rotated shape and its projection on the rotation axis.
|
||||||
|
* \param theObject The object to be rotated.
|
||||||
|
* \param theAxis Rotation axis. DZ if None.
|
||||||
|
* \param theAngleStep Rotation angle in degrees.
|
||||||
|
* \param theNbSteps1 Quantity of rotations to be done.
|
||||||
|
* \param theRadialStep Translation distance.
|
||||||
|
* \param theNbSteps2 Quantity of translations to be done.
|
||||||
* \return New GEOM_Object, containing compound of all the
|
* \return New GEOM_Object, containing compound of all the
|
||||||
* shapes, obtained after each transformation.
|
* shapes, obtained after each transformation.
|
||||||
*/
|
*/
|
||||||
GEOM_Object MultiRotate2D (in GEOM_Object theObject,
|
GEOM_Object MultiRotate2D (in GEOM_Object theObject,
|
||||||
in GEOM_Object theAxis,
|
in GEOM_Object theAxis,
|
||||||
in double theAngle,
|
in double theAngleStep,
|
||||||
in long theNbTimes1,
|
in long theNbSteps1,
|
||||||
in double theStep,
|
in double theRadialStep,
|
||||||
in long theNbTimes2);
|
in long theNbSteps2);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Replace the given object by an object,
|
* \brief Replace the given object by an object,
|
||||||
@ -3629,6 +3688,16 @@ module GEOM
|
|||||||
out double X1, out double Y1, out double Z1,
|
out double X1, out double Y1, out double Z1,
|
||||||
out double X2, out double Y2, out double Z2);
|
out double X2, out double Y2, out double Z2);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Get closest points of the given shapes.
|
||||||
|
* \param theShape1,theShape2 Shapes to find closest points of.
|
||||||
|
* \param theCoords Output. List of (X, Y, Z) coordinates for all couples of points.
|
||||||
|
* \return The number of found solutions (-1 in case of infinite number of solutions).
|
||||||
|
*/
|
||||||
|
long ClosestPoints (in GEOM_Object theShape1,
|
||||||
|
in GEOM_Object theShape2,
|
||||||
|
out ListOfDouble theCoords);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Get angle between the given lines or linear edges.
|
* \brief Get angle between the given lines or linear edges.
|
||||||
* \param theShape1,theShape2 Shapes to find angle between. Lines or linear edges.
|
* \param theShape1,theShape2 Shapes to find angle between. Lines or linear edges.
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
|
||||||
|
|
||||||
// File : DlgRef.cxx
|
// File : DlgRef.cxx
|
||||||
// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
|
// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
|
||||||
@ -526,20 +525,6 @@ DlgRef_2Sel3Spin::~DlgRef_2Sel3Spin()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////
|
|
||||||
// DlgRef_2Sel4Spin1Check
|
|
||||||
//////////////////////////////////////////
|
|
||||||
|
|
||||||
DlgRef_2Sel4Spin1Check::DlgRef_2Sel4Spin1Check( QWidget* parent, Qt::WindowFlags f )
|
|
||||||
: QWidget( parent, f )
|
|
||||||
{
|
|
||||||
setupUi( this );
|
|
||||||
}
|
|
||||||
|
|
||||||
DlgRef_2Sel4Spin1Check::~DlgRef_2Sel4Spin1Check()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//////////////////////////////////////////
|
//////////////////////////////////////////
|
||||||
// DlgRef_2Sel
|
// DlgRef_2Sel
|
||||||
//////////////////////////////////////////
|
//////////////////////////////////////////
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
|
||||||
|
|
||||||
// File : DlgRef.h
|
// File : DlgRef.h
|
||||||
// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
|
// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
|
||||||
@ -611,22 +610,6 @@ public:
|
|||||||
~DlgRef_2Sel3Spin();
|
~DlgRef_2Sel3Spin();
|
||||||
};
|
};
|
||||||
|
|
||||||
//////////////////////////////////////////
|
|
||||||
// DlgRef_2Sel4Spin1Check
|
|
||||||
//////////////////////////////////////////
|
|
||||||
|
|
||||||
#include "ui_DlgRef_2Sel4Spin1Check_QTD.h"
|
|
||||||
|
|
||||||
class DLGREF_EXPORT DlgRef_2Sel4Spin1Check : public QWidget,
|
|
||||||
public Ui::DlgRef_2Sel4Spin1Check_QTD
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
DlgRef_2Sel4Spin1Check( QWidget* = 0, Qt::WindowFlags = 0 );
|
|
||||||
~DlgRef_2Sel4Spin1Check();
|
|
||||||
};
|
|
||||||
|
|
||||||
//////////////////////////////////////////
|
//////////////////////////////////////////
|
||||||
// DlgRef_2Sel
|
// DlgRef_2Sel
|
||||||
//////////////////////////////////////////
|
//////////////////////////////////////////
|
||||||
|
@ -1,237 +0,0 @@
|
|||||||
<ui version="4.0" >
|
|
||||||
<class>DlgRef_2Sel4Spin1Check_QTD</class>
|
|
||||||
<widget class="QWidget" name="DlgRef_2Sel4Spin1Check_QTD" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>156</width>
|
|
||||||
<height>197</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle" >
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
<layout class="QGridLayout" >
|
|
||||||
<property name="leftMargin" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="horizontalSpacing" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="verticalSpacing" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<item row="0" column="0" >
|
|
||||||
<widget class="QGroupBox" name="GroupBox1" >
|
|
||||||
<property name="title" >
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
<layout class="QGridLayout" >
|
|
||||||
<property name="leftMargin" >
|
|
||||||
<number>9</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin" >
|
|
||||||
<number>9</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin" >
|
|
||||||
<number>9</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin" >
|
|
||||||
<number>9</number>
|
|
||||||
</property>
|
|
||||||
<property name="horizontalSpacing" >
|
|
||||||
<number>6</number>
|
|
||||||
</property>
|
|
||||||
<property name="verticalSpacing" >
|
|
||||||
<number>6</number>
|
|
||||||
</property>
|
|
||||||
<item row="4" column="0" colspan="3" >
|
|
||||||
<widget class="QCheckBox" name="CheckButton1" >
|
|
||||||
<property name="text" >
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="6" column="1" colspan="2" >
|
|
||||||
<widget class="SalomeApp_IntSpinBox" name="SpinBox_DY2" />
|
|
||||||
</item>
|
|
||||||
<item row="5" column="1" colspan="2" >
|
|
||||||
<widget class="SalomeApp_DoubleSpinBox" name="SpinBox_DX2" />
|
|
||||||
</item>
|
|
||||||
<item row="3" column="1" colspan="2" >
|
|
||||||
<widget class="SalomeApp_IntSpinBox" name="SpinBox_DY1" />
|
|
||||||
</item>
|
|
||||||
<item row="2" column="1" colspan="2" >
|
|
||||||
<widget class="SalomeApp_DoubleSpinBox" name="SpinBox_DX1" />
|
|
||||||
</item>
|
|
||||||
<item row="6" column="0" >
|
|
||||||
<widget class="QLabel" name="TextLabel6" >
|
|
||||||
<property name="sizePolicy" >
|
|
||||||
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>TL6</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap" >
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="5" column="0" >
|
|
||||||
<widget class="QLabel" name="TextLabel5" >
|
|
||||||
<property name="sizePolicy" >
|
|
||||||
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>TL5</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap" >
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="0" >
|
|
||||||
<widget class="QLabel" name="TextLabel4" >
|
|
||||||
<property name="sizePolicy" >
|
|
||||||
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>TL4</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap" >
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="0" >
|
|
||||||
<widget class="QLabel" name="TextLabel3" >
|
|
||||||
<property name="sizePolicy" >
|
|
||||||
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>TL3</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap" >
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0" >
|
|
||||||
<widget class="QLabel" name="TextLabel2" >
|
|
||||||
<property name="sizePolicy" >
|
|
||||||
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>TL2</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap" >
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1" >
|
|
||||||
<widget class="QPushButton" name="PushButton2" >
|
|
||||||
<property name="sizePolicy" >
|
|
||||||
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="2" >
|
|
||||||
<widget class="QLineEdit" name="LineEdit1" />
|
|
||||||
</item>
|
|
||||||
<item row="0" column="0" >
|
|
||||||
<widget class="QLabel" name="TextLabel1" >
|
|
||||||
<property name="sizePolicy" >
|
|
||||||
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>TL1</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap" >
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="2" >
|
|
||||||
<widget class="QLineEdit" name="LineEdit2" />
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1" >
|
|
||||||
<widget class="QPushButton" name="PushButton1" >
|
|
||||||
<property name="sizePolicy" >
|
|
||||||
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<layoutdefault spacing="6" margin="11" />
|
|
||||||
<pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
|
|
||||||
<customwidgets>
|
|
||||||
<customwidget>
|
|
||||||
<class>SalomeApp_DoubleSpinBox</class>
|
|
||||||
<extends>QDoubleSpinBox</extends>
|
|
||||||
<header location="global" >SalomeApp_DoubleSpinBox.h</header>
|
|
||||||
</customwidget>
|
|
||||||
<customwidget>
|
|
||||||
<class>SalomeApp_IntSpinBox</class>
|
|
||||||
<extends>QSpinBox</extends>
|
|
||||||
<header location="global" >SalomeApp_IntSpinBox.h</header>
|
|
||||||
</customwidget>
|
|
||||||
</customwidgets>
|
|
||||||
<tabstops>
|
|
||||||
<tabstop>PushButton1</tabstop>
|
|
||||||
<tabstop>LineEdit1</tabstop>
|
|
||||||
<tabstop>PushButton2</tabstop>
|
|
||||||
<tabstop>LineEdit2</tabstop>
|
|
||||||
<tabstop>SpinBox_DX1</tabstop>
|
|
||||||
<tabstop>SpinBox_DY1</tabstop>
|
|
||||||
<tabstop>CheckButton1</tabstop>
|
|
||||||
<tabstop>SpinBox_DX2</tabstop>
|
|
||||||
<tabstop>SpinBox_DY2</tabstop>
|
|
||||||
</tabstops>
|
|
||||||
<resources/>
|
|
||||||
<connections/>
|
|
||||||
</ui>
|
|
@ -15,9 +15,7 @@
|
|||||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
#
|
#
|
||||||
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
#
|
|
||||||
|
|
||||||
# GEOM DLGREF :
|
|
||||||
# File : Makefile.am
|
# File : Makefile.am
|
||||||
# Author : Alexander BORODIN, Open CASCADE S.A.S. (alexander.borodin@opencascade.com)
|
# Author : Alexander BORODIN, Open CASCADE S.A.S. (alexander.borodin@opencascade.com)
|
||||||
# Package : DlgRef
|
# Package : DlgRef
|
||||||
@ -72,7 +70,6 @@ UIC_FILES = \
|
|||||||
ui_DlgRef_2Sel2Spin2Push_QTD.h \
|
ui_DlgRef_2Sel2Spin2Push_QTD.h \
|
||||||
ui_DlgRef_2Sel3Spin2Rb_QTD.h \
|
ui_DlgRef_2Sel3Spin2Rb_QTD.h \
|
||||||
ui_DlgRef_2Sel3Spin_QTD.h \
|
ui_DlgRef_2Sel3Spin_QTD.h \
|
||||||
ui_DlgRef_2Sel4Spin1Check_QTD.h \
|
|
||||||
ui_DlgRef_2Sel_QTD.h \
|
ui_DlgRef_2Sel_QTD.h \
|
||||||
ui_DlgRef_2SelExt_QTD.h \
|
ui_DlgRef_2SelExt_QTD.h \
|
||||||
ui_DlgRef_2Spin_QTD.h \
|
ui_DlgRef_2Spin_QTD.h \
|
||||||
|
@ -125,6 +125,10 @@ Please, select face, shell or solid and try again</translation>
|
|||||||
<source>GEOM_ANGLE_1</source>
|
<source>GEOM_ANGLE_1</source>
|
||||||
<translation>Angle</translation>
|
<translation>Angle</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GEOM_ANGLE_STEP</source>
|
||||||
|
<translation>Angular step :</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>GEOM_ARC_ELLIPSE</source>
|
<source>GEOM_ARC_ELLIPSE</source>
|
||||||
<translation>Arc of ellipse</translation>
|
<translation>Arc of ellipse</translation>
|
||||||
@ -1950,6 +1954,10 @@ Please, select face, shell or solid and try again</translation>
|
|||||||
<source>GEOM_STEP</source>
|
<source>GEOM_STEP</source>
|
||||||
<translation>Step :</translation>
|
<translation>Step :</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GEOM_STEP_R</source>
|
||||||
|
<translation>Radial step :</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>GEOM_STEP_TITLE</source>
|
<source>GEOM_STEP_TITLE</source>
|
||||||
<translation>Step value for GUI constructions</translation>
|
<translation>Step value for GUI constructions</translation>
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
|
||||||
|
|
||||||
#include <Standard_Stream.hxx>
|
#include <Standard_Stream.hxx>
|
||||||
|
|
||||||
@ -500,7 +499,7 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::Translate1D
|
|||||||
{
|
{
|
||||||
SetErrorCode(KO);
|
SetErrorCode(KO);
|
||||||
|
|
||||||
if (theObject.IsNull() || theVector.IsNull()) return NULL;
|
if (theObject.IsNull()) return NULL;
|
||||||
|
|
||||||
Handle(GEOM_Function) aLastFunction = theObject->GetLastFunction();
|
Handle(GEOM_Function) aLastFunction = theObject->GetLastFunction();
|
||||||
if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be moved
|
if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be moved
|
||||||
@ -515,9 +514,10 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::Translate1D
|
|||||||
//Check if the function is set correctly
|
//Check if the function is set correctly
|
||||||
if (aFunction->GetDriverGUID() != GEOMImpl_TranslateDriver::GetID()) return NULL;
|
if (aFunction->GetDriverGUID() != GEOMImpl_TranslateDriver::GetID()) return NULL;
|
||||||
|
|
||||||
GEOMImpl_ITranslate aTI(aFunction);
|
GEOMImpl_ITranslate aTI (aFunction);
|
||||||
aTI.SetVector(theVector->GetLastFunction());
|
|
||||||
aTI.SetOriginal(aLastFunction);
|
aTI.SetOriginal(aLastFunction);
|
||||||
|
if (!theVector.IsNull())
|
||||||
|
aTI.SetVector(theVector->GetLastFunction());
|
||||||
aTI.SetStep1(theStep);
|
aTI.SetStep1(theStep);
|
||||||
aTI.SetNbIter1(theNbTimes);
|
aTI.SetNbIter1(theNbTimes);
|
||||||
|
|
||||||
@ -560,7 +560,7 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::Translate2D (Handle(GEOM_Obje
|
|||||||
{
|
{
|
||||||
SetErrorCode(KO);
|
SetErrorCode(KO);
|
||||||
|
|
||||||
if (theObject.IsNull() || theVector.IsNull() || theVector2.IsNull()) return NULL;
|
if (theObject.IsNull()) return NULL;
|
||||||
|
|
||||||
Handle(GEOM_Function) aLastFunction = theObject->GetLastFunction();
|
Handle(GEOM_Function) aLastFunction = theObject->GetLastFunction();
|
||||||
if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be moved
|
if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be moved
|
||||||
@ -576,11 +576,13 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::Translate2D (Handle(GEOM_Obje
|
|||||||
if (aFunction->GetDriverGUID() != GEOMImpl_TranslateDriver::GetID()) return NULL;
|
if (aFunction->GetDriverGUID() != GEOMImpl_TranslateDriver::GetID()) return NULL;
|
||||||
|
|
||||||
GEOMImpl_ITranslate aTI (aFunction);
|
GEOMImpl_ITranslate aTI (aFunction);
|
||||||
aTI.SetVector(theVector->GetLastFunction());
|
|
||||||
aTI.SetVector2(theVector2->GetLastFunction());
|
|
||||||
aTI.SetOriginal(aLastFunction);
|
aTI.SetOriginal(aLastFunction);
|
||||||
|
if (!theVector.IsNull())
|
||||||
|
aTI.SetVector(theVector->GetLastFunction());
|
||||||
aTI.SetStep1(theStep1);
|
aTI.SetStep1(theStep1);
|
||||||
aTI.SetNbIter1(theNbTimes1);
|
aTI.SetNbIter1(theNbTimes1);
|
||||||
|
if (!theVector2.IsNull())
|
||||||
|
aTI.SetVector2(theVector2->GetLastFunction());
|
||||||
aTI.SetStep2(theStep2);
|
aTI.SetStep2(theStep2);
|
||||||
aTI.SetNbIter2(theNbTimes2);
|
aTI.SetNbIter2(theNbTimes2);
|
||||||
|
|
||||||
@ -1675,10 +1677,12 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::Rotate (Handle(GEOM_Object) t
|
|||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
* Rotate
|
* RotateCopy
|
||||||
*/
|
*/
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
Handle(GEOM_Object) GEOMImpl_ITransformOperations::RotateCopy (Handle(GEOM_Object) theObject, Handle(GEOM_Object) theAxis, double theAngle)
|
Handle(GEOM_Object) GEOMImpl_ITransformOperations::RotateCopy (Handle(GEOM_Object) theObject,
|
||||||
|
Handle(GEOM_Object) theAxis,
|
||||||
|
double theAngle)
|
||||||
{
|
{
|
||||||
SetErrorCode(KO);
|
SetErrorCode(KO);
|
||||||
|
|
||||||
@ -1728,7 +1732,7 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::RotateCopy (Handle(GEOM_Objec
|
|||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
* Rotate1D
|
* Rotate1D (for MultiRotate1DNbTimes)
|
||||||
*/
|
*/
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
Handle(GEOM_Object) GEOMImpl_ITransformOperations::Rotate1D (Handle(GEOM_Object) theObject,
|
Handle(GEOM_Object) GEOMImpl_ITransformOperations::Rotate1D (Handle(GEOM_Object) theObject,
|
||||||
@ -1737,7 +1741,7 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::Rotate1D (Handle(GEOM_Object)
|
|||||||
{
|
{
|
||||||
SetErrorCode(KO);
|
SetErrorCode(KO);
|
||||||
|
|
||||||
if (theObject.IsNull() || theAxis.IsNull()) return NULL;
|
if (theObject.IsNull()) return NULL;
|
||||||
|
|
||||||
Handle(GEOM_Function) aFunction, aLastFunction = theObject->GetLastFunction();
|
Handle(GEOM_Function) aFunction, aLastFunction = theObject->GetLastFunction();
|
||||||
if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be rotated
|
if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be rotated
|
||||||
@ -1754,7 +1758,8 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::Rotate1D (Handle(GEOM_Object)
|
|||||||
|
|
||||||
GEOMImpl_IRotate aRI(aFunction);
|
GEOMImpl_IRotate aRI(aFunction);
|
||||||
aRI.SetOriginal(aLastFunction);
|
aRI.SetOriginal(aLastFunction);
|
||||||
aRI.SetAxis(theAxis->GetLastFunction());
|
if (!theAxis.IsNull())
|
||||||
|
aRI.SetAxis(theAxis->GetLastFunction());
|
||||||
aRI.SetNbIter1(theNbTimes);
|
aRI.SetNbIter1(theNbTimes);
|
||||||
|
|
||||||
//Compute the translation
|
//Compute the translation
|
||||||
@ -1774,7 +1779,7 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::Rotate1D (Handle(GEOM_Object)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Make a Python command
|
//Make a Python command
|
||||||
GEOM::TPythonDump(aFunction) << aCopy << " = geompy.MultiRotate1D("
|
GEOM::TPythonDump(aFunction) << aCopy << " = geompy.MultiRotate1DNbTimes("
|
||||||
<< theObject << ", " << theAxis << ", " << theNbTimes << ")";
|
<< theObject << ", " << theAxis << ", " << theNbTimes << ")";
|
||||||
|
|
||||||
SetErrorCode(OK);
|
SetErrorCode(OK);
|
||||||
@ -1783,19 +1788,17 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::Rotate1D (Handle(GEOM_Object)
|
|||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
* Rotate2D
|
* Rotate1D (for MultiRotate1DByStep)
|
||||||
*/
|
*/
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
Handle(GEOM_Object) GEOMImpl_ITransformOperations::Rotate2D (Handle(GEOM_Object) theObject,
|
Handle(GEOM_Object) GEOMImpl_ITransformOperations::Rotate1D (Handle(GEOM_Object) theObject,
|
||||||
Handle(GEOM_Object) theAxis,
|
Handle(GEOM_Object) theAxis,
|
||||||
double theAngle,
|
double theAngleStep,
|
||||||
Standard_Integer theNbTimes1,
|
Standard_Integer theNbSteps)
|
||||||
double theStep,
|
|
||||||
Standard_Integer theNbTimes2)
|
|
||||||
{
|
{
|
||||||
SetErrorCode(KO);
|
SetErrorCode(KO);
|
||||||
|
|
||||||
if (theObject.IsNull() || theAxis.IsNull()) return NULL;
|
if (theObject.IsNull()) return NULL;
|
||||||
|
|
||||||
Handle(GEOM_Function) aFunction, aLastFunction = theObject->GetLastFunction();
|
Handle(GEOM_Function) aFunction, aLastFunction = theObject->GetLastFunction();
|
||||||
if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be rotated
|
if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be rotated
|
||||||
@ -1804,19 +1807,21 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::Rotate2D (Handle(GEOM_Object)
|
|||||||
Handle(GEOM_Object) aCopy = GetEngine()->AddObject(GetDocID(), theObject->GetType());
|
Handle(GEOM_Object) aCopy = GetEngine()->AddObject(GetDocID(), theObject->GetType());
|
||||||
|
|
||||||
//Add a rotate function
|
//Add a rotate function
|
||||||
aFunction = aCopy->AddFunction(GEOMImpl_RotateDriver::GetID(), ROTATE_2D);
|
aFunction = aCopy->AddFunction(GEOMImpl_RotateDriver::GetID(), ROTATE_1D_STEP);
|
||||||
if (aFunction.IsNull()) return NULL;
|
if (aFunction.IsNull()) return NULL;
|
||||||
|
|
||||||
//Check if the function is set correctly
|
//Check if the function is set correctly
|
||||||
if (aFunction->GetDriverGUID() != GEOMImpl_RotateDriver::GetID()) return NULL;
|
if (aFunction->GetDriverGUID() != GEOMImpl_RotateDriver::GetID()) return NULL;
|
||||||
|
|
||||||
GEOMImpl_IRotate aRI(aFunction);
|
//Convert angle into degrees
|
||||||
aRI.SetAxis(theAxis->GetLastFunction());
|
double anAngleStep = theAngleStep * 180. / M_PI;
|
||||||
|
|
||||||
|
GEOMImpl_IRotate aRI (aFunction);
|
||||||
aRI.SetOriginal(aLastFunction);
|
aRI.SetOriginal(aLastFunction);
|
||||||
aRI.SetNbIter1(theNbTimes1);
|
if (!theAxis.IsNull())
|
||||||
aRI.SetNbIter2(theNbTimes2);
|
aRI.SetAxis(theAxis->GetLastFunction());
|
||||||
aRI.SetAngle(theAngle);
|
aRI.SetAngle(anAngleStep);
|
||||||
aRI.SetStep(theStep);
|
aRI.SetNbIter1(theNbSteps);
|
||||||
|
|
||||||
//Compute the translation
|
//Compute the translation
|
||||||
try {
|
try {
|
||||||
@ -1835,9 +1840,140 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::Rotate2D (Handle(GEOM_Object)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Make a Python command
|
//Make a Python command
|
||||||
GEOM::TPythonDump(aFunction) << aCopy << " = geompy.MultiRotate2D("
|
GEOM::TPythonDump(aFunction)
|
||||||
<< theObject << ", " << theAxis << ", " << theAngle << ", "
|
<< aCopy << " = geompy.MultiRotate1DByStep(" << theObject << ", "
|
||||||
<< theNbTimes1 << ", " << theStep << ", " << theNbTimes2 << ")";
|
<< theAxis << ", " << anAngleStep << "*math.pi/180.0, " << theNbSteps << ")";
|
||||||
|
|
||||||
|
SetErrorCode(OK);
|
||||||
|
return aCopy;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* Rotate2D (for MultiRotate2DNbTimes)
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
Handle(GEOM_Object) GEOMImpl_ITransformOperations::Rotate2D (Handle(GEOM_Object) theObject,
|
||||||
|
Handle(GEOM_Object) theAxis,
|
||||||
|
Standard_Integer theNbObjects,
|
||||||
|
double theRadialStep,
|
||||||
|
Standard_Integer theNbSteps)
|
||||||
|
{
|
||||||
|
SetErrorCode(KO);
|
||||||
|
|
||||||
|
if (theObject.IsNull()) return NULL;
|
||||||
|
|
||||||
|
Handle(GEOM_Function) aFunction, aLastFunction = theObject->GetLastFunction();
|
||||||
|
if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be rotated
|
||||||
|
|
||||||
|
//Add a new Copy object
|
||||||
|
Handle(GEOM_Object) aCopy = GetEngine()->AddObject(GetDocID(), theObject->GetType());
|
||||||
|
|
||||||
|
//Add a rotate function
|
||||||
|
aFunction = aCopy->AddFunction(GEOMImpl_RotateDriver::GetID(), ROTATE_2D);
|
||||||
|
if (aFunction.IsNull()) return NULL;
|
||||||
|
|
||||||
|
//Check if the function is set correctly
|
||||||
|
if (aFunction->GetDriverGUID() != GEOMImpl_RotateDriver::GetID()) return NULL;
|
||||||
|
|
||||||
|
double anAngle = 360. / (double)theNbObjects;
|
||||||
|
|
||||||
|
GEOMImpl_IRotate aRI (aFunction);
|
||||||
|
aRI.SetOriginal(aLastFunction);
|
||||||
|
if (!theAxis.IsNull())
|
||||||
|
aRI.SetAxis(theAxis->GetLastFunction());
|
||||||
|
aRI.SetAngle(anAngle);
|
||||||
|
aRI.SetNbIter1(theNbObjects);
|
||||||
|
aRI.SetStep(theRadialStep);
|
||||||
|
aRI.SetNbIter2(theNbSteps);
|
||||||
|
|
||||||
|
//Compute the translation
|
||||||
|
try {
|
||||||
|
#if OCC_VERSION_LARGE > 0x06010000
|
||||||
|
OCC_CATCH_SIGNALS;
|
||||||
|
#endif
|
||||||
|
if (!GetSolver()->ComputeFunction(aFunction)) {
|
||||||
|
SetErrorCode("Rotate driver failed");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Standard_Failure) {
|
||||||
|
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
|
||||||
|
SetErrorCode(aFail->GetMessageString());
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Make a Python command
|
||||||
|
GEOM::TPythonDump(aFunction) << aCopy << " = geompy.MultiRotate2DNbTimes("
|
||||||
|
<< theObject << ", " << theAxis << ", " << theNbObjects
|
||||||
|
<< ", " << theRadialStep << ", " << theNbSteps << ")";
|
||||||
|
|
||||||
|
SetErrorCode(OK);
|
||||||
|
return aCopy;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* Rotate2D (for MultiRotate2DByStep)
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
Handle(GEOM_Object) GEOMImpl_ITransformOperations::Rotate2D (Handle(GEOM_Object) theObject,
|
||||||
|
Handle(GEOM_Object) theAxis,
|
||||||
|
double theAngleStep,
|
||||||
|
Standard_Integer theNbTimes1,
|
||||||
|
double theStep,
|
||||||
|
Standard_Integer theNbTimes2)
|
||||||
|
{
|
||||||
|
SetErrorCode(KO);
|
||||||
|
|
||||||
|
if (theObject.IsNull()) return NULL;
|
||||||
|
|
||||||
|
Handle(GEOM_Function) aFunction, aLastFunction = theObject->GetLastFunction();
|
||||||
|
if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be rotated
|
||||||
|
|
||||||
|
//Add a new Copy object
|
||||||
|
Handle(GEOM_Object) aCopy = GetEngine()->AddObject(GetDocID(), theObject->GetType());
|
||||||
|
|
||||||
|
//Add a rotate function
|
||||||
|
aFunction = aCopy->AddFunction(GEOMImpl_RotateDriver::GetID(), ROTATE_2D);
|
||||||
|
if (aFunction.IsNull()) return NULL;
|
||||||
|
|
||||||
|
//Check if the function is set correctly
|
||||||
|
if (aFunction->GetDriverGUID() != GEOMImpl_RotateDriver::GetID()) return NULL;
|
||||||
|
|
||||||
|
//Convert angle into degrees
|
||||||
|
double anAngleStep = theAngleStep * 180. / M_PI;
|
||||||
|
|
||||||
|
GEOMImpl_IRotate aRI (aFunction);
|
||||||
|
aRI.SetOriginal(aLastFunction);
|
||||||
|
if (!theAxis.IsNull())
|
||||||
|
aRI.SetAxis(theAxis->GetLastFunction());
|
||||||
|
aRI.SetAngle(anAngleStep);
|
||||||
|
aRI.SetNbIter1(theNbTimes1);
|
||||||
|
aRI.SetStep(theStep);
|
||||||
|
aRI.SetNbIter2(theNbTimes2);
|
||||||
|
|
||||||
|
//Compute the translation
|
||||||
|
try {
|
||||||
|
#if OCC_VERSION_LARGE > 0x06010000
|
||||||
|
OCC_CATCH_SIGNALS;
|
||||||
|
#endif
|
||||||
|
if (!GetSolver()->ComputeFunction(aFunction)) {
|
||||||
|
SetErrorCode("Rotate driver failed");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Standard_Failure) {
|
||||||
|
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
|
||||||
|
SetErrorCode(aFail->GetMessageString());
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Make a Python command
|
||||||
|
GEOM::TPythonDump(aFunction)
|
||||||
|
<< aCopy << " = geompy.MultiRotate2DByStep(" << theObject << ", "
|
||||||
|
<< theAxis << ", " << anAngleStep << "*math.pi/180.0, "
|
||||||
|
<< theNbTimes1 << ", " << theStep << ", " << theNbTimes2 << ")";
|
||||||
|
|
||||||
SetErrorCode(OK);
|
SetErrorCode(OK);
|
||||||
return aCopy;
|
return aCopy;
|
||||||
@ -1858,7 +1994,7 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::RotateThreePoints (Handle(GEO
|
|||||||
if (theObject.IsNull() || theCentPoint.IsNull() || thePoint1.IsNull() || thePoint2.IsNull()) return NULL;
|
if (theObject.IsNull() || theCentPoint.IsNull() || thePoint1.IsNull() || thePoint2.IsNull()) return NULL;
|
||||||
|
|
||||||
Handle(GEOM_Function) aFunction, aLastFunction = theObject->GetLastFunction();
|
Handle(GEOM_Function) aFunction, aLastFunction = theObject->GetLastFunction();
|
||||||
if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be rotated
|
if (aLastFunction.IsNull()) return NULL; //There is no function which creates an object to be rotated
|
||||||
|
|
||||||
// Get last functions of the arguments
|
// Get last functions of the arguments
|
||||||
Handle(GEOM_Function) aCPF = theCentPoint->GetLastFunction();
|
Handle(GEOM_Function) aCPF = theCentPoint->GetLastFunction();
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
|
||||||
|
|
||||||
#ifndef _GEOMImpl_ITransformOperations_HXX_
|
#ifndef _GEOMImpl_ITransformOperations_HXX_
|
||||||
#define _GEOMImpl_ITransformOperations_HXX_
|
#define _GEOMImpl_ITransformOperations_HXX_
|
||||||
@ -154,6 +153,17 @@ class GEOMImpl_ITransformOperations : public GEOM_IOperations
|
|||||||
Handle(GEOM_Object) theAxis,
|
Handle(GEOM_Object) theAxis,
|
||||||
Standard_Integer theNbTimes);
|
Standard_Integer theNbTimes);
|
||||||
|
|
||||||
|
Standard_EXPORT Handle(GEOM_Object) Rotate1D (Handle(GEOM_Object) theObject,
|
||||||
|
Handle(GEOM_Object) theAxis,
|
||||||
|
double theAngleStep,
|
||||||
|
Standard_Integer theNbSteps);
|
||||||
|
|
||||||
|
Standard_EXPORT Handle(GEOM_Object) Rotate2D (Handle(GEOM_Object) theObject,
|
||||||
|
Handle(GEOM_Object) theAxis,
|
||||||
|
Standard_Integer theNbObjects,
|
||||||
|
double theRadialStep,
|
||||||
|
Standard_Integer theNbSteps);
|
||||||
|
|
||||||
Standard_EXPORT Handle(GEOM_Object) Rotate2D (Handle(GEOM_Object) theObject,
|
Standard_EXPORT Handle(GEOM_Object) Rotate2D (Handle(GEOM_Object) theObject,
|
||||||
Handle(GEOM_Object) theAxis,
|
Handle(GEOM_Object) theAxis,
|
||||||
double theAngle,
|
double theAngle,
|
||||||
|
@ -18,35 +18,41 @@
|
|||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
|
||||||
|
|
||||||
#include <Standard_Stream.hxx>
|
#include <Standard_Stream.hxx>
|
||||||
|
|
||||||
#include <GEOMImpl_RotateDriver.hxx>
|
#include <GEOMImpl_RotateDriver.hxx>
|
||||||
#include <GEOMImpl_IRotate.hxx>
|
#include <GEOMImpl_IRotate.hxx>
|
||||||
#include <GEOMImpl_Types.hxx>
|
#include <GEOMImpl_Types.hxx>
|
||||||
|
|
||||||
#include <GEOM_Function.hxx>
|
#include <GEOM_Function.hxx>
|
||||||
|
|
||||||
|
#include <GEOMUtils.hxx>
|
||||||
|
|
||||||
|
#include <BRepBuilderAPI_Transform.hxx>
|
||||||
|
#include <BRep_Builder.hxx>
|
||||||
|
#include <BRep_Tool.hxx>
|
||||||
|
#include <BRepGProp.hxx>
|
||||||
|
|
||||||
|
#include <TopAbs.hxx>
|
||||||
|
#include <TopExp.hxx>
|
||||||
|
#include <TopoDS.hxx>
|
||||||
|
#include <TopoDS_Shape.hxx>
|
||||||
|
#include <TopoDS_Vertex.hxx>
|
||||||
|
#include <TopoDS_Compound.hxx>
|
||||||
|
#include <TopoDS_Edge.hxx>
|
||||||
|
|
||||||
|
#include <GeomAPI_ProjectPointOnCurve.hxx>
|
||||||
|
#include <Geom_Line.hxx>
|
||||||
|
#include <GProp_GProps.hxx>
|
||||||
|
|
||||||
|
#include <Precision.hxx>
|
||||||
|
|
||||||
#include <gp_Trsf.hxx>
|
#include <gp_Trsf.hxx>
|
||||||
#include <gp_Pnt.hxx>
|
#include <gp_Pnt.hxx>
|
||||||
#include <gp_Vec.hxx>
|
#include <gp_Vec.hxx>
|
||||||
#include <gp_Dir.hxx>
|
#include <gp_Dir.hxx>
|
||||||
#include <gp_Ax1.hxx>
|
#include <gp_Ax1.hxx>
|
||||||
#include <BRepBuilderAPI_Transform.hxx>
|
|
||||||
#include <TopoDS.hxx>
|
|
||||||
#include <TopoDS_Vertex.hxx>
|
|
||||||
#include <TopoDS_Shape.hxx>
|
|
||||||
#include <TopoDS_Compound.hxx>
|
|
||||||
#include <TopAbs.hxx>
|
|
||||||
#include <TopExp.hxx>
|
|
||||||
#include <TopoDS_Vertex.hxx>
|
|
||||||
#include <TopoDS_Edge.hxx>
|
|
||||||
#include <BRep_Tool.hxx>
|
|
||||||
#include <BRep_Builder.hxx>
|
|
||||||
#include <GeomAPI_ProjectPointOnCurve.hxx>
|
|
||||||
#include <Geom_Line.hxx>
|
|
||||||
#include <GProp_GProps.hxx>
|
|
||||||
#include <BRepGProp.hxx>
|
|
||||||
#include <Precision.hxx>
|
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : GetID
|
//function : GetID
|
||||||
@ -92,13 +98,12 @@ Standard_Integer GEOMImpl_RotateDriver::Execute(TFunction_Logbook& log) const
|
|||||||
Handle(GEOM_Function) anAxis = RI.GetAxis();
|
Handle(GEOM_Function) anAxis = RI.GetAxis();
|
||||||
if (anAxis.IsNull()) return 0;
|
if (anAxis.IsNull()) return 0;
|
||||||
TopoDS_Shape A = anAxis->GetValue();
|
TopoDS_Shape A = anAxis->GetValue();
|
||||||
if (A.IsNull() || A.ShapeType() != TopAbs_EDGE) return 0;
|
gp_Vec aV = GEOMUtils::GetVector(A);
|
||||||
TopoDS_Edge anEdge = TopoDS::Edge(A);
|
TopoDS_Edge anEdge = TopoDS::Edge(A);
|
||||||
|
|
||||||
gp_Pnt aP1 = BRep_Tool::Pnt(TopExp::FirstVertex(anEdge));
|
gp_Pnt aP1 = BRep_Tool::Pnt(TopExp::FirstVertex(anEdge));
|
||||||
gp_Pnt aP2 = BRep_Tool::Pnt(TopExp::LastVertex(anEdge));
|
gp_Dir aDir (aV);
|
||||||
gp_Dir aDir(gp_Vec(aP1, aP2));
|
gp_Ax1 anAx1 (aP1, aDir);
|
||||||
gp_Ax1 anAx1(aP1, aDir);
|
|
||||||
Standard_Real anAngle = RI.GetAngle();
|
Standard_Real anAngle = RI.GetAngle();
|
||||||
if (fabs(anAngle) < Precision::Angular()) anAngle += 2.*M_PI; // NPAL19665,19769
|
if (fabs(anAngle) < Precision::Angular()) anAngle += 2.*M_PI; // NPAL19665,19769
|
||||||
aTrsf.SetRotation(anAx1, anAngle);
|
aTrsf.SetRotation(anAx1, anAngle);
|
||||||
@ -148,22 +153,24 @@ Standard_Integer GEOMImpl_RotateDriver::Execute(TFunction_Logbook& log) const
|
|||||||
TopLoc_Location aLocRes (aTrsfOrig);
|
TopLoc_Location aLocRes (aTrsfOrig);
|
||||||
aShape = anOriginal.Located(aLocRes);
|
aShape = anOriginal.Located(aLocRes);
|
||||||
}
|
}
|
||||||
else if (aType == ROTATE_1D) {
|
else if (aType == ROTATE_1D || aType == ROTATE_1D_STEP) {
|
||||||
//Get direction
|
//Get direction
|
||||||
|
gp_Pnt aP1 = gp::Origin();
|
||||||
|
gp_Dir D = gp::DZ();
|
||||||
Handle(GEOM_Function) anAxis = RI.GetAxis();
|
Handle(GEOM_Function) anAxis = RI.GetAxis();
|
||||||
if(anAxis.IsNull()) return 0;
|
if (!anAxis.IsNull()) {
|
||||||
TopoDS_Shape A = anAxis->GetValue();
|
TopoDS_Shape A = anAxis->GetValue();
|
||||||
if(A.IsNull() || A.ShapeType() != TopAbs_EDGE) return 0;
|
gp_Vec aV = GEOMUtils::GetVector(A);
|
||||||
TopoDS_Edge anEdge = TopoDS::Edge(A);
|
TopoDS_Edge anEdge = TopoDS::Edge(A);
|
||||||
|
aP1 = BRep_Tool::Pnt(TopExp::FirstVertex(anEdge));
|
||||||
gp_Pnt aP1 = BRep_Tool::Pnt(TopExp::FirstVertex(anEdge));
|
D = gp_Dir(aV);
|
||||||
gp_Pnt aP2 = BRep_Tool::Pnt(TopExp::LastVertex(anEdge));
|
}
|
||||||
gp_Dir D(gp_Vec(aP1, aP2));
|
gp_Ax1 AX1 (aP1, D);
|
||||||
|
|
||||||
gp_Ax1 AX1(aP1, D);
|
|
||||||
|
|
||||||
Standard_Integer nbtimes = RI.GetNbIter1();
|
Standard_Integer nbtimes = RI.GetNbIter1();
|
||||||
Standard_Real angle = 360.0/nbtimes;
|
Standard_Real angle = 360. / nbtimes;
|
||||||
|
if (aType == ROTATE_1D_STEP)
|
||||||
|
angle = RI.GetAngle();
|
||||||
|
|
||||||
TopoDS_Compound aCompound;
|
TopoDS_Compound aCompound;
|
||||||
BRep_Builder B;
|
BRep_Builder B;
|
||||||
@ -177,7 +184,7 @@ Standard_Integer GEOMImpl_RotateDriver::Execute(TFunction_Logbook& log) const
|
|||||||
B.Add(aCompound, anOriginal);
|
B.Add(aCompound, anOriginal);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
aTrsf.SetRotation(AX1, i*angle*M_PI/180.);
|
aTrsf.SetRotation(AX1, i * angle * M_PI / 180.);
|
||||||
//TopLoc_Location aLocRes (aTrsf * aTrsfOrig); // gp_Trsf::Multiply() has a bug
|
//TopLoc_Location aLocRes (aTrsf * aTrsfOrig); // gp_Trsf::Multiply() has a bug
|
||||||
gp_Trsf aTrsfNew (aTrsfOrig);
|
gp_Trsf aTrsfNew (aTrsfOrig);
|
||||||
aTrsfNew.PreMultiply(aTrsf);
|
aTrsfNew.PreMultiply(aTrsf);
|
||||||
@ -194,16 +201,17 @@ Standard_Integer GEOMImpl_RotateDriver::Execute(TFunction_Logbook& log) const
|
|||||||
}
|
}
|
||||||
else if (aType == ROTATE_2D) {
|
else if (aType == ROTATE_2D) {
|
||||||
//Get direction
|
//Get direction
|
||||||
|
gp_Pnt aP1 = gp::Origin();
|
||||||
|
gp_Dir D = gp::DZ();
|
||||||
Handle(GEOM_Function) anAxis = RI.GetAxis();
|
Handle(GEOM_Function) anAxis = RI.GetAxis();
|
||||||
if(anAxis.IsNull()) return 0;
|
if (!anAxis.IsNull()) {
|
||||||
TopoDS_Shape A = anAxis->GetValue();
|
TopoDS_Shape A = anAxis->GetValue();
|
||||||
if(A.IsNull() || A.ShapeType() != TopAbs_EDGE) return 0;
|
gp_Vec aV = GEOMUtils::GetVector(A);
|
||||||
TopoDS_Edge anEdge = TopoDS::Edge(A);
|
TopoDS_Edge anEdge = TopoDS::Edge(A);
|
||||||
gp_Pnt aP1 = BRep_Tool::Pnt(TopExp::FirstVertex(anEdge));
|
aP1 = BRep_Tool::Pnt(TopExp::FirstVertex(anEdge));
|
||||||
gp_Pnt aP2 = BRep_Tool::Pnt(TopExp::LastVertex(anEdge));
|
D = gp_Dir(aV);
|
||||||
gp_Dir D(gp_Vec(aP1, aP2));
|
}
|
||||||
|
gp_Ax1 AX1 (aP1, D);
|
||||||
gp_Ax1 AX1(aP1, D);
|
|
||||||
|
|
||||||
gp_Trsf aTrsf1;
|
gp_Trsf aTrsf1;
|
||||||
gp_Trsf aTrsf2;
|
gp_Trsf aTrsf2;
|
||||||
@ -274,7 +282,7 @@ Standard_Integer GEOMImpl_RotateDriver::Execute(TFunction_Logbook& log) const
|
|||||||
B.Add(aCompound, anOriginal.Located(aLocRes));
|
B.Add(aCompound, anOriginal.Located(aLocRes));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
aTrsf2.SetRotation(AX1, j*ang*M_PI/180.);
|
aTrsf2.SetRotation(AX1, j * ang * M_PI / 180.);
|
||||||
//TopLoc_Location aLocRes (aTrsf2 * aTrsf1 * aTrsfOrig); // gp_Trsf::Multiply() has a bug
|
//TopLoc_Location aLocRes (aTrsf2 * aTrsf1 * aTrsfOrig); // gp_Trsf::Multiply() has a bug
|
||||||
gp_Trsf aTrsfNew (aTrsfOrig);
|
gp_Trsf aTrsfNew (aTrsfOrig);
|
||||||
aTrsfNew.PreMultiply(aTrsf1);
|
aTrsfNew.PreMultiply(aTrsf1);
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
|
||||||
|
|
||||||
#include <Standard_Stream.hxx>
|
#include <Standard_Stream.hxx>
|
||||||
|
|
||||||
@ -173,13 +172,14 @@ Standard_Integer GEOMImpl_TranslateDriver::Execute(TFunction_Logbook& log) const
|
|||||||
B.MakeCompound( aCompound );
|
B.MakeCompound( aCompound );
|
||||||
|
|
||||||
Handle(GEOM_Function) aVector = TI.GetVector();
|
Handle(GEOM_Function) aVector = TI.GetVector();
|
||||||
if(aVector.IsNull()) return 0;
|
gp_Vec Vec = gp::DX();
|
||||||
TopoDS_Shape aV = aVector->GetValue();
|
if (!aVector.IsNull()) {
|
||||||
if(aV.IsNull() || aV.ShapeType() != TopAbs_EDGE) return 0;
|
TopoDS_Shape aV = aVector->GetValue();
|
||||||
TopoDS_Edge anEdge = TopoDS::Edge(aV);
|
if (aV.IsNull() || aV.ShapeType() != TopAbs_EDGE) return 0;
|
||||||
|
TopoDS_Edge anEdge = TopoDS::Edge(aV);
|
||||||
gp_Vec Vec(BRep_Tool::Pnt(TopExp::FirstVertex(anEdge)), BRep_Tool::Pnt(TopExp::LastVertex(anEdge)));
|
Vec = gp_Vec(BRep_Tool::Pnt(TopExp::FirstVertex(anEdge)), BRep_Tool::Pnt(TopExp::LastVertex(anEdge)));
|
||||||
Vec.Normalize();
|
Vec.Normalize();
|
||||||
|
}
|
||||||
|
|
||||||
TopLoc_Location aLocOrig = anOriginal.Location();
|
TopLoc_Location aLocOrig = anOriginal.Location();
|
||||||
gp_Trsf aTrsfOrig = aLocOrig.Transformation();
|
gp_Trsf aTrsfOrig = aLocOrig.Transformation();
|
||||||
@ -202,32 +202,36 @@ Standard_Integer GEOMImpl_TranslateDriver::Execute(TFunction_Logbook& log) const
|
|||||||
}
|
}
|
||||||
else if (aType == TRANSLATE_2D) {
|
else if (aType == TRANSLATE_2D) {
|
||||||
Standard_Integer nbtimes1 = TI.GetNbIter1(), nbtimes2 = TI.GetNbIter2();
|
Standard_Integer nbtimes1 = TI.GetNbIter1(), nbtimes2 = TI.GetNbIter2();
|
||||||
Standard_Real DX, DY, DZ, step1 = TI.GetStep1(), step2 = TI.GetStep2();
|
Standard_Real DX, DY, DZ, step1 = TI.GetStep1(), step2 = TI.GetStep2();
|
||||||
gp_Vec aVec;
|
|
||||||
Handle(GEOM_Function) aVector = TI.GetVector();
|
Handle(GEOM_Function) aVector = TI.GetVector();
|
||||||
if(aVector.IsNull()) return 0;
|
|
||||||
TopoDS_Shape aV = aVector->GetValue();
|
|
||||||
if(aV.IsNull() || aV.ShapeType() != TopAbs_EDGE) return 0;
|
|
||||||
TopoDS_Edge anEdge = TopoDS::Edge(aV);
|
|
||||||
|
|
||||||
gp_Vec Vec1(BRep_Tool::Pnt(TopExp::FirstVertex(anEdge)), BRep_Tool::Pnt(TopExp::LastVertex(anEdge)));
|
|
||||||
Vec1.Normalize();
|
|
||||||
|
|
||||||
Handle(GEOM_Function) aVector2 = TI.GetVector2();
|
Handle(GEOM_Function) aVector2 = TI.GetVector2();
|
||||||
if(aVector2.IsNull()) return 0;
|
|
||||||
aV = aVector2->GetValue();
|
|
||||||
if(aV.IsNull() || aV.ShapeType() != TopAbs_EDGE) return 0;
|
|
||||||
anEdge = TopoDS::Edge(aV);
|
|
||||||
|
|
||||||
gp_Vec Vec2(BRep_Tool::Pnt(TopExp::FirstVertex(anEdge)), BRep_Tool::Pnt(TopExp::LastVertex(anEdge)));
|
gp_Vec Vec1 = gp::DX();
|
||||||
Vec2.Normalize();
|
gp_Vec Vec2 = gp::DY();
|
||||||
|
|
||||||
|
if (!aVector.IsNull()) {
|
||||||
|
TopoDS_Shape aV = aVector->GetValue();
|
||||||
|
if (aV.IsNull() || aV.ShapeType() != TopAbs_EDGE) return 0;
|
||||||
|
TopoDS_Edge anEdge = TopoDS::Edge(aV);
|
||||||
|
Vec1 = gp_Vec(BRep_Tool::Pnt(TopExp::FirstVertex(anEdge)), BRep_Tool::Pnt(TopExp::LastVertex(anEdge)));
|
||||||
|
Vec1.Normalize();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!aVector2.IsNull()) {
|
||||||
|
TopoDS_Shape aV = aVector2->GetValue();
|
||||||
|
if (aV.IsNull() || aV.ShapeType() != TopAbs_EDGE) return 0;
|
||||||
|
TopoDS_Edge anEdge = TopoDS::Edge(aV);
|
||||||
|
Vec2 = gp_Vec(BRep_Tool::Pnt(TopExp::FirstVertex(anEdge)), BRep_Tool::Pnt(TopExp::LastVertex(anEdge)));
|
||||||
|
Vec2.Normalize();
|
||||||
|
}
|
||||||
|
|
||||||
TopoDS_Compound aCompound;
|
TopoDS_Compound aCompound;
|
||||||
BRep_Builder B;
|
BRep_Builder B;
|
||||||
B.MakeCompound( aCompound );
|
B.MakeCompound(aCompound);
|
||||||
|
|
||||||
TopLoc_Location aLocOrig = anOriginal.Location();
|
TopLoc_Location aLocOrig = anOriginal.Location();
|
||||||
gp_Trsf aTrsfOrig = aLocOrig.Transformation();
|
gp_Trsf aTrsfOrig = aLocOrig.Transformation();
|
||||||
|
gp_Vec aVec;
|
||||||
|
|
||||||
for (int i = 0; i < nbtimes1; i++) {
|
for (int i = 0; i < nbtimes1; i++) {
|
||||||
for (int j = 0; j < nbtimes2; j++) {
|
for (int j = 0; j < nbtimes2; j++) {
|
||||||
|
@ -153,6 +153,7 @@
|
|||||||
#define ROTATE_2D 4
|
#define ROTATE_2D 4
|
||||||
#define ROTATE_THREE_POINTS 5
|
#define ROTATE_THREE_POINTS 5
|
||||||
#define ROTATE_THREE_POINTS_COPY 6
|
#define ROTATE_THREE_POINTS_COPY 6
|
||||||
|
#define ROTATE_1D_STEP 7
|
||||||
|
|
||||||
#define MIRROR_PLANE 1
|
#define MIRROR_PLANE 1
|
||||||
#define MIRROR_PLANE_COPY 2
|
#define MIRROR_PLANE_COPY 2
|
||||||
|
@ -518,6 +518,52 @@ CORBA::Double GEOM_IMeasureOperations_i::GetMinDistance
|
|||||||
return GetOperations()->GetMinDistance(aShape1, aShape2, X1, Y1, Z1, X2, Y2, Z2);
|
return GetOperations()->GetMinDistance(aShape1, aShape2, X1, Y1, Z1, X2, Y2, Z2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* ClosestPoints
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
CORBA::Long GEOM_IMeasureOperations_i::ClosestPoints
|
||||||
|
(GEOM::GEOM_Object_ptr theShape1, GEOM::GEOM_Object_ptr theShape2,
|
||||||
|
GEOM::ListOfDouble_out theCoords)
|
||||||
|
{
|
||||||
|
//Set a not done flag
|
||||||
|
GetOperations()->SetNotDone();
|
||||||
|
|
||||||
|
// allocate the CORBA array
|
||||||
|
int nbSols = -1;
|
||||||
|
GEOM::ListOfDouble_var aDoublesArray = new GEOM::ListOfDouble();
|
||||||
|
|
||||||
|
//Get the reference shape
|
||||||
|
Handle(GEOM_Object) aShape1 = GetObjectImpl(theShape1);
|
||||||
|
Handle(GEOM_Object) aShape2 = GetObjectImpl(theShape2);
|
||||||
|
|
||||||
|
if (!aShape1.IsNull() && !aShape2.IsNull()) {
|
||||||
|
Handle(TColStd_HSequenceOfReal) aDoubles = new TColStd_HSequenceOfReal;
|
||||||
|
// Get shape parameters
|
||||||
|
//nbSols = GetOperations()->ClosestPoints(aShape1, aShape2, aDoubles);
|
||||||
|
//int nbDbls = aDoubles->Length();
|
||||||
|
//aDoublesArray->length(nbDbls);
|
||||||
|
//for (int id = 0; id < nbDbls; id++) {
|
||||||
|
// aDoublesArray[id] = aDoubles->Value(id + 1);
|
||||||
|
//}
|
||||||
|
// tmp
|
||||||
|
double X1, Y1, Z1, X2, Y2, Z2;
|
||||||
|
GetOperations()->GetMinDistance(aShape1, aShape2, X1, Y1, Z1, X2, Y2, Z2);
|
||||||
|
aDoublesArray->length(6);
|
||||||
|
aDoublesArray[0] = X1;
|
||||||
|
aDoublesArray[1] = Y1;
|
||||||
|
aDoublesArray[2] = Z1;
|
||||||
|
aDoublesArray[3] = X2;
|
||||||
|
aDoublesArray[4] = Y2;
|
||||||
|
aDoublesArray[5] = Z2;
|
||||||
|
nbSols = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
theCoords = aDoublesArray._retn();
|
||||||
|
return nbSols;
|
||||||
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
* PointCoordinates
|
* PointCoordinates
|
||||||
|
@ -103,6 +103,10 @@ class GEOM_I_EXPORT GEOM_IMeasureOperations_i :
|
|||||||
CORBA::Double& X1, CORBA::Double& Y1, CORBA::Double& Z1,
|
CORBA::Double& X1, CORBA::Double& Y1, CORBA::Double& Z1,
|
||||||
CORBA::Double& X2, CORBA::Double& Y2, CORBA::Double& Z2);
|
CORBA::Double& X2, CORBA::Double& Y2, CORBA::Double& Z2);
|
||||||
|
|
||||||
|
CORBA::Long ClosestPoints (GEOM::GEOM_Object_ptr theShape1,
|
||||||
|
GEOM::GEOM_Object_ptr theShape2,
|
||||||
|
GEOM::ListOfDouble_out theCoords);
|
||||||
|
|
||||||
void PointCoordinates (GEOM::GEOM_Object_ptr theShape,
|
void PointCoordinates (GEOM::GEOM_Object_ptr theShape,
|
||||||
CORBA::Double& X, CORBA::Double& Y, CORBA::Double& Z);
|
CORBA::Double& X, CORBA::Double& Y, CORBA::Double& Z);
|
||||||
|
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
|
||||||
|
|
||||||
#include <Standard_Stream.hxx>
|
#include <Standard_Stream.hxx>
|
||||||
|
|
||||||
@ -958,7 +957,7 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiTranslate1D
|
|||||||
|
|
||||||
//Get the vector of translation
|
//Get the vector of translation
|
||||||
Handle(GEOM_Object) aVector = GetObjectImpl(theVector);
|
Handle(GEOM_Object) aVector = GetObjectImpl(theVector);
|
||||||
if (aVector.IsNull()) return aGEOMObject._retn();
|
//if (aVector.IsNull()) return aGEOMObject._retn(); // DX by default
|
||||||
|
|
||||||
//Perform the translation
|
//Perform the translation
|
||||||
Handle(GEOM_Object) anObject =
|
Handle(GEOM_Object) anObject =
|
||||||
@ -992,11 +991,11 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiTranslate2D (GEOM::GEOM_
|
|||||||
|
|
||||||
//Get the vector1 of translation
|
//Get the vector1 of translation
|
||||||
Handle(GEOM_Object) aVector1 = GetObjectImpl(theVector1);
|
Handle(GEOM_Object) aVector1 = GetObjectImpl(theVector1);
|
||||||
if (aVector1.IsNull()) return aGEOMObject._retn();
|
//if (aVector1.IsNull()) return aGEOMObject._retn(); // DX by default
|
||||||
|
|
||||||
//Get the vector2 of translation
|
//Get the vector2 of translation
|
||||||
Handle(GEOM_Object) aVector2 = GetObjectImpl(theVector2);
|
Handle(GEOM_Object) aVector2 = GetObjectImpl(theVector2);
|
||||||
if (aVector2.IsNull()) return aGEOMObject._retn();
|
//if (aVector2.IsNull()) return aGEOMObject._retn(); // DY by default
|
||||||
|
|
||||||
//Perform the translation
|
//Perform the translation
|
||||||
Handle(GEOM_Object) anObject = GetOperations()->Translate2D
|
Handle(GEOM_Object) anObject = GetOperations()->Translate2D
|
||||||
@ -1026,7 +1025,7 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiRotate1D (GEOM::GEOM_Obj
|
|||||||
|
|
||||||
//Get the a directon of rotation
|
//Get the a directon of rotation
|
||||||
Handle(GEOM_Object) aVector = GetObjectImpl(theVector);
|
Handle(GEOM_Object) aVector = GetObjectImpl(theVector);
|
||||||
if (aVector.IsNull()) return aGEOMObject._retn();
|
//if (aVector.IsNull()) return aGEOMObject._retn(); // DZ by default
|
||||||
|
|
||||||
//Perform the rotation
|
//Perform the rotation
|
||||||
Handle(GEOM_Object) anObject = GetOperations()->Rotate1D(aBasicObject, aVector, theNbTimes);
|
Handle(GEOM_Object) anObject = GetOperations()->Rotate1D(aBasicObject, aVector, theNbTimes);
|
||||||
@ -1035,6 +1034,101 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiRotate1D (GEOM::GEOM_Obj
|
|||||||
return GetObject(anObject);
|
return GetObject(anObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* MultiRotate1DByStep
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiRotate1DByStep (GEOM::GEOM_Object_ptr theObject,
|
||||||
|
GEOM::GEOM_Object_ptr theVector,
|
||||||
|
CORBA::Double theAngleStep,
|
||||||
|
CORBA::Long theNbSteps)
|
||||||
|
{
|
||||||
|
//Set a not done flag
|
||||||
|
GetOperations()->SetNotDone();
|
||||||
|
|
||||||
|
GEOM::GEOM_Object_var aGEOMObject;
|
||||||
|
|
||||||
|
//Get the object itself
|
||||||
|
Handle(GEOM_Object) aBasicObject = GetObjectImpl(theObject);
|
||||||
|
if (aBasicObject.IsNull()) return aGEOMObject._retn();
|
||||||
|
|
||||||
|
//Get the a directon of rotation
|
||||||
|
Handle(GEOM_Object) aVector = GetObjectImpl(theVector);
|
||||||
|
//if (aVector.IsNull()) return aGEOMObject._retn(); // DZ by default
|
||||||
|
|
||||||
|
//Perform the rotation
|
||||||
|
Handle(GEOM_Object) anObject = GetOperations()->Rotate1D(aBasicObject, aVector, theAngleStep, theNbSteps);
|
||||||
|
if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn();
|
||||||
|
|
||||||
|
return GetObject(anObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* MultiRotate2DNbTimes
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiRotate2DNbTimes (GEOM::GEOM_Object_ptr theObject,
|
||||||
|
GEOM::GEOM_Object_ptr theVector,
|
||||||
|
CORBA::Long theNbObjects,
|
||||||
|
CORBA::Double theRadialStep,
|
||||||
|
CORBA::Long theNbSteps)
|
||||||
|
{
|
||||||
|
//Set a not done flag
|
||||||
|
GetOperations()->SetNotDone();
|
||||||
|
|
||||||
|
GEOM::GEOM_Object_var aGEOMObject;
|
||||||
|
|
||||||
|
//Get the object itself
|
||||||
|
Handle(GEOM_Object) aBasicObject = GetObjectImpl(theObject);
|
||||||
|
if (aBasicObject.IsNull()) return aGEOMObject._retn();
|
||||||
|
|
||||||
|
//Get the a directon of rotation
|
||||||
|
Handle(GEOM_Object) aVector = GetObjectImpl(theVector);
|
||||||
|
//if (aVector.IsNull()) return aGEOMObject._retn(); // DZ by default
|
||||||
|
|
||||||
|
//Perform the rotation
|
||||||
|
Handle(GEOM_Object) anObject = GetOperations()->Rotate2D
|
||||||
|
(aBasicObject, aVector, theNbObjects, theRadialStep, theNbSteps);
|
||||||
|
if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn();
|
||||||
|
|
||||||
|
return GetObject(anObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* MultiRotate2DByStep
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiRotate2DByStep (GEOM::GEOM_Object_ptr theObject,
|
||||||
|
GEOM::GEOM_Object_ptr theVector,
|
||||||
|
CORBA::Double theAngle,
|
||||||
|
CORBA::Long theNbTimes1,
|
||||||
|
CORBA::Double theStep,
|
||||||
|
CORBA::Long theNbTimes2)
|
||||||
|
{
|
||||||
|
//Set a not done flag
|
||||||
|
GetOperations()->SetNotDone();
|
||||||
|
|
||||||
|
GEOM::GEOM_Object_var aGEOMObject;
|
||||||
|
|
||||||
|
//Get the object itself
|
||||||
|
Handle(GEOM_Object) aBasicObject = GetObjectImpl(theObject);
|
||||||
|
if (aBasicObject.IsNull()) return aGEOMObject._retn();
|
||||||
|
|
||||||
|
//Get the a directon of rotation
|
||||||
|
Handle(GEOM_Object) aVector = GetObjectImpl(theVector);
|
||||||
|
//if (aVector.IsNull()) return aGEOMObject._retn(); // DZ by default
|
||||||
|
|
||||||
|
//Perform the rotation
|
||||||
|
Handle(GEOM_Object) anObject = GetOperations()->Rotate2D
|
||||||
|
(aBasicObject, aVector, theAngle, theNbTimes1, theStep, theNbTimes2);
|
||||||
|
if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn();
|
||||||
|
|
||||||
|
return GetObject(anObject);
|
||||||
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
* MultiRotate2D
|
* MultiRotate2D
|
||||||
@ -1058,11 +1152,13 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiRotate2D (GEOM::GEOM_Obj
|
|||||||
|
|
||||||
//Get the a directon of rotation
|
//Get the a directon of rotation
|
||||||
Handle(GEOM_Object) aVector = GetObjectImpl(theVector);
|
Handle(GEOM_Object) aVector = GetObjectImpl(theVector);
|
||||||
if (aVector.IsNull()) return aGEOMObject._retn();
|
//if (aVector.IsNull()) return aGEOMObject._retn(); // DZ by default
|
||||||
|
|
||||||
|
double anAngle = M_PI * theAngle / 180.;
|
||||||
|
|
||||||
//Perform the rotation
|
//Perform the rotation
|
||||||
Handle(GEOM_Object) anObject = GetOperations()->Rotate2D
|
Handle(GEOM_Object) anObject = GetOperations()->Rotate2D
|
||||||
(aBasicObject, aVector, theAngle, theNbTimes1, theStep, theNbTimes2);
|
(aBasicObject, aVector, anAngle, theNbTimes1, theStep, theNbTimes2);
|
||||||
if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn();
|
if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn();
|
||||||
|
|
||||||
return GetObject(anObject);
|
return GetObject(anObject);
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
|
||||||
|
|
||||||
#ifndef _GEOM_ITransformOperations_i_HeaderFile
|
#ifndef _GEOM_ITransformOperations_i_HeaderFile
|
||||||
#define _GEOM_ITransformOperations_i_HeaderFile
|
#define _GEOM_ITransformOperations_i_HeaderFile
|
||||||
@ -39,17 +38,17 @@ class GEOM_I_EXPORT GEOM_ITransformOperations_i :
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
GEOM_ITransformOperations_i (PortableServer::POA_ptr thePOA,
|
GEOM_ITransformOperations_i (PortableServer::POA_ptr thePOA,
|
||||||
GEOM::GEOM_Gen_ptr theEngine,
|
GEOM::GEOM_Gen_ptr theEngine,
|
||||||
::GEOMImpl_ITransformOperations* theImpl);
|
::GEOMImpl_ITransformOperations* theImpl);
|
||||||
~GEOM_ITransformOperations_i();
|
~GEOM_ITransformOperations_i();
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr TranslateTwoPoints (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr TranslateTwoPoints (GEOM::GEOM_Object_ptr theObject,
|
||||||
GEOM::GEOM_Object_ptr thePoint1,
|
GEOM::GEOM_Object_ptr thePoint1,
|
||||||
GEOM::GEOM_Object_ptr thePoint2);
|
GEOM::GEOM_Object_ptr thePoint2);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr TranslateTwoPointsCopy (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr TranslateTwoPointsCopy (GEOM::GEOM_Object_ptr theObject,
|
||||||
GEOM::GEOM_Object_ptr thePoint1,
|
GEOM::GEOM_Object_ptr thePoint1,
|
||||||
GEOM::GEOM_Object_ptr thePoint2);
|
GEOM::GEOM_Object_ptr thePoint2);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr TranslateDXDYDZ (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr TranslateDXDYDZ (GEOM::GEOM_Object_ptr theObject,
|
||||||
CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ);
|
CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ);
|
||||||
@ -59,15 +58,15 @@ class GEOM_I_EXPORT GEOM_ITransformOperations_i :
|
|||||||
CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ);
|
CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr TranslateVector (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr TranslateVector (GEOM::GEOM_Object_ptr theObject,
|
||||||
GEOM::GEOM_Object_ptr theVector);
|
GEOM::GEOM_Object_ptr theVector);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr TranslateVectorCopy (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr TranslateVectorCopy (GEOM::GEOM_Object_ptr theObject,
|
||||||
GEOM::GEOM_Object_ptr theVector);
|
GEOM::GEOM_Object_ptr theVector);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr TranslateVectorDistance (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr TranslateVectorDistance (GEOM::GEOM_Object_ptr theObject,
|
||||||
GEOM::GEOM_Object_ptr theVector,
|
GEOM::GEOM_Object_ptr theVector,
|
||||||
CORBA::Double theDistance,
|
CORBA::Double theDistance,
|
||||||
CORBA::Boolean theCopy);
|
CORBA::Boolean theCopy);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr MultiTranslate1D (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr MultiTranslate1D (GEOM::GEOM_Object_ptr theObject,
|
||||||
GEOM::GEOM_Object_ptr theVector,
|
GEOM::GEOM_Object_ptr theVector,
|
||||||
@ -81,93 +80,111 @@ class GEOM_I_EXPORT GEOM_ITransformOperations_i :
|
|||||||
|
|
||||||
GEOM::GEOM_Object_ptr Rotate (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr Rotate (GEOM::GEOM_Object_ptr theObject,
|
||||||
GEOM::GEOM_Object_ptr theAxis,
|
GEOM::GEOM_Object_ptr theAxis,
|
||||||
CORBA::Double theAngle);
|
CORBA::Double theAngle);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr MultiRotate1D (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr MultiRotate1D (GEOM::GEOM_Object_ptr theObject,
|
||||||
GEOM::GEOM_Object_ptr theVector,
|
GEOM::GEOM_Object_ptr theVector,
|
||||||
CORBA::Long theNbTimes);
|
CORBA::Long theNbTimes);
|
||||||
|
|
||||||
|
GEOM::GEOM_Object_ptr MultiRotate1DByStep (GEOM::GEOM_Object_ptr theObject,
|
||||||
|
GEOM::GEOM_Object_ptr theAxis,
|
||||||
|
CORBA::Double theAngleStep,
|
||||||
|
CORBA::Long theNbSteps);
|
||||||
|
|
||||||
|
GEOM::GEOM_Object_ptr MultiRotate2DNbTimes (GEOM::GEOM_Object_ptr theObject,
|
||||||
|
GEOM::GEOM_Object_ptr theAxis,
|
||||||
|
CORBA::Long theNbObjects,
|
||||||
|
CORBA::Double theRadialStep,
|
||||||
|
CORBA::Long theNbSteps);
|
||||||
|
|
||||||
|
GEOM::GEOM_Object_ptr MultiRotate2DByStep (GEOM::GEOM_Object_ptr theObject,
|
||||||
|
GEOM::GEOM_Object_ptr theVector,
|
||||||
|
CORBA::Double theAngle,
|
||||||
|
CORBA::Long theNbTimes1,
|
||||||
|
CORBA::Double theStep,
|
||||||
|
CORBA::Long theNbTimes2);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr MultiRotate2D (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr MultiRotate2D (GEOM::GEOM_Object_ptr theObject,
|
||||||
GEOM::GEOM_Object_ptr theVector,
|
GEOM::GEOM_Object_ptr theVector,
|
||||||
CORBA::Double theAngle,
|
CORBA::Double theAngle,
|
||||||
CORBA::Long theNbTimes1,
|
CORBA::Long theNbTimes1,
|
||||||
CORBA::Double theStep,
|
CORBA::Double theStep,
|
||||||
CORBA::Long theNbTimes2);
|
CORBA::Long theNbTimes2);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr RotateCopy (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr RotateCopy (GEOM::GEOM_Object_ptr theObject,
|
||||||
GEOM::GEOM_Object_ptr theAxis,
|
GEOM::GEOM_Object_ptr theAxis,
|
||||||
CORBA::Double theAngle);
|
CORBA::Double theAngle);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr MirrorPlane (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr MirrorPlane (GEOM::GEOM_Object_ptr theObject,
|
||||||
GEOM::GEOM_Object_ptr thePlane);
|
GEOM::GEOM_Object_ptr thePlane);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr MirrorPlaneCopy (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr MirrorPlaneCopy (GEOM::GEOM_Object_ptr theObject,
|
||||||
GEOM::GEOM_Object_ptr thePlane);
|
GEOM::GEOM_Object_ptr thePlane);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr MirrorAxis (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr MirrorAxis (GEOM::GEOM_Object_ptr theObject,
|
||||||
GEOM::GEOM_Object_ptr theAxis);
|
GEOM::GEOM_Object_ptr theAxis);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr MirrorAxisCopy (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr MirrorAxisCopy (GEOM::GEOM_Object_ptr theObject,
|
||||||
GEOM::GEOM_Object_ptr theAxis);
|
GEOM::GEOM_Object_ptr theAxis);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr MirrorPoint (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr MirrorPoint (GEOM::GEOM_Object_ptr theObject,
|
||||||
GEOM::GEOM_Object_ptr thePoint);
|
GEOM::GEOM_Object_ptr thePoint);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr MirrorPointCopy (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr MirrorPointCopy (GEOM::GEOM_Object_ptr theObject,
|
||||||
GEOM::GEOM_Object_ptr thePoint);
|
GEOM::GEOM_Object_ptr thePoint);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr OffsetShape (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr OffsetShape (GEOM::GEOM_Object_ptr theObject,
|
||||||
CORBA::Double theOffset);
|
CORBA::Double theOffset);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr OffsetShapeCopy (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr OffsetShapeCopy (GEOM::GEOM_Object_ptr theObject,
|
||||||
CORBA::Double theOffset);
|
CORBA::Double theOffset);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr ProjectShapeCopy (GEOM::GEOM_Object_ptr theSource,
|
GEOM::GEOM_Object_ptr ProjectShapeCopy (GEOM::GEOM_Object_ptr theSource,
|
||||||
GEOM::GEOM_Object_ptr theTarget);
|
GEOM::GEOM_Object_ptr theTarget);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr ScaleShape (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr ScaleShape (GEOM::GEOM_Object_ptr theObject,
|
||||||
GEOM::GEOM_Object_ptr thePoint,
|
GEOM::GEOM_Object_ptr thePoint,
|
||||||
CORBA::Double theFactor);
|
CORBA::Double theFactor);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr ScaleShapeCopy (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr ScaleShapeCopy (GEOM::GEOM_Object_ptr theObject,
|
||||||
GEOM::GEOM_Object_ptr thePoint,
|
GEOM::GEOM_Object_ptr thePoint,
|
||||||
CORBA::Double theFactor);
|
CORBA::Double theFactor);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr ScaleShapeAlongAxes (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr ScaleShapeAlongAxes (GEOM::GEOM_Object_ptr theObject,
|
||||||
GEOM::GEOM_Object_ptr thePoint,
|
GEOM::GEOM_Object_ptr thePoint,
|
||||||
CORBA::Double theFactorX,
|
CORBA::Double theFactorX,
|
||||||
CORBA::Double theFactorY,
|
CORBA::Double theFactorY,
|
||||||
CORBA::Double theFactorZ);
|
CORBA::Double theFactorZ);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr ScaleShapeAlongAxesCopy (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr ScaleShapeAlongAxesCopy (GEOM::GEOM_Object_ptr theObject,
|
||||||
GEOM::GEOM_Object_ptr thePoint,
|
GEOM::GEOM_Object_ptr thePoint,
|
||||||
CORBA::Double theFactorX,
|
CORBA::Double theFactorX,
|
||||||
CORBA::Double theFactorY,
|
CORBA::Double theFactorY,
|
||||||
CORBA::Double theFactorZ);
|
CORBA::Double theFactorZ);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr PositionShape (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr PositionShape (GEOM::GEOM_Object_ptr theObject,
|
||||||
GEOM::GEOM_Object_ptr theStartLCS,
|
GEOM::GEOM_Object_ptr theStartLCS,
|
||||||
GEOM::GEOM_Object_ptr theEndLCS);
|
GEOM::GEOM_Object_ptr theEndLCS);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr PositionShapeCopy (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr PositionShapeCopy (GEOM::GEOM_Object_ptr theObject,
|
||||||
GEOM::GEOM_Object_ptr theStartLCS,
|
GEOM::GEOM_Object_ptr theStartLCS,
|
||||||
GEOM::GEOM_Object_ptr theEndLCS);
|
GEOM::GEOM_Object_ptr theEndLCS);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr PositionAlongPath (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr PositionAlongPath (GEOM::GEOM_Object_ptr theObject,
|
||||||
GEOM::GEOM_Object_ptr thePath,
|
GEOM::GEOM_Object_ptr thePath,
|
||||||
CORBA::Double theDistance,
|
CORBA::Double theDistance,
|
||||||
CORBA::Boolean theCopy,
|
CORBA::Boolean theCopy,
|
||||||
CORBA::Boolean theReverse);
|
CORBA::Boolean theReverse);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr RotateThreePoints (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr RotateThreePoints (GEOM::GEOM_Object_ptr theObject,
|
||||||
GEOM::GEOM_Object_ptr theCentPoint,
|
GEOM::GEOM_Object_ptr theCentPoint,
|
||||||
GEOM::GEOM_Object_ptr thePoint1,
|
GEOM::GEOM_Object_ptr thePoint1,
|
||||||
GEOM::GEOM_Object_ptr thePoint2);
|
GEOM::GEOM_Object_ptr thePoint2);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr RotateThreePointsCopy (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr RotateThreePointsCopy (GEOM::GEOM_Object_ptr theObject,
|
||||||
GEOM::GEOM_Object_ptr theCentPoint,
|
GEOM::GEOM_Object_ptr theCentPoint,
|
||||||
GEOM::GEOM_Object_ptr thePoint1,
|
GEOM::GEOM_Object_ptr thePoint1,
|
||||||
GEOM::GEOM_Object_ptr thePoint2);
|
GEOM::GEOM_Object_ptr thePoint2);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr TransformLikeOtherCopy (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr TransformLikeOtherCopy (GEOM::GEOM_Object_ptr theObject,
|
||||||
GEOM::GEOM_Object_ptr theSample);
|
GEOM::GEOM_Object_ptr theSample);
|
||||||
|
@ -290,9 +290,8 @@ def TestAll (geompy, math):
|
|||||||
#Create Patterns
|
#Create Patterns
|
||||||
MultiTrans1D = geompy.MakeMultiTranslation1D(Fillet, vz, step1, nbtimes1)
|
MultiTrans1D = geompy.MakeMultiTranslation1D(Fillet, vz, step1, nbtimes1)
|
||||||
MultiTrans2D = geompy.MakeMultiTranslation2D(Fillet, vz, step1, nbtimes1, vy, step2, nbtimes2)
|
MultiTrans2D = geompy.MakeMultiTranslation2D(Fillet, vz, step1, nbtimes1, vy, step2, nbtimes2)
|
||||||
#!!!!Angle In Degree!!!!
|
MultiRot1D = geompy.MultiRotate1DNbTimes(Chamfer, vx, nbtimes1)
|
||||||
MultiRot1D = geompy.MultiRotate1D(Chamfer, vx, nbtimes1)
|
MultiRot2D = geompy.MultiRotate2DByStep(Chamfer, vx, angle1, nbtimes1, step1, nbtimes2)
|
||||||
MultiRot2D = geompy.MultiRotate2D(Chamfer, vx, angle, nbtimes1, step1, nbtimes2)
|
|
||||||
|
|
||||||
#Create Informations objects
|
#Create Informations objects
|
||||||
CDG = geompy.MakeCDG(Prism) #(GEOM_Object)->GEOM_Object
|
CDG = geompy.MakeCDG(Prism) #(GEOM_Object)->GEOM_Object
|
||||||
|
@ -186,8 +186,8 @@ def TestOtherOperations (geompy, math):
|
|||||||
pz = geompy.MakeVertex(0, 0, 100)
|
pz = geompy.MakeVertex(0, 0, 100)
|
||||||
vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
|
vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
|
||||||
|
|
||||||
MultiRot1D = geompy.MakeMultiRotation1D(f12, vy, pz, 6)
|
MultiRot1D = geompy.MakeMultiRotation1DNbTimes(f12, vy, pz, 6)
|
||||||
MultiRot2D = geompy.MakeMultiRotation2D(f12, vy, pz, 45, 6, 30, 3)
|
MultiRot2D = geompy.MakeMultiRotation2DByStep(f12, vy, pz, math.pi/4, 6, 30, 3)
|
||||||
|
|
||||||
id_MultiRot1D = geompy.addToStudy(MultiRot1D, "MakeMultiRotation1D")
|
id_MultiRot1D = geompy.addToStudy(MultiRot1D, "MakeMultiRotation1D")
|
||||||
id_MultiRot2D = geompy.addToStudy(MultiRot2D, "MakeMultiRotation2D")
|
id_MultiRot2D = geompy.addToStudy(MultiRot2D, "MakeMultiRotation2D")
|
||||||
|
@ -169,6 +169,7 @@
|
|||||||
## @defgroup l3_basic_op Basic Operations
|
## @defgroup l3_basic_op Basic Operations
|
||||||
## @defgroup l3_boolean Boolean Operations
|
## @defgroup l3_boolean Boolean Operations
|
||||||
## @defgroup l3_transform Transformation Operations
|
## @defgroup l3_transform Transformation Operations
|
||||||
|
## @defgroup l3_transform_d Transformation Operations deprecated methods
|
||||||
## @defgroup l3_local Local Operations (Fillet, Chamfer and other Features)
|
## @defgroup l3_local Local Operations (Fillet, Chamfer and other Features)
|
||||||
## @defgroup l3_blocks_op Blocks Operations
|
## @defgroup l3_blocks_op Blocks Operations
|
||||||
## @defgroup l3_healing Repairing Operations
|
## @defgroup l3_healing Repairing Operations
|
||||||
@ -7652,7 +7653,7 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
|||||||
|
|
||||||
## Translate the given object along the given vector a given number times
|
## Translate the given object along the given vector a given number times
|
||||||
# @param theObject The object to be translated.
|
# @param theObject The object to be translated.
|
||||||
# @param theVector Direction of the translation.
|
# @param theVector Direction of the translation. DX if None.
|
||||||
# @param theStep Distance to translate on.
|
# @param theStep Distance to translate on.
|
||||||
# @param theNbTimes Quantity of translations to be done.
|
# @param theNbTimes Quantity of translations to be done.
|
||||||
# @param theName Object name; when specified, this parameter is used
|
# @param theName Object name; when specified, this parameter is used
|
||||||
@ -7669,7 +7670,7 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
|||||||
|
|
||||||
Parameters:
|
Parameters:
|
||||||
theObject The object to be translated.
|
theObject The object to be translated.
|
||||||
theVector Direction of the translation.
|
theVector Direction of the translation. DX if None.
|
||||||
theStep Distance to translate on.
|
theStep Distance to translate on.
|
||||||
theNbTimes Quantity of translations to be done.
|
theNbTimes Quantity of translations to be done.
|
||||||
theName Object name; when specified, this parameter is used
|
theName Object name; when specified, this parameter is used
|
||||||
@ -7693,10 +7694,10 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
|||||||
|
|
||||||
## Conseqently apply two specified translations to theObject specified number of times.
|
## Conseqently apply two specified translations to theObject specified number of times.
|
||||||
# @param theObject The object to be translated.
|
# @param theObject The object to be translated.
|
||||||
# @param theVector1 Direction of the first translation.
|
# @param theVector1 Direction of the first translation. DX if None.
|
||||||
# @param theStep1 Step of the first translation.
|
# @param theStep1 Step of the first translation.
|
||||||
# @param theNbTimes1 Quantity of translations to be done along theVector1.
|
# @param theNbTimes1 Quantity of translations to be done along theVector1.
|
||||||
# @param theVector2 Direction of the second translation.
|
# @param theVector2 Direction of the second translation. DY if None.
|
||||||
# @param theStep2 Step of the second translation.
|
# @param theStep2 Step of the second translation.
|
||||||
# @param theNbTimes2 Quantity of translations to be done along theVector2.
|
# @param theNbTimes2 Quantity of translations to be done along theVector2.
|
||||||
# @param theName Object name; when specified, this parameter is used
|
# @param theName Object name; when specified, this parameter is used
|
||||||
@ -7714,10 +7715,10 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
|||||||
|
|
||||||
Parameters:
|
Parameters:
|
||||||
theObject The object to be translated.
|
theObject The object to be translated.
|
||||||
theVector1 Direction of the first translation.
|
theVector1 Direction of the first translation. DX if None.
|
||||||
theStep1 Step of the first translation.
|
theStep1 Step of the first translation.
|
||||||
theNbTimes1 Quantity of translations to be done along theVector1.
|
theNbTimes1 Quantity of translations to be done along theVector1.
|
||||||
theVector2 Direction of the second translation.
|
theVector2 Direction of the second translation. DY if None.
|
||||||
theStep2 Step of the second translation.
|
theStep2 Step of the second translation.
|
||||||
theNbTimes2 Quantity of translations to be done along theVector2.
|
theNbTimes2 Quantity of translations to be done along theVector2.
|
||||||
theName Object name; when specified, this parameter is used
|
theName Object name; when specified, this parameter is used
|
||||||
@ -7743,7 +7744,7 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
|||||||
## Rotate the given object around the given axis a given number times.
|
## Rotate the given object around the given axis a given number times.
|
||||||
# Rotation angle will be 2*PI/theNbTimes.
|
# Rotation angle will be 2*PI/theNbTimes.
|
||||||
# @param theObject The object to be rotated.
|
# @param theObject The object to be rotated.
|
||||||
# @param theAxis The rotation axis.
|
# @param theAxis The rotation axis. DZ if None.
|
||||||
# @param theNbTimes Quantity of rotations to be done.
|
# @param theNbTimes Quantity of rotations to be done.
|
||||||
# @param theName Object name; when specified, this parameter is used
|
# @param theName Object name; when specified, this parameter is used
|
||||||
# for result publication in the study. Otherwise, if automatic
|
# for result publication in the study. Otherwise, if automatic
|
||||||
@ -7753,14 +7754,14 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
|||||||
# shapes, obtained after each rotation.
|
# shapes, obtained after each rotation.
|
||||||
#
|
#
|
||||||
# @ref tui_multi_rotation "Example"
|
# @ref tui_multi_rotation "Example"
|
||||||
def MultiRotate1D(self, theObject, theAxis, theNbTimes, theName=None):
|
def MultiRotate1DNbTimes (self, theObject, theAxis, theNbTimes, theName=None):
|
||||||
"""
|
"""
|
||||||
Rotate the given object around the given axis a given number times.
|
Rotate the given object around the given axis a given number times.
|
||||||
Rotation angle will be 2*PI/theNbTimes.
|
Rotation angle will be 2*PI/theNbTimes.
|
||||||
|
|
||||||
Parameters:
|
Parameters:
|
||||||
theObject The object to be rotated.
|
theObject The object to be rotated.
|
||||||
theAxis The rotation axis.
|
theAxis The rotation axis. DZ if None.
|
||||||
theNbTimes Quantity of rotations to be done.
|
theNbTimes Quantity of rotations to be done.
|
||||||
theName Object name; when specified, this parameter is used
|
theName Object name; when specified, this parameter is used
|
||||||
for result publication in the study. Otherwise, if automatic
|
for result publication in the study. Otherwise, if automatic
|
||||||
@ -7771,26 +7772,68 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
|||||||
shapes, obtained after each rotation.
|
shapes, obtained after each rotation.
|
||||||
|
|
||||||
Example of usage:
|
Example of usage:
|
||||||
rot1d = geompy.MultiRotate1D(prism, vect, 4)
|
rot1d = geompy.MultiRotate1DNbTimes(prism, vect, 4)
|
||||||
"""
|
"""
|
||||||
# Example: see GEOM_TestAll.py
|
# Example: see GEOM_TestAll.py
|
||||||
theAxis, theNbTimes, Parameters = ParseParameters(theAxis, theNbTimes)
|
theNbTimes, Parameters = ParseParameters(theNbTimes)
|
||||||
anObj = self.TrsfOp.MultiRotate1D(theObject, theAxis, theNbTimes)
|
anObj = self.TrsfOp.MultiRotate1D(theObject, theAxis, theNbTimes)
|
||||||
RaiseIfFailed("MultiRotate1D", self.TrsfOp)
|
RaiseIfFailed("MultiRotate1DNbTimes", self.TrsfOp)
|
||||||
anObj.SetParameters(Parameters)
|
anObj.SetParameters(Parameters)
|
||||||
self._autoPublish(anObj, theName, "multirotation")
|
self._autoPublish(anObj, theName, "multirotation")
|
||||||
return anObj
|
return anObj
|
||||||
|
|
||||||
## Rotate the given object around the
|
## Rotate the given object around the given axis
|
||||||
# given axis on the given angle a given number
|
# a given number times on the given angle.
|
||||||
# times and multi-translate each rotation result.
|
# @param theObject The object to be rotated.
|
||||||
|
# @param theAxis The rotation axis. DZ if None.
|
||||||
|
# @param theAngleStep Rotation angle in radians.
|
||||||
|
# @param theNbTimes Quantity of rotations to be done.
|
||||||
|
# @param theName Object name; when specified, this parameter is used
|
||||||
|
# for result publication in the study. Otherwise, if automatic
|
||||||
|
# publication is switched on, default value is used for result name.
|
||||||
|
#
|
||||||
|
# @return New GEOM.GEOM_Object, containing compound of all the
|
||||||
|
# shapes, obtained after each rotation.
|
||||||
|
#
|
||||||
|
# @ref tui_multi_rotation "Example"
|
||||||
|
def MultiRotate1DByStep(self, theObject, theAxis, theAngleStep, theNbTimes, theName=None):
|
||||||
|
"""
|
||||||
|
Rotate the given object around the given axis
|
||||||
|
a given number times on the given angle.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
theObject The object to be rotated.
|
||||||
|
theAxis The rotation axis. DZ if None.
|
||||||
|
theAngleStep Rotation angle in radians.
|
||||||
|
theNbTimes Quantity of rotations to be done.
|
||||||
|
theName Object name; when specified, this parameter is used
|
||||||
|
for result publication in the study. Otherwise, if automatic
|
||||||
|
publication is switched on, default value is used for result name.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
New GEOM.GEOM_Object, containing compound of all the
|
||||||
|
shapes, obtained after each rotation.
|
||||||
|
|
||||||
|
Example of usage:
|
||||||
|
rot1d = geompy.MultiRotate1DByStep(prism, vect, math.pi/4, 4)
|
||||||
|
"""
|
||||||
|
# Example: see GEOM_TestAll.py
|
||||||
|
theAngleStep, theNbTimes, Parameters = ParseParameters(theAngleStep, theNbTimes)
|
||||||
|
anObj = self.TrsfOp.MultiRotate1DByStep(theObject, theAxis, theAngleStep, theNbTimes)
|
||||||
|
RaiseIfFailed("MultiRotate1DByStep", self.TrsfOp)
|
||||||
|
anObj.SetParameters(Parameters)
|
||||||
|
self._autoPublish(anObj, theName, "multirotation")
|
||||||
|
return anObj
|
||||||
|
|
||||||
|
## Rotate the given object around the given axis a given
|
||||||
|
# number times and multi-translate each rotation result.
|
||||||
|
# Rotation angle will be 2*PI/theNbTimes1.
|
||||||
# Translation direction passes through center of gravity
|
# Translation direction passes through center of gravity
|
||||||
# of rotated shape and its projection on the rotation axis.
|
# of rotated shape and its projection on the rotation axis.
|
||||||
# @param theObject The object to be rotated.
|
# @param theObject The object to be rotated.
|
||||||
# @param theAxis Rotation axis.
|
# @param theAxis Rotation axis. DZ if None.
|
||||||
# @param theAngle Rotation angle in degrees.
|
|
||||||
# @param theNbTimes1 Quantity of rotations to be done.
|
# @param theNbTimes1 Quantity of rotations to be done.
|
||||||
# @param theStep Translation distance.
|
# @param theRadialStep Translation distance.
|
||||||
# @param theNbTimes2 Quantity of translations to be done.
|
# @param theNbTimes2 Quantity of translations to be done.
|
||||||
# @param theName Object name; when specified, this parameter is used
|
# @param theName Object name; when specified, this parameter is used
|
||||||
# for result publication in the study. Otherwise, if automatic
|
# for result publication in the study. Otherwise, if automatic
|
||||||
@ -7800,7 +7843,7 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
|||||||
# shapes, obtained after each transformation.
|
# shapes, obtained after each transformation.
|
||||||
#
|
#
|
||||||
# @ref tui_multi_rotation "Example"
|
# @ref tui_multi_rotation "Example"
|
||||||
def MultiRotate2D(self, theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2, theName=None):
|
def MultiRotate2DNbTimes(self, theObject, theAxis, theNbTimes1, theRadialStep, theNbTimes2, theName=None):
|
||||||
"""
|
"""
|
||||||
Rotate the given object around the
|
Rotate the given object around the
|
||||||
given axis on the given angle a given number
|
given axis on the given angle a given number
|
||||||
@ -7810,10 +7853,9 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
|||||||
|
|
||||||
Parameters:
|
Parameters:
|
||||||
theObject The object to be rotated.
|
theObject The object to be rotated.
|
||||||
theAxis Rotation axis.
|
theAxis Rotation axis. DZ if None.
|
||||||
theAngle Rotation angle in degrees.
|
|
||||||
theNbTimes1 Quantity of rotations to be done.
|
theNbTimes1 Quantity of rotations to be done.
|
||||||
theStep Translation distance.
|
theRadialStep Translation distance.
|
||||||
theNbTimes2 Quantity of translations to be done.
|
theNbTimes2 Quantity of translations to be done.
|
||||||
theName Object name; when specified, this parameter is used
|
theName Object name; when specified, this parameter is used
|
||||||
for result publication in the study. Otherwise, if automatic
|
for result publication in the study. Otherwise, if automatic
|
||||||
@ -7827,6 +7869,163 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
|||||||
rot2d = geompy.MultiRotate2D(prism, vect, 60, 4, 50, 5)
|
rot2d = geompy.MultiRotate2D(prism, vect, 60, 4, 50, 5)
|
||||||
"""
|
"""
|
||||||
# Example: see GEOM_TestAll.py
|
# Example: see GEOM_TestAll.py
|
||||||
|
theNbTimes1, theRadialStep, theNbTimes2, Parameters = ParseParameters(theNbTimes1, theRadialStep, theNbTimes2)
|
||||||
|
anObj = self.TrsfOp.MultiRotate2DNbTimes(theObject, theAxis, theNbTimes1, theRadialStep, theNbTimes2)
|
||||||
|
RaiseIfFailed("MultiRotate2DNbTimes", self.TrsfOp)
|
||||||
|
anObj.SetParameters(Parameters)
|
||||||
|
self._autoPublish(anObj, theName, "multirotation")
|
||||||
|
return anObj
|
||||||
|
|
||||||
|
## Rotate the given object around the
|
||||||
|
# given axis on the given angle a given number
|
||||||
|
# times and multi-translate each rotation result.
|
||||||
|
# Translation direction passes through center of gravity
|
||||||
|
# of rotated shape and its projection on the rotation axis.
|
||||||
|
# @param theObject The object to be rotated.
|
||||||
|
# @param theAxis Rotation axis. DZ if None.
|
||||||
|
# @param theAngleStep Rotation angle in radians.
|
||||||
|
# @param theNbTimes1 Quantity of rotations to be done.
|
||||||
|
# @param theRadialStep Translation distance.
|
||||||
|
# @param theNbTimes2 Quantity of translations to be done.
|
||||||
|
# @param theName Object name; when specified, this parameter is used
|
||||||
|
# for result publication in the study. Otherwise, if automatic
|
||||||
|
# publication is switched on, default value is used for result name.
|
||||||
|
#
|
||||||
|
# @return New GEOM.GEOM_Object, containing compound of all the
|
||||||
|
# shapes, obtained after each transformation.
|
||||||
|
#
|
||||||
|
# @ref tui_multi_rotation "Example"
|
||||||
|
def MultiRotate2DByStep (self, theObject, theAxis, theAngleStep, theNbTimes1, theRadialStep, theNbTimes2, theName=None):
|
||||||
|
"""
|
||||||
|
Rotate the given object around the
|
||||||
|
given axis on the given angle a given number
|
||||||
|
times and multi-translate each rotation result.
|
||||||
|
Translation direction passes through center of gravity
|
||||||
|
of rotated shape and its projection on the rotation axis.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
theObject The object to be rotated.
|
||||||
|
theAxis Rotation axis. DZ if None.
|
||||||
|
theAngleStep Rotation angle in radians.
|
||||||
|
theNbTimes1 Quantity of rotations to be done.
|
||||||
|
theRadialStep Translation distance.
|
||||||
|
theNbTimes2 Quantity of translations to be done.
|
||||||
|
theName Object name; when specified, this parameter is used
|
||||||
|
for result publication in the study. Otherwise, if automatic
|
||||||
|
publication is switched on, default value is used for result name.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
New GEOM.GEOM_Object, containing compound of all the
|
||||||
|
shapes, obtained after each transformation.
|
||||||
|
|
||||||
|
Example of usage:
|
||||||
|
rot2d = geompy.MultiRotate2D(prism, vect, math.pi/3, 4, 50, 5)
|
||||||
|
"""
|
||||||
|
# Example: see GEOM_TestAll.py
|
||||||
|
theAngleStep, theNbTimes1, theRadialStep, theNbTimes2, Parameters = ParseParameters(theAngleStep, theNbTimes1, theRadialStep, theNbTimes2)
|
||||||
|
anObj = self.TrsfOp.MultiRotate2DByStep(theObject, theAxis, theAngleStep, theNbTimes1, theRadialStep, theNbTimes2)
|
||||||
|
RaiseIfFailed("MultiRotate2DByStep", self.TrsfOp)
|
||||||
|
anObj.SetParameters(Parameters)
|
||||||
|
self._autoPublish(anObj, theName, "multirotation")
|
||||||
|
return anObj
|
||||||
|
|
||||||
|
## The same, as MultiRotate1DNbTimes(), but axis is given by direction and point
|
||||||
|
#
|
||||||
|
# @ref swig_MakeMultiRotation "Example"
|
||||||
|
def MakeMultiRotation1DNbTimes(self, aShape, aDir, aPoint, aNbTimes, theName=None):
|
||||||
|
"""
|
||||||
|
The same, as geompy.MultiRotate1DNbTimes, but axis is given by direction and point
|
||||||
|
|
||||||
|
Example of usage:
|
||||||
|
pz = geompy.MakeVertex(0, 0, 100)
|
||||||
|
vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
|
||||||
|
MultiRot1D = geompy.MakeMultiRotation1DNbTimes(prism, vy, pz, 6)
|
||||||
|
"""
|
||||||
|
# Example: see GEOM_TestOthers.py
|
||||||
|
aVec = self.MakeLine(aPoint,aDir)
|
||||||
|
# note: auto-publishing is done in self.MultiRotate1D()
|
||||||
|
anObj = self.MultiRotate1DNbTimes(aShape, aVec, aNbTimes, theName)
|
||||||
|
return anObj
|
||||||
|
|
||||||
|
## The same, as MultiRotate1DByStep(), but axis is given by direction and point
|
||||||
|
#
|
||||||
|
# @ref swig_MakeMultiRotation "Example"
|
||||||
|
def MakeMultiRotation1DByStep(self, aShape, aDir, aPoint, anAngle, aNbTimes, theName=None):
|
||||||
|
"""
|
||||||
|
The same, as geompy.MultiRotate1D, but axis is given by direction and point
|
||||||
|
|
||||||
|
Example of usage:
|
||||||
|
pz = geompy.MakeVertex(0, 0, 100)
|
||||||
|
vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
|
||||||
|
MultiRot1D = geompy.MakeMultiRotation1DByStep(prism, vy, pz, math.pi/3, 6)
|
||||||
|
"""
|
||||||
|
# Example: see GEOM_TestOthers.py
|
||||||
|
aVec = self.MakeLine(aPoint,aDir)
|
||||||
|
# note: auto-publishing is done in self.MultiRotate1D()
|
||||||
|
anObj = self.MultiRotate1DByStep(aShape, aVec, anAngle, aNbTimes, theName)
|
||||||
|
return anObj
|
||||||
|
|
||||||
|
## The same, as MultiRotate2DNbTimes(), but axis is given by direction and point
|
||||||
|
#
|
||||||
|
# @ref swig_MakeMultiRotation "Example"
|
||||||
|
def MakeMultiRotation2DNbTimes(self, aShape, aDir, aPoint, nbtimes1, aStep, nbtimes2, theName=None):
|
||||||
|
"""
|
||||||
|
The same, as MultiRotate2DNbTimes(), but axis is given by direction and point
|
||||||
|
|
||||||
|
Example of usage:
|
||||||
|
pz = geompy.MakeVertex(0, 0, 100)
|
||||||
|
vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
|
||||||
|
MultiRot2D = geompy.MakeMultiRotation2DNbTimes(f12, vy, pz, 6, 30, 3)
|
||||||
|
"""
|
||||||
|
# Example: see GEOM_TestOthers.py
|
||||||
|
aVec = self.MakeLine(aPoint,aDir)
|
||||||
|
# note: auto-publishing is done in self.MultiRotate2DNbTimes()
|
||||||
|
anObj = self.MultiRotate2DNbTimes(aShape, aVec, nbtimes1, aStep, nbtimes2, theName)
|
||||||
|
return anObj
|
||||||
|
|
||||||
|
## The same, as MultiRotate2DByStep(), but axis is given by direction and point
|
||||||
|
#
|
||||||
|
# @ref swig_MakeMultiRotation "Example"
|
||||||
|
def MakeMultiRotation2DByStep(self, aShape, aDir, aPoint, anAngle, nbtimes1, aStep, nbtimes2, theName=None):
|
||||||
|
"""
|
||||||
|
The same, as MultiRotate2DByStep(), but axis is given by direction and point
|
||||||
|
|
||||||
|
Example of usage:
|
||||||
|
pz = geompy.MakeVertex(0, 0, 100)
|
||||||
|
vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
|
||||||
|
MultiRot2D = geompy.MakeMultiRotation2DByStep(f12, vy, pz, math.pi/4, 6, 30, 3)
|
||||||
|
"""
|
||||||
|
# Example: see GEOM_TestOthers.py
|
||||||
|
aVec = self.MakeLine(aPoint,aDir)
|
||||||
|
# note: auto-publishing is done in self.MultiRotate2D()
|
||||||
|
anObj = self.MultiRotate2DByStep(aShape, aVec, anAngle, nbtimes1, aStep, nbtimes2, theName)
|
||||||
|
return anObj
|
||||||
|
|
||||||
|
# end of l3_transform
|
||||||
|
## @}
|
||||||
|
|
||||||
|
## @addtogroup l3_transform_d
|
||||||
|
## @{
|
||||||
|
|
||||||
|
## Deprecated method. Use MultiRotate1DNbTimes instead.
|
||||||
|
def MultiRotate1D(self, theObject, theAxis, theNbTimes, theName=None):
|
||||||
|
"""
|
||||||
|
Deprecated method. Use MultiRotate1DNbTimes instead.
|
||||||
|
"""
|
||||||
|
print "The method MultiRotate1D is DEPRECATED. Use MultiRotate1DNbTimes instead."
|
||||||
|
return self.MultiRotate1DNbTimes(theObject, theAxis, theNbTimes, theName)
|
||||||
|
|
||||||
|
## The same, as MultiRotate2DByStep(), but theAngle is in degrees.
|
||||||
|
# This method is DEPRECATED. Use MultiRotate2DByStep() instead.
|
||||||
|
def MultiRotate2D(self, theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2, theName=None):
|
||||||
|
"""
|
||||||
|
The same, as MultiRotate2DByStep(), but theAngle is in degrees.
|
||||||
|
This method is DEPRECATED. Use MultiRotate2DByStep() instead.
|
||||||
|
|
||||||
|
Example of usage:
|
||||||
|
rot2d = geompy.MultiRotate2D(prism, vect, 60, 4, 50, 5)
|
||||||
|
"""
|
||||||
|
print "The method MultiRotate2D is DEPRECATED. Use MultiRotate2DByStep instead."
|
||||||
theAngle, theNbTimes1, theStep, theNbTimes2, Parameters = ParseParameters(theAngle, theNbTimes1, theStep, theNbTimes2)
|
theAngle, theNbTimes1, theStep, theNbTimes2, Parameters = ParseParameters(theAngle, theNbTimes1, theStep, theNbTimes2)
|
||||||
anObj = self.TrsfOp.MultiRotate2D(theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2)
|
anObj = self.TrsfOp.MultiRotate2D(theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2)
|
||||||
RaiseIfFailed("MultiRotate2D", self.TrsfOp)
|
RaiseIfFailed("MultiRotate2D", self.TrsfOp)
|
||||||
@ -7835,42 +8034,42 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
|||||||
return anObj
|
return anObj
|
||||||
|
|
||||||
## The same, as MultiRotate1D(), but axis is given by direction and point
|
## The same, as MultiRotate1D(), but axis is given by direction and point
|
||||||
#
|
# This method is DEPRECATED. Use MakeMultiRotation1DNbTimes instead.
|
||||||
# @ref swig_MakeMultiRotation "Example"
|
|
||||||
def MakeMultiRotation1D(self, aShape, aDir, aPoint, aNbTimes, theName=None):
|
def MakeMultiRotation1D(self, aShape, aDir, aPoint, aNbTimes, theName=None):
|
||||||
"""
|
"""
|
||||||
The same, as geompy.MultiRotate1D, but axis is given by direction and point
|
The same, as geompy.MultiRotate1D, but axis is given by direction and point.
|
||||||
|
This method is DEPRECATED. Use MakeMultiRotation1DNbTimes instead.
|
||||||
|
|
||||||
Example of usage:
|
Example of usage:
|
||||||
pz = geompy.MakeVertex(0, 0, 100)
|
pz = geompy.MakeVertex(0, 0, 100)
|
||||||
vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
|
vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
|
||||||
MultiRot1D = geompy.MakeMultiRotation1D(prism, vy, pz, 6)
|
MultiRot1D = geompy.MakeMultiRotation1D(prism, vy, pz, 6)
|
||||||
"""
|
"""
|
||||||
# Example: see GEOM_TestOthers.py
|
print "The method MakeMultiRotation1D is DEPRECATED. Use MakeMultiRotation1DNbTimes instead."
|
||||||
aVec = self.MakeLine(aPoint,aDir)
|
aVec = self.MakeLine(aPoint,aDir)
|
||||||
# note: auto-publishing is done in self.MultiRotate1D()
|
# note: auto-publishing is done in self.MultiRotate1D()
|
||||||
anObj = self.MultiRotate1D(aShape, aVec, aNbTimes, theName)
|
anObj = self.MultiRotate1D(aShape, aVec, aNbTimes, theName)
|
||||||
return anObj
|
return anObj
|
||||||
|
|
||||||
## The same, as MultiRotate2D(), but axis is given by direction and point
|
## The same, as MultiRotate2D(), but axis is given by direction and point
|
||||||
#
|
# This method is DEPRECATED. Use MakeMultiRotation2DByStep instead.
|
||||||
# @ref swig_MakeMultiRotation "Example"
|
|
||||||
def MakeMultiRotation2D(self, aShape, aDir, aPoint, anAngle, nbtimes1, aStep, nbtimes2, theName=None):
|
def MakeMultiRotation2D(self, aShape, aDir, aPoint, anAngle, nbtimes1, aStep, nbtimes2, theName=None):
|
||||||
"""
|
"""
|
||||||
The same, as MultiRotate2D(), but axis is given by direction and point
|
The same, as MultiRotate2D(), but axis is given by direction and point
|
||||||
|
This method is DEPRECATED. Use MakeMultiRotation2DByStep instead.
|
||||||
|
|
||||||
Example of usage:
|
Example of usage:
|
||||||
pz = geompy.MakeVertex(0, 0, 100)
|
pz = geompy.MakeVertex(0, 0, 100)
|
||||||
vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
|
vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
|
||||||
MultiRot2D = geompy.MakeMultiRotation2D(f12, vy, pz, 45, 6, 30, 3)
|
MultiRot2D = geompy.MakeMultiRotation2D(f12, vy, pz, 45, 6, 30, 3)
|
||||||
"""
|
"""
|
||||||
# Example: see GEOM_TestOthers.py
|
print "The method MakeMultiRotation2D is DEPRECATED. Use MakeMultiRotation2DByStep instead."
|
||||||
aVec = self.MakeLine(aPoint,aDir)
|
aVec = self.MakeLine(aPoint,aDir)
|
||||||
# note: auto-publishing is done in self.MultiRotate2D()
|
# note: auto-publishing is done in self.MultiRotate2D()
|
||||||
anObj = self.MultiRotate2D(aShape, aVec, anAngle, nbtimes1, aStep, nbtimes2, theName)
|
anObj = self.MultiRotate2D(aShape, aVec, anAngle, nbtimes1, aStep, nbtimes2, theName)
|
||||||
return anObj
|
return anObj
|
||||||
|
|
||||||
# end of l3_transform
|
# end of l3_transform_d
|
||||||
## @}
|
## @}
|
||||||
|
|
||||||
## @addtogroup l3_local
|
## @addtogroup l3_local
|
||||||
|
@ -162,7 +162,7 @@ void MeasureGUI_BndBoxDlg::ActivateThisDialog()
|
|||||||
this, SLOT(SelectionIntoArgument()));
|
this, SLOT(SelectionIntoArgument()));
|
||||||
|
|
||||||
globalSelection();
|
globalSelection();
|
||||||
displayPreview(true);
|
redisplayPreview();
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
|
@ -18,12 +18,11 @@
|
|||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
|
||||||
|
|
||||||
// GEOM GEOMGUI : GUI for Geometry component
|
// GEOM GEOMGUI : GUI for Geometry component
|
||||||
// File : MeasureGUI_DistanceDlg.cxx
|
// File : MeasureGUI_DistanceDlg.cxx
|
||||||
// Author : Nicolas REJNERI, Open CASCADE S.A.S.
|
// Author : Nicolas REJNERI, Open CASCADE S.A.S.
|
||||||
//
|
|
||||||
#include "MeasureGUI_DistanceDlg.h"
|
#include "MeasureGUI_DistanceDlg.h"
|
||||||
#include "MeasureGUI_Widgets.h"
|
#include "MeasureGUI_Widgets.h"
|
||||||
|
|
||||||
@ -36,6 +35,7 @@
|
|||||||
#include <SUIT_ResourceMgr.h>
|
#include <SUIT_ResourceMgr.h>
|
||||||
#include <SUIT_ViewWindow.h>
|
#include <SUIT_ViewWindow.h>
|
||||||
#include <SUIT_ViewManager.h>
|
#include <SUIT_ViewManager.h>
|
||||||
|
#include <SUIT_OverrideCursor.h>
|
||||||
#include <SOCC_Prs.h>
|
#include <SOCC_Prs.h>
|
||||||
#include <SOCC_ViewModel.h>
|
#include <SOCC_ViewModel.h>
|
||||||
#include <SalomeApp_Tools.h>
|
#include <SalomeApp_Tools.h>
|
||||||
@ -61,7 +61,7 @@
|
|||||||
// true to construct a modal dialog.
|
// true to construct a modal dialog.
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
MeasureGUI_DistanceDlg::MeasureGUI_DistanceDlg (GeometryGUI* GUI, QWidget* parent)
|
MeasureGUI_DistanceDlg::MeasureGUI_DistanceDlg (GeometryGUI* GUI, QWidget* parent)
|
||||||
: MeasureGUI_Skeleton(GUI, parent)
|
: GEOMBase_Skeleton(GUI, parent)
|
||||||
{
|
{
|
||||||
SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr();
|
SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr();
|
||||||
QPixmap image0 (aResMgr->loadPixmap("GEOM", tr("ICON_DLG_MINDIST")));
|
QPixmap image0 (aResMgr->loadPixmap("GEOM", tr("ICON_DLG_MINDIST")));
|
||||||
@ -72,8 +72,12 @@ MeasureGUI_DistanceDlg::MeasureGUI_DistanceDlg (GeometryGUI* GUI, QWidget* paren
|
|||||||
/***************************************************************/
|
/***************************************************************/
|
||||||
mainFrame()->GroupConstructors->setTitle(tr("GEOM_DISTANCE"));
|
mainFrame()->GroupConstructors->setTitle(tr("GEOM_DISTANCE"));
|
||||||
mainFrame()->RadioButton1->setIcon(image0);
|
mainFrame()->RadioButton1->setIcon(image0);
|
||||||
|
mainFrame()->RadioButton2->setAttribute(Qt::WA_DeleteOnClose);
|
||||||
|
mainFrame()->RadioButton2->close();
|
||||||
|
mainFrame()->RadioButton3->setAttribute(Qt::WA_DeleteOnClose);
|
||||||
|
mainFrame()->RadioButton3->close();
|
||||||
|
|
||||||
myGrp = new MeasureGUI_2Sel4LineEdit(centralWidget());
|
myGrp = new MeasureGUI_2Sel4LineEdit (centralWidget());
|
||||||
myGrp->GroupBox1->setTitle(tr("GEOM_MINDIST_OBJ"));
|
myGrp->GroupBox1->setTitle(tr("GEOM_MINDIST_OBJ"));
|
||||||
myGrp->TextLabel1->setText(tr("GEOM_OBJECT_I").arg("1"));
|
myGrp->TextLabel1->setText(tr("GEOM_OBJECT_I").arg("1"));
|
||||||
myGrp->TextLabel2->setText(tr("GEOM_OBJECT_I").arg("2"));
|
myGrp->TextLabel2->setText(tr("GEOM_OBJECT_I").arg("2"));
|
||||||
@ -90,12 +94,12 @@ MeasureGUI_DistanceDlg::MeasureGUI_DistanceDlg (GeometryGUI* GUI, QWidget* paren
|
|||||||
myGrp->LineEdit5->setReadOnly(true);
|
myGrp->LineEdit5->setReadOnly(true);
|
||||||
myGrp->LineEdit6->setReadOnly(true);
|
myGrp->LineEdit6->setReadOnly(true);
|
||||||
|
|
||||||
QVBoxLayout* layout = new QVBoxLayout(centralWidget());
|
QVBoxLayout* layout = new QVBoxLayout (centralWidget());
|
||||||
layout->setMargin(0); layout->setSpacing(6);
|
layout->setMargin(0); layout->setSpacing(6);
|
||||||
layout->addWidget(myGrp);
|
layout->addWidget(myGrp);
|
||||||
/***************************************************************/
|
/***************************************************************/
|
||||||
|
|
||||||
myHelpFileName = "using_measurement_tools_page.html#min_distance_anchor";
|
myHelpFileName = "min_distance_page.html";
|
||||||
|
|
||||||
// Initialisation
|
// Initialisation
|
||||||
Init();
|
Init();
|
||||||
@ -115,21 +119,69 @@ MeasureGUI_DistanceDlg::~MeasureGUI_DistanceDlg()
|
|||||||
//=================================================================================
|
//=================================================================================
|
||||||
void MeasureGUI_DistanceDlg::Init()
|
void MeasureGUI_DistanceDlg::Init()
|
||||||
{
|
{
|
||||||
// init variables
|
|
||||||
myGrp->LineEdit1->setText("");
|
|
||||||
myGrp->LineEdit2->setText("");
|
|
||||||
myObj = myObj2 = GEOM::GEOM_Object::_nil();
|
|
||||||
|
|
||||||
mySelBtn = myGrp->PushButton1;
|
|
||||||
mySelEdit = myGrp->LineEdit1;
|
|
||||||
|
|
||||||
myEditCurrentArgument = myGrp->LineEdit1;
|
myEditCurrentArgument = myGrp->LineEdit1;
|
||||||
|
|
||||||
// signals and slots connections
|
// signals and slots connections
|
||||||
connect(myGrp->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
|
connect(buttonOk(), SIGNAL(clicked()), this, SLOT(ClickOnOk()));
|
||||||
|
connect(buttonApply(), SIGNAL(clicked()), this, SLOT(ClickOnApply()));
|
||||||
|
|
||||||
|
connect(myGrp->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
|
||||||
connect(myGrp->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
|
connect(myGrp->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
|
||||||
|
|
||||||
MeasureGUI_Skeleton::Init();
|
connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
|
||||||
|
this, SLOT(SelectionIntoArgument()));
|
||||||
|
|
||||||
|
initName(tr("GEOM_DISTANCE"));
|
||||||
|
globalSelection();
|
||||||
|
SelectionIntoArgument();
|
||||||
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : ClickOnOk()
|
||||||
|
// purpose :
|
||||||
|
//=================================================================================
|
||||||
|
void MeasureGUI_DistanceDlg::ClickOnOk()
|
||||||
|
{
|
||||||
|
if (ClickOnApply())
|
||||||
|
ClickOnCancel();
|
||||||
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : ClickOnApply()
|
||||||
|
// purpose :
|
||||||
|
//=================================================================================
|
||||||
|
bool MeasureGUI_DistanceDlg::ClickOnApply()
|
||||||
|
{
|
||||||
|
if (!onAccept())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
initName();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : ActivateThisDialog()
|
||||||
|
// purpose :
|
||||||
|
//=================================================================================
|
||||||
|
void MeasureGUI_DistanceDlg::ActivateThisDialog()
|
||||||
|
{
|
||||||
|
GEOMBase_Skeleton::ActivateThisDialog();
|
||||||
|
|
||||||
|
connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
|
||||||
|
this, SLOT(SelectionIntoArgument()));
|
||||||
|
|
||||||
|
globalSelection();
|
||||||
|
redisplayPreview();
|
||||||
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : enterEvent()
|
||||||
|
// purpose :
|
||||||
|
//=================================================================================
|
||||||
|
void MeasureGUI_DistanceDlg::enterEvent(QEvent*)
|
||||||
|
{
|
||||||
|
if (!mainFrame()->GroupConstructors->isEnabled())
|
||||||
|
ActivateThisDialog();
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
@ -145,7 +197,7 @@ void MeasureGUI_DistanceDlg::SelectionIntoArgument()
|
|||||||
GEOM::GEOM_Object_var aSelectedObject = GEOM::GEOM_Object::_nil();
|
GEOM::GEOM_Object_var aSelectedObject = GEOM::GEOM_Object::_nil();
|
||||||
|
|
||||||
if (aSelList.Extent() > 0) {
|
if (aSelList.Extent() > 0) {
|
||||||
aSelectedObject = GEOMBase::ConvertIOinGEOMObject( aSelList.First() );
|
aSelectedObject = GEOMBase::ConvertIOinGEOMObject(aSelList.First());
|
||||||
}
|
}
|
||||||
|
|
||||||
// clear selection
|
// clear selection
|
||||||
@ -155,82 +207,19 @@ void MeasureGUI_DistanceDlg::SelectionIntoArgument()
|
|||||||
this, SLOT(SelectionIntoArgument()));
|
this, SLOT(SelectionIntoArgument()));
|
||||||
|
|
||||||
if (myEditCurrentArgument == myGrp->LineEdit1) {
|
if (myEditCurrentArgument == myGrp->LineEdit1) {
|
||||||
myObj = aSelectedObject;
|
myObj1 = aSelectedObject;
|
||||||
if (!myObj->_is_nil() && myObj2->_is_nil())
|
if (!myObj1->_is_nil() && myObj2->_is_nil())
|
||||||
myGrp->PushButton2->click();
|
myGrp->PushButton2->click();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
myObj2 = aSelectedObject;
|
myObj2 = aSelectedObject;
|
||||||
if (!myObj2->_is_nil() && myObj->_is_nil())
|
if (!myObj2->_is_nil() && myObj1->_is_nil())
|
||||||
myGrp->PushButton1->click();
|
myGrp->PushButton1->click();
|
||||||
}
|
}
|
||||||
|
|
||||||
processObject();
|
processObject();
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
|
||||||
// function : processObject()
|
|
||||||
// purpose : Fill dialogs fields in accordance with myObj and myObj2
|
|
||||||
//=================================================================================
|
|
||||||
void MeasureGUI_DistanceDlg::processObject()
|
|
||||||
{
|
|
||||||
myGrp->LineEdit1->setText(!myObj->_is_nil() ? GEOMBase::GetName(myObj ) : "");
|
|
||||||
myGrp->LineEdit2->setText(!myObj2->_is_nil() ? GEOMBase::GetName(myObj2) : "");
|
|
||||||
|
|
||||||
gp_Pnt aPnt1, aPnt2;
|
|
||||||
double aDist = 0.;
|
|
||||||
if (getParameters(aDist, aPnt1, aPnt2)) {
|
|
||||||
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
|
|
||||||
int aPrecision = resMgr->integerValue( "Geometry", "length_precision", 6 );
|
|
||||||
|
|
||||||
myGrp->LineEdit3->setText(DlgRef::PrintDoubleValue(aDist, aPrecision));
|
|
||||||
|
|
||||||
gp_XYZ aVec = aPnt2.XYZ() - aPnt1.XYZ();
|
|
||||||
myGrp->LineEdit4->setText(DlgRef::PrintDoubleValue(aVec.X(), aPrecision));
|
|
||||||
myGrp->LineEdit5->setText(DlgRef::PrintDoubleValue(aVec.Y(), aPrecision));
|
|
||||||
myGrp->LineEdit6->setText(DlgRef::PrintDoubleValue(aVec.Z(), aPrecision));
|
|
||||||
|
|
||||||
redisplayPreview();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
myGrp->LineEdit3->setText("");
|
|
||||||
myGrp->LineEdit4->setText("");
|
|
||||||
myGrp->LineEdit5->setText("");
|
|
||||||
myGrp->LineEdit6->setText("");
|
|
||||||
erasePreview();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//=================================================================================
|
|
||||||
// function : getParameters()
|
|
||||||
// purpose : Get distance between objects
|
|
||||||
//=================================================================================
|
|
||||||
bool MeasureGUI_DistanceDlg::getParameters (double& theDistance,
|
|
||||||
gp_Pnt& thePnt1,
|
|
||||||
gp_Pnt& thePnt2)
|
|
||||||
{
|
|
||||||
QString msg;
|
|
||||||
if (isValid(msg)) {
|
|
||||||
GEOM::GEOM_IMeasureOperations_var anOper = GEOM::GEOM_IMeasureOperations::_narrow( getOperation() );
|
|
||||||
|
|
||||||
try {
|
|
||||||
double x1, y1, z1, x2, y2, z2;
|
|
||||||
theDistance = anOper->GetMinDistance(myObj, myObj2, x1, y1, z1, x2, y2, z2);
|
|
||||||
|
|
||||||
thePnt1.SetCoord(x1, y1, z1);
|
|
||||||
thePnt2.SetCoord(x2, y2, z2);
|
|
||||||
}
|
|
||||||
catch(const SALOME::SALOME_Exception& e) {
|
|
||||||
SalomeApp_Tools::QtCatchCorbaException(e);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return anOper->IsDone();
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
// function : SetEditCurrentArgument()
|
// function : SetEditCurrentArgument()
|
||||||
// purpose :
|
// purpose :
|
||||||
@ -263,23 +252,64 @@ void MeasureGUI_DistanceDlg::SetEditCurrentArgument()
|
|||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
// function : LineEditReturnPressed()
|
// function : processObject()
|
||||||
// purpose :
|
// purpose : Fill dialogs fields in accordance with myObj1 and myObj2
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
void MeasureGUI_DistanceDlg::LineEditReturnPressed()
|
void MeasureGUI_DistanceDlg::processObject()
|
||||||
{
|
{
|
||||||
QLineEdit* send = (QLineEdit*)sender();
|
myGrp->LineEdit1->setText(!myObj1->_is_nil() ? GEOMBase::GetName(myObj1) : "");
|
||||||
|
myGrp->LineEdit2->setText(!myObj2->_is_nil() ? GEOMBase::GetName(myObj2) : "");
|
||||||
|
|
||||||
if (send == myGrp->LineEdit1 || send == myGrp->LineEdit2) {
|
gp_Pnt aPnt1, aPnt2;
|
||||||
myEditCurrentArgument = send;
|
double aDist = 0.;
|
||||||
|
if (getParameters(aDist, aPnt1, aPnt2)) {
|
||||||
|
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
|
||||||
|
int aPrecision = resMgr->integerValue( "Geometry", "length_precision", 6 );
|
||||||
|
|
||||||
LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
|
myGrp->LineEdit3->setText(DlgRef::PrintDoubleValue(aDist, aPrecision));
|
||||||
SALOME_ListIO aSelList;
|
|
||||||
aSelMgr->selectedObjects(aSelList);
|
|
||||||
|
|
||||||
if (GEOMBase::SelectionByNameInDialogs(this, myGrp->LineEdit1->text(), aSelList))
|
gp_XYZ aVec = aPnt2.XYZ() - aPnt1.XYZ();
|
||||||
myGrp->LineEdit1->setText(myGrp->LineEdit1->text());
|
myGrp->LineEdit4->setText(DlgRef::PrintDoubleValue(aVec.X(), aPrecision));
|
||||||
|
myGrp->LineEdit5->setText(DlgRef::PrintDoubleValue(aVec.Y(), aPrecision));
|
||||||
|
myGrp->LineEdit6->setText(DlgRef::PrintDoubleValue(aVec.Z(), aPrecision));
|
||||||
|
|
||||||
|
redisplayPreview();
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
myGrp->LineEdit3->setText("");
|
||||||
|
myGrp->LineEdit4->setText("");
|
||||||
|
myGrp->LineEdit5->setText("");
|
||||||
|
myGrp->LineEdit6->setText("");
|
||||||
|
erasePreview();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : getParameters()
|
||||||
|
// purpose : Get distance between objects
|
||||||
|
//=================================================================================
|
||||||
|
bool MeasureGUI_DistanceDlg::getParameters (double& theDistance, gp_Pnt& thePnt1, gp_Pnt& thePnt2)
|
||||||
|
{
|
||||||
|
QString msg;
|
||||||
|
if (isValid(msg)) {
|
||||||
|
GEOM::GEOM_IMeasureOperations_var anOper = GEOM::GEOM_IMeasureOperations::_narrow(getOperation());
|
||||||
|
|
||||||
|
try {
|
||||||
|
double x1, y1, z1, x2, y2, z2;
|
||||||
|
theDistance = anOper->GetMinDistance(myObj1, myObj2, x1, y1, z1, x2, y2, z2);
|
||||||
|
|
||||||
|
thePnt1.SetCoord(x1, y1, z1);
|
||||||
|
thePnt2.SetCoord(x2, y2, z2);
|
||||||
|
}
|
||||||
|
catch (const SALOME::SALOME_Exception& e) {
|
||||||
|
SalomeApp_Tools::QtCatchCorbaException(e);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return anOper->IsDone();
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
@ -289,46 +319,47 @@ void MeasureGUI_DistanceDlg::LineEditReturnPressed()
|
|||||||
SALOME_Prs* MeasureGUI_DistanceDlg::buildPrs()
|
SALOME_Prs* MeasureGUI_DistanceDlg::buildPrs()
|
||||||
{
|
{
|
||||||
double aDist = 0.;
|
double aDist = 0.;
|
||||||
gp_Pnt aPnt1(0, 0, 0), aPnt2(0, 0, 0);
|
gp_Pnt aPnt1 (0, 0, 0), aPnt2 (0, 0, 0);
|
||||||
|
|
||||||
SUIT_ViewWindow* vw = SUIT_Session::session()->activeApplication()->desktop()->activeWindow();
|
SUIT_ViewWindow* vw = SUIT_Session::session()->activeApplication()->desktop()->activeWindow();
|
||||||
|
|
||||||
if (myObj->_is_nil() || myObj2->_is_nil() ||
|
if (myObj1->_is_nil() || myObj2->_is_nil() ||
|
||||||
!getParameters(aDist, aPnt1, aPnt2) ||
|
!getParameters(aDist, aPnt1, aPnt2) ||
|
||||||
vw->getViewManager()->getType() != OCCViewer_Viewer::Type())
|
vw->getViewManager()->getType() != OCCViewer_Viewer::Type())
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (aDist <= 1.e-9) {
|
if (aDist <= 1.e-9) {
|
||||||
BRepBuilderAPI_MakeVertex aMaker(aPnt1);
|
BRepBuilderAPI_MakeVertex aMaker (aPnt1);
|
||||||
return getDisplayer()->BuildPrs(aMaker.Vertex());
|
return getDisplayer()->BuildPrs(aMaker.Vertex());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
BRepBuilderAPI_MakeEdge MakeEdge(aPnt1, aPnt2);
|
BRepBuilderAPI_MakeEdge MakeEdge (aPnt1, aPnt2);
|
||||||
TopoDS_Vertex aVert1 = BRepBuilderAPI_MakeVertex(aPnt1);
|
TopoDS_Vertex aVert1 = BRepBuilderAPI_MakeVertex(aPnt1);
|
||||||
TopoDS_Vertex aVert2 = BRepBuilderAPI_MakeVertex(aPnt2);
|
TopoDS_Vertex aVert2 = BRepBuilderAPI_MakeVertex(aPnt2);
|
||||||
|
|
||||||
QString aLabel;
|
QString aLabel;
|
||||||
aLabel.sprintf("%.1f", aDist);
|
aLabel.sprintf("%.1f", aDist);
|
||||||
|
|
||||||
gp_Pnt aPnt3((aPnt1.X() + aPnt2.X()) / 2,
|
gp_Pnt aPnt3 ((aPnt1.X() + aPnt2.X()) / 2,
|
||||||
(aPnt1.Y() + aPnt2.Y()) / 2,
|
(aPnt1.Y() + aPnt2.Y()) / 2,
|
||||||
(aPnt1.Z() + aPnt2.Z()) / 2);
|
(aPnt1.Z() + aPnt2.Z()) / 2);
|
||||||
|
|
||||||
gp_Vec va(aPnt3, aPnt1);
|
gp_Vec va (aPnt3, aPnt1);
|
||||||
gp_Vec vb(aPnt3, aPnt2);
|
gp_Vec vb (aPnt3, aPnt2);
|
||||||
|
|
||||||
if (va.IsParallel(vb, Precision::Angular())) {
|
if (va.IsParallel(vb, Precision::Angular())) {
|
||||||
aPnt3.SetY((aPnt1.Y() + aPnt2.Y()) / 2 + 100);
|
aPnt3.SetY((aPnt1.Y() + aPnt2.Y()) / 2 + 100);
|
||||||
aPnt3.SetZ((aPnt1.Z() + aPnt2.Z()) / 2);
|
aPnt3.SetZ((aPnt1.Z() + aPnt2.Z()) / 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
gce_MakePln gce_MP(aPnt1, aPnt2, aPnt3);
|
gce_MakePln gce_MP (aPnt1, aPnt2, aPnt3);
|
||||||
Handle(Geom_Plane) P = new Geom_Plane(gce_MP.Value());
|
Handle(Geom_Plane) P = new Geom_Plane (gce_MP.Value());
|
||||||
|
|
||||||
Handle(AIS_LengthDimension) anIO = new AIS_LengthDimension(
|
Handle(AIS_LengthDimension) anIO = new AIS_LengthDimension
|
||||||
aVert1, aVert2, P, aDist, TCollection_ExtendedString((Standard_CString)aLabel.toLatin1().constData()));
|
(aVert1, aVert2, P, aDist,
|
||||||
|
TCollection_ExtendedString((Standard_CString)aLabel.toLatin1().constData()));
|
||||||
anIO->SetArrowSize(aDist/20);
|
anIO->SetArrowSize(aDist/20);
|
||||||
|
|
||||||
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
|
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
|
||||||
@ -345,16 +376,76 @@ SALOME_Prs* MeasureGUI_DistanceDlg::buildPrs()
|
|||||||
return aPrs;
|
return aPrs;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch(Standard_Failure) {
|
catch (Standard_Failure) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : createOperation
|
||||||
|
// purpose :
|
||||||
|
//=================================================================================
|
||||||
|
GEOM::GEOM_IOperations_ptr MeasureGUI_DistanceDlg::createOperation()
|
||||||
|
{
|
||||||
|
return getGeomEngine()->GetIMeasureOperations(getStudyId());
|
||||||
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
// function : isValid()
|
// function : isValid()
|
||||||
// purpose :
|
// purpose :
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
bool MeasureGUI_DistanceDlg::isValid (QString& msg)
|
bool MeasureGUI_DistanceDlg::isValid (QString& msg)
|
||||||
{
|
{
|
||||||
return MeasureGUI_Skeleton::isValid(msg) && !myObj2->_is_nil();
|
return !myObj1->_is_nil() && !myObj2->_is_nil();
|
||||||
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : execute
|
||||||
|
// purpose :
|
||||||
|
//=================================================================================
|
||||||
|
bool MeasureGUI_DistanceDlg::execute (ObjectList& objects)
|
||||||
|
{
|
||||||
|
GEOM::GEOM_IMeasureOperations_var anOper = GEOM::GEOM_IMeasureOperations::_narrow(getOperation());
|
||||||
|
GEOM::GEOM_IBasicOperations_var aBasicOper = getGeomEngine()->GetIBasicOperations(getStudyId());
|
||||||
|
|
||||||
|
double x1, y1, z1, x2, y2, z2;
|
||||||
|
double aDist = anOper->GetMinDistance(myObj1, myObj2, x1, y1, z1, x2, y2, z2);
|
||||||
|
|
||||||
|
GEOM::GEOM_Object_var anObj1 = aBasicOper->MakePointXYZ(x1, y1, z1);
|
||||||
|
GEOM::GEOM_Object_var anObj2 = aBasicOper->MakePointXYZ(x2, y2, z2);
|
||||||
|
|
||||||
|
if (!anObj1->_is_nil() && !anObj2->_is_nil()) {
|
||||||
|
objects.push_back(anObj1._retn());
|
||||||
|
objects.push_back(anObj2._retn());
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : redisplayPreview()
|
||||||
|
// purpose :
|
||||||
|
//=================================================================================
|
||||||
|
void MeasureGUI_DistanceDlg::redisplayPreview()
|
||||||
|
{
|
||||||
|
QString aMess;
|
||||||
|
if (!isValid(aMess)) {
|
||||||
|
erasePreview(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
erasePreview(false);
|
||||||
|
|
||||||
|
try {
|
||||||
|
SUIT_OverrideCursor();
|
||||||
|
|
||||||
|
getDisplayer()->SetColor(Quantity_NOC_VIOLET);
|
||||||
|
getDisplayer()->SetToActivate(false);
|
||||||
|
|
||||||
|
if (SALOME_Prs* aPrs = buildPrs())
|
||||||
|
displayPreview(aPrs);
|
||||||
|
}
|
||||||
|
catch (const SALOME::SALOME_Exception& e) {
|
||||||
|
SalomeApp_Tools::QtCatchCorbaException(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,16 +18,15 @@
|
|||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
|
||||||
|
|
||||||
// GEOM GEOMGUI : GUI for Geometry component
|
// GEOM GEOMGUI : GUI for Geometry component
|
||||||
// File : MeasureGUI_DistanceDlg.h
|
// File : MeasureGUI_DistanceDlg.h
|
||||||
// Author : Nicolas REJNERI, Open CASCADE S.A.S.
|
// Author : Nicolas REJNERI, Open CASCADE S.A.S.
|
||||||
//
|
|
||||||
#ifndef MEASUREGUI_DISTANCEDLG_H
|
#ifndef MEASUREGUI_DISTANCEDLG_H
|
||||||
#define MEASUREGUI_DISTANCEDLG_H
|
#define MEASUREGUI_DISTANCEDLG_H
|
||||||
|
|
||||||
#include "MeasureGUI_Skeleton.h"
|
#include <GEOMBase_Skeleton.h>
|
||||||
|
|
||||||
class MeasureGUI_2Sel4LineEdit;
|
class MeasureGUI_2Sel4LineEdit;
|
||||||
class gp_Pnt;
|
class gp_Pnt;
|
||||||
@ -36,36 +35,41 @@ class gp_Pnt;
|
|||||||
// class : MeasureGUI_DistanceDlg
|
// class : MeasureGUI_DistanceDlg
|
||||||
// purpose :
|
// purpose :
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
|
class MeasureGUI_DistanceDlg : public GEOMBase_Skeleton
|
||||||
class MeasureGUI_DistanceDlg : public MeasureGUI_Skeleton
|
{
|
||||||
{
|
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
MeasureGUI_DistanceDlg( GeometryGUI*, QWidget* );
|
MeasureGUI_DistanceDlg (GeometryGUI*, QWidget*);
|
||||||
~MeasureGUI_DistanceDlg();
|
~MeasureGUI_DistanceDlg();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// redefined from GEOMBase_Helper and MeasureGUI_Skeleton
|
// redefined from GEOMBase_Helper and GEOMBase_Skeleton
|
||||||
|
virtual GEOM::GEOM_IOperations_ptr createOperation();
|
||||||
|
virtual bool isValid (QString&);
|
||||||
|
virtual bool execute (ObjectList&);
|
||||||
|
|
||||||
|
void redisplayPreview();
|
||||||
virtual void processObject();
|
virtual void processObject();
|
||||||
virtual SALOME_Prs* buildPrs();
|
virtual SALOME_Prs* buildPrs();
|
||||||
virtual void SelectionIntoArgument();
|
|
||||||
virtual void LineEditReturnPressed();
|
|
||||||
virtual void SetEditCurrentArgument();
|
|
||||||
virtual bool isValid( QString& );
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void Init();
|
void Init();
|
||||||
bool getParameters( double&,
|
void enterEvent (QEvent*);
|
||||||
gp_Pnt&,
|
bool getParameters (double&, gp_Pnt&, gp_Pnt&);
|
||||||
gp_Pnt& );
|
|
||||||
private:
|
private:
|
||||||
QLineEdit* myEditCurrentArgument;
|
GEOM::GEOM_Object_var myObj1;
|
||||||
QLineEdit* mySelEdit2;
|
|
||||||
QPushButton* mySelBtn2;
|
|
||||||
|
|
||||||
MeasureGUI_2Sel4LineEdit* myGrp;
|
|
||||||
GEOM::GEOM_Object_var myObj2;
|
GEOM::GEOM_Object_var myObj2;
|
||||||
|
|
||||||
|
MeasureGUI_2Sel4LineEdit* myGrp;
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void ClickOnOk();
|
||||||
|
bool ClickOnApply();
|
||||||
|
void ActivateThisDialog();
|
||||||
|
void SelectionIntoArgument();
|
||||||
|
void SetEditCurrentArgument();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MEASUREGUI_DISTANCEDLG_H
|
#endif // MEASUREGUI_DISTANCEDLG_H
|
||||||
|
@ -69,34 +69,29 @@ TransformationGUI_MultiRotationDlg::TransformationGUI_MultiRotationDlg
|
|||||||
mainFrame()->RadioButton3->setAttribute(Qt::WA_DeleteOnClose);
|
mainFrame()->RadioButton3->setAttribute(Qt::WA_DeleteOnClose);
|
||||||
mainFrame()->RadioButton3->close();
|
mainFrame()->RadioButton3->close();
|
||||||
|
|
||||||
GroupPoints = new DlgRef_2Sel1SpinInt(centralWidget());
|
bool isAngleStep = true;
|
||||||
GroupPoints->GroupBox1->setTitle(tr("GEOM_MULTIROTATION_SIMPLE"));
|
|
||||||
GroupPoints->TextLabel1->setText(tr("GEOM_MAIN_OBJECT"));
|
|
||||||
GroupPoints->TextLabel2->setText(tr("GEOM_VECTOR"));
|
|
||||||
GroupPoints->TextLabel3->setText(tr("GEOM_NB_TIMES"));
|
|
||||||
GroupPoints->PushButton1->setIcon(image2);
|
|
||||||
GroupPoints->PushButton2->setIcon(image2);
|
|
||||||
GroupPoints->LineEdit1->setReadOnly(true);
|
|
||||||
GroupPoints->LineEdit2->setReadOnly(true);
|
|
||||||
|
|
||||||
GroupDimensions = new DlgRef_2Sel4Spin1Check(centralWidget());
|
GroupArgs = new TransformationGUI_2Sel4Spin1Check (centralWidget());
|
||||||
GroupDimensions->GroupBox1->setTitle(tr("GEOM_MULTIROTATION_DOUBLE"));
|
GroupArgs->GroupBox1->setTitle(tr("GEOM_MULTIROTATION_DOUBLE"));
|
||||||
GroupDimensions->TextLabel1->setText(tr("GEOM_MAIN_OBJECT"));
|
GroupArgs->TextLabel1->setText(tr("GEOM_MAIN_OBJECT"));
|
||||||
GroupDimensions->TextLabel2->setText(tr("GEOM_VECTOR"));
|
GroupArgs->TextLabel2->setText(tr("GEOM_VECTOR"));
|
||||||
GroupDimensions->TextLabel3->setText(tr("GEOM_ANGLE"));
|
//GroupArgs->TextLabel3->setText(tr("GEOM_ANGLE_STEP"));
|
||||||
GroupDimensions->TextLabel4->setText(tr("GEOM_NB_TIMES"));
|
GroupArgs->CheckAngleStep->setText(tr("GEOM_ANGLE_STEP"));
|
||||||
GroupDimensions->TextLabel5->setText(tr("GEOM_STEP"));
|
GroupArgs->CheckAngleStep->setChecked(isAngleStep);
|
||||||
GroupDimensions->TextLabel6->setText(tr("GEOM_NB_TIMES"));
|
GroupArgs->TextLabel4->setText(tr("GEOM_NB_TIMES"));
|
||||||
GroupDimensions->CheckButton1->setText(tr("GEOM_REVERSE"));
|
GroupArgs->TextLabel5->setText(tr("GEOM_STEP_R"));
|
||||||
GroupDimensions->PushButton1->setIcon(image2);
|
GroupArgs->TextLabel6->setText(tr("GEOM_NB_TIMES"));
|
||||||
GroupDimensions->PushButton2->setIcon(image2);
|
GroupArgs->CheckButton1->setText(tr("GEOM_REVERSE"));
|
||||||
GroupDimensions->LineEdit1->setReadOnly(true);
|
GroupArgs->PushButton1->setIcon(image2);
|
||||||
GroupDimensions->LineEdit2->setReadOnly(true);
|
GroupArgs->PushButton2->setIcon(image2);
|
||||||
|
GroupArgs->LineEdit1->setReadOnly(true);
|
||||||
|
GroupArgs->LineEdit2->setReadOnly(true);
|
||||||
|
GroupArgs->SpinBox_DX1->setEnabled(isAngleStep);
|
||||||
|
GroupArgs->CheckButton1->setEnabled(isAngleStep);
|
||||||
|
|
||||||
QVBoxLayout* layout = new QVBoxLayout(centralWidget());
|
QVBoxLayout* layout = new QVBoxLayout(centralWidget());
|
||||||
layout->setMargin(0); layout->setSpacing(6);
|
layout->setMargin(0); layout->setSpacing(6);
|
||||||
layout->addWidget(GroupPoints);
|
layout->addWidget(GroupArgs);
|
||||||
layout->addWidget(GroupDimensions);
|
|
||||||
/***************************************************************/
|
/***************************************************************/
|
||||||
|
|
||||||
setHelpFileName("multi_rotation_operation_page.html");
|
setHelpFileName("multi_rotation_operation_page.html");
|
||||||
@ -119,38 +114,23 @@ TransformationGUI_MultiRotationDlg::~TransformationGUI_MultiRotationDlg()
|
|||||||
//=================================================================================
|
//=================================================================================
|
||||||
void TransformationGUI_MultiRotationDlg::Init()
|
void TransformationGUI_MultiRotationDlg::Init()
|
||||||
{
|
{
|
||||||
|
// init variables
|
||||||
|
myAng = 45.0;
|
||||||
|
myStep = 50.0;
|
||||||
|
myNbTimes1 = myNbTimes2 = 3;
|
||||||
|
|
||||||
// Get setting of step value from file configuration
|
// Get setting of step value from file configuration
|
||||||
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
|
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
|
||||||
double step = resMgr->doubleValue("Geometry", "SettingsGeomStep", 100);
|
double step = resMgr->doubleValue("Geometry", "SettingsGeomStep", 100);
|
||||||
|
|
||||||
int SpecificStep1 = 5;
|
int SpecificStep1 = 5;
|
||||||
int SpecificStep2 = 1;
|
int SpecificStep2 = 1;
|
||||||
// init variables
|
|
||||||
myAng = 45.0;
|
|
||||||
myStep = 50.0;
|
|
||||||
myNbTimes1 = myNbTimes2 = 2;
|
|
||||||
|
|
||||||
// min, max, step and decimals for spin boxes & initial values
|
// min, max, step and decimals for spin boxes & initial values
|
||||||
initSpinBox(GroupPoints->SpinBox_DX, 1, 999, SpecificStep2);
|
initSpinBox(GroupArgs->SpinBox_DX1, COORD_MIN, COORD_MAX, SpecificStep1, "angle_precision");
|
||||||
GroupPoints->SpinBox_DX->setValue(myNbTimes1);
|
initSpinBox(GroupArgs->SpinBox_DY1, 1, 999, SpecificStep2);
|
||||||
|
initSpinBox(GroupArgs->SpinBox_DX2, COORD_MIN, COORD_MAX, step, "length_precision");
|
||||||
initSpinBox(GroupDimensions->SpinBox_DX1, COORD_MIN, COORD_MAX, SpecificStep1, "angle_precision" );
|
initSpinBox(GroupArgs->SpinBox_DY2, 1, 999, SpecificStep2);
|
||||||
initSpinBox(GroupDimensions->SpinBox_DY1, 1, 999, SpecificStep2);
|
|
||||||
initSpinBox(GroupDimensions->SpinBox_DX2, COORD_MIN, COORD_MAX, step,"length_precision" );
|
|
||||||
initSpinBox(GroupDimensions->SpinBox_DY2, 1, 999, SpecificStep2);
|
|
||||||
GroupDimensions->SpinBox_DX1->setValue(myAng);
|
|
||||||
GroupDimensions->SpinBox_DY1->setValue(myNbTimes1);
|
|
||||||
GroupDimensions->SpinBox_DX2->setValue(myStep);
|
|
||||||
GroupDimensions->SpinBox_DY2->setValue(myNbTimes2);
|
|
||||||
|
|
||||||
GroupPoints->LineEdit1->setText("");
|
|
||||||
GroupPoints->LineEdit2->setText("");
|
|
||||||
|
|
||||||
GroupDimensions->LineEdit1->setText("");
|
|
||||||
GroupDimensions->LineEdit2->setText("");
|
|
||||||
|
|
||||||
myBase.nullify();
|
|
||||||
myVector.nullify();
|
|
||||||
|
|
||||||
mainFrame()->GroupBoxPublish->show();
|
mainFrame()->GroupBoxPublish->show();
|
||||||
|
|
||||||
@ -158,25 +138,23 @@ void TransformationGUI_MultiRotationDlg::Init()
|
|||||||
connect(buttonOk(), SIGNAL(clicked()), this, SLOT(ClickOnOk()));
|
connect(buttonOk(), SIGNAL(clicked()), this, SLOT(ClickOnOk()));
|
||||||
connect(buttonApply(), SIGNAL(clicked()), this, SLOT(ClickOnApply()));
|
connect(buttonApply(), SIGNAL(clicked()), this, SLOT(ClickOnApply()));
|
||||||
|
|
||||||
connect(this, SIGNAL(constructorsClicked(int)), this, SLOT(ConstructorsClicked(int)));
|
connect(this, SIGNAL(constructorsClicked(int)), this, SLOT(ConstructorsClicked(int)));
|
||||||
|
|
||||||
connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
|
connect(GroupArgs->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
|
||||||
connect(GroupPoints->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
|
connect(GroupArgs->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
|
||||||
connect(GroupDimensions->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
|
|
||||||
connect(GroupDimensions->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
|
|
||||||
|
|
||||||
connect(GroupPoints->SpinBox_DX, SIGNAL(valueChanged(int)), this, SLOT(ValueChangedInSpinBox(int)));
|
connect(GroupArgs->SpinBox_DX1, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
|
||||||
connect(GroupDimensions->SpinBox_DX1, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
|
connect(GroupArgs->SpinBox_DY1, SIGNAL(valueChanged(int)), this, SLOT(ValueChangedInSpinBox(int)));
|
||||||
connect(GroupDimensions->SpinBox_DY1, SIGNAL(valueChanged(int)), this, SLOT(ValueChangedInSpinBox(int)));
|
connect(GroupArgs->SpinBox_DX2, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
|
||||||
connect(GroupDimensions->SpinBox_DX2, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
|
connect(GroupArgs->SpinBox_DY2, SIGNAL(valueChanged(int)), this, SLOT(ValueChangedInSpinBox(int)));
|
||||||
connect(GroupDimensions->SpinBox_DY2, SIGNAL(valueChanged(int)), this, SLOT(ValueChangedInSpinBox(int)));
|
|
||||||
|
|
||||||
connect(GroupDimensions->SpinBox_DX1,SIGNAL(textChanged( const QString& )),
|
connect(GroupArgs->SpinBox_DX1, SIGNAL(textChanged(const QString&)),
|
||||||
this, SLOT(TextValueChangedInSpinBox( const QString& )));
|
this, SLOT(TextValueChangedInSpinBox(const QString&)));
|
||||||
|
|
||||||
connect(myGeomGUI, SIGNAL(SignalDefaultStepValueChanged(double)), this, SLOT(SetDoubleSpinBoxStep(double)));
|
connect(myGeomGUI, SIGNAL(SignalDefaultStepValueChanged(double)), this, SLOT(SetDoubleSpinBoxStep(double)));
|
||||||
|
|
||||||
connect(GroupDimensions->CheckButton1, SIGNAL(toggled(bool)), this, SLOT(ReverseAngle()));
|
connect(GroupArgs->CheckAngleStep, SIGNAL(toggled(bool)), this, SLOT(CheckAngleStep(bool)));
|
||||||
|
connect(GroupArgs->CheckButton1, SIGNAL(toggled(bool)), this, SLOT(ReverseAngle()));
|
||||||
|
|
||||||
initName(tr("GEOM_MULTIROTATION"));
|
initName(tr("GEOM_MULTIROTATION"));
|
||||||
|
|
||||||
@ -189,13 +167,7 @@ void TransformationGUI_MultiRotationDlg::Init()
|
|||||||
//=================================================================================
|
//=================================================================================
|
||||||
void TransformationGUI_MultiRotationDlg::SetDoubleSpinBoxStep (double step)
|
void TransformationGUI_MultiRotationDlg::SetDoubleSpinBoxStep (double step)
|
||||||
{
|
{
|
||||||
GroupDimensions->SpinBox_DX2->setSingleStep(step);
|
GroupArgs->SpinBox_DX2->setSingleStep(step);
|
||||||
|
|
||||||
// san: Commented so as not to override specific step settings
|
|
||||||
//GroupPoints->SpinBox_DX->setSingleStep((int)step);
|
|
||||||
//GroupDimensions->SpinBox_DX1->setSingleStep(step);
|
|
||||||
//GroupDimensions->SpinBox_DY1->setSingleStep((int)step);
|
|
||||||
//GroupDimensions->SpinBox_DY2->setSingleStep((int)step);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
@ -206,42 +178,42 @@ void TransformationGUI_MultiRotationDlg::ConstructorsClicked (int constructorId)
|
|||||||
{
|
{
|
||||||
disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
|
disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
|
||||||
|
|
||||||
|
myBase.nullify();
|
||||||
|
myVector.nullify();
|
||||||
|
|
||||||
|
GroupArgs->LineEdit1->setText("");
|
||||||
|
GroupArgs->LineEdit2->setText("");
|
||||||
|
|
||||||
|
GroupArgs->SpinBox_DX1->setValue(myAng);
|
||||||
|
GroupArgs->SpinBox_DY1->setValue(myNbTimes1);
|
||||||
|
GroupArgs->SpinBox_DX2->setValue(myStep);
|
||||||
|
GroupArgs->SpinBox_DY2->setValue(myNbTimes2);
|
||||||
|
|
||||||
switch (constructorId) {
|
switch (constructorId) {
|
||||||
case 0: // Rotate simple
|
case 0: // Rotate simple
|
||||||
{
|
{
|
||||||
GroupDimensions->hide();
|
GroupArgs->GroupBox1->setTitle(tr("GEOM_MULTIROTATION_SIMPLE"));
|
||||||
GroupPoints->show();
|
GroupArgs->TextLabel5->hide();
|
||||||
|
GroupArgs->TextLabel6->hide();
|
||||||
GroupPoints->LineEdit1->setText("");
|
GroupArgs->SpinBox_DX2->hide();
|
||||||
GroupPoints->LineEdit2->setText("");
|
GroupArgs->SpinBox_DY2->hide();
|
||||||
myBase.nullify();
|
GroupArgs->CheckButton1->hide();
|
||||||
myVector.nullify();
|
|
||||||
|
|
||||||
GroupPoints->SpinBox_DX->setValue(myNbTimes1);
|
|
||||||
|
|
||||||
GroupPoints->PushButton1->click();
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 1: // Rotate double
|
case 1: // Rotate double
|
||||||
{
|
{
|
||||||
GroupPoints->hide();
|
GroupArgs->GroupBox1->setTitle(tr("GEOM_MULTIROTATION_DOUBLE"));
|
||||||
GroupDimensions->show();
|
GroupArgs->TextLabel5->show();
|
||||||
|
GroupArgs->TextLabel6->show();
|
||||||
GroupDimensions->LineEdit1->setText("");
|
GroupArgs->SpinBox_DX2->show();
|
||||||
GroupDimensions->LineEdit2->setText("");
|
GroupArgs->SpinBox_DY2->show();
|
||||||
myBase.nullify();
|
GroupArgs->CheckButton1->show();
|
||||||
myVector.nullify();
|
|
||||||
|
|
||||||
GroupDimensions->SpinBox_DX1->setValue(myAng);
|
|
||||||
GroupDimensions->SpinBox_DY1->setValue(myNbTimes1);
|
|
||||||
GroupDimensions->SpinBox_DX2->setValue(myStep);
|
|
||||||
GroupDimensions->SpinBox_DY2->setValue(myNbTimes2);
|
|
||||||
|
|
||||||
GroupDimensions->PushButton1->click();
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GroupArgs->PushButton1->click();
|
||||||
|
|
||||||
qApp->processEvents();
|
qApp->processEvents();
|
||||||
updateGeometry();
|
updateGeometry();
|
||||||
resize(minimumSizeHint());
|
resize(minimumSizeHint());
|
||||||
@ -289,33 +261,39 @@ void TransformationGUI_MultiRotationDlg::SelectionIntoArgument()
|
|||||||
{
|
{
|
||||||
erasePreview();
|
erasePreview();
|
||||||
|
|
||||||
TopAbs_ShapeEnum aNeedType = ( myEditCurrentArgument == GroupPoints->LineEdit2 ||
|
TopAbs_ShapeEnum aNeedType = ( myEditCurrentArgument == GroupArgs->LineEdit2 ) ?
|
||||||
myEditCurrentArgument == GroupDimensions->LineEdit2 ) ?
|
|
||||||
TopAbs_EDGE : TopAbs_SHAPE;
|
TopAbs_EDGE : TopAbs_SHAPE;
|
||||||
GEOM::GeomObjPtr aSelectedObject = getSelected( aNeedType );
|
GEOM::GeomObjPtr aSelectedObject = getSelected( aNeedType );
|
||||||
TopoDS_Shape aShape;
|
TopoDS_Shape aShape;
|
||||||
if ( aSelectedObject && GEOMBase::GetShape( aSelectedObject.get(), aShape ) && !aShape.IsNull() ) {
|
if ( aSelectedObject && GEOMBase::GetShape( aSelectedObject.get(), aShape ) && !aShape.IsNull() ) {
|
||||||
QString aName = GEOMBase::GetName( aSelectedObject.get() );
|
QString aName = GEOMBase::GetName( aSelectedObject.get() );
|
||||||
myEditCurrentArgument->setText( aName );
|
myEditCurrentArgument->setText( aName );
|
||||||
if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) {
|
if ( myEditCurrentArgument == GroupArgs->LineEdit1 ) {
|
||||||
myBase = aSelectedObject;
|
myBase = aSelectedObject;
|
||||||
|
|
||||||
|
// recompute myAng and myStep (Mantis issue 0021718)
|
||||||
|
GEOM::GEOM_IMeasureOperations_var anOper = getGeomEngine()->GetIMeasureOperations(getStudyId());
|
||||||
|
double Xmin, Xmax, Ymin, Ymax, Zmin, Zmax;
|
||||||
|
anOper->GetBoundingBox(myBase.get(), Xmin, Xmax, Ymin, Ymax, Zmin, Zmax);
|
||||||
|
if (anOper->IsDone()) {
|
||||||
|
// angular step
|
||||||
|
double diag = sqrt((Xmax-Xmin)*(Xmax-Xmin) + (Ymax-Ymin)*(Ymax-Ymin));
|
||||||
|
double d = sqrt((0.5*(Xmax+Xmin))*(0.5*(Xmax+Xmin)) + (0.5*(Ymax+Ymin))*(0.5*(Ymax+Ymin)));
|
||||||
|
myAng = floor(2.0 * atan(diag/d) * 180.0 / M_PI);
|
||||||
|
GroupArgs->SpinBox_DX1->setValue(myAng);
|
||||||
|
|
||||||
|
// radial step
|
||||||
|
myStep = Max(floor(1.5*(Xmax-Xmin)), floor(1.5*(Ymax-Ymin)));
|
||||||
|
GroupArgs->SpinBox_DX2->setValue(myStep);
|
||||||
|
}
|
||||||
|
|
||||||
if ( !myVector )
|
if ( !myVector )
|
||||||
GroupPoints->PushButton2->click();
|
GroupArgs->PushButton2->click();
|
||||||
}
|
}
|
||||||
else if ( myEditCurrentArgument == GroupPoints->LineEdit2) {
|
else if ( myEditCurrentArgument == GroupArgs->LineEdit2 ) {
|
||||||
myVector = aSelectedObject;
|
myVector = aSelectedObject;
|
||||||
if ( !myBase )
|
if ( !myBase )
|
||||||
GroupPoints->PushButton1->click();
|
GroupArgs->PushButton1->click();
|
||||||
}
|
|
||||||
else if ( myEditCurrentArgument == GroupDimensions->LineEdit1 ) {
|
|
||||||
myBase = aSelectedObject;
|
|
||||||
if ( !myVector )
|
|
||||||
GroupDimensions->PushButton2->click();
|
|
||||||
}
|
|
||||||
else if ( myEditCurrentArgument == GroupDimensions->LineEdit2 ) {
|
|
||||||
myVector = aSelectedObject;
|
|
||||||
if ( !myBase )
|
|
||||||
GroupDimensions->PushButton1->click();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// clear selection
|
// clear selection
|
||||||
@ -325,11 +303,9 @@ void TransformationGUI_MultiRotationDlg::SelectionIntoArgument()
|
|||||||
this, SLOT(SelectionIntoArgument()));
|
this, SLOT(SelectionIntoArgument()));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if ( myEditCurrentArgument == GroupPoints->LineEdit1 ||
|
if ( myEditCurrentArgument == GroupArgs->LineEdit1 )
|
||||||
myEditCurrentArgument == GroupDimensions->LineEdit1 )
|
|
||||||
myBase.nullify();
|
myBase.nullify();
|
||||||
else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ||
|
else if ( myEditCurrentArgument == GroupArgs->LineEdit2 )
|
||||||
myEditCurrentArgument == GroupDimensions->LineEdit2 )
|
|
||||||
myVector.nullify();
|
myVector.nullify();
|
||||||
myEditCurrentArgument->setText("");
|
myEditCurrentArgument->setText("");
|
||||||
}
|
}
|
||||||
@ -348,33 +324,19 @@ void TransformationGUI_MultiRotationDlg::SetEditCurrentArgument()
|
|||||||
disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
|
disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
|
||||||
globalSelection(GEOM_ALLSHAPES);
|
globalSelection(GEOM_ALLSHAPES);
|
||||||
|
|
||||||
if (send == GroupPoints->PushButton1) {
|
if (send == GroupArgs->PushButton1) {
|
||||||
myEditCurrentArgument = GroupPoints->LineEdit1;
|
myEditCurrentArgument = GroupArgs->LineEdit1;
|
||||||
|
|
||||||
GroupPoints->PushButton2->setDown(false);
|
GroupArgs->PushButton2->setDown(false);
|
||||||
GroupPoints->LineEdit2->setEnabled(false);
|
GroupArgs->LineEdit2->setEnabled(false);
|
||||||
}
|
}
|
||||||
else if (send == GroupPoints->PushButton2) {
|
else if (send == GroupArgs->PushButton2) {
|
||||||
myEditCurrentArgument = GroupPoints->LineEdit2;
|
myEditCurrentArgument = GroupArgs->LineEdit2;
|
||||||
|
|
||||||
localSelection(GEOM::GEOM_Object::_nil(), TopAbs_EDGE);
|
localSelection(GEOM::GEOM_Object::_nil(), TopAbs_EDGE);
|
||||||
|
|
||||||
GroupPoints->PushButton1->setDown(false);
|
GroupArgs->PushButton1->setDown(false);
|
||||||
GroupPoints->LineEdit1->setEnabled(false);
|
GroupArgs->LineEdit1->setEnabled(false);
|
||||||
}
|
|
||||||
else if (send == GroupDimensions->PushButton1) {
|
|
||||||
myEditCurrentArgument = GroupDimensions->LineEdit1;
|
|
||||||
|
|
||||||
GroupDimensions->PushButton2->setDown(false);
|
|
||||||
GroupDimensions->LineEdit2->setEnabled(false);
|
|
||||||
}
|
|
||||||
else if (send == GroupDimensions->PushButton2) {
|
|
||||||
myEditCurrentArgument = GroupDimensions->LineEdit2;
|
|
||||||
|
|
||||||
localSelection(GEOM::GEOM_Object::_nil(), TopAbs_EDGE);
|
|
||||||
|
|
||||||
GroupDimensions->PushButton1->setDown(false);
|
|
||||||
GroupDimensions->LineEdit1->setEnabled(false);
|
|
||||||
}
|
}
|
||||||
connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
|
connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
|
||||||
this, SLOT(SelectionIntoArgument()));
|
this, SLOT(SelectionIntoArgument()));
|
||||||
@ -416,12 +378,13 @@ void TransformationGUI_MultiRotationDlg::enterEvent (QEvent*)
|
|||||||
// function : TextValueChangedInSpinBox()
|
// function : TextValueChangedInSpinBox()
|
||||||
// purpose :
|
// purpose :
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
void TransformationGUI_MultiRotationDlg::TextValueChangedInSpinBox(const QString& s){
|
void TransformationGUI_MultiRotationDlg::TextValueChangedInSpinBox (const QString& s)
|
||||||
|
{
|
||||||
bool isDigit;
|
bool isDigit;
|
||||||
s.toDouble(&isDigit);
|
s.toDouble(&isDigit);
|
||||||
if(!isDigit)
|
if (!isDigit)
|
||||||
GroupDimensions->CheckButton1->setChecked(false);
|
GroupArgs->CheckButton1->setChecked(false);
|
||||||
GroupDimensions->CheckButton1->setEnabled(isDigit);
|
GroupArgs->CheckButton1->setEnabled(isDigit);
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
@ -432,9 +395,9 @@ void TransformationGUI_MultiRotationDlg::ValueChangedInSpinBox (double newValue)
|
|||||||
{
|
{
|
||||||
QObject* send = (QObject*)sender();
|
QObject* send = (QObject*)sender();
|
||||||
|
|
||||||
if (send == GroupDimensions->SpinBox_DX1)
|
if (send == GroupArgs->SpinBox_DX1)
|
||||||
myAng = newValue;
|
myAng = newValue;
|
||||||
else if (send == GroupDimensions->SpinBox_DX2)
|
else if (send == GroupArgs->SpinBox_DX2)
|
||||||
myStep = newValue;
|
myStep = newValue;
|
||||||
|
|
||||||
processPreview();
|
processPreview();
|
||||||
@ -448,9 +411,9 @@ void TransformationGUI_MultiRotationDlg::ValueChangedInSpinBox (int newValue)
|
|||||||
{
|
{
|
||||||
QObject* send = (QObject*)sender();
|
QObject* send = (QObject*)sender();
|
||||||
|
|
||||||
if (send == GroupPoints->SpinBox_DX || send == GroupDimensions->SpinBox_DY1)
|
if (send == GroupArgs->SpinBox_DY1)
|
||||||
myNbTimes1 = newValue;
|
myNbTimes1 = newValue;
|
||||||
else if (send == GroupDimensions->SpinBox_DY2)
|
else if (send == GroupArgs->SpinBox_DY2)
|
||||||
myNbTimes2 = newValue;
|
myNbTimes2 = newValue;
|
||||||
|
|
||||||
processPreview();
|
processPreview();
|
||||||
@ -458,7 +421,7 @@ void TransformationGUI_MultiRotationDlg::ValueChangedInSpinBox (int newValue)
|
|||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
// function : ReverseAngle()
|
// function : ReverseAngle()
|
||||||
// purpose : 'state' not used here
|
// purpose :
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
void TransformationGUI_MultiRotationDlg::ReverseAngle()
|
void TransformationGUI_MultiRotationDlg::ReverseAngle()
|
||||||
{
|
{
|
||||||
@ -467,11 +430,22 @@ void TransformationGUI_MultiRotationDlg::ReverseAngle()
|
|||||||
int aConstructorId = getConstructorId();
|
int aConstructorId = getConstructorId();
|
||||||
|
|
||||||
if (aConstructorId == 1)
|
if (aConstructorId == 1)
|
||||||
GroupDimensions->SpinBox_DX1->setValue(myAng);
|
GroupArgs->SpinBox_DX1->setValue(myAng);
|
||||||
|
|
||||||
processPreview();
|
processPreview();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : CheckAngleStep()
|
||||||
|
// purpose :
|
||||||
|
//=================================================================================
|
||||||
|
void TransformationGUI_MultiRotationDlg::CheckAngleStep (bool isOn)
|
||||||
|
{
|
||||||
|
GroupArgs->SpinBox_DX1->setEnabled(isOn);
|
||||||
|
GroupArgs->CheckButton1->setEnabled(isOn);
|
||||||
|
processPreview();
|
||||||
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
// function : createOperation
|
// function : createOperation
|
||||||
// purpose :
|
// purpose :
|
||||||
@ -488,16 +462,20 @@ GEOM::GEOM_IOperations_ptr TransformationGUI_MultiRotationDlg::createOperation()
|
|||||||
bool TransformationGUI_MultiRotationDlg::isValid (QString& msg)
|
bool TransformationGUI_MultiRotationDlg::isValid (QString& msg)
|
||||||
{
|
{
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
switch(getConstructorId()){
|
switch (getConstructorId()) {
|
||||||
case 0:
|
case 0:
|
||||||
ok = GroupPoints->SpinBox_DX->isValid( msg, !IsPreview() ) && myBase && myVector;
|
ok = (GroupArgs->SpinBox_DX1->isValid( msg, !IsPreview() ) &&
|
||||||
|
GroupArgs->SpinBox_DY1->isValid( msg, !IsPreview() ) &&
|
||||||
|
//myBase && myVector); // myVector = DZ by default
|
||||||
|
myBase);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
ok = GroupDimensions->SpinBox_DX1->isValid( msg, !IsPreview() ) &&
|
ok = (GroupArgs->SpinBox_DX1->isValid( msg, !IsPreview() ) &&
|
||||||
GroupDimensions->SpinBox_DY1->isValid( msg, !IsPreview() ) &&
|
GroupArgs->SpinBox_DY1->isValid( msg, !IsPreview() ) &&
|
||||||
GroupDimensions->SpinBox_DX2->isValid( msg, !IsPreview() ) &&
|
GroupArgs->SpinBox_DX2->isValid( msg, !IsPreview() ) &&
|
||||||
GroupDimensions->SpinBox_DY2->isValid( msg, !IsPreview() ) &&
|
GroupArgs->SpinBox_DY2->isValid( msg, !IsPreview() ) &&
|
||||||
myBase && myVector;
|
//myBase && myVector); // myVector = DZ by default
|
||||||
|
myBase);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -520,29 +498,38 @@ bool TransformationGUI_MultiRotationDlg::execute (ObjectList& objects)
|
|||||||
|
|
||||||
switch (getConstructorId()) {
|
switch (getConstructorId()) {
|
||||||
case 0:
|
case 0:
|
||||||
if ( myBase && myVector ) {
|
if (GroupArgs->CheckAngleStep->isChecked())
|
||||||
|
anObj = anOper->MultiRotate1DByStep(myBase.get(), myVector.get(), myAng * M_PI / 180., myNbTimes1);
|
||||||
|
else
|
||||||
anObj = anOper->MultiRotate1D(myBase.get(), myVector.get(), myNbTimes1);
|
anObj = anOper->MultiRotate1D(myBase.get(), myVector.get(), myNbTimes1);
|
||||||
if(!IsPreview())
|
|
||||||
aParameters<<GroupPoints->SpinBox_DX->text();
|
if (!IsPreview()) {
|
||||||
res = true;
|
if (GroupArgs->CheckAngleStep->isChecked())
|
||||||
|
aParameters << GroupArgs->SpinBox_DX1->text();
|
||||||
|
aParameters << GroupArgs->SpinBox_DY1->text();
|
||||||
}
|
}
|
||||||
|
res = true;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
if ( myBase && myVector ) {
|
if (GroupArgs->CheckAngleStep->isChecked())
|
||||||
anObj = anOper->MultiRotate2D(myBase.get(), myVector.get(), myAng, myNbTimes1, myStep, myNbTimes2);
|
anObj = anOper->MultiRotate2DByStep(myBase.get(), myVector.get(), myAng * M_PI / 180., myNbTimes1,
|
||||||
if(!IsPreview()) {
|
myStep, myNbTimes2);
|
||||||
aParameters<<GroupDimensions->SpinBox_DX1->text();
|
else
|
||||||
aParameters<<GroupDimensions->SpinBox_DY1->text();
|
anObj = anOper->MultiRotate2DNbTimes(myBase.get(), myVector.get(), myNbTimes1, myStep, myNbTimes2);
|
||||||
aParameters<<GroupDimensions->SpinBox_DX2->text();
|
|
||||||
aParameters<<GroupDimensions->SpinBox_DY2->text();
|
if (!IsPreview()) {
|
||||||
}
|
if (GroupArgs->CheckAngleStep->isChecked())
|
||||||
res = true;
|
aParameters << GroupArgs->SpinBox_DX1->text();
|
||||||
|
aParameters << GroupArgs->SpinBox_DY1->text();
|
||||||
|
aParameters << GroupArgs->SpinBox_DX2->text();
|
||||||
|
aParameters << GroupArgs->SpinBox_DY2->text();
|
||||||
}
|
}
|
||||||
|
res = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!anObj->_is_nil()) {
|
if (!anObj->_is_nil()) {
|
||||||
if(!IsPreview())
|
if (!IsPreview())
|
||||||
anObj->SetParameters(aParameters.join(":").toLatin1().constData());
|
anObj->SetParameters(aParameters.join(":").toLatin1().constData());
|
||||||
objects.push_back(anObj._retn());
|
objects.push_back(anObj._retn());
|
||||||
}
|
}
|
||||||
@ -586,3 +573,82 @@ void TransformationGUI_MultiRotationDlg::restoreSubShapes (SALOMEDS::Study_ptr
|
|||||||
mainFrame()->CheckBoxAddPrefix->isChecked());
|
mainFrame()->CheckBoxAddPrefix->isChecked());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : TransformationGUI_2Sel4Spin1Check
|
||||||
|
// purpose :
|
||||||
|
//=================================================================================
|
||||||
|
TransformationGUI_2Sel4Spin1Check::TransformationGUI_2Sel4Spin1Check (QWidget *parent)
|
||||||
|
{
|
||||||
|
gridLayout = new QGridLayout (parent);
|
||||||
|
gridLayout->setSpacing(6);
|
||||||
|
gridLayout->setContentsMargins(11, 11, 11, 11);
|
||||||
|
gridLayout->setHorizontalSpacing(0);
|
||||||
|
gridLayout->setVerticalSpacing(0);
|
||||||
|
gridLayout->setContentsMargins(0, 0, 0, 0);
|
||||||
|
|
||||||
|
GroupBox1 = new QGroupBox (parent);
|
||||||
|
|
||||||
|
gridLayout1 = new QGridLayout (GroupBox1);
|
||||||
|
gridLayout1->setSpacing(6);
|
||||||
|
gridLayout1->setContentsMargins(11, 11, 11, 11);
|
||||||
|
gridLayout1->setHorizontalSpacing(6);
|
||||||
|
gridLayout1->setVerticalSpacing(6);
|
||||||
|
gridLayout1->setContentsMargins(9, 9, 9, 9);
|
||||||
|
|
||||||
|
// 2Sel
|
||||||
|
TextLabel1 = new QLabel(GroupBox1);
|
||||||
|
TextLabel2 = new QLabel(GroupBox1);
|
||||||
|
|
||||||
|
PushButton1 = new QPushButton (GroupBox1);
|
||||||
|
PushButton2 = new QPushButton (GroupBox1);
|
||||||
|
|
||||||
|
LineEdit2 = new QLineEdit(GroupBox1);
|
||||||
|
LineEdit1 = new QLineEdit(GroupBox1);
|
||||||
|
|
||||||
|
gridLayout1->addWidget(TextLabel1, 0, 0, 1, 1);
|
||||||
|
gridLayout1->addWidget(TextLabel2, 1, 0, 1, 1);
|
||||||
|
gridLayout1->addWidget(PushButton1, 0, 1, 1, 1);
|
||||||
|
gridLayout1->addWidget(PushButton2, 1, 1, 1, 1);
|
||||||
|
gridLayout1->addWidget(LineEdit1, 0, 2, 1, 1);
|
||||||
|
gridLayout1->addWidget(LineEdit2, 1, 2, 1, 1);
|
||||||
|
|
||||||
|
// 4Spin (double-int-double-int)
|
||||||
|
//TextLabel3 = new QLabel (GroupBox1);
|
||||||
|
CheckAngleStep = new QCheckBox (GroupBox1);
|
||||||
|
TextLabel4 = new QLabel (GroupBox1);
|
||||||
|
TextLabel5 = new QLabel (GroupBox1);
|
||||||
|
TextLabel6 = new QLabel (GroupBox1);
|
||||||
|
|
||||||
|
SpinBox_DX1 = new SalomeApp_DoubleSpinBox (GroupBox1);
|
||||||
|
SpinBox_DY1 = new SalomeApp_IntSpinBox (GroupBox1);
|
||||||
|
SpinBox_DX2 = new SalomeApp_DoubleSpinBox (GroupBox1);
|
||||||
|
SpinBox_DY2 = new SalomeApp_IntSpinBox (GroupBox1);
|
||||||
|
|
||||||
|
//gridLayout1->addWidget(TextLabel3, 2, 0, 1, 1);
|
||||||
|
gridLayout1->addWidget(CheckAngleStep, 2, 0, 1, 1);
|
||||||
|
gridLayout1->addWidget(TextLabel4, 3, 0, 1, 1);
|
||||||
|
gridLayout1->addWidget(TextLabel5, 5, 0, 1, 1);
|
||||||
|
gridLayout1->addWidget(TextLabel6, 6, 0, 1, 1);
|
||||||
|
|
||||||
|
gridLayout1->addWidget(SpinBox_DX1, 2, 1, 1, 2);
|
||||||
|
gridLayout1->addWidget(SpinBox_DY1, 3, 1, 1, 2);
|
||||||
|
gridLayout1->addWidget(SpinBox_DX2, 5, 1, 1, 2);
|
||||||
|
gridLayout1->addWidget(SpinBox_DY2, 6, 1, 1, 2);
|
||||||
|
|
||||||
|
// 1Check
|
||||||
|
CheckButton1 = new QCheckBox (GroupBox1);
|
||||||
|
|
||||||
|
gridLayout1->addWidget(CheckButton1, 4, 0, 1, 3);
|
||||||
|
|
||||||
|
gridLayout->addWidget(GroupBox1, 0, 0, 1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : ~TransformationGUI_2Sel4Spin1Check()
|
||||||
|
// purpose : Destroys the object and frees any allocated resources
|
||||||
|
//=================================================================================
|
||||||
|
TransformationGUI_2Sel4Spin1Check::~TransformationGUI_2Sel4Spin1Check()
|
||||||
|
{
|
||||||
|
// no need to delete child widgets, Qt does it all for us
|
||||||
|
}
|
||||||
|
@ -18,34 +18,78 @@
|
|||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
|
||||||
|
|
||||||
// GEOM GEOMGUI : GUI for Geometry component
|
// GEOM GEOMGUI : GUI for Geometry component
|
||||||
// File : TransformationGUI_MultiRotationDlg.h
|
// File : TransformationGUI_MultiRotationDlg.h
|
||||||
// Author : Damien COQUERET, Open CASCADE S.A.S.
|
// Author : Damien COQUERET, Open CASCADE S.A.S.
|
||||||
//
|
|
||||||
#ifndef TRANSFORMATIONGUI_MULTIROTATIONDLG_H
|
#ifndef TRANSFORMATIONGUI_MULTIROTATIONDLG_H
|
||||||
#define TRANSFORMATIONGUI_MULTIROTATIONDLG_H
|
#define TRANSFORMATIONGUI_MULTIROTATIONDLG_H
|
||||||
|
|
||||||
#include "GEOMBase_Skeleton.h"
|
#include "GEOMBase_Skeleton.h"
|
||||||
#include "GEOM_GenericObjPtr.h"
|
#include "GEOM_GenericObjPtr.h"
|
||||||
|
|
||||||
class DlgRef_2Sel4Spin1Check;
|
#include <SalomeApp_IntSpinBox.h>
|
||||||
class DlgRef_2Sel1SpinInt;
|
|
||||||
|
#include <QGridLayout>
|
||||||
|
#include <QGroupBox>
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QPushButton>
|
||||||
|
#include <QLineEdit>
|
||||||
|
#include <QCheckBox>
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// class : TransformationGUI_2Sel4Spin1Check
|
||||||
|
// purpose :
|
||||||
|
//=================================================================================
|
||||||
|
class TransformationGUI_2Sel4Spin1Check : public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
TransformationGUI_2Sel4Spin1Check (QWidget *parent);
|
||||||
|
~TransformationGUI_2Sel4Spin1Check();
|
||||||
|
|
||||||
|
public:
|
||||||
|
QGridLayout *gridLayout;
|
||||||
|
QGroupBox *GroupBox1;
|
||||||
|
QGridLayout *gridLayout1;
|
||||||
|
|
||||||
|
// 2Sel
|
||||||
|
QLabel *TextLabel1;
|
||||||
|
QLabel *TextLabel2;
|
||||||
|
QPushButton *PushButton1;
|
||||||
|
QPushButton *PushButton2;
|
||||||
|
QLineEdit *LineEdit1;
|
||||||
|
QLineEdit *LineEdit2;
|
||||||
|
|
||||||
|
// 4Spin (double-int-double-int)
|
||||||
|
QCheckBox *CheckAngleStep;
|
||||||
|
QLabel *TextLabel4;
|
||||||
|
QLabel *TextLabel5;
|
||||||
|
QLabel *TextLabel6;
|
||||||
|
SalomeApp_DoubleSpinBox *SpinBox_DX1;
|
||||||
|
SalomeApp_IntSpinBox *SpinBox_DY1;
|
||||||
|
SalomeApp_DoubleSpinBox *SpinBox_DX2;
|
||||||
|
SalomeApp_IntSpinBox *SpinBox_DY2;
|
||||||
|
|
||||||
|
// 1Check
|
||||||
|
QCheckBox *CheckButton1;
|
||||||
|
};
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
// class : TransformationGUI_MultiRotationDlg
|
// class : TransformationGUI_MultiRotationDlg
|
||||||
// purpose :
|
// purpose :
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
class TransformationGUI_MultiRotationDlg : public GEOMBase_Skeleton
|
class TransformationGUI_MultiRotationDlg : public GEOMBase_Skeleton
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TransformationGUI_MultiRotationDlg( GeometryGUI*, QWidget* = 0,
|
TransformationGUI_MultiRotationDlg (GeometryGUI*, QWidget* = 0,
|
||||||
bool = false, Qt::WindowFlags = 0 );
|
bool = false, Qt::WindowFlags = 0);
|
||||||
~TransformationGUI_MultiRotationDlg();
|
~TransformationGUI_MultiRotationDlg();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// redefined from GEOMBase_Helper
|
// redefined from GEOMBase_Helper
|
||||||
virtual GEOM::GEOM_IOperations_ptr createOperation();
|
virtual GEOM::GEOM_IOperations_ptr createOperation();
|
||||||
@ -57,7 +101,7 @@ protected:
|
|||||||
private:
|
private:
|
||||||
void Init();
|
void Init();
|
||||||
void enterEvent( QEvent* );
|
void enterEvent( QEvent* );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
GEOM::GeomObjPtr myBase, myVector;
|
GEOM::GeomObjPtr myBase, myVector;
|
||||||
int myNbTimes1;
|
int myNbTimes1;
|
||||||
@ -67,9 +111,8 @@ private:
|
|||||||
|
|
||||||
// to initialize the first selection field with a selected object on the dialog creation
|
// to initialize the first selection field with a selected object on the dialog creation
|
||||||
bool myInitial;
|
bool myInitial;
|
||||||
|
|
||||||
DlgRef_2Sel1SpinInt* GroupPoints;
|
TransformationGUI_2Sel4Spin1Check* GroupArgs;
|
||||||
DlgRef_2Sel4Spin1Check* GroupDimensions;
|
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void ClickOnOk();
|
void ClickOnOk();
|
||||||
@ -77,6 +120,7 @@ private slots:
|
|||||||
void ActivateThisDialog();
|
void ActivateThisDialog();
|
||||||
void SelectionIntoArgument();
|
void SelectionIntoArgument();
|
||||||
void SetEditCurrentArgument();
|
void SetEditCurrentArgument();
|
||||||
|
void CheckAngleStep (bool);
|
||||||
void ReverseAngle();
|
void ReverseAngle();
|
||||||
void ValueChangedInSpinBox( double );
|
void ValueChangedInSpinBox( double );
|
||||||
void ValueChangedInSpinBox( int );
|
void ValueChangedInSpinBox( int );
|
||||||
|
@ -82,10 +82,10 @@ TransformationGUI_MultiTranslationDlg::TransformationGUI_MultiTranslationDlg
|
|||||||
GroupPoints = new DlgRef_2Sel2Spin1Check(centralWidget());
|
GroupPoints = new DlgRef_2Sel2Spin1Check(centralWidget());
|
||||||
GroupPoints->GroupBox1->setTitle(tr("GEOM_MULTITRANSLATION_SIMPLE"));
|
GroupPoints->GroupBox1->setTitle(tr("GEOM_MULTITRANSLATION_SIMPLE"));
|
||||||
GroupPoints->TextLabel1->setText(tr("GEOM_MAIN_OBJECT"));
|
GroupPoints->TextLabel1->setText(tr("GEOM_MAIN_OBJECT"));
|
||||||
GroupPoints->TextLabel2->setText(tr("GEOM_VECTOR_U"));
|
GroupPoints->TextLabel2->setText(tr("GEOM_VECTOR"));
|
||||||
GroupPoints->TextLabel3->setText(tr("GEOM_STEP_U"));
|
GroupPoints->TextLabel3->setText(tr("GEOM_STEP"));
|
||||||
GroupPoints->TextLabel4->setText(tr("GEOM_NB_TIMES_U"));
|
GroupPoints->TextLabel4->setText(tr("GEOM_NB_TIMES"));
|
||||||
GroupPoints->CheckButton1->setText(tr("GEOM_REVERSE_U"));
|
GroupPoints->CheckButton1->setText(tr("GEOM_REVERSE_DIRECTION"));
|
||||||
GroupPoints->PushButton1->setIcon(image2);
|
GroupPoints->PushButton1->setIcon(image2);
|
||||||
GroupPoints->PushButton2->setIcon(image2);
|
GroupPoints->PushButton2->setIcon(image2);
|
||||||
GroupPoints->LineEdit1->setReadOnly(true);
|
GroupPoints->LineEdit1->setReadOnly(true);
|
||||||
@ -142,7 +142,7 @@ void TransformationGUI_MultiTranslationDlg::Init()
|
|||||||
int SpecificStep = 1;
|
int SpecificStep = 1;
|
||||||
// init variables
|
// init variables
|
||||||
myStepU = myStepV = 50.0;
|
myStepU = myStepV = 50.0;
|
||||||
myNbTimesU = myNbTimesV = 2;
|
myNbTimesU = myNbTimesV = 3;
|
||||||
|
|
||||||
// min, max, step and decimals for spin boxes & initial values
|
// min, max, step and decimals for spin boxes & initial values
|
||||||
initSpinBox(GroupPoints->SpinBox_DX, COORD_MIN, COORD_MAX, step, "length_precision" );
|
initSpinBox(GroupPoints->SpinBox_DX, COORD_MIN, COORD_MAX, step, "length_precision" );
|
||||||
@ -328,9 +328,20 @@ void TransformationGUI_MultiTranslationDlg::SelectionIntoArgument()
|
|||||||
if ( aSelectedObject && GEOMBase::GetShape( aSelectedObject.get(), aShape ) && !aShape.IsNull() ) {
|
if ( aSelectedObject && GEOMBase::GetShape( aSelectedObject.get(), aShape ) && !aShape.IsNull() ) {
|
||||||
QString aName = GEOMBase::GetName( aSelectedObject.get() );
|
QString aName = GEOMBase::GetName( aSelectedObject.get() );
|
||||||
myEditCurrentArgument->setText( aName );
|
myEditCurrentArgument->setText( aName );
|
||||||
|
|
||||||
if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) {
|
if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) {
|
||||||
myBase = aSelectedObject;
|
myBase = aSelectedObject;
|
||||||
if ( !myVectorU )
|
|
||||||
|
// recompute myStepU (Mantis issue 0021718)
|
||||||
|
GEOM::GEOM_IMeasureOperations_var anOper = getGeomEngine()->GetIMeasureOperations(getStudyId());
|
||||||
|
double Xmin, Xmax, Ymin, Ymax, Zmin, Zmax;
|
||||||
|
anOper->GetBoundingBox(myBase.get(), Xmin, Xmax, Ymin, Ymax, Zmin, Zmax);
|
||||||
|
if (anOper->IsDone()) {
|
||||||
|
myStepU = floor(1.5 * (Xmax - Xmin));
|
||||||
|
GroupPoints->SpinBox_DX->setValue(myStepU);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!myVectorU)
|
||||||
GroupPoints->PushButton2->click();
|
GroupPoints->PushButton2->click();
|
||||||
}
|
}
|
||||||
else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) {
|
else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) {
|
||||||
@ -340,6 +351,18 @@ void TransformationGUI_MultiTranslationDlg::SelectionIntoArgument()
|
|||||||
}
|
}
|
||||||
else if ( myEditCurrentArgument == GroupDimensions->LineEdit1 ) {
|
else if ( myEditCurrentArgument == GroupDimensions->LineEdit1 ) {
|
||||||
myBase = aSelectedObject;
|
myBase = aSelectedObject;
|
||||||
|
|
||||||
|
// recompute myStepU and myStepV (Mantis issue 0021718)
|
||||||
|
GEOM::GEOM_IMeasureOperations_var anOper = getGeomEngine()->GetIMeasureOperations(getStudyId());
|
||||||
|
double Xmin, Xmax, Ymin, Ymax, Zmin, Zmax;
|
||||||
|
anOper->GetBoundingBox(myBase.get(), Xmin, Xmax, Ymin, Ymax, Zmin, Zmax);
|
||||||
|
if (anOper->IsDone()) {
|
||||||
|
myStepU = floor(1.5 * (Xmax - Xmin));
|
||||||
|
myStepV = floor(1.5 * (Ymax - Ymin));
|
||||||
|
GroupDimensions->SpinBox_DX1->setValue(myStepU);
|
||||||
|
GroupDimensions->SpinBox_DX2->setValue(myStepV);
|
||||||
|
}
|
||||||
|
|
||||||
if ( !myVectorU )
|
if ( !myVectorU )
|
||||||
GroupDimensions->PushButton2->click();
|
GroupDimensions->PushButton2->click();
|
||||||
else if ( !myVectorV )
|
else if ( !myVectorV )
|
||||||
@ -597,18 +620,20 @@ GEOM::GEOM_IOperations_ptr TransformationGUI_MultiTranslationDlg::createOperatio
|
|||||||
bool TransformationGUI_MultiTranslationDlg::isValid (QString& msg)
|
bool TransformationGUI_MultiTranslationDlg::isValid (QString& msg)
|
||||||
{
|
{
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
switch ( getConstructorId() ) {
|
switch (getConstructorId()) {
|
||||||
case 0:
|
case 0:
|
||||||
ok = GroupPoints->SpinBox_DX->isValid( msg, !IsPreview() ) &&
|
ok = GroupPoints->SpinBox_DX->isValid( msg, !IsPreview() ) &&
|
||||||
GroupPoints->SpinBox_DY->isValid( msg, !IsPreview() ) &&
|
GroupPoints->SpinBox_DY->isValid( msg, !IsPreview() ) &&
|
||||||
myBase && myVectorU;
|
myBase;
|
||||||
|
//myBase && myVectorU; // Mantis issue 0021718
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
ok = GroupDimensions->SpinBox_DX1->isValid( msg, !IsPreview() ) &&
|
ok = GroupDimensions->SpinBox_DX1->isValid( msg, !IsPreview() ) &&
|
||||||
GroupDimensions->SpinBox_DY1->isValid( msg, !IsPreview() ) &&
|
GroupDimensions->SpinBox_DY1->isValid( msg, !IsPreview() ) &&
|
||||||
GroupDimensions->SpinBox_DX2->isValid( msg, !IsPreview() ) &&
|
GroupDimensions->SpinBox_DX2->isValid( msg, !IsPreview() ) &&
|
||||||
GroupDimensions->SpinBox_DY2->isValid( msg, !IsPreview() ) &&
|
GroupDimensions->SpinBox_DY2->isValid( msg, !IsPreview() ) &&
|
||||||
myBase && myVectorU && myVectorV;
|
myBase;
|
||||||
|
//myBase && myVectorU && myVectorV; // Mantis issue 0021718
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -625,43 +650,38 @@ bool TransformationGUI_MultiTranslationDlg::execute (ObjectList& objects)
|
|||||||
bool res = false;
|
bool res = false;
|
||||||
|
|
||||||
GEOM::GEOM_Object_var anObj;
|
GEOM::GEOM_Object_var anObj;
|
||||||
|
|
||||||
QStringList aParameters;
|
QStringList aParameters;
|
||||||
|
|
||||||
GEOM::GEOM_ITransformOperations_var anOper = GEOM::GEOM_ITransformOperations::_narrow(getOperation());
|
GEOM::GEOM_ITransformOperations_var anOper = GEOM::GEOM_ITransformOperations::_narrow(getOperation());
|
||||||
|
|
||||||
switch (getConstructorId()) {
|
switch (getConstructorId()) {
|
||||||
case 0:
|
case 0:
|
||||||
if ( myBase && myVectorU ) {
|
createPathPreview(myVectorU.get());
|
||||||
createPathPreview ( myVectorU.get() );
|
anObj = anOper->MultiTranslate1D(myBase.get(), myVectorU.get(), myStepU, myNbTimesU);
|
||||||
anObj = anOper->MultiTranslate1D(myBase.get(), myVectorU.get(), myStepU, myNbTimesU);
|
if (!IsPreview()) {
|
||||||
if(!IsPreview()) {
|
aParameters << GroupPoints->SpinBox_DX->text();
|
||||||
aParameters<<GroupPoints->SpinBox_DX->text();
|
aParameters << GroupPoints->SpinBox_DY->text();
|
||||||
aParameters<<GroupPoints->SpinBox_DY->text();
|
|
||||||
}
|
|
||||||
res = true;
|
|
||||||
}
|
}
|
||||||
|
res = true;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
if ( myBase && myVectorU && myVectorV ) {
|
createPathPreview(myVectorU.get());
|
||||||
createPathPreview ( myVectorU.get() );
|
createPathPreview(myVectorV.get());
|
||||||
createPathPreview ( myVectorV.get() );
|
anObj = anOper->MultiTranslate2D(myBase.get(),
|
||||||
anObj = anOper->MultiTranslate2D(myBase.get(),
|
myVectorU.get(), myStepU, myNbTimesU,
|
||||||
myVectorU.get(), myStepU, myNbTimesU,
|
myVectorV.get(), myStepV, myNbTimesV);
|
||||||
myVectorV.get(), myStepV, myNbTimesV);
|
if (!IsPreview()) {
|
||||||
if(!IsPreview()) {
|
aParameters << GroupDimensions->SpinBox_DX1->text();
|
||||||
aParameters<<GroupDimensions->SpinBox_DX1->text();
|
aParameters << GroupDimensions->SpinBox_DY1->text();
|
||||||
aParameters<<GroupDimensions->SpinBox_DY1->text();
|
aParameters << GroupDimensions->SpinBox_DX2->text();
|
||||||
aParameters<<GroupDimensions->SpinBox_DX2->text();
|
aParameters << GroupDimensions->SpinBox_DY2->text();
|
||||||
aParameters<<GroupDimensions->SpinBox_DY2->text();
|
|
||||||
}
|
|
||||||
res = true;
|
|
||||||
}
|
}
|
||||||
|
res = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!anObj->_is_nil()) {
|
if (!anObj->_is_nil()) {
|
||||||
if(!IsPreview())
|
if (!IsPreview())
|
||||||
anObj->SetParameters(aParameters.join(":").toLatin1().constData());
|
anObj->SetParameters(aParameters.join(":").toLatin1().constData());
|
||||||
objects.push_back(anObj._retn());
|
objects.push_back(anObj._retn());
|
||||||
}
|
}
|
||||||
@ -716,6 +736,7 @@ void TransformationGUI_MultiTranslationDlg::restoreSubShapes (SALOMEDS::Study_pt
|
|||||||
void TransformationGUI_MultiTranslationDlg::createPathPreview ( GEOM::GEOM_Object_ptr thePath )
|
void TransformationGUI_MultiTranslationDlg::createPathPreview ( GEOM::GEOM_Object_ptr thePath )
|
||||||
{
|
{
|
||||||
if ( IsPreview() ) {
|
if ( IsPreview() ) {
|
||||||
|
if (thePath->_is_nil()) return;
|
||||||
TopoDS_Shape aShape;
|
TopoDS_Shape aShape;
|
||||||
GEOMBase::GetShape( thePath, aShape, TopAbs_SHAPE );
|
GEOMBase::GetShape( thePath, aShape, TopAbs_SHAPE );
|
||||||
TopoDS_Edge anEdge = TopoDS::Edge( aShape );
|
TopoDS_Edge anEdge = TopoDS::Edge( aShape );
|
||||||
|