Merge from V5_1_3_BR branch (07/12/09)
@ -51,6 +51,8 @@ fi
|
|||||||
|
|
||||||
qt_ok=yes
|
qt_ok=yes
|
||||||
|
|
||||||
|
QTDIR=$(echo $QTDIR | sed 's%[/]\+$%%')
|
||||||
|
|
||||||
AC_LANG_SAVE
|
AC_LANG_SAVE
|
||||||
AC_LANG_CPLUSPLUS
|
AC_LANG_CPLUSPLUS
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ CREATE_SUBDIRS = NO
|
|||||||
OUTPUT_LANGUAGE = English
|
OUTPUT_LANGUAGE = English
|
||||||
USE_WINDOWS_ENCODING = NO
|
USE_WINDOWS_ENCODING = NO
|
||||||
BRIEF_MEMBER_DESC = YES
|
BRIEF_MEMBER_DESC = YES
|
||||||
REPEAT_BRIEF = NO
|
REPEAT_BRIEF = YES
|
||||||
ALWAYS_DETAILED_SEC = YES
|
ALWAYS_DETAILED_SEC = YES
|
||||||
INLINE_INHERITED_MEMB = YES
|
INLINE_INHERITED_MEMB = YES
|
||||||
FULL_PATH_NAMES = NO
|
FULL_PATH_NAMES = NO
|
||||||
|
BIN
doc/salome/gui/GEOM/images/custom_point_marker.png
Executable file
After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 7.4 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 18 KiB |
BIN
doc/salome/gui/GEOM/images/image168.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
doc/salome/gui/GEOM/images/point_marker_dlg1.png
Executable file
After Width: | Height: | Size: 8.7 KiB |
BIN
doc/salome/gui/GEOM/images/point_marker_dlg2.png
Executable file
After Width: | Height: | Size: 8.5 KiB |
BIN
doc/salome/gui/GEOM/images/std_point_marker.png
Executable file
After Width: | Height: | Size: 1.5 KiB |
@ -25,45 +25,43 @@ the position of this point regarding the reference one.
|
|||||||
|
|
||||||
\image html point2.png
|
\image html point2.png
|
||||||
|
|
||||||
\n Thirdly, we can define a point by an \b Edge and a \b
|
\n Thirdly, we can define a point by an \b Edge and a \b Parameter
|
||||||
[list]
|
|
||||||
[*]Parameter
|
|
||||||
indicating its position on the Edge, ranging from 0.0 to 1.0. For example, 0.5 means that the
|
indicating its position on the Edge, ranging from 0.0 to 1.0. For example, 0.5 means that the
|
||||||
point is located in the middle of the edge.
|
point is located in the middle of the edge.
|
||||||
\n <b>TUI Command:</b> <em>geompy.MakeVertexOnCurve(Edge,Parameter).</em>
|
\n <b>TUI Command:</b> <em>geompy.MakeVertexOnCurve(Edge,Parameter).</em>
|
||||||
\n <b>Arguments:</b> Name + 1 edge + 1 Parameter defining the
|
\n <b>Arguments:</b> Name + 1 edge + 1 Parameter defining the
|
||||||
position of the point on the given edge.
|
position of the point on the given edge.
|
||||||
\image html point3.png
|
\image html point3.png
|
||||||
[*]3D co-ordinate of point to project on the given edge
|
|
||||||
\n <b>TUI Command:</b> <em>geompy.MakeVertexOnCurveByCoord(Edge,X,Y,Z).</em>
|
|
||||||
\n <b>Arguments:</b> Name + 1 edge + 3 coordinate values
|
|
||||||
to project point on the given edge.
|
|
||||||
\image html point3_2.png
|
|
||||||
[/list]
|
|
||||||
|
|
||||||
|
Alternatively, it is possible to define 3D coordinates of the point
|
||||||
|
projected on the given edge to produce the resulting point.
|
||||||
|
\n <b>TUI Command:</b> <em>geompy.MakeVertexOnCurveByCoord(Edge,X,Y,Z).</em>
|
||||||
|
\n <b>Arguments:</b> Name + 1 edge + 3 coordinate values of the
|
||||||
|
projected point.
|
||||||
|
\image html point3_2.png
|
||||||
|
|
||||||
\n Fourthly, we can define a point by intersection of two \b Lines.
|
\n Fourthly, we can define a point by intersection of two \b Lines.
|
||||||
\n <b>TUI Command:</b> <em>geompy.MakePointOnLinesIntersection(myLine1,myLine2).</em>
|
\n <b>TUI Command:</b> <em>geompy.MakePointOnLinesIntersection(myLine1,myLine2).</em>
|
||||||
\n <b>Arguments:</b> Name + 2 lines
|
\n <b>Arguments:</b> Name + 2 lines
|
||||||
|
|
||||||
\image html point4.png
|
\image html point4.png
|
||||||
<b>Example:</b>
|
|
||||||
|
|
||||||
\n Finally, we can define a point by a \b Face and
|
\n Finally, we can define a point by a \b Face and
|
||||||
[list]
|
Two <b> Parameters: U </b> and \b V
|
||||||
[*]Two <b> Parameters: U </b> and \b V
|
|
||||||
indicating its position on the Face, ranging from 0.0 to 1.0. For example, (0.5; 0.5) means that the
|
indicating its position on the Face, ranging from 0.0 to 1.0. For example, (0.5; 0.5) means that the
|
||||||
point is located in the middle of the face.
|
point is located in the middle of the face.
|
||||||
\n <b>TUI Command:</b> <em>geompy.MakeVertexOnSurface(myFace,myUParameter,myVParameter).</em>
|
\n <b>TUI Command:</b> <em>geompy.MakeVertexOnSurface(myFace,myUParameter,myVParameter).</em>
|
||||||
\n <b>Arguments:</b> Name + 1 face + 2 Parameters defining the
|
\n <b>Arguments:</b> Name + 1 face + 2 Parameters defining the
|
||||||
position of the point on the given face.
|
position of the point on the given face.
|
||||||
[*] 3D co-ordinate of point to project on the given face.
|
|
||||||
\image html point5.png
|
\image html point5.png
|
||||||
|
|
||||||
|
Alternatively, it is possible to define 3D coordinates of the point projected on the given face.
|
||||||
\n <b>TUI Command:</b> <em>geompy.MakeVertexOnSurface(myFace,X,Y,Z).</em>
|
\n <b>TUI Command:</b> <em>geompy.MakeVertexOnSurface(myFace,X,Y,Z).</em>
|
||||||
\n <b>Arguments:</b> Name + 1 face + 3 coordinate values
|
\n <b>Arguments:</b> Name + 1 face + 3 coordinate values
|
||||||
to project point on the given face.
|
to project point on the given face.
|
||||||
|
|
||||||
\image html point5_2.png
|
\image html point5_2.png
|
||||||
[/list]
|
|
||||||
|
|
||||||
<b>Example:</b>
|
<b>Example:</b>
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
\n In this menu you can change the number of isolines displayed within
|
\n In this menu you can change the number of isolines displayed within
|
||||||
a shape.
|
a shape.
|
||||||
\n <b>Arguments:</b>2 values (number of isolines).
|
\n <b>Arguments: </b>2 values (number of isolines).
|
||||||
|
|
||||||
\image html neo-isos.png
|
\image html neo-isos.png
|
||||||
|
|
||||||
@ -14,4 +14,4 @@ a shape.
|
|||||||
|
|
||||||
\image html isos_u12_v12sn.png
|
\image html isos_u12_v12sn.png
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
@ -13,7 +13,7 @@ with the origin of the Local Coordinate System.
|
|||||||
will be removed.
|
will be removed.
|
||||||
\n <b>Arguments:</b> Name + one or several objects + End Coordinate System.
|
\n <b>Arguments:</b> Name + one or several objects + End Coordinate System.
|
||||||
\n <b>Advanced option:</b>
|
\n <b>Advanced option:</b>
|
||||||
\ref restore_presentation_parameters_page "Set presentation parameters and subshapes from arguments".
|
\ref restore_presentation_parameters_page "Set presentation parameters and subshapes from arguments".
|
||||||
|
|
||||||
\image html transformation5.png
|
\image html transformation5.png
|
||||||
|
|
||||||
@ -34,7 +34,7 @@ otherwise it will be removed.
|
|||||||
\n <b>Arguments:</b> Name + one or several objects + Start Coordinate System + End
|
\n <b>Arguments:</b> Name + one or several objects + Start Coordinate System + End
|
||||||
Coordinate System.
|
Coordinate System.
|
||||||
\n <b>Advanced option:</b>
|
\n <b>Advanced option:</b>
|
||||||
\ref restore_presentation_parameters_page "Set presentation parameters and subshapes from arguments".
|
\ref restore_presentation_parameters_page "Set presentation parameters and subshapes from arguments".
|
||||||
|
|
||||||
\image html transformation6.png
|
\image html transformation6.png
|
||||||
|
|
||||||
@ -64,8 +64,7 @@ the other objects.
|
|||||||
|
|
||||||
<b>Arguments:</b> Name + one or several objects + Translation path.
|
<b>Arguments:</b> Name + one or several objects + Translation path.
|
||||||
\n <b>Advanced option:</b>
|
\n <b>Advanced option:</b>
|
||||||
\ref restore_presentation_parameters_page "Set presentation
|
\ref restore_presentation_parameters_page "Set presentation parameters and subshapes from arguments".
|
||||||
parameters and subshapes from arguments".
|
|
||||||
|
|
||||||
\image html transformation13.png
|
\image html transformation13.png
|
||||||
|
|
||||||
|
56
doc/salome/gui/GEOM/input/point_marker.doc
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
/*!
|
||||||
|
|
||||||
|
\page point_marker_page Point Marker
|
||||||
|
|
||||||
|
\n You can change the representation of the geometrical vertices in
|
||||||
|
the 3D viewer either by selecting one of the predefined
|
||||||
|
shapes or by loading a custom texture from an external file.
|
||||||
|
|
||||||
|
- Standard point markers
|
||||||
|
|
||||||
|
The Geometry module provides a set of predefined point marker shapes which
|
||||||
|
can be used to display vertices in 3D viewer.
|
||||||
|
Each standard point marker has two attributes: type (defines shape
|
||||||
|
form) and scale factor (defines shape size).
|
||||||
|
|
||||||
|
\image html point_marker_dlg1.png
|
||||||
|
|
||||||
|
<b>TUI Command:</b> <em>go.SetMarkerStd(Type, Size)</em>.
|
||||||
|
|
||||||
|
\image html std_point_marker.png "Standard point markers"
|
||||||
|
|
||||||
|
- Custom point markers
|
||||||
|
|
||||||
|
It is also possible to load a point marker shape from an external file.
|
||||||
|
This file should provide a description of the point texture as a set
|
||||||
|
of lines; each line is represented as sequence of "0" and "1" symbols,
|
||||||
|
where "1" symbol means an opaque pixel and "0" symbol means a
|
||||||
|
transparent pixel. The width of the texture correspond to the length
|
||||||
|
of the longest line in the file, expanded to the nearest byte-aligned
|
||||||
|
value. The height of the texture is equal to the number of non-empty
|
||||||
|
lines in the file. Note that missing symbols are replaced by "0".
|
||||||
|
|
||||||
|
Here is a texture file sample:
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
00111100
|
||||||
|
00111100
|
||||||
|
11111111
|
||||||
|
11111111
|
||||||
|
11111111
|
||||||
|
11111111
|
||||||
|
00111100
|
||||||
|
00111100
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
\image html point_marker_dlg2.png
|
||||||
|
|
||||||
|
<b>TUI Command:</b> <em>go.SetMarkerTexture(ID)</em>.
|
||||||
|
|
||||||
|
\image html custom_point_marker.png "Custom point markers"
|
||||||
|
|
||||||
|
Our <b>TUI Scripts</b> provide you with useful examples of
|
||||||
|
\ref tui_point_marker "Point Marker" setting.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
@ -10,9 +10,9 @@ hexahedral solids and compounds of hexahedral solids.
|
|||||||
However, there is an option to unite all faces sharing one
|
However, there is an option to unite all faces sharing one
|
||||||
surface, which produces not only hexahedral solids.
|
surface, which produces not only hexahedral solids.
|
||||||
|
|
||||||
\n <b>TUI Command:</b> <em>geompy.RemoveExtraEdges(theShape,theOptimumNbFaces)</em>,
|
\n <b>TUI Command:</b> <em>geompy.RemoveExtraEdges(theShape,doUnionFaces)</em>,
|
||||||
where <em>theShape</em> is a compound or a single solid
|
where <em>theShape</em> is a compound or a single solid
|
||||||
and <em>theOptimumNbFaces</em> is an integer parameter, that regulates,
|
and <em>doUnionFaces</em> is a boolean parameter, that regulates,
|
||||||
whether the faces, sharing a common surface, should be united.
|
whether the faces, sharing a common surface, should be united.
|
||||||
\n <b>Arguments:</b> Name + one shape + a flag.
|
\n <b>Arguments:</b> Name + one shape + a flag.
|
||||||
\n <b>Advanced option:</b>
|
\n <b>Advanced option:</b>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
\n To produce a \b Sewing operation in the <b>Main Menu</b> select <b>Repair - > Sewing</b>.
|
\n To produce a \b Sewing operation in the <b>Main Menu</b> select <b>Repair - > Sewing</b>.
|
||||||
|
|
||||||
\n It is possible to sew only compounds or shells.
|
\n It is possible to sew only compounds of faces or shells.
|
||||||
|
|
||||||
\n The \b Result will be a \b GEOM_Object.
|
\n The \b Result will be a \b GEOM_Object.
|
||||||
|
|
||||||
|
@ -61,4 +61,21 @@ gg.setColor(fuse_id,218,165,31)
|
|||||||
gg.setTransparency(fuse_id,0.5)
|
gg.setTransparency(fuse_id,0.5)
|
||||||
\endcode
|
\endcode
|
||||||
|
|
||||||
*/
|
\anchor tui_point_marker
|
||||||
|
<br><h2>Set Point Marker</h2>
|
||||||
|
|
||||||
|
\code
|
||||||
|
import salome
|
||||||
|
import geompy
|
||||||
|
|
||||||
|
texture = geompy.LoadTexture("/users/user/mytexture.dat")
|
||||||
|
|
||||||
|
v1 = geompy.MakeVertex(0, 0, 0)
|
||||||
|
v2 = geompy.MakeVertex(100, 0, 0)
|
||||||
|
v3 = geompy.MakeVertex(0, 100, 0)
|
||||||
|
|
||||||
|
v1.SetMarkerStd(GEOM.MT_O_PLUS, GEOM.MS_25)
|
||||||
|
v2.SetMarkerStd(GEOM.MT_BALL, GEOM.MS_40)
|
||||||
|
v3.SetMarkerTexture(texture)
|
||||||
|
\endcode
|
||||||
|
*/
|
||||||
|
@ -27,6 +27,8 @@ the standard <b>Select Color</b> menu.</li>
|
|||||||
transparency of geometrical objects.</li>
|
transparency of geometrical objects.</li>
|
||||||
<li>\subpage isolines_page "Isos" - allows to change the number of
|
<li>\subpage isolines_page "Isos" - allows to change the number of
|
||||||
isolines displayed within a shape.</li>
|
isolines displayed within a shape.</li>
|
||||||
|
<li>\subpage point_marker_page "Point Marker" - allows to change the
|
||||||
|
representation of geometrical vertices.</li>
|
||||||
<li><b>Auto color</b> / <b>Disable auto color</b> - activates the auto color
|
<li><b>Auto color</b> / <b>Disable auto color</b> - activates the auto color
|
||||||
mode. When the auto color mode is enabled, the groups created on the
|
mode. When the auto color mode is enabled, the groups created on the
|
||||||
sub-shapes of the selected geometrical object are automatically
|
sub-shapes of the selected geometrical object are automatically
|
||||||
|
108
idl/GEOM_Gen.idl
@ -40,6 +40,17 @@ module GEOM
|
|||||||
enum shape_type { COMPOUND, COMPSOLID, SOLID, SHELL,
|
enum shape_type { COMPOUND, COMPSOLID, SOLID, SHELL,
|
||||||
FACE, WIRE, EDGE, VERTEX, SHAPE };
|
FACE, WIRE, EDGE, VERTEX, SHAPE };
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Marker type
|
||||||
|
*/
|
||||||
|
enum marker_type { MT_NONE, MT_POINT, MT_PLUS, MT_STAR, MT_O, MT_X, MT_O_POINT, MT_O_PLUS,
|
||||||
|
MT_O_STAR, MT_O_X, MT_BALL, MT_RING1, MT_RING2, MT_RING3, MT_USER };
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Marker size
|
||||||
|
*/
|
||||||
|
enum marker_size { MS_NONE, MS_10, MS_15, MS_20, MS_25, MS_30, MS_35,
|
||||||
|
MS_40, MS_45, MS_50, MS_55, MS_60, MS_65, MS_70 };
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* State of shape relatively geometrical surface like plane, sphere or cylinder.
|
* State of shape relatively geometrical surface like plane, sphere or cylinder.
|
||||||
@ -172,6 +183,38 @@ module GEOM
|
|||||||
*/
|
*/
|
||||||
boolean GetAutoColor();
|
boolean GetAutoColor();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Set standard point marker for the object
|
||||||
|
* \param theType standard marker type
|
||||||
|
* \param theSize marker relative size
|
||||||
|
*/
|
||||||
|
void SetMarkerStd(in marker_type theType, in marker_size theSize );
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Set custom point marker for the object. The texture can be added
|
||||||
|
* by LoadTexture() or AddTexture() functions.
|
||||||
|
* \param theTextureId texture ID
|
||||||
|
*/
|
||||||
|
void SetMarkerTexture(in long theTextureId);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Get type of the point marker assigned to the object
|
||||||
|
* \return current marker type (MT_NONE if no marker is set)
|
||||||
|
*/
|
||||||
|
marker_type GetMarkerType();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Get size of the point marker assigned to the object
|
||||||
|
* \return current marker relative size (MS_NONE if no marker is set)
|
||||||
|
*/
|
||||||
|
marker_size GetMarkerSize();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Get texture idenifier of the point marker assigned to the object
|
||||||
|
* \return marker texture ID (0 if no marker set)
|
||||||
|
*/
|
||||||
|
long GetMarkerTexture();
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Set a Study entry where this object was published.
|
* Set a Study entry where this object was published.
|
||||||
*/
|
*/
|
||||||
@ -240,7 +283,7 @@ module GEOM
|
|||||||
* used for object creation
|
* used for object creation
|
||||||
*/
|
*/
|
||||||
void SetParameters (in string theParameters);
|
void SetParameters (in string theParameters);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Return list of notebook variables used for object creation separated by ":" symbol
|
* Return list of notebook variables used for object creation separated by ":" symbol
|
||||||
*/
|
*/
|
||||||
@ -462,7 +505,7 @@ module GEOM
|
|||||||
*/
|
*/
|
||||||
GEOM_Object MakePlaneFace (in GEOM_Object theFace,
|
GEOM_Object MakePlaneFace (in GEOM_Object theFace,
|
||||||
in double theTrimSize);
|
in double theTrimSize);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Create a plane, by two vectors.
|
* Create a plane, by two vectors.
|
||||||
* \param theVec1 Vector1, the plane has to pass through first point of this vector.
|
* \param theVec1 Vector1, the plane has to pass through first point of this vector.
|
||||||
@ -473,7 +516,7 @@ module GEOM
|
|||||||
GEOM_Object MakePlane2Vec (in GEOM_Object theVec1,
|
GEOM_Object MakePlane2Vec (in GEOM_Object theVec1,
|
||||||
in GEOM_Object theVec2,
|
in GEOM_Object theVec2,
|
||||||
in double theTrimSize);
|
in double theTrimSize);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Create a plane, defined by local coordinate system.
|
* Create a plane, defined by local coordinate system.
|
||||||
* \param theLCS Referenced LCS(Marker).
|
* \param theLCS Referenced LCS(Marker).
|
||||||
@ -922,7 +965,7 @@ module GEOM
|
|||||||
* vertical (H) and horisontal (W).
|
* vertical (H) and horisontal (W).
|
||||||
* \param theVec defines plane.
|
* \param theVec defines plane.
|
||||||
* \param theH vertical size (height).
|
* \param theH vertical size (height).
|
||||||
* \param theW horisontal size (width).
|
* \param theW horisontal size (width).
|
||||||
* \return New GEOM_Object, containing the created face.
|
* \return New GEOM_Object, containing the created face.
|
||||||
*/
|
*/
|
||||||
GEOM_Object MakeFaceObjHW (in GEOM_Object theObj, in double theH, in double theW);
|
GEOM_Object MakeFaceObjHW (in GEOM_Object theObj, in double theH, in double theW);
|
||||||
@ -944,7 +987,7 @@ module GEOM
|
|||||||
GEOM_Object MakeDiskThreePnt (in GEOM_Object thePnt1,
|
GEOM_Object MakeDiskThreePnt (in GEOM_Object thePnt1,
|
||||||
in GEOM_Object thePnt2,
|
in GEOM_Object thePnt2,
|
||||||
in GEOM_Object thePnt3);
|
in GEOM_Object thePnt3);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Create a disk specified dimensions along OX-OY coordinate axes,
|
* Create a disk specified dimensions along OX-OY coordinate axes,
|
||||||
* Center of the disk at point (0, 0, 0).
|
* Center of the disk at point (0, 0, 0).
|
||||||
@ -953,7 +996,7 @@ module GEOM
|
|||||||
* \return New GEOM_Object, containing the created disk.
|
* \return New GEOM_Object, containing the created disk.
|
||||||
*/
|
*/
|
||||||
GEOM_Object MakeDiskR (in double theR, in short theOrientation);
|
GEOM_Object MakeDiskR (in double theR, in short theOrientation);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Create a cylinder with given radius and height at
|
* Create a cylinder with given radius and height at
|
||||||
* the origin of coordinate system. Axis of the cylinder
|
* the origin of coordinate system. Axis of the cylinder
|
||||||
@ -1075,7 +1118,7 @@ module GEOM
|
|||||||
GEOM_Object MakePrismTwoPnt2Ways (in GEOM_Object theBase,
|
GEOM_Object MakePrismTwoPnt2Ways (in GEOM_Object theBase,
|
||||||
in GEOM_Object thePoint1,
|
in GEOM_Object thePoint1,
|
||||||
in GEOM_Object thePoint2);
|
in GEOM_Object thePoint2);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Create a shape by extrusion of the base shape along a vector, defined by DX DY DZ.
|
* Create a shape by extrusion of the base shape along a vector, defined by DX DY DZ.
|
||||||
* \param theBase Base shape to be extruded.
|
* \param theBase Base shape to be extruded.
|
||||||
@ -1144,7 +1187,7 @@ module GEOM
|
|||||||
/*!
|
/*!
|
||||||
* Create a shape by extrusion of the profile shape along
|
* Create a shape by extrusion of the profile shape along
|
||||||
* the path shape. The path shape can be a wire or an edge.
|
* the path shape. The path shape can be a wire or an edge.
|
||||||
* the several profiles can be specified in the several locations of path.
|
* the several profiles can be specified in the several locations of path.
|
||||||
* \param theSeqBases - list of Bases shape to be extruded.
|
* \param theSeqBases - list of Bases shape to be extruded.
|
||||||
* \param theLocations - list of locations on the path corresponding
|
* \param theLocations - list of locations on the path corresponding
|
||||||
* specified list of the Bases shapes. Number of locations
|
* specified list of the Bases shapes. Number of locations
|
||||||
@ -1165,7 +1208,7 @@ module GEOM
|
|||||||
/*!
|
/*!
|
||||||
* Create a shape by extrusion of the profile shape along
|
* Create a shape by extrusion of the profile shape along
|
||||||
* the path shape. The path shape can be a shell or a face.
|
* the path shape. The path shape can be a shell or a face.
|
||||||
* the several profiles can be specified in the several locations of path.
|
* the several profiles can be specified in the several locations of path.
|
||||||
* \param theSeqBases - list of Bases shape to be extruded.
|
* \param theSeqBases - list of Bases shape to be extruded.
|
||||||
* \param theSeqSubBases - list of corresponding subshapes of section shapes.
|
* \param theSeqSubBases - list of corresponding subshapes of section shapes.
|
||||||
* \param theLocations - list of locations on the path corresponding
|
* \param theLocations - list of locations on the path corresponding
|
||||||
@ -1196,7 +1239,7 @@ module GEOM
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Create a shape by extrusion of the base shape along
|
* Create a shape by extrusion of the base shape along
|
||||||
* the path shape with constant bi-normal direction along the given vector.
|
* the path shape with constant bi-normal direction along the given vector.
|
||||||
* The path shape can be a wire or an edge.
|
* The path shape can be a wire or an edge.
|
||||||
* \param theBase Base shape to be extruded.
|
* \param theBase Base shape to be extruded.
|
||||||
* \param thePath Path shape to extrude the base shape along it.
|
* \param thePath Path shape to extrude the base shape along it.
|
||||||
@ -1205,8 +1248,8 @@ module GEOM
|
|||||||
* along the sweep surface.
|
* along the sweep surface.
|
||||||
* \return New GEOM_Object, containing the created pipe.
|
* \return New GEOM_Object, containing the created pipe.
|
||||||
*/
|
*/
|
||||||
GEOM_Object MakePipeBiNormalAlongVector (in GEOM_Object theBase,
|
GEOM_Object MakePipeBiNormalAlongVector (in GEOM_Object theBase,
|
||||||
in GEOM_Object thePath,
|
in GEOM_Object thePath,
|
||||||
in GEOM_Object theVec);
|
in GEOM_Object theVec);
|
||||||
|
|
||||||
};
|
};
|
||||||
@ -2206,7 +2249,7 @@ module GEOM
|
|||||||
in GEOM_Object thePnt1,
|
in GEOM_Object thePnt1,
|
||||||
in GEOM_Object thePnt2,
|
in GEOM_Object thePnt2,
|
||||||
in boolean theSense);
|
in boolean theSense);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Create an arc of ellipse of center C and two points P1 P2.
|
* Create an arc of ellipse of center C and two points P1 P2.
|
||||||
* \param theCenter Center point of the arc.
|
* \param theCenter Center point of the arc.
|
||||||
@ -2277,7 +2320,7 @@ module GEOM
|
|||||||
* \return New GEOM_Object, containing the created wire.
|
* \return New GEOM_Object, containing the created wire.
|
||||||
*/
|
*/
|
||||||
GEOM_Object MakeSketcher (in string theCommand, in ListOfDouble theWorkingPlane);
|
GEOM_Object MakeSketcher (in string theCommand, in ListOfDouble theWorkingPlane);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Create a 3D sketcher, following the numerical description,
|
* Create a 3D sketcher, following the numerical description,
|
||||||
* passed through points created by \a theCoordinates argument. \n
|
* passed through points created by \a theCoordinates argument. \n
|
||||||
@ -2285,7 +2328,7 @@ module GEOM
|
|||||||
*
|
*
|
||||||
* "Make3DSketcher[x1, y1, z1, x2, y2, z2, ..., xN, yN, zN]"
|
* "Make3DSketcher[x1, y1, z1, x2, y2, z2, ..., xN, yN, zN]"
|
||||||
*/
|
*/
|
||||||
|
|
||||||
GEOM_Object Make3DSketcher (in ListOfDouble theCoordinates);
|
GEOM_Object Make3DSketcher (in ListOfDouble theCoordinates);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -2343,12 +2386,12 @@ module GEOM
|
|||||||
GEOM_Object MakeFilletFaces (in GEOM_Object theShape,
|
GEOM_Object MakeFilletFaces (in GEOM_Object theShape,
|
||||||
in double theR,
|
in double theR,
|
||||||
in ListOfLong theFaces);
|
in ListOfLong theFaces);
|
||||||
|
|
||||||
GEOM_Object MakeFilletFacesR1R2 (in GEOM_Object theShape,
|
GEOM_Object MakeFilletFacesR1R2 (in GEOM_Object theShape,
|
||||||
in double theR1,
|
in double theR1,
|
||||||
in double theR2,
|
in double theR2,
|
||||||
in ListOfLong theFaces);
|
in ListOfLong theFaces);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Perform a fillet on face of the specified vertexes of the given shape.
|
* Perform a fillet on face of the specified vertexes of the given shape.
|
||||||
* \param theShape Shape, to perform fillet on.
|
* \param theShape Shape, to perform fillet on.
|
||||||
@ -2651,6 +2694,37 @@ module GEOM
|
|||||||
*/
|
*/
|
||||||
void ExportTranslators (out string_array theFormats,
|
void ExportTranslators (out string_array theFormats,
|
||||||
out string_array thePatterns);
|
out string_array thePatterns);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Load texture from file
|
||||||
|
* \param theTextureFile texture file name
|
||||||
|
* \return unique texture identifier
|
||||||
|
*/
|
||||||
|
long LoadTexture(in string theTextureFile);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Add texture to the study
|
||||||
|
* \param theWidth texture width in pixels
|
||||||
|
* \param theHeight texture height in pixels
|
||||||
|
* \param theTexture texture byte array
|
||||||
|
* \return unique texture identifier
|
||||||
|
*/
|
||||||
|
long AddTexture(in long theWidth, in long theHeight, in SALOMEDS::TMPFile theTexture);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Get previously loaded texture data
|
||||||
|
* \param theID texture identifier
|
||||||
|
* \param theWidth texture width in pixels
|
||||||
|
* \param theHeight texture height in pixels
|
||||||
|
* \return texture byte array
|
||||||
|
*/
|
||||||
|
SALOMEDS::TMPFile GetTexture(in long theID, out long theWidth, out long theHeight);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Get list of all avaiable texture IDs
|
||||||
|
* \return list of all texture IDs avaiable for the current study
|
||||||
|
*/
|
||||||
|
ListOfLong GetAllTextures();
|
||||||
};
|
};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -186,6 +186,19 @@ suppressintwires.png \
|
|||||||
marker.png \
|
marker.png \
|
||||||
marker2.png \
|
marker2.png \
|
||||||
marker3.png \
|
marker3.png \
|
||||||
|
marker_1.png \
|
||||||
|
marker_2.png \
|
||||||
|
marker_3.png \
|
||||||
|
marker_4.png \
|
||||||
|
marker_5.png \
|
||||||
|
marker_6.png \
|
||||||
|
marker_7.png \
|
||||||
|
marker_8.png \
|
||||||
|
marker_9.png \
|
||||||
|
marker_10.png \
|
||||||
|
marker_11.png \
|
||||||
|
marker_12.png \
|
||||||
|
marker_13.png \
|
||||||
position.png \
|
position.png \
|
||||||
position2.png \
|
position2.png \
|
||||||
position3.png \
|
position3.png \
|
||||||
|
BIN
resources/marker_1.png
Executable file
After Width: | Height: | Size: 239 B |
BIN
resources/marker_10.png
Executable file
After Width: | Height: | Size: 333 B |
BIN
resources/marker_11.png
Executable file
After Width: | Height: | Size: 237 B |
BIN
resources/marker_12.png
Executable file
After Width: | Height: | Size: 234 B |
BIN
resources/marker_13.png
Executable file
After Width: | Height: | Size: 234 B |
BIN
resources/marker_2.png
Executable file
After Width: | Height: | Size: 261 B |
BIN
resources/marker_3.png
Executable file
After Width: | Height: | Size: 285 B |
BIN
resources/marker_4.png
Executable file
After Width: | Height: | Size: 274 B |
BIN
resources/marker_5.png
Executable file
After Width: | Height: | Size: 266 B |
BIN
resources/marker_6.png
Executable file
After Width: | Height: | Size: 283 B |
BIN
resources/marker_7.png
Executable file
After Width: | Height: | Size: 282 B |
BIN
resources/marker_8.png
Executable file
After Width: | Height: | Size: 320 B |
BIN
resources/marker_9.png
Executable file
After Width: | Height: | Size: 300 B |
@ -511,18 +511,18 @@ void DisplayGUI::ChangeDisplayMode( const int mode, SUIT_ViewWindow* viewWindow
|
|||||||
SVTK_Prs* vtkPrs =
|
SVTK_Prs* vtkPrs =
|
||||||
stvkViewer ? dynamic_cast<SVTK_Prs*>( stvkViewer->CreatePrs( It.Value()->getEntry() ) ) : 0;
|
stvkViewer ? dynamic_cast<SVTK_Prs*>( stvkViewer->CreatePrs( It.Value()->getEntry() ) ) : 0;
|
||||||
if ( vtkPrs && !vtkPrs->IsNull() ) {
|
if ( vtkPrs && !vtkPrs->IsNull() ) {
|
||||||
if ( mode == 0 )
|
if ( mode == 0 )
|
||||||
aView->ChangeRepresentationToWireframe( vtkPrs->GetObjects() );
|
aView->ChangeRepresentationToWireframe( vtkPrs->GetObjects() );
|
||||||
else if ( mode == 1 )
|
else if ( mode == 1 )
|
||||||
aView->ChangeRepresentationToSurface( vtkPrs->GetObjects() );
|
aView->ChangeRepresentationToSurface( vtkPrs->GetObjects() );
|
||||||
else if ( mode == 2 ) {
|
else if ( mode == 2 ) {
|
||||||
vtkActorCollection* anActors = vtkPrs->GetObjects();
|
vtkActorCollection* anActors = vtkPrs->GetObjects();
|
||||||
anActors->InitTraversal();
|
anActors->InitTraversal();
|
||||||
while (vtkActor* anAct = anActors->GetNextActor()) {
|
while (vtkActor* anAct = anActors->GetNextActor()) {
|
||||||
GEOM_Actor* aGeomActor = GEOM_Actor::SafeDownCast(anAct);
|
GEOM_Actor* aGeomActor = GEOM_Actor::SafeDownCast(anAct);
|
||||||
aGeomActor->SetVectorMode(!aGeomActor->GetVectorMode());
|
aGeomActor->SetVectorMode(!aGeomActor->GetVectorMode());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
aView->Repaint();
|
aView->Repaint();
|
||||||
@ -538,19 +538,21 @@ void DisplayGUI::ChangeDisplayMode( const int mode, SUIT_ViewWindow* viewWindow
|
|||||||
SOCC_Viewer* soccViewer = (SOCC_Viewer*)(viewWindow->getViewManager()->getViewModel());
|
SOCC_Viewer* soccViewer = (SOCC_Viewer*)(viewWindow->getViewManager()->getViewModel());
|
||||||
SOCC_Prs* occPrs = dynamic_cast<SOCC_Prs*>( soccViewer->CreatePrs( It.Value()->getEntry() ) );
|
SOCC_Prs* occPrs = dynamic_cast<SOCC_Prs*>( soccViewer->CreatePrs( It.Value()->getEntry() ) );
|
||||||
if ( occPrs && !occPrs->IsNull() ) {
|
if ( occPrs && !occPrs->IsNull() ) {
|
||||||
AIS_ListOfInteractive shapes; occPrs->GetObjects( shapes );
|
AIS_ListOfInteractive shapes; occPrs->GetObjects( shapes );
|
||||||
AIS_ListIteratorOfListOfInteractive interIter( shapes );
|
AIS_ListIteratorOfListOfInteractive interIter( shapes );
|
||||||
for ( ; interIter.More(); interIter.Next() ) {
|
for ( ; interIter.More(); interIter.Next() ) {
|
||||||
if ( mode == 0 )
|
if ( mode == 0 )
|
||||||
ic->SetDisplayMode( interIter.Value(), AIS_WireFrame, false );
|
ic->SetDisplayMode( interIter.Value(), AIS_WireFrame, false );
|
||||||
else if ( mode == 1 )
|
else if ( mode == 1 )
|
||||||
ic->SetDisplayMode( interIter.Value(), AIS_Shaded, false );
|
ic->SetDisplayMode( interIter.Value(), AIS_Shaded, false );
|
||||||
if (mode == 2 ) {
|
if (mode == 2 ) {
|
||||||
Handle(GEOM_AISShape) aSh = Handle(GEOM_AISShape)::DownCast( interIter.Value() );
|
Handle(GEOM_AISShape) aSh = Handle(GEOM_AISShape)::DownCast( interIter.Value() );
|
||||||
aSh->SetDisplayVectors(!aSh->isShowVectors());
|
if ( !aSh.IsNull() ) {
|
||||||
ic->RecomputePrsOnly(interIter.Value());
|
aSh->SetDisplayVectors(!aSh->isShowVectors());
|
||||||
}
|
ic->RecomputePrsOnly(interIter.Value());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ic->UpdateCurrentViewer();
|
ic->UpdateCurrentViewer();
|
||||||
|
@ -47,10 +47,10 @@ Standard_EXPORT Handle_Standard_Type& GEOM_Application_Type_()
|
|||||||
|
|
||||||
static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,aType4,NULL};
|
static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,aType4,NULL};
|
||||||
static Handle_Standard_Type _aType = new Standard_Type("GEOM_Application",
|
static Handle_Standard_Type _aType = new Standard_Type("GEOM_Application",
|
||||||
sizeof(GEOM_Application),
|
sizeof(GEOM_Application),
|
||||||
1,
|
1,
|
||||||
(Standard_Address)_Ancestors,
|
(Standard_Address)_Ancestors,
|
||||||
(Standard_Address)NULL);
|
(Standard_Address)NULL);
|
||||||
|
|
||||||
return _aType;
|
return _aType;
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,7 @@ Standard_EXPORT ~GEOM_DataMapNodeOfDataMapOfAsciiStringTransient();
|
|||||||
//
|
//
|
||||||
Standard_EXPORT friend Handle_Standard_Type& GEOM_DataMapNodeOfDataMapOfAsciiStringTransient_Type_();
|
Standard_EXPORT friend Handle_Standard_Type& GEOM_DataMapNodeOfDataMapOfAsciiStringTransient_Type_();
|
||||||
Standard_EXPORT const Handle(Standard_Type)& DynamicType() const;
|
Standard_EXPORT const Handle(Standard_Type)& DynamicType() const;
|
||||||
Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const;
|
Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
|
@ -54,10 +54,10 @@ Standard_EXPORT Handle_Standard_Type& GEOM_DataMapNodeOfDataMapOfAsciiStringTran
|
|||||||
|
|
||||||
static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
|
static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
|
||||||
static Handle_Standard_Type _aType = new Standard_Type("GEOM_DataMapNodeOfDataMapOfAsciiStringTransient",
|
static Handle_Standard_Type _aType = new Standard_Type("GEOM_DataMapNodeOfDataMapOfAsciiStringTransient",
|
||||||
sizeof(GEOM_DataMapNodeOfDataMapOfAsciiStringTransient),
|
sizeof(GEOM_DataMapNodeOfDataMapOfAsciiStringTransient),
|
||||||
1,
|
1,
|
||||||
(Standard_Address)_Ancestors,
|
(Standard_Address)_Ancestors,
|
||||||
(Standard_Address)NULL);
|
(Standard_Address)NULL);
|
||||||
|
|
||||||
return _aType;
|
return _aType;
|
||||||
}
|
}
|
||||||
|
@ -42,6 +42,11 @@
|
|||||||
#include <TDataStd_ChildNodeIterator.hxx>
|
#include <TDataStd_ChildNodeIterator.hxx>
|
||||||
#include <TFunction_Driver.hxx>
|
#include <TFunction_Driver.hxx>
|
||||||
#include <TFunction_DriverTable.hxx>
|
#include <TFunction_DriverTable.hxx>
|
||||||
|
#include <TDataStd_HArray1OfByte.hxx>
|
||||||
|
#include <TDataStd_ByteArray.hxx>
|
||||||
|
#include <TDataStd_UAttribute.hxx>
|
||||||
|
#include <TDF_ChildIterator.hxx>
|
||||||
|
#include <TDataStd_Comment.hxx>
|
||||||
|
|
||||||
#include <TopExp.hxx>
|
#include <TopExp.hxx>
|
||||||
#include <TopTools_IndexedMapOfShape.hxx>
|
#include <TopTools_IndexedMapOfShape.hxx>
|
||||||
@ -106,7 +111,7 @@ bool ProcessFunction(Handle(GEOM_Function)& theFunction,
|
|||||||
TCollection_AsciiString& theScript,
|
TCollection_AsciiString& theScript,
|
||||||
TCollection_AsciiString& theAfterScript,
|
TCollection_AsciiString& theAfterScript,
|
||||||
const TVariablesList& theVariables,
|
const TVariablesList& theVariables,
|
||||||
const bool theIsPublished,
|
const bool theIsPublished,
|
||||||
TDF_LabelMap& theProcessed,
|
TDF_LabelMap& theProcessed,
|
||||||
std::set<std::string>& theIgnoreObjs,
|
std::set<std::string>& theIgnoreObjs,
|
||||||
bool& theIsDumpCollected);
|
bool& theIsDumpCollected);
|
||||||
@ -117,23 +122,35 @@ void ReplaceVariables(TCollection_AsciiString& theCommand,
|
|||||||
Handle(TColStd_HSequenceOfInteger) FindEntries(TCollection_AsciiString& theString);
|
Handle(TColStd_HSequenceOfInteger) FindEntries(TCollection_AsciiString& theString);
|
||||||
|
|
||||||
void ReplaceEntriesByNames (TCollection_AsciiString& theScript,
|
void ReplaceEntriesByNames (TCollection_AsciiString& theScript,
|
||||||
Resource_DataMapOfAsciiStringAsciiString& theObjectNames,
|
Resource_DataMapOfAsciiStringAsciiString& theObjectNames,
|
||||||
const bool theIsPublished,
|
const bool theIsPublished,
|
||||||
Resource_DataMapOfAsciiStringAsciiString& theEntryToBadName,
|
Resource_DataMapOfAsciiStringAsciiString& theEntryToBadName,
|
||||||
TColStd_SequenceOfAsciiString& theObjListToPublish);
|
TColStd_SequenceOfAsciiString& theObjListToPublish);
|
||||||
|
|
||||||
void AddObjectColors (const Handle(TDocStd_Document)& theDoc,
|
void AddObjectColors (int theDocID,
|
||||||
TCollection_AsciiString& theScript,
|
TCollection_AsciiString& theScript,
|
||||||
const Resource_DataMapOfAsciiStringAsciiString& theObjectNames);
|
const Resource_DataMapOfAsciiStringAsciiString& theObjectNames);
|
||||||
|
|
||||||
|
void AddTextures (int theDocID, TCollection_AsciiString& theScript);
|
||||||
|
|
||||||
void PublishObject (const TCollection_AsciiString& theEntry,
|
void PublishObject (const TCollection_AsciiString& theEntry,
|
||||||
const TCollection_AsciiString& theName,
|
const TCollection_AsciiString& theName,
|
||||||
const Resource_DataMapOfAsciiStringAsciiString& theObjectNames,
|
const Resource_DataMapOfAsciiStringAsciiString& theObjectNames,
|
||||||
const Resource_DataMapOfAsciiStringAsciiString& theEntry2StEntry,
|
const Resource_DataMapOfAsciiStringAsciiString& theEntry2StEntry,
|
||||||
const Resource_DataMapOfAsciiStringAsciiString& theStEntry2Entry,
|
const Resource_DataMapOfAsciiStringAsciiString& theStEntry2Entry,
|
||||||
const Resource_DataMapOfAsciiStringAsciiString& theEntryToBadName,
|
const Resource_DataMapOfAsciiStringAsciiString& theEntryToBadName,
|
||||||
std::map< int, std::string >& theEntryToCommandMap,
|
std::map< int, std::string >& theEntryToCommandMap,
|
||||||
std::set<std::string>& theMapOfPublished);
|
std::set<std::string>& theMapOfPublished);
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : GetTextureGUID
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
const Standard_GUID& GEOM_Engine::GetTextureGUID()
|
||||||
|
{
|
||||||
|
static Standard_GUID anID("FF1BBB01-5D14-4df2-980B-3A668264EA17");
|
||||||
|
return anID;
|
||||||
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
@ -186,17 +203,19 @@ GEOM_Engine::~GEOM_Engine()
|
|||||||
* GetDocument
|
* GetDocument
|
||||||
*/
|
*/
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
Handle(TDocStd_Document) GEOM_Engine::GetDocument(int theDocID)
|
Handle(TDocStd_Document) GEOM_Engine::GetDocument(int theDocID, bool force)
|
||||||
{
|
{
|
||||||
Handle(TDocStd_Document) aDoc;
|
Handle(TDocStd_Document) aDoc;
|
||||||
if(!_mapIDDocument.IsBound(theDocID)) {
|
if(_mapIDDocument.IsBound(theDocID)) {
|
||||||
|
aDoc = Handle(TDocStd_Document)::DownCast(_mapIDDocument(theDocID));
|
||||||
|
}
|
||||||
|
else if (force) {
|
||||||
_OCAFApp->NewDocument("SALOME_GEOM", aDoc);
|
_OCAFApp->NewDocument("SALOME_GEOM", aDoc);
|
||||||
aDoc->SetUndoLimit(_UndoLimit);
|
aDoc->SetUndoLimit(_UndoLimit);
|
||||||
_mapIDDocument.Bind(theDocID, aDoc);
|
_mapIDDocument.Bind(theDocID, aDoc);
|
||||||
TDataStd_Integer::Set(aDoc->Main(), theDocID);
|
TDataStd_Integer::Set(aDoc->Main(), theDocID);
|
||||||
}
|
}
|
||||||
|
return aDoc;
|
||||||
return Handle(TDocStd_Document)::DownCast(_mapIDDocument(theDocID));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
@ -219,17 +238,24 @@ int GEOM_Engine::GetDocID(Handle(TDocStd_Document) theDocument)
|
|||||||
* GetObject
|
* GetObject
|
||||||
*/
|
*/
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
Handle(GEOM_Object) GEOM_Engine::GetObject(int theDocID, char* theEntry)
|
Handle(GEOM_Object) GEOM_Engine::GetObject(int theDocID, char* theEntry, bool force)
|
||||||
{
|
{
|
||||||
|
Handle(GEOM_Object) anObject;
|
||||||
|
|
||||||
TCollection_AsciiString anID = BuildID(theDocID, theEntry);
|
TCollection_AsciiString anID = BuildID(theDocID, theEntry);
|
||||||
if(_objects.IsBound(anID)) return Handle(GEOM_Object)::DownCast(_objects(anID));
|
|
||||||
|
|
||||||
TDF_Label aLabel;
|
if (_objects.IsBound(anID)) {
|
||||||
Handle(TDocStd_Document) aDoc = GetDocument(theDocID);
|
anObject = Handle(GEOM_Object)::DownCast(_objects(anID));
|
||||||
TDF_Tool::Label(aDoc->Main().Data(), theEntry, aLabel, Standard_True);
|
}
|
||||||
Handle(GEOM_Object) anObject = new GEOM_Object(aLabel);
|
else if (force) {
|
||||||
|
Handle(TDocStd_Document) aDoc = GetDocument(theDocID, force);
|
||||||
_objects.Bind(anID, anObject);
|
if ( !aDoc.IsNull()) {
|
||||||
|
TDF_Label aLabel;
|
||||||
|
TDF_Tool::Label(aDoc->Main().Data(), theEntry, aLabel, Standard_True);
|
||||||
|
anObject = new GEOM_Object(aLabel);
|
||||||
|
_objects.Bind(anID, anObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return anObject;
|
return anObject;
|
||||||
}
|
}
|
||||||
@ -370,10 +396,12 @@ Handle(GEOM_Object) GEOM_Engine::AddSubShape(Handle(GEOM_Object) theMainShape,
|
|||||||
//=============================================================================
|
//=============================================================================
|
||||||
bool GEOM_Engine::RemoveObject(Handle(GEOM_Object) theObject)
|
bool GEOM_Engine::RemoveObject(Handle(GEOM_Object) theObject)
|
||||||
{
|
{
|
||||||
if (!theObject) return false;
|
if (theObject.IsNull()) return false;
|
||||||
|
|
||||||
int aDocID = theObject->GetDocID();
|
int aDocID = theObject->GetDocID();
|
||||||
|
if(!_mapIDDocument.IsBound(aDocID))
|
||||||
|
return false; // document is closed...
|
||||||
|
|
||||||
//Remove an object from the map of available objects
|
//Remove an object from the map of available objects
|
||||||
TCollection_AsciiString anID = BuildIDFromObject(theObject);
|
TCollection_AsciiString anID = BuildIDFromObject(theObject);
|
||||||
if (_objects.IsBound(anID)) _objects.UnBind(anID);
|
if (_objects.IsBound(anID)) _objects.UnBind(anID);
|
||||||
@ -503,11 +531,14 @@ TCollection_AsciiString GEOM_Engine::DumpPython(int theDocID,
|
|||||||
|
|
||||||
if (aDoc.IsNull()) return TCollection_AsciiString("def RebuildData(theStudy): pass\n");
|
if (aDoc.IsNull()) return TCollection_AsciiString("def RebuildData(theStudy): pass\n");
|
||||||
|
|
||||||
aScript = "import geompy\n";
|
aScript = "import GEOM\n";
|
||||||
|
aScript += "import geompy\n";
|
||||||
aScript += "import math\n";
|
aScript += "import math\n";
|
||||||
aScript += "import SALOMEDS\n\n";
|
aScript += "import SALOMEDS\n\n";
|
||||||
aScript += "def RebuildData(theStudy):";
|
aScript += "def RebuildData(theStudy):";
|
||||||
aScript += "\n\tgeompy.init_geom(theStudy)";
|
aScript += "\n\tgeompy.init_geom(theStudy)\n";
|
||||||
|
|
||||||
|
AddTextures(theDocID, aScript);
|
||||||
|
|
||||||
Standard_Integer posToInsertGlobalVars = aScript.Length() + 1;
|
Standard_Integer posToInsertGlobalVars = aScript.Length() + 1;
|
||||||
|
|
||||||
@ -556,32 +587,32 @@ TCollection_AsciiString GEOM_Engine::DumpPython(int theDocID,
|
|||||||
bool isDumpCollected = false;
|
bool isDumpCollected = false;
|
||||||
TCollection_AsciiString aCurScript, anAfterScript;
|
TCollection_AsciiString aCurScript, anAfterScript;
|
||||||
if (!ProcessFunction(aFunction, aCurScript, anAfterScript, theVariables,
|
if (!ProcessFunction(aFunction, aCurScript, anAfterScript, theVariables,
|
||||||
isPublished, aCheckedFuncMap, anIgnoreObjMap,
|
isPublished, aCheckedFuncMap, anIgnoreObjMap,
|
||||||
isDumpCollected ))
|
isDumpCollected ))
|
||||||
continue;
|
continue;
|
||||||
// add function description before dump
|
// add function description before dump
|
||||||
if (!aCurScript.IsEmpty())
|
if (!aCurScript.IsEmpty())
|
||||||
aFuncScript += aCurScript;
|
aFuncScript += aCurScript;
|
||||||
if (isDumpCollected ) {
|
if (isDumpCollected ) {
|
||||||
// Replace entries by the names
|
// Replace entries by the names
|
||||||
ReplaceEntriesByNames( aFuncScript, theObjectNames,
|
ReplaceEntriesByNames( aFuncScript, theObjectNames,
|
||||||
isPublished, anEntryToBadName, aObjListToPublish );
|
isPublished, anEntryToBadName, aObjListToPublish );
|
||||||
|
|
||||||
// publish collected objects
|
// publish collected objects
|
||||||
std::map< int, std::string > anEntryToCommandMap; // sort publishing commands by object entry
|
std::map< int, std::string > anEntryToCommandMap; // sort publishing commands by object entry
|
||||||
int i = 1, n = aObjListToPublish.Length();
|
int i = 1, n = aObjListToPublish.Length();
|
||||||
for ( ; i <= n; i++ )
|
for ( ; i <= n; i++ )
|
||||||
{
|
{
|
||||||
const TCollection_AsciiString& aEntry = aObjListToPublish.Value(i);
|
const TCollection_AsciiString& aEntry = aObjListToPublish.Value(i);
|
||||||
if (!theObjectNames.IsBound( aEntry ))
|
if (!theObjectNames.IsBound( aEntry ))
|
||||||
continue;
|
continue;
|
||||||
PublishObject( aEntry, theObjectNames.Find(aEntry),
|
PublishObject( aEntry, theObjectNames.Find(aEntry),
|
||||||
theObjectNames, aEntry2StEntry, aStEntry2Entry,
|
theObjectNames, aEntry2StEntry, aStEntry2Entry,
|
||||||
anEntryToBadName, anEntryToCommandMap, anIgnoreObjMap );
|
anEntryToBadName, anEntryToCommandMap, anIgnoreObjMap );
|
||||||
}
|
}
|
||||||
// add publishing commands to the script
|
// add publishing commands to the script
|
||||||
std::map< int, std::string >::iterator anEntryToCommand = anEntryToCommandMap.begin();
|
std::map< int, std::string >::iterator anEntryToCommand = anEntryToCommandMap.begin();
|
||||||
for ( ; anEntryToCommand != anEntryToCommandMap.end(); ++anEntryToCommand )
|
for ( ; anEntryToCommand != anEntryToCommandMap.end(); ++anEntryToCommand )
|
||||||
aFuncScript += (char*)anEntryToCommand->second.c_str();
|
aFuncScript += (char*)anEntryToCommand->second.c_str();
|
||||||
|
|
||||||
// PTv, 0020001 add result objects from RestoreSubShapes into ignore list,
|
// PTv, 0020001 add result objects from RestoreSubShapes into ignore list,
|
||||||
@ -599,9 +630,9 @@ TCollection_AsciiString GEOM_Engine::DumpPython(int theDocID,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
aObjListToPublish.Clear();
|
aObjListToPublish.Clear();
|
||||||
aScript += aFuncScript;
|
aScript += aFuncScript;
|
||||||
aFuncScript.Clear();
|
aFuncScript.Clear();
|
||||||
}
|
}
|
||||||
aFuncScript += anAfterScript;
|
aFuncScript += anAfterScript;
|
||||||
}
|
}
|
||||||
@ -615,7 +646,7 @@ TCollection_AsciiString GEOM_Engine::DumpPython(int theDocID,
|
|||||||
aScript += aFuncScript;
|
aScript += aFuncScript;
|
||||||
|
|
||||||
// ouv : NPAL12872
|
// ouv : NPAL12872
|
||||||
AddObjectColors( aDoc, aScript, theObjectNames );
|
AddObjectColors( theDocID, aScript, theObjectNames );
|
||||||
|
|
||||||
// Make script to publish in study
|
// Make script to publish in study
|
||||||
if ( isPublished )
|
if ( isPublished )
|
||||||
@ -630,8 +661,8 @@ TCollection_AsciiString GEOM_Engine::DumpPython(int theDocID,
|
|||||||
continue; // should not be dumped
|
continue; // should not be dumped
|
||||||
const TCollection_AsciiString& aName = anEntryToNameIt.Value();
|
const TCollection_AsciiString& aName = anEntryToNameIt.Value();
|
||||||
PublishObject( aEntry, aName, theObjectNames,
|
PublishObject( aEntry, aName, theObjectNames,
|
||||||
aEntry2StEntry, aStEntry2Entry,
|
aEntry2StEntry, aStEntry2Entry,
|
||||||
anEntryToBadName, anEntryToCommandMap, anIgnoreObjMap );
|
anEntryToBadName, anEntryToCommandMap, anIgnoreObjMap );
|
||||||
}
|
}
|
||||||
// add publishing commands to the script
|
// add publishing commands to the script
|
||||||
std::map< int, std::string >::iterator anEntryToCommand = anEntryToCommandMap.begin();
|
std::map< int, std::string >::iterator anEntryToCommand = anEntryToCommandMap.begin();
|
||||||
@ -695,6 +726,117 @@ Handle(TColStd_HSequenceOfAsciiString) GEOM_Engine::GetAllDumpNames() const
|
|||||||
return aRetSeq;
|
return aRetSeq;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define TEXTURE_LABEL_ID 1
|
||||||
|
#define TEXTURE_LABEL_FILE 2
|
||||||
|
#define TEXTURE_LABEL_WIDTH 3
|
||||||
|
#define TEXTURE_LABEL_HEIGHT 4
|
||||||
|
#define TEXTURE_LABEL_DATA 5
|
||||||
|
|
||||||
|
int GEOM_Engine::addTexture(int theDocID, int theWidth, int theHeight,
|
||||||
|
const Handle(TDataStd_HArray1OfByte)& theTexture,
|
||||||
|
const TCollection_AsciiString& theFileName)
|
||||||
|
{
|
||||||
|
Handle(TDocStd_Document) aDoc = GetDocument(theDocID);
|
||||||
|
Handle(TDataStd_TreeNode) aRoot = TDataStd_TreeNode::Set(aDoc->Main());
|
||||||
|
|
||||||
|
// NPAL18604: use existing label to decrease memory usage,
|
||||||
|
// if this label has been freed (object deleted)
|
||||||
|
bool useExisting = false;
|
||||||
|
TDF_Label aChild;
|
||||||
|
if (_freeLabels.find(theDocID) != _freeLabels.end()) {
|
||||||
|
std::list<TDF_Label>& aFreeLabels = _freeLabels[theDocID];
|
||||||
|
if (!aFreeLabels.empty()) {
|
||||||
|
useExisting = true;
|
||||||
|
aChild = aFreeLabels.front();
|
||||||
|
aFreeLabels.pop_front();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!useExisting) {
|
||||||
|
// create new label
|
||||||
|
aChild = TDF_TagSource::NewChild(aDoc->Main());
|
||||||
|
}
|
||||||
|
|
||||||
|
aChild.ForgetAllAttributes(Standard_True);
|
||||||
|
Handle(TDataStd_TreeNode) node;
|
||||||
|
if ( !aChild.FindAttribute(TDataStd_TreeNode::GetDefaultTreeID(), node ) )
|
||||||
|
node = TDataStd_TreeNode::Set(aChild);
|
||||||
|
TDataStd_UAttribute::Set(aChild, GetTextureGUID());
|
||||||
|
|
||||||
|
static int aTextureID = 0;
|
||||||
|
|
||||||
|
TDataStd_Integer::Set(aChild.FindChild(TEXTURE_LABEL_ID), ++aTextureID);
|
||||||
|
TDataStd_Comment::Set(aChild.FindChild(TEXTURE_LABEL_FILE), theFileName);
|
||||||
|
TDataStd_Integer::Set(aChild.FindChild(TEXTURE_LABEL_WIDTH), theWidth);
|
||||||
|
TDataStd_Integer::Set(aChild.FindChild(TEXTURE_LABEL_HEIGHT), theHeight);
|
||||||
|
|
||||||
|
Handle(TDataStd_ByteArray) anAttr =
|
||||||
|
TDataStd_ByteArray::Set(aChild.FindChild(TEXTURE_LABEL_DATA),
|
||||||
|
theTexture.IsNull() ? 0 : theTexture->Lower(),
|
||||||
|
theTexture.IsNull() ? 0 : theTexture->Upper());
|
||||||
|
anAttr->ChangeArray(theTexture);
|
||||||
|
|
||||||
|
return aTextureID;
|
||||||
|
}
|
||||||
|
|
||||||
|
Handle(TDataStd_HArray1OfByte) GEOM_Engine::getTexture(int theDocID, int theTextureID,
|
||||||
|
int& theWidth, int& theHeight,
|
||||||
|
TCollection_AsciiString& theFileName)
|
||||||
|
{
|
||||||
|
Handle(TDataStd_HArray1OfByte) anArray;
|
||||||
|
theWidth = theHeight = 0;
|
||||||
|
|
||||||
|
Handle(TDocStd_Document) aDoc = GetDocument(theDocID);
|
||||||
|
|
||||||
|
TDF_ChildIterator anIterator(aDoc->Main(), Standard_True);
|
||||||
|
bool found = false;
|
||||||
|
for (; anIterator.More() && !found; anIterator.Next()) {
|
||||||
|
TDF_Label aTextureLabel = anIterator.Value();
|
||||||
|
if (aTextureLabel.IsAttribute( GetTextureGUID())) {
|
||||||
|
TDF_Label anIDLabel = aTextureLabel.FindChild(TEXTURE_LABEL_ID, Standard_False);
|
||||||
|
Handle(TDataStd_Integer) anIdAttr;
|
||||||
|
if(!anIDLabel.IsNull() && anIDLabel.FindAttribute(TDataStd_Integer::GetID(), anIdAttr) &&
|
||||||
|
anIdAttr->Get() == theTextureID) {
|
||||||
|
TDF_Label aFileLabel = aTextureLabel.FindChild(TEXTURE_LABEL_FILE, Standard_False);
|
||||||
|
TDF_Label aWidthLabel = aTextureLabel.FindChild(TEXTURE_LABEL_WIDTH, Standard_False);
|
||||||
|
TDF_Label aHeightLabel = aTextureLabel.FindChild(TEXTURE_LABEL_HEIGHT, Standard_False);
|
||||||
|
TDF_Label aDataLabel = aTextureLabel.FindChild(TEXTURE_LABEL_DATA, Standard_False);
|
||||||
|
Handle(TDataStd_Integer) aWidthAttr, aHeightAttr;
|
||||||
|
Handle(TDataStd_ByteArray) aTextureAttr;
|
||||||
|
Handle(TDataStd_Comment) aFileAttr;
|
||||||
|
if (!aWidthLabel.IsNull() && aWidthLabel.FindAttribute(TDataStd_Integer::GetID(), aWidthAttr) &&
|
||||||
|
!aHeightLabel.IsNull() && aHeightLabel.FindAttribute(TDataStd_Integer::GetID(), aHeightAttr) &&
|
||||||
|
!aDataLabel.IsNull() && aDataLabel.FindAttribute(TDataStd_ByteArray::GetID(), aTextureAttr)) {
|
||||||
|
theWidth = aWidthAttr->Get();
|
||||||
|
theHeight = aHeightAttr->Get();
|
||||||
|
anArray = aTextureAttr->InternalArray();
|
||||||
|
}
|
||||||
|
if (!aFileLabel.IsNull() && aFileLabel.FindAttribute(TDataStd_Comment::GetID(), aFileAttr))
|
||||||
|
theFileName = aFileAttr->Get();
|
||||||
|
found = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return anArray;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::list<int> GEOM_Engine::getAllTextures(int theDocID)
|
||||||
|
{
|
||||||
|
std::list<int> id_list;
|
||||||
|
|
||||||
|
Handle(TDocStd_Document) aDoc = GetDocument(theDocID);
|
||||||
|
|
||||||
|
TDF_ChildIterator anIterator(aDoc->Main(), Standard_True);
|
||||||
|
for (; anIterator.More(); anIterator.Next()) {
|
||||||
|
TDF_Label aTextureLabel = anIterator.Value();
|
||||||
|
if (aTextureLabel.IsAttribute( GetTextureGUID())) {
|
||||||
|
TDF_Label anIDLabel = aTextureLabel.FindChild(TEXTURE_LABEL_ID, Standard_False);
|
||||||
|
Handle(TDataStd_Integer) anIdAttr;
|
||||||
|
if(!anIDLabel.IsNull() && anIDLabel.FindAttribute(TDataStd_Integer::GetID(), anIdAttr))
|
||||||
|
id_list.push_back((int)anIdAttr->Get());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return id_list;
|
||||||
|
}
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
// Internal functions
|
// Internal functions
|
||||||
@ -709,7 +851,7 @@ bool ProcessFunction(Handle(GEOM_Function)& theFunction,
|
|||||||
TCollection_AsciiString& theScript,
|
TCollection_AsciiString& theScript,
|
||||||
TCollection_AsciiString& theAfterScript,
|
TCollection_AsciiString& theAfterScript,
|
||||||
const TVariablesList& theVariables,
|
const TVariablesList& theVariables,
|
||||||
const bool theIsPublished,
|
const bool theIsPublished,
|
||||||
TDF_LabelMap& theProcessed,
|
TDF_LabelMap& theProcessed,
|
||||||
std::set<std::string>& theIgnoreObjs,
|
std::set<std::string>& theIgnoreObjs,
|
||||||
bool& theIsDumpCollected)
|
bool& theIsDumpCollected)
|
||||||
@ -887,14 +1029,14 @@ void ReplaceVariables(TCollection_AsciiString& theCommand,
|
|||||||
int aNbEntries = 1;
|
int aNbEntries = 1;
|
||||||
if( anEntry.Value( 1 ) == O_SQR_BRACKET && anEntry.Value( anEntry.Length() ) == C_SQR_BRACKET ) {
|
if( anEntry.Value( 1 ) == O_SQR_BRACKET && anEntry.Value( anEntry.Length() ) == C_SQR_BRACKET ) {
|
||||||
while(anEntry.Location(aNbEntries,COMMA,1,anEntry.Length()))
|
while(anEntry.Location(aNbEntries,COMMA,1,anEntry.Length()))
|
||||||
aNbEntries++;
|
aNbEntries++;
|
||||||
TCollection_AsciiString aSeparator(COMMA);
|
TCollection_AsciiString aSeparator(COMMA);
|
||||||
anEntry = anEntry.Token(aSeparator.ToCString(),1);
|
anEntry = anEntry.Token(aSeparator.ToCString(),1);
|
||||||
anEntry.Remove( 1, 1 );
|
anEntry.Remove( 1, 1 );
|
||||||
anEntry.RightAdjust();
|
anEntry.RightAdjust();
|
||||||
anEntry.LeftAdjust();
|
anEntry.LeftAdjust();
|
||||||
if(MYDEBUG)
|
if(MYDEBUG)
|
||||||
cout<<"Sub-entry : '" <<anEntry<<"'"<<endl;
|
cout<<"Sub-entry : '" <<anEntry<<"'"<<endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Find variables used for object construction
|
//Find variables used for object construction
|
||||||
@ -905,7 +1047,7 @@ void ReplaceVariables(TCollection_AsciiString& theCommand,
|
|||||||
|
|
||||||
if(!aStates) {
|
if(!aStates) {
|
||||||
if(MYDEBUG)
|
if(MYDEBUG)
|
||||||
cout<<"Valiables list empty!!!"<<endl;
|
cout<<"Valiables list empty!!!"<<endl;
|
||||||
aCommandIndex++;
|
aCommandIndex++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -915,7 +1057,7 @@ void ReplaceVariables(TCollection_AsciiString& theCommand,
|
|||||||
if(MYDEBUG) {
|
if(MYDEBUG) {
|
||||||
cout<<"Variables from SObject:"<<endl;
|
cout<<"Variables from SObject:"<<endl;
|
||||||
for (int i = 0; i < aVariables.size();i++)
|
for (int i = 0; i < aVariables.size();i++)
|
||||||
cout<<"\t Variable["<<i<<"] = "<<aVariables[i].myVariable<<endl;
|
cout<<"\t Variable["<<i<<"] = "<<aVariables[i].myVariable<<endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Calculate total number of parameters
|
//Calculate total number of parameters
|
||||||
@ -937,136 +1079,136 @@ void ReplaceVariables(TCollection_AsciiString& theCommand,
|
|||||||
//Replace first parameter (bettwen '(' character and first ',' character)
|
//Replace first parameter (bettwen '(' character and first ',' character)
|
||||||
if(i == aFirstParam)
|
if(i == aFirstParam)
|
||||||
{
|
{
|
||||||
aStartPos = aCommand.Location(O_BRACKET, 1, aCommand.Length()) + 1;
|
aStartPos = aCommand.Location(O_BRACKET, 1, aCommand.Length()) + 1;
|
||||||
if(aTotalNbParams - aNbEntries > 0 )
|
if(aTotalNbParams - aNbEntries > 0 )
|
||||||
aEndPos = aCommand.Location(aFirstParam, COMMA, 1, aCommand.Length());
|
aEndPos = aCommand.Location(aFirstParam, COMMA, 1, aCommand.Length());
|
||||||
else
|
else
|
||||||
aEndPos = aCommand.Location(C_BRACKET, 1, aCommand.Length());
|
aEndPos = aCommand.Location(C_BRACKET, 1, aCommand.Length());
|
||||||
}
|
}
|
||||||
//Replace last parameter (bettwen ',' character and ')' character)
|
//Replace last parameter (bettwen ',' character and ')' character)
|
||||||
else if(i == aTotalNbParams)
|
else if(i == aTotalNbParams)
|
||||||
{
|
{
|
||||||
aStartPos = aCommand.Location(i-1, COMMA, 1, aCommand.Length()) + 2;
|
aStartPos = aCommand.Location(i-1, COMMA, 1, aCommand.Length()) + 2;
|
||||||
aEndPos = aCommand.Location(C_BRACKET, 1, aCommand.Length());
|
aEndPos = aCommand.Location(C_BRACKET, 1, aCommand.Length());
|
||||||
}
|
}
|
||||||
//Replace other parameters (bettwen two ',' characters)
|
//Replace other parameters (bettwen two ',' characters)
|
||||||
else if(i != aFirstParam && i != aTotalNbParams )
|
else if(i != aFirstParam && i != aTotalNbParams )
|
||||||
{
|
{
|
||||||
aStartPos = aCommand.Location(i-1, COMMA, 1, aCommand.Length()) + 2;
|
aStartPos = aCommand.Location(i-1, COMMA, 1, aCommand.Length()) + 2;
|
||||||
aEndPos = aCommand.Location(i, COMMA, 1, aCommand.Length());
|
aEndPos = aCommand.Location(i, COMMA, 1, aCommand.Length());
|
||||||
}
|
}
|
||||||
|
|
||||||
if( aCommand.Value( aStartPos ) == O_SQR_BRACKET )
|
if( aCommand.Value( aStartPos ) == O_SQR_BRACKET )
|
||||||
aStartPos++;
|
aStartPos++;
|
||||||
if( aCommand.Value( aEndPos-1 ) == C_SQR_BRACKET )
|
if( aCommand.Value( aEndPos-1 ) == C_SQR_BRACKET )
|
||||||
aEndPos--;
|
aEndPos--;
|
||||||
if ( aStartPos == aEndPos )
|
if ( aStartPos == aEndPos )
|
||||||
continue; // PAL20889: for "[]"
|
continue; // PAL20889: for "[]"
|
||||||
|
|
||||||
if(MYDEBUG)
|
if(MYDEBUG)
|
||||||
cout<<"aStartPos = "<<aStartPos<<", aEndPos = "<<aEndPos<<endl;
|
cout<<"aStartPos = "<<aStartPos<<", aEndPos = "<<aEndPos<<endl;
|
||||||
|
|
||||||
aVar = aCommand.SubString(aStartPos, aEndPos-1);
|
aVar = aCommand.SubString(aStartPos, aEndPos-1);
|
||||||
aVar.RightAdjust();
|
aVar.RightAdjust();
|
||||||
aVar.LeftAdjust();
|
aVar.LeftAdjust();
|
||||||
|
|
||||||
if(MYDEBUG)
|
if(MYDEBUG)
|
||||||
cout<<"Variable: '"<< aVar <<"'"<<endl;
|
cout<<"Variable: '"<< aVar <<"'"<<endl;
|
||||||
|
|
||||||
// specific case for sketcher
|
// specific case for sketcher
|
||||||
if(aVar.Location( TCollection_AsciiString("Sketcher:"), 1, aVar.Length() ) != 0) {
|
if(aVar.Location( TCollection_AsciiString("Sketcher:"), 1, aVar.Length() ) != 0) {
|
||||||
Standard_Integer aNbSections = 1;
|
Standard_Integer aNbSections = 1;
|
||||||
while( aVar.Location( aNbSections, ':', 1, aVar.Length() ) )
|
while( aVar.Location( aNbSections, ':', 1, aVar.Length() ) )
|
||||||
aNbSections++;
|
aNbSections++;
|
||||||
aNbSections--;
|
aNbSections--;
|
||||||
|
|
||||||
int aStartSectionPos = 0, aEndSectionPos = 0;
|
int aStartSectionPos = 0, aEndSectionPos = 0;
|
||||||
TCollection_AsciiString aSection, aReplacedSection;
|
TCollection_AsciiString aSection, aReplacedSection;
|
||||||
for(Standard_Integer aSectionIndex = 1; aSectionIndex <= aNbSections; aSectionIndex++) {
|
for(Standard_Integer aSectionIndex = 1; aSectionIndex <= aNbSections; aSectionIndex++) {
|
||||||
aStartSectionPos = aVar.Location( aSectionIndex, ':', 1, aVar.Length() ) + 1;
|
aStartSectionPos = aVar.Location( aSectionIndex, ':', 1, aVar.Length() ) + 1;
|
||||||
if( aSectionIndex != aNbSections )
|
if( aSectionIndex != aNbSections )
|
||||||
aEndSectionPos = aVar.Location( aSectionIndex + 1, ':', 1, aVar.Length() );
|
aEndSectionPos = aVar.Location( aSectionIndex + 1, ':', 1, aVar.Length() );
|
||||||
else
|
else
|
||||||
aEndSectionPos = aVar.Length();
|
aEndSectionPos = aVar.Length();
|
||||||
|
|
||||||
aSection = aVar.SubString(aStartSectionPos, aEndSectionPos-1);
|
aSection = aVar.SubString(aStartSectionPos, aEndSectionPos-1);
|
||||||
if(MYDEBUG)
|
if(MYDEBUG)
|
||||||
cout<<"aSection: "<<aSection<<endl;
|
cout<<"aSection: "<<aSection<<endl;
|
||||||
|
|
||||||
Standard_Integer aNbParams = 1;
|
Standard_Integer aNbParams = 1;
|
||||||
while( aSection.Location( aNbParams, ' ', 1, aSection.Length() ) )
|
while( aSection.Location( aNbParams, ' ', 1, aSection.Length() ) )
|
||||||
aNbParams++;
|
aNbParams++;
|
||||||
aNbParams--;
|
aNbParams--;
|
||||||
|
|
||||||
int aStartParamPos = 0, aEndParamPos = 0;
|
int aStartParamPos = 0, aEndParamPos = 0;
|
||||||
TCollection_AsciiString aParameter, aReplacedParameter;
|
TCollection_AsciiString aParameter, aReplacedParameter;
|
||||||
for(Standard_Integer aParamIndex = 1; aParamIndex <= aNbParams; aParamIndex++) {
|
for(Standard_Integer aParamIndex = 1; aParamIndex <= aNbParams; aParamIndex++) {
|
||||||
aStartParamPos = aSection.Location( aParamIndex, ' ', 1, aSection.Length() ) + 1;
|
aStartParamPos = aSection.Location( aParamIndex, ' ', 1, aSection.Length() ) + 1;
|
||||||
if( aParamIndex != aNbParams )
|
if( aParamIndex != aNbParams )
|
||||||
aEndParamPos = aSection.Location( aParamIndex + 1, ' ', 1, aSection.Length() );
|
aEndParamPos = aSection.Location( aParamIndex + 1, ' ', 1, aSection.Length() );
|
||||||
else
|
else
|
||||||
aEndParamPos = aSection.Length() + 1;
|
aEndParamPos = aSection.Length() + 1;
|
||||||
|
|
||||||
aParameter = aSection.SubString(aStartParamPos, aEndParamPos-1);
|
aParameter = aSection.SubString(aStartParamPos, aEndParamPos-1);
|
||||||
if(MYDEBUG)
|
if(MYDEBUG)
|
||||||
cout<<"aParameter: "<<aParameter<<endl;
|
cout<<"aParameter: "<<aParameter<<endl;
|
||||||
|
|
||||||
if(iVar >= aVariables.size())
|
if(iVar >= aVariables.size())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
aReplacedParameter = aVariables[iVar].myVariable;
|
aReplacedParameter = aVariables[iVar].myVariable;
|
||||||
if(aReplacedParameter.IsEmpty()) {
|
if(aReplacedParameter.IsEmpty()) {
|
||||||
iVar++;
|
iVar++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(aVariables[iVar].isVariable) {
|
if(aVariables[iVar].isVariable) {
|
||||||
aReplacedParameter.InsertBefore(1,"'");
|
aReplacedParameter.InsertBefore(1,"'");
|
||||||
aReplacedParameter.InsertAfter(aReplacedParameter.Length(),"'");
|
aReplacedParameter.InsertAfter(aReplacedParameter.Length(),"'");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(MYDEBUG)
|
if(MYDEBUG)
|
||||||
cout<<"aSection before : "<<aSection<<endl;
|
cout<<"aSection before : "<<aSection<<endl;
|
||||||
aSection.Remove(aStartParamPos, aEndParamPos - aStartParamPos);
|
aSection.Remove(aStartParamPos, aEndParamPos - aStartParamPos);
|
||||||
aSection.Insert(aStartParamPos, aReplacedParameter);
|
aSection.Insert(aStartParamPos, aReplacedParameter);
|
||||||
if(MYDEBUG)
|
if(MYDEBUG)
|
||||||
cout<<"aSection after : "<<aSection<<endl<<endl;
|
cout<<"aSection after : "<<aSection<<endl<<endl;
|
||||||
iVar++;
|
iVar++;
|
||||||
}
|
}
|
||||||
if(MYDEBUG)
|
if(MYDEBUG)
|
||||||
cout<<"aVar before : "<<aVar<<endl;
|
cout<<"aVar before : "<<aVar<<endl;
|
||||||
aVar.Remove(aStartSectionPos, aEndSectionPos - aStartSectionPos);
|
aVar.Remove(aStartSectionPos, aEndSectionPos - aStartSectionPos);
|
||||||
aVar.Insert(aStartSectionPos, aSection);
|
aVar.Insert(aStartSectionPos, aSection);
|
||||||
if(MYDEBUG)
|
if(MYDEBUG)
|
||||||
cout<<"aVar after : "<<aVar<<endl<<endl;
|
cout<<"aVar after : "<<aVar<<endl<<endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(MYDEBUG)
|
if(MYDEBUG)
|
||||||
cout<<"aCommand before : "<<aCommand<<endl;
|
cout<<"aCommand before : "<<aCommand<<endl;
|
||||||
aCommand.Remove(aStartPos, aEndPos - aStartPos);
|
aCommand.Remove(aStartPos, aEndPos - aStartPos);
|
||||||
aCommand.Insert(aStartPos, aVar);
|
aCommand.Insert(aStartPos, aVar);
|
||||||
if(MYDEBUG)
|
if(MYDEBUG)
|
||||||
cout<<"aCommand after : "<<aCommand<<endl;
|
cout<<"aCommand after : "<<aCommand<<endl;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
} // end of specific case for sketcher
|
} // end of specific case for sketcher
|
||||||
|
|
||||||
//If parameter is entry or 'None', skip it
|
//If parameter is entry or 'None', skip it
|
||||||
if(theVariables.find(aVar) != theVariables.end() || aVar.Search(":") != -1 || aVar == PY_NULL)
|
if(theVariables.find(aVar) != theVariables.end() || aVar.Search(":") != -1 || aVar == PY_NULL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(iVar >= aVariables.size())
|
if(iVar >= aVariables.size())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
aReplacedVar = aVariables[iVar].myVariable;
|
aReplacedVar = aVariables[iVar].myVariable;
|
||||||
if(aReplacedVar.IsEmpty()) {
|
if(aReplacedVar.IsEmpty()) {
|
||||||
iVar++;
|
iVar++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(aVariables[iVar].isVariable) {
|
if(aVariables[iVar].isVariable) {
|
||||||
aReplacedVar.InsertBefore(1,"\"");
|
aReplacedVar.InsertBefore(1,"\"");
|
||||||
aReplacedVar.InsertAfter(aReplacedVar.Length(),"\"");
|
aReplacedVar.InsertAfter(aReplacedVar.Length(),"\"");
|
||||||
}
|
}
|
||||||
|
|
||||||
aCommand.Remove(aStartPos, aEndPos - aStartPos);
|
aCommand.Remove(aStartPos, aEndPos - aStartPos);
|
||||||
@ -1092,9 +1234,9 @@ void ReplaceVariables(TCollection_AsciiString& theCommand,
|
|||||||
*/
|
*/
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
void ReplaceEntriesByNames (TCollection_AsciiString& theScript,
|
void ReplaceEntriesByNames (TCollection_AsciiString& theScript,
|
||||||
Resource_DataMapOfAsciiStringAsciiString& theObjectNames,
|
Resource_DataMapOfAsciiStringAsciiString& theObjectNames,
|
||||||
const bool theIsPublished,
|
const bool theIsPublished,
|
||||||
Resource_DataMapOfAsciiStringAsciiString& theEntryToBadName,
|
Resource_DataMapOfAsciiStringAsciiString& theEntryToBadName,
|
||||||
TColStd_SequenceOfAsciiString& theObjListToPublish)
|
TColStd_SequenceOfAsciiString& theObjListToPublish)
|
||||||
{
|
{
|
||||||
Handle(TColStd_HSequenceOfInteger) aSeq = FindEntries(theScript);
|
Handle(TColStd_HSequenceOfInteger) aSeq = FindEntries(theScript);
|
||||||
@ -1164,10 +1306,13 @@ void ReplaceEntriesByNames (TCollection_AsciiString& theScript,
|
|||||||
* AddObjectColors: Add color to objects
|
* AddObjectColors: Add color to objects
|
||||||
*/
|
*/
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
void AddObjectColors (const Handle(TDocStd_Document)& theDoc,
|
void AddObjectColors (int theDocID,
|
||||||
TCollection_AsciiString& theScript,
|
TCollection_AsciiString& theScript,
|
||||||
const Resource_DataMapOfAsciiStringAsciiString& theObjectNames)
|
const Resource_DataMapOfAsciiStringAsciiString& theObjectNames)
|
||||||
{
|
{
|
||||||
|
GEOM_Engine* engine = GEOM_Engine::GetEngine();
|
||||||
|
Handle(TDocStd_Document) aDoc = engine->GetDocument(theDocID);
|
||||||
|
|
||||||
Resource_DataMapIteratorOfDataMapOfAsciiStringAsciiString anEntryToNameIt;
|
Resource_DataMapIteratorOfDataMapOfAsciiStringAsciiString anEntryToNameIt;
|
||||||
for (anEntryToNameIt.Initialize( theObjectNames );
|
for (anEntryToNameIt.Initialize( theObjectNames );
|
||||||
anEntryToNameIt.More();
|
anEntryToNameIt.More();
|
||||||
@ -1177,7 +1322,7 @@ void AddObjectColors (const Handle(TDocStd_Document)& theDoc,
|
|||||||
const TCollection_AsciiString& aName = anEntryToNameIt.Value();
|
const TCollection_AsciiString& aName = anEntryToNameIt.Value();
|
||||||
|
|
||||||
TDF_Label L;
|
TDF_Label L;
|
||||||
TDF_Tool::Label( theDoc->GetData(), aEntry, L );
|
TDF_Tool::Label( aDoc->GetData(), aEntry, L );
|
||||||
if ( L.IsNull() )
|
if ( L.IsNull() )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -1200,6 +1345,108 @@ void AddObjectColors (const Handle(TDocStd_Document)& theDoc,
|
|||||||
aCommand += aName + ".SetColor(SALOMEDS.Color(" + aColor.R + "," + aColor.G + "," + aColor.B + "))";
|
aCommand += aName + ".SetColor(SALOMEDS.Color(" + aColor.R + "," + aColor.G + "," + aColor.B + "))";
|
||||||
theScript += aCommand.ToCString();
|
theScript += aCommand.ToCString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Aspect_TypeOfMarker aMarkerType = obj->GetMarkerType();
|
||||||
|
if (aMarkerType >= Aspect_TOM_POINT && aMarkerType < Aspect_TOM_USERDEFINED) {
|
||||||
|
TCollection_AsciiString aCommand( "\n\t" );
|
||||||
|
aCommand += aName + ".SetMarkerStd(";
|
||||||
|
switch (aMarkerType) {
|
||||||
|
case Aspect_TOM_POINT: aCommand += "GEOM.MT_POINT"; break;
|
||||||
|
case Aspect_TOM_PLUS: aCommand += "GEOM.MT_PLUS"; break;
|
||||||
|
case Aspect_TOM_STAR: aCommand += "GEOM.MT_STAR"; break;
|
||||||
|
case Aspect_TOM_O: aCommand += "GEOM.MT_O"; break;
|
||||||
|
case Aspect_TOM_X: aCommand += "GEOM.MT_X"; break;
|
||||||
|
case Aspect_TOM_O_POINT: aCommand += "GEOM.MT_O_POINT"; break;
|
||||||
|
case Aspect_TOM_O_PLUS: aCommand += "GEOM.MT_O_PLUS"; break;
|
||||||
|
case Aspect_TOM_O_STAR: aCommand += "GEOM.MT_O_STAR"; break;
|
||||||
|
case Aspect_TOM_O_X: aCommand += "GEOM.MT_O_X"; break;
|
||||||
|
case Aspect_TOM_BALL: aCommand += "GEOM.MT_BALL"; break;
|
||||||
|
case Aspect_TOM_RING1: aCommand += "GEOM.MT_RING1"; break;
|
||||||
|
case Aspect_TOM_RING2: aCommand += "GEOM.MT_RING2"; break;
|
||||||
|
case Aspect_TOM_RING3: aCommand += "GEOM.MT_RING3"; break;
|
||||||
|
default: aCommand += "GEOM.MT_NONE"; break; // just for completeness, should not get here
|
||||||
|
}
|
||||||
|
aCommand += ", ";
|
||||||
|
int aSize = (int)( obj->GetMarkerSize()/0.5 ) - 1;
|
||||||
|
switch (aSize) {
|
||||||
|
case 1: aCommand += "GEOM.MS_10"; break;
|
||||||
|
case 2: aCommand += "GEOM.MS_15"; break;
|
||||||
|
case 3: aCommand += "GEOM.MS_20"; break;
|
||||||
|
case 4: aCommand += "GEOM.MS_25"; break;
|
||||||
|
case 5: aCommand += "GEOM.MS_30"; break;
|
||||||
|
case 6: aCommand += "GEOM.MS_35"; break;
|
||||||
|
case 7: aCommand += "GEOM.MS_40"; break;
|
||||||
|
case 8: aCommand += "GEOM.MS_45"; break;
|
||||||
|
case 9: aCommand += "GEOM.MS_50"; break;
|
||||||
|
case 10: aCommand += "GEOM.MS_55"; break;
|
||||||
|
case 11: aCommand += "GEOM.MS_60"; break;
|
||||||
|
case 12: aCommand += "GEOM.MS_65"; break;
|
||||||
|
case 13: aCommand += "GEOM.MS_70"; break;
|
||||||
|
default: aCommand += "GEOM.MS_NONE"; break;
|
||||||
|
}
|
||||||
|
aCommand += ")";
|
||||||
|
theScript += aCommand.ToCString();
|
||||||
|
}
|
||||||
|
else if (aMarkerType == Aspect_TOM_USERDEFINED) {
|
||||||
|
int aMarkerTextureID = obj->GetMarkerTexture();
|
||||||
|
if (aMarkerTextureID >= 0) {
|
||||||
|
TCollection_AsciiString aCommand( "\n\t" );
|
||||||
|
aCommand += aName + ".SetMarkerTexture(texture_map[";
|
||||||
|
aCommand += aMarkerTextureID;
|
||||||
|
aCommand += "])";
|
||||||
|
theScript += aCommand.ToCString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static TCollection_AsciiString pack_data(const Handle(TDataStd_HArray1OfByte)& aData )
|
||||||
|
{
|
||||||
|
TCollection_AsciiString stream;
|
||||||
|
if (!aData.IsNull()) {
|
||||||
|
for (Standard_Integer i = aData->Lower(); i <= aData->Upper(); i++) {
|
||||||
|
Standard_Byte byte = aData->Value(i);
|
||||||
|
TCollection_AsciiString strByte = "";
|
||||||
|
for (int j = 0; j < 8; j++)
|
||||||
|
strByte.Prepend((byte & (1<<j)) ? "1" : "0");
|
||||||
|
stream += strByte;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return stream;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AddTextures (int theDocID, TCollection_AsciiString& theScript)
|
||||||
|
{
|
||||||
|
GEOM_Engine* engine = GEOM_Engine::GetEngine();
|
||||||
|
std::list<int> allTextures = engine->getAllTextures(theDocID);
|
||||||
|
std::list<int>::const_iterator it;
|
||||||
|
|
||||||
|
if (allTextures.size() > 0) {
|
||||||
|
theScript += "\n\ttexture_map = {}\n";
|
||||||
|
|
||||||
|
for (it = allTextures.begin(); it != allTextures.end(); ++it) {
|
||||||
|
if (*it <= 0) continue;
|
||||||
|
Standard_Integer aWidth, aHeight;
|
||||||
|
TCollection_AsciiString aFileName;
|
||||||
|
Handle(TDataStd_HArray1OfByte) aTexture = engine->getTexture(theDocID, *it, aWidth, aHeight, aFileName);
|
||||||
|
if (aWidth > 0 && aHeight > 0 && !aTexture.IsNull() && aTexture->Length() > 0 ) {
|
||||||
|
TCollection_AsciiString aCommand = "\n\t";
|
||||||
|
aCommand += "texture_map["; aCommand += *it; aCommand += "] = ";
|
||||||
|
if (aFileName != "" ) {
|
||||||
|
aCommand += "geompy.LoadTexture(\"";
|
||||||
|
aCommand += aFileName.ToCString();
|
||||||
|
aCommand += "\")";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
aCommand += "geompy.AddTexture(";
|
||||||
|
aCommand += aWidth; aCommand += ", "; aCommand += aHeight; aCommand += ", \"";
|
||||||
|
aCommand += pack_data(aTexture);
|
||||||
|
aCommand += "\")";
|
||||||
|
}
|
||||||
|
theScript += aCommand;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
theScript += "\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1209,13 +1456,13 @@ void AddObjectColors (const Handle(TDocStd_Document)& theDoc,
|
|||||||
*/
|
*/
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
void PublishObject (const TCollection_AsciiString& theEntry,
|
void PublishObject (const TCollection_AsciiString& theEntry,
|
||||||
const TCollection_AsciiString& theName,
|
const TCollection_AsciiString& theName,
|
||||||
const Resource_DataMapOfAsciiStringAsciiString& theObjectNames,
|
const Resource_DataMapOfAsciiStringAsciiString& theObjectNames,
|
||||||
const Resource_DataMapOfAsciiStringAsciiString& theEntry2StEntry,
|
const Resource_DataMapOfAsciiStringAsciiString& theEntry2StEntry,
|
||||||
const Resource_DataMapOfAsciiStringAsciiString& theStEntry2Entry,
|
const Resource_DataMapOfAsciiStringAsciiString& theStEntry2Entry,
|
||||||
const Resource_DataMapOfAsciiStringAsciiString& theEntryToBadName,
|
const Resource_DataMapOfAsciiStringAsciiString& theEntryToBadName,
|
||||||
std::map< int, std::string >& theEntryToCommandMap,
|
std::map< int, std::string >& theEntryToCommandMap,
|
||||||
std::set<std::string>& theMapOfPublished)
|
std::set<std::string>& theMapOfPublished)
|
||||||
{
|
{
|
||||||
if ( !theEntry2StEntry.IsBound( theEntry ))
|
if ( !theEntry2StEntry.IsBound( theEntry ))
|
||||||
return; // was not published
|
return; // was not published
|
||||||
|
@ -37,6 +37,8 @@
|
|||||||
#include <list>
|
#include <list>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
class Handle_TDataStd_HArray1OfByte;
|
||||||
|
|
||||||
struct TVariable{
|
struct TVariable{
|
||||||
TCollection_AsciiString myVariable;
|
TCollection_AsciiString myVariable;
|
||||||
bool isVariable;
|
bool isVariable;
|
||||||
@ -80,7 +82,7 @@ class GEOM_Engine
|
|||||||
Standard_EXPORT static GEOM_Engine* GetEngine();
|
Standard_EXPORT static GEOM_Engine* GetEngine();
|
||||||
|
|
||||||
//Returns the OCAF document by its ID, if document doesn't exists it will be created
|
//Returns the OCAF document by its ID, if document doesn't exists it will be created
|
||||||
Standard_EXPORT Handle(TDocStd_Document) GetDocument(int theDocID);
|
Standard_EXPORT Handle(TDocStd_Document) GetDocument(int theDocID, bool force=true);
|
||||||
|
|
||||||
//Returns the ID of the given OCAF document
|
//Returns the ID of the given OCAF document
|
||||||
Standard_EXPORT int GetDocID(Handle(TDocStd_Document) theDocument);
|
Standard_EXPORT int GetDocID(Handle(TDocStd_Document) theDocument);
|
||||||
@ -89,7 +91,7 @@ class GEOM_Engine
|
|||||||
Standard_EXPORT Handle(TDocStd_Application) GetApplication() { return _OCAFApp; }
|
Standard_EXPORT Handle(TDocStd_Application) GetApplication() { return _OCAFApp; }
|
||||||
|
|
||||||
//Returns a pointer to GEOM_Object defined by a document and the entry
|
//Returns a pointer to GEOM_Object defined by a document and the entry
|
||||||
Standard_EXPORT Handle(GEOM_Object) GetObject(int theDocID, char* theEntry);
|
Standard_EXPORT Handle(GEOM_Object) GetObject(int theDocID, char* theEntry, bool force=true);
|
||||||
|
|
||||||
//Adds a new object of the type theType in the OCAF document
|
//Adds a new object of the type theType in the OCAF document
|
||||||
Standard_EXPORT Handle(GEOM_Object) AddObject(int theDocID, int theType);
|
Standard_EXPORT Handle(GEOM_Object) AddObject(int theDocID, int theType);
|
||||||
@ -117,19 +119,31 @@ class GEOM_Engine
|
|||||||
|
|
||||||
//Adds a new sub shape object of the MainShape object
|
//Adds a new sub shape object of the MainShape object
|
||||||
Standard_EXPORT Handle(GEOM_Object) AddSubShape(Handle(GEOM_Object) theMainShape,
|
Standard_EXPORT Handle(GEOM_Object) AddSubShape(Handle(GEOM_Object) theMainShape,
|
||||||
Handle(TColStd_HArray1OfInteger) theIndices,
|
Handle(TColStd_HArray1OfInteger) theIndices,
|
||||||
bool isStandaloneOperation = false);
|
bool isStandaloneOperation = false);
|
||||||
|
|
||||||
Standard_EXPORT TCollection_AsciiString DumpPython(int theDocID,
|
Standard_EXPORT TCollection_AsciiString DumpPython(int theDocID,
|
||||||
Resource_DataMapOfAsciiStringAsciiString& theObjectNames,
|
Resource_DataMapOfAsciiStringAsciiString& theObjectNames,
|
||||||
TVariablesList theVariables,
|
TVariablesList theVariables,
|
||||||
bool isPublished,
|
bool isPublished,
|
||||||
bool& aValidScript);
|
bool& aValidScript);
|
||||||
|
|
||||||
Standard_EXPORT const char* GetDumpName (const char* theStudyEntry) const;
|
Standard_EXPORT const char* GetDumpName (const char* theStudyEntry) const;
|
||||||
|
|
||||||
Standard_EXPORT Handle(TColStd_HSequenceOfAsciiString) GetAllDumpNames() const;
|
Standard_EXPORT Handle(TColStd_HSequenceOfAsciiString) GetAllDumpNames() const;
|
||||||
|
|
||||||
|
Standard_EXPORT int addTexture(int theDocID, int theWidth, int theHeight,
|
||||||
|
const Handle(TDataStd_HArray1OfByte)& theTexture,
|
||||||
|
const TCollection_AsciiString& theFileName = "");
|
||||||
|
|
||||||
|
Standard_EXPORT Handle(TDataStd_HArray1OfByte) getTexture(int theDocID, int theTextureID,
|
||||||
|
int& theWidth, int& theHeight,
|
||||||
|
TCollection_AsciiString& theFileName);
|
||||||
|
|
||||||
|
Standard_EXPORT std::list<int> getAllTextures(int theDocID);
|
||||||
|
|
||||||
|
static const Standard_GUID& GetTextureGUID();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Standard_EXPORT static void SetEngine(GEOM_Engine* theEngine);
|
Standard_EXPORT static void SetEngine(GEOM_Engine* theEngine);
|
||||||
|
|
||||||
|
@ -727,10 +727,10 @@ Standard_EXPORT Handle_Standard_Type& GEOM_Function_Type_()
|
|||||||
|
|
||||||
static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,NULL};
|
static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,NULL};
|
||||||
static Handle_Standard_Type _aType = new Standard_Type("GEOM_Function",
|
static Handle_Standard_Type _aType = new Standard_Type("GEOM_Function",
|
||||||
sizeof(GEOM_Function),
|
sizeof(GEOM_Function),
|
||||||
1,
|
1,
|
||||||
(Standard_Address)_Ancestors,
|
(Standard_Address)_Ancestors,
|
||||||
(Standard_Address)NULL);
|
(Standard_Address)NULL);
|
||||||
|
|
||||||
return _aType;
|
return _aType;
|
||||||
}
|
}
|
||||||
|
@ -33,11 +33,13 @@
|
|||||||
#include <TDocStd_Owner.hxx>
|
#include <TDocStd_Owner.hxx>
|
||||||
#include <TDocStd_Document.hxx>
|
#include <TDocStd_Document.hxx>
|
||||||
#include <TDataStd_Integer.hxx>
|
#include <TDataStd_Integer.hxx>
|
||||||
|
#include <TDataStd_Real.hxx>
|
||||||
#include <TDataStd_ChildNodeIterator.hxx>
|
#include <TDataStd_ChildNodeIterator.hxx>
|
||||||
#include <TDataStd_UAttribute.hxx>
|
#include <TDataStd_UAttribute.hxx>
|
||||||
#include <TDataStd_Name.hxx>
|
#include <TDataStd_Name.hxx>
|
||||||
#include <TDataStd_Comment.hxx>
|
#include <TDataStd_Comment.hxx>
|
||||||
#include <TDataStd_RealArray.hxx>
|
#include <TDataStd_RealArray.hxx>
|
||||||
|
#include <TDataStd_ByteArray.hxx>
|
||||||
#include <TColStd_HArray1OfReal.hxx>
|
#include <TColStd_HArray1OfReal.hxx>
|
||||||
#include <TCollection_AsciiString.hxx>
|
#include <TCollection_AsciiString.hxx>
|
||||||
#include <TCollection_ExtendedString.hxx>
|
#include <TCollection_ExtendedString.hxx>
|
||||||
@ -45,11 +47,16 @@
|
|||||||
#include <TopExp.hxx>
|
#include <TopExp.hxx>
|
||||||
|
|
||||||
#define FUNCTION_LABEL(theNb) (_label.FindChild(1).FindChild((theNb)))
|
#define FUNCTION_LABEL(theNb) (_label.FindChild(1).FindChild((theNb)))
|
||||||
#define TYPE_LABEL 2
|
#define TYPE_LABEL 2
|
||||||
#define FREE_LABEL 3
|
#define FREE_LABEL 3
|
||||||
#define TIC_LABEL 4
|
#define TIC_LABEL 4
|
||||||
#define COLOR_LABEL 5
|
#define COLOR_LABEL 5
|
||||||
#define AUTO_COLOR_LABEL 6
|
#define AUTO_COLOR_LABEL 6
|
||||||
|
#define MARKER_LABEL 7
|
||||||
|
|
||||||
|
#define MARKER_LABEL_TYPE 1
|
||||||
|
#define MARKER_LABEL_SIZE 2
|
||||||
|
#define MARKER_LABEL_ID 3
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : GetObjectID
|
//function : GetObjectID
|
||||||
@ -140,8 +147,14 @@ Handle(GEOM_Object) GEOM_Object::GetReferencedObject(TDF_Label& theLabel)
|
|||||||
*/
|
*/
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
GEOM_Object::GEOM_Object(TDF_Label& theEntry)
|
GEOM_Object::GEOM_Object(TDF_Label& theEntry)
|
||||||
: _label(theEntry), _ior("")
|
: _label(theEntry), _ior(""), _docID(-1)
|
||||||
{
|
{
|
||||||
|
Handle(TDocStd_Document) aDoc = TDocStd_Owner::GetDocument(_label.Data());
|
||||||
|
if(!aDoc.IsNull()) {
|
||||||
|
Handle(TDataStd_Integer) anID;
|
||||||
|
if(aDoc->Main().FindAttribute(TDataStd_Integer::GetID(), anID)) _docID = anID->Get();
|
||||||
|
}
|
||||||
|
|
||||||
if(!theEntry.FindAttribute(TDataStd_TreeNode::GetDefaultTreeID(), _root))
|
if(!theEntry.FindAttribute(TDataStd_TreeNode::GetDefaultTreeID(), _root))
|
||||||
_root = TDataStd_TreeNode::Set(theEntry);
|
_root = TDataStd_TreeNode::Set(theEntry);
|
||||||
}
|
}
|
||||||
@ -152,8 +165,14 @@ GEOM_Object::GEOM_Object(TDF_Label& theEntry)
|
|||||||
*/
|
*/
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
GEOM_Object::GEOM_Object(TDF_Label& theEntry, int theType)
|
GEOM_Object::GEOM_Object(TDF_Label& theEntry, int theType)
|
||||||
: _label(theEntry), _ior("")
|
: _label(theEntry), _ior(""), _docID(-1)
|
||||||
{
|
{
|
||||||
|
Handle(TDocStd_Document) aDoc = TDocStd_Owner::GetDocument(_label.Data());
|
||||||
|
if(!aDoc.IsNull()) {
|
||||||
|
Handle(TDataStd_Integer) anID;
|
||||||
|
if(aDoc->Main().FindAttribute(TDataStd_Integer::GetID(), anID)) _docID = anID->Get();
|
||||||
|
}
|
||||||
|
|
||||||
theEntry.ForgetAllAttributes(Standard_True);
|
theEntry.ForgetAllAttributes(Standard_True);
|
||||||
|
|
||||||
if(!theEntry.FindAttribute(TDataStd_TreeNode::GetDefaultTreeID(), _root))
|
if(!theEntry.FindAttribute(TDataStd_TreeNode::GetDefaultTreeID(), _root))
|
||||||
@ -255,13 +274,7 @@ void GEOM_Object::IncrementTic()
|
|||||||
//=============================================================================
|
//=============================================================================
|
||||||
int GEOM_Object::GetDocID()
|
int GEOM_Object::GetDocID()
|
||||||
{
|
{
|
||||||
Handle(TDocStd_Document) aDoc = TDocStd_Owner::GetDocument(_label.Data());
|
return _docID;
|
||||||
if(aDoc.IsNull()) return -1;
|
|
||||||
|
|
||||||
Handle(TDataStd_Integer) anID;
|
|
||||||
if(!aDoc->Main().FindAttribute(TDataStd_Integer::GetID(), anID)) return -1;
|
|
||||||
|
|
||||||
return anID->Get();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -368,6 +381,96 @@ CORBA::Boolean GEOM_Object::GetAutoColor()
|
|||||||
return anAutoColor->Get();
|
return anAutoColor->Get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* SetMarkerStd
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
void GEOM_Object::SetMarkerStd(const Aspect_TypeOfMarker theType, double theSize)
|
||||||
|
{
|
||||||
|
TDF_Label aMarkerLabel = _label.FindChild(MARKER_LABEL);
|
||||||
|
TDataStd_Integer::Set(aMarkerLabel.FindChild(MARKER_LABEL_TYPE), (int)theType);
|
||||||
|
TDataStd_Real::Set(aMarkerLabel.FindChild(MARKER_LABEL_SIZE), theSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* SetMarkerTexture
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
void GEOM_Object::SetMarkerTexture(int theTextureId)
|
||||||
|
{
|
||||||
|
TDF_Label aMarkerLabel = _label.FindChild(MARKER_LABEL);
|
||||||
|
TDataStd_Integer::Set(aMarkerLabel.FindChild(MARKER_LABEL_TYPE), (int)Aspect_TOM_USERDEFINED);
|
||||||
|
TDataStd_Integer::Set(aMarkerLabel.FindChild(MARKER_LABEL_ID), theTextureId);
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* GetMarkerType
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
Aspect_TypeOfMarker GEOM_Object::GetMarkerType()
|
||||||
|
{
|
||||||
|
Standard_Integer aType = -1;
|
||||||
|
TDF_Label aMarkerLabel = _label.FindChild(MARKER_LABEL, Standard_False);
|
||||||
|
if(!aMarkerLabel.IsNull()) {
|
||||||
|
TDF_Label aTypeLabel = aMarkerLabel.FindChild(MARKER_LABEL_TYPE, Standard_False);
|
||||||
|
Handle(TDataStd_Integer) aTypeAttr;
|
||||||
|
if (!aTypeLabel.IsNull() && aTypeLabel.FindAttribute(TDataStd_Integer::GetID(), aTypeAttr))
|
||||||
|
aType = aTypeAttr->Get();
|
||||||
|
}
|
||||||
|
return (Aspect_TypeOfMarker)aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* GetMarkerSize
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
double GEOM_Object::GetMarkerSize()
|
||||||
|
{
|
||||||
|
Standard_Real aSize = 0.;
|
||||||
|
TDF_Label aMarkerLabel = _label.FindChild(MARKER_LABEL, Standard_False);
|
||||||
|
if(!aMarkerLabel.IsNull()) {
|
||||||
|
TDF_Label aSizeLabel = aMarkerLabel.FindChild(MARKER_LABEL_SIZE, Standard_False);
|
||||||
|
Handle(TDataStd_Real) aSizeAttr;
|
||||||
|
if (!aSizeLabel.IsNull() && aSizeLabel.FindAttribute(TDataStd_Real::GetID(), aSizeAttr))
|
||||||
|
aSize = aSizeAttr->Get();
|
||||||
|
}
|
||||||
|
return aSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* GetMarkerTexture
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
int GEOM_Object::GetMarkerTexture()
|
||||||
|
{
|
||||||
|
Standard_Integer anId = 0;
|
||||||
|
if ( GetMarkerType() == Aspect_TOM_USERDEFINED) {
|
||||||
|
TDF_Label aMarkerLabel = _label.FindChild(MARKER_LABEL, Standard_False);
|
||||||
|
if(!aMarkerLabel.IsNull()) {
|
||||||
|
TDF_Label aTypeLabel = aMarkerLabel.FindChild(MARKER_LABEL_ID, Standard_False);
|
||||||
|
Handle(TDataStd_Integer) anIdAttr;
|
||||||
|
if (!aTypeLabel.IsNull() && aTypeLabel.FindAttribute(TDataStd_Integer::GetID(), anIdAttr))
|
||||||
|
anId = anIdAttr->Get();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return anId;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* SetAuxData
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
void GEOM_Object::UnsetMarker()
|
||||||
|
{
|
||||||
|
SetMarkerStd((Aspect_TypeOfMarker)-1, 0.);
|
||||||
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
* SetAuxData
|
* SetAuxData
|
||||||
@ -568,10 +671,10 @@ Standard_EXPORT Handle_Standard_Type& GEOM_Object_Type_()
|
|||||||
|
|
||||||
static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,NULL};
|
static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,NULL};
|
||||||
static Handle_Standard_Type _aType = new Standard_Type("GEOM_Object",
|
static Handle_Standard_Type _aType = new Standard_Type("GEOM_Object",
|
||||||
sizeof(GEOM_Object),
|
sizeof(GEOM_Object),
|
||||||
1,
|
1,
|
||||||
(Standard_Address)_Ancestors,
|
(Standard_Address)_Ancestors,
|
||||||
(Standard_Address)NULL);
|
(Standard_Address)NULL);
|
||||||
return _aType;
|
return _aType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,6 +55,9 @@
|
|||||||
#ifndef _TCollection_AsciiString_HeaderFile
|
#ifndef _TCollection_AsciiString_HeaderFile
|
||||||
#include <TCollection_AsciiString.hxx>
|
#include <TCollection_AsciiString.hxx>
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef _Aspect_TypeOfMarker_HeaderFile
|
||||||
|
#include <Aspect_TypeOfMarker.hxx>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "SALOMEconfig.h"
|
#include "SALOMEconfig.h"
|
||||||
#include CORBA_SERVER_HEADER(SALOMEDS)
|
#include CORBA_SERVER_HEADER(SALOMEDS)
|
||||||
@ -215,6 +218,24 @@ class GEOM_Object : public MMgt_TShared
|
|||||||
//Returns a flag of auto color mode of this GEOM_Object
|
//Returns a flag of auto color mode of this GEOM_Object
|
||||||
Standard_EXPORT CORBA::Boolean GetAutoColor();
|
Standard_EXPORT CORBA::Boolean GetAutoColor();
|
||||||
|
|
||||||
|
//Sets predefined point marker texture
|
||||||
|
Standard_EXPORT void SetMarkerStd(const Aspect_TypeOfMarker theType, double theSize);
|
||||||
|
|
||||||
|
//Sets custom point marker texture
|
||||||
|
Standard_EXPORT void SetMarkerTexture(int theTextureId);
|
||||||
|
|
||||||
|
//Gets point marker type
|
||||||
|
Standard_EXPORT Aspect_TypeOfMarker GetMarkerType();
|
||||||
|
|
||||||
|
//Gets point marker scale factor / size
|
||||||
|
Standard_EXPORT double GetMarkerSize();
|
||||||
|
|
||||||
|
//Gets custom marker texture ID
|
||||||
|
Standard_EXPORT int GetMarkerTexture();
|
||||||
|
|
||||||
|
//Unsets point marker
|
||||||
|
Standard_EXPORT void UnsetMarker();
|
||||||
|
|
||||||
//Sets an auxiliary data
|
//Sets an auxiliary data
|
||||||
Standard_EXPORT void SetAuxData(const char* theData);
|
Standard_EXPORT void SetAuxData(const char* theData);
|
||||||
|
|
||||||
@ -279,6 +300,7 @@ class GEOM_Object : public MMgt_TShared
|
|||||||
TDF_Label _label;
|
TDF_Label _label;
|
||||||
TCollection_AsciiString _ior;
|
TCollection_AsciiString _ior;
|
||||||
TCollection_AsciiString _parameters;
|
TCollection_AsciiString _parameters;
|
||||||
|
int _docID;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -60,11 +60,11 @@ bool GEOM_Solver::ComputeFunction(Handle(GEOM_Function) theFunction)
|
|||||||
|
|
||||||
Handle(TFunction_Driver) aDriver;
|
Handle(TFunction_Driver) aDriver;
|
||||||
if(!TFunction_DriverTable::Get()->FindDriver(aGUID, aDriver)) return false;
|
if(!TFunction_DriverTable::Get()->FindDriver(aGUID, aDriver)) return false;
|
||||||
|
|
||||||
aDriver->Init(theFunction->GetEntry());
|
aDriver->Init(theFunction->GetEntry());
|
||||||
|
|
||||||
TFunction_Logbook aLog;
|
TFunction_Logbook aLog;
|
||||||
if(aDriver->Execute(aLog) == 0) return false;
|
if(aDriver->Execute(aLog) == 0) return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -101,11 +101,11 @@ Standard_Integer GEOM_SubShapeDriver::Execute(TFunction_Logbook& log) const
|
|||||||
B.MakeCompound(aCompound);
|
B.MakeCompound(aCompound);
|
||||||
|
|
||||||
for (int i = anIndices->Lower(); i<= anIndices->Upper(); i++) {
|
for (int i = anIndices->Lower(); i<= anIndices->Upper(); i++) {
|
||||||
if (aMapOfShapes.Extent() < anIndices->Value(i))
|
if (aMapOfShapes.Extent() < anIndices->Value(i))
|
||||||
Standard_NullObject::Raise("GEOM_SubShapeDriver::Execute: Index is out of range");
|
Standard_NullObject::Raise("GEOM_SubShapeDriver::Execute: Index is out of range");
|
||||||
TopoDS_Shape aSubShape = aMapOfShapes.FindKey(anIndices->Value(i));
|
TopoDS_Shape aSubShape = aMapOfShapes.FindKey(anIndices->Value(i));
|
||||||
if (aSubShape.IsNull()) continue;
|
if (aSubShape.IsNull()) continue;
|
||||||
B.Add(aCompound,aSubShape);
|
B.Add(aCompound,aSubShape);
|
||||||
}
|
}
|
||||||
|
|
||||||
aShape = aCompound;
|
aShape = aCompound;
|
||||||
@ -145,10 +145,10 @@ Standard_EXPORT Handle_Standard_Type& GEOM_SubShapeDriver_Type_()
|
|||||||
|
|
||||||
static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
|
static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
|
||||||
static Handle_Standard_Type _aType = new Standard_Type("GEOM_SubShapeDriver",
|
static Handle_Standard_Type _aType = new Standard_Type("GEOM_SubShapeDriver",
|
||||||
sizeof(GEOM_SubShapeDriver),
|
sizeof(GEOM_SubShapeDriver),
|
||||||
1,
|
1,
|
||||||
(Standard_Address)_Ancestors,
|
(Standard_Address)_Ancestors,
|
||||||
(Standard_Address)NULL);
|
(Standard_Address)NULL);
|
||||||
|
|
||||||
return _aType;
|
return _aType;
|
||||||
}
|
}
|
||||||
|
@ -19,11 +19,9 @@
|
|||||||
//
|
//
|
||||||
// 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: GEOMAlgo_Splitter.cxx
|
// File: GEOMAlgo_Splitter.cxx
|
||||||
// Created:
|
// Author: Peter KURNEV
|
||||||
// Author: Peter KURNEV
|
|
||||||
// <pkv@irinox>
|
|
||||||
//
|
|
||||||
#include <GEOMAlgo_Splitter.ixx>
|
#include <GEOMAlgo_Splitter.ixx>
|
||||||
|
|
||||||
#include <TopAbs_ShapeEnum.hxx>
|
#include <TopAbs_ShapeEnum.hxx>
|
||||||
@ -45,13 +43,13 @@
|
|||||||
#include <BOP_CorrectTolerances.hxx>
|
#include <BOP_CorrectTolerances.hxx>
|
||||||
|
|
||||||
|
|
||||||
static
|
static
|
||||||
void TreatCompound(const TopoDS_Shape& aC,
|
void TreatCompound(const TopoDS_Shape& aC,
|
||||||
TopTools_ListOfShape& aLSX);
|
TopTools_ListOfShape& aLSX);
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function :
|
//function :
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
GEOMAlgo_Splitter::GEOMAlgo_Splitter()
|
GEOMAlgo_Splitter::GEOMAlgo_Splitter()
|
||||||
:
|
:
|
||||||
@ -62,14 +60,14 @@ static
|
|||||||
}
|
}
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : ~
|
//function : ~
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
GEOMAlgo_Splitter::~GEOMAlgo_Splitter()
|
GEOMAlgo_Splitter::~GEOMAlgo_Splitter()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : AddToolCompound
|
//function : AddToolCompound
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
void GEOMAlgo_Splitter::AddToolCompound(const TopoDS_Shape& theShape)
|
void GEOMAlgo_Splitter::AddToolCompound(const TopoDS_Shape& theShape)
|
||||||
{
|
{
|
||||||
@ -83,7 +81,7 @@ static
|
|||||||
}
|
}
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : AddTool
|
//function : AddTool
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
void GEOMAlgo_Splitter::AddTool(const TopoDS_Shape& theShape)
|
void GEOMAlgo_Splitter::AddTool(const TopoDS_Shape& theShape)
|
||||||
{
|
{
|
||||||
@ -95,7 +93,7 @@ static
|
|||||||
}
|
}
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : Tools
|
//function : Tools
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
const TopTools_ListOfShape& GEOMAlgo_Splitter::Tools()const
|
const TopTools_ListOfShape& GEOMAlgo_Splitter::Tools()const
|
||||||
{
|
{
|
||||||
@ -103,15 +101,15 @@ static
|
|||||||
}
|
}
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : SetLimit
|
//function : SetLimit
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
void GEOMAlgo_Splitter::SetLimit(const TopAbs_ShapeEnum aLimit)
|
void GEOMAlgo_Splitter::SetLimit(const TopAbs_ShapeEnum aLimit)
|
||||||
{
|
{
|
||||||
myLimit=aLimit;
|
myLimit=aLimit;
|
||||||
}
|
}
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : Limit
|
//function : Limit
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
TopAbs_ShapeEnum GEOMAlgo_Splitter::Limit()const
|
TopAbs_ShapeEnum GEOMAlgo_Splitter::Limit()const
|
||||||
{
|
{
|
||||||
@ -119,7 +117,7 @@ static
|
|||||||
}
|
}
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : SetLimitMode
|
//function : SetLimitMode
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
void GEOMAlgo_Splitter::SetLimitMode(const Standard_Integer aMode)
|
void GEOMAlgo_Splitter::SetLimitMode(const Standard_Integer aMode)
|
||||||
{
|
{
|
||||||
@ -127,7 +125,7 @@ static
|
|||||||
}
|
}
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : LimitMode
|
//function : LimitMode
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
Standard_Integer GEOMAlgo_Splitter::LimitMode()const
|
Standard_Integer GEOMAlgo_Splitter::LimitMode()const
|
||||||
{
|
{
|
||||||
@ -135,7 +133,7 @@ static
|
|||||||
}
|
}
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : Clear
|
//function : Clear
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
void GEOMAlgo_Splitter::Clear()
|
void GEOMAlgo_Splitter::Clear()
|
||||||
{
|
{
|
||||||
@ -146,7 +144,7 @@ static
|
|||||||
}
|
}
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : BuildResult
|
//function : BuildResult
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
void GEOMAlgo_Splitter::BuildResult(const TopAbs_ShapeEnum theType)
|
void GEOMAlgo_Splitter::BuildResult(const TopAbs_ShapeEnum theType)
|
||||||
{
|
{
|
||||||
@ -163,26 +161,26 @@ static
|
|||||||
aType=aS.ShapeType();
|
aType=aS.ShapeType();
|
||||||
if (aType==theType && !myMapTools.Contains(aS)) {
|
if (aType==theType && !myMapTools.Contains(aS)) {
|
||||||
if (myImages.HasImage(aS)) {
|
if (myImages.HasImage(aS)) {
|
||||||
const TopTools_ListOfShape& aLSIm=myImages.Image(aS);
|
const TopTools_ListOfShape& aLSIm=myImages.Image(aS);
|
||||||
aItIm.Initialize(aLSIm);
|
aItIm.Initialize(aLSIm);
|
||||||
for (; aItIm.More(); aItIm.Next()) {
|
for (; aItIm.More(); aItIm.Next()) {
|
||||||
const TopoDS_Shape& aSIm=aItIm.Value();
|
const TopoDS_Shape& aSIm=aItIm.Value();
|
||||||
if (aM.Add(aSIm)) {
|
if (aM.Add(aSIm)) {
|
||||||
aBB.Add(myShape, aSIm);
|
aBB.Add(myShape, aSIm);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (aM.Add(aS)) {
|
if (aM.Add(aS)) {
|
||||||
aBB.Add(myShape, aS);
|
aBB.Add(myShape, aS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : PostTreat
|
//function : PostTreat
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
void GEOMAlgo_Splitter::PostTreat()
|
void GEOMAlgo_Splitter::PostTreat()
|
||||||
{
|
{
|
||||||
@ -200,7 +198,7 @@ static
|
|||||||
const TopoDS_Shape& aS=aMx(i);
|
const TopoDS_Shape& aS=aMx(i);
|
||||||
aBB.Add(aC, aS);
|
aBB.Add(aC, aS);
|
||||||
}
|
}
|
||||||
//modified by NIZNHY-PKV Thu Feb 15 17:09:32 2007f
|
//
|
||||||
if (myLimitMode) {
|
if (myLimitMode) {
|
||||||
Standard_Integer iType, iLimit, iTypeX;
|
Standard_Integer iType, iLimit, iTypeX;
|
||||||
TopAbs_ShapeEnum aType, aTypeX;
|
TopAbs_ShapeEnum aType, aTypeX;
|
||||||
@ -208,63 +206,77 @@ static
|
|||||||
TopTools_ListIteratorOfListOfShape aIt, aItX, aItIm;
|
TopTools_ListIteratorOfListOfShape aIt, aItX, aItIm;
|
||||||
TopTools_MapOfShape aM;
|
TopTools_MapOfShape aM;
|
||||||
//
|
//
|
||||||
iLimit=(Standard_Integer)myLimit;
|
iLimit=(Standard_Integer)myLimit;
|
||||||
//
|
//
|
||||||
// 1. Collect the shapes to process aLSP
|
// 1. Collect the shapes to process aLSP
|
||||||
aIt.Initialize(myShapes);
|
aIt.Initialize(myShapes);
|
||||||
for (; aIt.More(); aIt.Next()) {
|
for (; aIt.More(); aIt.Next()) {
|
||||||
const TopoDS_Shape& aS=aIt.Value();
|
const TopoDS_Shape& aS=aIt.Value();
|
||||||
if (myMapTools.Contains(aS)) {
|
if (myMapTools.Contains(aS)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
aType=aS.ShapeType();
|
aType=aS.ShapeType();
|
||||||
iType=(Standard_Integer)aType;
|
iType=(Standard_Integer)aType;
|
||||||
//
|
//
|
||||||
if (iType>iLimit) {
|
if (iType>iLimit) {
|
||||||
aLSP.Append(aS);
|
aLSP.Append(aS);
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
else if (aType==TopAbs_COMPOUND) {
|
else if (aType==TopAbs_COMPOUND) {
|
||||||
aLSX.Clear();
|
aLSX.Clear();
|
||||||
//
|
//
|
||||||
TreatCompound(aS, aLSX);
|
TreatCompound(aS, aLSX);
|
||||||
//
|
//
|
||||||
aItX.Initialize(aLSX);
|
aItX.Initialize(aLSX);
|
||||||
for (; aItX.More(); aItX.Next()) {
|
for (; aItX.More(); aItX.Next()) {
|
||||||
const TopoDS_Shape& aSX=aItX.Value();
|
const TopoDS_Shape& aSX=aItX.Value();
|
||||||
aTypeX=aSX.ShapeType();
|
aTypeX=aSX.ShapeType();
|
||||||
iTypeX=(Standard_Integer)aTypeX;
|
iTypeX=(Standard_Integer)aTypeX;
|
||||||
//
|
//
|
||||||
if (iTypeX>iLimit) {
|
if (iTypeX>iLimit) {
|
||||||
aLSP.Append(aSX);
|
aLSP.Append(aSX);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}// for (; aIt.More(); aIt.Next()) {
|
}// for (; aIt.More(); aIt.Next()) {
|
||||||
//
|
//
|
||||||
|
//modified by NIZNHY-PKV Fri Oct 30 11:07:08 2009 f
|
||||||
|
aMx.Clear();
|
||||||
|
TopExp::MapShapes(aC, aMx);
|
||||||
|
//modified by NIZNHY-PKV Fri Oct 30 11:12:30 2009t
|
||||||
|
//
|
||||||
// 2. Add them to aC
|
// 2. Add them to aC
|
||||||
aIt.Initialize(aLSP);
|
aIt.Initialize(aLSP);
|
||||||
for (; aIt.More(); aIt.Next()) {
|
for (; aIt.More(); aIt.Next()) {
|
||||||
const TopoDS_Shape& aS=aIt.Value();
|
const TopoDS_Shape& aS=aIt.Value();
|
||||||
if (myImages.HasImage(aS)) {
|
if (myImages.HasImage(aS)) {
|
||||||
const TopTools_ListOfShape& aLSIm=myImages.Image(aS);
|
const TopTools_ListOfShape& aLSIm=myImages.Image(aS);
|
||||||
aItIm.Initialize(aLSIm);
|
aItIm.Initialize(aLSIm);
|
||||||
for (; aItIm.More(); aItIm.Next()) {
|
for (; aItIm.More(); aItIm.Next()) {
|
||||||
const TopoDS_Shape& aSIm=aItIm.Value();
|
const TopoDS_Shape& aSIm=aItIm.Value();
|
||||||
if (aM.Add(aSIm)) {
|
if (aM.Add(aSIm)) {
|
||||||
aBB.Add(aC, aSIm);
|
//modified by NIZNHY-PKV Fri Oct 30 11:09:57 2009f
|
||||||
}
|
if (!aMx.Contains(aSIm)) {
|
||||||
}
|
aBB.Add(aC, aSIm);
|
||||||
}
|
}
|
||||||
else {
|
//aBB.Add(aC, aSIm);
|
||||||
if (aM.Add(aS)) {
|
//modified by NIZNHY-PKV Fri Oct 30 11:10:02 2009
|
||||||
aBB.Add(aC, aS);
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
if (aM.Add(aS)) {
|
||||||
|
//modified by NIZNHY-PKV Fri Oct 30 11:10:46 2009f
|
||||||
|
if (!aMx.Contains(aS)) {
|
||||||
|
aBB.Add(aC, aS);
|
||||||
|
}
|
||||||
|
//aBB.Add(aC, aS);
|
||||||
|
//modified by NIZNHY-PKV Fri Oct 30 11:11:00 2009t
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}// if (myLimitMode) {
|
}// if (myLimitMode) {
|
||||||
//modified by NIZNHY-PKV Thu Feb 15 17:09:34 2007t
|
|
||||||
myShape=aC;
|
myShape=aC;
|
||||||
}//if (myLimit!=TopAbs_SHAPE) {
|
}//if (myLimit!=TopAbs_SHAPE) {
|
||||||
//
|
//
|
||||||
@ -272,10 +284,10 @@ static
|
|||||||
}
|
}
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : TreatCompound
|
//function : TreatCompound
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
void TreatCompound(const TopoDS_Shape& aC1,
|
void TreatCompound(const TopoDS_Shape& aC1,
|
||||||
TopTools_ListOfShape& aLSX)
|
TopTools_ListOfShape& aLSX)
|
||||||
{
|
{
|
||||||
Standard_Integer aNbC1;
|
Standard_Integer aNbC1;
|
||||||
TopAbs_ShapeEnum aType;
|
TopAbs_ShapeEnum aType;
|
||||||
@ -292,14 +304,14 @@ void TreatCompound(const TopoDS_Shape& aC1,
|
|||||||
//
|
//
|
||||||
aItC.Initialize(aC);
|
aItC.Initialize(aC);
|
||||||
for (; aItC.More(); aItC.Next()) {
|
for (; aItC.More(); aItC.Next()) {
|
||||||
const TopoDS_Shape& aS=aItC.Value();
|
const TopoDS_Shape& aS=aItC.Value();
|
||||||
aType=aS.ShapeType();
|
aType=aS.ShapeType();
|
||||||
if (aType==TopAbs_COMPOUND) {
|
if (aType==TopAbs_COMPOUND) {
|
||||||
aLC1.Append(aS);
|
aLC1.Append(aS);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
aLSX.Append(aS);
|
aLSX.Append(aS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
@ -318,7 +330,7 @@ void TreatCompound(const TopoDS_Shape& aC1,
|
|||||||
}
|
}
|
||||||
//
|
//
|
||||||
// myErrorStatus
|
// myErrorStatus
|
||||||
//
|
//
|
||||||
// 0 - Ok
|
// 0 - Ok
|
||||||
// 1 - The object is just initialized
|
// 1 - The object is just initialized
|
||||||
// 2 - PaveFiller is failed
|
// 2 - PaveFiller is failed
|
||||||
|
@ -52,6 +52,10 @@
|
|||||||
#include <TColStd_MapOfInteger.hxx>
|
#include <TColStd_MapOfInteger.hxx>
|
||||||
#include <TCollection_AsciiString.hxx>
|
#include <TCollection_AsciiString.hxx>
|
||||||
|
|
||||||
|
//To disable automatic genericobj management, the following line should be commented.
|
||||||
|
//Otherwise, it should be uncommented. Refer to KERNEL_SRC/src/SALOMEDSImpl/SALOMEDSImpl_AttributeIOR.cxx
|
||||||
|
//#define WITHGENERICOBJ
|
||||||
|
|
||||||
//================================================================
|
//================================================================
|
||||||
// Function : getActiveView
|
// Function : getActiveView
|
||||||
// Purpose : Get active view window, returns 0 if no open study frame
|
// Purpose : Get active view window, returns 0 if no open study frame
|
||||||
@ -833,10 +837,12 @@ bool GEOMBase_Helper::onAccept( const bool publish, const bool useTransaction )
|
|||||||
addInStudy( obj, aName.toLatin1().constData() );
|
addInStudy( obj, aName.toLatin1().constData() );
|
||||||
// updateView=false
|
// updateView=false
|
||||||
display( obj, false );
|
display( obj, false );
|
||||||
|
#ifdef WITHGENERICOBJ
|
||||||
// obj has been published in study. Its refcount has been incremented.
|
// obj has been published in study. Its refcount has been incremented.
|
||||||
// It is safe to decrement its refcount
|
// It is safe to decrement its refcount
|
||||||
// so that it will be destroyed when the entry in study will be removed
|
// so that it will be destroyed when the entry in study will be removed
|
||||||
obj->Destroy();
|
obj->Destroy();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// asv : fix of PAL6454. If publish==false, then the original shape
|
// asv : fix of PAL6454. If publish==false, then the original shape
|
||||||
@ -1078,23 +1084,23 @@ void GEOMBase_Helper::addSubshapesToFather( QMap<QString, GEOM::GEOM_Object_var>
|
|||||||
|
|
||||||
GEOM::GEOM_IGroupOperations_var anOp = getGeomEngine()->GetIGroupOperations( getStudyId() );
|
GEOM::GEOM_IGroupOperations_var anOp = getGeomEngine()->GetIGroupOperations( getStudyId() );
|
||||||
|
|
||||||
for( QMap<QString, GEOM::GEOM_Object_var>::Iterator it = theMap.begin(); it != theMap.end(); it++ )
|
for( QMap<QString, GEOM::GEOM_Object_var>::Iterator it = theMap.begin(); it != theMap.end(); it++ ) {
|
||||||
{
|
if ( !anOp->_is_nil() ) {
|
||||||
if ( !anOp->_is_nil() ) {
|
GEOM::GEOM_Object_var aFatherObj = anOp->GetMainShape( it.value() );
|
||||||
GEOM::GEOM_Object_var aFatherObj = anOp->GetMainShape( it.value() );
|
if ( !aFatherObj->_is_nil() ) {
|
||||||
if ( !aFatherObj->_is_nil() ) {
|
std::string aFatherEntry = getEntry( aFatherObj );
|
||||||
GEOM::GEOM_Object_var aFindedObject = findObjectInFather(aFatherObj, it.key().toLatin1().data() );
|
if ( aFatherEntry != "") { // additional checking that object is valid 0020598 EDF 1191
|
||||||
|
GEOM::GEOM_Object_var aFindedObject = findObjectInFather(aFatherObj, it.key().toLatin1().data() );
|
||||||
//Add Object to study if its not exist
|
//Add Object to study if its not exist
|
||||||
if ( aFindedObject == GEOM::GEOM_Object::_nil() )
|
if ( aFindedObject == GEOM::GEOM_Object::_nil() )
|
||||||
GeometryGUI::GetGeomGen()->AddInStudy(GeometryGUI::ClientStudyToStudy(aDStudy),
|
GeometryGUI::GetGeomGen()->AddInStudy(GeometryGUI::ClientStudyToStudy(aDStudy),
|
||||||
it.value(), it.key().toLatin1().data(), aFatherObj );
|
it.value(), it.key().toLatin1().data(), aFatherObj );
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else {
|
|
||||||
//cout << " anOperations is NULL! " << endl;
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
//cout << " anOperations is NULL! " << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -83,6 +83,8 @@ QVariant GEOMGUI_Selection::parameter( const int ind, const QString& p ) const
|
|||||||
// else
|
// else
|
||||||
if( p == "type" )
|
if( p == "type" )
|
||||||
return QVariant( typeName( ind ) );
|
return QVariant( typeName( ind ) );
|
||||||
|
if( p == "typeid" )
|
||||||
|
return QVariant( typeId( ind ) );
|
||||||
else if ( p == "displaymode" )
|
else if ( p == "displaymode" )
|
||||||
return QVariant( displayMode( ind ) );
|
return QVariant( displayMode( ind ) );
|
||||||
else if ( p == "isAutoColor" )
|
else if ( p == "isAutoColor" )
|
||||||
@ -112,6 +114,15 @@ QString GEOMGUI_Selection::typeName( const int index ) const
|
|||||||
return "Unknown";
|
return "Unknown";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int GEOMGUI_Selection::typeId( const int index ) const
|
||||||
|
{
|
||||||
|
int aType = -1;
|
||||||
|
GEOM::GEOM_Object_var anObj = getObject( index );
|
||||||
|
if ( !CORBA::is_nil( anObj ) )
|
||||||
|
aType = anObj->GetType();
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
bool GEOMGUI_Selection::isVisible( const int index ) const
|
bool GEOMGUI_Selection::isVisible( const int index ) const
|
||||||
{
|
{
|
||||||
GEOM::GEOM_Object_var obj = getObject( index );
|
GEOM::GEOM_Object_var obj = getObject( index );
|
||||||
@ -195,28 +206,29 @@ bool GEOMGUI_Selection::isVectorsMode( const int index ) const
|
|||||||
SALOME_Prs* prs = view->CreatePrs( entry( index ).toLatin1().constData() );
|
SALOME_Prs* prs = view->CreatePrs( entry( index ).toLatin1().constData() );
|
||||||
if ( prs ) {
|
if ( prs ) {
|
||||||
if ( viewType == OCCViewer_Viewer::Type() ) { // assuming OCC
|
if ( viewType == OCCViewer_Viewer::Type() ) { // assuming OCC
|
||||||
SOCC_Prs* occPrs = (SOCC_Prs*) prs;
|
SOCC_Prs* occPrs = (SOCC_Prs*) prs;
|
||||||
AIS_ListOfInteractive lst;
|
AIS_ListOfInteractive lst;
|
||||||
occPrs->GetObjects( lst );
|
occPrs->GetObjects( lst );
|
||||||
if ( lst.Extent() ) {
|
if ( lst.Extent() ) {
|
||||||
Handle(AIS_InteractiveObject) io = lst.First();
|
Handle(AIS_InteractiveObject) io = lst.First();
|
||||||
if ( !io.IsNull() ) {
|
if ( !io.IsNull() ) {
|
||||||
Handle(GEOM_AISShape) aSh = Handle(GEOM_AISShape)::DownCast(io);
|
Handle(GEOM_AISShape) aSh = Handle(GEOM_AISShape)::DownCast(io);
|
||||||
ret = aSh->isShowVectors();
|
if ( !aSh.IsNull() )
|
||||||
}
|
ret = aSh->isShowVectors();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if ( viewType == SVTK_Viewer::Type() ) { // assuming VTK
|
} else if ( viewType == SVTK_Viewer::Type() ) { // assuming VTK
|
||||||
SVTK_Prs* vtkPrs = dynamic_cast<SVTK_Prs*>( prs );
|
SVTK_Prs* vtkPrs = dynamic_cast<SVTK_Prs*>( prs );
|
||||||
vtkActorCollection* lst = vtkPrs ? vtkPrs->GetObjects() : 0;
|
vtkActorCollection* lst = vtkPrs ? vtkPrs->GetObjects() : 0;
|
||||||
if ( lst ) {
|
if ( lst ) {
|
||||||
lst->InitTraversal();
|
lst->InitTraversal();
|
||||||
vtkActor* actor = lst->GetNextActor();
|
vtkActor* actor = lst->GetNextActor();
|
||||||
if ( actor ) {
|
if ( actor ) {
|
||||||
GEOM_Actor* aGeomActor = GEOM_Actor::SafeDownCast(actor);
|
GEOM_Actor* aGeomActor = GEOM_Actor::SafeDownCast(actor);
|
||||||
if ( aGeomActor )
|
if ( aGeomActor )
|
||||||
ret = aGeomActor->GetVectorMode();
|
ret = aGeomActor->GetVectorMode();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,6 +48,7 @@ private:
|
|||||||
bool isVisible( const int ) const;
|
bool isVisible( const int ) const;
|
||||||
bool isAutoColor( const int ) const;
|
bool isAutoColor( const int ) const;
|
||||||
QString typeName( const int ) const;
|
QString typeName( const int ) const;
|
||||||
|
int typeId( const int ) const;
|
||||||
QString displayMode( const int ) const;
|
QString displayMode( const int ) const;
|
||||||
QString selectionMode() const;
|
QString selectionMode() const;
|
||||||
bool isVectorsMode( const int ) const;
|
bool isVectorsMode( const int ) const;
|
||||||
|
@ -79,6 +79,7 @@
|
|||||||
#include <TColStd_MapOfInteger.hxx>
|
#include <TColStd_MapOfInteger.hxx>
|
||||||
#include <TColStd_MapIteratorOfMapOfInteger.hxx>
|
#include <TColStd_MapIteratorOfMapOfInteger.hxx>
|
||||||
#include <TopoDS_Iterator.hxx>
|
#include <TopoDS_Iterator.hxx>
|
||||||
|
#include <Graphic3d_AspectMarker3d.hxx>
|
||||||
|
|
||||||
// VTK Includes
|
// VTK Includes
|
||||||
#include <vtkActorCollection.h>
|
#include <vtkActorCollection.h>
|
||||||
@ -88,6 +89,7 @@
|
|||||||
#include CORBA_CLIENT_HEADER(SALOMEDS_Attributes)
|
#include CORBA_CLIENT_HEADER(SALOMEDS_Attributes)
|
||||||
|
|
||||||
#include <GEOMImpl_Types.hxx>
|
#include <GEOMImpl_Types.hxx>
|
||||||
|
#include <Graphic3d_HArray1OfBytes.hxx>
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
@ -256,13 +258,10 @@ GEOM_Displayer::GEOM_Displayer( SalomeApp_Study* st )
|
|||||||
myShadingColor = SalomeApp_Tools::color( col );
|
myShadingColor = SalomeApp_Tools::color( col );
|
||||||
|
|
||||||
myDisplayMode = resMgr->integerValue("Geometry", "display_mode", 0);
|
myDisplayMode = resMgr->integerValue("Geometry", "display_mode", 0);
|
||||||
myTypeOfMarker = (Aspect_TypeOfMarker)resMgr->integerValue("Geometry", "type_of_marker", Aspect_TOM_PLUS);
|
int aType = resMgr->integerValue("Geometry", "type_of_marker", (int)Aspect_TOM_PLUS);
|
||||||
myScaleOfMarker = resMgr->doubleValue("Geometry", "marker_scale", 1.);
|
myTypeOfMarker = (Aspect_TypeOfMarker)(std::min((int)Aspect_TOM_RING3, std::max((int)Aspect_TOM_POINT, aType)));
|
||||||
if(myScaleOfMarker < 1.0)
|
myScaleOfMarker = (resMgr->integerValue("Geometry", "marker_scale", 1)-(int)GEOM::MS_10)*0.5 + 1.0;
|
||||||
myScaleOfMarker = 1.0;
|
myScaleOfMarker = std::min(7.0, std::max(1., myScaleOfMarker));
|
||||||
if(myScaleOfMarker > 7.)
|
|
||||||
myScaleOfMarker = 7.;
|
|
||||||
|
|
||||||
|
|
||||||
myColor = -1;
|
myColor = -1;
|
||||||
// This color is used for shape displaying. If it is equal -1 then
|
// This color is used for shape displaying. If it is equal -1 then
|
||||||
@ -588,54 +587,54 @@ void GEOM_Displayer::Update( SALOME_OCCPrs* prs )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
if ( myShape.ShapeType() == TopAbs_VERTEX )
|
||||||
{
|
{
|
||||||
if ( myShape.ShapeType() == TopAbs_VERTEX )
|
col = aResMgr->colorValue( "Geometry", "point_color", QColor( 255, 255, 0 ) );
|
||||||
{
|
aColor = SalomeApp_Tools::color( col );
|
||||||
col = aResMgr->colorValue( "Geometry", "point_color", QColor( 255, 255, 0 ) );
|
|
||||||
aColor = SalomeApp_Tools::color( col );
|
Handle(Prs3d_PointAspect) anAspect = AISShape->Attributes()->PointAspect();
|
||||||
|
anAspect->SetColor( aColor );
|
||||||
Handle(Prs3d_PointAspect) anAspect = AISShape->Attributes()->PointAspect();
|
anAspect->SetScale( myScaleOfMarker );
|
||||||
anAspect->SetColor( aColor );
|
anAspect->SetTypeOfMarker( myTypeOfMarker );
|
||||||
anAspect->SetScale( myScaleOfMarker );
|
AISShape->Attributes()->SetPointAspect( anAspect );
|
||||||
anAspect->SetTypeOfMarker( myTypeOfMarker );
|
|
||||||
AISShape->Attributes()->SetPointAspect( anAspect );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Set line aspect
|
|
||||||
col = aResMgr->colorValue( "Geometry", "wireframe_color", QColor( 255, 255, 0 ) );
|
|
||||||
aColor = SalomeApp_Tools::color( col );
|
|
||||||
|
|
||||||
Handle(Prs3d_LineAspect) anAspect = AISShape->Attributes()->LineAspect();
|
|
||||||
anAspect->SetColor( aColor );
|
|
||||||
AISShape->Attributes()->SetLineAspect( anAspect );
|
|
||||||
|
|
||||||
// Set unfree boundaries aspect
|
|
||||||
anAspect = AISShape->Attributes()->UnFreeBoundaryAspect();
|
|
||||||
anAspect->SetColor( aColor );
|
|
||||||
AISShape->Attributes()->SetUnFreeBoundaryAspect( anAspect );
|
|
||||||
|
|
||||||
// Set free boundaries aspect
|
|
||||||
col = aResMgr->colorValue( "Geometry", "free_bound_color", QColor( 0, 255, 0 ) );
|
|
||||||
aColor = SalomeApp_Tools::color( col );
|
|
||||||
|
|
||||||
anAspect = AISShape->Attributes()->FreeBoundaryAspect();
|
|
||||||
anAspect->SetColor( aColor );
|
|
||||||
AISShape->Attributes()->SetFreeBoundaryAspect( anAspect );
|
|
||||||
|
|
||||||
// Set wire aspect
|
|
||||||
col = aResMgr->colorValue( "Geometry", "line_color", QColor( 255, 0, 0 ) );
|
|
||||||
aColor = SalomeApp_Tools::color( col );
|
|
||||||
|
|
||||||
anAspect = AISShape->Attributes()->WireAspect();
|
|
||||||
anAspect->SetColor( aColor );
|
|
||||||
AISShape->Attributes()->SetWireAspect( anAspect );
|
|
||||||
|
|
||||||
// bug [SALOME platform 0019868]
|
|
||||||
// Set deviation angle. Default one is 12 degrees (Prs3d_Drawer.cxx:18)
|
|
||||||
AISShape->SetOwnDeviationAngle( 10*PI/180 );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Set line aspect
|
||||||
|
col = aResMgr->colorValue( "Geometry", "wireframe_color", QColor( 255, 255, 0 ) );
|
||||||
|
aColor = SalomeApp_Tools::color( col );
|
||||||
|
|
||||||
|
Handle(Prs3d_LineAspect) anAspect = AISShape->Attributes()->LineAspect();
|
||||||
|
anAspect->SetColor( aColor );
|
||||||
|
AISShape->Attributes()->SetLineAspect( anAspect );
|
||||||
|
|
||||||
|
// Set unfree boundaries aspect
|
||||||
|
anAspect = AISShape->Attributes()->UnFreeBoundaryAspect();
|
||||||
|
anAspect->SetColor( aColor );
|
||||||
|
AISShape->Attributes()->SetUnFreeBoundaryAspect( anAspect );
|
||||||
|
|
||||||
|
// Set free boundaries aspect
|
||||||
|
col = aResMgr->colorValue( "Geometry", "free_bound_color", QColor( 0, 255, 0 ) );
|
||||||
|
aColor = SalomeApp_Tools::color( col );
|
||||||
|
|
||||||
|
anAspect = AISShape->Attributes()->FreeBoundaryAspect();
|
||||||
|
anAspect->SetColor( aColor );
|
||||||
|
AISShape->Attributes()->SetFreeBoundaryAspect( anAspect );
|
||||||
|
|
||||||
|
// Set wire aspect
|
||||||
|
col = aResMgr->colorValue( "Geometry", "line_color", QColor( 255, 0, 0 ) );
|
||||||
|
aColor = SalomeApp_Tools::color( col );
|
||||||
|
|
||||||
|
anAspect = AISShape->Attributes()->WireAspect();
|
||||||
|
anAspect->SetColor( aColor );
|
||||||
|
AISShape->Attributes()->SetWireAspect( anAspect );
|
||||||
|
|
||||||
|
// bug [SALOME platform 0019868]
|
||||||
|
// Set deviation angle. Default one is 12 degrees (Prs3d_Drawer.cxx:18)
|
||||||
|
AISShape->SetOwnDeviationAngle( 10*PI/180 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ( HasWidth() )
|
if ( HasWidth() )
|
||||||
AISShape->SetWidth( GetWidth() );
|
AISShape->SetWidth( GetWidth() );
|
||||||
@ -657,7 +656,7 @@ void GEOM_Displayer::Update( SALOME_OCCPrs* prs )
|
|||||||
AISShape->SetOwner( anObj );
|
AISShape->SetOwner( anObj );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get color from GEOM_Object
|
// Get color and other properties from GEOM_Object
|
||||||
SUIT_Session* session = SUIT_Session::session();
|
SUIT_Session* session = SUIT_Session::session();
|
||||||
SUIT_Application* app = session->activeApplication();
|
SUIT_Application* app = session->activeApplication();
|
||||||
if ( app )
|
if ( app )
|
||||||
@ -731,6 +730,36 @@ void GEOM_Displayer::Update( SALOME_OCCPrs* prs )
|
|||||||
AISShape->Attributes()->SetPointAspect( anAspect );
|
AISShape->Attributes()->SetPointAspect( anAspect );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// ... marker type
|
||||||
|
GEOM::marker_type aType = aGeomObject->GetMarkerType();
|
||||||
|
GEOM::marker_size aSize = aGeomObject->GetMarkerSize();
|
||||||
|
if ( aType > GEOM::MT_NONE && aType < GEOM::MT_USER && aSize > GEOM::MS_NONE && aSize <= GEOM::MS_70 ) {
|
||||||
|
Aspect_TypeOfMarker aMType = (Aspect_TypeOfMarker)( (int)aType-1 );
|
||||||
|
double aMSize = ((int)aSize+1)*0.5;
|
||||||
|
Handle(Prs3d_PointAspect) anAspect = AISShape->Attributes()->PointAspect();
|
||||||
|
anAspect->SetScale( aMSize );
|
||||||
|
anAspect->SetTypeOfMarker( aMType );
|
||||||
|
Quantity_Color aQuanColor = SalomeApp_Tools::color( aResMgr->colorValue( "Geometry", "point_color", QColor( 255, 255, 0 ) ) );
|
||||||
|
if ( hasColor )
|
||||||
|
aQuanColor = Quantity_Color( aSColor.R, aSColor.G, aSColor.B, Quantity_TOC_RGB );
|
||||||
|
anAspect->SetColor( aQuanColor );
|
||||||
|
AISShape->Attributes()->SetPointAspect( anAspect );
|
||||||
|
}
|
||||||
|
else if ( aType == GEOM::MT_USER ) {
|
||||||
|
int aTextureId = aGeomObject->GetMarkerTexture();
|
||||||
|
Quantity_Color aQuanColor = SalomeApp_Tools::color( aResMgr->colorValue( "Geometry", "point_color", QColor( 255, 255, 0 ) ) );
|
||||||
|
if ( hasColor ) aQuanColor = Quantity_Color( aSColor.R, aSColor.G, aSColor.B, Quantity_TOC_RGB );
|
||||||
|
Standard_Integer aWidth, aHeight;
|
||||||
|
Handle(Graphic3d_HArray1OfBytes) aTexture = GeometryGUI::getTexture( getStudy(), aTextureId, aWidth, aHeight );
|
||||||
|
if ( !aTexture.IsNull() ) {
|
||||||
|
static int TextureId = 0;
|
||||||
|
Handle(Prs3d_PointAspect) aTextureAspect = new Prs3d_PointAspect(aQuanColor,
|
||||||
|
++TextureId,
|
||||||
|
aWidth, aHeight,
|
||||||
|
aTexture );
|
||||||
|
AISShape->Attributes()->SetPointAspect( aTextureAspect );
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -793,7 +822,7 @@ void GEOM_Displayer::Update( SALOME_VTKPrs* prs )
|
|||||||
|
|
||||||
if ( myType == GEOM_MARKER && myShape.ShapeType() == TopAbs_FACE )
|
if ( myType == GEOM_MARKER && myShape.ShapeType() == TopAbs_FACE )
|
||||||
{
|
{
|
||||||
myToActivate = false;
|
//myToActivate = false; // ouv: commented to make the trihedron pickable (see IPAL18657)
|
||||||
GEOM_VTKTrihedron* aTrh = GEOM_VTKTrihedron::New();
|
GEOM_VTKTrihedron* aTrh = GEOM_VTKTrihedron::New();
|
||||||
|
|
||||||
if ( HasColor() )
|
if ( HasColor() )
|
||||||
@ -820,9 +849,7 @@ void GEOM_Displayer::Update( SALOME_VTKPrs* prs )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
bool isVector = false;
|
theActors = GEOM_AssemblyBuilder::BuildActors( myShape, 0, 0, Standard_True, myType == GEOM_VECTOR );
|
||||||
if (myType == GEOM_VECTOR) isVector = true;
|
|
||||||
theActors = GEOM_AssemblyBuilder::BuildActors( myShape, 0, 0, Standard_True, isVector );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
theActors->InitTraversal();
|
theActors->InitTraversal();
|
||||||
|
@ -629,6 +629,58 @@
|
|||||||
<source>ICON_SELECT</source>
|
<source>ICON_SELECT</source>
|
||||||
<translation>select1.png</translation>
|
<translation>select1.png</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>ICON_VERTEX_MARKER_1</source>
|
||||||
|
<translation>marker_1.png</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>ICON_VERTEX_MARKER_2</source>
|
||||||
|
<translation>marker_2.png</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>ICON_VERTEX_MARKER_3</source>
|
||||||
|
<translation>marker_3.png</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>ICON_VERTEX_MARKER_4</source>
|
||||||
|
<translation>marker_4.png</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>ICON_VERTEX_MARKER_5</source>
|
||||||
|
<translation>marker_5.png</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>ICON_VERTEX_MARKER_6</source>
|
||||||
|
<translation>marker_6.png</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>ICON_VERTEX_MARKER_7</source>
|
||||||
|
<translation>marker_7.png</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>ICON_VERTEX_MARKER_8</source>
|
||||||
|
<translation>marker_8.png</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>ICON_VERTEX_MARKER_9</source>
|
||||||
|
<translation>marker_9.png</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>ICON_VERTEX_MARKER_10</source>
|
||||||
|
<translation>marker_10.png</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>ICON_VERTEX_MARKER_11</source>
|
||||||
|
<translation>marker_11.png</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>ICON_VERTEX_MARKER_12</source>
|
||||||
|
<translation>marker_12.png</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>ICON_VERTEX_MARKER_13</source>
|
||||||
|
<translation>marker_13.png</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>ICO_ARC</source>
|
<source>ICO_ARC</source>
|
||||||
<translation>arc.png</translation>
|
<translation>arc.png</translation>
|
||||||
|
@ -335,6 +335,10 @@ Please, select face, shell or solid and try again</translation>
|
|||||||
<source>GEOM_CHECK_BLOCKS_COMPOUND</source>
|
<source>GEOM_CHECK_BLOCKS_COMPOUND</source>
|
||||||
<translation>Check and Improve Blocks Compound</translation>
|
<translation>Check and Improve Blocks Compound</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GEOM_CHECK_BLOCKS_COMPOUND_FAILED</source>
|
||||||
|
<translation>Check failed</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>GEOM_CHECK_BLOCKS_COMPOUND_ERRORS</source>
|
<source>GEOM_CHECK_BLOCKS_COMPOUND_ERRORS</source>
|
||||||
<translation>Errors</translation>
|
<translation>Errors</translation>
|
||||||
@ -2551,6 +2555,10 @@ Please, select face, shell or solid and try again</translation>
|
|||||||
<source>MEN_WORK_PLANE</source>
|
<source>MEN_WORK_PLANE</source>
|
||||||
<translation>Working Plane</translation>
|
<translation>Working Plane</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>MEN_POP_POINT_MARKER</source>
|
||||||
|
<translation>Point Marker</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>NAME_LBL</source>
|
<source>NAME_LBL</source>
|
||||||
<translation>Name: </translation>
|
<translation>Name: </translation>
|
||||||
@ -3051,6 +3059,10 @@ Please, select face, shell or solid and try again</translation>
|
|||||||
<source>STB_WORK_PLANE</source>
|
<source>STB_WORK_PLANE</source>
|
||||||
<translation>Create a working plane</translation>
|
<translation>Create a working plane</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>STB_POP_POINT_MARKER</source>
|
||||||
|
<translation>Set Point Marker</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>SUPPRESS_RESULT</source>
|
<source>SUPPRESS_RESULT</source>
|
||||||
<translation>Suppress Result</translation>
|
<translation>Suppress Result</translation>
|
||||||
@ -3511,6 +3523,10 @@ Please, select face, shell or solid and try again</translation>
|
|||||||
<source>TOP_WORK_PLANE</source>
|
<source>TOP_WORK_PLANE</source>
|
||||||
<translation>Create a working plane</translation>
|
<translation>Create a working plane</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>TOP_POP_POINT_MARKER</source>
|
||||||
|
<translation>Point Marker</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>WRN_NOT_IMPLEMENTED</source>
|
<source>WRN_NOT_IMPLEMENTED</source>
|
||||||
<translation>Sorry, this functionality is not yet implemented</translation>
|
<translation>Sorry, this functionality is not yet implemented</translation>
|
||||||
@ -4265,4 +4281,51 @@ Would you like to continue?</translation>
|
|||||||
<translation>Delete objects</translation>
|
<translation>Delete objects</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>GEOMToolsGUI_MarkerDlg</name>
|
||||||
|
<message>
|
||||||
|
<source>SET_MARKER_TLT</source>
|
||||||
|
<translation>Set Point Marker</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>STANDARD_MARKER</source>
|
||||||
|
<translation>Standard</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>CUSTOM_MARKER</source>
|
||||||
|
<translation>Custom</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>TYPE</source>
|
||||||
|
<translation>Type:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>SCALE</source>
|
||||||
|
<translation>Scale:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>CUSTOM</source>
|
||||||
|
<translation>Texture:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>BROWSE</source>
|
||||||
|
<translation>Browse...</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>OK_BTN</source>
|
||||||
|
<translation>&OK</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>CANCEL_BTN</source>
|
||||||
|
<translation>&Cancel</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>HELP_BTN</source>
|
||||||
|
<translation>&Help</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>LOAD_TEXTURE_TLT</source>
|
||||||
|
<translation>Load Texture</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
@ -80,6 +80,7 @@
|
|||||||
#include <Aspect_TypeOfMarker.hxx>
|
#include <Aspect_TypeOfMarker.hxx>
|
||||||
#include <OSD_SharedLibrary.hxx>
|
#include <OSD_SharedLibrary.hxx>
|
||||||
#include <NCollection_DataMap.hxx>
|
#include <NCollection_DataMap.hxx>
|
||||||
|
#include <Graphic3d_HArray1OfBytes.hxx>
|
||||||
|
|
||||||
#include <utilities.h>
|
#include <utilities.h>
|
||||||
|
|
||||||
@ -96,7 +97,7 @@ extern "C" {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GeometryGUI::StudyTextureMap GeometryGUI::myTextureMap;
|
||||||
|
|
||||||
GEOM::GEOM_Gen_var GeometryGUI::myComponentGeom = GEOM::GEOM_Gen::_nil();
|
GEOM::GEOM_Gen_var GeometryGUI::myComponentGeom = GEOM::GEOM_Gen::_nil();
|
||||||
|
|
||||||
@ -343,7 +344,7 @@ void GeometryGUI::OnGUIEvent( int id )
|
|||||||
bool ViewVTK = ( window && window->getViewManager()->getType() == SVTK_Viewer::Type() );
|
bool ViewVTK = ( window && window->getViewManager()->getType() == SVTK_Viewer::Type() );
|
||||||
// if current viewframe is not of OCC and not of VTK type - return immediately
|
// if current viewframe is not of OCC and not of VTK type - return immediately
|
||||||
// fix for IPAL8958 - allow some commands to execute even when NO viewer is active (rename for example)
|
// fix for IPAL8958 - allow some commands to execute even when NO viewer is active (rename for example)
|
||||||
bool NotViewerDependentCommand = ( id == 901 || id == 216 || id == 213 );
|
bool NotViewerDependentCommand = ( id == 901 || id == 216 || id == 213 || id == 33 || id == 8037 || id == 8038 || id == 8039 );
|
||||||
if ( !ViewOCC && !ViewVTK && !NotViewerDependentCommand )
|
if ( !ViewOCC && !ViewVTK && !NotViewerDependentCommand )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -381,6 +382,7 @@ void GeometryGUI::OnGUIEvent( int id )
|
|||||||
id == 8036 || // POPUP VIEWER - DISABLE AUTO COLOR
|
id == 8036 || // POPUP VIEWER - DISABLE AUTO COLOR
|
||||||
id == 8037 || // POPUP VIEWER - SHOW CHILDREN
|
id == 8037 || // POPUP VIEWER - SHOW CHILDREN
|
||||||
id == 8038 || // POPUP VIEWER - HIDE CHILDREN
|
id == 8038 || // POPUP VIEWER - HIDE CHILDREN
|
||||||
|
id == 8039 || // POPUP VIEWER - POINT MARKER
|
||||||
id == 804 || // POPUP VIEWER - ADD IN STUDY
|
id == 804 || // POPUP VIEWER - ADD IN STUDY
|
||||||
id == 901 || // OBJECT BROWSER - RENAME
|
id == 901 || // OBJECT BROWSER - RENAME
|
||||||
id == 9024 ) { // OBJECT BROWSER - OPEN
|
id == 9024 ) { // OBJECT BROWSER - OPEN
|
||||||
@ -903,6 +905,7 @@ void GeometryGUI::initialize( CAM_Application* app )
|
|||||||
createGeomAction( 8001, "POP_CREATE_GROUP" );
|
createGeomAction( 8001, "POP_CREATE_GROUP" );
|
||||||
createGeomAction( 8037, "POP_SHOW_CHILDREN" );
|
createGeomAction( 8037, "POP_SHOW_CHILDREN" );
|
||||||
createGeomAction( 8038, "POP_HIDE_CHILDREN" );
|
createGeomAction( 8038, "POP_HIDE_CHILDREN" );
|
||||||
|
createGeomAction( 8039, "POP_POINT_MARKER" );
|
||||||
|
|
||||||
// make wireframe-shading items to be exclusive (only one at a time is selected)
|
// make wireframe-shading items to be exclusive (only one at a time is selected)
|
||||||
//QActionGroup* dispModeGr = new QActionGroup( this, "", true );
|
//QActionGroup* dispModeGr = new QActionGroup( this, "", true );
|
||||||
@ -1170,6 +1173,8 @@ void GeometryGUI::initialize( CAM_Application* app )
|
|||||||
mgr->setRule( action( 8033 ), clientOCCorVTK_AndSomeVisible, QtxPopupMgr::VisibleRule );
|
mgr->setRule( action( 8033 ), clientOCCorVTK_AndSomeVisible, QtxPopupMgr::VisibleRule );
|
||||||
mgr->insert( action( 8034 ), -1, -1 ); // isos
|
mgr->insert( action( 8034 ), -1, -1 ); // isos
|
||||||
mgr->setRule( action( 8034 ), clientOCCorVTK_AndSomeVisible + " and selcount>0 and isVisible", QtxPopupMgr::VisibleRule );
|
mgr->setRule( action( 8034 ), clientOCCorVTK_AndSomeVisible + " and selcount>0 and isVisible", QtxPopupMgr::VisibleRule );
|
||||||
|
mgr->insert( action( 8039 ), -1, -1 ); // point marker
|
||||||
|
mgr->setRule( action( 8039 ), QString( "selcount>0 and $typeid in {%1}" ).arg( GEOM_POINT ), QtxPopupMgr::VisibleRule );
|
||||||
mgr->insert( separator(), -1, -1 ); // -----------
|
mgr->insert( separator(), -1, -1 ); // -----------
|
||||||
mgr->insert( action( 8035 ), -1, -1 ); // auto color
|
mgr->insert( action( 8035 ), -1, -1 ); // auto color
|
||||||
mgr->setRule( action( 8035 ), autoColorPrefix + " and isAutoColor=false", QtxPopupMgr::VisibleRule );
|
mgr->setRule( action( 8035 ), autoColorPrefix + " and isAutoColor=false", QtxPopupMgr::VisibleRule );
|
||||||
@ -1462,6 +1467,32 @@ QString GeometryGUI::engineIOR() const
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Handle(Graphic3d_HArray1OfBytes) GeometryGUI::getTexture( SalomeApp_Study* theStudy, int theId, int& theWidth, int& theHeight )
|
||||||
|
{
|
||||||
|
theWidth = theHeight = 0;
|
||||||
|
Handle(Graphic3d_HArray1OfBytes) aTexture;
|
||||||
|
if ( theStudy ) {
|
||||||
|
TextureMap aTextureMap = myTextureMap[ theStudy->studyDS()->StudyId() ];
|
||||||
|
aTexture = aTextureMap[ theId ];
|
||||||
|
if ( aTexture.IsNull() ) {
|
||||||
|
GEOM::GEOM_IInsertOperations_var aInsOp = GeometryGUI::GetGeomGen()->GetIInsertOperations( theStudy->studyDS()->StudyId() );
|
||||||
|
if ( !aInsOp->_is_nil() ) {
|
||||||
|
CORBA::Long aWidth, aHeight;
|
||||||
|
SALOMEDS::TMPFile_var aStream = aInsOp->GetTexture( theId, aWidth, aHeight );
|
||||||
|
if ( aWidth > 0 && aHeight > 0 && aStream->length() > 0 ) {
|
||||||
|
theWidth = aWidth;
|
||||||
|
theHeight = aHeight;
|
||||||
|
aTexture = new Graphic3d_HArray1OfBytes( 1, aStream->length() );
|
||||||
|
for ( int i = 0; i < aStream->length(); i++ )
|
||||||
|
aTexture->SetValue( i+1, (Standard_Byte)aStream[i] );
|
||||||
|
aTextureMap[ theId ] = aTexture;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return aTexture;
|
||||||
|
}
|
||||||
|
|
||||||
LightApp_Selection* GeometryGUI::createSelection() const
|
LightApp_Selection* GeometryGUI::createSelection() const
|
||||||
{
|
{
|
||||||
return new GEOMGUI_Selection();
|
return new GEOMGUI_Selection();
|
||||||
@ -1542,7 +1573,7 @@ void GeometryGUI::createPreferences()
|
|||||||
LightApp_Preferences::Selector, "Geometry", "type_of_marker" );
|
LightApp_Preferences::Selector, "Geometry", "type_of_marker" );
|
||||||
|
|
||||||
int markerScale = addPreference( tr( "PREF_MARKER_SCALE" ), VertexGroup,
|
int markerScale = addPreference( tr( "PREF_MARKER_SCALE" ), VertexGroup,
|
||||||
LightApp_Preferences::DblSpin, "Geometry", "marker_scale" );
|
LightApp_Preferences::Selector, "Geometry", "marker_scale" );
|
||||||
|
|
||||||
// Set property for default display mode
|
// Set property for default display mode
|
||||||
QStringList aModesList;
|
QStringList aModesList;
|
||||||
@ -1561,47 +1592,32 @@ void GeometryGUI::createPreferences()
|
|||||||
setPreferenceProperty( step, "max", 10000 );
|
setPreferenceProperty( step, "max", 10000 );
|
||||||
setPreferenceProperty( step, "precision", 3 );
|
setPreferenceProperty( step, "precision", 3 );
|
||||||
|
|
||||||
// Set property for type of vertex marker
|
// Set property vertex marker type
|
||||||
QStringList aTypeOfMarkerList;
|
QList<QVariant> aMarkerTypeIndicesList;
|
||||||
QList<QVariant> anTypeOfMarkerIndexesList;
|
QList<QVariant> aMarkerTypeIconsList;
|
||||||
|
|
||||||
aTypeOfMarkerList.append( tr("TOM_PLUS") );
|
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
|
||||||
anTypeOfMarkerIndexesList.append(Aspect_TOM_PLUS);
|
for ( int i = GEOM::MT_POINT; i < GEOM::MT_USER; i++ ) {
|
||||||
|
QString icoFile = QString( "ICON_VERTEX_MARKER_%1" ).arg( i );
|
||||||
|
QPixmap pixmap = resMgr->loadPixmap( "GEOM", tr( qPrintable( icoFile ) ) );
|
||||||
|
aMarkerTypeIndicesList << (i-1);
|
||||||
|
aMarkerTypeIconsList << pixmap;
|
||||||
|
}
|
||||||
|
|
||||||
aTypeOfMarkerList.append( tr("TOM_POINT") );
|
setPreferenceProperty( typeOfMarker, "indexes", aMarkerTypeIndicesList );
|
||||||
anTypeOfMarkerIndexesList.append(Aspect_TOM_POINT);
|
setPreferenceProperty( typeOfMarker, "icons", aMarkerTypeIconsList );
|
||||||
|
|
||||||
aTypeOfMarkerList.append( tr("TOM_STAR") );
|
// Set property for vertex marker scale
|
||||||
anTypeOfMarkerIndexesList.append(Aspect_TOM_STAR);
|
QList<QVariant> aMarkerScaleIndicesList;
|
||||||
|
QStringList aMarkerScaleValuesList;
|
||||||
|
|
||||||
aTypeOfMarkerList.append( tr("TOM_O") );
|
for ( int i = GEOM::MS_10; i <= GEOM::MS_70; i++ ) {
|
||||||
anTypeOfMarkerIndexesList.append(Aspect_TOM_O);
|
aMarkerScaleIndicesList << i;
|
||||||
|
aMarkerScaleValuesList << QString::number( (i-(int)GEOM::MS_10)*0.5 + 1.0 );
|
||||||
aTypeOfMarkerList.append( tr("TOM_X") );
|
}
|
||||||
anTypeOfMarkerIndexesList.append(Aspect_TOM_X);
|
|
||||||
|
|
||||||
aTypeOfMarkerList.append( tr("TOM_O_POINT") );
|
|
||||||
anTypeOfMarkerIndexesList.append(Aspect_TOM_O_POINT);
|
|
||||||
|
|
||||||
aTypeOfMarkerList.append( tr("TOM_O_PLUS") );
|
|
||||||
anTypeOfMarkerIndexesList.append(Aspect_TOM_O_PLUS);
|
|
||||||
|
|
||||||
aTypeOfMarkerList.append( tr("TOM_O_STAR") );
|
|
||||||
anTypeOfMarkerIndexesList.append(Aspect_TOM_O_STAR);
|
|
||||||
|
|
||||||
aTypeOfMarkerList.append( tr("TOM_O_X") );
|
|
||||||
anTypeOfMarkerIndexesList.append(Aspect_TOM_O_X);
|
|
||||||
|
|
||||||
|
|
||||||
setPreferenceProperty( typeOfMarker, "strings", aTypeOfMarkerList );
|
|
||||||
setPreferenceProperty( typeOfMarker, "indexes", anTypeOfMarkerIndexesList );
|
|
||||||
|
|
||||||
// Set property for Vertex Marker scale
|
|
||||||
setPreferenceProperty( markerScale, "min", 1. );
|
|
||||||
setPreferenceProperty( markerScale, "max", 7. );
|
|
||||||
setPreferenceProperty( markerScale, "precision", 0.01 );
|
|
||||||
setPreferenceProperty( markerScale, "step", 0.5 );
|
|
||||||
|
|
||||||
|
setPreferenceProperty( markerScale, "strings", aMarkerScaleValuesList );
|
||||||
|
setPreferenceProperty( markerScale, "indexes", aMarkerScaleIndicesList );
|
||||||
}
|
}
|
||||||
|
|
||||||
void GeometryGUI::preferencesChanged( const QString& section, const QString& param )
|
void GeometryGUI::preferencesChanged( const QString& section, const QString& param )
|
||||||
|
@ -41,6 +41,7 @@
|
|||||||
|
|
||||||
// OCCT Includes
|
// OCCT Includes
|
||||||
#include <gp_Ax3.hxx>
|
#include <gp_Ax3.hxx>
|
||||||
|
#include <Graphic3d_HArray1OfBytes.hxx>
|
||||||
|
|
||||||
// IDL headers
|
// IDL headers
|
||||||
#include "SALOMEconfig.h"
|
#include "SALOMEconfig.h"
|
||||||
@ -54,6 +55,7 @@ class GEOMGUI_OCCSelector;
|
|||||||
class LightApp_VTKSelector;
|
class LightApp_VTKSelector;
|
||||||
class LightApp_Selection;
|
class LightApp_Selection;
|
||||||
class SUIT_ViewManager;
|
class SUIT_ViewManager;
|
||||||
|
class SalomeApp_Study;
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
// class : GeometryGUI
|
// class : GeometryGUI
|
||||||
@ -74,6 +76,8 @@ public:
|
|||||||
virtual void initialize( CAM_Application* );
|
virtual void initialize( CAM_Application* );
|
||||||
virtual QString engineIOR() const;
|
virtual QString engineIOR() const;
|
||||||
|
|
||||||
|
static Handle(Graphic3d_HArray1OfBytes) getTexture( SalomeApp_Study*, int, int&, int& );
|
||||||
|
|
||||||
static bool InitGeomGen(); //BugID IPAL9186: SRN: To be called by Python scripts
|
static bool InitGeomGen(); //BugID IPAL9186: SRN: To be called by Python scripts
|
||||||
|
|
||||||
static GEOM::GEOM_Gen_var GetGeomGen();// { return GeometryGUI::myComponentGeom; }
|
static GEOM::GEOM_Gen_var GetGeomGen();// { return GeometryGUI::myComponentGeom; }
|
||||||
@ -159,7 +163,12 @@ private:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
static GEOM::GEOM_Gen_var myComponentGeom; // GEOM engine!!!
|
static GEOM::GEOM_Gen_var myComponentGeom; // GEOM engine!!!
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
typedef QMap<long, Handle(Graphic3d_HArray1OfBytes)> TextureMap;
|
||||||
|
typedef QMap<long, TextureMap> StudyTextureMap;
|
||||||
|
|
||||||
GUIMap myGUIMap; // GUI libraries map
|
GUIMap myGUIMap; // GUI libraries map
|
||||||
QDialog* myActiveDialogBox; // active dialog box
|
QDialog* myActiveDialogBox; // active dialog box
|
||||||
GEOM_Client myShapeReader; // geom shape reader
|
GEOM_Client myShapeReader; // geom shape reader
|
||||||
@ -167,6 +176,7 @@ private:
|
|||||||
int myState; // identify a method
|
int myState; // identify a method
|
||||||
gp_Ax3 myWorkingPlane;
|
gp_Ax3 myWorkingPlane;
|
||||||
QMap<int,QString> myRules; // popup rules
|
QMap<int,QString> myRules; // popup rules
|
||||||
|
static StudyTextureMap myTextureMap; // texture map
|
||||||
|
|
||||||
QList<GEOMGUI_OCCSelector*> myOCCSelectors;
|
QList<GEOMGUI_OCCSelector*> myOCCSelectors;
|
||||||
QList<LightApp_VTKSelector*> myVTKSelectors;
|
QList<LightApp_VTKSelector*> myVTKSelectors;
|
||||||
@ -174,7 +184,7 @@ private:
|
|||||||
LightApp_Displayer* myDisplayer;
|
LightApp_Displayer* myDisplayer;
|
||||||
int myLocalSelectionMode; //Select Only
|
int myLocalSelectionMode; //Select Only
|
||||||
|
|
||||||
friend class DisplayGUI;
|
friend class DisplayGUI;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -2350,9 +2350,9 @@ Handle(GEOM_Object) GEOMImpl_IBlocksOperations::RemoveExtraEdges
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Make a Python command
|
//Make a Python command
|
||||||
GEOM::TPythonDump(aFunction) << aCopy
|
std::string doUnionFaces = (theOptimumNbFaces < 0) ? "False" : "True";
|
||||||
<< " = geompy.RemoveExtraEdges(" << theObject
|
GEOM::TPythonDump(aFunction) << aCopy << " = geompy.RemoveExtraEdges("
|
||||||
<< ", " << theOptimumNbFaces << ")";
|
<< theObject << ", " << doUnionFaces.data() << ")";
|
||||||
|
|
||||||
SetErrorCode(OK);
|
SetErrorCode(OK);
|
||||||
return aCopy;
|
return aCopy;
|
||||||
|
@ -567,13 +567,17 @@ void GEOMImpl_IGroupOperations::UnionIDs (Handle(GEOM_Object) theGroup,
|
|||||||
TopTools_IndexedMapOfShape mapIndices;
|
TopTools_IndexedMapOfShape mapIndices;
|
||||||
TopExp::MapShapes(aMainShape, mapIndices);
|
TopExp::MapShapes(aMainShape, mapIndices);
|
||||||
|
|
||||||
|
// Get group type
|
||||||
|
TopAbs_ShapeEnum aType = GetType(theGroup);
|
||||||
|
|
||||||
// Get IDs of sub-shapes to add
|
// Get IDs of sub-shapes to add
|
||||||
Standard_Integer i, new_id;
|
Standard_Integer i, new_id;
|
||||||
for (i = 1; i <= aLen; i++) {
|
for (i = 1; i <= aLen; i++) {
|
||||||
new_id = theSubShapes->Value(i);
|
new_id = theSubShapes->Value(i);
|
||||||
|
|
||||||
if (0 < new_id && new_id <= mapIndices.Extent()) {
|
if (0 < new_id && new_id <= mapIndices.Extent()) {
|
||||||
if (mapIDs.Add(new_id)) {
|
//if (mapIDs.Add(new_id)) { IPAL21297. Why we ignore invalid ids silently?
|
||||||
|
if (mapIDs.Add(new_id) && mapIndices(new_id).ShapeType()==aType ) {
|
||||||
aNewIDs.Append(new_id);
|
aNewIDs.Append(new_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,6 +48,7 @@
|
|||||||
#include <TopoDS_Vertex.hxx>
|
#include <TopoDS_Vertex.hxx>
|
||||||
#include <BRep_Tool.hxx>
|
#include <BRep_Tool.hxx>
|
||||||
#include <gp_Pnt.hxx>
|
#include <gp_Pnt.hxx>
|
||||||
|
#include <TDataStd_HArray1OfByte.hxx>
|
||||||
|
|
||||||
#include <Standard_Failure.hxx>
|
#include <Standard_Failure.hxx>
|
||||||
#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
|
#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
|
||||||
@ -240,8 +241,10 @@ Handle(GEOM_Object) GEOMImpl_IInsertOperations::Import
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Make a Python command
|
//Make a Python command
|
||||||
GEOM::TPythonDump(aFunction) << result << " = geompy.Import(\""
|
if( theFormatName != "IGES_UNIT" ) {
|
||||||
<< theFileName.ToCString() << "\", \"" << theFormatName.ToCString() << "\")";
|
GEOM::TPythonDump(aFunction) << result << " = geompy.Import(\""
|
||||||
|
<< theFileName.ToCString() << "\", \"" << theFormatName.ToCString() << "\")";
|
||||||
|
}
|
||||||
|
|
||||||
SetErrorCode(OK);
|
SetErrorCode(OK);
|
||||||
|
|
||||||
@ -541,3 +544,98 @@ Standard_Boolean GEOMImpl_IInsertOperations::InitResMgr()
|
|||||||
return ( myResMgr->Find("Import") || myResMgr->Find("Export") ||
|
return ( myResMgr->Find("Import") || myResMgr->Find("Export") ||
|
||||||
myResMgrUser->Find("Import") || myResMgrUser->Find("Export"));
|
myResMgrUser->Find("Import") || myResMgrUser->Find("Export"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int GEOMImpl_IInsertOperations::LoadTexture(const TCollection_AsciiString& theTextureFile)
|
||||||
|
{
|
||||||
|
SetErrorCode(KO);
|
||||||
|
|
||||||
|
if (theTextureFile.IsEmpty()) return 0;
|
||||||
|
|
||||||
|
Handle(TDataStd_HArray1OfByte) aTexture;
|
||||||
|
|
||||||
|
FILE* fp = fopen(theTextureFile.ToCString(), "r");
|
||||||
|
if (!fp) return 0;
|
||||||
|
|
||||||
|
std::list<std::string> lines;
|
||||||
|
char buffer[4096];
|
||||||
|
int maxlen = 0;
|
||||||
|
while (!feof(fp)) {
|
||||||
|
if ((fgets(buffer, 4096, fp)) == NULL) break;
|
||||||
|
int aLen = strlen(buffer);
|
||||||
|
if (buffer[aLen-1] == '\n') buffer[aLen-1] = '\0';
|
||||||
|
lines.push_back(buffer);
|
||||||
|
maxlen = std::max(maxlen, (int)strlen(buffer));
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(fp);
|
||||||
|
|
||||||
|
int lenbytes = maxlen/8;
|
||||||
|
if (maxlen%8) lenbytes++;
|
||||||
|
|
||||||
|
if (lenbytes == 0 || lines.empty())
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
std::list<unsigned char> bytedata;
|
||||||
|
std::list<std::string>::const_iterator it;
|
||||||
|
for (it = lines.begin(); it != lines.end(); ++it) {
|
||||||
|
std::string line = *it;
|
||||||
|
int lenline = (line.size()/8 + (line.size()%8 ? 1 : 0)) * 8;
|
||||||
|
for (int i = 0; i < lenline/8; i++) {
|
||||||
|
unsigned char byte = 0;
|
||||||
|
for (int j = 0; j < 8; j++)
|
||||||
|
byte = (byte << 1) + ( i*8+j < line.size() && line[i*8+j] != '0' ? 1 : 0 );
|
||||||
|
bytedata.push_back(byte);
|
||||||
|
}
|
||||||
|
for (int i = lenline/8; i < lenbytes; i++)
|
||||||
|
bytedata.push_back((unsigned char)0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bytedata.empty() || bytedata.size() != lines.size()*lenbytes)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
aTexture = new TDataStd_HArray1OfByte(1, lines.size()*lenbytes);
|
||||||
|
std::list<unsigned char>::iterator bdit;
|
||||||
|
int i;
|
||||||
|
for (i = 1, bdit = bytedata.begin(); bdit != bytedata.end(); ++bdit, ++i)
|
||||||
|
aTexture->SetValue(i, (Standard_Byte)(*bdit));
|
||||||
|
|
||||||
|
int aTextureId = GetEngine()->addTexture(GetDocID(), lenbytes*8, lines.size(), aTexture, theTextureFile);
|
||||||
|
if (aTextureId > 0) SetErrorCode(OK);
|
||||||
|
return aTextureId;
|
||||||
|
}
|
||||||
|
|
||||||
|
int GEOMImpl_IInsertOperations::AddTexture(int theWidth, int theHeight,
|
||||||
|
const Handle(TDataStd_HArray1OfByte)& theTexture)
|
||||||
|
{
|
||||||
|
SetErrorCode(KO);
|
||||||
|
int aTextureId = GetEngine()->addTexture(GetDocID(), theWidth, theHeight, theTexture);
|
||||||
|
if (aTextureId > 0) SetErrorCode(OK);
|
||||||
|
return aTextureId;
|
||||||
|
}
|
||||||
|
|
||||||
|
Handle(TDataStd_HArray1OfByte) GEOMImpl_IInsertOperations::GetTexture(int theTextureId,
|
||||||
|
int& theWidth, int& theHeight)
|
||||||
|
{
|
||||||
|
SetErrorCode(KO);
|
||||||
|
|
||||||
|
Handle(TDataStd_HArray1OfByte) aTexture;
|
||||||
|
theWidth = theHeight = 0;
|
||||||
|
TCollection_AsciiString aFileName;
|
||||||
|
|
||||||
|
if (theTextureId <= 0)
|
||||||
|
return aTexture;
|
||||||
|
|
||||||
|
aTexture = GetEngine()->getTexture(GetDocID(), theTextureId, theWidth, theHeight, aFileName);
|
||||||
|
|
||||||
|
if (theWidth > 0 && theHeight > 0 && aTexture->Length() > 0) SetErrorCode(OK);
|
||||||
|
|
||||||
|
return aTexture;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::list<int> GEOMImpl_IInsertOperations::GetAllTextures()
|
||||||
|
{
|
||||||
|
SetErrorCode(KO);
|
||||||
|
std::list<int> id_list = GetEngine()->getAllTextures(GetDocID());
|
||||||
|
SetErrorCode(OK);
|
||||||
|
return id_list;
|
||||||
|
}
|
||||||
|
@ -30,6 +30,9 @@
|
|||||||
#include <TColStd_HSequenceOfAsciiString.hxx>
|
#include <TColStd_HSequenceOfAsciiString.hxx>
|
||||||
#include <TCollection_HAsciiString.hxx>
|
#include <TCollection_HAsciiString.hxx>
|
||||||
#include <Resource_Manager.hxx>
|
#include <Resource_Manager.hxx>
|
||||||
|
#include <list>
|
||||||
|
|
||||||
|
class Handle_TDataStd_HArray1OfByte;
|
||||||
|
|
||||||
class GEOMImpl_IInsertOperations : public GEOM_IOperations {
|
class GEOMImpl_IInsertOperations : public GEOM_IOperations {
|
||||||
public:
|
public:
|
||||||
@ -56,6 +59,16 @@ class GEOMImpl_IInsertOperations : public GEOM_IOperations {
|
|||||||
const TCollection_AsciiString& theFormat,
|
const TCollection_AsciiString& theFormat,
|
||||||
Handle(TCollection_HAsciiString)& theLibName);
|
Handle(TCollection_HAsciiString)& theLibName);
|
||||||
|
|
||||||
|
Standard_EXPORT int LoadTexture(const TCollection_AsciiString& theTextureFile);
|
||||||
|
|
||||||
|
Standard_EXPORT int AddTexture(int theWidth, int theHeight,
|
||||||
|
const Handle(TDataStd_HArray1OfByte)& theTexture);
|
||||||
|
|
||||||
|
Standard_EXPORT Handle(TDataStd_HArray1OfByte) GetTexture(int theTextureId,
|
||||||
|
int& theWidth, int& theHeight);
|
||||||
|
|
||||||
|
Standard_EXPORT std::list<int> GetAllTextures();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Standard_Boolean InitResMgr ();
|
Standard_Boolean InitResMgr ();
|
||||||
|
|
||||||
|
@ -941,7 +941,7 @@ Handle(TColStd_HSequenceOfInteger) GEOMImpl_IShapesOperations::SubShapeAllIDs
|
|||||||
} else {
|
} else {
|
||||||
TopExp_Explorer exp (aShape, TopAbs_ShapeEnum(theShapeType));
|
TopExp_Explorer exp (aShape, TopAbs_ShapeEnum(theShapeType));
|
||||||
for (; exp.More(); exp.Next())
|
for (; exp.More(); exp.Next())
|
||||||
if (!exp.Current().IsSame(aShape) && mapShape.Add(exp.Current()))
|
if (mapShape.Add(exp.Current()))
|
||||||
listShape.Append(exp.Current());
|
listShape.Append(exp.Current());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -261,6 +261,15 @@ Standard_Integer GEOMImpl_PartitionDriver::Execute(TFunction_Logbook& log) const
|
|||||||
aShape = PS.Shape();
|
aShape = PS.Shape();
|
||||||
if (aShape.IsNull()) return 0;
|
if (aShape.IsNull()) return 0;
|
||||||
|
|
||||||
|
//Alternative case to check not valid partition IPAL21418
|
||||||
|
TopoDS_Iterator It (aShape, Standard_True, Standard_True);
|
||||||
|
int nbSubshapes=0;
|
||||||
|
for (; It.More(); It.Next())
|
||||||
|
nbSubshapes++;
|
||||||
|
if (!nbSubshapes)
|
||||||
|
Standard_ConstructionError::Raise("Partition aborted : non valid shape result");
|
||||||
|
//end of IPAL21418
|
||||||
|
|
||||||
if (!BRepAlgo::IsValid(aShape)) {
|
if (!BRepAlgo::IsValid(aShape)) {
|
||||||
// 08.07.2008 added by skl during fixing bug 19761 from Mantis
|
// 08.07.2008 added by skl during fixing bug 19761 from Mantis
|
||||||
ShapeFix_ShapeTolerance aSFT;
|
ShapeFix_ShapeTolerance aSFT;
|
||||||
|
@ -421,15 +421,10 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const
|
|||||||
if ( ish == 0 ) return 0;
|
if ( ish == 0 ) return 0;
|
||||||
BRepClass3d_SolidClassifier SC (Sol);
|
BRepClass3d_SolidClassifier SC (Sol);
|
||||||
SC.PerformInfinitePoint(Precision::Confusion());
|
SC.PerformInfinitePoint(Precision::Confusion());
|
||||||
switch (SC.State()) {
|
if (SC.State() == TopAbs_IN)
|
||||||
case TopAbs_IN:
|
aShape = Sol.Reversed();
|
||||||
aShape = Sol.Reversed(); break;
|
else
|
||||||
case TopAbs_OUT:
|
aShape = Sol;
|
||||||
aShape = Sol; break;
|
|
||||||
default: // not closed shell?
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (aType == COMPOUND_SHAPES) {
|
else if (aType == COMPOUND_SHAPES) {
|
||||||
Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes();
|
Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes();
|
||||||
|
@ -28,6 +28,8 @@
|
|||||||
|
|
||||||
#include <GEOMImpl_IMeasureOperations.hxx>
|
#include <GEOMImpl_IMeasureOperations.hxx>
|
||||||
|
|
||||||
|
#include <Basics_Utils.hxx>
|
||||||
|
|
||||||
// OCCT Includes
|
// OCCT Includes
|
||||||
#include <BRepBuilderAPI_Transform.hxx>
|
#include <BRepBuilderAPI_Transform.hxx>
|
||||||
#include <BRep_Tool.hxx>
|
#include <BRep_Tool.hxx>
|
||||||
@ -78,6 +80,9 @@ Standard_Integer GEOMImpl_SketcherDriver::Execute(TFunction_Logbook& log) const
|
|||||||
|
|
||||||
TopoDS_Shape aShape;
|
TopoDS_Shape aShape;
|
||||||
|
|
||||||
|
// Set "C" numeric locale to save numbers correctly
|
||||||
|
Kernel_Utils::Localizer loc;
|
||||||
|
|
||||||
// create sketcher
|
// create sketcher
|
||||||
Sketcher_Profile aProfile (aCommand.ToCString());
|
Sketcher_Profile aProfile (aCommand.ToCString());
|
||||||
|
|
||||||
|
@ -229,7 +229,7 @@ libGEOMimpl_la_LDFLAGS = \
|
|||||||
../ShHealOper/libShHealOper.la \
|
../ShHealOper/libShHealOper.la \
|
||||||
../ARCHIMEDE/libGEOMArchimede.la \
|
../ARCHIMEDE/libGEOMArchimede.la \
|
||||||
../SKETCHER/libGEOMSketcher.la \
|
../SKETCHER/libGEOMSketcher.la \
|
||||||
$(KERNEL_LDFLAGS) -lSALOMELocalTrace \
|
$(KERNEL_LDFLAGS) -lSALOMELocalTrace -lSALOMEBasics \
|
||||||
$(STDLIB) \
|
$(STDLIB) \
|
||||||
$(CAS_LDPATH) -lTKCAF -lTKFillet -lTKOffset
|
$(CAS_LDPATH) -lTKCAF -lTKFillet -lTKOffset
|
||||||
|
|
||||||
|
@ -407,6 +407,11 @@ bool GEOMToolsGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent)
|
|||||||
OnShowHideChildren( theCommandID == 8037 );
|
OnShowHideChildren( theCommandID == 8037 );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case 8039: // POINT MARKER
|
||||||
|
{
|
||||||
|
OnPointMarker();
|
||||||
|
break;
|
||||||
|
}
|
||||||
case 9024 : // OPEN - OBJBROSER POPUP
|
case 9024 : // OPEN - OBJBROSER POPUP
|
||||||
{
|
{
|
||||||
OnOpen();
|
OnOpen();
|
||||||
|
@ -72,6 +72,7 @@ private:
|
|||||||
void OnOpen();
|
void OnOpen();
|
||||||
void OnSelectOnly(int mode);
|
void OnSelectOnly(int mode);
|
||||||
void OnShowHideChildren( bool );
|
void OnShowHideChildren( bool );
|
||||||
|
void OnPointMarker();
|
||||||
|
|
||||||
// Recursive deletion of object with children
|
// Recursive deletion of object with children
|
||||||
void removeObjectWithChildren( _PTR(SObject),
|
void removeObjectWithChildren( _PTR(SObject),
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include "GEOMToolsGUI.h"
|
#include "GEOMToolsGUI.h"
|
||||||
#include "GEOMToolsGUI_TransparencyDlg.h"
|
#include "GEOMToolsGUI_TransparencyDlg.h"
|
||||||
#include "GEOMToolsGUI_NbIsosDlg.h"
|
#include "GEOMToolsGUI_NbIsosDlg.h"
|
||||||
|
#include "GEOMToolsGUI_MarkerDlg.h"
|
||||||
|
|
||||||
#include <GeometryGUI.h>
|
#include <GeometryGUI.h>
|
||||||
#include <GEOM_Displayer.h>
|
#include <GEOM_Displayer.h>
|
||||||
@ -70,6 +71,7 @@
|
|||||||
#include <Prs3d_IsoAspect.hxx>
|
#include <Prs3d_IsoAspect.hxx>
|
||||||
#include <Prs3d_PointAspect.hxx>
|
#include <Prs3d_PointAspect.hxx>
|
||||||
#include <Graphic3d_AspectMarker3d.hxx>
|
#include <Graphic3d_AspectMarker3d.hxx>
|
||||||
|
#include <Graphic3d_HArray1OfBytes.hxx>
|
||||||
|
|
||||||
// QT Includes
|
// QT Includes
|
||||||
#include <QColorDialog>
|
#include <QColorDialog>
|
||||||
@ -257,7 +259,15 @@ void GEOMToolsGUI::OnAutoColor()
|
|||||||
Standard_Real aCurScale;
|
Standard_Real aCurScale;
|
||||||
Aspect_TypeOfMarker aCurTypeOfMarker;
|
Aspect_TypeOfMarker aCurTypeOfMarker;
|
||||||
aCurPointAspect->Aspect()->Values( aCurColor, aCurTypeOfMarker, aCurScale );
|
aCurPointAspect->Aspect()->Values( aCurColor, aCurTypeOfMarker, aCurScale );
|
||||||
aCurDrawer->SetPointAspect( new Prs3d_PointAspect( aCurTypeOfMarker, aQuanColor, aCurScale) );
|
if ( aCurTypeOfMarker != Aspect_TOM_USERDEFINED ) {
|
||||||
|
aCurDrawer->SetPointAspect( new Prs3d_PointAspect( aCurTypeOfMarker, aQuanColor, aCurScale) );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Standard_Integer aWidth, aHeight;
|
||||||
|
aCurPointAspect->GetTextureSize( aWidth, aHeight );
|
||||||
|
Handle(Graphic3d_HArray1OfBytes) aTexture = aCurPointAspect->GetTexture();
|
||||||
|
aCurDrawer->SetPointAspect( new Prs3d_PointAspect( aQuanColor, 1, aWidth, aHeight, aTexture ) );
|
||||||
|
}
|
||||||
ic->SetLocalAttributes( io, aCurDrawer );
|
ic->SetLocalAttributes( io, aCurDrawer );
|
||||||
|
|
||||||
io->SetColor( aQuanColor );
|
io->SetColor( aQuanColor );
|
||||||
@ -348,7 +358,15 @@ void GEOMToolsGUI::OnColor()
|
|||||||
Standard_Real aCurScale;
|
Standard_Real aCurScale;
|
||||||
Aspect_TypeOfMarker aCurTypeOfMarker;
|
Aspect_TypeOfMarker aCurTypeOfMarker;
|
||||||
aCurPointAspect->Aspect()->Values( aCurColor, aCurTypeOfMarker, aCurScale );
|
aCurPointAspect->Aspect()->Values( aCurColor, aCurTypeOfMarker, aCurScale );
|
||||||
aCurDrawer->SetPointAspect( new Prs3d_PointAspect( aCurTypeOfMarker, aColor, aCurScale) );
|
if ( aCurTypeOfMarker != Aspect_TOM_USERDEFINED ) {
|
||||||
|
aCurDrawer->SetPointAspect( new Prs3d_PointAspect( aCurTypeOfMarker, aColor, aCurScale) );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Standard_Integer aWidth, aHeight;
|
||||||
|
aCurPointAspect->GetTextureSize( aWidth, aHeight );
|
||||||
|
Handle(Graphic3d_HArray1OfBytes) aTexture = aCurPointAspect->GetTexture();
|
||||||
|
aCurDrawer->SetPointAspect( new Prs3d_PointAspect( aColor, 1, aWidth, aHeight, aTexture ) );
|
||||||
|
}
|
||||||
ic->SetLocalAttributes(io, aCurDrawer);
|
ic->SetLocalAttributes(io, aCurDrawer);
|
||||||
|
|
||||||
io->SetColor( aColor );
|
io->SetColor( aColor );
|
||||||
@ -645,3 +663,9 @@ void GEOMToolsGUI::OnShowHideChildren( bool show )
|
|||||||
app->updateActions();
|
app->updateActions();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GEOMToolsGUI::OnPointMarker()
|
||||||
|
{
|
||||||
|
GEOMToolsGUI_MarkerDlg dlg( SUIT_Session::session()->activeApplication()->desktop() );
|
||||||
|
dlg.exec();
|
||||||
|
}
|
||||||
|
370
src/GEOMToolsGUI/GEOMToolsGUI_MarkerDlg.cxx
Normal file
@ -0,0 +1,370 @@
|
|||||||
|
// Copyright (C) 2007-2009 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||||
|
//
|
||||||
|
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
|
//
|
||||||
|
// File : GEOMToolsGUI_MarkerDlg.cxx
|
||||||
|
// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "GEOMToolsGUI_MarkerDlg.h"
|
||||||
|
|
||||||
|
#include <GeometryGUI.h>
|
||||||
|
#include <GEOM_Displayer.h>
|
||||||
|
|
||||||
|
#include <QtxComboBox.h>
|
||||||
|
#include <SUIT_ResourceMgr.h>
|
||||||
|
#include <SUIT_Session.h>
|
||||||
|
#include <LightApp_SelectionMgr.h>
|
||||||
|
#include <SalomeApp_Application.h>
|
||||||
|
#include <SalomeApp_Study.h>
|
||||||
|
#include <SALOME_ListIO.hxx>
|
||||||
|
#include <SALOME_ListIteratorOfListIO.hxx>
|
||||||
|
|
||||||
|
#include <QButtonGroup>
|
||||||
|
#include <QGridLayout>
|
||||||
|
#include <QHBoxLayout>
|
||||||
|
#include <QKeyEvent>
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QPushButton>
|
||||||
|
#include <QRadioButton>
|
||||||
|
#include <QStackedWidget>
|
||||||
|
|
||||||
|
#define MARGIN 9
|
||||||
|
#define SPACING 6
|
||||||
|
|
||||||
|
GEOMToolsGUI_MarkerDlg::GEOMToolsGUI_MarkerDlg( QWidget* parent )
|
||||||
|
: QDialog ( parent )
|
||||||
|
{
|
||||||
|
setWindowTitle( tr( "SET_MARKER_TLT" ) );
|
||||||
|
setSizeGripEnabled( true );
|
||||||
|
setModal( true );
|
||||||
|
|
||||||
|
// ---
|
||||||
|
|
||||||
|
QRadioButton* aStandardTypeRB = new QRadioButton( tr( "STANDARD_MARKER" ), this );
|
||||||
|
QRadioButton* aCustomTypeRB = new QRadioButton( tr( "CUSTOM_MARKER" ), this );
|
||||||
|
myTypeGroup = new QButtonGroup( this );
|
||||||
|
myTypeGroup->addButton( aStandardTypeRB, 0 );
|
||||||
|
myTypeGroup->addButton( aCustomTypeRB, 1 );
|
||||||
|
|
||||||
|
QHBoxLayout* aRadioLayout = new QHBoxLayout;
|
||||||
|
aRadioLayout->setMargin( 0 );
|
||||||
|
aRadioLayout->setSpacing( SPACING );
|
||||||
|
aRadioLayout->addWidget( aStandardTypeRB );
|
||||||
|
aRadioLayout->addWidget( aCustomTypeRB );
|
||||||
|
|
||||||
|
// ---
|
||||||
|
|
||||||
|
myWGStack = new QStackedWidget( this );
|
||||||
|
myWGStack->setFrameStyle( QFrame::Box | QFrame::Sunken );
|
||||||
|
|
||||||
|
// ---
|
||||||
|
|
||||||
|
QWidget* aStdWidget = new QWidget( myWGStack );
|
||||||
|
|
||||||
|
QLabel* aTypeLab = new QLabel( tr( "TYPE" ), aStdWidget );
|
||||||
|
QLabel* aScaleLab = new QLabel( tr( "SCALE" ), aStdWidget );
|
||||||
|
|
||||||
|
myStdTypeCombo = new QtxComboBox( aStdWidget );
|
||||||
|
myStdScaleCombo = new QtxComboBox( aStdWidget );
|
||||||
|
|
||||||
|
QGridLayout* aStdLayout = new QGridLayout;
|
||||||
|
aStdLayout->setMargin( MARGIN );
|
||||||
|
aStdLayout->setSpacing( SPACING );
|
||||||
|
aStdLayout->addWidget( aTypeLab, 0, 0 );
|
||||||
|
aStdLayout->addWidget( myStdTypeCombo, 0, 1 );
|
||||||
|
aStdLayout->addWidget( aScaleLab, 1, 0 );
|
||||||
|
aStdLayout->addWidget( myStdScaleCombo, 1, 1 );
|
||||||
|
aStdWidget->setLayout( aStdLayout );
|
||||||
|
|
||||||
|
// ---
|
||||||
|
|
||||||
|
QWidget* aCustomWidget = new QWidget( myWGStack );
|
||||||
|
|
||||||
|
QLabel* aCustomLab = new QLabel( tr( "CUSTOM" ), aCustomWidget );
|
||||||
|
myCustomTypeCombo = new QtxComboBox( aCustomWidget );
|
||||||
|
QPushButton* aBrowseBtn = new QPushButton( tr( "BROWSE" ), aCustomWidget );
|
||||||
|
|
||||||
|
QGridLayout* aCustomLayout = new QGridLayout;
|
||||||
|
aCustomLayout->setMargin( MARGIN );
|
||||||
|
aCustomLayout->setSpacing( SPACING );
|
||||||
|
aCustomLayout->addWidget( aCustomLab, 0, 0 );
|
||||||
|
aCustomLayout->addWidget( myCustomTypeCombo, 0, 1 );
|
||||||
|
aCustomLayout->addWidget( aBrowseBtn, 0, 2 );
|
||||||
|
aCustomLayout->setRowStretch( 1, 5 );
|
||||||
|
aCustomWidget->setLayout( aCustomLayout );
|
||||||
|
|
||||||
|
// ---
|
||||||
|
|
||||||
|
myWGStack->insertWidget( 0, aStdWidget );
|
||||||
|
myWGStack->insertWidget( 1, aCustomWidget );
|
||||||
|
|
||||||
|
// ---
|
||||||
|
|
||||||
|
QPushButton* aOkBtn = new QPushButton( tr( "OK_BTN" ), this );
|
||||||
|
aOkBtn->setAutoDefault( true ); aOkBtn->setDefault( true );
|
||||||
|
QPushButton* aCancelBtn = new QPushButton( tr( "CANCEL_BTN" ), this );
|
||||||
|
aCancelBtn->setAutoDefault( true );
|
||||||
|
QPushButton* aHelpBtn = new QPushButton( tr( "HELP_BTN" ), this );
|
||||||
|
aHelpBtn->setAutoDefault( true );
|
||||||
|
|
||||||
|
QHBoxLayout* aBtnLayout = new QHBoxLayout;
|
||||||
|
aBtnLayout->setMargin( 0 );
|
||||||
|
aBtnLayout->setSpacing( SPACING );
|
||||||
|
aBtnLayout->addWidget( aOkBtn );
|
||||||
|
aBtnLayout->addSpacing( 10 );
|
||||||
|
aBtnLayout->addStretch();
|
||||||
|
aBtnLayout->addWidget( aCancelBtn );
|
||||||
|
aBtnLayout->addWidget( aHelpBtn );
|
||||||
|
|
||||||
|
// ---
|
||||||
|
|
||||||
|
QVBoxLayout* aTopLayout = new QVBoxLayout;
|
||||||
|
aTopLayout->setMargin( MARGIN );
|
||||||
|
aTopLayout->setSpacing( SPACING );
|
||||||
|
aTopLayout->addLayout( aRadioLayout );
|
||||||
|
aTopLayout->addWidget( myWGStack );
|
||||||
|
aTopLayout->addLayout( aBtnLayout );
|
||||||
|
setLayout( aTopLayout );
|
||||||
|
|
||||||
|
// ---
|
||||||
|
|
||||||
|
connect( myTypeGroup, SIGNAL( buttonClicked( int ) ), myWGStack, SLOT( setCurrentIndex( int ) ) );
|
||||||
|
connect( aBrowseBtn, SIGNAL( clicked() ), this, SLOT( browse() ) );
|
||||||
|
connect( aOkBtn, SIGNAL( clicked() ), this, SLOT( accept() ) );
|
||||||
|
connect( aCancelBtn, SIGNAL( clicked() ), this, SLOT( reject() ) );
|
||||||
|
connect( aHelpBtn, SIGNAL( clicked() ), this, SLOT( help() ) );
|
||||||
|
|
||||||
|
// ---
|
||||||
|
|
||||||
|
aStandardTypeRB->setChecked( true );
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
|
||||||
|
GEOMToolsGUI_MarkerDlg::~GEOMToolsGUI_MarkerDlg()
|
||||||
|
{
|
||||||
|
myOperation->Destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
void GEOMToolsGUI_MarkerDlg::setStandardMarker( GEOM::marker_type type, GEOM::marker_size size )
|
||||||
|
{
|
||||||
|
if ( type > GEOM::MT_NONE && type < GEOM::MT_USER ) {
|
||||||
|
myTypeGroup->button( 0 )->setChecked( true );
|
||||||
|
myWGStack->setCurrentIndex( 0 );
|
||||||
|
myStdTypeCombo->setCurrentIndex( (int)type - 1 );
|
||||||
|
#ifdef WNT
|
||||||
|
int asize = max( (int)GEOM::MS_10, min( (int)GEOM::MS_70, (int)size ) );
|
||||||
|
#else
|
||||||
|
int asize = std::max( (int)GEOM::MS_10, std::min( (int)GEOM::MS_70, (int)size ) );
|
||||||
|
#endif
|
||||||
|
myStdScaleCombo->setCurrentIndex( asize-1 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GEOMToolsGUI_MarkerDlg::setCustomMarker( int id )
|
||||||
|
{
|
||||||
|
if ( id > 0 ) {
|
||||||
|
myTypeGroup->button( 1 )->setChecked( true );
|
||||||
|
myWGStack->setCurrentIndex( 1 );
|
||||||
|
addTexture( id );
|
||||||
|
myCustomTypeCombo->setCurrentId( id );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GEOM::marker_type GEOMToolsGUI_MarkerDlg::getMarkerType() const
|
||||||
|
{
|
||||||
|
return myWGStack->currentIndex() == 0 ? (GEOM::marker_type)myStdTypeCombo->currentId() : GEOM::MT_USER;
|
||||||
|
}
|
||||||
|
|
||||||
|
GEOM::marker_size GEOMToolsGUI_MarkerDlg::getStandardMarkerScale() const
|
||||||
|
{
|
||||||
|
return myWGStack->currentIndex() == 0 ? (GEOM::marker_size)myStdScaleCombo->currentId() : GEOM::MS_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
int GEOMToolsGUI_MarkerDlg::getCustomMarkerID() const
|
||||||
|
{
|
||||||
|
return myWGStack->currentIndex() == 1 ? myCustomTypeCombo->currentId() : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GEOMToolsGUI_MarkerDlg::accept()
|
||||||
|
{
|
||||||
|
if ( getStudy() ) {
|
||||||
|
LightApp_SelectionMgr* selMgr = qobject_cast<SalomeApp_Application*>( getStudy()->application() )->selectionMgr();
|
||||||
|
if ( selMgr ) {
|
||||||
|
SALOME_ListIO selected;
|
||||||
|
selMgr->selectedObjects( selected );
|
||||||
|
if ( !selected.IsEmpty() ) {
|
||||||
|
_PTR(Study) study = getStudy()->studyDS();
|
||||||
|
for ( SALOME_ListIteratorOfListIO it( selected ); it.More(); it.Next() ) {
|
||||||
|
_PTR(SObject) aSObject( study->FindObjectID( it.Value()->getEntry() ) );
|
||||||
|
GEOM::GEOM_Object_var anObject =
|
||||||
|
GEOM::GEOM_Object::_narrow( GeometryGUI::ClientSObjectToObject( aSObject ) );
|
||||||
|
if ( !anObject->_is_nil() ) {
|
||||||
|
if ( myWGStack->currentIndex() == 0 )
|
||||||
|
anObject->SetMarkerStd( getMarkerType(), getStandardMarkerScale() );
|
||||||
|
else if ( getCustomMarkerID() > 0 )
|
||||||
|
anObject->SetMarkerTexture( getCustomMarkerID() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
GEOM_Displayer displayer( getStudy() );
|
||||||
|
displayer.Redisplay( selected, true );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
QDialog::accept();
|
||||||
|
}
|
||||||
|
|
||||||
|
void GEOMToolsGUI_MarkerDlg::keyPressEvent( QKeyEvent* e )
|
||||||
|
{
|
||||||
|
if ( e->key() == Qt::Key_F1 )
|
||||||
|
help();
|
||||||
|
QDialog::keyPressEvent( e );
|
||||||
|
}
|
||||||
|
|
||||||
|
void GEOMToolsGUI_MarkerDlg::init()
|
||||||
|
{
|
||||||
|
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
|
||||||
|
|
||||||
|
// ---
|
||||||
|
|
||||||
|
for ( int i = GEOM::MT_POINT; i < GEOM::MT_USER; i++ ) {
|
||||||
|
QString icoFile = QString( "ICON_VERTEX_MARKER_%1" ).arg( i );
|
||||||
|
QPixmap pixmap = resMgr->loadPixmap( "GEOM", tr( qPrintable( icoFile ) ) );
|
||||||
|
myStdTypeCombo->addItem( pixmap, QString() );
|
||||||
|
myStdTypeCombo->setId( myStdTypeCombo->count()-1, i );
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---
|
||||||
|
|
||||||
|
for ( int i = GEOM::MS_10; i <= GEOM::MS_70; i++ ) {
|
||||||
|
myStdScaleCombo->addItem( QString::number( (i-1)*0.5 + 1.0 ) );
|
||||||
|
myStdScaleCombo->setId( myStdScaleCombo->count()-1, i );
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---
|
||||||
|
|
||||||
|
GEOM::GEOM_Gen_var engine = GeometryGUI::GetGeomGen();
|
||||||
|
myOperation = engine->GetIInsertOperations( getStudy()->id() );
|
||||||
|
GEOM::ListOfLong_var ids = myOperation->GetAllTextures();
|
||||||
|
for ( int i = 0; i < ids->length(); i++ )
|
||||||
|
addTexture( ids[i] );
|
||||||
|
|
||||||
|
// ---
|
||||||
|
|
||||||
|
GEOM::marker_type aType = (GEOM::marker_type)-1;
|
||||||
|
GEOM::marker_size aSize = (GEOM::marker_size)-1;
|
||||||
|
int aTexture = 0;
|
||||||
|
if ( getStudy() ) {
|
||||||
|
LightApp_SelectionMgr* selMgr = qobject_cast<SalomeApp_Application*>( getStudy()->application() )->selectionMgr();
|
||||||
|
if ( selMgr ) {
|
||||||
|
SALOME_ListIO selected;
|
||||||
|
selMgr->selectedObjects( selected );
|
||||||
|
if ( !selected.IsEmpty() ) {
|
||||||
|
_PTR(Study) study = getStudy()->studyDS();
|
||||||
|
for ( SALOME_ListIteratorOfListIO it( selected ); it.More(); it.Next() ) {
|
||||||
|
_PTR(SObject) aSObject( study->FindObjectID( it.Value()->getEntry() ) );
|
||||||
|
GEOM::GEOM_Object_var anObject =
|
||||||
|
GEOM::GEOM_Object::_narrow( GeometryGUI::ClientSObjectToObject( aSObject ) );
|
||||||
|
if ( !anObject->_is_nil() ) {
|
||||||
|
GEOM::marker_type mtype = anObject->GetMarkerType();
|
||||||
|
if ( aType == -1 )
|
||||||
|
aType = mtype;
|
||||||
|
else if ( aType != mtype ) {
|
||||||
|
aType = (GEOM::marker_type)-1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ( mtype > GEOM::MT_NONE && mtype < GEOM::MT_USER ) {
|
||||||
|
GEOM::marker_size msize = anObject->GetMarkerSize();
|
||||||
|
if ( aSize == -1 )
|
||||||
|
aSize = msize;
|
||||||
|
else if ( aSize != msize )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else if ( mtype == GEOM::MT_USER ) {
|
||||||
|
int mtexture = anObject->GetMarkerTexture();
|
||||||
|
if ( aTexture == 0 )
|
||||||
|
aTexture = mtexture;
|
||||||
|
else if ( aTexture != mtexture )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( aType > GEOM::MT_NONE && aType < GEOM::MT_USER )
|
||||||
|
setStandardMarker( aType, aSize );
|
||||||
|
else if ( aType == GEOM::MT_USER )
|
||||||
|
setCustomMarker( aTexture );
|
||||||
|
else
|
||||||
|
setStandardMarker((GEOM::marker_type)(resMgr->integerValue("Geometry", "type_of_marker", (int)Aspect_TOM_PLUS) + 1),
|
||||||
|
(GEOM::marker_size)(resMgr->integerValue("Geometry", "marker_scale", 1)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void GEOMToolsGUI_MarkerDlg::addTexture( int id, bool select ) const
|
||||||
|
{
|
||||||
|
if ( id > 0 && myCustomTypeCombo->index( id ) == -1 ) {
|
||||||
|
int tWidth, tHeight;
|
||||||
|
Handle(Graphic3d_HArray1OfBytes) texture = GeometryGUI::getTexture( getStudy(), id, tWidth, tHeight );
|
||||||
|
if ( !texture.IsNull() && texture->Length() == tWidth*tHeight/8 ) {
|
||||||
|
QImage image( tWidth, tHeight, QImage::Format_Mono );
|
||||||
|
image.setColor( 0, qRgba( 0, 0, 0, 0 ) );
|
||||||
|
image.setColor( 1, qRgba( 0, 0, 0, 255 ) );
|
||||||
|
int bytesperline = tWidth/8;
|
||||||
|
for ( int j = texture->Lower(); j <= texture->Upper(); j++ ) {
|
||||||
|
uchar val = (uchar)texture->Value( j );
|
||||||
|
for ( int k = 0; k < 8; k++ ) {
|
||||||
|
int row = ( j - texture->Lower() ) / bytesperline;
|
||||||
|
int col = ( ( j - texture->Lower() ) % bytesperline ) * 8 + k;
|
||||||
|
image.setPixel( row, col, ( val & (1<<(8-k-1)) ) ? 1 : 0 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
QPixmap pixmap = QPixmap::fromImage( image );
|
||||||
|
if ( !pixmap.isNull() ) {
|
||||||
|
myCustomTypeCombo->addItem( pixmap, QString::number( id ) );
|
||||||
|
myCustomTypeCombo->setId( myCustomTypeCombo->count()-1, id );
|
||||||
|
if ( select ) myCustomTypeCombo->setCurrentId( id );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SalomeApp_Study* GEOMToolsGUI_MarkerDlg::getStudy() const
|
||||||
|
{
|
||||||
|
return qobject_cast<SalomeApp_Study*>( SUIT_Session::session()->activeApplication()->activeStudy() );
|
||||||
|
}
|
||||||
|
|
||||||
|
void GEOMToolsGUI_MarkerDlg::browse()
|
||||||
|
{
|
||||||
|
QStringList filters;
|
||||||
|
filters << tr( "Texture files (*.dat)" ) << tr( "All files (*)" );
|
||||||
|
QString aFileName = SUIT_Session::session()->activeApplication()->getFileName( true, QString(), filters.join( ";;" ), tr( "LOAD_TEXTURE_TLT" ), this );
|
||||||
|
if ( !aFileName.isEmpty() ) {
|
||||||
|
addTexture( myOperation->LoadTexture( aFileName.toLatin1().constData() ), true );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GEOMToolsGUI_MarkerDlg::help()
|
||||||
|
{
|
||||||
|
if ( getStudy() ) {
|
||||||
|
SalomeApp_Application* app = qobject_cast<SalomeApp_Application*>( getStudy()->application() );
|
||||||
|
app->onHelpContextModule( "GEOM", "point_marker_page.html" );
|
||||||
|
}
|
||||||
|
}
|
78
src/GEOMToolsGUI/GEOMToolsGUI_MarkerDlg.h
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
// Copyright (C) 2007-2009 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||||
|
//
|
||||||
|
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
|
//
|
||||||
|
// File : GEOMToolsGUI_MarkerDlg.h
|
||||||
|
// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef GEOMTOOLSGUI_MARKERDLG_H
|
||||||
|
#define GEOMTOOLSGUI_MARKERDLG_H
|
||||||
|
|
||||||
|
#include "GEOM_ToolsGUI.hxx"
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
|
||||||
|
#include <SALOMEconfig.h>
|
||||||
|
#include CORBA_CLIENT_HEADER(GEOM_Gen)
|
||||||
|
|
||||||
|
class QButtonGroup;
|
||||||
|
class QStackedWidget;
|
||||||
|
class QtxComboBox;
|
||||||
|
class SalomeApp_Study;
|
||||||
|
|
||||||
|
class GEOMTOOLSGUI_EXPORT GEOMToolsGUI_MarkerDlg : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
GEOMToolsGUI_MarkerDlg( QWidget* = 0 );
|
||||||
|
~GEOMToolsGUI_MarkerDlg();
|
||||||
|
|
||||||
|
void setStandardMarker( GEOM::marker_type, GEOM::marker_size );
|
||||||
|
void setCustomMarker( int );
|
||||||
|
GEOM::marker_type getMarkerType() const;
|
||||||
|
GEOM::marker_size getStandardMarkerScale() const;
|
||||||
|
int getCustomMarkerID() const;
|
||||||
|
|
||||||
|
void accept();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void keyPressEvent( QKeyEvent* );
|
||||||
|
|
||||||
|
private:
|
||||||
|
void init();
|
||||||
|
void addTexture( int, bool = false ) const;
|
||||||
|
SalomeApp_Study* getStudy() const;
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void browse();
|
||||||
|
void help();
|
||||||
|
|
||||||
|
private:
|
||||||
|
GEOM::GEOM_IInsertOperations_var myOperation;
|
||||||
|
QButtonGroup* myTypeGroup;
|
||||||
|
QStackedWidget* myWGStack;
|
||||||
|
QtxComboBox* myStdTypeCombo;
|
||||||
|
QtxComboBox* myStdScaleCombo;
|
||||||
|
QtxComboBox* myCustomTypeCombo;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // GEOMTOOLSGUI_MARKERDLG_H
|
@ -34,19 +34,22 @@ salomeinclude_HEADERS = \
|
|||||||
GEOM_ToolsGUI.hxx \
|
GEOM_ToolsGUI.hxx \
|
||||||
GEOMToolsGUI_NbIsosDlg.h \
|
GEOMToolsGUI_NbIsosDlg.h \
|
||||||
GEOMToolsGUI_TransparencyDlg.h \
|
GEOMToolsGUI_TransparencyDlg.h \
|
||||||
GEOMToolsGUI_DeleteDlg.h
|
GEOMToolsGUI_DeleteDlg.h \
|
||||||
|
GEOMToolsGUI_MarkerDlg.h
|
||||||
|
|
||||||
dist_libGEOMToolsGUI_la_SOURCES = \
|
dist_libGEOMToolsGUI_la_SOURCES = \
|
||||||
GEOMToolsGUI.cxx \
|
GEOMToolsGUI.cxx \
|
||||||
GEOMToolsGUI_1.cxx \
|
GEOMToolsGUI_1.cxx \
|
||||||
GEOMToolsGUI_TransparencyDlg.cxx \
|
GEOMToolsGUI_TransparencyDlg.cxx \
|
||||||
GEOMToolsGUI_NbIsosDlg.cxx \
|
GEOMToolsGUI_NbIsosDlg.cxx \
|
||||||
GEOMToolsGUI_DeleteDlg.cxx
|
GEOMToolsGUI_DeleteDlg.cxx \
|
||||||
|
GEOMToolsGUI_MarkerDlg.cxx
|
||||||
|
|
||||||
MOC_FILES = \
|
MOC_FILES = \
|
||||||
GEOMToolsGUI_TransparencyDlg_moc.cxx \
|
GEOMToolsGUI_TransparencyDlg_moc.cxx \
|
||||||
GEOMToolsGUI_NbIsosDlg_moc.cxx \
|
GEOMToolsGUI_NbIsosDlg_moc.cxx \
|
||||||
GEOMToolsGUI_DeleteDlg_moc.cxx
|
GEOMToolsGUI_DeleteDlg_moc.cxx \
|
||||||
|
GEOMToolsGUI_MarkerDlg_moc.cxx
|
||||||
|
|
||||||
nodist_libGEOMToolsGUI_la_SOURCES = \
|
nodist_libGEOMToolsGUI_la_SOURCES = \
|
||||||
$(MOC_FILES)
|
$(MOC_FILES)
|
||||||
|
@ -66,11 +66,11 @@
|
|||||||
// function : GEOM_Gen_i()
|
// function : GEOM_Gen_i()
|
||||||
// purpose : constructor to be called for servant creation.
|
// purpose : constructor to be called for servant creation.
|
||||||
//============================================================================
|
//============================================================================
|
||||||
GEOM_Gen_i::GEOM_Gen_i(CORBA::ORB_ptr orb,
|
GEOM_Gen_i::GEOM_Gen_i(CORBA::ORB_ptr orb,
|
||||||
PortableServer::POA_ptr poa,
|
PortableServer::POA_ptr poa,
|
||||||
PortableServer::ObjectId * contId,
|
PortableServer::ObjectId* contId,
|
||||||
const char *instanceName,
|
const char* instanceName,
|
||||||
const char *interfaceName) :
|
const char* interfaceName) :
|
||||||
Engines_Component_i(orb, poa, contId, instanceName, interfaceName)
|
Engines_Component_i(orb, poa, contId, instanceName, interfaceName)
|
||||||
{
|
{
|
||||||
_thisObj = this;
|
_thisObj = this;
|
||||||
@ -1587,7 +1587,7 @@ GEOM::GEOM_Object_ptr GEOM_Gen_i::AddSubShape (GEOM::GEOM_Object_ptr theMainShap
|
|||||||
void GEOM_Gen_i::RemoveObject(GEOM::GEOM_Object_ptr theObject)
|
void GEOM_Gen_i::RemoveObject(GEOM::GEOM_Object_ptr theObject)
|
||||||
{
|
{
|
||||||
CORBA::String_var anEntry = theObject->GetEntry();
|
CORBA::String_var anEntry = theObject->GetEntry();
|
||||||
Handle(GEOM_Object) anObject = _impl->GetObject(theObject->GetStudyID(), anEntry);
|
Handle(GEOM_Object) anObject = _impl->GetObject(theObject->GetStudyID(), anEntry, false);
|
||||||
if (anObject.IsNull()) return;
|
if (anObject.IsNull()) return;
|
||||||
_impl->RemoveObject(anObject);
|
_impl->RemoveObject(anObject);
|
||||||
return;
|
return;
|
||||||
@ -1808,19 +1808,19 @@ char* GEOM_Gen_i::getObjectInfo(CORBA::Long studyId, const char* entry)
|
|||||||
//=====================================================================================
|
//=====================================================================================
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
GEOM_I_EXPORT
|
/*
|
||||||
PortableServer::ObjectId* GEOMEngine_factory(CORBA::ORB*, PortableServer::POA*, PortableServer::ObjectId*, const char*, const char*);
|
GEOM_I_EXPORT
|
||||||
|
PortableServer::ObjectId* GEOMEngine_factory(CORBA::ORB*, PortableServer::POA*, PortableServer::ObjectId*, const char*, const char*);
|
||||||
GEOM_I_EXPORT
|
*/
|
||||||
PortableServer::ObjectId * GEOMEngine_factory(CORBA::ORB_ptr orb,
|
|
||||||
PortableServer::POA_ptr poa,
|
GEOM_I_EXPORT
|
||||||
PortableServer::ObjectId * contId,
|
PortableServer::ObjectId* GEOMEngine_factory(CORBA::ORB_ptr orb,
|
||||||
const char *instanceName,
|
PortableServer::POA_ptr poa,
|
||||||
const char * interfaceName)
|
PortableServer::ObjectId* contId,
|
||||||
|
const char* instanceName,
|
||||||
|
const char* interfaceName)
|
||||||
{
|
{
|
||||||
GEOM_Gen_i * myGEOM_Gen_i = new GEOM_Gen_i(orb, poa, contId, instanceName, interfaceName);
|
GEOM_Gen_i* myGEOM_Gen_i = new GEOM_Gen_i(orb, poa, contId, instanceName, interfaceName);
|
||||||
// Don't understand the reason of this register ????
|
return myGEOM_Gen_i->getId();
|
||||||
// myGEOM_Gen_i->register_name("/myGEOM_Gen"); // NRI : 11/07/2002 : Add for Supervision example
|
|
||||||
return myGEOM_Gen_i->getId();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
#include "GEOM_Object.hxx"
|
#include "GEOM_Object.hxx"
|
||||||
|
|
||||||
#include <TColStd_HSequenceOfAsciiString.hxx>
|
#include <TColStd_HSequenceOfAsciiString.hxx>
|
||||||
|
#include <TDataStd_HArray1OfByte.hxx>
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
@ -215,3 +216,52 @@ void GEOM_IInsertOperations_i::ExportTranslators
|
|||||||
theFormats = aFormatsArray._retn();
|
theFormats = aFormatsArray._retn();
|
||||||
thePatterns = aPatternsArray._retn();
|
thePatterns = aPatternsArray._retn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CORBA::Long GEOM_IInsertOperations_i::LoadTexture(const char* theTextureFile)
|
||||||
|
{
|
||||||
|
GetOperations()->SetNotDone();
|
||||||
|
return GetOperations()->LoadTexture( theTextureFile );
|
||||||
|
}
|
||||||
|
|
||||||
|
CORBA::Long GEOM_IInsertOperations_i::AddTexture(CORBA::Long theWidth, CORBA::Long theHeight,
|
||||||
|
const SALOMEDS::TMPFile& theTexture)
|
||||||
|
{
|
||||||
|
GetOperations()->SetNotDone();
|
||||||
|
Handle(TDataStd_HArray1OfByte) aTexture;
|
||||||
|
if ( theTexture.length() > 0 ) {
|
||||||
|
aTexture = new TDataStd_HArray1OfByte( 1, theTexture.length() );
|
||||||
|
for ( int i = 0; i < theTexture.length(); i++ )
|
||||||
|
aTexture->SetValue( i+1, (Standard_Byte)theTexture[i] );
|
||||||
|
}
|
||||||
|
return GetOperations()->AddTexture( theWidth, theHeight, aTexture );
|
||||||
|
}
|
||||||
|
|
||||||
|
SALOMEDS::TMPFile* GEOM_IInsertOperations_i::GetTexture(CORBA::Long theID,
|
||||||
|
CORBA::Long& theWidth,
|
||||||
|
CORBA::Long& theHeight)
|
||||||
|
{
|
||||||
|
int aWidth, aHeight;
|
||||||
|
Handle(TDataStd_HArray1OfByte) aTextureImpl = GetOperations()->GetTexture( theID, aWidth, aHeight );
|
||||||
|
theWidth = aWidth;
|
||||||
|
theHeight = aHeight;
|
||||||
|
SALOMEDS::TMPFile_var aTexture;
|
||||||
|
if ( !aTextureImpl.IsNull() ) {
|
||||||
|
aTexture = new SALOMEDS::TMPFile;
|
||||||
|
aTexture->length( aTextureImpl->Length() );
|
||||||
|
for ( int i = aTextureImpl->Lower(); i <= aTextureImpl->Upper(); i++ )
|
||||||
|
aTexture[i-aTextureImpl->Lower()] = aTextureImpl->Value( i );
|
||||||
|
}
|
||||||
|
return aTexture._retn();
|
||||||
|
}
|
||||||
|
|
||||||
|
GEOM::ListOfLong* GEOM_IInsertOperations_i::GetAllTextures()
|
||||||
|
{
|
||||||
|
std::list<int> localIDs = GetOperations()->GetAllTextures();
|
||||||
|
GEOM::ListOfLong_var anIDs = new GEOM::ListOfLong(localIDs.size());
|
||||||
|
anIDs->length(localIDs.size());
|
||||||
|
std::list<int>::const_iterator anIt;
|
||||||
|
int i = 0;
|
||||||
|
for( anIt = localIDs.begin(); anIt != localIDs.end(); ++anIt, i++)
|
||||||
|
anIDs[i] = *anIt;
|
||||||
|
return anIDs._retn();
|
||||||
|
}
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
#include <SALOMEconfig.h>
|
#include <SALOMEconfig.h>
|
||||||
|
|
||||||
#include CORBA_SERVER_HEADER(GEOM_Gen)
|
#include CORBA_SERVER_HEADER(GEOM_Gen)
|
||||||
|
#include CORBA_CLIENT_HEADER(SALOMEDS)
|
||||||
#include "GEOM_IOperations_i.hh"
|
#include "GEOM_IOperations_i.hh"
|
||||||
#include "GEOM_Object_i.hh"
|
#include "GEOM_Object_i.hh"
|
||||||
|
|
||||||
@ -56,6 +57,15 @@ class GEOM_I_EXPORT GEOM_IInsertOperations_i :
|
|||||||
void ExportTranslators (GEOM::string_array_out theFormats,
|
void ExportTranslators (GEOM::string_array_out theFormats,
|
||||||
GEOM::string_array_out thePatterns);
|
GEOM::string_array_out thePatterns);
|
||||||
|
|
||||||
|
CORBA::Long LoadTexture(const char* theTextureFile);
|
||||||
|
CORBA::Long AddTexture(CORBA::Long theWidth, CORBA::Long theHeight,
|
||||||
|
const SALOMEDS::TMPFile& theTexture);
|
||||||
|
SALOMEDS::TMPFile* GetTexture(CORBA::Long theID,
|
||||||
|
CORBA::Long& theWidth,
|
||||||
|
CORBA::Long& theHeight);
|
||||||
|
|
||||||
|
GEOM::ListOfLong* GetAllTextures();
|
||||||
|
|
||||||
::GEOMImpl_IInsertOperations* GetOperations()
|
::GEOMImpl_IInsertOperations* GetOperations()
|
||||||
{ return (::GEOMImpl_IInsertOperations*)GetImpl(); }
|
{ return (::GEOMImpl_IInsertOperations*)GetImpl(); }
|
||||||
};
|
};
|
||||||
|
@ -184,6 +184,69 @@ CORBA::Boolean GEOM_Object_i::GetAutoColor()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* SetMarkerStd
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
void GEOM_Object_i::SetMarkerStd(GEOM::marker_type theType, GEOM::marker_size theSize)
|
||||||
|
{
|
||||||
|
if ( theType == GEOM::MT_NONE || theSize == GEOM::MS_NONE ) {
|
||||||
|
_impl->UnsetMarker();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Aspect_TypeOfMarker aType = (Aspect_TypeOfMarker)( (int)theType-1 );
|
||||||
|
double aSize = ((int)theSize+1)*0.5;
|
||||||
|
_impl->SetMarkerStd( aType, aSize );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* SetMarkerTexture
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
void GEOM_Object_i::SetMarkerTexture(CORBA::Long theTextureId)
|
||||||
|
{
|
||||||
|
_impl->SetMarkerTexture( theTextureId );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* GetMarkerType
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
GEOM::marker_type GEOM_Object_i::GetMarkerType()
|
||||||
|
{
|
||||||
|
return (GEOM::marker_type)( (int)_impl->GetMarkerType()+1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* GetMarkerSize
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
GEOM::marker_size GEOM_Object_i::GetMarkerSize()
|
||||||
|
{
|
||||||
|
int aSize = (int)( _impl->GetMarkerSize()/0.5 ) - 1;
|
||||||
|
return aSize < GEOM::MS_10 || aSize > GEOM::MS_70 ? GEOM::MS_NONE : (GEOM::marker_size)aSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* GetMarkerTexture
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
CORBA::Long GEOM_Object_i::GetMarkerTexture()
|
||||||
|
{
|
||||||
|
return _impl->GetMarkerTexture();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
* SetStudyEntry
|
* SetStudyEntry
|
||||||
|
@ -62,6 +62,16 @@ class GEOM_I_EXPORT GEOM_Object_i : public virtual POA_GEOM::GEOM_Object, public
|
|||||||
|
|
||||||
virtual CORBA::Boolean GetAutoColor();
|
virtual CORBA::Boolean GetAutoColor();
|
||||||
|
|
||||||
|
void SetMarkerStd(GEOM::marker_type theType, GEOM::marker_size theSize);
|
||||||
|
|
||||||
|
void SetMarkerTexture(CORBA::Long theTextureId);
|
||||||
|
|
||||||
|
GEOM::marker_type GetMarkerType();
|
||||||
|
|
||||||
|
GEOM::marker_size GetMarkerSize();
|
||||||
|
|
||||||
|
CORBA::Long GetMarkerTexture();
|
||||||
|
|
||||||
virtual void SetStudyEntry(const char* theEntry);
|
virtual void SetStudyEntry(const char* theEntry);
|
||||||
|
|
||||||
virtual char* GetStudyEntry();
|
virtual char* GetStudyEntry();
|
||||||
|
@ -456,13 +456,13 @@ def TestOtherOperations (geompy, math):
|
|||||||
|
|
||||||
Shell_1 = geompy.MakeShell([Face_1, Rotation_1, Rotation_2, Rotation_3, Rotation_4, Rotation_5])
|
Shell_1 = geompy.MakeShell([Face_1, Rotation_1, Rotation_2, Rotation_3, Rotation_4, Rotation_5])
|
||||||
Solid_1 = geompy.MakeSolid([Shell_1])
|
Solid_1 = geompy.MakeSolid([Shell_1])
|
||||||
NoExtraEdges_1 = geompy.RemoveExtraEdges(Solid_1, 0)
|
NoExtraEdges_1 = geompy.RemoveExtraEdges(Solid_1, True) # doUnionFaces = True
|
||||||
|
|
||||||
geompy.addToStudy(Shell_1, "Shell_1")
|
geompy.addToStudy(Shell_1, "Shell_1")
|
||||||
geompy.addToStudy(Solid_1, "Solid_1")
|
geompy.addToStudy(Solid_1, "Solid_1")
|
||||||
geompy.addToStudy(NoExtraEdges_1, "NoExtraEdges_1")
|
geompy.addToStudy(NoExtraEdges_1, "NoExtraEdges_1")
|
||||||
|
|
||||||
# RemoveExtraEdges
|
# RemoveExtraEdges (by default, doUnionFaces = False)
|
||||||
freeFacesWithoutExtra = geompy.RemoveExtraEdges(freeFaces)
|
freeFacesWithoutExtra = geompy.RemoveExtraEdges(freeFaces)
|
||||||
|
|
||||||
geompy.addToStudy(freeFacesWithoutExtra, "freeFacesWithoutExtra")
|
geompy.addToStudy(freeFacesWithoutExtra, "freeFacesWithoutExtra")
|
||||||
@ -529,7 +529,7 @@ def TestOtherOperations (geompy, math):
|
|||||||
v_y, Loc, geompy.GEOM.ST_ON)
|
v_y, Loc, geompy.GEOM.ST_ON)
|
||||||
for edge_i in edges_on_pln:
|
for edge_i in edges_on_pln:
|
||||||
geompy.addToStudy(edge_i, "Edge on Plane (N = (0, -1, 0) & Location = (0, -50, 0)")
|
geompy.addToStudy(edge_i, "Edge on Plane (N = (0, -1, 0) & Location = (0, -50, 0)")
|
||||||
|
|
||||||
# GetShapesOnPlaneWithLocationIDs
|
# GetShapesOnPlaneWithLocationIDs
|
||||||
edges_on_pln_ids = geompy.GetShapesOnPlaneWithLocationIDs(
|
edges_on_pln_ids = geompy.GetShapesOnPlaneWithLocationIDs(
|
||||||
blocksComp, geompy.ShapeType["EDGE"], v_y, Loc, geompy.GEOM.ST_ON)
|
blocksComp, geompy.ShapeType["EDGE"], v_y, Loc, geompy.GEOM.ST_ON)
|
||||||
|
53
src/GEOM_SWIG/GEOM_example7.py
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
#
|
||||||
|
# This library is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public
|
||||||
|
# License as published by the Free Software Foundation; either
|
||||||
|
# version 2.1 of the License.
|
||||||
|
#
|
||||||
|
# This library is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
# Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public
|
||||||
|
# License along with this library; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
#
|
||||||
|
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
|
#
|
||||||
|
# ---
|
||||||
|
#
|
||||||
|
# File : GEOM_example7.py
|
||||||
|
# Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
|
||||||
|
#
|
||||||
|
# ---
|
||||||
|
|
||||||
|
import salome
|
||||||
|
import geompy
|
||||||
|
import os
|
||||||
|
import GEOM
|
||||||
|
|
||||||
|
data_dir = os.getenv('DATA_DIR')
|
||||||
|
if data_dir:
|
||||||
|
texture_1 = geompy.LoadTexture(os.path.join(data_dir, "Textures", "texture1.dat"))
|
||||||
|
texture_2 = geompy.LoadTexture(os.path.join(data_dir, "Textures", "texture2.dat"))
|
||||||
|
texture_3 = geompy.LoadTexture(os.path.join(data_dir, "Textures", "texture3.dat"))
|
||||||
|
|
||||||
|
Vertex_1 = geompy.MakeVertex(0, 0, 0)
|
||||||
|
Vertex_2 = geompy.MakeVertex(100, 0, 0)
|
||||||
|
Vertex_3 = geompy.MakeVertex(0, 100, 0)
|
||||||
|
Vertex_4 = geompy.MakeVertex(0, 0, 100)
|
||||||
|
Vertex_5 = geompy.MakeVertex(100, 0, 100)
|
||||||
|
Vertex_1.SetMarkerTexture(texture_1);
|
||||||
|
Vertex_2.SetMarkerTexture(texture_2);
|
||||||
|
Vertex_3.SetMarkerTexture(texture_3);
|
||||||
|
Vertex_4.SetMarkerStd(GEOM.MT_O_PLUS, GEOM.MS_25);
|
||||||
|
Vertex_5.SetMarkerStd(GEOM.MT_BALL, GEOM.MS_40);
|
||||||
|
geompy.addToStudy( Vertex_1, "Vertex_1" )
|
||||||
|
geompy.addToStudy( Vertex_2, "Vertex_2" )
|
||||||
|
geompy.addToStudy( Vertex_3, "Vertex_3" )
|
||||||
|
geompy.addToStudy( Vertex_4, "Vertex_4" )
|
||||||
|
geompy.addToStudy( Vertex_5, "Vertex_5" )
|
||||||
|
pass
|
@ -48,6 +48,7 @@ dist_salomescript_DATA = \
|
|||||||
GEOM_example4.py \
|
GEOM_example4.py \
|
||||||
GEOM_example5.py \
|
GEOM_example5.py \
|
||||||
GEOM_example6.py \
|
GEOM_example6.py \
|
||||||
|
GEOM_example7.py \
|
||||||
GEOM_moteur.py \
|
GEOM_moteur.py \
|
||||||
GEOM_TestAll.py \
|
GEOM_TestAll.py \
|
||||||
GEOM_TestOthers.py \
|
GEOM_TestOthers.py \
|
||||||
|
@ -38,5 +38,5 @@ for k in dir(geom):
|
|||||||
if k[0] == '_':continue
|
if k[0] == '_':continue
|
||||||
globals()[k]=getattr(geom,k)
|
globals()[k]=getattr(geom,k)
|
||||||
del k
|
del k
|
||||||
from geompyDC import ShapeType,GEOM,kind, info
|
from geompyDC import ShapeType,GEOM,kind, info, PackData, ReadTexture
|
||||||
|
|
||||||
|
@ -93,9 +93,9 @@ ShapeType = {"COMPOUND":0, "COMPSOLID":1, "SOLID":2, "SHELL":3, "FACE":4, "WIRE"
|
|||||||
def RaiseIfFailed (Method_name, Operation):
|
def RaiseIfFailed (Method_name, Operation):
|
||||||
if Operation.IsDone() == 0 and Operation.GetErrorCode() != "NOT_FOUND_ANY":
|
if Operation.IsDone() == 0 and Operation.GetErrorCode() != "NOT_FOUND_ANY":
|
||||||
raise RuntimeError, Method_name + " : " + Operation.GetErrorCode()
|
raise RuntimeError, Method_name + " : " + Operation.GetErrorCode()
|
||||||
|
|
||||||
## Return list of variables value from salome notebook
|
## Return list of variables value from salome notebook
|
||||||
## @ingroup l1_geompy_auxiliary
|
## @ingroup l1_geompy_auxiliary
|
||||||
def ParseParameters(*parameters):
|
def ParseParameters(*parameters):
|
||||||
Result = []
|
Result = []
|
||||||
StringResult = ""
|
StringResult = ""
|
||||||
@ -108,16 +108,16 @@ def ParseParameters(*parameters):
|
|||||||
else:
|
else:
|
||||||
Result.append(parameter)
|
Result.append(parameter)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
StringResult = StringResult + str(parameter)
|
StringResult = StringResult + str(parameter)
|
||||||
StringResult = StringResult + ":"
|
StringResult = StringResult + ":"
|
||||||
pass
|
pass
|
||||||
StringResult = StringResult[:len(StringResult)-1]
|
StringResult = StringResult[:len(StringResult)-1]
|
||||||
Result.append(StringResult)
|
Result.append(StringResult)
|
||||||
return Result
|
return Result
|
||||||
|
|
||||||
## Return list of variables value from salome notebook
|
## Return list of variables value from salome notebook
|
||||||
## @ingroup l1_geompy_auxiliary
|
## @ingroup l1_geompy_auxiliary
|
||||||
def ParseList(list):
|
def ParseList(list):
|
||||||
Result = []
|
Result = []
|
||||||
StringResult = ""
|
StringResult = ""
|
||||||
@ -128,15 +128,15 @@ def ParseList(list):
|
|||||||
else:
|
else:
|
||||||
Result.append(str(parameter))
|
Result.append(str(parameter))
|
||||||
pass
|
pass
|
||||||
|
|
||||||
StringResult = StringResult + str(parameter)
|
StringResult = StringResult + str(parameter)
|
||||||
StringResult = StringResult + ":"
|
StringResult = StringResult + ":"
|
||||||
pass
|
pass
|
||||||
StringResult = StringResult[:len(StringResult)-1]
|
StringResult = StringResult[:len(StringResult)-1]
|
||||||
return Result, StringResult
|
return Result, StringResult
|
||||||
|
|
||||||
## Return list of variables value from salome notebook
|
## Return list of variables value from salome notebook
|
||||||
## @ingroup l1_geompy_auxiliary
|
## @ingroup l1_geompy_auxiliary
|
||||||
def ParseSketcherCommand(command):
|
def ParseSketcherCommand(command):
|
||||||
Result = ""
|
Result = ""
|
||||||
StringResult = ""
|
StringResult = ""
|
||||||
@ -168,6 +168,88 @@ def ParseSketcherCommand(command):
|
|||||||
Result = Result[:len(Result)-1]
|
Result = Result[:len(Result)-1]
|
||||||
return Result, StringResult
|
return Result, StringResult
|
||||||
|
|
||||||
|
## Helper function which can be used to pack the passed string to the byte data.
|
||||||
|
## Only '1' an '0' symbols are valid for the string. The missing bits are replaced by zeroes.
|
||||||
|
## If the string contains invalid symbol (neither '1' nor '0'), the function raises an exception.
|
||||||
|
## For example,
|
||||||
|
## \code
|
||||||
|
## val = PackData("10001110") # val = 0xAE
|
||||||
|
## val = PackData("1") # val = 0x80
|
||||||
|
## \endcode
|
||||||
|
## @param data unpacked data - a string containing '1' and '0' symbols
|
||||||
|
## @return data packed to the byte stream
|
||||||
|
## @ingroup l1_geompy_auxiliary
|
||||||
|
def PackData(data):
|
||||||
|
bytes = len(data)/8
|
||||||
|
if len(data)%8: bytes += 1
|
||||||
|
res = ""
|
||||||
|
for b in range(bytes):
|
||||||
|
d = data[b*8:(b+1)*8]
|
||||||
|
val = 0
|
||||||
|
for i in range(8):
|
||||||
|
val *= 2
|
||||||
|
if i < len(d):
|
||||||
|
if d[i] == "1": val += 1
|
||||||
|
elif d[i] != "0":
|
||||||
|
raise "Invalid symbol %s" % d[i]
|
||||||
|
pass
|
||||||
|
pass
|
||||||
|
res += chr(val)
|
||||||
|
pass
|
||||||
|
return res
|
||||||
|
|
||||||
|
## Read bitmap texture from the text file.
|
||||||
|
## In that file, any non-zero symbol represents '1' opaque pixel of the bitmap.
|
||||||
|
## A zero symbol ('0') represents transparent pixel of the texture bitmap.
|
||||||
|
## The function returns width and height of the pixmap in pixels and byte stream representing
|
||||||
|
## texture bitmap itself.
|
||||||
|
##
|
||||||
|
## This function can be used to read the texture to the byte stream in order to pass it to
|
||||||
|
## the AddTexture() function of geompy class.
|
||||||
|
## For example,
|
||||||
|
## \code
|
||||||
|
## import geompy
|
||||||
|
## geompy.init_geom(salome.myStudy)
|
||||||
|
## texture = geompy.readtexture('mytexture.dat')
|
||||||
|
## texture = geompy.AddTexture(*texture)
|
||||||
|
## obj.SetMarkerTexture(texture)
|
||||||
|
## \endcode
|
||||||
|
## @param fname texture file name
|
||||||
|
## @return sequence of tree values: texture's width, height in pixels and its byte stream
|
||||||
|
## @ingroup l1_geompy_auxiliary
|
||||||
|
def ReadTexture(fname):
|
||||||
|
try:
|
||||||
|
f = open(fname)
|
||||||
|
lines = [ l.strip() for l in f.readlines()]
|
||||||
|
f.close()
|
||||||
|
maxlen = 0
|
||||||
|
if lines: maxlen = max([len(x) for x in lines])
|
||||||
|
lenbytes = maxlen/8
|
||||||
|
if maxlen%8: lenbytes += 1
|
||||||
|
bytedata=""
|
||||||
|
for line in lines:
|
||||||
|
if len(line)%8:
|
||||||
|
lenline = (len(line)/8+1)*8
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
lenline = (len(line)/8)*8
|
||||||
|
pass
|
||||||
|
for i in range(lenline/8):
|
||||||
|
byte=""
|
||||||
|
for j in range(8):
|
||||||
|
if i*8+j < len(line) and line[i*8+j] != "0": byte += "1"
|
||||||
|
else: byte += "0"
|
||||||
|
pass
|
||||||
|
bytedata += PackData(byte)
|
||||||
|
pass
|
||||||
|
for i in range(lenline/8, lenbytes):
|
||||||
|
bytedata += PackData("0")
|
||||||
|
pass
|
||||||
|
return lenbytes*8, len(lines), bytedata
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
return 0, 0, ""
|
||||||
|
|
||||||
## Kinds of shape enumeration
|
## Kinds of shape enumeration
|
||||||
# @ingroup l1_geompy_auxiliary
|
# @ingroup l1_geompy_auxiliary
|
||||||
kind = GEOM.GEOM_IKindOfShape
|
kind = GEOM.GEOM_IKindOfShape
|
||||||
@ -179,7 +261,6 @@ class info:
|
|||||||
CLOSED = 1
|
CLOSED = 1
|
||||||
UNCLOSED = 2
|
UNCLOSED = 2
|
||||||
|
|
||||||
|
|
||||||
class geompyDC(GEOM._objref_GEOM_Gen):
|
class geompyDC(GEOM._objref_GEOM_Gen):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -436,7 +517,7 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
|||||||
anObj = self.BasicOp.MakeTangentOnCurve(theRefCurve, theParameter)
|
anObj = self.BasicOp.MakeTangentOnCurve(theRefCurve, theParameter)
|
||||||
RaiseIfFailed("MakeTangentOnCurve", self.BasicOp)
|
RaiseIfFailed("MakeTangentOnCurve", self.BasicOp)
|
||||||
return anObj
|
return anObj
|
||||||
|
|
||||||
## Create a tangent plane, corresponding to the given parameter on the given face.
|
## Create a tangent plane, corresponding to the given parameter on the given face.
|
||||||
# @param theFace The face for which tangent plane should be built.
|
# @param theFace The face for which tangent plane should be built.
|
||||||
# @param theParameterV vertical value of the center point (0.0 - 1.0).
|
# @param theParameterV vertical value of the center point (0.0 - 1.0).
|
||||||
@ -559,7 +640,7 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
|||||||
RaiseIfFailed("MakePlaneFace", self.BasicOp)
|
RaiseIfFailed("MakePlaneFace", self.BasicOp)
|
||||||
anObj.SetParameters(Parameters)
|
anObj.SetParameters(Parameters)
|
||||||
return anObj
|
return anObj
|
||||||
|
|
||||||
## Create a plane, passing through the 2 vectors
|
## Create a plane, passing through the 2 vectors
|
||||||
# with center in a start point of the first vector.
|
# with center in a start point of the first vector.
|
||||||
# @param theVec1 Vector, defining center point and plane direction.
|
# @param theVec1 Vector, defining center point and plane direction.
|
||||||
@ -575,7 +656,7 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
|||||||
RaiseIfFailed("MakePlane2Vec", self.BasicOp)
|
RaiseIfFailed("MakePlane2Vec", self.BasicOp)
|
||||||
anObj.SetParameters(Parameters)
|
anObj.SetParameters(Parameters)
|
||||||
return anObj
|
return anObj
|
||||||
|
|
||||||
## Create a plane, based on a Local coordinate system.
|
## Create a plane, based on a Local coordinate system.
|
||||||
# @param theLCS coordinate system, defining plane.
|
# @param theLCS coordinate system, defining plane.
|
||||||
# @param theTrimSize Half size of a side of quadrangle face, representing the plane.
|
# @param theTrimSize Half size of a side of quadrangle face, representing the plane.
|
||||||
@ -600,7 +681,7 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
|||||||
# @ref swig_MakeMarker "Example"
|
# @ref swig_MakeMarker "Example"
|
||||||
def MakeMarker(self, OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ):
|
def MakeMarker(self, OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ):
|
||||||
# Example: see GEOM_TestAll.py
|
# Example: see GEOM_TestAll.py
|
||||||
OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ, Parameters = ParseParameters(OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ);
|
OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ, Parameters = ParseParameters(OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ);
|
||||||
anObj = self.BasicOp.MakeMarker(OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ)
|
anObj = self.BasicOp.MakeMarker(OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ)
|
||||||
RaiseIfFailed("MakeMarker", self.BasicOp)
|
RaiseIfFailed("MakeMarker", self.BasicOp)
|
||||||
anObj.SetParameters(Parameters)
|
anObj.SetParameters(Parameters)
|
||||||
@ -851,7 +932,7 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
|||||||
anObj = self.CurvesOp.MakeSketcherOnPlane(theCommand, theWorkingPlane)
|
anObj = self.CurvesOp.MakeSketcherOnPlane(theCommand, theWorkingPlane)
|
||||||
RaiseIfFailed("MakeSketcherOnPlane", self.CurvesOp)
|
RaiseIfFailed("MakeSketcherOnPlane", self.CurvesOp)
|
||||||
return anObj
|
return anObj
|
||||||
|
|
||||||
## Create a sketcher wire, following the numerical description,
|
## Create a sketcher wire, following the numerical description,
|
||||||
# passed through <VAR>theCoordinates</VAR> argument. \n
|
# passed through <VAR>theCoordinates</VAR> argument. \n
|
||||||
# @param theCoordinates double values, defining points to create a wire,
|
# @param theCoordinates double values, defining points to create a wire,
|
||||||
@ -908,12 +989,12 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
|||||||
anObj = self.PrimOp.MakeBoxTwoPnt(thePnt1, thePnt2)
|
anObj = self.PrimOp.MakeBoxTwoPnt(thePnt1, thePnt2)
|
||||||
RaiseIfFailed("MakeBoxTwoPnt", self.PrimOp)
|
RaiseIfFailed("MakeBoxTwoPnt", self.PrimOp)
|
||||||
return anObj
|
return anObj
|
||||||
|
|
||||||
## Create a face with specified dimensions along OX-OY coordinate axes,
|
## Create a face with specified dimensions along OX-OY coordinate axes,
|
||||||
# with edges, parallel to this coordinate axes.
|
# with edges, parallel to this coordinate axes.
|
||||||
# @param theH height of Face.
|
# @param theH height of Face.
|
||||||
# @param theW width of Face.
|
# @param theW width of Face.
|
||||||
# @param theOrientation orientation belong axis OXY OYZ OZX
|
# @param theOrientation orientation belong axis OXY OYZ OZX
|
||||||
# @return New GEOM_Object, containing the created face.
|
# @return New GEOM_Object, containing the created face.
|
||||||
#
|
#
|
||||||
# @ref tui_creation_face "Example"
|
# @ref tui_creation_face "Example"
|
||||||
@ -970,7 +1051,7 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
|||||||
|
|
||||||
## Create a disk with specified dimensions along OX-OY coordinate axes.
|
## Create a disk with specified dimensions along OX-OY coordinate axes.
|
||||||
# @param theR Radius of Face.
|
# @param theR Radius of Face.
|
||||||
# @param theOrientation set the orientation belong axis OXY or OYZ or OZX
|
# @param theOrientation set the orientation belong axis OXY or OYZ or OZX
|
||||||
# @return New GEOM_Object, containing the created disk.
|
# @return New GEOM_Object, containing the created disk.
|
||||||
#
|
#
|
||||||
# @ref tui_creation_face "Example"
|
# @ref tui_creation_face "Example"
|
||||||
@ -1173,7 +1254,7 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
|||||||
RaiseIfFailed("MakePrismVecH2Ways", self.PrimOp)
|
RaiseIfFailed("MakePrismVecH2Ways", self.PrimOp)
|
||||||
anObj.SetParameters(Parameters)
|
anObj.SetParameters(Parameters)
|
||||||
return anObj
|
return anObj
|
||||||
|
|
||||||
## Create a shape by extrusion of the base shape along the dx, dy, dz direction
|
## Create a shape by extrusion of the base shape along the dx, dy, dz direction
|
||||||
# @param theBase Base shape to be extruded.
|
# @param theBase Base shape to be extruded.
|
||||||
# @param theDX, theDY, theDZ Directions of extrusion.
|
# @param theDX, theDY, theDZ Directions of extrusion.
|
||||||
@ -1187,7 +1268,7 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
|||||||
RaiseIfFailed("MakePrismDXDYDZ", self.PrimOp)
|
RaiseIfFailed("MakePrismDXDYDZ", self.PrimOp)
|
||||||
anObj.SetParameters(Parameters)
|
anObj.SetParameters(Parameters)
|
||||||
return anObj
|
return anObj
|
||||||
|
|
||||||
## Create a shape by extrusion of the base shape along the dx, dy, dz direction
|
## Create a shape by extrusion of the base shape along the dx, dy, dz direction
|
||||||
# i.e. all the space, transfixed by the base shape during its translation
|
# i.e. all the space, transfixed by the base shape during its translation
|
||||||
# along the vector on the given distance in 2 Ways (forward/backward) .
|
# along the vector on the given distance in 2 Ways (forward/backward) .
|
||||||
@ -2749,15 +2830,17 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
|||||||
RaiseIfFailed("MakeFilletFacesR1R2", self.LocalOp)
|
RaiseIfFailed("MakeFilletFacesR1R2", self.LocalOp)
|
||||||
anObj.SetParameters(Parameters)
|
anObj.SetParameters(Parameters)
|
||||||
return anObj
|
return anObj
|
||||||
|
|
||||||
## Perform a fillet on the specified edges of the given wire shape
|
## Perform a fillet on the specified edges of the given shape
|
||||||
# @param theShape - Wire Shape(with planar edges) to perform fillet on.
|
# @param theShape - Wire Shape to perform fillet on.
|
||||||
# @param theR - Fillet radius.
|
# @param theR - Fillet radius.
|
||||||
# @param theListOfVertexes Global indices of vertexes to perform fillet on.
|
# @param theListOfVertexes Global indices of vertexes to perform fillet on.
|
||||||
# \note Global index of sub-shape can be obtained, using method geompy.GetSubShapeID().
|
# \note Global index of sub-shape can be obtained, using method geompy.GetSubShapeID().
|
||||||
|
# \note The list of vertices could be empty,
|
||||||
|
# in this case fillet will done done at all vertices in wire
|
||||||
# @return New GEOM_Object, containing the result shape.
|
# @return New GEOM_Object, containing the result shape.
|
||||||
#
|
#
|
||||||
# @ref tui_fillet1d "Example"
|
# @ref tui_fillet2d "Example"
|
||||||
def MakeFillet1D(self,theShape, theR, theListOfVertexes):
|
def MakeFillet1D(self,theShape, theR, theListOfVertexes):
|
||||||
# Example: see GEOM_TestAll.py
|
# Example: see GEOM_TestAll.py
|
||||||
anObj = self.LocalOp.MakeFillet1D(theShape, theR, theListOfVertexes)
|
anObj = self.LocalOp.MakeFillet1D(theShape, theR, theListOfVertexes)
|
||||||
@ -2778,22 +2861,6 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
|||||||
RaiseIfFailed("MakeFillet2D", self.LocalOp)
|
RaiseIfFailed("MakeFillet2D", self.LocalOp)
|
||||||
return anObj
|
return anObj
|
||||||
|
|
||||||
## Perform a fillet on the specified edges of the given shape
|
|
||||||
# @param theShape - Wire Shape to perform fillet on.
|
|
||||||
# @param theR - Fillet radius.
|
|
||||||
# @param theListOfVertexes Global indices of vertexes to perform fillet on.
|
|
||||||
# \note Global index of sub-shape can be obtained, using method geompy.GetSubShapeID().
|
|
||||||
# \note The list of vertices could be empty,
|
|
||||||
# in this case fillet will done done at all vertices in wire
|
|
||||||
# @return New GEOM_Object, containing the result shape.
|
|
||||||
#
|
|
||||||
# @ref tui_fillet2d "Example"
|
|
||||||
def MakeFillet1D(self,theShape, theR, theListOfVertexes):
|
|
||||||
# Example: see GEOM_TestAll.py
|
|
||||||
anObj = self.LocalOp.MakeFillet1D(theShape, theR, theListOfVertexes)
|
|
||||||
RaiseIfFailed("MakeFillet1D", self.LocalOp)
|
|
||||||
return anObj
|
|
||||||
|
|
||||||
## Perform a symmetric chamfer on all edges of the given shape.
|
## Perform a symmetric chamfer on all edges of the given shape.
|
||||||
# @param theShape Shape, to perform chamfer on.
|
# @param theShape Shape, to perform chamfer on.
|
||||||
# @param theD Chamfer size along each face.
|
# @param theD Chamfer size along each face.
|
||||||
@ -3560,16 +3627,16 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
|||||||
# Unite faces and edges, sharing one surface. It means that
|
# Unite faces and edges, sharing one surface. It means that
|
||||||
# this faces must have references to one C++ surface object (handle).
|
# this faces must have references to one C++ surface object (handle).
|
||||||
# @param theShape The compound or single solid to remove irregular edges from.
|
# @param theShape The compound or single solid to remove irregular edges from.
|
||||||
# @param theOptimumNbFaces If more than zero, unite faces only for those solids,
|
# @param doUnionFaces If True, then unite faces. If False (the default value),
|
||||||
# that have more than theOptimumNbFaces faces. If zero, unite faces always,
|
# do not unite faces.
|
||||||
# regardsless their quantity in the solid. If negative (the default value),
|
|
||||||
# do not unite faces at all. For blocks repairing recommended value is 6.
|
|
||||||
# @return Improved shape.
|
# @return Improved shape.
|
||||||
#
|
#
|
||||||
# @ref swig_RemoveExtraEdges "Example"
|
# @ref swig_RemoveExtraEdges "Example"
|
||||||
def RemoveExtraEdges(self,theShape,theOptimumNbFaces=-1):
|
def RemoveExtraEdges(self, theShape, doUnionFaces=False):
|
||||||
# Example: see GEOM_TestOthers.py
|
# Example: see GEOM_TestOthers.py
|
||||||
anObj = self.BlocksOp.RemoveExtraEdges(theShape,theOptimumNbFaces)
|
nbFacesOptimum = -1 # -1 means do not unite faces
|
||||||
|
if doUnionFaces is True: nbFacesOptimum = 0 # 0 means unite faces
|
||||||
|
anObj = self.BlocksOp.RemoveExtraEdges(theShape, nbFacesOptimum)
|
||||||
RaiseIfFailed("RemoveExtraEdges", self.BlocksOp)
|
RaiseIfFailed("RemoveExtraEdges", self.BlocksOp)
|
||||||
return anObj
|
return anObj
|
||||||
|
|
||||||
@ -3890,6 +3957,37 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
|||||||
def addPath(self,Path):
|
def addPath(self,Path):
|
||||||
if (sys.path.count(Path) < 1):
|
if (sys.path.count(Path) < 1):
|
||||||
sys.path.append(Path)
|
sys.path.append(Path)
|
||||||
|
pass
|
||||||
|
pass
|
||||||
|
|
||||||
|
## Load marker texture from the file
|
||||||
|
# @param Path a path to the texture file
|
||||||
|
# @return unique texture identifier
|
||||||
|
# @ingroup l1_geompy_auxiliary
|
||||||
|
def LoadTexture(self, Path):
|
||||||
|
# Example: see GEOM_TestAll.py
|
||||||
|
ID = self.InsertOp.LoadTexture(Path)
|
||||||
|
RaiseIfFailed("LoadTexture", self.InsertOp)
|
||||||
|
return ID
|
||||||
|
|
||||||
|
## Add marker texture. @a Width and @a Height parameters
|
||||||
|
# specify width and height of the texture in pixels.
|
||||||
|
# If @a RowData is @c True, @a Texture parameter should represent texture data
|
||||||
|
# packed into the byte array. If @a RowData is @c False (default), @a Texture
|
||||||
|
# parameter should be unpacked string, in which '1' symbols represent opaque
|
||||||
|
# pixels and '0' represent transparent pixels of the texture bitmap.
|
||||||
|
#
|
||||||
|
# @param Width texture width in pixels
|
||||||
|
# @param Height texture height in pixels
|
||||||
|
# @param Texture texture data
|
||||||
|
# @param RowData if @c True, @a Texture data are packed in the byte stream
|
||||||
|
# @ingroup l1_geompy_auxiliary
|
||||||
|
def AddTexture(self, Width, Height, Texture, RowData=False):
|
||||||
|
# Example: see GEOM_TestAll.py
|
||||||
|
if not RowData: Texture = PackData(Texture)
|
||||||
|
ID = self.InsertOp.AddTexture(Width, Height, Texture)
|
||||||
|
RaiseIfFailed("AddTexture", self.InsertOp)
|
||||||
|
return ID
|
||||||
|
|
||||||
import omniORB
|
import omniORB
|
||||||
#Register the new proxy for GEOM_Gen
|
#Register the new proxy for GEOM_Gen
|
||||||
|
@ -614,49 +614,50 @@ void GroupGUI_GroupDlg::selectAllSubShapes()
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
GEOM::ListOfLong_var aSubShapes;
|
GEOM::ListOfLong_var aSubShapes;
|
||||||
GEOM::GEOM_IShapesOperations_var aShOp = getGeomEngine()->GetIShapesOperations( getStudyId() );
|
|
||||||
aSubShapes = aShOp->SubShapeAllIDs(myMainObj, getShapeType(), false);
|
|
||||||
if ( aSubShapes->length() > 0) {
|
|
||||||
// if ( !myPlaceCheckBox->isChecked() )
|
|
||||||
if ( subSelectionWay() == ALL_SUBSHAPES )
|
|
||||||
{
|
|
||||||
myIdList->clear();
|
|
||||||
|
|
||||||
if ( !aShOp->IsDone() )
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
aSubShapes = new GEOM::ListOfLong();
|
|
||||||
aSubShapes->length( myMain2InPlaceIndices.Extent() );
|
|
||||||
TColStd_DataMapIteratorOfDataMapOfIntegerInteger m2ip( myMain2InPlaceIndices );
|
|
||||||
for ( int i = 0; m2ip.More(); i++, m2ip.Next() )
|
|
||||||
aSubShapes[ i ] = m2ip.Key();
|
|
||||||
}
|
|
||||||
bool isBlocked = myIdList->signalsBlocked();
|
|
||||||
myIdList->blockSignals( true );
|
|
||||||
|
|
||||||
for ( int i = 0, n = aSubShapes->length(); i < n; i++ ) {
|
|
||||||
CORBA::Long anIndex = aSubShapes[i];
|
|
||||||
if ( anIndex < 0 )
|
|
||||||
continue;
|
|
||||||
|
|
||||||
QListWidgetItem* anItem = 0;
|
|
||||||
QString text = QString( "%1" ).arg( anIndex );
|
|
||||||
if ( !myInPlaceObj->_is_nil() ) {
|
|
||||||
QList<QListWidgetItem*> found = myIdList->findItems( text, Qt::MatchExactly );
|
|
||||||
if ( found.count() ) anItem = found[0];
|
|
||||||
}
|
|
||||||
if ( !anItem ) {
|
|
||||||
anItem = new QListWidgetItem( text );
|
|
||||||
myIdList->addItem( anItem );
|
|
||||||
}
|
|
||||||
anItem->setSelected( true );
|
|
||||||
}
|
|
||||||
|
|
||||||
myIdList->blockSignals( isBlocked );
|
// if ( !myPlaceCheckBox->isChecked() )
|
||||||
highlightSubShapes();
|
if ( subSelectionWay() == ALL_SUBSHAPES )
|
||||||
|
{
|
||||||
|
if ( !myIsShapeType )
|
||||||
|
return;
|
||||||
|
myIdList->clear();
|
||||||
|
GEOM::GEOM_IShapesOperations_var aShOp = getGeomEngine()->GetIShapesOperations( getStudyId() );
|
||||||
|
aSubShapes = aShOp->SubShapeAllIDs(myMainObj, getShapeType(), false);
|
||||||
|
|
||||||
|
if ( !aShOp->IsDone() )
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
aSubShapes = new GEOM::ListOfLong();
|
||||||
|
aSubShapes->length( myMain2InPlaceIndices.Extent() );
|
||||||
|
TColStd_DataMapIteratorOfDataMapOfIntegerInteger m2ip( myMain2InPlaceIndices );
|
||||||
|
for ( int i = 0; m2ip.More(); i++, m2ip.Next() )
|
||||||
|
aSubShapes[ i ] = m2ip.Key();
|
||||||
|
}
|
||||||
|
bool isBlocked = myIdList->signalsBlocked();
|
||||||
|
myIdList->blockSignals( true );
|
||||||
|
|
||||||
|
for ( int i = 0, n = aSubShapes->length(); i < n; i++ ) {
|
||||||
|
CORBA::Long anIndex = aSubShapes[i];
|
||||||
|
if ( anIndex < 0 )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
QListWidgetItem* anItem = 0;
|
||||||
|
QString text = QString( "%1" ).arg( anIndex );
|
||||||
|
if ( !myInPlaceObj->_is_nil() ) {
|
||||||
|
QList<QListWidgetItem*> found = myIdList->findItems( text, Qt::MatchExactly );
|
||||||
|
if ( found.count() ) anItem = found[0];
|
||||||
|
}
|
||||||
|
if ( !anItem ) {
|
||||||
|
anItem = new QListWidgetItem( text );
|
||||||
|
myIdList->addItem( anItem );
|
||||||
|
}
|
||||||
|
anItem->setSelected( true );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
myIdList->blockSignals( isBlocked );
|
||||||
|
highlightSubShapes();
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
@ -680,6 +681,17 @@ void GroupGUI_GroupDlg::add()
|
|||||||
aSelMgr->selectedSubOwners( aMap );
|
aSelMgr->selectedSubOwners( aMap );
|
||||||
if ( aMap.Size() == 1 )
|
if ( aMap.Size() == 1 )
|
||||||
aMapIndex = LightApp_SelectionMgr::MapEntryOfMapOfInteger::Iterator( aMap ).Value();
|
aMapIndex = LightApp_SelectionMgr::MapEntryOfMapOfInteger::Iterator( aMap ).Value();
|
||||||
|
else { // selected the same subshape as the main object
|
||||||
|
SALOME_ListIO aSelList;
|
||||||
|
TColStd_IndexedMapOfInteger aMap;
|
||||||
|
aSelMgr->selectedObjects(aSelList);
|
||||||
|
if (aSelList.Extent() == 1) {
|
||||||
|
Standard_Boolean aRes = Standard_False;
|
||||||
|
GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), aRes);
|
||||||
|
if ( aSelectedObject->_is_equivalent(myMainObj) )
|
||||||
|
aMapIndex.Add(1); // add index of the only subshape of selected type
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
GEOM::ListOfGO anObjects;
|
GEOM::ListOfGO anObjects;
|
||||||
@ -859,6 +871,22 @@ void GroupGUI_GroupDlg::updateState()
|
|||||||
aSelMgr->selectedSubOwners( aMap );
|
aSelMgr->selectedSubOwners( aMap );
|
||||||
if ( aMap.Size() == 1 )
|
if ( aMap.Size() == 1 )
|
||||||
aMapIndex = LightApp_SelectionMgr::MapEntryOfMapOfInteger::Iterator( aMap ).Value();
|
aMapIndex = LightApp_SelectionMgr::MapEntryOfMapOfInteger::Iterator( aMap ).Value();
|
||||||
|
else { // selected the same subshape as the main object
|
||||||
|
SALOME_ListIO aSelList;
|
||||||
|
aSelMgr->selectedObjects(aSelList);
|
||||||
|
if (aSelList.Extent() == 1) {
|
||||||
|
myBusy = true;
|
||||||
|
Standard_Boolean aRes = Standard_False;
|
||||||
|
GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), aRes);
|
||||||
|
if ( aSelectedObject->_is_equivalent(myMainObj) ) {
|
||||||
|
aMapIndex.Add(1); // add index of the only subshape of selected type
|
||||||
|
TColStd_MapOfInteger anIds; // higlight selected index
|
||||||
|
anIds.Add(1);
|
||||||
|
aSelMgr->AddOrRemoveIndex(aSelList.First(), anIds, false);
|
||||||
|
}
|
||||||
|
myBusy = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,6 +26,8 @@
|
|||||||
//
|
//
|
||||||
#include "utilities.h"
|
#include "utilities.h"
|
||||||
|
|
||||||
|
#include <Basics_Utils.hxx>
|
||||||
|
|
||||||
#include <IGESControl_Controller.hxx>
|
#include <IGESControl_Controller.hxx>
|
||||||
#include <IGESControl_Writer.hxx>
|
#include <IGESControl_Writer.hxx>
|
||||||
#include <Interface_Static.hxx>
|
#include <Interface_Static.hxx>
|
||||||
@ -73,6 +75,9 @@ IGESEXPORT_EXPORT
|
|||||||
if (theFormatName.IsEqual("IGES_5_3"))
|
if (theFormatName.IsEqual("IGES_5_3"))
|
||||||
aBrepMode = 1;
|
aBrepMode = 1;
|
||||||
|
|
||||||
|
// Set "C" numeric locale to save numbers correctly
|
||||||
|
Kernel_Utils::Localizer loc;
|
||||||
|
|
||||||
// initialize writer
|
// initialize writer
|
||||||
IGESControl_Controller::Init();
|
IGESControl_Controller::Init();
|
||||||
//IGESControl_Writer ICW (Interface_Static::CVal("write.iges.unit"),
|
//IGESControl_Writer ICW (Interface_Static::CVal("write.iges.unit"),
|
||||||
@ -83,7 +88,10 @@ IGESEXPORT_EXPORT
|
|||||||
// perform shape writing
|
// perform shape writing
|
||||||
ICW.AddShape( theShape );
|
ICW.AddShape( theShape );
|
||||||
ICW.ComputeModel();
|
ICW.ComputeModel();
|
||||||
if ( ICW.Write( theFileName.ToCString() ) )
|
bool ok = ICW.Write( theFileName.ToCString() );
|
||||||
|
|
||||||
|
// Return previous locale
|
||||||
|
if ( ok )
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
catch(Standard_Failure)
|
catch(Standard_Failure)
|
||||||
|
@ -42,4 +42,4 @@ libIGESExport_la_CPPFLAGS = \
|
|||||||
libIGESExport_la_LDFLAGS = \
|
libIGESExport_la_LDFLAGS = \
|
||||||
$(STDLIB) \
|
$(STDLIB) \
|
||||||
$(CAS_LDPATH) -lTKIGES \
|
$(CAS_LDPATH) -lTKIGES \
|
||||||
$(KERNEL_LDFLAGS) -lSALOMELocalTrace
|
$(KERNEL_LDFLAGS) -lSALOMELocalTrace -lSALOMEBasics
|
||||||
|
@ -26,6 +26,8 @@
|
|||||||
//
|
//
|
||||||
#include "utilities.h"
|
#include "utilities.h"
|
||||||
|
|
||||||
|
#include <Basics_Utils.hxx>
|
||||||
|
|
||||||
#include <IFSelect_ReturnStatus.hxx>
|
#include <IFSelect_ReturnStatus.hxx>
|
||||||
#include <IGESControl_Reader.hxx>
|
#include <IGESControl_Reader.hxx>
|
||||||
#include <IGESData_IGESModel.hxx>
|
#include <IGESData_IGESModel.hxx>
|
||||||
@ -71,6 +73,9 @@ IGESIMPORT_EXPORT
|
|||||||
TCollection_AsciiString& theError,
|
TCollection_AsciiString& theError,
|
||||||
const TDF_Label&)
|
const TDF_Label&)
|
||||||
{
|
{
|
||||||
|
// Set "C" numeric locale to save numbers correctly
|
||||||
|
Kernel_Utils::Localizer loc;
|
||||||
|
|
||||||
IGESControl_Reader aReader;
|
IGESControl_Reader aReader;
|
||||||
TopoDS_Shape aResShape;
|
TopoDS_Shape aResShape;
|
||||||
Interface_Static::SetCVal("xstep.cascade.unit","M");
|
Interface_Static::SetCVal("xstep.cascade.unit","M");
|
||||||
|
@ -42,4 +42,4 @@ libIGESImport_la_CPPFLAGS = \
|
|||||||
libIGESImport_la_LDFLAGS = \
|
libIGESImport_la_LDFLAGS = \
|
||||||
$(STDLIB) \
|
$(STDLIB) \
|
||||||
$(CAS_LDPATH) -lTKIGES \
|
$(CAS_LDPATH) -lTKIGES \
|
||||||
$(KERNEL_LDFLAGS) -lSALOMELocalTrace
|
$(KERNEL_LDFLAGS) -lSALOMELocalTrace -lSALOMEBasics
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
// GEOM GEOMGUI : GUI for Geometry component
|
// GEOM GEOMGUI : GUI for Geometry component
|
||||||
// File : MeasureGUI_CheckCompoundOfBlocksDlg.cxx
|
// File : MeasureGUI_CheckCompoundOfBlocksDlg.cxx
|
||||||
// Author : Vladimir KLYACHIN, Open CASCADE S.A.S. (vladimir.klyachin@opencascade.com)
|
// Author : Vladimir KLYACHIN, Open CASCADE S.A.S. (vladimir.klyachin@opencascade.com)
|
||||||
//
|
|
||||||
#include "MeasureGUI_CheckCompoundOfBlocksDlg.h"
|
#include "MeasureGUI_CheckCompoundOfBlocksDlg.h"
|
||||||
#include "MeasureGUI_Widgets.h"
|
#include "MeasureGUI_Widgets.h"
|
||||||
|
|
||||||
@ -123,8 +123,8 @@ void MeasureGUI_CheckCompoundOfBlocksDlg::Init()
|
|||||||
connect( myGrp->LineEdit1, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) );
|
connect( myGrp->LineEdit1, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) );
|
||||||
connect( myGrp->PushButton1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
|
connect( myGrp->PushButton1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
|
||||||
|
|
||||||
connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ),
|
connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ),
|
||||||
this, SLOT( SelectionIntoArgument() ) );
|
this, SLOT( SelectionIntoArgument() ) );
|
||||||
|
|
||||||
initName( tr( "GEOM_BLOCKS_COMPOUND") );
|
initName( tr( "GEOM_BLOCKS_COMPOUND") );
|
||||||
buttonOk()->setEnabled( false );
|
buttonOk()->setEnabled( false );
|
||||||
@ -236,7 +236,7 @@ void MeasureGUI_CheckCompoundOfBlocksDlg::ActivateThisDialog()
|
|||||||
// purpose :
|
// purpose :
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
bool MeasureGUI_CheckCompoundOfBlocksDlg::getBCErrors( bool& theIsCompoundOfBlocks,
|
bool MeasureGUI_CheckCompoundOfBlocksDlg::getBCErrors( bool& theIsCompoundOfBlocks,
|
||||||
GEOM::GEOM_IBlocksOperations::BCErrors& theErrors)
|
GEOM::GEOM_IBlocksOperations::BCErrors& theErrors)
|
||||||
{
|
{
|
||||||
if ( myObj->_is_nil() )
|
if ( myObj->_is_nil() )
|
||||||
return false;
|
return false;
|
||||||
@ -245,7 +245,9 @@ bool MeasureGUI_CheckCompoundOfBlocksDlg::getBCErrors( bool& theIsCompoundOfBloc
|
|||||||
try {
|
try {
|
||||||
GEOM::GEOM_IBlocksOperations::BCErrors_var aErrs;
|
GEOM::GEOM_IBlocksOperations::BCErrors_var aErrs;
|
||||||
theIsCompoundOfBlocks = anOper->CheckCompoundOfBlocks( myObj, aErrs );
|
theIsCompoundOfBlocks = anOper->CheckCompoundOfBlocks( myObj, aErrs );
|
||||||
theErrors = aErrs;
|
if (anOper->IsDone() && aErrs->length() > 0)
|
||||||
|
//if (anOper->IsDone() && !aErrs._is_nil())
|
||||||
|
theErrors = aErrs;
|
||||||
}
|
}
|
||||||
catch ( const SALOME::SALOME_Exception& e ) {
|
catch ( const SALOME::SALOME_Exception& e ) {
|
||||||
SalomeApp_Tools::QtCatchCorbaException( e );
|
SalomeApp_Tools::QtCatchCorbaException( e );
|
||||||
@ -266,6 +268,7 @@ void MeasureGUI_CheckCompoundOfBlocksDlg::processObject()
|
|||||||
bool isCompoundOfBlocks;
|
bool isCompoundOfBlocks;
|
||||||
GEOM::GEOM_IBlocksOperations::BCErrors aErrs;
|
GEOM::GEOM_IBlocksOperations::BCErrors aErrs;
|
||||||
if ( !getBCErrors( isCompoundOfBlocks, aErrs ) ) {
|
if ( !getBCErrors( isCompoundOfBlocks, aErrs ) ) {
|
||||||
|
aMsg += tr( "GEOM_CHECK_BLOCKS_COMPOUND_FAILED" );
|
||||||
myGrp->TextView1->setText( aMsg );
|
myGrp->TextView1->setText( aMsg );
|
||||||
myGrp->ListBox1->clear();
|
myGrp->ListBox1->clear();
|
||||||
myGrp->ListBox2->clear();
|
myGrp->ListBox2->clear();
|
||||||
@ -277,7 +280,7 @@ void MeasureGUI_CheckCompoundOfBlocksDlg::processObject()
|
|||||||
aMsg += tr( "GEOM_CHECK_BLOCKS_COMPOUND_HAS_NO_ERRORS" );
|
aMsg += tr( "GEOM_CHECK_BLOCKS_COMPOUND_HAS_NO_ERRORS" );
|
||||||
buttonOk()->setEnabled( false );
|
buttonOk()->setEnabled( false );
|
||||||
buttonApply()->setEnabled( false );
|
buttonApply()->setEnabled( false );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
aMsg += tr( "GEOM_CHECK_BLOCKS_COMPOUND_HAS_ERRORS" );
|
aMsg += tr( "GEOM_CHECK_BLOCKS_COMPOUND_HAS_ERRORS" );
|
||||||
buttonOk()->setEnabled( true );
|
buttonOk()->setEnabled( true );
|
||||||
@ -295,29 +298,29 @@ void MeasureGUI_CheckCompoundOfBlocksDlg::processObject()
|
|||||||
aErrStr = "";
|
aErrStr = "";
|
||||||
switch ( aErrs[i].error ) {
|
switch ( aErrs[i].error ) {
|
||||||
case GEOM::GEOM_IBlocksOperations::NOT_BLOCK :
|
case GEOM::GEOM_IBlocksOperations::NOT_BLOCK :
|
||||||
aErrStr = "Not a Block";
|
aErrStr = "Not a Block";
|
||||||
break;
|
break;
|
||||||
case GEOM::GEOM_IBlocksOperations::EXTRA_EDGE :
|
case GEOM::GEOM_IBlocksOperations::EXTRA_EDGE :
|
||||||
aErrStr = "Extra Edge";
|
aErrStr = "Extra Edge";
|
||||||
break;
|
break;
|
||||||
case GEOM::GEOM_IBlocksOperations::INVALID_CONNECTION :
|
case GEOM::GEOM_IBlocksOperations::INVALID_CONNECTION :
|
||||||
aErrStr = "Invalid Connection";
|
aErrStr = "Invalid Connection";
|
||||||
aErrStr += aConSfx;
|
aErrStr += aConSfx;
|
||||||
aErrStr += QString::number( aConNum );
|
aErrStr += QString::number( aConNum );
|
||||||
aConNum++;
|
aConNum++;
|
||||||
break;
|
break;
|
||||||
case GEOM::GEOM_IBlocksOperations::NOT_CONNECTED :
|
case GEOM::GEOM_IBlocksOperations::NOT_CONNECTED :
|
||||||
aErrStr = "Not Connected";
|
aErrStr = "Not Connected";
|
||||||
break;
|
break;
|
||||||
case GEOM::GEOM_IBlocksOperations::NOT_GLUED :
|
case GEOM::GEOM_IBlocksOperations::NOT_GLUED :
|
||||||
aErrStr = "Not Glued";
|
aErrStr = "Not Glued";
|
||||||
aErrStr += aGluedSfx;
|
aErrStr += aGluedSfx;
|
||||||
aErrStr += QString::number( aGluedNum );
|
aErrStr += QString::number( aGluedNum );
|
||||||
aGluedNum++;
|
aGluedNum++;
|
||||||
break;
|
break;
|
||||||
default :
|
default :
|
||||||
aErrStr = "";
|
aErrStr = "";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if ( !aErrStr.isEmpty() )
|
if ( !aErrStr.isEmpty() )
|
||||||
aErrList.append( aErrStr );
|
aErrList.append( aErrStr );
|
||||||
@ -355,11 +358,11 @@ void MeasureGUI_CheckCompoundOfBlocksDlg::onErrorsListSelectionChanged()
|
|||||||
myGrp->ListBox2->clear();
|
myGrp->ListBox2->clear();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
GEOM::GEOM_IBlocksOperations::BCError aErr = aErrs[aCurItem];
|
GEOM::GEOM_IBlocksOperations::BCError aErr = aErrs[aCurItem];
|
||||||
GEOM::ListOfLong aObjLst = aErr.incriminated;
|
GEOM::ListOfLong aObjLst = aErr.incriminated;
|
||||||
TopoDS_Shape aSelShape;
|
TopoDS_Shape aSelShape;
|
||||||
TopoDS_Shape aSubShape;
|
TopoDS_Shape aSubShape;
|
||||||
TopTools_IndexedMapOfShape anIndices;
|
TopTools_IndexedMapOfShape anIndices;
|
||||||
QStringList aSubShapeList;
|
QStringList aSubShapeList;
|
||||||
QString aSubShapeName( "" );
|
QString aSubShapeName( "" );
|
||||||
@ -369,8 +372,8 @@ void MeasureGUI_CheckCompoundOfBlocksDlg::onErrorsListSelectionChanged()
|
|||||||
for ( int i = 0, n = aObjLst.length(); i < n; i++ ) {
|
for ( int i = 0, n = aObjLst.length(); i < n; i++ ) {
|
||||||
aSubShapeName = "";
|
aSubShapeName = "";
|
||||||
aSubShape = anIndices.FindKey(aObjLst[i]);
|
aSubShape = anIndices.FindKey(aObjLst[i]);
|
||||||
if ( GEOMBase::GetShapeTypeString( aSubShape, aTypeString ) )
|
if ( GEOMBase::GetShapeTypeString( aSubShape, aTypeString ) )
|
||||||
aSubShapeName = QString( aTypeString ) + QString( "_" ) + QString::number( aObjLst[i] );
|
aSubShapeName = QString( aTypeString ) + QString( "_" ) + QString::number( aObjLst[i] );
|
||||||
if ( !aSubShapeName.isEmpty() )
|
if ( !aSubShapeName.isEmpty() )
|
||||||
aSubShapeList.append( aSubShapeName );
|
aSubShapeList.append( aSubShapeName );
|
||||||
}
|
}
|
||||||
@ -391,7 +394,7 @@ void MeasureGUI_CheckCompoundOfBlocksDlg::onSubShapesListSelectionChanged()
|
|||||||
return;
|
return;
|
||||||
QList<int> aIds;
|
QList<int> aIds;
|
||||||
for ( int i = 0, n = myGrp->ListBox2->count(); i < n; i++ ) {
|
for ( int i = 0, n = myGrp->ListBox2->count(); i < n; i++ ) {
|
||||||
if ( myGrp->ListBox2->item( i )->isSelected() )
|
if ( myGrp->ListBox2->item( i )->isSelected() )
|
||||||
aIds.append( i );
|
aIds.append( i );
|
||||||
}
|
}
|
||||||
if ( aIds.count() < 1 )
|
if ( aIds.count() < 1 )
|
||||||
@ -404,11 +407,11 @@ void MeasureGUI_CheckCompoundOfBlocksDlg::onSubShapesListSelectionChanged()
|
|||||||
myGrp->ListBox2->clear();
|
myGrp->ListBox2->clear();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
GEOM::GEOM_IBlocksOperations::BCError aErr = aErrs[aErrCurItem];
|
GEOM::GEOM_IBlocksOperations::BCError aErr = aErrs[aErrCurItem];
|
||||||
GEOM::ListOfLong aObjLst = aErr.incriminated;
|
GEOM::ListOfLong aObjLst = aErr.incriminated;
|
||||||
TopoDS_Shape aSelShape;
|
TopoDS_Shape aSelShape;
|
||||||
TopoDS_Shape aSubShape;
|
TopoDS_Shape aSubShape;
|
||||||
TopTools_IndexedMapOfShape anIndices;
|
TopTools_IndexedMapOfShape anIndices;
|
||||||
if ( !myObj->_is_nil() && GEOMBase::GetShape( myObj, aSelShape ) ) {
|
if ( !myObj->_is_nil() && GEOMBase::GetShape( myObj, aSelShape ) ) {
|
||||||
QString aMess;
|
QString aMess;
|
||||||
@ -426,7 +429,7 @@ void MeasureGUI_CheckCompoundOfBlocksDlg::onSubShapesListSelectionChanged()
|
|||||||
getDisplayer()->SetToActivate( false );
|
getDisplayer()->SetToActivate( false );
|
||||||
aPrs = !aSubShape.IsNull() ? getDisplayer()->BuildPrs( aSubShape ) : 0;
|
aPrs = !aSubShape.IsNull() ? getDisplayer()->BuildPrs( aSubShape ) : 0;
|
||||||
if ( aPrs )
|
if ( aPrs )
|
||||||
displayPreview( aPrs, true );
|
displayPreview( aPrs, true );
|
||||||
}
|
}
|
||||||
catch ( const SALOME::SALOME_Exception& e ) {
|
catch ( const SALOME::SALOME_Exception& e ) {
|
||||||
SalomeApp_Tools::QtCatchCorbaException( e );
|
SalomeApp_Tools::QtCatchCorbaException( e );
|
||||||
|
@ -44,6 +44,9 @@
|
|||||||
#include <vtkMatrix4x4.h>
|
#include <vtkMatrix4x4.h>
|
||||||
#include <vtkTransform.h>
|
#include <vtkTransform.h>
|
||||||
#include <vtkVectorText.h>
|
#include <vtkVectorText.h>
|
||||||
|
#include <vtkCoordinate.h>
|
||||||
|
#include <vtkTextActor.h>
|
||||||
|
#include <vtkTextMapper.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Class : GEOM_VTKTrihedron
|
Class : GEOM_VTKTrihedron
|
||||||
@ -80,10 +83,7 @@ vtkStandardNewMacro( GEOM_VTKTrihedronAxis );
|
|||||||
|
|
||||||
GEOM_VTKTrihedronAxis::GEOM_VTKTrihedronAxis()
|
GEOM_VTKTrihedronAxis::GEOM_VTKTrihedronAxis()
|
||||||
{
|
{
|
||||||
vtkProperty* aProperty = vtkProperty::New();
|
VTKViewer_Axis::SetColor( 0.0, 0.0, 1.0 );
|
||||||
aProperty->SetColor( 0.0, 0.0, 1.0 );
|
|
||||||
SetProperty( aProperty );
|
|
||||||
aProperty->Delete();
|
|
||||||
myMatrix = vtkMatrix4x4::New();
|
myMatrix = vtkMatrix4x4::New();
|
||||||
myTrsf = vtkTransform::New();
|
myTrsf = vtkTransform::New();
|
||||||
}
|
}
|
||||||
@ -122,15 +122,22 @@ void GEOM_VTKTrihedronAxis::SetSize( vtkFloatingPointType theSize )
|
|||||||
myArrowActor->SetUserMatrix( myMatrix );
|
myArrowActor->SetUserMatrix( myMatrix );
|
||||||
myArrowActor->SetPosition( aPosition );
|
myArrowActor->SetPosition( aPosition );
|
||||||
|
|
||||||
|
#ifdef IPAL21440
|
||||||
|
if( vtkCoordinate* aCoord = myLabelActor->GetPositionCoordinate()->GetReferenceCoordinate() )
|
||||||
|
aCoord->SetValue( aPosition );
|
||||||
|
#else
|
||||||
myLabelActor->SetPosition( 0, 0, 0 );
|
myLabelActor->SetPosition( 0, 0, 0 );
|
||||||
myLabelActor->AddPosition( aPosition );
|
myLabelActor->AddPosition( aPosition );
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void GEOM_VTKTrihedronAxis::Render(vtkRenderer* theRenderer)
|
void GEOM_VTKTrihedronAxis::Render(vtkRenderer* theRenderer)
|
||||||
{
|
{
|
||||||
myLineActor->Render( theRenderer );
|
myLineActor->Render( theRenderer );
|
||||||
myArrowActor->Render( theRenderer );
|
myArrowActor->Render( theRenderer );
|
||||||
|
#ifndef IPAL21440
|
||||||
myLabelActor->Render( theRenderer );
|
myLabelActor->Render( theRenderer );
|
||||||
|
#endif
|
||||||
|
|
||||||
vtkCamera* aCamera = theRenderer->GetActiveCamera();
|
vtkCamera* aCamera = theRenderer->GetActiveCamera();
|
||||||
SetCamera( aCamera );
|
SetCamera( aCamera );
|
||||||
@ -158,25 +165,25 @@ void GEOM_VTKTrihedronAxis::SetAxis( const gp_Ax1& theAxis,
|
|||||||
|
|
||||||
vtkFloatingPointType aColor[ 3 ] = { 0, 0, 0 };
|
vtkFloatingPointType aColor[ 3 ] = { 0, 0, 0 };
|
||||||
aColor[ theRot ] = 1;
|
aColor[ theRot ] = 1;
|
||||||
vtkProperty* aProperty = vtkProperty::New();
|
|
||||||
if ( theColor[ 0 ] == -1 )
|
if ( theColor[ 0 ] == -1 )
|
||||||
aProperty->SetColor( aColor[ 0 ], aColor[ 1 ], aColor[ 2 ] );
|
VTKViewer_Axis::SetColor( aColor[ 0 ], aColor[ 1 ], aColor[ 2 ] );
|
||||||
else
|
else
|
||||||
aProperty->SetColor( theColor[ 0 ], theColor[ 1 ], theColor[ 2 ] );
|
VTKViewer_Axis::SetColor( theColor[ 0 ], theColor[ 1 ], theColor[ 2 ] );
|
||||||
SetProperty( aProperty );
|
|
||||||
aProperty->Delete();
|
|
||||||
|
|
||||||
|
#ifdef IPAL21440
|
||||||
|
if ( theRot == 0 ) myTextMapper->SetInput( "X" );
|
||||||
|
else if ( theRot == 1 ) myTextMapper->SetInput( "Y" );
|
||||||
|
else if ( theRot == 2 ) myTextMapper->SetInput( "Z" );
|
||||||
|
#else
|
||||||
if ( theRot == 0 ) myVectorText->SetText( "X" );
|
if ( theRot == 0 ) myVectorText->SetText( "X" );
|
||||||
else if ( theRot == 1 ) myVectorText->SetText( "Y" );
|
else if ( theRot == 1 ) myVectorText->SetText( "Y" );
|
||||||
else if ( theRot == 2 ) myVectorText->SetText( "Z" );
|
else if ( theRot == 2 ) myVectorText->SetText( "Z" );
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void GEOM_VTKTrihedronAxis::SetColor( const vtkFloatingPointType theColor[ 3 ] )
|
void GEOM_VTKTrihedronAxis::SetColor( const vtkFloatingPointType theColor[ 3 ] )
|
||||||
{
|
{
|
||||||
vtkProperty* aProperty = vtkProperty::New();
|
VTKViewer_Axis::SetColor( theColor[ 0 ], theColor[ 1 ], theColor[ 2 ] );
|
||||||
aProperty->SetColor( theColor[ 0 ], theColor[ 1 ], theColor[ 2 ] );
|
|
||||||
SetProperty( aProperty );
|
|
||||||
aProperty->Delete();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -193,9 +200,18 @@ GEOM_VTKTrihedron::GEOM_VTKTrihedron()
|
|||||||
myMapper = vtkPolyDataMapper::New();
|
myMapper = vtkPolyDataMapper::New();
|
||||||
myAxis[ 0 ] = myAxis[ 1 ] = myAxis[ 2 ] = 0;
|
myAxis[ 0 ] = myAxis[ 1 ] = myAxis[ 2 ] = 0;
|
||||||
mySize = 100;
|
mySize = 100;
|
||||||
SetInfinitive( true );
|
|
||||||
myColor[ 0 ] = myColor[ 1 ] = myColor[ 1 ] = -1;
|
myColor[ 0 ] = myColor[ 1 ] = myColor[ 2 ] = -1;
|
||||||
SetInfinitive( true );
|
|
||||||
|
myDefaultColor[ 0 ] = myDefaultColor[ 1 ] = myDefaultColor[ 2 ] = 1;
|
||||||
|
|
||||||
|
myPreHighlightColor[ 0 ] = 0;
|
||||||
|
myPreHighlightColor[ 1 ] = myPreHighlightColor[ 2 ] = 1;
|
||||||
|
|
||||||
|
myHighlightColor[ 0 ] = myHighlightColor[ 1 ] = myHighlightColor[ 2 ] = 1;
|
||||||
|
|
||||||
|
//SetInfinitive( true );
|
||||||
|
SetPickable( true );
|
||||||
}
|
}
|
||||||
|
|
||||||
GEOM_VTKTrihedron::~GEOM_VTKTrihedron()
|
GEOM_VTKTrihedron::~GEOM_VTKTrihedron()
|
||||||
@ -247,6 +263,12 @@ void GEOM_VTKTrihedron::SetSize( vtkFloatingPointType theSize )
|
|||||||
aRes->Delete();
|
aRes->Delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GEOM_VTKTrihedron::SetVisibility( int theVisibility )
|
||||||
|
{
|
||||||
|
Superclass::SetVisibility( theVisibility );
|
||||||
|
SetVisibility( theVisibility == 1 ? VTKViewer_Trihedron::eOn : VTKViewer_Trihedron::eOff );
|
||||||
|
}
|
||||||
|
|
||||||
void GEOM_VTKTrihedron::SetVisibility( VTKViewer_Trihedron::TVisibility theVis )
|
void GEOM_VTKTrihedron::SetVisibility( VTKViewer_Trihedron::TVisibility theVis )
|
||||||
{
|
{
|
||||||
for ( int i = 0; i < 3; i++ )
|
for ( int i = 0; i < 3; i++ )
|
||||||
@ -361,21 +383,48 @@ bool GEOM_VTKTrihedron::IsSetCamera() const
|
|||||||
|
|
||||||
bool GEOM_VTKTrihedron::IsResizable() const
|
bool GEOM_VTKTrihedron::IsResizable() const
|
||||||
{
|
{
|
||||||
return true;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GEOM_VTKTrihedron::Highlight( bool theIsHighlight )
|
||||||
|
{
|
||||||
|
if( theIsHighlight )
|
||||||
|
SetAxesColors( myHighlightColor );
|
||||||
|
else
|
||||||
|
ResetAxesColors();
|
||||||
|
|
||||||
|
Superclass::Highlight( theIsHighlight );
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GEOM_VTKTrihedron::PreHighlight( vtkInteractorStyle *theInteractorStyle,
|
||||||
|
SVTK_SelectionEvent* theSelectionEvent,
|
||||||
|
bool theIsHighlight )
|
||||||
|
{
|
||||||
|
if ( !GetPickable() )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if ( !isHighlighted() )
|
||||||
|
{
|
||||||
|
if( theIsHighlight )
|
||||||
|
SetAxesColors( myPreHighlightColor );
|
||||||
|
else
|
||||||
|
ResetAxesColors();
|
||||||
|
}
|
||||||
|
|
||||||
|
return Superclass::PreHighlight( theInteractorStyle, theSelectionEvent, theIsHighlight );
|
||||||
|
}
|
||||||
|
|
||||||
|
void GEOM_VTKTrihedron::ResetAxesColors()
|
||||||
|
{
|
||||||
|
if( myColor[0] != -1 )
|
||||||
|
SetAxesColors( myColor );
|
||||||
|
else
|
||||||
|
SetAxesColors( myDefaultColor, true );
|
||||||
|
}
|
||||||
|
|
||||||
|
void GEOM_VTKTrihedron::SetAxesColors( vtkFloatingPointType theColor[3], bool theIsDiffuse )
|
||||||
|
{
|
||||||
|
myAxis[ 0 ]->SetColor( theColor[0], theIsDiffuse ? 0.0 : theColor[1], theIsDiffuse ? 0.0 : theColor[2] );
|
||||||
|
myAxis[ 1 ]->SetColor( theIsDiffuse ? 0.0 : theColor[0], theColor[1], theIsDiffuse ? 0.0 : theColor[2] );
|
||||||
|
myAxis[ 2 ]->SetColor( theIsDiffuse ? 0.0 : theColor[0], theIsDiffuse ? 0.0 : theColor[1], theColor[2] );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -57,6 +57,7 @@ public:
|
|||||||
|
|
||||||
virtual vtkFloatingPointType GetSize() { return mySize;}
|
virtual vtkFloatingPointType GetSize() { return mySize;}
|
||||||
|
|
||||||
|
virtual void SetVisibility( int theVisibility );
|
||||||
virtual void SetVisibility( VTKViewer_Trihedron::TVisibility theVis );
|
virtual void SetVisibility( VTKViewer_Trihedron::TVisibility theVis );
|
||||||
virtual void VisibilityOff() { SetVisibility( VTKViewer_Trihedron::eOff ); }
|
virtual void VisibilityOff() { SetVisibility( VTKViewer_Trihedron::eOff ); }
|
||||||
virtual void VisibilityOn() { SetVisibility( VTKViewer_Trihedron::eOn ); }
|
virtual void VisibilityOn() { SetVisibility( VTKViewer_Trihedron::eOn ); }
|
||||||
@ -79,7 +80,16 @@ public:
|
|||||||
void SetColor( vtkFloatingPointType r, vtkFloatingPointType g, vtkFloatingPointType b );
|
void SetColor( vtkFloatingPointType r, vtkFloatingPointType g, vtkFloatingPointType b );
|
||||||
void GetColor( vtkFloatingPointType& r, vtkFloatingPointType& g, vtkFloatingPointType& b );
|
void GetColor( vtkFloatingPointType& r, vtkFloatingPointType& g, vtkFloatingPointType& b );
|
||||||
|
|
||||||
virtual bool hasHighlight() { return false; }
|
virtual bool hasHighlight() { return true; }
|
||||||
|
|
||||||
|
virtual void Highlight( bool theHighlight );
|
||||||
|
virtual bool PreHighlight( vtkInteractorStyle* theInteractorStyle,
|
||||||
|
SVTK_SelectionEvent* theSelectionEvent,
|
||||||
|
bool theIsHighlight );
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void ResetAxesColors();
|
||||||
|
virtual void SetAxesColors( vtkFloatingPointType theColor[3], bool theIsDiffuse = false );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
VTKViewer_Axis* myAxis[3];
|
VTKViewer_Axis* myAxis[3];
|
||||||
@ -88,6 +98,9 @@ protected:
|
|||||||
gp_Pnt myLocation;
|
gp_Pnt myLocation;
|
||||||
gp_Dir myDirX, myDirY, myDirZ;
|
gp_Dir myDirX, myDirY, myDirZ;
|
||||||
vtkFloatingPointType myColor[ 3 ];
|
vtkFloatingPointType myColor[ 3 ];
|
||||||
|
vtkFloatingPointType myDefaultColor[ 3 ];
|
||||||
|
vtkFloatingPointType myPreHighlightColor[ 3 ];
|
||||||
|
vtkFloatingPointType myHighlightColor[ 3 ];
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -139,6 +139,8 @@ void OperationGUI_Fillet1d2dDlg::Init()
|
|||||||
|
|
||||||
initName(myIs1D ? tr("GEOM_FILLET_1D") : tr("GEOM_FILLET_2D"));
|
initName(myIs1D ? tr("GEOM_FILLET_1D") : tr("GEOM_FILLET_2D"));
|
||||||
GroupVertexes->PushButton1->click();
|
GroupVertexes->PushButton1->click();
|
||||||
|
|
||||||
|
SelectionIntoArgument();
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
|
@ -43,6 +43,6 @@ libSTEPExport_la_CPPFLAGS = \
|
|||||||
$(KERNEL_CXXFLAGS)
|
$(KERNEL_CXXFLAGS)
|
||||||
|
|
||||||
libSTEPExport_la_LDFLAGS = \
|
libSTEPExport_la_LDFLAGS = \
|
||||||
$(KERNEL_LDFLAGS) -lSALOMELocalTrace \
|
$(KERNEL_LDFLAGS) -lSALOMELocalTrace -lSALOMEBasics \
|
||||||
$(STDLIB) \
|
$(STDLIB) \
|
||||||
$(CAS_LDPATH) -lTKSTEP
|
$(CAS_LDPATH) -lTKSTEP
|
||||||
|
@ -26,6 +26,8 @@
|
|||||||
//
|
//
|
||||||
#include "utilities.h"
|
#include "utilities.h"
|
||||||
|
|
||||||
|
#include <Basics_Utils.hxx>
|
||||||
|
|
||||||
#include <IFSelect_ReturnStatus.hxx>
|
#include <IFSelect_ReturnStatus.hxx>
|
||||||
|
|
||||||
#include <STEPControl_Writer.hxx>
|
#include <STEPControl_Writer.hxx>
|
||||||
@ -67,6 +69,9 @@ STEPEXPORT_EXPORT
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
// Set "C" numeric locale to save numbers correctly
|
||||||
|
Kernel_Utils::Localizer loc;
|
||||||
|
|
||||||
IFSelect_ReturnStatus status ;
|
IFSelect_ReturnStatus status ;
|
||||||
//VRV: OCC 4.0 migration
|
//VRV: OCC 4.0 migration
|
||||||
STEPControl_Writer aWriter;
|
STEPControl_Writer aWriter;
|
||||||
@ -76,7 +81,9 @@ STEPEXPORT_EXPORT
|
|||||||
status = aWriter.Transfer( theShape, STEPControl_AsIs );
|
status = aWriter.Transfer( theShape, STEPControl_AsIs );
|
||||||
//VRV: OCC 4.0 migration
|
//VRV: OCC 4.0 migration
|
||||||
if ( status == IFSelect_RetDone )
|
if ( status == IFSelect_RetDone )
|
||||||
status = aWriter.Write( theFileName.ToCString() ) ;
|
status = aWriter.Write( theFileName.ToCString() );
|
||||||
|
|
||||||
|
// Return previous locale
|
||||||
if ( status == IFSelect_RetDone )
|
if ( status == IFSelect_RetDone )
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -43,6 +43,6 @@ libSTEPImport_la_CPPFLAGS = \
|
|||||||
$(KERNEL_CXXFLAGS)
|
$(KERNEL_CXXFLAGS)
|
||||||
|
|
||||||
libSTEPImport_la_LDFLAGS = \
|
libSTEPImport_la_LDFLAGS = \
|
||||||
$(KERNEL_LDFLAGS) -lSALOMELocalTrace \
|
$(KERNEL_LDFLAGS) -lSALOMELocalTrace -lSALOMEBasics \
|
||||||
$(STDLIB) \
|
$(STDLIB) \
|
||||||
$(CAS_LDPATH) -lTKSTEP
|
$(CAS_LDPATH) -lTKSTEP
|
||||||
|
@ -26,6 +26,8 @@
|
|||||||
//
|
//
|
||||||
#include "utilities.h"
|
#include "utilities.h"
|
||||||
|
|
||||||
|
#include <Basics_Utils.hxx>
|
||||||
|
|
||||||
#include <BRep_Builder.hxx>
|
#include <BRep_Builder.hxx>
|
||||||
|
|
||||||
#include <IFSelect_ReturnStatus.hxx>
|
#include <IFSelect_ReturnStatus.hxx>
|
||||||
@ -74,6 +76,8 @@ STEPIMPORT_EXPORT
|
|||||||
const TDF_Label&)
|
const TDF_Label&)
|
||||||
{
|
{
|
||||||
MESSAGE("Import STEP model from file " << theFileName.ToCString());
|
MESSAGE("Import STEP model from file " << theFileName.ToCString());
|
||||||
|
// Set "C" numeric locale to save numbers correctly
|
||||||
|
Kernel_Utils::Localizer loc;
|
||||||
TopoDS_Shape aResShape;
|
TopoDS_Shape aResShape;
|
||||||
//VRV: OCC 4.0 migration
|
//VRV: OCC 4.0 migration
|
||||||
STEPControl_Reader aReader;
|
STEPControl_Reader aReader;
|
||||||
@ -152,6 +156,7 @@ STEPIMPORT_EXPORT
|
|||||||
theError = aFail->GetMessageString();
|
theError = aFail->GetMessageString();
|
||||||
aResShape.Nullify();
|
aResShape.Nullify();
|
||||||
}
|
}
|
||||||
|
// Return previous locale
|
||||||
return aResShape;
|
return aResShape;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -289,10 +289,11 @@ void TransformationGUI_MirrorDlg::SelectionIntoArgument()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// clear selection
|
// clear selection
|
||||||
disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
|
/* disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
|
||||||
myGeomGUI->getApp()->selectionMgr()->clearSelected();
|
myGeomGUI->getApp()->selectionMgr()->clearSelected();
|
||||||
connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
|
connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
|
||||||
this, SLOT(SelectionIntoArgument()));
|
this, SLOT(SelectionIntoArgument()));*/
|
||||||
|
// here commented, because multiple objects can be selected IPAL 21437
|
||||||
|
|
||||||
displayPreview();
|
displayPreview();
|
||||||
}
|
}
|
||||||
|
@ -425,10 +425,11 @@ void TransformationGUI_PositionDlg::SelectionIntoArgument()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// clear selection
|
// clear selection
|
||||||
disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
|
/* disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
|
||||||
myGeomGUI->getApp()->selectionMgr()->clearSelected();
|
myGeomGUI->getApp()->selectionMgr()->clearSelected();
|
||||||
connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
|
connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
|
||||||
this, SLOT(SelectionIntoArgument()));
|
this, SLOT(SelectionIntoArgument()));*/
|
||||||
|
// here commented, because multiple objects can be selected IPAL 21437
|
||||||
|
|
||||||
displayPreview();
|
displayPreview();
|
||||||
}
|
}
|
||||||
|
@ -332,10 +332,10 @@ void TransformationGUI_RotationDlg::SelectionIntoArgument()
|
|||||||
myEditCurrentArgument->setText(aName);
|
myEditCurrentArgument->setText(aName);
|
||||||
|
|
||||||
if (myEditCurrentArgument == GroupPoints->LineEdit1) {
|
if (myEditCurrentArgument == GroupPoints->LineEdit1) {
|
||||||
if (myObjects.length()) {
|
/* if (myObjects.length()) {
|
||||||
if (getConstructorId() == 0 && myAxis->_is_nil() || getConstructorId() == 1 && myCentPoint->_is_nil() )
|
if (getConstructorId() == 0 && myAxis->_is_nil() || getConstructorId() == 1 && myCentPoint->_is_nil() )
|
||||||
GroupPoints->PushButton2->click();
|
GroupPoints->PushButton2->click();
|
||||||
}
|
}*/ // here commented, because multiple objects can be selected IPAL 21437
|
||||||
}
|
}
|
||||||
else if (myEditCurrentArgument == GroupPoints->LineEdit2 && getConstructorId() == 0) {
|
else if (myEditCurrentArgument == GroupPoints->LineEdit2 && getConstructorId() == 0) {
|
||||||
myAxis = aSelectedObject;
|
myAxis = aSelectedObject;
|
||||||
@ -359,10 +359,11 @@ void TransformationGUI_RotationDlg::SelectionIntoArgument()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// clear selection
|
// clear selection
|
||||||
disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
|
/* disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
|
||||||
myGeomGUI->getApp()->selectionMgr()->clearSelected();
|
myGeomGUI->getApp()->selectionMgr()->clearSelected();
|
||||||
connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
|
connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
|
||||||
this, SLOT(SelectionIntoArgument()));
|
this, SLOT(SelectionIntoArgument()));*/
|
||||||
|
// here commented, because multiple objects can be selected IPAL 21437
|
||||||
|
|
||||||
displayPreview();
|
displayPreview();
|
||||||
}
|
}
|
||||||
|
@ -344,10 +344,11 @@ void TransformationGUI_ScaleDlg::SelectionIntoArgument()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// clear selection
|
// clear selection
|
||||||
disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
|
/* disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
|
||||||
myGeomGUI->getApp()->selectionMgr()->clearSelected();
|
myGeomGUI->getApp()->selectionMgr()->clearSelected();
|
||||||
connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
|
connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
|
||||||
this, SLOT(SelectionIntoArgument()));
|
this, SLOT(SelectionIntoArgument()));*/
|
||||||
|
// here commented, because multiple objects can be selected IPAL 21437
|
||||||
|
|
||||||
displayPreview();
|
displayPreview();
|
||||||
}
|
}
|
||||||
|
@ -396,10 +396,11 @@ void TransformationGUI_TranslationDlg::SelectionIntoArgument()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// clear selection
|
// clear selection
|
||||||
disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
|
/* disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
|
||||||
myGeomGUI->getApp()->selectionMgr()->clearSelected();
|
myGeomGUI->getApp()->selectionMgr()->clearSelected();
|
||||||
connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
|
connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
|
||||||
this, SLOT(SelectionIntoArgument()));
|
this, SLOT(SelectionIntoArgument()));*/
|
||||||
|
// here commented, because multiple objects can be selected IPAL 21437
|
||||||
|
|
||||||
displayPreview();
|
displayPreview();
|
||||||
}
|
}
|
||||||
|