Merge from V6_3_BR 15/07/2011
@ -24,7 +24,7 @@
|
|||||||
# Modified by : Alexander BORODIN (OCN) - autotools usage
|
# Modified by : Alexander BORODIN (OCN) - autotools usage
|
||||||
# Created from configure.in.base
|
# Created from configure.in.base
|
||||||
#
|
#
|
||||||
AC_INIT([Salome2 Project GEOM module], [6.3.0], [webmaster.salome@opencascade.com], [SalomeGEOM])
|
AC_INIT([Salome2 Project GEOM module], [6.3.1], [webmaster.salome@opencascade.com], [SalomeGEOM])
|
||||||
AC_CONFIG_AUX_DIR(adm_local/unix/config_files)
|
AC_CONFIG_AUX_DIR(adm_local/unix/config_files)
|
||||||
AC_CANONICAL_HOST
|
AC_CANONICAL_HOST
|
||||||
AC_CANONICAL_TARGET
|
AC_CANONICAL_TARGET
|
||||||
@ -416,6 +416,7 @@ AC_OUTPUT([ \
|
|||||||
doc/salome/gui/GEOM/doxyfile_py \
|
doc/salome/gui/GEOM/doxyfile_py \
|
||||||
doc/salome/gui/GEOM/doxyfile_tui \
|
doc/salome/gui/GEOM/doxyfile_tui \
|
||||||
doc/salome/gui/GEOM/static/header.html \
|
doc/salome/gui/GEOM/static/header.html \
|
||||||
|
doc/salome/gui/GEOM/static/header_py.html \
|
||||||
doc/salome/tui/Makefile \
|
doc/salome/tui/Makefile \
|
||||||
doc/salome/tui/doxyfile \
|
doc/salome/tui/doxyfile \
|
||||||
doc/salome/tui/static/header.html \
|
doc/salome/tui/static/header.html \
|
||||||
|
@ -110,7 +110,7 @@ RECURSIVE = NO
|
|||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
GENERATE_HTML = YES
|
GENERATE_HTML = YES
|
||||||
HTML_OUTPUT = geompy_doc
|
HTML_OUTPUT = geompy_doc
|
||||||
HTML_HEADER = @builddir@/static/header.html
|
HTML_HEADER = @builddir@/static/header_py.html
|
||||||
HTML_FOOTER = @srcdir@/static/footer.html
|
HTML_FOOTER = @srcdir@/static/footer.html
|
||||||
HTML_STYLESHEET = @srcdir@/static/doxygen.css
|
HTML_STYLESHEET = @srcdir@/static/doxygen.css
|
||||||
TOC_EXPAND = YES
|
TOC_EXPAND = YES
|
||||||
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 24 KiB |
BIN
doc/salome/gui/GEOM/images/curve3.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
doc/salome/gui/GEOM/images/curve4.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
doc/salome/gui/GEOM/images/glue7.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
doc/salome/gui/GEOM/images/glue8.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
@ -5,58 +5,93 @@
|
|||||||
To create a \b Curve in the <b>Main Menu</b> select <b>New Entity - >
|
To create a \b Curve in the <b>Main Menu</b> select <b>New Entity - >
|
||||||
Basic - > Curve</b>
|
Basic - > Curve</b>
|
||||||
|
|
||||||
\n There are three algorithms to create a \b Curve in the 3D space. Each
|
There are three <b>Curve Construction</b> menu choices corresponding to three
|
||||||
time you define it by a list of \b Points through which the curve
|
|
||||||
passes. The three <b>Curve Construction</b> menu choices correspond to three
|
|
||||||
possible types of curves: Polyline, Besier or B-spline (Interpolated).
|
possible types of curves: Polyline, Besier or B-spline (Interpolated).
|
||||||
|
The curve is defined by a list of \b Points through which it passes.
|
||||||
|
|
||||||
|
|
||||||
|
\n There are two ways to define these <b>Points</b>:
|
||||||
|
<ul>
|
||||||
|
<li> <b>By Selection</b> manual picking of the points in the Object Browser or 3D Viewer.
|
||||||
|
<li> <b>Analytical</b> parametric definition of the points through
|
||||||
|
python expressions.
|
||||||
|
</ul>
|
||||||
|
|
||||||
\n The \b Result of each operation will be a GEOM_Object (edge).
|
\n The \b Result of each operation will be a GEOM_Object (edge).
|
||||||
\n There are two ways to define <b>Points</b>:
|
|
||||||
<ul>
|
|
||||||
<li> <b>By Selection</b> choice of the points manually in the Object Browser or 3D Viewer.
|
|
||||||
<li> <b>Analitical</b> parametric definition of the points through python expressions.
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
\n <b>TUI Commands:</b>
|
<b>Polyline</b>
|
||||||
<ul>
|
|
||||||
<li><em>geompy.MakePolyline(ListOfShapes,isClosed)</em></li>
|
|
||||||
<li><em>geompy.MakeBezier(ListOfShapes,isClosed)</em></li>
|
|
||||||
<li><em>geompy.MakeInterpol(ListOfShapes,isClosed,doReordering)</em></li>
|
|
||||||
<li><em>geompy.MakeCurveParametric(XExpr, YExpt, ZExpt, tMin, tMax, tStep, curveType)</em></li>
|
|
||||||
</ul>
|
|
||||||
ListOfShape is a list of points through which the curve passes.
|
|
||||||
If isClosed is True, MakeBezier and MakeInterpol builds a closed edge,
|
|
||||||
MakePolyline builds a closed wire. If doReordering is True,
|
|
||||||
MakeInterpol does not follow the order of vertices but searches for the
|
|
||||||
closest vertex.
|
|
||||||
\n XExpr, YExpr, ZExpr python expressions for the X, Y and Z coordinates of the basic points of the curve.
|
|
||||||
\n tMin, tMax minimum and maximun values of the parameter \b t.
|
|
||||||
\n tStep step of the parameter \b t
|
|
||||||
\n curveType type of the curve Polyline, Bezier or Interpolation.
|
|
||||||
|
|
||||||
<b>Arguments:</b>
|
|
||||||
<ul>
|
|
||||||
<li>Name + at least 2 points which will serve as nodes on the curve, or</li>
|
|
||||||
<li>Name + 3 string + 3 values (python expressions for the X, Y and Z coordinates, minimum,
|
|
||||||
maximum and step values of the parameter)</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
|
|
||||||
\n<b>Advanced options</b> \ref preview_anchor "Preview"
|
|
||||||
|
|
||||||
\image html curve.png
|
|
||||||
\image html curve1.png
|
|
||||||
\image html curve2.png
|
|
||||||
|
|
||||||
<b>Examples:</b>
|
|
||||||
|
|
||||||
\image html polyline.png
|
\image html polyline.png
|
||||||
<center>Polyline</center>
|
|
||||||
|
Polyline or polygonal chain is a connected series of line segments. It
|
||||||
|
can be defined by the following parameters:
|
||||||
|
|
||||||
|
\image html curve2.png
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><b>Points</b> at least 2 points which will serve as nodes on the curve.</li>
|
||||||
|
<li><b>Build a closed wire</b> checkbox allows creating the curve as
|
||||||
|
closed wire.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
\n <b>TUI Command:</b> <em>geompy.MakePolyline(ListOfShapes,isClosed)</em>
|
||||||
|
|
||||||
|
<b>Bezier</b>
|
||||||
|
|
||||||
\image html bezier.png
|
\image html bezier.png
|
||||||
<center>Bezier</center>
|
|
||||||
|
Bezier curve is a curve completely contained in a convex hull of its
|
||||||
|
control points. It can be defined by the following parameters:
|
||||||
|
|
||||||
|
|
||||||
|
\image html curve3.png
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><b>Points</b> at least 2 points used to approximate the curve.</li>
|
||||||
|
<li><b>Build a closed edge</b> checkbox allows creating the curve as
|
||||||
|
closed edge.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
\n <b>TUI Command:</b> <em>geompy.MakeBezier(ListOfShapes,isClosed)</em>
|
||||||
|
|
||||||
|
<b>B-spline</b>
|
||||||
|
|
||||||
\image html interpol.png
|
\image html interpol.png
|
||||||
<center>B-Spline</center>
|
|
||||||
|
B-spline is a union of curve segments defined at each node span. It
|
||||||
|
can be defined by the following parameters:
|
||||||
|
|
||||||
|
\image html curve4.png
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><b>Points</b> at least 2 points which will serve as nodes on the curve.</li>
|
||||||
|
<li><b>Build a closed edge</b> checkbox allows creating the curve as
|
||||||
|
closed edge.</li>
|
||||||
|
<li> If <b>Reorder vertices taking into account distances</b> is
|
||||||
|
checked, the interpolation algorithm does not follow the order of
|
||||||
|
vertices but searches for the closest vertex.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
\n <b>TUI Command:</b>
|
||||||
|
<em>geompy.MakeInterpol(ListOfShapes,isClosed,doReordering)</em>
|
||||||
|
|
||||||
|
<b>Analytical Definition</b>
|
||||||
|
|
||||||
|
The input parameters for analytical definition are common for all
|
||||||
|
types of curves.
|
||||||
|
|
||||||
|
\image html curve1.png
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><b>X(t)equation, Y(t)equation, Z(t)equation</b> are python
|
||||||
|
expressions for X, Y and Z coordinates of the basic points of the curve.</li>
|
||||||
|
<li><b>Min t, Max t</b> are minimum and maximum values of the parameter \b t.</li>
|
||||||
|
<li><b>Step</b> is the step of the parameter \b t.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
\n <b>TUI Command:</b> <em>geompy.MakeCurveParametric(XExpr, YExpt, ZExpt, tMin, tMax, tStep, curveType)</em>
|
||||||
|
|
||||||
|
\n<b>Advanced options</b> \ref preview_anchor "Preview"
|
||||||
|
|
||||||
Our <b>TUI Scripts</b> provide you with useful examples of creation of
|
Our <b>TUI Scripts</b> provide you with useful examples of creation of
|
||||||
\ref tui_creation_curve "Basic Geometric Objects".
|
\ref tui_creation_curve "Basic Geometric Objects".
|
||||||
|
@ -41,17 +41,21 @@ the connection points (sharp bend) is not processed.
|
|||||||
|
|
||||||
\image html edge2.png "Create edge from wire"
|
\image html edge2.png "Create edge from wire"
|
||||||
|
|
||||||
The third case allows building edges of desired length on any existing
|
Thirdly, it is possible to build an edge of required \b Length on any existing
|
||||||
curve (selected existing edge). <b>Start Point</b> parameter is optional.
|
\b Edge.
|
||||||
Any point can be selected for it, the new edge will begin at the end
|
|
||||||
of initial edge, close to the selected point. <b>Length</b> can exceed
|
<b>Start Point</b> parameter is optional:
|
||||||
the initial edge's length or be negative to extrapolate existing edge
|
- if used, it allows selecting any existing point - in such a case the start point
|
||||||
along its curve (except bezier and b-spline curves).
|
of the new edge will be chosen as start or end point of the selected \b Edge
|
||||||
|
whatever is closest to the selected <b>Start Point</b>
|
||||||
|
- if it is missed, the start point of the initial edge is used
|
||||||
|
|
||||||
|
<b>Length</b> can exceed the length of the initial edge length or be
|
||||||
|
negative. In this case the existing edge is extrapolated
|
||||||
|
along its curve (except for bezier and b-spline curves).
|
||||||
|
|
||||||
<b>TUI Command:</b> <em>geompy.MakeEdgeOnCurveByLength(Edge, Length, StartPoint = None)</em><br>
|
<b>TUI Command:</b> <em>geompy.MakeEdgeOnCurveByLength(Edge, Length, StartPoint = None)</em><br>
|
||||||
<b>Arguments:</b> Name + 1 edge + Length + 1 Vertex
|
<b>Arguments:</b> Name + 1 edge + Length + 1 Vertex
|
||||||
(StartPoint parameter is optional, it allows switching from one end of
|
|
||||||
initial edge to another. Length can exceed the initial edge's length or be negative).
|
|
||||||
|
|
||||||
\image html edge3.png "Create edge on curve"
|
\image html edge3.png "Create edge on curve"
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ obtain from it.
|
|||||||
variety of ways:
|
variety of ways:
|
||||||
<ul>
|
<ul>
|
||||||
<li><em>geompy.ExtractShapes(Shape, Type, isSorted)</em> explodes a
|
<li><em>geompy.ExtractShapes(Shape, Type, isSorted)</em> explodes a
|
||||||
Shape on subshapes of a given Type and returns a List of sub-shapes.
|
Shape into subshapes of a given Type and returns a List of sub-shapes.
|
||||||
This method does not return the Shape itself if it matches the
|
This method does not return the Shape itself if it matches the
|
||||||
Type.</li>
|
Type.</li>
|
||||||
<li><em>geompy.SubShapeAll(Shape, Type)</em> explodes a Shape on
|
<li><em>geompy.SubShapeAll(Shape, Type)</em> explodes a Shape on
|
||||||
|
@ -33,15 +33,17 @@ point is located in the middle of the edge.
|
|||||||
position of the point on the given edge.
|
position of the point on the given edge.
|
||||||
\image html point3.png
|
\image html point3.png
|
||||||
|
|
||||||
Alternatively, it is possible to define the point by \b Edge and \b Length,
|
Alternatively, it is possible to define a point by an \b Edge and a \b Length.
|
||||||
the given length can exceed the length of the edge or be negative
|
The \b Length defines the position of the point on the given edge. It
|
||||||
(except bezier and b-spline curves). The orientation of the edge can
|
can exceed the length of the edge or be negative. In this case the edge
|
||||||
be reversed by the \b StartPoint selection.
|
is extrapolated along its curve (except for bezier and b-spline
|
||||||
\n <b>TUI Command:</b> <em>geompy.MakeVertexOnCurveByLength(Edge,Length,StartPoint=None).</em>
|
curves).
|
||||||
\n <b>Arguments:</b> Name + 1 edge + 1 Length defining the position
|
The <b>Start Point</b> defines the direction for the length
|
||||||
of the point on the given edge + 1 Point defining the direction for
|
calculation (if not defined, the first vertex of
|
||||||
the calculation of the length (if not defined, the first vertex of
|
|
||||||
Edge is used, else the vertex of Edge closest to StartPoint is used).
|
Edge is used, else the vertex of Edge closest to StartPoint is used).
|
||||||
|
\n <b>TUI Command:</b> <em>geompy.MakeVertexOnCurveByLength(Edge,Length,StartPoint=None).</em>
|
||||||
|
\n <b>Arguments:</b> Name + 1 edge + 1 Length + 1 Point.
|
||||||
|
|
||||||
\image html point3_3.png
|
\image html point3_3.png
|
||||||
|
|
||||||
It is also possible to define 3D coordinates of the point
|
It is also possible to define 3D coordinates of the point
|
||||||
|
60
doc/salome/gui/GEOM/input/glue_edges_operation.doc
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
/*!
|
||||||
|
|
||||||
|
\page glue_edges_operation_page Glue Edges
|
||||||
|
|
||||||
|
\n To <b>Glue Edges</b> in the <b>Main Menu</b> select <b>Repair - > Glue Edges</b>.
|
||||||
|
|
||||||
|
\n This operation glues edges that are coincident with respect to the
|
||||||
|
given tolerance value.
|
||||||
|
|
||||||
|
\n <b>Arguments:</b> Name + Compound of shapes + Tolerance value.
|
||||||
|
\n <b>Advanced option:</b>
|
||||||
|
\ref restore_presentation_parameters_page "Set presentation parameters and subshapes from arguments".
|
||||||
|
\n The \b Result will be a \b GEOM_Object.
|
||||||
|
|
||||||
|
|
||||||
|
\image html glue4.png
|
||||||
|
|
||||||
|
\n <b>TUI Command:</b>
|
||||||
|
\n <em>geompy.MakeGlueEdges(theShape,theTolerance)</em>,
|
||||||
|
\n where \em theShape is a compound of shapes to be glued, and \em
|
||||||
|
theTolerance is a maximum distance between two faces/edges, which can
|
||||||
|
be considered as coincident.
|
||||||
|
|
||||||
|
\n It is also possible to manually select the edges that will be
|
||||||
|
glued - select the shape, specify the tolerance and press \b Detect button.
|
||||||
|
|
||||||
|
\image html glue5.png
|
||||||
|
|
||||||
|
\n \b Geometry module detects the edges where gluing can be
|
||||||
|
performed and displays a notification.
|
||||||
|
|
||||||
|
\image html glue7.png
|
||||||
|
|
||||||
|
\n The edges that can be glued are colored in red. It is
|
||||||
|
possible to select the edges for gluing in the 3D viewer.
|
||||||
|
The selected edges will be marked in white.
|
||||||
|
|
||||||
|
\n <b>TUI Command:</b>
|
||||||
|
\n <em>geompy.GetGlueEdges(theShape,theTolerance)</em>,
|
||||||
|
\n where \em theShape is a compound of shapes to be glued, \em
|
||||||
|
theTolerance is a maximum distance between two edges, which can
|
||||||
|
be considered as coincident. The \b Result will be a list of \b
|
||||||
|
GEOM_Objects, containing one sub shape per each detected set of
|
||||||
|
coincident sub shapes.
|
||||||
|
|
||||||
|
\n <em>geompy.MakeGlueEdgesByList(theShape,theTolerance,theEdges)</em>,
|
||||||
|
\n where \em theShape is a compound of shapes to be glued, \em
|
||||||
|
theTolerance is a maximum distance between two edges, which can
|
||||||
|
be considered as coincident, \em theEdges is a list of
|
||||||
|
subshapes to be glued.
|
||||||
|
|
||||||
|
\n <b>Example:</b>
|
||||||
|
|
||||||
|
\image html glue8.png
|
||||||
|
<center><em>Box with an edge that can be glued</em></center>
|
||||||
|
|
||||||
|
Our <b>TUI Scripts</b> provide you with useful examples of the use of
|
||||||
|
<b>Repairing Operations</b> \ref tui_glue_edges "Glue Edges".
|
||||||
|
|
||||||
|
*/
|
@ -1,11 +1,11 @@
|
|||||||
/*!
|
/*!
|
||||||
|
|
||||||
\page glue_faces_operation_page Glue Faces / Edges
|
\page glue_faces_operation_page Glue Faces
|
||||||
|
|
||||||
\n To <b>Glue Faces</b> in the <b>Main Menu</b> select <b>Repair - > Glue Faces</b>.
|
\n To <b>Glue Faces</b> in the <b>Main Menu</b> select <b>Repair - > Glue Faces</b>.
|
||||||
\n To <b>Glue Edges</b> in the <b>Main Menu</b> select <b>Repair - > Glue Edges</b>.
|
|
||||||
|
|
||||||
\n This operation glues faces/edges that are coincident with respect to the
|
|
||||||
|
\n This operation glues faces that are coincident with respect to the
|
||||||
given tolerance value.
|
given tolerance value.
|
||||||
|
|
||||||
\n <b>Arguments:</b> Name + Compound of shapes + Tolerance value.
|
\n <b>Arguments:</b> Name + Compound of shapes + Tolerance value.
|
||||||
@ -14,51 +14,46 @@ given tolerance value.
|
|||||||
\n The \b Result will be a \b GEOM_Object.
|
\n The \b Result will be a \b GEOM_Object.
|
||||||
|
|
||||||
\image html glue1.png
|
\image html glue1.png
|
||||||
\n \image html glue4.png
|
|
||||||
|
|
||||||
\n <b>TUI Commands:</b>
|
\n <b>TUI Commands:</b>
|
||||||
<em>geompy.MakeGlueFaces(theShape,theTolerance,doKeepNonSolids)</em> and
|
\n <em>geompy.MakeGlueFaces(theShape,theTolerance,doKeepNonSolids)</em>,
|
||||||
<em>geompy.MakeGlueEdges(theShape,theTolerance)</em>,
|
\n where \em theShape is a compound of shapes to be glued, \em
|
||||||
where \em theShape is a compound of shapes to be glued, \em
|
theTolerance is a maximum distance between two faces, which can
|
||||||
theTolerance is a maximum distance between two faces/edges, which can
|
|
||||||
be considered as coincident. The \em doKeepNonSolids flag allows to
|
be considered as coincident. The \em doKeepNonSolids flag allows to
|
||||||
throw away non-solids from the result, if false. The \b Result will
|
throw away non-solids from the result, if false. The \b Result will
|
||||||
be a new \b GEOM_Object.
|
be a new \b GEOM_Object.
|
||||||
|
|
||||||
\n It is also possible to manually select the faces/edges that will be
|
\n It is also possible to manually select the faces that will be
|
||||||
glued - select the shape, specify the tolerance and press \b Detect button.
|
glued - select the shape, specify the tolerance and press \b Detect button.
|
||||||
|
|
||||||
\image html glue2.png
|
\image html glue2.png
|
||||||
\n \image html glue5.png
|
|
||||||
|
|
||||||
\n \b Geometry module detects the faces/edges where gluing can be
|
\n \b Geometry module detects the faces where gluing can be
|
||||||
performed and displays a notification.
|
performed and displays a notification.
|
||||||
|
|
||||||
\image html glue3.png
|
\image html glue3.png
|
||||||
|
|
||||||
\n The faces/edges that can be glued are colored in red. It is
|
\n The faces that can be glued are colored in red. It is
|
||||||
possible to select the faces/edges for gluing in the 3D viewer.
|
possible to select the faces for gluing in the 3D viewer.
|
||||||
The selected faces/edges will be marked in white.
|
The selected faces will be marked in white.
|
||||||
|
|
||||||
\n For faces gluing their edges are also glued. By default, other
|
\n When the faces are glued their edges are glued as well. By default, other
|
||||||
edges are not glued (this concerns only Glue Faces, of course).
|
edges are not glued. To force gluing of all edges, check <b>Glue all coincident edges</b>
|
||||||
To force all edges gluing, check the "Glue all coincident edges"
|
|
||||||
checkbox.
|
checkbox.
|
||||||
|
|
||||||
\n <b>TUI Commands:</b>
|
\n <b>TUI Commands:</b>
|
||||||
<em>geompy.GetGlueFaces(theShape,theTolerance)</em> and
|
\n <em>geompy.GetGlueFaces(theShape,theTolerance)</em>,
|
||||||
<em>geompy.GetGlueEdges(theShape,theTolerance)</em>,
|
\n where \em theShape is a compound of shapes to be glued, \em
|
||||||
where \em theShape is a compound of shapes to be glued, \em
|
theTolerance is a maximum distance between two faces, which can
|
||||||
theTolerance is a maximum distance between two faces/edges, which can
|
|
||||||
be considered as coincident. The \b Result will be a list of \b
|
be considered as coincident. The \b Result will be a list of \b
|
||||||
GEOM_Objects, containing one sub shape per each detected set of
|
GEOM_Objects, containing one sub shape per each detected set of
|
||||||
coincident sub shapes.
|
coincident sub shapes.
|
||||||
|
|
||||||
\n <em>geompy.MakeGlueFacesByList(theShape,theTolerance,theFaces,doKeepNonSolids,doGlueAllEdges)</em>
|
\n <em>geompy.MakeGlueFacesByList(theShape,theTolerance,theFaces,doKeepNonSolids,doGlueAllEdges)</em>,
|
||||||
and <em>geompy.MakeGlueEdgesByList(theShape,theTolerance,theEdges)</em>,
|
\n where \em theShape is a compound of shapes to be glued, \em
|
||||||
where \em theShape is a compound of shapes to be glued, \em
|
theTolerance is a maximum distance between two faces, which can
|
||||||
theTolerance is a maximum distance between two faces/edges, which can
|
be considered as coincident, \em theFaces is a list of
|
||||||
be considered as coincident, \em theFaces/theEdges is a list of
|
|
||||||
subshapes to be glued. The \em doKeepNonSolids flag allows to throw
|
subshapes to be glued. The \em doKeepNonSolids flag allows to throw
|
||||||
away non-solids from the result, if false. The \em doGlueAllEdges
|
away non-solids from the result, if false. The \em doGlueAllEdges
|
||||||
allows to glue all edges, not only owned by glued faces. The \b
|
allows to glue all edges, not only owned by glued faces. The \b
|
||||||
@ -76,7 +71,6 @@ checkbox.
|
|||||||
<center><em>Manual selection of faces for gluing</em></center>
|
<center><em>Manual selection of faces for gluing</em></center>
|
||||||
|
|
||||||
Our <b>TUI Scripts</b> provide you with useful examples of the use of
|
Our <b>TUI Scripts</b> provide you with useful examples of the use of
|
||||||
<b>Repairing Operations</b> \ref tui_glue_faces "Glue Faces" and \ref
|
<b>Repairing Operations</b> \ref tui_glue_faces "Glue Faces".
|
||||||
tui_glue_edges "Glue Edges".
|
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
@ -17,6 +17,8 @@ holes with free boundaries on a selected face.</li>
|
|||||||
<li>\subpage sewing_operation_page "Sewing" - sews faces or shells.</li>
|
<li>\subpage sewing_operation_page "Sewing" - sews faces or shells.</li>
|
||||||
<li>\subpage glue_faces_operation_page "Glue faces" - unites
|
<li>\subpage glue_faces_operation_page "Glue faces" - unites
|
||||||
coincident faces within the given tolerance.</li>
|
coincident faces within the given tolerance.</li>
|
||||||
|
<li>\subpage glue_edges_operation_page "Glue edges" - unites
|
||||||
|
coincident edges within the given tolerance.</li>
|
||||||
<li>\subpage limit_tolerance_operation_page "Limit Tolerance" - tries
|
<li>\subpage limit_tolerance_operation_page "Limit Tolerance" - tries
|
||||||
to set new tolerance value for the given shape.</li>
|
to set new tolerance value for the given shape.</li>
|
||||||
<li>\subpage add_point_on_edge_operation_page "Add point on edge" -
|
<li>\subpage add_point_on_edge_operation_page "Add point on edge" -
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
<br><center><b>Set presentation parameters and subshapes from arguments</b></center>
|
<br><center><b>Set presentation parameters and subshapes from arguments</b></center>
|
||||||
|
|
||||||
\n This option allows the operation result to inherit colour
|
\n This option allows the operation result to inherit color
|
||||||
and subshapes from its arguments.
|
and subshapes from its arguments.
|
||||||
|
|
||||||
\n To activate this functionality, check in "Set
|
\n To activate this functionality, check in "Set
|
||||||
@ -17,7 +17,7 @@ faces and Cylinder_1 with free published edges.
|
|||||||
\image html restore-ss-viewer-before.png "The initial box and cylinder"
|
\image html restore-ss-viewer-before.png "The initial box and cylinder"
|
||||||
|
|
||||||
First, we examine the case when the resulting shape corresponds to one argument (after transformation,
|
First, we examine the case when the resulting shape corresponds to one argument (after transformation,
|
||||||
after the boolean operation Cut, or after the partiton with one object shape).
|
after the Boolean operation Cut, or after the partiton with one object shape).
|
||||||
|
|
||||||
We create a Cut of Box_1 with Cylinder_1.
|
We create a Cut of Box_1 with Cylinder_1.
|
||||||
|
|
||||||
@ -28,7 +28,7 @@ The resulting shape inherits the subshapes and the colour of Box_1.
|
|||||||
\image html restore-ss-viewer-cut.png "The resulting shape"
|
\image html restore-ss-viewer-cut.png "The resulting shape"
|
||||||
|
|
||||||
Second, we examine the case when the resulting shape is composed from multiple arguments
|
Second, we examine the case when the resulting shape is composed from multiple arguments
|
||||||
(after all boolean operations, except for Cut, or after the partition with
|
(after all Boolean operations, except for Cut, or after the partition with
|
||||||
several object shapes, or if the resulting shape is a compound).
|
several object shapes, or if the resulting shape is a compound).
|
||||||
|
|
||||||
We create a Common of Box_1 and Cylinder_1.
|
We create a Common of Box_1 and Cylinder_1.
|
||||||
@ -37,7 +37,7 @@ We create a Common of Box_1 and Cylinder_1.
|
|||||||
|
|
||||||
\n The resulting object is created with several subshapes that correspond to the
|
\n The resulting object is created with several subshapes that correspond to the
|
||||||
operation arguments and their published subshapes. The resulting shape
|
operation arguments and their published subshapes. The resulting shape
|
||||||
has a default colour, but its subshapes inherit colors corresponding
|
has a default color, but its subshapes inherit colors corresponding
|
||||||
to arguments and their subshapes.
|
to arguments and their subshapes.
|
||||||
|
|
||||||
\image html restore-ss-viewer-after.png "The resulting shape"
|
\image html restore-ss-viewer-after.png "The resulting shape"
|
||||||
@ -62,6 +62,6 @@ restored sub-shapes, and the prefix "from_subshapes_of_" to the names of partial
|
|||||||
By default this option is On.
|
By default this option is On.
|
||||||
|
|
||||||
\anchor preview_anchor <br><center><b>Preview</b></center>
|
\anchor preview_anchor <br><center><b>Preview</b></center>
|
||||||
<b>Preview</b> checkbox allows display/erase simulation of the <b>Result</b> in the viewer.
|
<b>Preview</b> checkbox allows displaying/erasing simulation of the <b>Result</b> in the viewer.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
23
doc/salome/gui/GEOM/static/header_py.html.in
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||||
|
<title>$title</title>
|
||||||
|
<link href="$relpath$tabs.css" rel="stylesheet" type="text/css"/>
|
||||||
|
<link href="$relpath$search/search.css" rel="stylesheet" type="text/css"/>
|
||||||
|
<script type="text/javascript" src="$relpath$search/search.js"></script>
|
||||||
|
<link href="$relpath$navtree.css" rel="stylesheet" type="text/css"/>
|
||||||
|
<script type="text/javascript" src="$relpath$jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="$relpath$navtree.js"></script>
|
||||||
|
<script type="text/javascript" src="$relpath$resize.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(document).ready(initResizable);
|
||||||
|
</script>
|
||||||
|
<link href="$relpath$doxygen.css" rel="stylesheet" type="text/css"/>
|
||||||
|
</head>
|
||||||
|
<body onload='searchBox.OnSelectItem(0);'>
|
||||||
|
<div id="top"><!-- do not remove this div! -->
|
||||||
|
<div id="titlearea"><div align="right"><div class="version">Version: @VERSION@</div></div></div>
|
||||||
|
<div align="bottom-left"><a href=../index.html>Home</a></div>
|
||||||
|
|
||||||
|
</div>
|
@ -18,7 +18,6 @@
|
|||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
|
||||||
|
|
||||||
// GEOM GEOMGUI : GUI for Geometry component
|
// GEOM GEOMGUI : GUI for Geometry component
|
||||||
// File : EntityGUI_SubShapeDlg.cxx
|
// File : EntityGUI_SubShapeDlg.cxx
|
||||||
@ -64,7 +63,9 @@
|
|||||||
//=================================================================================
|
//=================================================================================
|
||||||
EntityGUI_SubShapeDlg::EntityGUI_SubShapeDlg(GeometryGUI* theGeometryGUI, QWidget* parent,
|
EntityGUI_SubShapeDlg::EntityGUI_SubShapeDlg(GeometryGUI* theGeometryGUI, QWidget* parent,
|
||||||
bool modal, Qt::WindowFlags fl)
|
bool modal, Qt::WindowFlags fl)
|
||||||
: GEOMBase_Skeleton(theGeometryGUI, parent, modal, fl)
|
: GEOMBase_Skeleton(theGeometryGUI, parent, modal, fl),
|
||||||
|
myWithShape(true),
|
||||||
|
myIsHiddenMain(false)
|
||||||
{
|
{
|
||||||
QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_DLG_SUBSHAPE")));
|
QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_DLG_SUBSHAPE")));
|
||||||
QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_SELECT")));
|
QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_SELECT")));
|
||||||
@ -111,6 +112,11 @@ EntityGUI_SubShapeDlg::EntityGUI_SubShapeDlg(GeometryGUI* theGeometryGUI, QWidge
|
|||||||
//=================================================================================
|
//=================================================================================
|
||||||
EntityGUI_SubShapeDlg::~EntityGUI_SubShapeDlg()
|
EntityGUI_SubShapeDlg::~EntityGUI_SubShapeDlg()
|
||||||
{
|
{
|
||||||
|
if (myIsHiddenMain) {
|
||||||
|
GEOM_Displayer* aDisplayer = getDisplayer();
|
||||||
|
aDisplayer->Display(myObject);
|
||||||
|
myIsHiddenMain = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
@ -289,6 +295,12 @@ void EntityGUI_SubShapeDlg::SelectionIntoArgument()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (myIsHiddenMain) {
|
||||||
|
GEOM_Displayer* aDisplayer = getDisplayer();
|
||||||
|
aDisplayer->Display(myObject);
|
||||||
|
myIsHiddenMain = false;
|
||||||
|
}
|
||||||
|
|
||||||
TopoDS_Shape S = GEOMBase::GetTopoFromSelection(aSelList);
|
TopoDS_Shape S = GEOMBase::GetTopoFromSelection(aSelList);
|
||||||
if (S.IsNull() || S.ShapeType() == TopAbs_VERTEX) {
|
if (S.IsNull() || S.ShapeType() == TopAbs_VERTEX) {
|
||||||
myObject = GEOM::GEOM_Object::_nil();
|
myObject = GEOM::GEOM_Object::_nil();
|
||||||
@ -393,6 +405,11 @@ void EntityGUI_SubShapeDlg::LineEditReturnPressed()
|
|||||||
//=================================================================================
|
//=================================================================================
|
||||||
void EntityGUI_SubShapeDlg::ResetStateOfDialog()
|
void EntityGUI_SubShapeDlg::ResetStateOfDialog()
|
||||||
{
|
{
|
||||||
|
if (myIsHiddenMain) {
|
||||||
|
GEOM_Displayer* aDisplayer = getDisplayer();
|
||||||
|
aDisplayer->Display(myObject);
|
||||||
|
myIsHiddenMain = false;
|
||||||
|
}
|
||||||
myObject = GEOM::GEOM_Object::_nil();
|
myObject = GEOM::GEOM_Object::_nil();
|
||||||
myShape.Nullify();
|
myShape.Nullify();
|
||||||
myEditCurrentArgument->setText("");
|
myEditCurrentArgument->setText("");
|
||||||
@ -496,7 +513,7 @@ unsigned int EntityGUI_SubShapeDlg::NumberOfSubShapes(const TopoDS_Shape& S,
|
|||||||
void EntityGUI_SubShapeDlg::updateButtonState()
|
void EntityGUI_SubShapeDlg::updateButtonState()
|
||||||
{
|
{
|
||||||
if (SUIT_Session::session()->activeApplication()->desktop()->activeWindow()->getViewManager()->getType() != OCCViewer_Viewer::Type() ||
|
if (SUIT_Session::session()->activeApplication()->desktop()->activeWindow()->getViewManager()->getType() != OCCViewer_Viewer::Type() ||
|
||||||
myObject->_is_nil() || shapeType() == TopAbs_SHAPE || shapeType() == TopAbs_COMPOUND) {
|
myObject->_is_nil() || shapeType() == TopAbs_SHAPE || shapeType() == TopAbs_COMPOUND) {
|
||||||
GroupPoints->CheckButton1->setChecked(false);
|
GroupPoints->CheckButton1->setChecked(false);
|
||||||
GroupPoints->CheckButton1->setEnabled(false);
|
GroupPoints->CheckButton1->setEnabled(false);
|
||||||
}
|
}
|
||||||
@ -641,7 +658,15 @@ void EntityGUI_SubShapeDlg::activateSelection()
|
|||||||
if (!myObject->_is_nil() && !isAllSubShapes())
|
if (!myObject->_is_nil() && !isAllSubShapes())
|
||||||
{
|
{
|
||||||
GEOM_Displayer* aDisplayer = getDisplayer();
|
GEOM_Displayer* aDisplayer = getDisplayer();
|
||||||
aDisplayer->Erase(myObject, false, false);
|
SALOME_View* view = GEOM_Displayer::GetActiveView();
|
||||||
|
if (view) {
|
||||||
|
CORBA::String_var aMainEntry = myObject->GetStudyEntry();
|
||||||
|
Handle(SALOME_InteractiveObject) io = new SALOME_InteractiveObject (aMainEntry.in(), "GEOM", "TEMP_IO");
|
||||||
|
if (view->isVisible(io)) {
|
||||||
|
aDisplayer->Erase(myObject, false, false);
|
||||||
|
myIsHiddenMain = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int prevDisplayMode = aDisplayer->SetDisplayMode(0);
|
int prevDisplayMode = aDisplayer->SetDisplayMode(0);
|
||||||
|
|
||||||
|
@ -88,6 +88,8 @@ private:
|
|||||||
|
|
||||||
bool myWithShape;
|
bool myWithShape;
|
||||||
|
|
||||||
|
bool myIsHiddenMain;
|
||||||
|
|
||||||
DlgRef_1Sel1List1Check3Btn* GroupPoints;
|
DlgRef_1Sel1List1Check3Btn* GroupPoints;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -19,7 +19,6 @@
|
|||||||
//
|
//
|
||||||
// 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_Gluer2.cxx
|
// File: GEOMAlgo_Gluer2.cxx
|
||||||
// Author: Peter KURNEV
|
// Author: Peter KURNEV
|
||||||
|
|
||||||
|
@ -22,8 +22,7 @@
|
|||||||
// File: GEOMAlgo_Gluer2_3.cxx
|
// File: GEOMAlgo_Gluer2_3.cxx
|
||||||
// Created:
|
// Created:
|
||||||
// Author: Peter KURNEV
|
// Author: Peter KURNEV
|
||||||
// <peter@PREFEX>
|
|
||||||
//
|
|
||||||
#include <GEOMAlgo_Gluer2.hxx>
|
#include <GEOMAlgo_Gluer2.hxx>
|
||||||
|
|
||||||
#include <TopAbs_ShapeEnum.hxx>
|
#include <TopAbs_ShapeEnum.hxx>
|
||||||
@ -332,9 +331,11 @@ void MapShapes1(const TopoDS_Shape& aS,
|
|||||||
const TopAbs_ShapeEnum aType,
|
const TopAbs_ShapeEnum aType,
|
||||||
TopTools_IndexedMapOfShape& aM)
|
TopTools_IndexedMapOfShape& aM)
|
||||||
{
|
{
|
||||||
TopExp_Explorer aEx (aS, aType);
|
TopExp_Explorer aExp;
|
||||||
while (aEx.More()) {
|
|
||||||
const TopoDS_Shape aSx=aEx.Current();
|
aExp.Init (aS, aType);
|
||||||
|
for ( ;aExp.More(); aExp.Next()) {
|
||||||
|
const TopoDS_Shape aSx=aExp.Current();
|
||||||
if (aType==TopAbs_EDGE) {
|
if (aType==TopAbs_EDGE) {
|
||||||
const TopoDS_Edge& aEx=*((TopoDS_Edge*)&aSx);
|
const TopoDS_Edge& aEx=*((TopoDS_Edge*)&aSx);
|
||||||
if (BRep_Tool::Degenerated(aEx)) {
|
if (BRep_Tool::Degenerated(aEx)) {
|
||||||
@ -342,6 +343,29 @@ void MapShapes1(const TopoDS_Shape& aS,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
aM.Add(aSx);
|
aM.Add(aSx);
|
||||||
aEx.Next();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
//=======================================================================
|
||||||
|
//function : MapShapes1
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
void MapShapes1(const TopoDS_Shape& aS,
|
||||||
|
const TopAbs_ShapeEnum aType,
|
||||||
|
TopTools_IndexedMapOfShape& aM)
|
||||||
|
{
|
||||||
|
TopExp_Explorer aExp (aS, aType);
|
||||||
|
while (aExp.More()) {
|
||||||
|
const TopoDS_Shape aSx=aExp.Current();
|
||||||
|
if (aType==TopAbs_EDGE) {
|
||||||
|
const TopoDS_Edge& aEx=*((TopoDS_Edge*)&aSx);
|
||||||
|
if (BRep_Tool::Degenerated(aEx)) {
|
||||||
|
aExp.Next();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
aM.Add(aSx);
|
||||||
|
aExp.Next();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
@ -25,6 +25,8 @@
|
|||||||
#ifndef GEOM_GenericObjPtr_H
|
#ifndef GEOM_GenericObjPtr_H
|
||||||
#define GEOM_GenericObjPtr_H
|
#define GEOM_GenericObjPtr_H
|
||||||
|
|
||||||
|
#include "GEOM_GEOMBase.hxx"
|
||||||
|
|
||||||
#include "SALOMEconfig.h"
|
#include "SALOMEconfig.h"
|
||||||
#include CORBA_SERVER_HEADER(GEOM_Gen)
|
#include CORBA_SERVER_HEADER(GEOM_Gen)
|
||||||
|
|
||||||
@ -228,7 +230,7 @@ namespace GEOM
|
|||||||
typedef GenericObjPtr<GEOM::GEOM_IGroupOperations> GroupOpPtr;
|
typedef GenericObjPtr<GEOM::GEOM_IGroupOperations> GroupOpPtr;
|
||||||
typedef GenericObjPtr<GEOM::GEOM_IAdvancedOperations> AdvancedOpPtr;
|
typedef GenericObjPtr<GEOM::GEOM_IAdvancedOperations> AdvancedOpPtr;
|
||||||
|
|
||||||
template<> bool GenericObjPtr<GEOM::GEOM_Object>::isSame( GEOM::GEOM_Object_ptr theLeft, GEOM::GEOM_Object_ptr theRight );
|
template<> bool GEOMBASE_EXPORT GenericObjPtr<GEOM::GEOM_Object>::isSame( GEOM::GEOM_Object_ptr theLeft, GEOM::GEOM_Object_ptr theRight );
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // GEOM_GenericObjPtr_H
|
#endif // GEOM_GenericObjPtr_H
|
||||||
|
@ -55,7 +55,6 @@
|
|||||||
|
|
||||||
#define HST_CLIENT_LEN 256
|
#define HST_CLIENT_LEN 256
|
||||||
|
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
// function : Load()
|
// function : Load()
|
||||||
// purpose :
|
// purpose :
|
||||||
@ -105,10 +104,8 @@ GEOM_Client::GEOM_Client()
|
|||||||
//=======================================================================
|
//=======================================================================
|
||||||
GEOM_Client::GEOM_Client(const GEOM_Client& client)
|
GEOM_Client::GEOM_Client(const GEOM_Client& client)
|
||||||
{
|
{
|
||||||
myIORs = client.myIORs;
|
|
||||||
myShapes = client.myShapes;
|
|
||||||
_myIndexes = client._myIndexes;
|
|
||||||
_mySubShapes = client._mySubShapes;
|
_mySubShapes = client._mySubShapes;
|
||||||
|
myShapesMap = client.myShapesMap;
|
||||||
pid_client = client.pid_client;
|
pid_client = client.pid_client;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -142,30 +139,29 @@ GEOM_Client GEOM_Client::get_client()
|
|||||||
// function : Find()
|
// function : Find()
|
||||||
// purpose :
|
// purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
Standard_Integer GEOM_Client::Find( const TCollection_AsciiString& IOR, TopoDS_Shape& S )
|
Standard_Boolean GEOM_Client::Find (const TCollection_AsciiString& IOR, TopoDS_Shape& S)
|
||||||
{
|
{
|
||||||
if (_myIndexes.count(IOR) != 0)
|
if (myShapesMap.count(IOR) != 0) {
|
||||||
{
|
S = myShapesMap[IOR];
|
||||||
Standard_Integer i = _myIndexes[IOR];
|
return Standard_True;
|
||||||
S = myShapes.Value(i);
|
|
||||||
return i;
|
|
||||||
}
|
}
|
||||||
return 0;
|
return Standard_False;
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
// function : Find()
|
// function : Find()
|
||||||
// purpose :
|
// purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
Standard_Integer GEOM_Client::Find( const TopoDS_Shape& S, TCollection_AsciiString& IOR )
|
Standard_Boolean GEOM_Client::Find (const TopoDS_Shape& S, TCollection_AsciiString& IOR)
|
||||||
{
|
{
|
||||||
for ( Standard_Integer i = 1; i<= myShapes.Length(); i++ ) {
|
std::map< TCollection_AsciiString, TopoDS_Shape >::const_iterator it;
|
||||||
if (myShapes.Value(i) == S) {
|
for (it = myShapesMap.begin(); it != myShapesMap.end(); ++it) {
|
||||||
IOR = myIORs.Value(i);
|
if ((*it).second == S) {
|
||||||
return i;
|
IOR = (*it).first;
|
||||||
|
return Standard_True;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return Standard_False;
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@ -174,9 +170,7 @@ Standard_Integer GEOM_Client::Find( const TopoDS_Shape& S, TCollection_AsciiStri
|
|||||||
//=======================================================================
|
//=======================================================================
|
||||||
void GEOM_Client::Bind( const TCollection_AsciiString& IOR, const TopoDS_Shape& S )
|
void GEOM_Client::Bind( const TCollection_AsciiString& IOR, const TopoDS_Shape& S )
|
||||||
{
|
{
|
||||||
myIORs.Append(IOR);
|
myShapesMap[IOR] = S;
|
||||||
myShapes.Append(S);
|
|
||||||
_myIndexes[IOR] = myIORs.Length();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@ -185,15 +179,11 @@ void GEOM_Client::Bind( const TCollection_AsciiString& IOR, const TopoDS_Shape&
|
|||||||
//=======================================================================
|
//=======================================================================
|
||||||
void GEOM_Client::RemoveShapeFromBuffer( const TCollection_AsciiString& IOR)
|
void GEOM_Client::RemoveShapeFromBuffer( const TCollection_AsciiString& IOR)
|
||||||
{
|
{
|
||||||
if( myIORs.IsEmpty() )
|
if (myShapesMap.size() == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
TopoDS_Shape S;
|
if (myShapesMap.count(IOR) != 0) {
|
||||||
Standard_Integer anIndex = Find( IOR, S );
|
myShapesMap.erase(IOR);
|
||||||
if( anIndex != 0 ) {
|
|
||||||
myIORs.Remove(anIndex);
|
|
||||||
myShapes.Remove(anIndex);
|
|
||||||
_myIndexes.erase(IOR);
|
|
||||||
_mySubShapes.erase(IOR);
|
_mySubShapes.erase(IOR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -204,13 +194,11 @@ void GEOM_Client::RemoveShapeFromBuffer( const TCollection_AsciiString& IOR)
|
|||||||
//=======================================================================
|
//=======================================================================
|
||||||
void GEOM_Client::ClearClientBuffer()
|
void GEOM_Client::ClearClientBuffer()
|
||||||
{
|
{
|
||||||
if( myIORs.IsEmpty() )
|
if (myShapesMap.size() == 0)
|
||||||
return;
|
return;
|
||||||
myIORs.Clear();
|
|
||||||
myShapes.Clear();
|
|
||||||
_myIndexes.clear();
|
|
||||||
_mySubShapes.clear();
|
_mySubShapes.clear();
|
||||||
return;
|
myShapesMap.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@ -219,7 +207,7 @@ void GEOM_Client::ClearClientBuffer()
|
|||||||
//=======================================================================
|
//=======================================================================
|
||||||
unsigned int GEOM_Client::BufferLength()
|
unsigned int GEOM_Client::BufferLength()
|
||||||
{
|
{
|
||||||
return myIORs.Length();
|
return myShapesMap.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@ -231,9 +219,9 @@ TopoDS_Shape GEOM_Client::GetShape( GEOM::GEOM_Gen_ptr geom, GEOM::GEOM_Object_p
|
|||||||
TopoDS_Shape S;
|
TopoDS_Shape S;
|
||||||
CORBA::String_var anIOR = geom->GetStringFromIOR(aShape);
|
CORBA::String_var anIOR = geom->GetStringFromIOR(aShape);
|
||||||
TCollection_AsciiString IOR = (char*)anIOR.in();
|
TCollection_AsciiString IOR = (char*)anIOR.in();
|
||||||
Standard_Integer anIndex = Find(IOR, S);
|
Standard_Boolean anIndex = Find(IOR, S);
|
||||||
|
|
||||||
if (anIndex != 0) return S;
|
if (anIndex) return S;
|
||||||
|
|
||||||
/******* in case of a MAIN GEOM::SHAPE ********/
|
/******* in case of a MAIN GEOM::SHAPE ********/
|
||||||
if (aShape->IsMainShape()) {
|
if (aShape->IsMainShape()) {
|
||||||
@ -251,7 +239,7 @@ TopoDS_Shape GEOM_Client::GetShape( GEOM::GEOM_Gen_ptr geom, GEOM::GEOM_Object_p
|
|||||||
TCollection_AsciiString mainIOR = (char*)aMainIOR.in();
|
TCollection_AsciiString mainIOR = (char*)aMainIOR.in();
|
||||||
|
|
||||||
//find subshapes only one time
|
//find subshapes only one time
|
||||||
if(_mySubShapes.count(mainIOR)==0)
|
if (_mySubShapes.count(mainIOR) == 0)
|
||||||
{
|
{
|
||||||
TopTools_IndexedMapOfShape anIndices;
|
TopTools_IndexedMapOfShape anIndices;
|
||||||
TopExp::MapShapes(aMainShape, anIndices);
|
TopExp::MapShapes(aMainShape, anIndices);
|
||||||
|
@ -111,9 +111,9 @@ class GEOMCLIENT_EXPORT GEOM_Client {
|
|||||||
//Standard_EXPORT
|
//Standard_EXPORT
|
||||||
GEOM_Client(const GEOM_Client& client);
|
GEOM_Client(const GEOM_Client& client);
|
||||||
//Standard_EXPORT
|
//Standard_EXPORT
|
||||||
Standard_Integer Find( const TCollection_AsciiString& IOR, TopoDS_Shape& S ) ;
|
Standard_Boolean Find( const TCollection_AsciiString& IOR, TopoDS_Shape& S ) ;
|
||||||
//Standard_EXPORT
|
//Standard_EXPORT
|
||||||
Standard_Integer Find( const TopoDS_Shape& S, TCollection_AsciiString& IOR ) ;
|
Standard_Boolean Find( const TopoDS_Shape& S, TCollection_AsciiString& IOR ) ;
|
||||||
//Standard_EXPORT
|
//Standard_EXPORT
|
||||||
void Bind( const TCollection_AsciiString& IOR, const TopoDS_Shape& S ) ;
|
void Bind( const TCollection_AsciiString& IOR, const TopoDS_Shape& S ) ;
|
||||||
//Standard_EXPORT
|
//Standard_EXPORT
|
||||||
@ -134,10 +134,8 @@ class GEOMCLIENT_EXPORT GEOM_Client {
|
|||||||
private:
|
private:
|
||||||
// Fields PRIVATE
|
// Fields PRIVATE
|
||||||
//
|
//
|
||||||
TColStd_SequenceOfAsciiString myIORs ;
|
|
||||||
TopTools_SequenceOfShape myShapes ;
|
|
||||||
std::map< TCollection_AsciiString , int > _myIndexes;
|
|
||||||
std::map< TCollection_AsciiString , std::vector<TopoDS_Shape> > _mySubShapes;
|
std::map< TCollection_AsciiString , std::vector<TopoDS_Shape> > _mySubShapes;
|
||||||
|
std::map< TCollection_AsciiString , TopoDS_Shape > myShapesMap;
|
||||||
long pid_client;
|
long pid_client;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -4344,7 +4344,7 @@ Otherwise the dimensions will be kept without modifications.</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>GEOM_CURVE_ANALITICAL</source>
|
<source>GEOM_CURVE_ANALITICAL</source>
|
||||||
<translation>Analitical</translation>
|
<translation>Analytical</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -20,6 +20,14 @@
|
|||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#ifdef WNT
|
||||||
|
// E.A. : On windows with python 2.6, there is a conflict
|
||||||
|
// E.A. : between pymath.h and Standard_math.h which define
|
||||||
|
// E.A. : some same symbols : acosh, asinh, ...
|
||||||
|
#include <Standard_math.hxx>
|
||||||
|
#include <pymath.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <Python.h>
|
#include <Python.h>
|
||||||
#include <structmember.h>
|
#include <structmember.h>
|
||||||
|
|
||||||
@ -875,7 +883,7 @@ Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakeCurveParametric(const char*
|
|||||||
aPyScript += thezExpr;
|
aPyScript += thezExpr;
|
||||||
aPyScript += "\n";
|
aPyScript += "\n";
|
||||||
|
|
||||||
aPyScript +="def coordCalucator(tmin, tmax, tstep): \n";
|
aPyScript +="def coordCalculator(tmin, tmax, tstep): \n";
|
||||||
aPyScript +=" coords = [] \n";
|
aPyScript +=" coords = [] \n";
|
||||||
aPyScript +=" while tmin <= tmax : \n";
|
aPyScript +=" while tmin <= tmax : \n";
|
||||||
aPyScript +=" coords.append([X(tmin), Y(tmin), Z(tmin)]) \n";
|
aPyScript +=" coords.append([X(tmin), Y(tmin), Z(tmin)]) \n";
|
||||||
@ -909,7 +917,8 @@ Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakeCurveParametric(const char*
|
|||||||
PyObject* obj = PyRun_String(aPyScript.ToCString(), Py_file_input, main_dict, NULL);
|
PyObject* obj = PyRun_String(aPyScript.ToCString(), Py_file_input, main_dict, NULL);
|
||||||
|
|
||||||
if (obj == NULL) {
|
if (obj == NULL) {
|
||||||
SetErrorCode("Error during run python script !!!");
|
SetErrorCode("Error during executing of python script !!!");
|
||||||
|
PyErr_Print();
|
||||||
PyGILState_Release(gstate);
|
PyGILState_Release(gstate);
|
||||||
return NULL;
|
return NULL;
|
||||||
} else {
|
} else {
|
||||||
@ -917,7 +926,7 @@ Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakeCurveParametric(const char*
|
|||||||
}
|
}
|
||||||
|
|
||||||
PyObject * func = NULL;
|
PyObject * func = NULL;
|
||||||
func = PyObject_GetAttrString(main_mod, "coordCalucator");
|
func = PyObject_GetAttrString(main_mod, "coordCalculator");
|
||||||
|
|
||||||
if (func == NULL){
|
if (func == NULL){
|
||||||
SetErrorCode("Can't get function from python module !!!");
|
SetErrorCode("Can't get function from python module !!!");
|
||||||
@ -936,7 +945,7 @@ Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakeCurveParametric(const char*
|
|||||||
PyErr_Print();
|
PyErr_Print();
|
||||||
PySys_SetObject((char*)"stderr", PySys_GetObject((char*)"__stderr__"));
|
PySys_SetObject((char*)"stderr", PySys_GetObject((char*)"__stderr__"));
|
||||||
Py_DECREF(new_stderr);
|
Py_DECREF(new_stderr);
|
||||||
MESSAGE("Can't evaluate coordCalucator()" << " error is " << err_description);
|
MESSAGE("Can't evaluate coordCalculator()" << " error is " << err_description);
|
||||||
SetErrorCode("Can't evaluate the expressions, please check them !!!");
|
SetErrorCode("Can't evaluate the expressions, please check them !!!");
|
||||||
PyGILState_Release(gstate);
|
PyGILState_Release(gstate);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -789,7 +789,10 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const
|
|||||||
|
|
||||||
concatcurve->SetValue(concatcurve->Lower(), Concat.BSplineCurve());
|
concatcurve->SetValue(concatcurve->Lower(), Concat.BSplineCurve());
|
||||||
}
|
}
|
||||||
|
// rnc : prevents the driver from building an edge without C1 continuity
|
||||||
|
if (concatcurve->Value(concatcurve->Lower())->Continuity()==GeomAbs_C0){
|
||||||
|
Standard_ConstructionError::Raise("Construction aborted : The given Wire has sharp bends between some Edges, no valid Edge can be built");
|
||||||
|
}
|
||||||
ResEdge = BRepLib_MakeEdge(concatcurve->Value(concatcurve->Lower()),
|
ResEdge = BRepLib_MakeEdge(concatcurve->Value(concatcurve->Lower()),
|
||||||
FirstVertex, LastVertex);
|
FirstVertex, LastVertex);
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
|
||||||
|
|
||||||
// GEOM GEOMGUI : GUI for Geometry component
|
// GEOM GEOMGUI : GUI for Geometry component
|
||||||
// File : GroupGUI_GroupDlg.cxx
|
// File : GroupGUI_GroupDlg.cxx
|
||||||
@ -72,7 +71,8 @@ GroupGUI_GroupDlg::GroupGUI_GroupDlg (Mode mode, GeometryGUI* theGeometryGUI, QW
|
|||||||
: GEOMBase_Skeleton(theGeometryGUI, parent, false),
|
: GEOMBase_Skeleton(theGeometryGUI, parent, false),
|
||||||
myMode(mode),
|
myMode(mode),
|
||||||
myBusy(false),
|
myBusy(false),
|
||||||
myIsShapeType(false)
|
myIsShapeType(false),
|
||||||
|
myIsHiddenMain(false)
|
||||||
{
|
{
|
||||||
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
|
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
|
||||||
|
|
||||||
@ -184,6 +184,11 @@ GroupGUI_GroupDlg::GroupGUI_GroupDlg (Mode mode, GeometryGUI* theGeometryGUI, QW
|
|||||||
|
|
||||||
GroupGUI_GroupDlg::~GroupGUI_GroupDlg()
|
GroupGUI_GroupDlg::~GroupGUI_GroupDlg()
|
||||||
{
|
{
|
||||||
|
if (myIsHiddenMain) {
|
||||||
|
GEOM_Displayer* aDisplayer = getDisplayer();
|
||||||
|
aDisplayer->Display(myMainObj);
|
||||||
|
myIsHiddenMain = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
@ -461,6 +466,11 @@ void GroupGUI_GroupDlg::SelectionIntoArgument()
|
|||||||
GEOMBase::ConvertIOinGEOMObject(aSelList.First());
|
GEOMBase::ConvertIOinGEOMObject(aSelList.First());
|
||||||
|
|
||||||
if (GEOMBase::IsShape(anObj)) {
|
if (GEOMBase::IsShape(anObj)) {
|
||||||
|
if (myIsHiddenMain) {
|
||||||
|
GEOM_Displayer* aDisplayer = getDisplayer();
|
||||||
|
aDisplayer->Display(myMainObj);
|
||||||
|
myIsHiddenMain = false;
|
||||||
|
}
|
||||||
myMainObj = anObj;
|
myMainObj = anObj;
|
||||||
myEditCurrentArgument->setText(GEOMBase::GetName(anObj));
|
myEditCurrentArgument->setText(GEOMBase::GetName(anObj));
|
||||||
// activate subshapes selection by default
|
// activate subshapes selection by default
|
||||||
@ -470,6 +480,11 @@ void GroupGUI_GroupDlg::SelectionIntoArgument()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
if (myIsHiddenMain) {
|
||||||
|
GEOM_Displayer* aDisplayer = getDisplayer();
|
||||||
|
aDisplayer->Display(myMainObj);
|
||||||
|
myIsHiddenMain = false;
|
||||||
|
}
|
||||||
myMainObj = GEOM::GEOM_Object::_nil();
|
myMainObj = GEOM::GEOM_Object::_nil();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -788,7 +803,15 @@ void GroupGUI_GroupDlg::activateSelection()
|
|||||||
myIsShapeType) // check if shape type is already choosen by user
|
myIsShapeType) // check if shape type is already choosen by user
|
||||||
{
|
{
|
||||||
GEOM_Displayer* aDisplayer = getDisplayer();
|
GEOM_Displayer* aDisplayer = getDisplayer();
|
||||||
aDisplayer->Erase(myMainObj, false, false);
|
SALOME_View* view = GEOM_Displayer::GetActiveView();
|
||||||
|
if (view) {
|
||||||
|
CORBA::String_var aMainEntry = myMainObj->GetStudyEntry();
|
||||||
|
Handle(SALOME_InteractiveObject) io = new SALOME_InteractiveObject (aMainEntry.in(), "GEOM", "TEMP_IO");
|
||||||
|
if (view->isVisible(io)) {
|
||||||
|
aDisplayer->Erase(myMainObj, false, false);
|
||||||
|
myIsHiddenMain = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int prevDisplayMode = aDisplayer->SetDisplayMode(0);
|
int prevDisplayMode = aDisplayer->SetDisplayMode(0);
|
||||||
|
|
||||||
@ -909,7 +932,7 @@ void GroupGUI_GroupDlg::highlightSubShapes()
|
|||||||
int id = myIdList->item(ii)->text().toInt();
|
int id = myIdList->item(ii)->text().toInt();
|
||||||
if (subSelectionWay() != ALL_SUBSHAPES &&
|
if (subSelectionWay() != ALL_SUBSHAPES &&
|
||||||
!myMain2InPlaceIndices.IsBound(id)) {
|
!myMain2InPlaceIndices.IsBound(id)) {
|
||||||
myIdList->item(ii)->setSelected(false);
|
//myIdList->item(ii)->setSelected(false);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
anIds.Add(id);
|
anIds.Add(id);
|
||||||
|
@ -96,6 +96,7 @@ private:
|
|||||||
Mode myMode;
|
Mode myMode;
|
||||||
bool myBusy;
|
bool myBusy;
|
||||||
bool myIsShapeType;
|
bool myIsShapeType;
|
||||||
|
bool myIsHiddenMain;
|
||||||
GEOM::GEOM_Object_var myMainObj;
|
GEOM::GEOM_Object_var myMainObj;
|
||||||
GEOM::GEOM_Object_var myGroup;
|
GEOM::GEOM_Object_var myGroup;
|
||||||
GEOM::GEOM_Object_var myInPlaceObj;
|
GEOM::GEOM_Object_var myInPlaceObj;
|
||||||
|