Merging from V3_2_6pre4

This commit is contained in:
abd 2007-04-18 15:44:19 +00:00
parent fb35bf812d
commit a283b389c8
178 changed files with 12493 additions and 1224 deletions

View File

@ -350,7 +350,6 @@ echo
AC_OUTPUT_COMMANDS([ \
chmod +x ./bin/*; \
chmod +x ./bin/salome/*; \
])
# This list is initiated using autoscan and must be updated manually

View File

@ -16,14 +16,53 @@ if (navigator.appName !="Netscape")
<!--
img_whs1 { width:20px; height:20px; border-style:none; }
p.whs2 { font-size:12pt; }
p.whs3 { font-size:12pt; margin-left:40px; }
img_whs4 { border:none; width:312px; height:359px; float:none; border-style:none; }
p.whs5 { color:#808080; font-size:12pt; }
p.whs6 { font-size:12pt; color:#000000; }
p.whs7 { color:#808080; font-size:12pt; margin-left:40px; }
img_whs8 { border:none; width:330px; height:283px; float:none; border-style:none; }
p.whs3 { font-size:12pt; font-weight:normal; }
p.whs4 { font-size:12pt; margin-left:40px; }
img_whs5 { border:none; width:312px; height:359px; float:none; border-style:none; }
p.whs6 { color:#808080; font-size:12pt; }
p.whs7 { font-size:12pt; color:#000000; font-weight:normal; }
img_whs8 { border:none; width:400px; height:385px; float:none; border-style:none; }
p.whs9 { font-size:12pt; color:#000000; }
table.whs10 { x-cell-content-align:top; width:86.687%; border-spacing:0px; }
col.whs11 { width:38.452%; }
col.whs12 { width:28.09%; }
col.whs13 { width:16.729%; }
tr.whs14 { x-cell-content-align:top; }
td.whs15 { width:38.452%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-right-style:none; border-left-style:none; border-top-style:none; }
td.whs16 { width:28.09%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-right-style:none; border-top-style:none; }
td.whs17 { width:16.729%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-top-style:none; border-right-style:none; }
td.whs18 { width:38.452%; padding-right:10px; padding-left:10px; border-right-style:none; border-left-style:none; border-bottom-style:none; }
img_whs19 { border:none; float:none; width:316px; height:270px; border-style:none; }
td.whs20 { width:28.09%; padding-right:10px; padding-left:10px; border-right-style:none; border-bottom-style:none; }
img_whs21 { border:none; width:212px; height:270px; float:none; border-style:none; }
td.whs22 { width:16.729%; padding-right:10px; padding-left:10px; border-right-style:none; border-bottom-style:none; }
table.whs23 { x-cell-content-align:top; width:100%; border-spacing:0px; }
col.whs24 { width:100%; }
tr.whs25 { x-cell-content-align:top; height:40px; }
td.whs26 { width:100%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-left-style:none; border-top-style:none; border-right-style:none; }
p.whs27 { margin-right:-6px; }
tr.whs28 { x-cell-content-align:top; height:22px; }
td.whs29 { width:100%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-left-style:none; border-right-style:none; }
tr.whs30 { x-cell-content-align:top; height:41px; }
tr.whs31 { x-cell-content-align:top; height:30px; }
td.whs32 { width:100%; padding-right:10px; padding-left:10px; border-left-style:none; border-bottom-style:none; border-right-style:none; }
p.whs33 { margin-left:0px; }
img_whs34 { border:none; float:none; border-style:none; width:318px; height:269px; }
p.whs35 { color:#808080; font-size:12pt; margin-left:40px; }
-->
</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
</style><script type="text/javascript" language="JavaScript">
<!--
if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
{
var strNSS = "<style type='text/css'>";
strNSS += "p.whs27 {margin-right:1pt; }";
strNSS += "p.whs33 {margin-left:1pt; }";
strNSS +="</style>";
document.write(strNSS);
}
//-->
</script>
<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
<!--
function reDo() {
if (innerWidth != origWidth || innerHeight != origHeight)
@ -91,39 +130,128 @@ if (window.writeIntopicBar)
<p class="whs2">&nbsp;</p>
<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">You
can define an</span> Arc <span style="font-weight: normal;">by</span>
<span style="font-weight: normal;">three</span><span style="font-weight: bold;"><B>
Points </B></span><span style="font-weight: normal;">that lie on it, where
</span></b>Point1 is the starting point, Point2 is a middle point of the
arc and Point3 is the ending point of the arc.</p>
<p class="whs3"><b style="font-weight: bold;"><span
style="font-weight: normal;">There are 2 algorithms to create an </span><span
style="font-weight: bold;"><B>Arc</B></span><span style="font-weight: normal;">
in the 3D space. </span></b></p>
<p class="whs2"><b><span style="font-weight: normal;">The</span>
Result <span style="font-weight: normal;">of the operation will be a</span></b><b>
<span style="font-weight: normal;">GEOM_Object (edge).</span></b></p>
<p class="whs2"><b><span style="font-weight: normal;">The Result
of each operation will be a</span></b><b> <span style="font-weight: normal;">GEOM_Object
(edge).</span></b></p>
<p class="whs2">&nbsp;</p>
<p class="whs2"><b style="font-weight: bold;">TUI Command:</b>
<span style="font-style: italic;"><I>geompy.MakeArc(Point1, Point2, Point3)</I></span></p>
<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">Firstly,
you can define an</span> Arc <span style="font-weight: normal;">by</span>
<span style="font-weight: normal;">three</span><span style="font-weight: bold;"><B>
Points </B></span><span style="font-weight: normal;">that lie on it, where
</span></b>Point1
is the starting point, Point2
is a middle point of the arc and Point3
is the ending point of the arc.</p>
<p class="whs2"><b style="font-weight: bold;">TUI
Command:</b> <span style="font-style: italic;"><I>geompy.MakeArc(Point1,
Point2, Point3)</I></span></p>
<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
Name + 3 vertices.</p>
<p class="whs2">&nbsp;</p>
<p class="whs3"><img src="pics/arc.png" x-maintain-ratio="TRUE" width="312px" height="359px" border="0" class="img_whs4"></p>
<p class="whs4"><img src="pics/arc.png" x-maintain-ratio="TRUE" width="312px" height="359px" border="0" class="img_whs5"></p>
<p class="whs5">&nbsp;</p>
<p class="whs6">&nbsp;</p>
<p class="whs6"><b style="font-weight: bold;">Example:</b></p>
<p class="whs7"><b style="font-weight: normal;">Secondly,
you can define an <span style="font-weight: bold;"><B>Arc</B></span> by </b><span
style="font-weight: bold;"><B>Center, Start</B></span> and <span style="font-weight: bold;"><B>End</B></span>
points. The arc is built from the <span style="font-weight: bold;"><B>Start</B></span>
point to the <span style="font-weight: bold;"><B>End</B></span> point. The radius
of the arc is defined by the distance between the <span style="font-weight: bold;"><B>Center</B></span>
point and the <span style="font-weight: bold;"><B>Start</B></span> point. The
<span style="font-weight: bold;"><B>End</B></span> point defines the angle of
the arc. If the distance between the <span style="font-weight: bold;"><B>Center</B></span>
point and the <span style="font-weight: bold;"><B>End</B></span> point is not
equal to the radius, the arc will be built anyway.</p>
<p class="whs5">&nbsp;</p>
<p class="whs7"><span style="font-weight: bold;"><B>Reverse</B></span>
radio button allows to change the direction of the arc.</p>
<p class="whs7"><img src="pics/arcsn.png" x-maintain-ratio="TRUE" width="330px" height="283px" border="0" class="img_whs8"></p>
<p class="whs7"><b style="font-weight: bold;">TUI Command:</b>
<span style="font-style: italic;"><I>geompy.MakeArcCenter(Center Point, Start
Point, End Point, boolean Sense)</I></span></p>
<p class="whs7"><span style="font-style: italic;"><I><b
style="font-weight: bold;">A</I></span>rguments:</b> Name + 3 vertices + Boolean.</p>
<p class="whs7">&nbsp;</p>
<p class="whs4"><img src="pics/arc2.png" x-maintain-ratio="TRUE" width="400px" height="385px" border="0" class="img_whs8"></p>
<p class="whs9">&nbsp;</p>
<p class="whs9"><b style="font-weight: bold;">Example:</b></p>
<p class="whs9">&nbsp;</p>
<table x-use-null-cells cellspacing="0" width="86.687%" class="whs10">
<col class="whs11">
<col class="whs12">
<col class="whs13">
<col class="whs13">
<tr valign="top" class="whs14">
<td width="38.452%" class="whs15">
<p>Arc by three points lying on it.</td>
<td width="28.09%" class="whs16">
<p>Arc by Start, End and Center.</td>
<td colspan="1" rowspan="1" width="16.729%" class="whs17">
<p>&nbsp;</td>
<td width="16.729%" class="whs17">
<p>Reversed arc.</td></tr>
<tr valign="top" class="whs14">
<td width="38.452%" class="whs18">
<p class="whs6"><img src="pics/arcsn.png" x-maintain-ratio="TRUE" width="316px" height="270px" border="0" class="img_whs19"></td>
<td width="28.09%" class="whs20">
<p><img src="pics/arcsn1.png" x-maintain-ratio="TRUE" width="212px" height="270px" border="0" class="img_whs21"></td>
<td colspan="1" rowspan="1" width="16.729%" class="whs22">
<table x-use-null-cells cellspacing="0" width="100%" class="whs23">
<col class="whs24">
<tr valign="top" class="whs25">
<td width="100%" class="whs26">
<p class="whs27">Start Point</td></tr>
<tr valign="top" class="whs28">
<td width="100%" class="whs29">
<p>&nbsp;</td></tr>
<tr valign="top" class="whs30">
<td width="100%" class="whs29">
<p>&nbsp;</td></tr>
<tr valign="top" class="whs25">
<td width="100%" class="whs29">
<p>Center Point</td></tr>
<tr valign="top" class="whs31">
<td width="100%" class="whs29">
<p>&nbsp;</td></tr>
<tr valign="top" class="whs25">
<td width="100%" class="whs32">
<p>End Point</td></tr>
</table>
<p class="whs33">&nbsp;</p>
<p>&nbsp;</td>
<td width="16.729%" class="whs22">
<p><img src="pics/arcsn2.png" x-maintain-ratio="TRUE" width="318px" height="269px" border="0" class="img_whs34"></td></tr>
</table>
<p class="whs35">&nbsp;</p>
<p class="whs2">Our TUI Scripts provide you with useful examples
of creation of <a href="basic_geometrical_objects.htm">Basic Geometric
Objects</a>. </p>

View File

@ -217,6 +217,7 @@ image56.gif
files\salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image73.gif
files\salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image4.gif
salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image17.gif
pics\view_rotation_point.png
pics\clipping.png
pics\image98.gif
pics\archimedesn1.png
@ -317,7 +318,6 @@ pics\sectionsn.png
pics\fusesn2.png
pics\toruses.png
pics\circles.png
pics\neo-materials.png
pics\neo-obj3.png
pics\neo-localcs2.png
pics\measures1.png
@ -332,6 +332,7 @@ image29.gif
image160.jpg
files\salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image133.gif
files\salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image34.gif
pics\partition2.png
pics\changeorientation.png
pics\pipesn.png
pics\pipe_wire_edgesn.png
@ -347,7 +348,6 @@ pics\neo-obj4.png
pics\neo-localcs3.png
pics\repair4.png
pics\bool2.png
pics\partition2.png
pics\block5.png
pics\sphere2.png
pics\point1.png
@ -367,6 +367,7 @@ pics\ellipse.png
pics\circle1.png
image3.gif
files\salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image56.gif
pics\set_rotation_point_dialog1.png
pics\extrusion1.png
image4.gif
pics\isos_u12_v12sn.png
@ -387,6 +388,7 @@ pics\circle2.png
pics\point3.png
image185.jpg
files\salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image57.gif
pics\set_rotation_point_dialog2.png
pics\extrusion2.png
image5.gif
pics\free_boudaries2.png
@ -457,6 +459,7 @@ files\salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image122.g
files\salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image100.gif
files\salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image99.gif
salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image13.gif
pics\transformation4a.png
pics\image100.gif
pics\geomcreategroup.png
pics\commonsn.png

BIN
doc/salome/gui/GEOM/image2.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
doc/salome/gui/GEOM/image34.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
doc/salome/gui/GEOM/image36.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
doc/salome/gui/GEOM/image47.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -1,258 +0,0 @@
<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
<html>
<head>
<title>OCC_Viewer</title>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">
<!--
if (navigator.appName !="Netscape")
{ document.write("<link rel='stylesheet' href='default.css'>");}
//-->
</script>
<style type="text/css">
<!--
img_whs1 { border:none; width:313px; height:26px; float:none; }
ul.whs2 { list-style:disc; }
img_whs3 { border:none; width:26px; height:25px; float:none; border-style:none; }
img_whs4 { border:none; width:27px; height:25px; float:none; border-style:none; }
img_whs5 { border:none; width:24px; height:23px; float:none; border-style:none; }
img_whs6 { border:none; width:24px; height:24px; float:none; border-style:none; }
img_whs7 { border:none; width:25px; height:24px; float:none; border-style:none; }
img_whs8 { border:none; width:23px; height:23px; float:none; border-style:none; }
p.whs9 { margin-top:0pt; margin-bottom:0pt; }
img_whs10 { border:none; border-style:none; width:20px; height:20px; float:none; }
p.whs11 { margin-left:80px; }
img_whs12 { border:none; border-style:none; width:410px; height:255px; float:none; }
img_whs13 { border:none; width:26px; height:26px; float:none; border-style:none; }
img_whs14 { border:none; width:78px; height:147px; float:none; border-style:none; }
img_whs15 { border:none; height:26px; float:none; width:29px; border-style:none; }
img_whs16 { border:none; width:26px; height:24px; float:none; border-style:none; }
img_whs17 { border:none; width:28px; height:29px; float:none; border-style:none; }
img_whs18 { border:none; width:29px; height:26px; float:none; border-style:none; }
img_whs19 { border:none; width:395px; height:280px; float:none; border-style:none; }
p.whs20 { margin-left:40px; }
p.whs21 { margin-left:84px; }
-->
</style><script type="text/javascript" language="JavaScript">
<!--
if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
{
var strNSS = "<style type='text/css'>";
strNSS += "p.whs9 {margin-top:1pt;margin-bottom:1pt; }";
strNSS +="</style>";
document.write(strNSS);
}
//-->
</script>
<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
<!--
function reDo() {
if (innerWidth != origWidth || innerHeight != origHeight)
location.reload();
}
if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
origWidth = innerWidth;
origHeight = innerHeight;
onresize = reDo;
}
onerror = null;
//-->
</script>
<style type="text/css">
<!--
div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
p.WebHelpNavBar { text-align:right; }
-->
</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
<script type="text/javascript" language="javascript" src="whver.js"></script>
<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
<script type="text/javascript" language="javascript1.2">
<!--
if (window.gbWhTopic)
{
if (window.setRelStartPage)
{
addTocInfo("Geometry module\nViewing geometrical objects\nOCC 3D Viewer");
addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
}
if (window.setRelStartPage)
{
setRelStartPage("index.htm");
autoSync(1);
sendSyncInfo();
sendAveInfoOut();
}
}
else
if (window.gbIE4)
document.location.reload();
//-->
</script>
</head>
<body><script type="text/javascript" language="javascript1.2">
<!--
if (window.writeIntopicBar)
writeIntopicBar(4);
//-->
</script>
<h1>OCC 3D Viewer</h1>
<p><span style="font-weight: bold;"><B>OCC (Open CasCade) 3D viewer</B></span>
has been developed on the basis of Open CASCADE Technology. This is the
default viewer for Geometry Module, providing good representation of construction
and transformation of geometrical objects. Only this viewer allows to
work with groups and sub-shapes. This viewer can also work in Mesh module,
however, it doesn't allow to visualize meshes. </p>
<p>&nbsp;</p>
<p>The functions of OCC viewer are available via its Viewer Toolbar. Buttons
marked with small downward triangles have extended functionality which
can be accessed by locking on them with left mouse button. &nbsp;</p>
<p>&nbsp;</p>
<p><img src="pics/image95.gif" x-maintain-ratio="TRUE" width="313px" height="26px" border="0" class="img_whs1"></p>
<p>&nbsp;</p>
<ul type="disc" class="whs2">
<li class=kadov-p><p><img src="pics/image77.gif" x-maintain-ratio="TRUE" width="26px" height="25px" border="0" class="img_whs3"> <span style="font-weight: bold;"><B>Dump
View</B></span> - exports an object from the viewer in bmp, png, jpg or jpeg
image format. </p></li>
<li class=kadov-p><p><img src="pics/image88.gif" x-maintain-ratio="TRUE" width="27px" height="25px" border="0" class="img_whs4"> <span style="font-weight: bold;"><B>Show/Hide
Trihedron</B></span> - shows or hides coordinate axes. </p></li>
<li class=kadov-p><p><img src="pics/image96.gif" x-maintain-ratio="TRUE" width="24px" height="23px" border="0" class="img_whs5"> &nbsp;<span
style="font-weight: bold;"><B>Fit all - </B></span>allows
to select a point to be the center of a scene representing all displayed
objects in the visible area.<span style="font-weight: bold;"> <B></B></span></p></li>
<li class=kadov-p><p>&nbsp;<img src="pics/image97.gif" x-maintain-ratio="TRUE" width="24px" height="24px" border="0" class="img_whs6"> <span style="font-weight: bold;"><B>Fit area</B></span> - resizes
the view to place in the visible area only the contents of a frame drawn
with pressed left mouse button.</p></li>
<li class=kadov-p><p><img src="pics/image98.gif" x-maintain-ratio="TRUE" width="25px" height="24px" border="0" class="img_whs7"> <span style="font-weight: bold;"><B>Zoom</B></span>
- &nbsp;allows
to zoom in and out. </p></li>
<li class=kadov-p><p><img src="pics/image99.gif" x-maintain-ratio="TRUE" width="23px" height="23px" border="0" class="img_whs8"> <span style="font-weight: bold;"><B>Panning</B></span>
- if the represented objects are greater that the visible area and you
don't wish to use <span style="font-weight: bold;"><B>Fit all</B></span> functionality,
click on this button and you'll be able to drag the scene to see its remote
parts. </p></li>
<li class=kadov-p><p><img src="pics/image100.gif" x-maintain-ratio="TRUE" width="24px" height="24px" border="0" class="img_whs6"> <span style="font-weight: bold;"><B>Global
panning</B></span> - represents all displayed objects in the visible area.
</p></li>
</ul>
<ul type="disc" class="whs2">
<li class=kadov-p><p class="whs9"><img src="pics/view_rotation_point.png" x-maintain-ratio="TRUE" width="20px" height="20px" border="0" class="img_whs10"> <span style="font-weight: bold;"><B>Change rotation point</B></span>
- allows to to choose the point around which the rotation is performed</p></li>
</ul>
<p class="whs11"><img src="pics/set_rotation_point_dialog1.png" x-maintain-ratio="TRUE" width="410px" height="255px" border="0" class="img_whs12"></p>
<p class="whs11">&nbsp;</p>
<p class="whs11">By default the rotation point is located
in the Center of the bounding box of an object. </p>
<p class="whs11">&nbsp;</p>
<p class="whs11"><img src="pics/set_rotation_point_dialog2.png" x-maintain-ratio="TRUE" width="410px" height="255px" border="0" class="img_whs12"></p>
<p class="whs11">&nbsp;</p>
<p class="whs11">Unchecking <span style="font-weight: bold;"><B>Use
Bounding Box Center</B></span> box allows you to define the coordinates of
the rotation point manually. </p>
<p class="whs11">&nbsp;</p>
<p class="whs11"><span style="font-weight: bold;"><B>Set to Origin</B></span>
button restores the default rotation point coordinates.</p>
<p class="whs11"><span style="font-weight: bold;"><B>Select Point
from View</B></span> button allows to select the rotation point in the 3D
Viewer</p>
<p>&nbsp;</p>
<ul type="disc" class="whs2">
<li class=kadov-p><p><img src="pics/image89.gif" x-maintain-ratio="TRUE" width="26px" height="26px" border="0" class="img_whs13"> <span style="font-weight: bold;"><B>Rotation</B></span>
- allows to rotate the selected object using the mouse. </p></li>
<li class=kadov-p><p><img src="pics/image102.gif" x-maintain-ratio="TRUE" width="78px" height="147px" border="0" class="img_whs14"> These buttons orientate the scene
strictly about coordinate axes.</p></li>
<li class=kadov-p><p><img src="pics/image91.gif" x-maintain-ratio="TRUE" height="26px" width="29px" border="0" class="img_whs15"> <span style="font-weight: bold;"><B>Reset</B></span>
- restores the default position (isometric) of objects in the scene.</p></li>
<li class=kadov-p><p><img src="pics/image103.gif" x-maintain-ratio="TRUE" width="26px" height="24px" border="0" class="img_whs16"> <span style="font-weight: bold;"><B>Memorise
view</B></span> - saves the current position of objects in the scene</p></li>
<li class=kadov-p><p><img src="pics/image105.gif" x-maintain-ratio="TRUE" width="26px" height="25px" border="0" class="img_whs3"> <span style="font-weight: bold;"><B>Restore
view - </B></span>restores the<span style="font-weight: bold;"> <B></B></span>saved
position of objects in the scene</p></li>
<li class=kadov-p><p><img src="pics/image86.gif" x-maintain-ratio="TRUE" width="28px" height="29px" border="0" class="img_whs17"> <span style="font-weight: bold;"><B>Clone
view</B></span> - opens a new duplicate scene.</p></li>
<li class=kadov-p><p><img src="pics/image106.gif" x-maintain-ratio="TRUE" width="29px" height="26px" border="0" class="img_whs18"> <span style="font-weight: bold;"><B>Clipping
-</B></span> allows to create cross-section views (clipping planes) of geometrical
objects.</p></li>
</ul>
<p>&nbsp;</p>
<p class="whs11"><img src="pics/clipping.png" x-maintain-ratio="TRUE" width="395px" height="280px" border="0" class="img_whs19"></p>
<p class="whs20">&nbsp;</p>
<ul type="disc" class="whs2">
<li class=kadov-p><p class="whs20"><span style="font-weight: bold;"><B>Base
point</B></span> - allows to define the coordinates of the base point for
the clipping plane. Click </p></li>
<li class=kadov-p><p class="whs21"><span style="font-weight: bold;"><B>Reset</B></span>
- returns the base point to coordinate origin. </p></li>
<li class=kadov-p><p class="whs20"><span style="font-weight: bold;"><B>Direction</B></span>
- allows to define the orientation of the clipping plane.</p></li>
<li class=kadov-p><p class="whs21"><span style="font-weight: bold;"><B>Invert</B></span>
- allows to select which part of the object will be removed and which
will remain after clipping. </p></li>
<li class=kadov-p><p class="whs20"><span style="font-weight: bold;"><B>Preview</B></span>
- allows to see the results of clipping in the viewer.</p></li>
</ul>
<p>&nbsp;</p>
<script type="text/javascript" language="javascript1.2">
<!--
if (window.writeIntopicBar)
writeIntopicBar(0);
//-->
</script>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 984 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1022 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1017 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1000 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1020 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1010 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -21,7 +21,8 @@ p.whs4 { font-size:12pt; font-weight:bold; }
p.whs5 { font-size:12pt; margin-left:40px; }
img_whs6 { border:none; width:312px; height:324px; float:none; border-style:none; }
img_whs7 { border:none; width:312px; height:358px; float:none; border-style:none; }
img_whs8 { border:none; width:298px; height:302px; float:none; border-style:none; }
p.whs8 { font-size:12pt; margin-left:40px; font-weight:bold; }
img_whs9 { border:none; width:156px; height:203px; }
-->
</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
<!--
@ -137,7 +138,7 @@ if (window.writeIntopicBar)
<p class="whs2">&nbsp;</p>
<p class="whs5"><b style="font-weight: bold;"><img src="pics/vectors.png" x-maintain-ratio="TRUE" width="298px" height="302px" border="0" class="img_whs8"></b></p>
<p class="whs8"><img src="image34.gif" width="156px" height="203px" border="0" class="img_whs9"></p>
<p class="whs2">&nbsp;</p>

View File

@ -19,6 +19,7 @@ ul.whs2 { list-style:disc; }
p.whs3 { font-weight:bold; }
img_whs4 { border:none; width:26px; height:26px; border-style:none; }
img_whs5 { border:none; width:23px; height:24px; border-style:none; }
img_whs6 { border:none; width:279px; height:230px; border-style:none; }
-->
</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
<!--
@ -82,11 +83,13 @@ if (window.writeIntopicBar)
<h1>Viewing Geometrical Objects</h1>
<p>Newly created geometrical objects are automatically displayed in the
<span style="font-weight: bold;"><B><a href="occ_viewer.htm">OCC 3D Viewer</a></B></span>.
</p>
<span style="font-weight: bold;"><B>OCC 3D Viewer</B></span>. </p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;"><B>OCC 3D Viewer</B></span> is described in
the documentation on <span style="font-weight: bold;"><B>GUI module</B></span>.</p>
<p>After the object has appeared in the Viewer, you can select it with
left mouse click to change its presentation parameters and access to other
useful options by right-clicking on the selected object<span style="font-weight: bold;"><B>.</B></span></p>
@ -136,8 +139,9 @@ if (window.writeIntopicBar)
all recent changes.</p></li>
<li class=kadov-p><p><span style="font-weight: bold;"><B>Dump view</B></span>
- exports an object from the viewer in bmp, png, jpg or jpeg image format.
</p></li>
- exports an object from the viewer in bmp,
png, jpg or
jpeg image format. </p></li>
<li class=kadov-p><p><span style="font-weight: bold;"><B>Change background</B></span>
- allows to redefine the background color. By default it is black. &nbsp;</p></li>
@ -145,6 +149,26 @@ if (window.writeIntopicBar)
<p>&nbsp;</p>
<p>Some of these functionalities are available through right-clicking on
the viewer background:</p>
<p>&nbsp;</p>
<p><img src="image2.jpg" width="279px" height="230px" border="0" class="img_whs6"></p>
<p>&nbsp;</p>
<ul type="disc" class="whs2">
<li class=kadov-p><p><span style="font-weight: bold;"><B>Select Only</B></span>
provides a filter for exclusive selection of objects of a certain type.
</p></li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
<script type="text/javascript" language="javascript1.2">
<!--
if (window.writeIntopicBar)

View File

@ -48,7 +48,7 @@ aWE("23",44);
aWE("25",3,5,6,57,74);
aWE("250",37,44,59,68);
aWE("2d",5,35,59,65,74,31);
aWE("3",1,2,5,7,11,14,18,20,37,40,44,48,55,56,59,67,74,75,31,78);
aWE("3",1,2,5,7,11,14,18,20,37,40,44,48,55,56,59,61,67,74,75,31,78);
aWE("30",3,8,11,18,37,44,57,59,68,74);
aWE("300",37,68);
aWE("300000",44);
@ -56,7 +56,7 @@ aWE("31",11);
aWE("32",59);
aWE("32000",44);
aWE("35",6,8,57,59,74);
aWE("3d",14,21,35,43,51,53,55,56,59,65,71,31,33,78,79,81,83);
aWE("3d",14,21,35,43,51,55,56,59,65,71,31,33,78,79,81,83);
aWE("4",50,37,40,44,48,67,74,31);
aWE("40",6,8,18,37,57,59,74);
aWE("41",59);
@ -87,16 +87,16 @@ aWE("addobject",40,83);
aWE("addtostudy",3,4,5,6,8,11,18,37,40,57,59,68,74);
aWE("addtostudyinfath",5,59);
aWE("advanc",7,19,24,28,29,37,66,69,70,80);
aWE("algorithm",7,14,20,21,23,28,43,46,53,55,56,67,70,77,78,82);
aWE("algorithm",7,14,20,21,23,28,43,46,55,56,61,67,70,77,78,82);
aWE("all_fac",59);
aWE("allow",50,9,26,45,46,47,51,61,64,65,67,72,75,33,79);
aWE("allow",50,9,26,43,45,46,47,51,53,61,64,65,67,72,75,33,79);
aWE("along",7,9,46,49,52,54,74,75);
aWE("alongsid",31);
aWE("already",40);
aWE("although",46);
aWE("angl",47,59,60,61,65,67,74);
aWE("anoth",22,42,55,56,70,74);
aWE("any",53,61,65,75);
aWE("any",43,53,61,65,75);
aWE("ap",43,74,83);
aWE("appear",79,83);
aWE("append",18,37,74);
@ -110,14 +110,14 @@ aWE("arc2",18);
aWE("archimed",2,4);
aWE("area",44,51);
aWE("argument",0,1,2,50,7,9,10,14,15,17,19,20,21,22,23,24,25,26,27,28,29,34,35,36,39,41,42,43,45,46,47,48,49,52,53,54,55,56,58,60,61,62,63,64,66,67,69,70,71,72,73,75,77,31,78,80,82,83);
aWE("around",47,60,74);
aWE("around",47,51,60,74);
aWE("automatical",50,43,79);
aWE("availabl",0,50,15,32,51,67,71,72,73,83);
aWE("ax",7,43,49,51,75);
aWE("axi",18,20,23,43,45,46,47,60,61,74,33);
aWE("b",3,21,65);
aWE("background",79);
aWE("bas",20,23,28,47,51,54,59,60,62,65,75,77);
aWE("bas",20,23,28,43,47,51,54,59,60,62,65,75,77);
aWE("baseshap",54);
aWE("basi",28,51);
aWE("basic",1,2,3,4,14,21,25,38,30,42,43,44,53,55,56,67,33,78,82);
@ -136,11 +136,11 @@ aWE("bmp",51,79);
aWE("boolean",6,17,22,36,38,30,63,31,33);
aWE("both",7,20,48,49,65);
aWE("boudari",59);
aWE("bound",8,37,44,33);
aWE("bound",8,37,44,51,33);
aWE("boundari",12,59,64,72);
aWE("boundary",12,59,73);
aWE("boundingbox",44,33);
aWE("box",4,50,5,7,11,16,22,27,40,32,44,57,59,65,67,73,74,76,33,80,83);
aWE("box",4,50,5,7,11,16,22,27,40,32,44,51,53,57,59,65,67,73,74,76,33,80,83);
aWE("box_tr1",5);
aWE("box_tr2",5);
aWE("box1",44,57,59);
@ -160,15 +160,17 @@ aWE("c0",65);
aWE("c1",65);
aWE("c2",65);
aWE("cad",38,30);
aWE("calculat",33);
aWE("calculat",43,33);
aWE("camera",82);
aWE("cas",50,43,48,73);
aWE("cas",50,43,48,61,73);
aWE("cascad",51);
aWE("catia",32);
aWE("cent",7,14,20,25,44,46,47,51,67,70,77,33);
aWE("cc",51);
aWE("cent",7,14,20,25,44,46,47,51,67,70,74,77,33);
aWE("center",26);
aWE("centerofscal",62);
aWE("central",20,23,62,65);
aWE("central",20,23,61,62,65);
aWE("centralpoint",61);
aWE("certain",65,83);
aWE("chain",5);
aWE("chamf",9,74);
@ -176,15 +178,15 @@ aWE("chamfer_",74);
aWE("chamfer_all",74);
aWE("chamfer_f",74);
aWE("chamfer_f1",74);
aWE("chang",10,11,16,41,76,79,81);
aWE("chang",10,11,16,41,51,76,79,81);
aWE("changeorientation",10);
aWE("check",12,13,27,29,44,59,65,73,33);
aWE("check_box",5);
aWE("checkbox",10,45,46,47,61,72,75,33);
aWE("checkcompoundofblock",44,33);
aWE("checkshap",44,59);
aWE("checkshap",44,59,33);
aWE("choic",21);
aWE("choos",27,32,43);
aWE("choos",27,32,43,51,53);
aWE("circl",3,14,67);
aWE("circle1",3);
aWE("circle2",3);
@ -225,7 +227,7 @@ aWE("consider",15,39,33);
aWE("consol",33);
aWE("constraint",50);
aWE("construct",50,69);
aWE("construction",21,38,30,51,31);
aWE("construction",21,38,30,43,51,31);
aWE("contain",0,13,15,58);
aWE("content",40,32,51);
aWE("continuiti",65);
@ -237,7 +239,7 @@ aWE("contour",15,59);
aWE("conversion",65);
aWE("convert",65);
aWE("coord",44);
aWE("coordinat",7,20,23,26,43,44,46,51,56,67,70,74,75,77,33,78,82);
aWE("coordinat",7,20,23,26,43,44,46,51,55,56,67,70,74,75,77,33,78,82);
aWE("copy",10,45,46,61,75);
aWE("corn",65);
aWE("corner",7,8);
@ -253,11 +255,10 @@ aWE("creategroup",40,83);
aWE("creation",1,3,7,14,15,18,19,20,21,23,24,25,28,29,35,37,38,40,30,42,54,55,56,57,59,60,66,69,70,77,78,80,83);
aWE("criteria",5);
aWE("cros",51);
aWE("cs",43);
aWE("cs1",74);
aWE("cs2",74);
aWE("cub",46);
aWE("current",7,42,51,67,70);
aWE("current",7,42,51,53,67,70);
aWE("curv",3,21,35,65,67);
aWE("curvatur",65);
aWE("curve2dmod",65);
@ -281,17 +282,20 @@ aWE("defin",1,7,9,14,20,21,23,25,26,27,28,34,35,32,42,43,47,48,49,51,54,55,56,60
aWE("definit",72);
aWE("definition",54);
aWE("deflection",2);
aWE("defn",61);
aWE("degenerat",33);
aWE("degre",35,60,65,67);
aWE("delet",53,83);
aWE("delet",83);
aWE("density",2);
aWE("depend",48,65);
aWE("derivativ",65);
aWE("descr",44);
aWE("describ",79);
aWE("description",50,44,67,68,33);
aWE("design",83);
aWE("destin",38,30);
aWE("destination",67);
aWE("detail",79);
aWE("detect",12,64,72);
aWE("detection",65);
aWE("develop",51);
@ -302,7 +306,7 @@ aWE("dimension",7,9,23,28,47,33);
aWE("dir",47,49);
aWE("dir1",49);
aWE("dir2",49);
aWE("direct",43);
aWE("direct",43,61);
aWE("direction",2,14,20,25,28,43,47,48,49,51,60,61,65,67,77);
aWE("dirfaceid1",48);
aWE("dirfaceid1u",48);
@ -315,6 +319,7 @@ aWE("displayon",79);
aWE("distanc",39,44,52,65,33);
aWE("divid",0,59);
aWE("divideedg",0,59);
aWE("documentation",79);
aWE("doesn",40,51);
aWE("don",7,10,15,28,49,51,70);
aWE("doubl",47,48,49,67,76);
@ -330,7 +335,7 @@ aWE("duplicat",51);
aWE("dx",7,44,67,75,78);
aWE("dy",7,44,67,75,78);
aWE("dz",7,44,75,78);
aWE("e",44,65);
aWE("e",44,53,65);
aWE("e1",50);
aWE("e2",50);
aWE("e3",50);
@ -363,10 +368,10 @@ aWE("eras",79);
aWE("eraseall",79);
aWE("eraseon",79);
aWE("error",12,40,33);
aWE("etc",26,65);
aWE("etc",26,53,65);
aWE("exampl",0,1,2,50,7,9,10,12,13,14,15,16,17,19,20,21,22,23,24,25,27,28,29,34,35,36,39,32,41,42,43,45,46,47,48,49,52,53,54,55,56,58,59,60,61,62,63,64,65,66,67,69,70,71,72,73,75,76,77,31,78,80,81,83);
aWE("except",73);
aWE("exist",55,67,83);
aWE("exist",67,83);
aWE("expand",32);
aWE("explod",5,26,27,37);
aWE("export",38,32,30,51,79);
@ -400,13 +405,14 @@ aWE("facemintol",33);
aWE("factor",62,74);
aWE("fail",44,59);
aWE("fals",12);
aWE("far",53);
aWE("field",10);
aWE("fil",16,18,35,32,43,79,81);
aWE("fil",16,18,35,32,79,81);
aWE("fill",72);
aWE("fillet",9,34,74);
aWE("filletall",74);
aWE("final",45,46,55,56,75,82,83);
aWE("first",7,14,20,23,24,28,43,45,46,48,49,53,55,56,65,68,70,75,77,31,78,82);
aWE("first",7,14,20,23,24,28,43,45,46,48,49,53,55,56,61,65,68,70,75,77,31,78,82);
aWE("fit",51);
aWE("fix",65);
aWE("fixfacesiz",65);
@ -420,7 +426,7 @@ aWE("fram",51);
aWE("fre",12,13,59,64,72);
aWE("function",38,30,51,74);
aWE("functionaliti",50);
aWE("functionality",51,67,83);
aWE("functionality",51,53,67,83);
aWE("fus",6,11,36,31);
aWE("fuse_id",11);
aWE("g1",65);
@ -433,7 +439,7 @@ aWE("generation",28,35,38,30,54,60);
aWE("geom",3,4,5,6,8,11,18,37,40,44,57,58,59,68,74,33);
aWE("geom_object",0,1,2,50,7,9,12,13,14,15,17,19,20,21,22,23,24,25,26,27,28,29,34,35,36,39,42,45,47,48,49,52,53,54,55,56,58,60,61,62,63,64,65,66,67,69,70,71,72,73,75,77,33,78,80,83);
aWE("geometric",1,50,14,19,21,24,25,28,29,35,42,54,55,56,60,65,66,69,78,79,80);
aWE("geometrical",3,11,17,37,38,32,30,47,51,31,33,79,81,83);
aWE("geometrical",3,11,17,37,38,32,30,47,51,53,31,33,79,81,83);
aWE("geometry",38,32,30,51,59,65,33);
aWE("geompy",0,1,2,3,4,50,5,6,7,8,9,10,11,12,14,15,17,18,19,20,21,23,24,25,26,27,28,29,34,35,36,37,39,40,42,43,44,45,46,47,48,49,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,77,31,33,78,80,83);
aWE("get",5,44,59,74,33);
@ -447,14 +453,15 @@ aWE("getsubshapeid",5,40,59,74);
aWE("gg",3,4,5,6,8,11,16,18,37,40,44,57,59,68,74,76,81);
aWE("giv",14,25,32,55,65);
aWE("given",3,5,8,9,13,18,23,26,27,29,34,37,39,42,47,52,56,59,65,68,74,77,33);
aWE("global",43,46,51);
aWE("glu",5,39,44,53,59,33);
aWE("global",46,51);
aWE("glu",5,39,44,59,33);
aWE("good",51);
aWE("gravity",26,44,47,33);
aWE("great",51);
aWE("group",5,38,40,30,51,58,83);
aWE("group_n",83);
aWE("group1",40);
aWE("gui",79);
aWE("handl",83);
aWE("hav",65,66);
aWE("height",6,20,23,28,57,59,74);
@ -467,7 +474,7 @@ aWE("highlight",12,33);
aWE("hol",59,72);
aWE("hold",80);
aWE("how",33);
aWE("i",18,37,40,59,65);
aWE("i",18,37,40,53,59,65);
aWE("i11",33);
aWE("i12",33);
aWE("i13",33);
@ -535,9 +542,9 @@ aWE("id_offset",74);
aWE("id_p",59);
aWE("id_p_on_arc",3);
aWE("id_p0",3);
aWE("id_p1",3,8);
aWE("id_p1",3,8,74);
aWE("id_p100",3);
aWE("id_p2",3,8);
aWE("id_p2",3,8,74);
aWE("id_p3",3,8);
aWE("id_p4",3,8,74);
aWE("id_partition1",4);
@ -563,7 +570,8 @@ aWE("id_result",59);
aWE("id_revolution",18);
aWE("id_rot1d",74);
aWE("id_rot2d",74);
aWE("id_rotation",74);
aWE("id_rotation1",74);
aWE("id_rotation2",74);
aWE("id_scal",74);
aWE("id_section",6);
aWE("id_sew",59);
@ -596,12 +604,14 @@ aWE("id_wire_clos",59);
aWE("idlist",59,74);
aWE("idlist_",74);
aWE("idlist_f",74);
aWE("if",0,10,12,15,20,29,40,44,51,53,59,65,72,73,33);
aWE("if",0,10,12,15,20,29,40,44,51,59,65,72,73,33);
aWE("ig",38,32,30);
aWE("ignor",53);
aWE("ii",5);
aWE("imag",45,51,74,79);
aWE("imp",65);
aWE("implement",32);
aWE("implementation",53);
aWE("impli",65);
aWE("import",3,4,5,6,8,11,18,37,38,40,32,30,44,57,59,68,74,33);
aWE("importation",32);
@ -613,14 +623,13 @@ aWE("includ",40);
aWE("increas",15);
aWE("independent",17);
aWE("index",26,83);
aWE("indic",9,26,53,59);
aWE("indic",9,26,59);
aWE("indicat",49,56);
aWE("inertia",44,33);
aWE("inform",33);
aWE("initial",10,45,46,47,61,62,75);
aWE("inquir",33);
aWE("insert",15);
aWE("insid",53);
aWE("instead",20);
aWE("integ",48);
aWE("integer",27,48);
@ -672,7 +681,7 @@ aWE("len",59);
aWE("length",0,44,67,33);
aWE("li",1,14);
aWE("limit",53);
aWE("lin",2,3,42,67,83);
aWE("lin",2,3,42,43,67,83);
aWE("line1",3);
aWE("line2",3);
aWE("linear",67);
@ -690,10 +699,10 @@ aWE("listoftool",53);
aWE("listofwireid",72);
aWE("listshap",34);
aWE("ll",51);
aWE("local",43,46,52,67,74);
aWE("local",43,46,52,55,67,74,82);
aWE("localcs1",46);
aWE("localcs2",46);
aWE("locat",56);
aWE("locat",51,56);
aWE("location",32,43,46,74);
aWE("lock",10,51);
aWE("lsc",46);
@ -702,7 +711,7 @@ aWE("magnitud",65);
aWE("main",0,1,2,50,7,9,10,12,13,14,15,17,19,20,21,22,23,24,25,26,27,28,29,34,35,36,39,42,43,44,45,46,47,48,49,52,53,54,55,56,58,60,61,62,63,64,65,66,67,69,70,71,72,73,75,77,33,78,80,82,83);
aWE("mainshap",83);
aWE("major",25,77);
aWE("mak",5,6,9,44,48,49,53,59,74,75,83);
aWE("mak",5,6,9,44,48,49,59,74,75,83);
aWE("make_block_explod",5);
aWE("makearc",1,3,18,37,59,68,74);
aWE("makebezi",3,21);
@ -765,6 +774,7 @@ aWE("makequad2edg",50,8);
aWE("makequad4vertic",50,8);
aWE("makerevolution",18,60);
aWE("makerotation",59,61,74);
aWE("makerotationthreepoint",61,74);
aWE("makescaletransform",62,74);
aWE("makesection",6,63);
aWE("makesew",59,64);
@ -785,10 +795,9 @@ aWE("makevertex",3,4,5,6,8,18,37,40,44,56,57,59,68,74);
aWE("makevertexoncurv",3,56);
aWE("makevertexwithref",3,56);
aWE("makewir",3,18,37,59,68,74,80);
aWE("manual",83);
aWE("manual",51,83);
aWE("mark",51);
aWE("mas",44,33);
aWE("material",53);
aWE("math",44,59,74);
aWE("matrix",44,33);
aWE("max",27,35,44,65);
@ -831,7 +840,7 @@ aWE("mod",0,11,15,65,79,81);
aWE("model",2,38,30);
aWE("modifi",15,46);
aWE("modify",46,74);
aWE("modul",38,32,30,51);
aWE("modul",38,32,30,51,79);
aWE("moment",44,33);
aWE("mous",51,79);
aWE("mov",46,49);
@ -856,13 +865,13 @@ aWE("nbtimesu",48);
aWE("nbtimesv",48);
aWE("ncentr",44);
aWE("ncompound",44);
aWE("ne",7,9,26,28,29,34,35,47,49,54,60,61,62,65,70,75);
aWE("ne",7,9,26,28,29,34,35,47,49,54,60,62,65,70,75);
aWE("necessari",65);
aWE("necessary",9,34,65,67,33);
aWE("need",15);
aWE("need",15,61);
aWE("negativ",52);
aWE("neighbour",65);
aWE("new",1,50,7,14,15,19,20,21,23,24,25,26,28,29,35,42,43,51,54,55,56,60,66,67,69,70,74,77,78,79,80,82,83);
aWE("new",1,50,7,14,15,19,20,21,23,24,25,26,28,29,35,42,43,51,53,54,55,56,60,66,67,69,70,74,77,78,79,80,82,83);
aWE("ninertia",44);
aWE("nminimal",44);
aWE("nod",21);
@ -875,14 +884,14 @@ aWE("notion",50);
aWE("nth",65);
aWE("numb",27,35,41,47,48,49,52,59,64,65,72,74,79);
aWE("number",48);
aWE("object",1,2,3,4,5,6,8,9,10,11,14,16,17,18,19,21,24,25,26,28,29,34,35,37,38,40,32,30,42,43,45,46,47,51,52,54,55,56,57,58,59,60,61,65,66,68,69,73,74,75,31,33,78,79,80,81,83);
aWE("object",1,2,3,4,5,6,8,9,10,11,14,16,17,18,19,21,24,25,26,28,29,34,35,37,38,40,32,30,42,43,45,46,47,51,52,53,54,55,56,57,58,59,60,61,65,66,68,69,73,74,75,31,33,78,79,80,81,83);
aWE("obtain",26,44,46,65);
aWE("occ",0,9,15,34,51,71,72,73,79,83);
aWE("occur",12);
aWE("offset",52,74);
aWE("ok",43,44,59,83);
aWE("old",56);
aWE("on",0,15,22,47,48,49,55,56,59,65,67,82);
aWE("old",53,56);
aWE("on",0,15,22,47,48,49,56,59,65,67,82);
aWE("opaqu",76);
aWE("open",12,15,32,51,59,83);
aWE("openwir",12,59);
@ -897,11 +906,11 @@ aWE("orient",50);
aWE("orientat",51);
aWE("orientation",10,51);
aWE("origin",7,20,23,43,51,70,77,78);
aWE("orthogonal",61);
aWE("os",59);
aWE("otherwis",0,15,45,46,61,75);
aWE("our",0,1,2,50,7,9,12,13,14,15,16,17,19,20,21,22,23,24,25,27,28,29,34,35,36,39,42,45,46,47,48,49,52,53,54,55,56,58,60,61,62,63,64,65,66,67,69,70,71,72,73,75,76,77,31,33,78,80,81,83);
aWE("out",51,65);
aWE("outsid",53);
aWE("outward",10);
aWE("ox",43,67);
aWE("oy",43);
@ -928,9 +937,9 @@ aWE("p70",57);
aWE("p8",8,18);
aWE("p9",8);
aWE("pan",51);
aWE("parallel",7,42,43,65);
aWE("parallel",7,42,65);
aWE("paramet",0,15,56,65);
aWE("parameter",4,16,35,59,65,67,76,79,81);
aWE("parameter",4,16,35,53,59,65,67,76,79,81);
aWE("parameterization",65);
aWE("parametric",65);
aWE("paramt",0);
@ -939,16 +948,17 @@ aWE("partition",4,53);
aWE("partition1",4);
aWE("partition2",4);
aWE("partition3",4);
aWE("pas",5,21,42,44,47,55,67);
aWE("partitionalgo",53);
aWE("pas",5,21,42,44,47,55,61,67);
aWE("path",18,54);
aWE("pathshap",54);
aWE("perform",4,26,53,74);
aWE("perform",4,26,51,74);
aWE("perpendicular",67);
aWE("pi",47,59,74);
aWE("pictur",46);
aWE("pip",18,54);
aWE("plac",46,51,65);
aWE("plan",2,3,4,45,51,53,55,67,74,82,83);
aWE("plan",2,3,4,45,51,53,55,61,67,74,82,83);
aWE("planar",29,67,68,74,82);
aWE("plane1",3);
aWE("plane2",3);
@ -956,9 +966,9 @@ aWE("plane3",3);
aWE("plug",32);
aWE("plung",2);
aWE("png",51,79);
aWE("point",0,1,3,4,50,7,8,14,15,18,20,21,23,24,25,28,37,40,42,43,44,45,47,51,52,55,56,59,62,65,67,68,70,74,75,77,33,78,83);
aWE("point1",1,3,7,8,14,24,28,42,55,75,78);
aWE("point2",1,3,7,8,14,24,28,42,55,75,78);
aWE("point",0,1,3,4,50,7,8,14,15,18,20,21,23,24,25,28,37,40,42,43,44,45,47,51,52,55,56,59,61,62,65,67,68,70,74,75,77,33,78,83);
aWE("point1",1,3,7,8,14,24,28,42,55,61,75,78);
aWE("point2",1,3,7,8,14,24,28,42,55,61,75,78);
aWE("point3",1,3,8,14,55);
aWE("point4",3,8);
aWE("point5",3);
@ -972,9 +982,9 @@ aWE("possibility",65);
aWE("possibl",5,21,58,65,33);
aWE("precision",59,64);
aWE("predefin",67);
aWE("preferrabl",53);
aWE("pres",43,51);
aWE("presentation",79);
aWE("presum",43);
aWE("preview",51);
aWE("previou",65,67);
aWE("primitiv",7,20,23,38,30,57,70,77);
@ -1035,7 +1045,7 @@ aWE("refresh",79);
aWE("regard",56);
aWE("relativ",67);
aWE("relevant",81);
aWE("remain",51,81);
aWE("remain",51,53,81);
aWE("remaind",46);
aWE("remot",51);
aWE("remov",40,45,46,51,59,61,65,71,72,73,75,83);
@ -1067,6 +1077,8 @@ aWE("rot1d",74);
aWE("rot2d",74);
aWE("rotat",47,51,60,61,74);
aWE("rotation",47,51,59,61,74);
aWE("rotation1",74);
aWE("rotation2",74);
aWE("rul",65);
aWE("runtimeerror",44,59);
aWE("s",12,14,15,18,37,48,59,62,71,72,73,83);
@ -1082,16 +1094,15 @@ aWE("scen",51);
aWE("script",0,1,2,50,7,9,12,13,14,15,16,17,19,20,21,22,23,24,25,27,28,29,34,35,36,39,42,45,46,47,48,49,52,53,54,55,56,58,60,61,62,63,64,65,66,67,69,70,71,72,73,75,76,77,31,33,78,80,81,83);
aWE("se",46,51,81);
aWE("search",32);
aWE("second",7,14,20,23,28,43,45,46,48,49,53,55,56,65,68,70,75,77,31,78,82);
aWE("second",7,14,20,23,28,43,45,46,48,49,53,55,56,61,65,68,70,75,77,31,78,82);
aWE("section",2,6,51,63,31);
aWE("seem",59);
aWE("segment",65,67);
aWE("select",0,1,2,4,7,9,10,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,29,34,35,36,39,40,32,42,43,45,46,47,48,49,51,52,53,54,55,56,58,59,60,61,62,63,64,65,66,67,69,70,71,72,73,75,77,33,78,79,80,81,82,83);
aWE("selection",34,67,82,83);
aWE("sens",53);
aWE("separat",31);
aWE("serv",21,28,54,60);
aWE("set",0,15,27,29,37,47,52,56,82);
aWE("set",0,15,27,29,37,47,51,52,56,82);
aWE("setcolor",11,16);
aWE("setdisplaymod",3,4,5,6,8,11,18,37,57,59,68,74,81);
aWE("settransparency",3,11,37,68,74,76);
@ -1109,7 +1120,7 @@ aWE("shapetypefac",74);
aWE("shar",13);
aWE("sharp",65);
aWE("shel",13,19,37,52,66,69,81);
aWE("shell",50,10,28,37,52,54,60,66,69);
aWE("shell",50,10,28,37,52,53,54,60,66,69);
aWE("shift",46,56,80,83);
aWE("short",16,81);
aWE("shortcut",29);
@ -1118,9 +1129,9 @@ aWE("show",51,33);
aWE("shown",43);
aWE("sid",55);
aWE("sign",52);
aWE("similar",55);
aWE("simp",43);
aWE("simpl",47,48,49);
aWE("sinc",53);
aWE("singl",29);
aWE("six",50,8);
aWE("siz",9,55,65);
@ -1132,7 +1143,7 @@ aWE("sketcher3",37);
aWE("skip",83);
aWE("small",51,65);
aWE("so",29,46);
aWE("solid",50,7,8,20,23,26,28,37,48,52,54,60,69,70,77);
aWE("solid",50,7,8,20,23,26,28,37,48,52,53,54,60,69,70,77);
aWE("solid1",8);
aWE("solid2",8);
aWE("sort",26);
@ -1177,6 +1188,7 @@ aWE("subshapesort",26);
aWE("subtraction",46);
aWE("successful",44);
aWE("sup_fac",59);
aWE("support",53);
aWE("suppres",59,71,72,73);
aWE("suppressfac",59,71);
aWE("suppresshol",59,72);
@ -1187,7 +1199,7 @@ aWE("surfacemod",65);
aWE("symmetric",74);
aWE("symmetrical",45,74);
aWE("symmetry",45);
aWE("system",20,23,43,46,70,74,82);
aWE("system",20,23,43,46,55,70,74,82);
aWE("t",7,10,28,40,51,70);
aWE("tak",65);
aWE("tangent",65,67);
@ -1206,8 +1218,8 @@ aWE("therefor",67);
aWE("theshap",39,59,33);
aWE("thestartlc",46);
aWE("thetoleranc",39);
aWE("third",7);
aWE("thre",1,3,14,18,21,37,43,45,55,56,68,74,82);
aWE("third",7,61);
aWE("thre",1,3,14,18,21,37,43,45,55,56,61,68,74,82);
aWE("thu",65,76);
aWE("tim",21,47,49,56,74);
aWE("tobezi",65);
@ -1242,16 +1254,16 @@ aWE("transparent",76,81);
aWE("triangl",51);
aWE("trihedron",51);
aWE("trimsiz",3,4,55);
aWE("tru",0,15,53,59,33);
aWE("tru",0,15,59,33);
aWE("truncat",20);
aWE("try",29);
aWE("tt",37,68);
aWE("tui",0,1,2,50,7,9,10,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,29,34,35,36,39,42,43,45,46,47,48,49,52,53,54,55,56,58,60,61,62,63,64,65,66,67,69,70,71,72,73,75,76,77,31,33,78,79,80,81,83);
aWE("tupl",33);
aWE("two",0,3,4,50,7,8,9,13,17,18,20,24,36,37,39,40,46,47,48,49,53,65,68,70,74,77,33,82,83);
aWE("two",0,3,4,50,7,8,9,13,17,18,20,24,36,37,39,40,46,47,48,49,53,61,65,68,70,74,77,33,82,83);
aWE("typ",21,26,27,53,65,67,31,33,83);
aWE("u",65);
aWE("uncheck",10);
aWE("uncheck",10,51);
aWE("underly",15,65);
aWE("unionlist",40);
aWE("up",16,20,81);
@ -1282,6 +1294,7 @@ aWE("vector2_arc1",18);
aWE("vector2_arc2",18);
aWE("vector3",18);
aWE("versa",65);
aWE("version",53);
aWE("vertex",3,4,6,14,15,18,20,23,24,25,28,37,44,45,54,55,56,57,59,60,62,70,74,77,33);
aWE("vertex_n",56);
aWE("vertex1",24);
@ -1317,7 +1330,7 @@ aWE("wheth",33);
aWE("whil",12,18,37,44,65,81);
aWE("whos",29,33);
aWE("wid",38,30);
aWE("will",0,1,2,50,7,9,10,12,13,14,15,17,19,20,21,22,23,24,25,26,27,28,29,34,35,36,39,32,42,43,45,46,47,48,49,51,52,53,54,55,56,58,60,61,62,63,64,65,66,67,69,70,71,72,73,75,77,78,80,83);
aWE("will",0,1,2,50,7,9,10,12,13,14,15,17,19,20,21,22,23,24,25,26,27,28,29,34,35,36,39,32,42,45,46,47,48,49,51,52,53,54,55,56,58,60,61,62,63,64,65,66,67,69,70,71,72,73,75,77,78,80,83);
aWE("wir",3,50,12,15,18,26,28,29,37,44,54,59,60,67,68,72,73,74,80);
aWE("wire_clos",59);
aWE("wire_nam",59);
@ -1351,7 +1364,6 @@ aWE("ydz",43);
aWE("ymax",44,33);
aWE("ymin",44,33);
aWE("your",16,32,64,72,79,82,83);
aWE("yourselv",43);
aWE("yz_fac",5);
aWE("yz_face_ind",5);
aWE("z",2,3,7,43,56,70,33);

View File

@ -8,7 +8,7 @@
<script language="javascript" src="whtdata.js"></script>
<script language="javascript">
<!--
aTE(1,98,"Geometry module");
aTE(1,97,"Geometry module");
aTE(2,0,"Introduction to Geometry","geometry.htm");
aTE(2,0,"Importing/exporting geometrical objects","files/salome2_sp3_geomtoolsgui_functions.htm");
aTE(1,33,"Creating geometrical objects");
@ -45,9 +45,8 @@
aTE(2,0,"Shell","shell.htm");
aTE(2,0,"Solid","solid.htm");
aTE(2,0,"Compound","compound.htm");
aTE(1,6,"Viewing geometrical objects");
aTE(1,5,"Viewing geometrical objects");
aTE(2,0,"Viewing Geometrical Objects","viewing_geometrical_objects.htm");
aTE(2,0,"OCC 3D Viewer","occ_viewer.htm");
aTE(2,0,"Display Mode","wireframe_and_shading.htm");
aTE(2,0,"Color","color.htm");
aTE(2,0,"Transparency","transparency.htm");

View File

@ -36,7 +36,7 @@
<key name="25"> 3,5,6,57,74, </key>
<key name="250"> 37,44,59,68, </key>
<key name="2d"> 5,35,59,65,74,31, </key>
<key name="3"> 1,2,5,7,11,14,18,20,37,40,44,48,55,56,59,67,74,75,31,78, </key>
<key name="3"> 1,2,5,7,11,14,18,20,37,40,44,48,55,56,59,61,67,74,75,31,78, </key>
<key name="30"> 3,8,11,18,37,44,57,59,68,74, </key>
<key name="300"> 37,68, </key>
<key name="300000"> 44, </key>
@ -44,7 +44,7 @@
<key name="32"> 59, </key>
<key name="32000"> 44, </key>
<key name="35"> 6,8,57,59,74, </key>
<key name="3d"> 14,21,35,43,51,53,55,56,59,65,71,31,33,78,79,81,83, </key>
<key name="3d"> 14,21,35,43,51,55,56,59,65,71,31,33,78,79,81,83, </key>
<key name="4"> 50,37,40,44,48,67,74,31, </key>
<key name="40"> 6,8,18,37,57,59,74, </key>
<key name="41"> 59, </key>
@ -75,16 +75,16 @@
<key name="addtostudy"> 3,4,5,6,8,11,18,37,40,57,59,68,74, </key>
<key name="addtostudyinfath"> 5,59, </key>
<key name="advanc"> 7,19,24,28,29,37,66,69,70,80, </key>
<key name="algorithm"> 7,14,20,21,23,28,43,46,53,55,56,67,70,77,78,82, </key>
<key name="algorithm"> 7,14,20,21,23,28,43,46,55,56,61,67,70,77,78,82, </key>
<key name="all_fac"> 59, </key>
<key name="allow"> 50,9,26,45,46,47,51,61,64,65,67,72,75,33,79, </key>
<key name="allow"> 50,9,26,43,45,46,47,51,53,61,64,65,67,72,75,33,79, </key>
<key name="along"> 7,9,46,49,52,54,74,75, </key>
<key name="alongsid"> 31, </key>
<key name="already"> 40, </key>
<key name="although"> 46, </key>
<key name="angl"> 47,59,60,61,65,67,74, </key>
<key name="anoth"> 22,42,55,56,70,74, </key>
<key name="any"> 53,61,65,75, </key>
<key name="any"> 43,53,61,65,75, </key>
<key name="ap"> 43,74,83, </key>
<key name="appear"> 79,83, </key>
<key name="append"> 18,37,74, </key>
@ -98,14 +98,14 @@
<key name="archimed"> 2,4, </key>
<key name="area"> 44,51, </key>
<key name="argument"> 0,1,2,50,7,9,10,14,15,17,19,20,21,22,23,24,25,26,27,28,29,34,35,36,39,41,42,43,45,46,47,48,49,52,53,54,55,56,58,60,61,62,63,64,66,67,69,70,71,72,73,75,77,31,78,80,82,83, </key>
<key name="around"> 47,60,74, </key>
<key name="around"> 47,51,60,74, </key>
<key name="automatical"> 50,43,79, </key>
<key name="availabl"> 0,50,15,32,51,67,71,72,73,83, </key>
<key name="ax"> 7,43,49,51,75, </key>
<key name="axi"> 18,20,23,43,45,46,47,60,61,74,33, </key>
<key name="b"> 3,21,65, </key>
<key name="background"> 79, </key>
<key name="bas"> 20,23,28,47,51,54,59,60,62,65,75,77, </key>
<key name="bas"> 20,23,28,43,47,51,54,59,60,62,65,75,77, </key>
<key name="baseshap"> 54, </key>
<key name="basi"> 28,51, </key>
<key name="basic"> 1,2,3,4,14,21,25,38,30,42,43,44,53,55,56,67,33,78,82, </key>
@ -124,11 +124,11 @@
<key name="boolean"> 6,17,22,36,38,30,63,31,33, </key>
<key name="both"> 7,20,48,49,65, </key>
<key name="boudari"> 59, </key>
<key name="bound"> 8,37,44,33, </key>
<key name="bound"> 8,37,44,51,33, </key>
<key name="boundari"> 12,59,64,72, </key>
<key name="boundary"> 12,59,73, </key>
<key name="boundingbox"> 44,33, </key>
<key name="box"> 4,50,5,7,11,16,22,27,40,32,44,57,59,65,67,73,74,76,33,80,83, </key>
<key name="box"> 4,50,5,7,11,16,22,27,40,32,44,51,53,57,59,65,67,73,74,76,33,80,83, </key>
<key name="box_tr1"> 5, </key>
<key name="box_tr2"> 5, </key>
<key name="box1"> 44,57,59, </key>
@ -148,15 +148,17 @@
<key name="c1"> 65, </key>
<key name="c2"> 65, </key>
<key name="cad"> 38,30, </key>
<key name="calculat"> 33, </key>
<key name="calculat"> 43,33, </key>
<key name="camera"> 82, </key>
<key name="cas"> 50,43,48,73, </key>
<key name="cas"> 50,43,48,61,73, </key>
<key name="cascad"> 51, </key>
<key name="catia"> 32, </key>
<key name="cent"> 7,14,20,25,44,46,47,51,67,70,77,33, </key>
<key name="cc"> 51, </key>
<key name="cent"> 7,14,20,25,44,46,47,51,67,70,74,77,33, </key>
<key name="center"> 26, </key>
<key name="centerofscal"> 62, </key>
<key name="central"> 20,23,62,65, </key>
<key name="central"> 20,23,61,62,65, </key>
<key name="centralpoint"> 61, </key>
<key name="certain"> 65,83, </key>
<key name="chain"> 5, </key>
<key name="chamf"> 9,74, </key>
@ -164,15 +166,15 @@
<key name="chamfer_all"> 74, </key>
<key name="chamfer_f"> 74, </key>
<key name="chamfer_f1"> 74, </key>
<key name="chang"> 10,11,16,41,76,79,81, </key>
<key name="chang"> 10,11,16,41,51,76,79,81, </key>
<key name="changeorientation"> 10, </key>
<key name="check"> 12,13,27,29,44,59,65,73,33, </key>
<key name="check_box"> 5, </key>
<key name="checkbox"> 10,45,46,47,61,72,75,33, </key>
<key name="checkcompoundofblock"> 44,33, </key>
<key name="checkshap"> 44,59, </key>
<key name="checkshap"> 44,59,33, </key>
<key name="choic"> 21, </key>
<key name="choos"> 27,32,43, </key>
<key name="choos"> 27,32,43,51,53, </key>
<key name="circl"> 3,14,67, </key>
<key name="circle1"> 3, </key>
<key name="circle2"> 3, </key>
@ -213,7 +215,7 @@
<key name="consol"> 33, </key>
<key name="constraint"> 50, </key>
<key name="construct"> 50,69, </key>
<key name="construction"> 21,38,30,51,31, </key>
<key name="construction"> 21,38,30,43,51,31, </key>
<key name="contain"> 0,13,15,58, </key>
<key name="content"> 40,32,51, </key>
<key name="continuiti"> 65, </key>
@ -225,7 +227,7 @@
<key name="conversion"> 65, </key>
<key name="convert"> 65, </key>
<key name="coord"> 44, </key>
<key name="coordinat"> 7,20,23,26,43,44,46,51,56,67,70,74,75,77,33,78,82, </key>
<key name="coordinat"> 7,20,23,26,43,44,46,51,55,56,67,70,74,75,77,33,78,82, </key>
<key name="copy"> 10,45,46,61,75, </key>
<key name="corn"> 65, </key>
<key name="corner"> 7,8, </key>
@ -241,11 +243,10 @@
<key name="creation"> 1,3,7,14,15,18,19,20,21,23,24,25,28,29,35,37,38,40,30,42,54,55,56,57,59,60,66,69,70,77,78,80,83, </key>
<key name="criteria"> 5, </key>
<key name="cros"> 51, </key>
<key name="cs"> 43, </key>
<key name="cs1"> 74, </key>
<key name="cs2"> 74, </key>
<key name="cub"> 46, </key>
<key name="current"> 7,42,51,67,70, </key>
<key name="current"> 7,42,51,53,67,70, </key>
<key name="curv"> 3,21,35,65,67, </key>
<key name="curvatur"> 65, </key>
<key name="curve2dmod"> 65, </key>
@ -269,17 +270,20 @@
<key name="definit"> 72, </key>
<key name="definition"> 54, </key>
<key name="deflection"> 2, </key>
<key name="defn"> 61, </key>
<key name="degenerat"> 33, </key>
<key name="degre"> 35,60,65,67, </key>
<key name="delet"> 53,83, </key>
<key name="delet"> 83, </key>
<key name="density"> 2, </key>
<key name="depend"> 48,65, </key>
<key name="derivativ"> 65, </key>
<key name="descr"> 44, </key>
<key name="describ"> 79, </key>
<key name="description"> 50,44,67,68,33, </key>
<key name="design"> 83, </key>
<key name="destin"> 38,30, </key>
<key name="destination"> 67, </key>
<key name="detail"> 79, </key>
<key name="detect"> 12,64,72, </key>
<key name="detection"> 65, </key>
<key name="develop"> 51, </key>
@ -290,7 +294,7 @@
<key name="dir"> 47,49, </key>
<key name="dir1"> 49, </key>
<key name="dir2"> 49, </key>
<key name="direct"> 43, </key>
<key name="direct"> 43,61, </key>
<key name="direction"> 2,14,20,25,28,43,47,48,49,51,60,61,65,67,77, </key>
<key name="dirfaceid1"> 48, </key>
<key name="dirfaceid1u"> 48, </key>
@ -303,6 +307,7 @@
<key name="distanc"> 39,44,52,65,33, </key>
<key name="divid"> 0,59, </key>
<key name="divideedg"> 0,59, </key>
<key name="documentation"> 79, </key>
<key name="doesn"> 40,51, </key>
<key name="don"> 7,10,15,28,49,51,70, </key>
<key name="doubl"> 47,48,49,67,76, </key>
@ -318,7 +323,7 @@
<key name="dx"> 7,44,67,75,78, </key>
<key name="dy"> 7,44,67,75,78, </key>
<key name="dz"> 7,44,75,78, </key>
<key name="e"> 44,65, </key>
<key name="e"> 44,53,65, </key>
<key name="e1"> 50, </key>
<key name="e2"> 50, </key>
<key name="e3"> 50, </key>
@ -351,10 +356,10 @@
<key name="eraseall"> 79, </key>
<key name="eraseon"> 79, </key>
<key name="error"> 12,40,33, </key>
<key name="etc"> 26,65, </key>
<key name="etc"> 26,53,65, </key>
<key name="exampl"> 0,1,2,50,7,9,10,12,13,14,15,16,17,19,20,21,22,23,24,25,27,28,29,34,35,36,39,32,41,42,43,45,46,47,48,49,52,53,54,55,56,58,59,60,61,62,63,64,65,66,67,69,70,71,72,73,75,76,77,31,78,80,81,83, </key>
<key name="except"> 73, </key>
<key name="exist"> 55,67,83, </key>
<key name="exist"> 67,83, </key>
<key name="expand"> 32, </key>
<key name="explod"> 5,26,27,37, </key>
<key name="export"> 38,32,30,51,79, </key>
@ -388,13 +393,14 @@
<key name="factor"> 62,74, </key>
<key name="fail"> 44,59, </key>
<key name="fals"> 12, </key>
<key name="far"> 53, </key>
<key name="field"> 10, </key>
<key name="fil"> 16,18,35,32,43,79,81, </key>
<key name="fil"> 16,18,35,32,79,81, </key>
<key name="fill"> 72, </key>
<key name="fillet"> 9,34,74, </key>
<key name="filletall"> 74, </key>
<key name="final"> 45,46,55,56,75,82,83, </key>
<key name="first"> 7,14,20,23,24,28,43,45,46,48,49,53,55,56,65,68,70,75,77,31,78,82, </key>
<key name="first"> 7,14,20,23,24,28,43,45,46,48,49,53,55,56,61,65,68,70,75,77,31,78,82, </key>
<key name="fit"> 51, </key>
<key name="fix"> 65, </key>
<key name="fixfacesiz"> 65, </key>
@ -408,7 +414,7 @@
<key name="fre"> 12,13,59,64,72, </key>
<key name="function"> 38,30,51,74, </key>
<key name="functionaliti"> 50, </key>
<key name="functionality"> 51,67,83, </key>
<key name="functionality"> 51,53,67,83, </key>
<key name="fus"> 6,11,36,31, </key>
<key name="fuse_id"> 11, </key>
<key name="g1"> 65, </key>
@ -421,7 +427,7 @@
<key name="geom"> 3,4,5,6,8,11,18,37,40,44,57,58,59,68,74,33, </key>
<key name="geom_object"> 0,1,2,50,7,9,12,13,14,15,17,19,20,21,22,23,24,25,26,27,28,29,34,35,36,39,42,45,47,48,49,52,53,54,55,56,58,60,61,62,63,64,65,66,67,69,70,71,72,73,75,77,33,78,80,83, </key>
<key name="geometric"> 1,50,14,19,21,24,25,28,29,35,42,54,55,56,60,65,66,69,78,79,80, </key>
<key name="geometrical"> 3,11,17,37,38,32,30,47,51,31,33,79,81,83, </key>
<key name="geometrical"> 3,11,17,37,38,32,30,47,51,53,31,33,79,81,83, </key>
<key name="geometry"> 38,32,30,51,59,65,33, </key>
<key name="geompy"> 0,1,2,3,4,50,5,6,7,8,9,10,11,12,14,15,17,18,19,20,21,23,24,25,26,27,28,29,34,35,36,37,39,40,42,43,44,45,46,47,48,49,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,77,31,33,78,80,83, </key>
<key name="get"> 5,44,59,74,33, </key>
@ -435,14 +441,15 @@
<key name="gg"> 3,4,5,6,8,11,16,18,37,40,44,57,59,68,74,76,81, </key>
<key name="giv"> 14,25,32,55,65, </key>
<key name="given"> 3,5,8,9,13,18,23,26,27,29,34,37,39,42,47,52,56,59,65,68,74,77,33, </key>
<key name="global"> 43,46,51, </key>
<key name="glu"> 5,39,44,53,59,33, </key>
<key name="global"> 46,51, </key>
<key name="glu"> 5,39,44,59,33, </key>
<key name="good"> 51, </key>
<key name="gravity"> 26,44,47,33, </key>
<key name="great"> 51, </key>
<key name="group"> 5,38,40,30,51,58,83, </key>
<key name="group_n"> 83, </key>
<key name="group1"> 40, </key>
<key name="gui"> 79, </key>
<key name="handl"> 83, </key>
<key name="hav"> 65,66, </key>
<key name="height"> 6,20,23,28,57,59,74, </key>
@ -455,7 +462,7 @@
<key name="hol"> 59,72, </key>
<key name="hold"> 80, </key>
<key name="how"> 33, </key>
<key name="i"> 18,37,40,59,65, </key>
<key name="i"> 18,37,40,53,59,65, </key>
<key name="i11"> 33, </key>
<key name="i12"> 33, </key>
<key name="i13"> 33, </key>
@ -523,9 +530,9 @@
<key name="id_p"> 59, </key>
<key name="id_p_on_arc"> 3, </key>
<key name="id_p0"> 3, </key>
<key name="id_p1"> 3,8, </key>
<key name="id_p1"> 3,8,74, </key>
<key name="id_p100"> 3, </key>
<key name="id_p2"> 3,8, </key>
<key name="id_p2"> 3,8,74, </key>
<key name="id_p3"> 3,8, </key>
<key name="id_p4"> 3,8,74, </key>
<key name="id_partition1"> 4, </key>
@ -551,7 +558,8 @@
<key name="id_revolution"> 18, </key>
<key name="id_rot1d"> 74, </key>
<key name="id_rot2d"> 74, </key>
<key name="id_rotation"> 74, </key>
<key name="id_rotation1"> 74, </key>
<key name="id_rotation2"> 74, </key>
<key name="id_scal"> 74, </key>
<key name="id_section"> 6, </key>
<key name="id_sew"> 59, </key>
@ -584,12 +592,14 @@
<key name="idlist"> 59,74, </key>
<key name="idlist_"> 74, </key>
<key name="idlist_f"> 74, </key>
<key name="if"> 0,10,12,15,20,29,40,44,51,53,59,65,72,73,33, </key>
<key name="if"> 0,10,12,15,20,29,40,44,51,59,65,72,73,33, </key>
<key name="ig"> 38,32,30, </key>
<key name="ignor"> 53, </key>
<key name="ii"> 5, </key>
<key name="imag"> 45,51,74,79, </key>
<key name="imp"> 65, </key>
<key name="implement"> 32, </key>
<key name="implementation"> 53, </key>
<key name="impli"> 65, </key>
<key name="import"> 3,4,5,6,8,11,18,37,38,40,32,30,44,57,59,68,74,33, </key>
<key name="importation"> 32, </key>
@ -601,14 +611,13 @@
<key name="increas"> 15, </key>
<key name="independent"> 17, </key>
<key name="index"> 26,83, </key>
<key name="indic"> 9,26,53,59, </key>
<key name="indic"> 9,26,59, </key>
<key name="indicat"> 49,56, </key>
<key name="inertia"> 44,33, </key>
<key name="inform"> 33, </key>
<key name="initial"> 10,45,46,47,61,62,75, </key>
<key name="inquir"> 33, </key>
<key name="insert"> 15, </key>
<key name="insid"> 53, </key>
<key name="instead"> 20, </key>
<key name="integ"> 48, </key>
<key name="integer"> 27,48, </key>
@ -660,7 +669,7 @@
<key name="length"> 0,44,67,33, </key>
<key name="li"> 1,14, </key>
<key name="limit"> 53, </key>
<key name="lin"> 2,3,42,67,83, </key>
<key name="lin"> 2,3,42,43,67,83, </key>
<key name="line1"> 3, </key>
<key name="line2"> 3, </key>
<key name="linear"> 67, </key>
@ -678,10 +687,10 @@
<key name="listofwireid"> 72, </key>
<key name="listshap"> 34, </key>
<key name="ll"> 51, </key>
<key name="local"> 43,46,52,67,74, </key>
<key name="local"> 43,46,52,55,67,74,82, </key>
<key name="localcs1"> 46, </key>
<key name="localcs2"> 46, </key>
<key name="locat"> 56, </key>
<key name="locat"> 51,56, </key>
<key name="location"> 32,43,46,74, </key>
<key name="lock"> 10,51, </key>
<key name="lsc"> 46, </key>
@ -690,7 +699,7 @@
<key name="main"> 0,1,2,50,7,9,10,12,13,14,15,17,19,20,21,22,23,24,25,26,27,28,29,34,35,36,39,42,43,44,45,46,47,48,49,52,53,54,55,56,58,60,61,62,63,64,65,66,67,69,70,71,72,73,75,77,33,78,80,82,83, </key>
<key name="mainshap"> 83, </key>
<key name="major"> 25,77, </key>
<key name="mak"> 5,6,9,44,48,49,53,59,74,75,83, </key>
<key name="mak"> 5,6,9,44,48,49,59,74,75,83, </key>
<key name="make_block_explod"> 5, </key>
<key name="makearc"> 1,3,18,37,59,68,74, </key>
<key name="makebezi"> 3,21, </key>
@ -753,6 +762,7 @@
<key name="makequad4vertic"> 50,8, </key>
<key name="makerevolution"> 18,60, </key>
<key name="makerotation"> 59,61,74, </key>
<key name="makerotationthreepoint"> 61,74, </key>
<key name="makescaletransform"> 62,74, </key>
<key name="makesection"> 6,63, </key>
<key name="makesew"> 59,64, </key>
@ -773,10 +783,9 @@
<key name="makevertexoncurv"> 3,56, </key>
<key name="makevertexwithref"> 3,56, </key>
<key name="makewir"> 3,18,37,59,68,74,80, </key>
<key name="manual"> 83, </key>
<key name="manual"> 51,83, </key>
<key name="mark"> 51, </key>
<key name="mas"> 44,33, </key>
<key name="material"> 53, </key>
<key name="math"> 44,59,74, </key>
<key name="matrix"> 44,33, </key>
<key name="max"> 27,35,44,65, </key>
@ -819,7 +828,7 @@
<key name="model"> 2,38,30, </key>
<key name="modifi"> 15,46, </key>
<key name="modify"> 46,74, </key>
<key name="modul"> 38,32,30,51, </key>
<key name="modul"> 38,32,30,51,79, </key>
<key name="moment"> 44,33, </key>
<key name="mous"> 51,79, </key>
<key name="mov"> 46,49, </key>
@ -844,13 +853,13 @@
<key name="nbtimesv"> 48, </key>
<key name="ncentr"> 44, </key>
<key name="ncompound"> 44, </key>
<key name="ne"> 7,9,26,28,29,34,35,47,49,54,60,61,62,65,70,75, </key>
<key name="ne"> 7,9,26,28,29,34,35,47,49,54,60,62,65,70,75, </key>
<key name="necessari"> 65, </key>
<key name="necessary"> 9,34,65,67,33, </key>
<key name="need"> 15, </key>
<key name="need"> 15,61, </key>
<key name="negativ"> 52, </key>
<key name="neighbour"> 65, </key>
<key name="new"> 1,50,7,14,15,19,20,21,23,24,25,26,28,29,35,42,43,51,54,55,56,60,66,67,69,70,74,77,78,79,80,82,83, </key>
<key name="new"> 1,50,7,14,15,19,20,21,23,24,25,26,28,29,35,42,43,51,53,54,55,56,60,66,67,69,70,74,77,78,79,80,82,83, </key>
<key name="ninertia"> 44, </key>
<key name="nminimal"> 44, </key>
<key name="nod"> 21, </key>
@ -863,14 +872,14 @@
<key name="nth"> 65, </key>
<key name="numb"> 27,35,41,47,48,49,52,59,64,65,72,74,79, </key>
<key name="number"> 48, </key>
<key name="object"> 1,2,3,4,5,6,8,9,10,11,14,16,17,18,19,21,24,25,26,28,29,34,35,37,38,40,32,30,42,43,45,46,47,51,52,54,55,56,57,58,59,60,61,65,66,68,69,73,74,75,31,33,78,79,80,81,83, </key>
<key name="object"> 1,2,3,4,5,6,8,9,10,11,14,16,17,18,19,21,24,25,26,28,29,34,35,37,38,40,32,30,42,43,45,46,47,51,52,53,54,55,56,57,58,59,60,61,65,66,68,69,73,74,75,31,33,78,79,80,81,83, </key>
<key name="obtain"> 26,44,46,65, </key>
<key name="occ"> 0,9,15,34,51,71,72,73,79,83, </key>
<key name="occur"> 12, </key>
<key name="offset"> 52,74, </key>
<key name="ok"> 43,44,59,83, </key>
<key name="old"> 56, </key>
<key name="on"> 0,15,22,47,48,49,55,56,59,65,67,82, </key>
<key name="old"> 53,56, </key>
<key name="on"> 0,15,22,47,48,49,56,59,65,67,82, </key>
<key name="opaqu"> 76, </key>
<key name="open"> 12,15,32,51,59,83, </key>
<key name="openwir"> 12,59, </key>
@ -885,11 +894,11 @@
<key name="orientat"> 51, </key>
<key name="orientation"> 10,51, </key>
<key name="origin"> 7,20,23,43,51,70,77,78, </key>
<key name="orthogonal"> 61, </key>
<key name="os"> 59, </key>
<key name="otherwis"> 0,15,45,46,61,75, </key>
<key name="our"> 0,1,2,50,7,9,12,13,14,15,16,17,19,20,21,22,23,24,25,27,28,29,34,35,36,39,42,45,46,47,48,49,52,53,54,55,56,58,60,61,62,63,64,65,66,67,69,70,71,72,73,75,76,77,31,33,78,80,81,83, </key>
<key name="out"> 51,65, </key>
<key name="outsid"> 53, </key>
<key name="outward"> 10, </key>
<key name="ox"> 43,67, </key>
<key name="oy"> 43, </key>
@ -916,9 +925,9 @@
<key name="p8"> 8,18, </key>
<key name="p9"> 8, </key>
<key name="pan"> 51, </key>
<key name="parallel"> 7,42,43,65, </key>
<key name="parallel"> 7,42,65, </key>
<key name="paramet"> 0,15,56,65, </key>
<key name="parameter"> 4,16,35,59,65,67,76,79,81, </key>
<key name="parameter"> 4,16,35,53,59,65,67,76,79,81, </key>
<key name="parameterization"> 65, </key>
<key name="parametric"> 65, </key>
<key name="paramt"> 0, </key>
@ -927,16 +936,17 @@
<key name="partition1"> 4, </key>
<key name="partition2"> 4, </key>
<key name="partition3"> 4, </key>
<key name="pas"> 5,21,42,44,47,55,67, </key>
<key name="partitionalgo"> 53, </key>
<key name="pas"> 5,21,42,44,47,55,61,67, </key>
<key name="path"> 18,54, </key>
<key name="pathshap"> 54, </key>
<key name="perform"> 4,26,53,74, </key>
<key name="perform"> 4,26,51,74, </key>
<key name="perpendicular"> 67, </key>
<key name="pi"> 47,59,74, </key>
<key name="pictur"> 46, </key>
<key name="pip"> 18,54, </key>
<key name="plac"> 46,51,65, </key>
<key name="plan"> 2,3,4,45,51,53,55,67,74,82,83, </key>
<key name="plan"> 2,3,4,45,51,53,55,61,67,74,82,83, </key>
<key name="planar"> 29,67,68,74,82, </key>
<key name="plane1"> 3, </key>
<key name="plane2"> 3, </key>
@ -944,9 +954,9 @@
<key name="plug"> 32, </key>
<key name="plung"> 2, </key>
<key name="png"> 51,79, </key>
<key name="point"> 0,1,3,4,50,7,8,14,15,18,20,21,23,24,25,28,37,40,42,43,44,45,47,51,52,55,56,59,62,65,67,68,70,74,75,77,33,78,83, </key>
<key name="point1"> 1,3,7,8,14,24,28,42,55,75,78, </key>
<key name="point2"> 1,3,7,8,14,24,28,42,55,75,78, </key>
<key name="point"> 0,1,3,4,50,7,8,14,15,18,20,21,23,24,25,28,37,40,42,43,44,45,47,51,52,55,56,59,61,62,65,67,68,70,74,75,77,33,78,83, </key>
<key name="point1"> 1,3,7,8,14,24,28,42,55,61,75,78, </key>
<key name="point2"> 1,3,7,8,14,24,28,42,55,61,75,78, </key>
<key name="point3"> 1,3,8,14,55, </key>
<key name="point4"> 3,8, </key>
<key name="point5"> 3, </key>
@ -960,9 +970,9 @@
<key name="possibl"> 5,21,58,65,33, </key>
<key name="precision"> 59,64, </key>
<key name="predefin"> 67, </key>
<key name="preferrabl"> 53, </key>
<key name="pres"> 43,51, </key>
<key name="presentation"> 79, </key>
<key name="presum"> 43, </key>
<key name="preview"> 51, </key>
<key name="previou"> 65,67, </key>
<key name="primitiv"> 7,20,23,38,30,57,70,77, </key>
@ -1023,7 +1033,7 @@
<key name="regard"> 56, </key>
<key name="relativ"> 67, </key>
<key name="relevant"> 81, </key>
<key name="remain"> 51,81, </key>
<key name="remain"> 51,53,81, </key>
<key name="remaind"> 46, </key>
<key name="remot"> 51, </key>
<key name="remov"> 40,45,46,51,59,61,65,71,72,73,75,83, </key>
@ -1055,6 +1065,8 @@
<key name="rot2d"> 74, </key>
<key name="rotat"> 47,51,60,61,74, </key>
<key name="rotation"> 47,51,59,61,74, </key>
<key name="rotation1"> 74, </key>
<key name="rotation2"> 74, </key>
<key name="rul"> 65, </key>
<key name="runtimeerror"> 44,59, </key>
<key name="s"> 12,14,15,18,37,48,59,62,71,72,73,83, </key>
@ -1070,16 +1082,15 @@
<key name="script"> 0,1,2,50,7,9,12,13,14,15,16,17,19,20,21,22,23,24,25,27,28,29,34,35,36,39,42,45,46,47,48,49,52,53,54,55,56,58,60,61,62,63,64,65,66,67,69,70,71,72,73,75,76,77,31,33,78,80,81,83, </key>
<key name="se"> 46,51,81, </key>
<key name="search"> 32, </key>
<key name="second"> 7,14,20,23,28,43,45,46,48,49,53,55,56,65,68,70,75,77,31,78,82, </key>
<key name="second"> 7,14,20,23,28,43,45,46,48,49,53,55,56,61,65,68,70,75,77,31,78,82, </key>
<key name="section"> 2,6,51,63,31, </key>
<key name="seem"> 59, </key>
<key name="segment"> 65,67, </key>
<key name="select"> 0,1,2,4,7,9,10,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,29,34,35,36,39,40,32,42,43,45,46,47,48,49,51,52,53,54,55,56,58,59,60,61,62,63,64,65,66,67,69,70,71,72,73,75,77,33,78,79,80,81,82,83, </key>
<key name="selection"> 34,67,82,83, </key>
<key name="sens"> 53, </key>
<key name="separat"> 31, </key>
<key name="serv"> 21,28,54,60, </key>
<key name="set"> 0,15,27,29,37,47,52,56,82, </key>
<key name="set"> 0,15,27,29,37,47,51,52,56,82, </key>
<key name="setcolor"> 11,16, </key>
<key name="setdisplaymod"> 3,4,5,6,8,11,18,37,57,59,68,74,81, </key>
<key name="settransparency"> 3,11,37,68,74,76, </key>
@ -1097,7 +1108,7 @@
<key name="shar"> 13, </key>
<key name="sharp"> 65, </key>
<key name="shel"> 13,19,37,52,66,69,81, </key>
<key name="shell"> 50,10,28,37,52,54,60,66,69, </key>
<key name="shell"> 50,10,28,37,52,53,54,60,66,69, </key>
<key name="shift"> 46,56,80,83, </key>
<key name="short"> 16,81, </key>
<key name="shortcut"> 29, </key>
@ -1106,9 +1117,9 @@
<key name="shown"> 43, </key>
<key name="sid"> 55, </key>
<key name="sign"> 52, </key>
<key name="similar"> 55, </key>
<key name="simp"> 43, </key>
<key name="simpl"> 47,48,49, </key>
<key name="sinc"> 53, </key>
<key name="singl"> 29, </key>
<key name="six"> 50,8, </key>
<key name="siz"> 9,55,65, </key>
@ -1120,7 +1131,7 @@
<key name="skip"> 83, </key>
<key name="small"> 51,65, </key>
<key name="so"> 29,46, </key>
<key name="solid"> 50,7,8,20,23,26,28,37,48,52,54,60,69,70,77, </key>
<key name="solid"> 50,7,8,20,23,26,28,37,48,52,53,54,60,69,70,77, </key>
<key name="solid1"> 8, </key>
<key name="solid2"> 8, </key>
<key name="sort"> 26, </key>
@ -1165,6 +1176,7 @@
<key name="subtraction"> 46, </key>
<key name="successful"> 44, </key>
<key name="sup_fac"> 59, </key>
<key name="support"> 53, </key>
<key name="suppres"> 59,71,72,73, </key>
<key name="suppressfac"> 59,71, </key>
<key name="suppresshol"> 59,72, </key>
@ -1175,7 +1187,7 @@
<key name="symmetric"> 74, </key>
<key name="symmetrical"> 45,74, </key>
<key name="symmetry"> 45, </key>
<key name="system"> 20,23,43,46,70,74,82, </key>
<key name="system"> 20,23,43,46,55,70,74,82, </key>
<key name="t"> 7,10,28,40,51,70, </key>
<key name="tak"> 65, </key>
<key name="tangent"> 65,67, </key>
@ -1194,8 +1206,8 @@
<key name="theshap"> 39,59,33, </key>
<key name="thestartlc"> 46, </key>
<key name="thetoleranc"> 39, </key>
<key name="third"> 7, </key>
<key name="thre"> 1,3,14,18,21,37,43,45,55,56,68,74,82, </key>
<key name="third"> 7,61, </key>
<key name="thre"> 1,3,14,18,21,37,43,45,55,56,61,68,74,82, </key>
<key name="thu"> 65,76, </key>
<key name="tim"> 21,47,49,56,74, </key>
<key name="tobezi"> 65, </key>
@ -1230,16 +1242,16 @@
<key name="triangl"> 51, </key>
<key name="trihedron"> 51, </key>
<key name="trimsiz"> 3,4,55, </key>
<key name="tru"> 0,15,53,59,33, </key>
<key name="tru"> 0,15,59,33, </key>
<key name="truncat"> 20, </key>
<key name="try"> 29, </key>
<key name="tt"> 37,68, </key>
<key name="tui"> 0,1,2,50,7,9,10,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,29,34,35,36,39,42,43,45,46,47,48,49,52,53,54,55,56,58,60,61,62,63,64,65,66,67,69,70,71,72,73,75,76,77,31,33,78,79,80,81,83, </key>
<key name="tupl"> 33, </key>
<key name="two"> 0,3,4,50,7,8,9,13,17,18,20,24,36,37,39,40,46,47,48,49,53,65,68,70,74,77,33,82,83, </key>
<key name="two"> 0,3,4,50,7,8,9,13,17,18,20,24,36,37,39,40,46,47,48,49,53,61,65,68,70,74,77,33,82,83, </key>
<key name="typ"> 21,26,27,53,65,67,31,33,83, </key>
<key name="u"> 65, </key>
<key name="uncheck"> 10, </key>
<key name="uncheck"> 10,51, </key>
<key name="underly"> 15,65, </key>
<key name="unionlist"> 40, </key>
<key name="up"> 16,20,81, </key>
@ -1270,6 +1282,7 @@
<key name="vector2_arc2"> 18, </key>
<key name="vector3"> 18, </key>
<key name="versa"> 65, </key>
<key name="version"> 53, </key>
<key name="vertex"> 3,4,6,14,15,18,20,23,24,25,28,37,44,45,54,55,56,57,59,60,62,70,74,77,33, </key>
<key name="vertex_n"> 56, </key>
<key name="vertex1"> 24, </key>
@ -1305,7 +1318,7 @@
<key name="whil"> 12,18,37,44,65,81, </key>
<key name="whos"> 29,33, </key>
<key name="wid"> 38,30, </key>
<key name="will"> 0,1,2,50,7,9,10,12,13,14,15,17,19,20,21,22,23,24,25,26,27,28,29,34,35,36,39,32,42,43,45,46,47,48,49,51,52,53,54,55,56,58,60,61,62,63,64,65,66,67,69,70,71,72,73,75,77,78,80,83, </key>
<key name="will"> 0,1,2,50,7,9,10,12,13,14,15,17,19,20,21,22,23,24,25,26,27,28,29,34,35,36,39,32,42,45,46,47,48,49,51,52,53,54,55,56,58,60,61,62,63,64,65,66,67,69,70,71,72,73,75,77,78,80,83, </key>
<key name="wir"> 3,50,12,15,18,26,28,29,37,44,54,59,60,67,68,72,73,74,80, </key>
<key name="wire_clos"> 59, </key>
<key name="wire_nam"> 59, </key>
@ -1339,7 +1352,6 @@
<key name="ymax"> 44,33, </key>
<key name="ymin"> 44,33, </key>
<key name="your"> 16,32,64,72,79,82,83, </key>
<key name="yourselv"> 43, </key>
<key name="yz_fac"> 5, </key>
<key name="yz_face_ind"> 5, </key>
<key name="z"> 2,3,7,43,56,70,33, </key>

View File

@ -44,7 +44,6 @@
</book>
<book name="Viewing geometrical objects" >
<item name="Viewing Geometrical Objects" url="viewing_geometrical_objects.htm" />
<item name="OCC 3D Viewer" url="occ_viewer.htm" />
<item name="Display Mode" url="wireframe_and_shading.htm" />
<item name="Color" url="color.htm" />
<item name="Transparency" url="transparency.htm" />

View File

@ -17,9 +17,20 @@ if (navigator.appName !="Netscape")
img_whs1 { width:20px; height:20px; border-style:none; }
p.whs2 { font-size:12pt; }
p.whs3 { font-size:12pt; margin-left:40px; }
img_whs4 { border:none; width:400px; height:231px; float:none; }
img_whs5 { border:none; width:312px; height:266px; float:none; border-style:none; }
img_whs6 { border:none; width:312px; height:274px; float:none; border-style:none; }
img_whs4 { border:none; width:400px; height:277px; float:none; border-style:none; }
img_whs5 { border:none; width:400px; height:312px; float:none; border-style:none; }
img_whs6 { border:none; width:400px; height:320px; float:none; border-style:none; }
table.whs7 { x-cell-content-align:top; width:39.231%; border-spacing:0px; }
col.whs8 { width:52.696%; }
col.whs9 { width:47.304%; }
tr.whs10 { x-cell-content-align:top; }
td.whs11 { width:52.696%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-right-style:none; border-left-style:none; border-top-style:none; }
p.whs12 { font-style:italic; }
td.whs13 { width:47.304%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-top-style:none; border-right-style:none; }
td.whs14 { width:52.696%; padding-right:10px; padding-left:10px; border-right-style:none; border-left-style:none; border-bottom-style:none; }
img_whs15 { border:none; width:176px; height:217px; border-style:none; }
td.whs16 { width:47.304%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-right-style:none; }
img_whs17 { border:none; width:191px; height:217px; border-style:none; }
-->
</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
<!--
@ -82,14 +93,20 @@ if (window.writeIntopicBar)
</script>
<h1><b style="font-weight: bold;"><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image34.gif" width="20px" height="20px" border="0" class="img_whs1"></font></span></b>Working Plane</h1>
<p>Definition of a <span style="font-weight: bold;"><B>Working Plane</B></span>
is necessary for work with <span style="font-weight: bold;"><B><a href="sketcher.htm">Sketcher</a></B></span>.
</p>
<p>&nbsp;</p>
<p>To create a <span style="font-weight: bold;"><B>Working Plane</B></span> in
the <span style="font-weight: bold;"><B>Main Menu</B></span> select <span style="font-weight: bold;"><B>New
Entity - &gt; Basic - &gt; Working Plane</B></span></p>
<p class="whs2">&nbsp;</p>
<p class="whs2">There are some algorithms to set the <span
style="font-weight: bold;"><B>Working Plane</B></span> and the Camera Position.</p>
<p class="whs2">There is a number of algorithms to set the
<span style="font-weight: bold;"><B>Working Plane</B></span> and the Camera Position.</p>
<p class="whs2">&nbsp;</p>
@ -98,12 +115,12 @@ if (window.writeIntopicBar)
Face</B></span> or a <span style="font-weight: bold;"><B>Local Coordinate System</B></span>
to be your <span style="font-weight: bold;"><B>Working Plane</B></span></p>
<p class="whs2"><b>Arguments:</b> Name + 1 selection (face
or planar face), </p>
<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
Name + 1 selection (face or planar face), </p>
<p class="whs2">&nbsp;</p>
<p class="whs3"><img src="pics/workplane4.png" x-maintain-ratio="TRUE" width="400px" height="231px" border="0" class="img_whs4"></p>
<p class="whs3"><img src="pics/workplane4.png" x-maintain-ratio="TRUE" width="400px" height="277px" border="0" class="img_whs4"></p>
<p class="whs2">&nbsp;</p>
@ -112,9 +129,11 @@ if (window.writeIntopicBar)
<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
Name + &nbsp;2
vectors, </p>
vectors.</p>
<p class="whs3"><img src="pics/workplane5.png" x-maintain-ratio="TRUE" width="312px" height="266px" border="0" class="img_whs5"></p>
<p class="whs2">&nbsp;</p>
<p class="whs3"><img src="pics/workplane5.png" x-maintain-ratio="TRUE" width="400px" height="312px" border="0" class="img_whs5"></p>
<p class="whs2">&nbsp;</p>
@ -124,9 +143,38 @@ if (window.writeIntopicBar)
<p class="whs2">&nbsp;</p>
<p class="whs3"><img src="pics/workplane6.png" x-maintain-ratio="TRUE" width="312px" height="274px" border="0" class="img_whs6"></p>
<p class="whs3"><img src="pics/workplane6.png" x-maintain-ratio="TRUE" width="400px" height="320px" border="0" class="img_whs6"></p>
<p class="whs2">&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;"><B>Reverse the plane normal</B></span> checkbox
allows changing the direction of the working plane.</p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;"><B>Example:</B></span> Working plane on the
upper face of a box. &nbsp;</p>
<p>&nbsp;</p>
<table x-use-null-cells cellspacing="0" width="39.231%" class="whs7">
<col class="whs8">
<col class="whs9">
<tr valign="top" class="whs10">
<td width="52.696%" class="whs11">
<p class="whs12">Normal Direction</td>
<td width="47.304%" class="whs13">
<p class="whs12">Reversed Direction</td></tr>
<tr valign="top" class="whs10">
<td width="52.696%" class="whs14">
<p><img src="image36.gif" width="176px" height="217px" border="0" class="img_whs15"></td>
<td width="47.304%" class="whs16">
<p><img src="image47.gif" width="191px" height="217px" border="0" class="img_whs17"></td></tr>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>

View File

@ -147,7 +147,7 @@ module GEOM
/*!
* Get the TopoDS_Shape, for colocated case only.
*/
long getShape();
long long getShape();
/*!
######################################################################
@ -888,6 +888,29 @@ module GEOM
in boolean theWithContact ,
in boolean theWithCorrection );
/*!
* Create a shape by extrusion of the profile shape along
* 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.
* \param theSeqBases - list of Bases shape to be extruded.
* \param theSeqSubBases - list of corresponding subshapes of section shapes.
* \param theLocations - list of locations on the path corresponding
* specified list of the Bases shapes. Number of locations
* should be equal to number of bases or list of locations can be empty.
* \param thePath - Path shape to extrude the base shape along it.
* \param theWithContact - the mode defining that the section is translated to be in
* contact with the spine.
* \param - WithCorrection - defining that the section is rotated to be
* orthogonal to the spine tangent in the correspondent point
* \return New GEOM_Object, containing the created pipe.
*/
GEOM_Object MakePipeWithShellSections (in ListOfGO theSeqBases,
in ListOfGO theSeqSubBases,
in ListOfGO theLocations,
in GEOM_Object thePath,
in boolean theWithContact ,
in boolean theWithCorrection );
};
/*!
@ -966,6 +989,25 @@ module GEOM
*/
GEOM_Object MakeGlueFaces (in GEOM_Object theShape, in double theTolerance);
/*!
* Find coincident faces in theShape for possible gluing.
* \param theShape Initial shape.
* \param theTolerance Maximum distance between faces, which can be considered as coincident.
* \return ListOfGO
*/
ListOfGO GetGlueFaces (in GEOM_Object theShape, in double theTolerance);
/*!
* Replace coincident faces in theShape by one face
* in compliance with given list of faces
* \param theShape Initial shape.
* \param theTolerance Maximum distance between faces, which can be considered as coincident.
* \param theFaces List of faces for gluing.
* \return New GEOM_Object, containing a copy of theShape without some faces.
*/
GEOM_Object MakeGlueFacesByList (in GEOM_Object theShape, in double theTolerance,
in ListOfGO theFaces);
/*!
* Explode a shape on subshapes of a given type.
* \param theShape Shape to be exploded.
@ -1750,6 +1792,20 @@ module GEOM
in GEOM_Object thePnt2,
in GEOM_Object thePnt3);
/*!
* Create an arc of circle of center C from one point to another
* \param theCenter Center point of the arc.
* \param thePnt1 Start point of the arc.
* \param thePnt2 End point of the arc.
* \param theSense Orientation of the arc
* \return New GEOM_Object, containing the created arc.
*/
GEOM_Object MakeArcCenter (in GEOM_Object theCenter,
in GEOM_Object thePnt1,
in GEOM_Object thePnt2,
in boolean theSense);
/*!
* Create a polyline on the set of points.
* \param thePoints Sequence of points for the polyline.
@ -2100,6 +2156,52 @@ module GEOM
out string_array thePatterns);
};
/*!
* GEOM_IKindOfShape: namespace for shape_kind enumeration.
*/
interface GEOM_IKindOfShape
{
enum shape_kind {
NO_SHAPE,
// COMPOSITEs
COMPOUND,
COMPSOLID,
SHELL,
WIRE,
// SOLIDs
SPHERE, // full sphere
CYLINDER, // cylinder
BOX, // box with faces, parallel to global coordinate planes
ROTATED_BOX, // other box
TORUS, // full torus
CONE, // cone
POLYHEDRON, // solid, bounded by polygons
SOLID, // other solid
// FACEs
SPHERE2D, // spherical face (closed)
CYLINDER2D, // cylindrical face with defined height
TORUS2D, // toroidal face (closed)
CONE2D, // conical face with defined height
DISK_CIRCLE, // planar, bounded by circle
DISK_ELLIPSE, // planar, bounded by ellipse
POLYGON, // planar, bounded by segments
PLANE, // infinite planar
PLANAR, // other planar
FACE, // other face
// EDGEs
CIRCLE, // full circle
ARC_CIRCLE, // arc of circle
ELLIPSE, // full ellipse
ARC_ELLIPSE, // arc of ellipse
LINE, // infinite segment
SEGMENT, // segment
EDGE, // other edge
// VERTEX
VERTEX
};
};
/*!
* GEOM_IMeasureOperations: Interface for measurement (distance, whatis) and
* properties calculation (like Centre of Mass, Inertia, etc.).
@ -2107,6 +2209,21 @@ module GEOM
*/
interface GEOM_IMeasureOperations : GEOM_IOperations
{
/*!
* Get kind of theShape.
* \param theShape Shape to get a kind of.
* \param theIntegers Output. Integer and enumerated shape's parameters
* (kind of surface, closed/unclosed, number of edges, etc.)
* \param theDoubles Output. Double shape's parameters (coordinates, dimensions, etc.)
* \note Concrete meaning of each value, returned via \a theIntegers
* or \a theDoubles list depends on the kind of the shape.
* \return Returns a kind of shape in terms of <VAR>GEOM_IKindOfShape.shape_kind</VAR> enumeration.
*/
//short KindOfShape (in GEOM_Object theShape,
GEOM_IKindOfShape::shape_kind KindOfShape (in GEOM_Object theShape,
out ListOfLong theIntegers,
out ListOfDouble theDoubles);
/*!
* Get position (LCS) of theShape.
* \param theShape Shape to calculate position of.

View File

@ -177,6 +177,13 @@ module GEOM
in boolean theWithContact ,
in boolean theWithCorrection );
GEOM_Object MakePipeWithShellSections (in ListOfGO theSeqBases,
in ListOfGO theSeqSubBases,
in ListOfGO theLocations,
in GEOM_Object thePath,
in boolean theWithContact ,
in boolean theWithCorrection );
//-----------------------------------------------------------//
// BooleanOperations //
//-----------------------------------------------------------//
@ -306,6 +313,11 @@ module GEOM
GEOM_Object MakeCompound (in GEOM_List theShapes) ;
GEOM_Object MakeGlueFaces (in GEOM_Object theShape,
in double theTolerance);
GEOM_List GetGlueFaces (in GEOM_Object theShape,
in double theTolerance);
GEOM_Object MakeGlueFacesByList (in GEOM_Object theShape,
in double theTolerance,
in ListOfGO theFaces);
GEOM_List MakeExplode (in GEOM_Object theShape,
in long theShapeType,
in boolean isSorted) ;
@ -403,6 +415,10 @@ module GEOM
GEOM_Object MakeArc (in GEOM_Object thePnt1,
in GEOM_Object thePnt2,
in GEOM_Object thePnt3) ;
GEOM_Object MakeArcCenter (in GEOM_Object theCenter,
in GEOM_Object thePnt1,
in GEOM_Object thePnt2,
in boolean theSense) ;
GEOM_Object MakePolyline (in GEOM_List thePoints) ;
GEOM_Object MakeSplineBezier (in GEOM_List thePoints) ;
GEOM_Object MakeSplineInterpolation (in GEOM_List thePoints) ;

View File

@ -3857,6 +3857,42 @@
<DataStream-list></DataStream-list>
</component-service>
<component-service>
<service-name>MakeArcCenter</service-name>
<service-author>ngr</service-author>
<service-version>3.2.6</service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
<inParameter>
<inParameter-name>theCenter</inParameter-name>
<inParameter-type>GEOM_Object</inParameter-type>
<inParameter-comment>unknown</inParameter-comment>
</inParameter>
<inParameter>
<inParameter-name>thePnt1</inParameter-name>
<inParameter-type>GEOM_Object</inParameter-type>
<inParameter-comment>unknown</inParameter-comment>
</inParameter>
<inParameter>
<inParameter-name>thePnt2</inParameter-name>
<inParameter-type>GEOM_Object</inParameter-type>
<inParameter-comment>unknown</inParameter-comment>
</inParameter>
<inParameter>
<inParameter-name>theSense</inParameter-name>
<inParameter-type>boolean</inParameter-type>
<inParameter-comment>unknown</inParameter-comment>
</inParameter>
</inParameter-list>
<outParameter-list>
<outParameter>
<outParameter-name>return</outParameter-name>
<outParameter-type>GEOM_Object</outParameter-type>
<outParameter-comment>unknown</outParameter-comment>
</outParameter>
</outParameter-list>
<DataStream-list></DataStream-list>
</component-service> <component-service>
<service-name>MakePolyline</service-name>
<service-author>mkr</service-author>
<service-version>2.1.0</service-version>

View File

@ -1,5 +1,5 @@
Import: BREP|IGES|STEP
Export: BREP|IGES|IGES_5_3|STEP
Import: BREP|IGES|STEP|ACIS
Export: BREP|IGES|IGES_5_3|STEP|STL_Bin|STL_ASCII|ACIS
BREP.Import: libBREPImport
BREP.Export: libBREPExport
@ -16,3 +16,13 @@ IGES_5_3.Pattern: IGES 5.3 Files ( *.iges *.igs )
STEP.Import: libSTEPImport
STEP.Export: libSTEPExport
STEP.Pattern: STEP Files ( *.step *.stp )
STL_Bin.Export: libSTLExport.so
STL_Bin.Pattern: STL Binary Files ( *.stl )
STL_ASCII.Export: libSTLExport.so
STL_ASCII.Pattern: STL ASCII Files ( *.stl )
ACIS.Import: libACISImport.so
ACIS.Export: libACISExport.so
ACIS.Pattern: ACIS Files ( *.sat )

View File

@ -188,6 +188,8 @@ check_blocks_compound.png \
free_faces.png \
propagate.png \
redo.png \
undo.png
undo.png \
arccenter.png \
glue2.png
nodist_salomeres_DATA = GEOMCatalog.xml

BIN
resources/arccenter.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 485 B

BIN
resources/glue2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 410 B

View File

@ -59,14 +59,15 @@ BasicGUI_ArcDlg::BasicGUI_ArcDlg(GeometryGUI* theGeometryGUI, QWidget* parent,
WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu)
{
QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_ARC")));
QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT")));
QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_ARC_CENTER")));
QPixmap image2(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT")));
setCaption(tr("GEOM_ARC_TITLE"));
/***************************************************************/
GroupConstructors->setTitle(tr("GEOM_ARC"));
RadioButton1->setPixmap(image0);
RadioButton2->close(TRUE);
RadioButton2->setPixmap(image1);
RadioButton3->close(TRUE);
Group3Pnts = new DlgRef_3Sel_QTD(this, "Group3Pnts");
@ -79,11 +80,29 @@ BasicGUI_ArcDlg::BasicGUI_ArcDlg(GeometryGUI* theGeometryGUI, QWidget* parent,
Group3Pnts->LineEdit2->setReadOnly( true );
Group3Pnts->LineEdit3->setReadOnly( true );
Group3Pnts->PushButton1->setPixmap(image1);
Group3Pnts->PushButton2->setPixmap(image1);
Group3Pnts->PushButton3->setPixmap(image1);
Group3Pnts->PushButton1->setPixmap(image2);
Group3Pnts->PushButton2->setPixmap(image2);
Group3Pnts->PushButton3->setPixmap(image2);
Group3Pnts2 = new DlgRef_3Sel1Check_QTD(this, "Group3Pnts2");
Group3Pnts2->GroupBox1->setTitle(tr("GEOM_POINTS"));
Group3Pnts2->TextLabel1->setText(tr("GEOM_CENTER_POINT"));
Group3Pnts2->TextLabel2->setText(tr("GEOM_POINT_I").arg("Start"));
Group3Pnts2->TextLabel3->setText(tr("GEOM_POINT_I").arg("End"));
Group3Pnts2->LineEdit1->setReadOnly( true );
Group3Pnts2->LineEdit2->setReadOnly( true );
Group3Pnts2->LineEdit3->setReadOnly( true );
Group3Pnts2->PushButton1->setPixmap(image2);
Group3Pnts2->PushButton2->setPixmap(image2);
Group3Pnts2->PushButton3->setPixmap(image2);
Group3Pnts2->radioButton4->setText(tr("GEOM_REVERSE"));
Layout1->addWidget( Group3Pnts, 2, 0 );
Layout1->addWidget( Group3Pnts2, 2, 0 );
setHelpFileName("arc.htm");
@ -110,16 +129,20 @@ void BasicGUI_ArcDlg::Init()
// myGeomGUI->SetState( 0 );
globalSelection( GEOM_POINT );
myConstructorId = -1;
myEditCurrentArgument = Group3Pnts->LineEdit1;
myEditCurrentArgument->setFocus();
myPoint1 = myPoint2 = myPoint3 = GEOM::GEOM_Object::_nil();
Group3Pnts2->radioButton4->setChecked(FALSE);
/* signals and slots connections */
connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel()));
connect(myGeomGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog()));
connect(myGeomGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel()));
connect(GroupConstructors, SIGNAL(clicked(int)), this, SLOT(ConstructorsClicked(int)));
connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk()));
connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply()));
@ -131,10 +154,23 @@ void BasicGUI_ArcDlg::Init()
connect(Group3Pnts->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
connect(Group3Pnts->LineEdit3, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
connect(Group3Pnts2->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
connect(Group3Pnts2->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
connect(Group3Pnts2->PushButton3, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
connect(Group3Pnts2->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
connect(Group3Pnts2->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
connect(Group3Pnts2->LineEdit3, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
connect(Group3Pnts2->radioButton4, SIGNAL(stateChanged(int)), this, SLOT(ReverseSense(int)));
connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
initName( tr( "GEOM_ARC" ));
ConstructorsClicked( 0 );
}
@ -173,8 +209,13 @@ bool BasicGUI_ArcDlg::ClickOnApply()
Group3Pnts->LineEdit1->setText( "" );
Group3Pnts->LineEdit2->setText( "" );
Group3Pnts->LineEdit3->setText( "" );
myEditCurrentArgument = Group3Pnts->LineEdit1;
Group3Pnts2->LineEdit1->setText( "" );
Group3Pnts2->LineEdit2->setText( "" );
Group3Pnts2->LineEdit3->setText( "" );
if (getConstructorId() == 0) myEditCurrentArgument = Group3Pnts->LineEdit1;
if (getConstructorId() == 1) myEditCurrentArgument = Group3Pnts2->LineEdit1;
ConstructorsClicked( getConstructorId() );
return true;
}
@ -185,25 +226,55 @@ bool BasicGUI_ArcDlg::ClickOnApply()
//=================================================================================
void BasicGUI_ArcDlg::SelectionIntoArgument()
{
myEditCurrentArgument->setText("");
if ((getConstructorId() != 0) && (getConstructorId() != 1))
return;
if ( IObjectCount() != 1 )
myEditCurrentArgument->setText("");
if ( IObjectCount() != 1 ){
switch (getConstructorId())
{
case 0:
{
if ( myEditCurrentArgument == Group3Pnts->LineEdit1 ) myPoint1 = GEOM::GEOM_Object::_nil();
else if ( myEditCurrentArgument == Group3Pnts->LineEdit2 ) myPoint2 = GEOM::GEOM_Object::_nil();
else if ( myEditCurrentArgument == Group3Pnts->LineEdit3 ) myPoint3 = GEOM::GEOM_Object::_nil();
return;
break;
}
case 1:
{
if ( myEditCurrentArgument == Group3Pnts2->LineEdit1 ) myPoint1 = GEOM::GEOM_Object::_nil();
else if ( myEditCurrentArgument == Group3Pnts2->LineEdit2 ) myPoint2 = GEOM::GEOM_Object::_nil();
else if ( myEditCurrentArgument == Group3Pnts2->LineEdit3 ) myPoint3 = GEOM::GEOM_Object::_nil();
return;
break;
}
}
}
// nbSel == 1
Standard_Boolean aRes = Standard_False;
GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes );
if ( !CORBA::is_nil( aSelectedObject ) && aRes )
{
switch (getConstructorId())
{
case 0:
{
myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
if ( myEditCurrentArgument == Group3Pnts->LineEdit1 ) myPoint1 = aSelectedObject;
else if ( myEditCurrentArgument == Group3Pnts->LineEdit2 ) myPoint2 = aSelectedObject;
else if ( myEditCurrentArgument == Group3Pnts->LineEdit3 ) myPoint3 = aSelectedObject;
break;
}
case 1:
{
myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
if ( myEditCurrentArgument == Group3Pnts2->LineEdit1 ) myPoint1 = aSelectedObject;
else if ( myEditCurrentArgument == Group3Pnts2->LineEdit2 ) myPoint2 = aSelectedObject;
else if ( myEditCurrentArgument == Group3Pnts2->LineEdit3 ) myPoint3 = aSelectedObject;
break;
}
}
}
displayPreview();
@ -217,11 +288,23 @@ void BasicGUI_ArcDlg::SelectionIntoArgument()
void BasicGUI_ArcDlg::SetEditCurrentArgument()
{
QPushButton* send = (QPushButton*)sender();
switch (getConstructorId())
{
case 0:
{
if ( send == Group3Pnts->PushButton1 ) myEditCurrentArgument = Group3Pnts->LineEdit1;
else if ( send == Group3Pnts->PushButton2 ) myEditCurrentArgument = Group3Pnts->LineEdit2;
else if ( send == Group3Pnts->PushButton3 ) myEditCurrentArgument = Group3Pnts->LineEdit3;
break;
}
case 1:
{
if ( send == Group3Pnts2->PushButton1 ) myEditCurrentArgument = Group3Pnts2->LineEdit1;
else if ( send == Group3Pnts2->PushButton2 ) myEditCurrentArgument = Group3Pnts2->LineEdit2;
else if ( send == Group3Pnts2->PushButton3 ) myEditCurrentArgument = Group3Pnts2->LineEdit3;
break;
}
}
myEditCurrentArgument->setFocus();
SelectionIntoArgument();
}
@ -234,9 +317,8 @@ void BasicGUI_ArcDlg::SetEditCurrentArgument()
void BasicGUI_ArcDlg::LineEditReturnPressed()
{
QLineEdit* send = (QLineEdit*)sender();
if ( send == Group3Pnts->LineEdit1 ||
send == Group3Pnts->LineEdit2 ||
send == Group3Pnts->LineEdit3 )
if ( send == Group3Pnts->LineEdit1 || send == Group3Pnts->LineEdit2 || send == Group3Pnts->LineEdit3 ||
send == Group3Pnts2->LineEdit1 || send == Group3Pnts2->LineEdit2 || send == Group3Pnts2->LineEdit3 )
{
myEditCurrentArgument = send;
GEOMBase_Skeleton::LineEditReturnPressed();
@ -264,6 +346,9 @@ void BasicGUI_ArcDlg::ActivateThisDialog()
Group3Pnts->LineEdit2->setText( "" );
Group3Pnts->LineEdit3->setText( "" );
myPoint1 = myPoint2 = myPoint3 = GEOM::GEOM_Object::_nil();
ConstructorsClicked( getConstructorId() );
}
//=================================================================================
@ -320,11 +405,34 @@ bool BasicGUI_ArcDlg::isValid( QString& msg )
//=================================================================================
bool BasicGUI_ArcDlg::execute( ObjectList& objects )
{
GEOM::GEOM_Object_var anObj =
GEOM::GEOM_ICurvesOperations::_narrow(getOperation())->MakeArc(myPoint1, myPoint2, myPoint3);
if ( !anObj->_is_nil() )
bool res = false;
GEOM::GEOM_Object_var anObj;
switch (getConstructorId())
{
case 0:
{
if ( !CORBA::is_nil(myPoint1) && !CORBA::is_nil(myPoint2) &&!CORBA::is_nil(myPoint3) ){
anObj = GEOM::GEOM_ICurvesOperations::_narrow(getOperation())->MakeArc(myPoint1, myPoint2, myPoint3);
res = true;
}
break;
}
case 1:
{
bool Sense;
(Group3Pnts2->radioButton4->isChecked()) ? Sense=true : Sense = false;
if ( !CORBA::is_nil(myPoint1) && !CORBA::is_nil(myPoint2) &&!CORBA::is_nil(myPoint3) ){
anObj = GEOM::GEOM_ICurvesOperations::_narrow(getOperation())->MakeArcCenter(myPoint1, myPoint2, myPoint3,Sense);
res = true;
}
break;
}
}
if ( !anObj->_is_nil() ){
objects.push_back( anObj._retn() );
return true;
}
return res;
}
//=================================================================================
@ -335,3 +443,45 @@ void BasicGUI_ArcDlg::closeEvent( QCloseEvent* e )
{
GEOMBase_Skeleton::closeEvent( e );
}
//=================================================================================
// function : ConstructorsClicked()
// purpose : Radio button management
//=================================================================================
void BasicGUI_ArcDlg::ConstructorsClicked( int constructorId )
{
disconnect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0);
switch (constructorId)
{
case 0:
{
Group3Pnts->show();
resize(0, 0);
Group3Pnts2->hide();
connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
break;
}
case 1:
{
Group3Pnts->hide();
resize(0, 0);
Group3Pnts2->show();
connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
break;
}
}
displayPreview();
}
//=================================================================================
// function : ReverseSense()
// purpose : Orientation of the arc
//=================================================================================
void BasicGUI_ArcDlg::ReverseSense(int sense)
{
displayPreview();
}

View File

@ -32,6 +32,7 @@
#include "GEOMBase_Skeleton.h"
#include "DlgRef_3Sel_QTD.h"
#include "DlgRef_3Sel1Check_QTD.h"
//=================================================================================
// class : BasicGUI_ArcDlg
@ -57,10 +58,11 @@ protected:
private :
void Init();
void enterEvent(QEvent* e);
int myConstructorId;
GEOM::GEOM_Object_var myPoint1, myPoint2, myPoint3;
DlgRef_3Sel_QTD* Group3Pnts;
DlgRef_3Sel1Check_QTD* Group3Pnts2;
private slots:
void ClickOnOk();
@ -69,11 +71,11 @@ private slots:
void ActivateThisDialog();
void DeactivateActiveDialog();
void ConstructorsClicked( int );
void LineEditReturnPressed();
void SelectionIntoArgument();
void SetEditCurrentArgument();
void ReverseSense(int);
};
#endif // DIALOGBOX_ARC_H

View File

@ -102,6 +102,16 @@ BasicGUI_WorkingPlaneDlg::BasicGUI_WorkingPlaneDlg(GeometryGUI* theGeometryGUI,
Layout1->addWidget(Group2, 1, 0);
Layout1->addWidget(Group3, 1, 0);
/***************************************************************/
QGroupBox* aReverseGroupBox = new QGroupBox(this, "aReverseGroupBox");
aReverseGroupBox->setTitle(tr(""));
aReverseGroupBox->setColumnLayout(1, Qt::Horizontal);
aReverseGroupBox->setInsideMargin(10);
myReverseCB = new QCheckBox(aReverseGroupBox, "myReverseCB");
myReverseCB->setText(tr("GEOM_REVERSE_PLANE"));
Layout1->addWidget(aReverseGroupBox, 2, 0);
setHelpFileName("working_plane.htm");
@ -156,6 +166,8 @@ void BasicGUI_WorkingPlaneDlg::Init()
connect(Group3->GroupBox1, SIGNAL(clicked(int)), this, SLOT(GroupClicked(int)));
connect(myReverseCB, SIGNAL(clicked()), this, SLOT(onReverse()));
connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
@ -225,7 +237,8 @@ void BasicGUI_WorkingPlaneDlg::ConstructorsClicked(int constructorId)
break;
}
}
displayPreview();
updateWPlane();
}
//=================================================================================
@ -235,6 +248,7 @@ void BasicGUI_WorkingPlaneDlg::ConstructorsClicked(int constructorId)
void BasicGUI_WorkingPlaneDlg::GroupClicked(int groupId)
{
aOriginType = groupId;
updateWPlane();
}
//=================================================================================
@ -255,99 +269,12 @@ bool BasicGUI_WorkingPlaneDlg::ClickOnApply()
{
buttonApply->setFocus();
myGeomGUI->application()->putInfo(tr(""));
const int id = getConstructorId();
if (id == 0) { // by planar face selection
if (CORBA::is_nil(myFace)) {
showError( "Face has to be selected" );
return false;
}
// PAL12781: set center of WPL to face's center of mass
// like it is done for LCS creation
CORBA::Double Ox,Oy,Oz, Zx,Zy,Zz, Xx,Xy,Xz;
Ox = Oy = Oz = Zx = Zy = Xy = Xz = 0.;
Zz = Xx = 1.;
GEOM::GEOM_IMeasureOperations_ptr aMeasureOp =
myGeomGUI->GetGeomGen()->GetIMeasureOperations(getStudyId());
aMeasureOp->GetPosition(myFace, Ox,Oy,Oz, Zx,Zy,Zz, Xx,Xy,Xz);
if (aMeasureOp->IsDone()) {
gp_Pnt aPnt (Ox,Oy,Oz);
gp_Dir aDirN (Zx,Zy,Zz);
gp_Dir aDirX (Xx,Xy,Xz);
myWPlane = gp_Ax3(aPnt, aDirN, aDirX);
} else {
showError( "Wrong shape selected (has to be a planar face)" );
return false;
}
} else if (id == 1) { // by two vectors (Ox & Oz)
if ( CORBA::is_nil( myVectX ) || CORBA::is_nil( myVectZ ) ) {
showError( "Two vectors have to be selected" );
return false;
}
TopoDS_Edge aVectX, aVectZ;
TopoDS_Vertex VX1, VX2, VZ1, VZ2;
gp_Vec aVX, aVZ;
if (!GEOMBase::GetShape( myVectX, aVectX, TopAbs_EDGE ) ||
!GEOMBase::GetShape( myVectZ, aVectZ, TopAbs_EDGE )) {
showError( "Wrong shape selected (two vectors(edges) have to be selected)" );
return false;
}
TopExp::Vertices(aVectX, VX1, VX2, Standard_True);
TopExp::Vertices(aVectZ, VZ1, VZ2, Standard_True);
if (VX1.IsNull() || VX2.IsNull()) {
showError( "Bad OX vector" );
return false;
}
if (VZ1.IsNull() || VZ2.IsNull()) {
showError( "Bad OZ vector" );
return false;
}
aVX = gp_Vec(BRep_Tool::Pnt(VX1), BRep_Tool::Pnt(VX2));
aVZ = gp_Vec(BRep_Tool::Pnt(VZ1), BRep_Tool::Pnt(VZ2));
if (aVX.Magnitude() < Precision::Confusion()) {
showError( "Bad OX vector" );
return false;
}
if (aVZ.Magnitude() < Precision::Confusion()) {
showError( "Bad OZ vector" );
return false;
}
gp_Dir aDirX = gp_Dir(aVX.X(), aVX.Y(), aVX.Z());
gp_Dir aDirZ = gp_Dir(aVZ.X(), aVZ.Y(), aVZ.Z());
if (aDirX.IsParallel(aDirZ, Precision::Angular())) {
showError( "Parallel vectors selected" );
return false;
}
myWPlane = gp_Ax3(BRep_Tool::Pnt(VX1), aDirZ, aDirX);
} else if (id == 2) { // by selection from standard (OXY or OYZ, or OZX)
gp_Ax2 anAx2;
if (aOriginType == 1) anAx2 = gp::XOY();
else if (aOriginType == 2) anAx2 = gp::YOZ();
else if (aOriginType == 0) anAx2 = gp::ZOX();
myWPlane = gp_Ax3(anAx2);
} else {
return false;
}
if (updateWPlane(false)){
myGeomGUI->SetWorkingPlane(myWPlane);
myGeomGUI->ActiveWorkingPlane();
}
return true;
}
@ -387,6 +314,8 @@ void BasicGUI_WorkingPlaneDlg::SelectionIntoArgument()
myVectZ = aSelectedObject;
myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
updateWPlane();
}
@ -430,6 +359,16 @@ void BasicGUI_WorkingPlaneDlg::LineEditReturnPressed()
}
//=================================================================================
// function : onReverse()
// purpose :
//=================================================================================
void BasicGUI_WorkingPlaneDlg::onReverse()
{
updateWPlane();
}
//=================================================================================
// function : ActivateThisDialog()
// purpose :
@ -481,3 +420,130 @@ void BasicGUI_WorkingPlaneDlg::closeEvent( QCloseEvent* e )
{
GEOMBase_Skeleton::closeEvent( e );
}
//=================================================================================
// function : updateWPlane
// purpose :
//=================================================================================
bool BasicGUI_WorkingPlaneDlg::updateWPlane( const bool showPreview )
{
erasePreview();
const int id = getConstructorId();
if (id == 0) { // by planar face selection
if (CORBA::is_nil(myFace)) {
if(!showPreview)
showError( "Face has to be selected" );
return false;
}
// PAL12781: set center of WPL to face's center of mass
// like it is done for LCS creation
CORBA::Double Ox,Oy,Oz, Zx,Zy,Zz, Xx,Xy,Xz;
Ox = Oy = Oz = Zx = Zy = Xy = Xz = 0.;
Zz = Xx = 1.;
GEOM::GEOM_IMeasureOperations_ptr aMeasureOp =
myGeomGUI->GetGeomGen()->GetIMeasureOperations(getStudyId());
aMeasureOp->GetPosition(myFace, Ox,Oy,Oz, Zx,Zy,Zz, Xx,Xy,Xz);
if (aMeasureOp->IsDone()) {
gp_Pnt aPnt (Ox,Oy,Oz);
gp_Dir aDirN (Zx,Zy,Zz);
gp_Dir aDirX (Xx,Xy,Xz);
myWPlane = gp_Ax3(aPnt, aDirN, aDirX);
} else {
if(!showPreview)
showError( "Wrong shape selected (has to be a planar face)" );
return false;
}
} else if (id == 1) { // by two vectors (Ox & Oz)
if ( CORBA::is_nil( myVectX ) || CORBA::is_nil( myVectZ ) ) {
if(!showPreview)
showError( "Two vectors have to be selected" );
return false;
}
TopoDS_Edge aVectX, aVectZ;
TopoDS_Vertex VX1, VX2, VZ1, VZ2;
gp_Vec aVX, aVZ;
if (!GEOMBase::GetShape( myVectX, aVectX, TopAbs_EDGE ) ||
!GEOMBase::GetShape( myVectZ, aVectZ, TopAbs_EDGE )) {
if(!showPreview)
showError( "Wrong shape selected (two vectors(edges) have to be selected)" );
return false;
}
TopExp::Vertices(aVectX, VX1, VX2, Standard_True);
TopExp::Vertices(aVectZ, VZ1, VZ2, Standard_True);
if (VX1.IsNull() || VX2.IsNull()) {
if(!showPreview)
showError( "Bad OX vector" );
return false;
}
if (VZ1.IsNull() || VZ2.IsNull()) {
if(!showPreview)
showError( "Bad OZ vector" );
return false;
}
aVX = gp_Vec(BRep_Tool::Pnt(VX1), BRep_Tool::Pnt(VX2));
aVZ = gp_Vec(BRep_Tool::Pnt(VZ1), BRep_Tool::Pnt(VZ2));
if (aVX.Magnitude() < Precision::Confusion()) {
if(!showPreview)
showError( "Bad OX vector" );
return false;
}
if (aVZ.Magnitude() < Precision::Confusion()) {
if(!showPreview)
showError( "Bad OZ vector" );
return false;
}
gp_Dir aDirX = gp_Dir(aVX.X(), aVX.Y(), aVX.Z());
gp_Dir aDirZ = gp_Dir(aVZ.X(), aVZ.Y(), aVZ.Z());
if (aDirX.IsParallel(aDirZ, Precision::Angular())) {
if(!showPreview)
showError( "Parallel vectors selected" );
return false;
}
myWPlane = gp_Ax3(BRep_Tool::Pnt(VX1), aDirZ, aDirX);
} else if (id == 2) { // by selection from standard (OXY or OYZ, or OZX)
gp_Ax2 anAx2;
if (aOriginType == 1) anAx2 = gp::XOY();
else if (aOriginType == 2) anAx2 = gp::YOZ();
else if (aOriginType == 0) anAx2 = gp::ZOX();
myWPlane = gp_Ax3(anAx2);
} else {
return false;
}
if (myReverseCB->isChecked())
{
myWPlane.YReverse();
myWPlane.ZReverse();
}
if (showPreview)
{
GEOM::GEOM_IBasicOperations_var aBasicOp = getGeomEngine()->GetIBasicOperations( getStudyId() );
GEOM::GEOM_Object_var anObj = aBasicOp->MakeMarker( myWPlane.Location().X(), myWPlane.Location().Y(), myWPlane.Location().Z(),
myWPlane.XDirection().X(), myWPlane.XDirection().Y(), myWPlane.XDirection().Z(),
myWPlane.YDirection().X(), myWPlane.YDirection().Y(), myWPlane.YDirection().Z() );
displayPreview(anObj);
}
return true;
}

View File

@ -35,6 +35,8 @@
#include "DlgRef_2Sel_QTD.h"
#include "DlgRef_3Check_QTD.h"
class QCheckBox;
//=================================================================================
// class : BasicGUI_WorkingPlaneDlg
// purpose :
@ -53,6 +55,8 @@ private:
void Init();
void enterEvent(QEvent* e);
bool updateWPlane(const bool showPreview = true);
GEOM::GEOM_Object_var myFace;
GEOM::GEOM_Object_var myVectX;
GEOM::GEOM_Object_var myVectZ;
@ -63,6 +67,8 @@ private:
DlgRef_2Sel_QTD* Group2;
DlgRef_3Check_QTD* Group3;
QCheckBox* myReverseCB;
gp_Ax3 myWPlane;
private slots:
@ -75,6 +81,7 @@ private slots:
void SetEditCurrentArgument();
void SelectionIntoArgument();
void LineEditReturnPressed();
void onReverse();
void ActivateThisDialog();
void DeactivateActiveDialog();

View File

@ -0,0 +1,127 @@
/****************************************************************************
** Form implementation generated from reading ui file 'UIFiles/DlgRef_3Sel1Check_QTD.ui'
**
** Created: Wed Feb 21 10:49:18 2007
** by: The User Interface Compiler ($Id$)
**
** WARNING! All changes made in this file will be lost!
****************************************************************************/
#include "DlgRef_3Sel1Check_QTD.h"
#include <qvariant.h>
#include <qpushbutton.h>
#include <qgroupbox.h>
#include <qlineedit.h>
#include <qlabel.h>
#include <qradiobutton.h>
#include <qlayout.h>
#include <qtooltip.h>
#include <qwhatsthis.h>
/*
* Constructs a DlgRef_3Sel1Check_QTD as a child of 'parent', with the
* name 'name' and widget flags set to 'f'.
*/
DlgRef_3Sel1Check_QTD::DlgRef_3Sel1Check_QTD( QWidget* parent, const char* name, WFlags fl )
: QWidget( parent, name, fl )
{
if ( !name )
setName( "DlgRef_3Sel1Check_QTD" );
setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5, 0, 0, sizePolicy().hasHeightForWidth() ) );
DlgRef_3Sel1Check_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_3Sel1Check_QTDLayout");
GroupBox1 = new QGroupBox( this, "GroupBox1" );
GroupBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5, 0, 0, GroupBox1->sizePolicy().hasHeightForWidth() ) );
GroupBox1->setColumnLayout(0, Qt::Vertical );
GroupBox1->layout()->setSpacing( 6 );
GroupBox1->layout()->setMargin( 11 );
GroupBox1Layout = new QGridLayout( GroupBox1->layout() );
GroupBox1Layout->setAlignment( Qt::AlignTop );
PushButton1 = new QPushButton( GroupBox1, "PushButton1" );
PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) );
GroupBox1Layout->addWidget( PushButton1, 0, 1 );
LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" );
GroupBox1Layout->addWidget( LineEdit1, 0, 2 );
TextLabel1 = new QLabel( GroupBox1, "TextLabel1" );
TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) );
GroupBox1Layout->addWidget( TextLabel1, 0, 0 );
PushButton2 = new QPushButton( GroupBox1, "PushButton2" );
PushButton2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton2->sizePolicy().hasHeightForWidth() ) );
GroupBox1Layout->addWidget( PushButton2, 1, 1 );
LineEdit2 = new QLineEdit( GroupBox1, "LineEdit2" );
GroupBox1Layout->addWidget( LineEdit2, 1, 2 );
TextLabel2 = new QLabel( GroupBox1, "TextLabel2" );
TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) );
GroupBox1Layout->addWidget( TextLabel2, 1, 0 );
PushButton3 = new QPushButton( GroupBox1, "PushButton3" );
PushButton3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton3->sizePolicy().hasHeightForWidth() ) );
GroupBox1Layout->addWidget( PushButton3, 2, 1 );
LineEdit3 = new QLineEdit( GroupBox1, "LineEdit3" );
GroupBox1Layout->addWidget( LineEdit3, 2, 2 );
TextLabel3 = new QLabel( GroupBox1, "TextLabel3" );
TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) );
GroupBox1Layout->addWidget( TextLabel3, 2, 0 );
radioButton4 = new QRadioButton( GroupBox1, "radioButton4" );
GroupBox1Layout->addMultiCellWidget( radioButton4, 3, 3, 0, 1 );
Spacer3 = new QSpacerItem( 16, 721, QSizePolicy::Minimum, QSizePolicy::Expanding );
GroupBox1Layout->addItem( Spacer3, 4, 2 );
DlgRef_3Sel1Check_QTDLayout->addWidget( GroupBox1, 0, 0 );
languageChange();
resize( QSize(490, 878).expandedTo(minimumSizeHint()) );
clearWState( WState_Polished );
// tab order
setTabOrder( PushButton1, LineEdit1 );
setTabOrder( LineEdit1, PushButton2 );
setTabOrder( PushButton2, LineEdit2 );
setTabOrder( LineEdit2, PushButton3 );
setTabOrder( PushButton3, LineEdit3 );
}
/*
* Destroys the object and frees any allocated resources
*/
DlgRef_3Sel1Check_QTD::~DlgRef_3Sel1Check_QTD()
{
// no need to delete child widgets, Qt does it all for us
}
/*
* Sets the strings of the subwidgets using the current
* language.
*/
void DlgRef_3Sel1Check_QTD::languageChange()
{
setCaption( tr( "DlgRef_3Sel3Spin1Check_QTD" ) );
GroupBox1->setTitle( QString::null );
PushButton1->setText( QString::null );
TextLabel1->setText( tr( "TL1" ) );
PushButton2->setText( QString::null );
TextLabel2->setText( tr( "TL2" ) );
PushButton3->setText( QString::null );
TextLabel3->setText( tr( "TL3" ) );
radioButton4->setText( tr( "radioButton4" ) );
}

View File

@ -0,0 +1,56 @@
/****************************************************************************
** Form interface generated from reading ui file 'UIFiles/DlgRef_3Sel1Check_QTD.ui'
**
** Created: Wed Feb 21 10:48:39 2007
** by: The User Interface Compiler ($Id$)
**
** WARNING! All changes made in this file will be lost!
****************************************************************************/
#ifndef DLGREF_3SEL1CHECK_QTD_H
#define DLGREF_3SEL1CHECK_QTD_H
#include <qvariant.h>
#include <qwidget.h>
class QVBoxLayout;
class QHBoxLayout;
class QGridLayout;
class QSpacerItem;
class QGroupBox;
class QPushButton;
class QLineEdit;
class QLabel;
class QRadioButton;
class DlgRef_3Sel1Check_QTD : public QWidget
{
Q_OBJECT
public:
DlgRef_3Sel1Check_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
~DlgRef_3Sel1Check_QTD();
QGroupBox* GroupBox1;
QPushButton* PushButton1;
QLineEdit* LineEdit1;
QLabel* TextLabel1;
QPushButton* PushButton2;
QLineEdit* LineEdit2;
QLabel* TextLabel2;
QPushButton* PushButton3;
QLineEdit* LineEdit3;
QLabel* TextLabel3;
QRadioButton* radioButton4;
protected:
QGridLayout* DlgRef_3Sel1Check_QTDLayout;
QGridLayout* GroupBox1Layout;
QSpacerItem* Spacer3;
protected slots:
virtual void languageChange();
};
#endif // DLGREF_3SEL1CHECK_QTD_H

View File

@ -86,7 +86,8 @@ dist_libDlgRef_la_SOURCES = \
DlgRef_3Sel1Spin.cxx \
DlgRef_3Check_QTD.cxx \
DlgRef_6Sel_QTD.cxx \
DlgRef_4Sel1Spin2Check.cxx
DlgRef_4Sel1Spin2Check.cxx \
DlgRef_3Sel1Check_QTD.cxx
MOC_FILES = \
DlgRef_Skeleton_QTD_moc.cxx \
@ -142,7 +143,8 @@ MOC_FILES = \
DlgRef_1Sel_Ext_moc.cxx \
DlgRef_3Check_QTD_moc.cxx \
DlgRef_6Sel_QTD_moc.cxx \
DlgRef_4Sel1Spin2Check_moc.cxx
DlgRef_4Sel1Spin2Check_moc.cxx \
DlgRef_3Sel1Check_QTD_moc.cxx
# header files
salomeinclude_HEADERS = \
@ -200,6 +202,7 @@ salomeinclude_HEADERS = \
DlgRef_3Check_QTD.h \
DlgRef_6Sel_QTD.h \
DlgRef_4Sel1Spin2Check.h \
DlgRef_3Sel1Check_QTD.h \
GEOM_DlgRef.hxx
nodist_libDlgRef_la_SOURCES= \

View File

@ -0,0 +1,210 @@
<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
<class>DlgRef_3Sel1Check_QTD</class>
<widget class="QWidget">
<property name="name">
<cstring>DlgRef_3Sel1Check_QTD</cstring>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>490</width>
<height>878</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy>
<hsizetype>5</hsizetype>
<vsizetype>5</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="caption">
<string>DlgRef_3Sel3Spin1Check_QTD</string>
</property>
<grid>
<property name="name">
<cstring>unnamed</cstring>
</property>
<property name="margin">
<number>0</number>
</property>
<property name="spacing">
<number>6</number>
</property>
<widget class="QGroupBox" row="0" column="0">
<property name="name">
<cstring>GroupBox1</cstring>
</property>
<property name="sizePolicy">
<sizepolicy>
<hsizetype>5</hsizetype>
<vsizetype>5</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string></string>
</property>
<grid>
<property name="name">
<cstring>unnamed</cstring>
</property>
<property name="margin">
<number>11</number>
</property>
<property name="spacing">
<number>6</number>
</property>
<widget class="QPushButton" row="0" column="1">
<property name="name">
<cstring>PushButton1</cstring>
</property>
<property name="sizePolicy">
<sizepolicy>
<hsizetype>0</hsizetype>
<vsizetype>0</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string></string>
</property>
</widget>
<widget class="QLineEdit" row="0" column="2">
<property name="name">
<cstring>LineEdit1</cstring>
</property>
</widget>
<widget class="QLabel" row="0" column="0">
<property name="name">
<cstring>TextLabel1</cstring>
</property>
<property name="sizePolicy">
<sizepolicy>
<hsizetype>0</hsizetype>
<vsizetype>0</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>TL1</string>
</property>
</widget>
<widget class="QPushButton" row="1" column="1">
<property name="name">
<cstring>PushButton2</cstring>
</property>
<property name="sizePolicy">
<sizepolicy>
<hsizetype>0</hsizetype>
<vsizetype>0</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string></string>
</property>
</widget>
<widget class="QLineEdit" row="1" column="2">
<property name="name">
<cstring>LineEdit2</cstring>
</property>
</widget>
<widget class="QLabel" row="1" column="0">
<property name="name">
<cstring>TextLabel2</cstring>
</property>
<property name="sizePolicy">
<sizepolicy>
<hsizetype>0</hsizetype>
<vsizetype>0</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>TL2</string>
</property>
</widget>
<widget class="QPushButton" row="2" column="1">
<property name="name">
<cstring>PushButton3</cstring>
</property>
<property name="sizePolicy">
<sizepolicy>
<hsizetype>0</hsizetype>
<vsizetype>0</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string></string>
</property>
</widget>
<widget class="QLineEdit" row="2" column="2">
<property name="name">
<cstring>LineEdit3</cstring>
</property>
</widget>
<widget class="QLabel" row="2" column="0">
<property name="name">
<cstring>TextLabel3</cstring>
</property>
<property name="sizePolicy">
<sizepolicy>
<hsizetype>0</hsizetype>
<vsizetype>0</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>TL3</string>
</property>
</widget>
<widget class="QRadioButton" row="3" column="0" rowspan="1" colspan="2">
<property name="name">
<cstring>radioButton4</cstring>
</property>
<property name="text">
<string>radioButton4</string>
</property>
</widget>
<spacer row="4" column="2">
<property name="name">
<cstring>Spacer3</cstring>
</property>
<property name="orientation">
<enum>Vertical</enum>
</property>
<property name="sizeType">
<enum>Expanding</enum>
</property>
<property name="sizeHint">
<size>
<width>16</width>
<height>721</height>
</size>
</property>
</spacer>
</grid>
</widget>
</grid>
</widget>
<tabstops>
<tabstop>PushButton1</tabstop>
<tabstop>LineEdit1</tabstop>
<tabstop>PushButton2</tabstop>
<tabstop>LineEdit2</tabstop>
<tabstop>PushButton3</tabstop>
<tabstop>LineEdit3</tabstop>
</tabstops>
<layoutdefaults spacing="6" margin="11"/>
</UI>

View File

@ -64,12 +64,14 @@ using namespace std;
// TRUE to construct a modal dialog.
//=================================================================================
EntityGUI_SketcherDlg::EntityGUI_SketcherDlg(GeometryGUI* GUI, QWidget* parent,
const char* name, bool modal, WFlags fl)
const char* name, bool modal, WFlags fl,
const double lineWidth)
:EntityGUI_Skeleton_QTD(parent, name, modal, WStyle_Customize |
WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | WDestructiveClose),
myIsAllAdded( false ),
GEOMBase_Helper( dynamic_cast<SUIT_Desktop*>( parent ) ),
myGeometryGUI( GUI )
myGeometryGUI( GUI ),
myLineWidth( lineWidth )
{
myGeometryGUI->SetActiveDialogBox(this);
@ -344,7 +346,7 @@ void EntityGUI_SketcherDlg::Init()
resize( 0, 0 );
TypeClicked(0);
GEOMBase_Helper::displayPreview();
GEOMBase_Helper::displayPreview(false, true, true, myLineWidth);
}
@ -443,7 +445,7 @@ void EntityGUI_SketcherDlg::PointClicked(int constructorId)
Group2Spin->show();
Group2Spin->buttonApply->setFocus();
GEOMBase_Helper::displayPreview();
GEOMBase_Helper::displayPreview(false, true, true, myLineWidth);
}
else if ( constructorId == 0 )
{ // DXDY
@ -459,7 +461,7 @@ void EntityGUI_SketcherDlg::PointClicked(int constructorId)
Group2Spin->show();
Group2Spin->buttonApply->setFocus();
GEOMBase_Helper::displayPreview();
GEOMBase_Helper::displayPreview(false, true, true, myLineWidth);
}
else if ( constructorId == 2 )
{ // Selection
@ -693,7 +695,7 @@ void EntityGUI_SketcherDlg::Dir2Clicked(int constructorId)
}
}
GEOMBase_Helper::displayPreview();
GEOMBase_Helper::displayPreview(false, true, true, myLineWidth);
}
@ -764,7 +766,7 @@ bool EntityGUI_SketcherDlg::ClickOnApply()
setEnabledUndo(true);
setEnabledRedo(false);
GEOMBase_Helper::displayPreview();
GEOMBase_Helper::displayPreview(false, true, true, myLineWidth);
// Set focus to SpinBox_DX
if (sender() == Group1Spin->buttonApply) {
@ -833,7 +835,7 @@ void EntityGUI_SketcherDlg::ClickOnUndo()
setEnabledRedo(true);
GEOMBase_Helper::displayPreview();
GEOMBase_Helper::displayPreview(false, true, true, myLineWidth);
}
//=================================================================================
@ -854,7 +856,7 @@ void EntityGUI_SketcherDlg::ClickOnRedo()
if(myUndoCommand.count() == 1)
setEnabledRedo(false);
GEOMBase_Helper::displayPreview();
GEOMBase_Helper::displayPreview(false, true, true, myLineWidth);
}
//=================================================================================
@ -918,7 +920,7 @@ void EntityGUI_SketcherDlg::SelectionIntoArgument()
}
}
GEOMBase_Helper::displayPreview();
GEOMBase_Helper::displayPreview(false, true, true, myLineWidth);
}
@ -992,7 +994,7 @@ void EntityGUI_SketcherDlg::ActivateThisDialog()
myEditCurrentArgument = Group1Sel->LineEdit1;
myEditCurrentArgument->setFocus();
GEOMBase_Helper::displayPreview();
GEOMBase_Helper::displayPreview(false, true, true, myLineWidth);
}
@ -1187,7 +1189,7 @@ void EntityGUI_SketcherDlg::ValueChangedInSpinBox(double newValue)
}
}
GEOMBase_Helper::displayPreview();
GEOMBase_Helper::displayPreview(false, true, true, myLineWidth);
}
@ -1450,7 +1452,7 @@ void EntityGUI_SketcherDlg::displayPreview( GEOM::GEOM_Object_ptr object,
getDisplayer()->SetColor( Quantity_NOC_RED );
// set width of displayed shape
getDisplayer()->SetWidth( lineWidth );
getDisplayer()->SetWidth( (lineWidth == -1)?myLineWidth:lineWidth );
// Disable activation of selection
getDisplayer()->SetToActivate( activate );

View File

@ -65,7 +65,8 @@ class GEOM_ENTITYGUI_EXPORT EntityGUI_SketcherDlg : public EntityGUI_Skeleton_QT
public:
EntityGUI_SketcherDlg(GeometryGUI* GUI, QWidget* parent = 0,
const char* name = 0, bool modal = FALSE, WFlags fl = 0);
const char* name = 0, bool modal = FALSE, WFlags fl = 0,
const double lineWidth = 2.);
~EntityGUI_SketcherDlg();
bool eventFilter (QObject* object, QEvent* event);
@ -127,6 +128,7 @@ private :
DIR_TAN_LENGTH, DIR_TAN_X, DIR_TAN_Y,
DIR_DXDY_LENGTH, DIR_DXDY_X, DIR_DXDY_Y};
double myLineWidth;
virtual void displayPreview ( GEOM::GEOM_Object_ptr obj,
const bool append = false,
const bool activate = false,

View File

@ -546,7 +546,7 @@ bool EntityGUI_SubShapeDlg::isValid( QString& msg )
bool EntityGUI_SubShapeDlg::execute( ObjectList& objects )
{
GEOM::ListOfGO_var aList = GEOM::GEOM_IShapesOperations::_narrow(
getOperation() )->MakeExplode( myObject, shapeType(), false );
getOperation() )->MakeExplode( myObject, shapeType(), true );
if ( !aList->length() )
return false;

View File

@ -61,6 +61,55 @@ is
ST_INOUT
end State;
--
enumeration KindOfShape is
KS_UNKNOWN,
KS_SPHERE,
KS_CYLINDER,
KS_BOX,
KS_TORUS,
KS_CONE,
KS_ELLIPSE,
KS_PLANE,
KS_CIRCLE,
KS_LINE,
KS_DEGENERATED
end KindOfShape;
--
enumeration KindOfName is
KN_UNKNOWN,
KN_SPHERE,
KN_CYLINDER,
KN_TORUS,
KN_CONE,
KN_ELLIPSE,
KN_CIRCLE,
KN_PLANE,
KN_LINE,
KN_BOX,
KN_SEGMENT,
KN_ARCCIRCLE,
KN_POLYGON,
KN_POLYHEDRON,
KN_DISKCIRCLE,
KN_DISKELLIPSE,
KN_RECTANGLE,
KN_TRIANGLE,
KN_QUADRANGLE,
KN_ARCELLIPSE
end KindOfName;
--
enumeration KindOfBounds is
KB_UNKNOWN,
KB_TRIMMED,
KB_INFINITE
end KindOfBounds;
--
enumeration KindOfClosed is
KC_UNKNOWN,
KC_CLOSED,
KC_NOTCLOSED
end KindOfClosed;
--
deferred class HAlgo;
deferred class Clsf;
class ClsfSurf;
@ -73,8 +122,12 @@ is
deferred class Algo;
deferred class ShapeAlgo;
--
class ShapeInfo;
class ShapeInfoFiller;
--
-- gluer
class Gluer;
class Gluer1;
class GlueAnalyser;
class CoupleOfShapes;
class PassKey;
@ -94,7 +147,16 @@ is
--
class FinderShapeOn1;
class StateCollector;
-- adds
deferred class HAlgo;
deferred class Clsf;
class ClsfSurf;
class ClsfBox;
--modified by NIZNHY-PKV Mon Jan 29 10:27:44 2007f
class ClsfSolid;
--modified by NIZNHY-PKV Mon Jan 29 10:27:46 2007t
class FinderShapeOn2;
class PassKeyShapeMapHasher;
--
-- Builder/Splitter
deferred class BuilderShape;
@ -168,4 +230,30 @@ is
ListOfShape from TopTools,
PassKeyShapeMapHasher from GEOMAlgo);
class IndexedDataMapOfShapeShapeInfo
instantiates IndexedDataMap from TCollection (Shape from TopoDS,
ShapeInfo from GEOMAlgo,
ShapeMapHasher from TopTools);
class DataMapOfPassKeyShapeShape
instantiates DataMap from TCollection (PassKeyShape from GEOMAlgo,
Shape from TopoDS,
PassKeyShapeMapHasher from GEOMAlgo);
class DataMapOfShapeShapeSet instantiates
DataMap from TCollection(Shape from TopoDS,
ShapeSet from GEOMAlgo,
ShapeMapHasher from TopTools);
class DataMapOfShapeReal instantiates
DataMap from TCollection(Shape from TopoDS,
Real from Standard,
ShapeMapHasher from TopTools);
class DataMapOfRealListOfShape instantiates
DataMap from TCollection(Real from Standard,
ListOfShape from TopTools,
MapRealHasher from TColStd);
end GEOMAlgo;

View File

@ -99,6 +99,13 @@ is
--
-- protected methods
--
--
PerformInternal(me:out;
theDSF: DSFiller from NMTTools)
---Purpose: Performs calculations using prepared DSFiller
-- object theDSF
is protected;
--
PrepareHistory (me:out)
---Purpose: Prepare information for history support
is redefined protected;
@ -241,7 +248,7 @@ fields
mySameDomainShapes: IndexedDataMapOfShapeShape from TopTools is protected;
-- solids
myDraftSolids : IndexedDataMapOfShapeShape from TopTools is protected;
myEntryPoint : Integer from Standard is protected;
--
end Builder;

View File

@ -52,6 +52,7 @@
{
myNbTypes=9;
myDSFiller=NULL;
myEntryPoint=0; // Entry point through PerformWithFiller ()
}
//=======================================================================
//function : ~
@ -59,6 +60,12 @@
//=======================================================================
GEOMAlgo_Builder::~GEOMAlgo_Builder()
{
if (myEntryPoint==1) {
if (myDSFiller) {
delete myDSFiller;
myDSFiller=NULL;
}
}
}
//=======================================================================
//function : AddCompound
@ -253,18 +260,33 @@
aBB.Add(aCS, aS);
}
//
if (myDSFiller) {
delete myDSFiller;
myDSFiller=NULL;
}
NMTTools_DSFiller* pDSF=new NMTTools_DSFiller;
//
pDSF->SetCompositeShape(aCS);
pDSF->Perform();
//
PerformWithFiller(*pDSF);
myEntryPoint=1;
PerformInternal(*pDSF);
}
//=======================================================================
//function : PerformWithFiller
//purpose :
//=======================================================================
void GEOMAlgo_Builder::PerformWithFiller(const NMTTools_DSFiller& theDSF)
{
myEntryPoint=0;
//
PerformInternal(theDSF);
}
//=======================================================================
//function : PerformInternal
//purpose :
//=======================================================================
void GEOMAlgo_Builder::PerformInternal(const NMTTools_DSFiller& theDSF)
{
myErrorStatus=0;
//

View File

@ -137,6 +137,10 @@ protected:
// Methods PROTECTED
//
//! Performs calculations using prepared DSFiller <br>
//! object theDSF <br>
Standard_EXPORT void PerformInternal(const NMTTools_DSFiller& theDSF) ;
//! Prepare information for history support <br>
Standard_EXPORT virtual void PrepareHistory() ;
@ -220,6 +224,7 @@ TopTools_IndexedDataMapOfShapeListOfShape myInParts;
BRepAlgo_Image mySplitFaces;
TopTools_IndexedDataMapOfShapeShape mySameDomainShapes;
TopTools_IndexedDataMapOfShapeShape myDraftSolids;
Standard_Integer myEntryPoint;
private:

View File

@ -578,7 +578,77 @@ void MakeInternalWires(const TopTools_MapOfShape& theME,
theWires.Append(aW);
}
}
//=======================================================================
//function : IsInside
//purpose :
//=======================================================================
Standard_Boolean IsInside(const TopoDS_Shape& theHole,
const TopoDS_Shape& theF2,
IntTools_PContext& theContext)
{
Standard_Boolean bRet;
Standard_Real aT, aU, aV;
TopAbs_State aState;
TopExp_Explorer aExp;
TopTools_IndexedMapOfShape aME2;
gp_Pnt2d aP2D;
//
bRet=Standard_False;
aState=TopAbs_UNKNOWN;
const TopoDS_Face& aF2=TopoDS::Face(theF2);
//
TopExp::MapShapes(aF2, TopAbs_EDGE, aME2);
//
aExp.Init(theHole, TopAbs_EDGE);
if (aExp.More()) {
const TopoDS_Edge& aE = TopoDS::Edge(aExp.Current());
if (aME2.Contains(aE)) {
return bRet;
}
//
aT=BOPTools_Tools2D::IntermediatePoint(aE);
BOPTools_Tools2D::PointOnSurface(aE, aF2, aT, aU, aV);
aP2D.SetCoord(aU, aV);
//
IntTools_FClass2d& aClsf=theContext->FClass2d(aF2);
aState=aClsf.Perform(aP2D);
bRet=(aState==TopAbs_IN);
}
//
return bRet;
}
//=======================================================================
//function : IsGrowthWire
//purpose :
//=======================================================================
Standard_Boolean IsGrowthWire(const TopoDS_Shape& theWire,
const TopTools_IndexedMapOfShape& theMHE)
{
Standard_Boolean bRet;
TopoDS_Iterator aIt;
//
bRet=Standard_False;
if (theMHE.Extent()) {
aIt.Initialize(theWire);
for(; aIt.More(); aIt.Next()) {
const TopoDS_Shape& aE=aIt.Value();
if (theMHE.Contains(aE)) {
return !bRet;
}
}
}
return bRet;
}
//BRepTools::Write(aFF, "ff");
//
// ErrorStatus :
// 11 - Null Context
// 12 - Null face generix
/*
//=======================================================================
//function : IsInside
//purpose :
@ -606,71 +676,4 @@ Standard_Boolean IsInside(const TopoDS_Shape& theHole,
}
return (aState==TopAbs_IN);
}
//=======================================================================
//function : IsGrowthWire
//purpose :
//=======================================================================
Standard_Boolean IsGrowthWire(const TopoDS_Shape& theWire,
const TopTools_IndexedMapOfShape& theMHE)
{
Standard_Boolean bRet;
TopoDS_Iterator aIt;
//
bRet=Standard_False;
if (theMHE.Extent()) {
aIt.Initialize(theWire);
for(; aIt.More(); aIt.Next()) {
const TopoDS_Shape& aE=aIt.Value();
if (theMHE.Contains(aE)) {
return !bRet;
}
}
}
return bRet;
}
//modified by NIZNHY-PKV Mon Sep 18 13:18:27 2006f
/*
static
Standard_Boolean IsHole(const TopoDS_Shape& ,
const TopoDS_Face& ,
IntTools_PContext& );
*/
//modified by NIZNHY-PKV Mon Sep 18 13:18:34 2006t
//modified by NIZNHY-PKV Mon Sep 18 13:18:13 2006f
/*
//=======================================================================
//function : IsHole
//purpose :
//=======================================================================
Standard_Boolean IsHole(const TopoDS_Shape& theS2,
const TopoDS_Face& theFace,
IntTools_PContext& theContext)
{
Standard_Boolean bIsHole;
Standard_Real aTol;
Handle(Geom_Surface) aS;
TopLoc_Location aLoc;
TopoDS_Face aF;
BRep_Builder aBB;
//
aTol=BRep_Tool::Tolerance(theFace);
aS=BRep_Tool::Surface(theFace, aLoc);
aBB.MakeFace(aF, aS, aLoc, aTol);
aBB.Add (aF, theS2);
//
IntTools_FClass2d& aClsf=theContext->FClass2d(aF);
//
bIsHole=aClsf.IsHole();
//
return bIsHole;
//
}
*/
//modified by NIZNHY-PKV Mon Sep 18 13:18:06 2006t
//BRepTools::Write(aFF, "ff");
//
// ErrorStatus :
// 11 - Null Context
// 12 - Null face generix

View File

@ -0,0 +1,59 @@
-- Copyright (C) 2005 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: GEOMAlgo_ClsfSolid.cdl
-- Created: Mon Jan 29 10:28:07 2007
-- Author: Peter KURNEV
-- <pkv@irinox>
class ClsfSolid from GEOMAlgo
inherits Clsf from GEOMAlgo
---Purpose:
uses
Shape from TopoDS
--raises
is
Create
returns mutable ClsfSolid from GEOMAlgo;
---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_ClsfSolid();"
SetShape(me:mutable;
aS:Shape from TopoDS);
Shape(me)
returns Shape from TopoDS;
---C++: return const &
Perform(me:mutable)
is redefined;
CheckData(me:mutable)
is redefined;
fields
myShape: Shape from TopoDS is protected;
myPClsf: Address from Standard is protected;
end ClsfSolid;

View File

@ -0,0 +1,139 @@
// Copyright (C) 2005 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: GEOMAlgo_ClsfSolid.cxx
// Created: Mon Jan 29 10:35:46 2007
// Author: Peter KURNEV
// <pkv@irinox>
#include <GEOMAlgo_ClsfSolid.ixx>
#include <TopAbs_ShapeEnum.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Solid.hxx>
#include <BRep_Builder.hxx>
#include <BRepClass3d_SolidClassifier.hxx>
//=======================================================================
//function :
//purpose :
//=======================================================================
GEOMAlgo_ClsfSolid::GEOMAlgo_ClsfSolid()
:
GEOMAlgo_Clsf()
{
myPClsf=NULL;
}
//=======================================================================
//function : ~
//purpose :
//=======================================================================
GEOMAlgo_ClsfSolid::~GEOMAlgo_ClsfSolid()
{
if (myPClsf) {
BRepClass3d_SolidClassifier* pSC;
//
pSC=(BRepClass3d_SolidClassifier*)myPClsf;
delete pSC;
}
}
//=======================================================================
//function : SetShape
//purpose :
//=======================================================================
void GEOMAlgo_ClsfSolid::SetShape(const TopoDS_Shape& aS)
{
myShape=aS;
}
//=======================================================================
//function : Shape
//purpose :
//=======================================================================
const TopoDS_Shape& GEOMAlgo_ClsfSolid::Shape()const
{
return myShape;
}
//=======================================================================
//function : CheckData
//purpose :
//=======================================================================
void GEOMAlgo_ClsfSolid::CheckData()
{
myErrorStatus=0;
//
BRepClass3d_SolidClassifier* pSC;
TopAbs_ShapeEnum aType;
BRep_Builder aBB;
TopoDS_Solid aS;
//
if (myShape.IsNull()) {
myErrorStatus=10; // mySolid=NULL
return;
}
//
aType=myShape.ShapeType();
if (!(aType==TopAbs_SOLID || aType==TopAbs_SHELL)) {
myErrorStatus=12;
return;
}
//
//===
if (aType==TopAbs_SOLID) {
aS=TopoDS::Solid(myShape);
}
else {
aBB.MakeSolid(aS);
aBB.Add(aS, myShape);
}
//
if (myPClsf) {
pSC=(BRepClass3d_SolidClassifier*)myPClsf;
delete pSC;
}
//
pSC=new BRepClass3d_SolidClassifier(aS);
myPClsf=pSC;
}
//=======================================================================
//function : Perform
//purpose :
//=======================================================================
void GEOMAlgo_ClsfSolid::Perform()
{
myErrorStatus=0;
//
if (!myPClsf) {
myErrorStatus=11;
return;
}
//
BRepClass3d_SolidClassifier* pSC;
//
pSC=(BRepClass3d_SolidClassifier*)myPClsf;
pSC->Perform(myPnt, myTolerance);
myState=pSC->State();
}
//
// myErrorStatus :
//
// 10 - mySolid=NULL
// 11 - myPClsf=NULL
// 12 - unallowed type of myShape

View File

@ -0,0 +1,106 @@
// Copyright (C) 2005 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
#ifndef _GEOMAlgo_ClsfSolid_HeaderFile
#define _GEOMAlgo_ClsfSolid_HeaderFile
#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Handle_GEOMAlgo_ClsfSolid_HeaderFile
#include <Handle_GEOMAlgo_ClsfSolid.hxx>
#endif
#ifndef _TopoDS_Shape_HeaderFile
#include <TopoDS_Shape.hxx>
#endif
#ifndef _Standard_Address_HeaderFile
#include <Standard_Address.hxx>
#endif
#ifndef _GEOMAlgo_Clsf_HeaderFile
#include <GEOMAlgo_Clsf.hxx>
#endif
class TopoDS_Shape;
class GEOMAlgo_ClsfSolid : public GEOMAlgo_Clsf {
public:
// Methods PUBLIC
//
Standard_EXPORT GEOMAlgo_ClsfSolid();
Standard_EXPORT virtual ~GEOMAlgo_ClsfSolid();
Standard_EXPORT void SetShape(const TopoDS_Shape& aS) ;
Standard_EXPORT const TopoDS_Shape& Shape() const;
Standard_EXPORT virtual void Perform() ;
Standard_EXPORT virtual void CheckData() ;
//Standard_EXPORT ~GEOMAlgo_ClsfSolid();
// Type management
//
Standard_EXPORT const Handle(Standard_Type)& DynamicType() const;
//Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const;
protected:
// Methods PROTECTED
//
// Fields PROTECTED
//
TopoDS_Shape myShape;
Standard_Address myPClsf;
private:
// Methods PRIVATE
//
// Fields PRIVATE
//
};
// other Inline functions and methods (like "C++: function call" methods)
//
#endif

View File

@ -0,0 +1,74 @@
// Copyright (C) 2005 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
#include <GEOMAlgo_ClsfSolid.jxx>
#ifndef _Standard_TypeMismatch_HeaderFile
#include <Standard_TypeMismatch.hxx>
#endif
//GEOMAlgo_ClsfSolid::~GEOMAlgo_ClsfSolid() {}
Standard_EXPORT Handle_Standard_Type& GEOMAlgo_ClsfSolid_Type_()
{
static Handle_Standard_Type aType1 = STANDARD_TYPE(GEOMAlgo_Clsf);
static Handle_Standard_Type aType2 = STANDARD_TYPE(GEOMAlgo_HAlgo);
static Handle_Standard_Type aType3 = STANDARD_TYPE(MMgt_TShared);
static Handle_Standard_Type aType4 = STANDARD_TYPE(Standard_Transient);
static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,aType4,NULL};
static Handle_Standard_Type _aType = new Standard_Type("GEOMAlgo_ClsfSolid",
sizeof(GEOMAlgo_ClsfSolid),
1,
(Standard_Address)_Ancestors,
(Standard_Address)NULL);
return _aType;
}
// DownCast method
// allow safe downcasting
//
const Handle(GEOMAlgo_ClsfSolid) Handle(GEOMAlgo_ClsfSolid)::DownCast(const Handle(Standard_Transient)& AnObject)
{
Handle(GEOMAlgo_ClsfSolid) _anOtherObject;
if (!AnObject.IsNull()) {
if (AnObject->IsKind(STANDARD_TYPE(GEOMAlgo_ClsfSolid))) {
_anOtherObject = Handle(GEOMAlgo_ClsfSolid)((Handle(GEOMAlgo_ClsfSolid)&)AnObject);
}
}
return _anOtherObject ;
}
const Handle(Standard_Type)& GEOMAlgo_ClsfSolid::DynamicType() const
{
return STANDARD_TYPE(GEOMAlgo_ClsfSolid) ;
}
//Standard_Boolean GEOMAlgo_ClsfSolid::IsKind(const Handle(Standard_Type)& AType) const
//{
// return (STANDARD_TYPE(GEOMAlgo_ClsfSolid) == AType || GEOMAlgo_Clsf::IsKind(AType));
//}
//Handle_GEOMAlgo_ClsfSolid::~Handle_GEOMAlgo_ClsfSolid() {}

View File

@ -0,0 +1,25 @@
// Copyright (C) 2005 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
#ifndef _TopoDS_Shape_HeaderFile
#include <TopoDS_Shape.hxx>
#endif
#ifndef _GEOMAlgo_ClsfSolid_HeaderFile
#include <GEOMAlgo_ClsfSolid.hxx>
#endif

View File

@ -0,0 +1,113 @@
// Copyright (C) 2005 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
#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyShapeShape_HeaderFile
#define _GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyShapeShape_HeaderFile
#ifndef _TCollection_BasicMapIterator_HeaderFile
#include <TCollection_BasicMapIterator.hxx>
#endif
#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape_HeaderFile
#include <Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape.hxx>
#endif
class Standard_NoSuchObject;
class GEOMAlgo_PassKeyShape;
class TopoDS_Shape;
class GEOMAlgo_PassKeyShapeMapHasher;
class GEOMAlgo_DataMapOfPassKeyShapeShape;
class GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape;
#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_Macro_HeaderFile
#include <Standard_Macro.hxx>
#endif
class GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyShapeShape : public TCollection_BasicMapIterator {
public:
void* operator new(size_t,void* anAddress)
{
return anAddress;
}
void* operator new(size_t size)
{
return Standard::Allocate(size);
}
void operator delete(void *anAddress)
{
if (anAddress) Standard::Free((Standard_Address&)anAddress);
}
// Methods PUBLIC
//
Standard_EXPORT GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyShapeShape();
Standard_EXPORT GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyShapeShape(const GEOMAlgo_DataMapOfPassKeyShapeShape& aMap);
Standard_EXPORT void Initialize(const GEOMAlgo_DataMapOfPassKeyShapeShape& aMap) ;
Standard_EXPORT const GEOMAlgo_PassKeyShape& Key() const;
Standard_EXPORT const TopoDS_Shape& Value() const;
protected:
// Methods PROTECTED
//
// Fields PROTECTED
//
private:
// Methods PRIVATE
//
// Fields PRIVATE
//
};
// other Inline functions and methods (like "C++: function call" methods)
//
#endif

View File

@ -0,0 +1,57 @@
// Copyright (C) 2005 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
#include <GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyShapeShape.hxx>
#ifndef _Standard_NoSuchObject_HeaderFile
#include <Standard_NoSuchObject.hxx>
#endif
#ifndef _GEOMAlgo_PassKeyShape_HeaderFile
#include <GEOMAlgo_PassKeyShape.hxx>
#endif
#ifndef _TopoDS_Shape_HeaderFile
#include <TopoDS_Shape.hxx>
#endif
#ifndef _GEOMAlgo_PassKeyShapeMapHasher_HeaderFile
#include <GEOMAlgo_PassKeyShapeMapHasher.hxx>
#endif
#ifndef _GEOMAlgo_DataMapOfPassKeyShapeShape_HeaderFile
#include <GEOMAlgo_DataMapOfPassKeyShapeShape.hxx>
#endif
#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape_HeaderFile
#include <GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape.hxx>
#endif
#define TheKey GEOMAlgo_PassKeyShape
#define TheKey_hxx <GEOMAlgo_PassKeyShape.hxx>
#define TheItem TopoDS_Shape
#define TheItem_hxx <TopoDS_Shape.hxx>
#define Hasher GEOMAlgo_PassKeyShapeMapHasher
#define Hasher_hxx <GEOMAlgo_PassKeyShapeMapHasher.hxx>
#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape
#define TCollection_DataMapNode_hxx <GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape.hxx>
#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyShapeShape
#define TCollection_DataMapIterator_hxx <GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyShapeShape.hxx>
#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape
#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape_Type_()
#define TCollection_DataMap GEOMAlgo_DataMapOfPassKeyShapeShape
#define TCollection_DataMap_hxx <GEOMAlgo_DataMapOfPassKeyShapeShape.hxx>
#include <TCollection_DataMapIterator.gxx>

View File

@ -0,0 +1,132 @@
// Copyright (C) 2005 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
#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape_HeaderFile
#define _GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape_HeaderFile
#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape_HeaderFile
#include <Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape.hxx>
#endif
#ifndef _GEOMAlgo_PassKeyShape_HeaderFile
#include <GEOMAlgo_PassKeyShape.hxx>
#endif
#ifndef _TopoDS_Shape_HeaderFile
#include <TopoDS_Shape.hxx>
#endif
#ifndef _TCollection_MapNode_HeaderFile
#include <TCollection_MapNode.hxx>
#endif
#ifndef _TCollection_MapNodePtr_HeaderFile
#include <TCollection_MapNodePtr.hxx>
#endif
class GEOMAlgo_PassKeyShape;
class TopoDS_Shape;
class GEOMAlgo_PassKeyShapeMapHasher;
class GEOMAlgo_DataMapOfPassKeyShapeShape;
class GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyShapeShape;
class GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape : public TCollection_MapNode {
public:
// Methods PUBLIC
//
GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape(const GEOMAlgo_PassKeyShape& K,const TopoDS_Shape& I,const TCollection_MapNodePtr& n);
GEOMAlgo_PassKeyShape& Key() const;
TopoDS_Shape& Value() const;
//Standard_EXPORT ~GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape();
// Type management
//
Standard_EXPORT const Handle(Standard_Type)& DynamicType() const;
//Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const;
protected:
// Methods PROTECTED
//
// Fields PROTECTED
//
private:
// Methods PRIVATE
//
// Fields PRIVATE
//
GEOMAlgo_PassKeyShape myKey;
TopoDS_Shape myValue;
};
#define TheKey GEOMAlgo_PassKeyShape
#define TheKey_hxx <GEOMAlgo_PassKeyShape.hxx>
#define TheItem TopoDS_Shape
#define TheItem_hxx <TopoDS_Shape.hxx>
#define Hasher GEOMAlgo_PassKeyShapeMapHasher
#define Hasher_hxx <GEOMAlgo_PassKeyShapeMapHasher.hxx>
#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape
#define TCollection_DataMapNode_hxx <GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape.hxx>
#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyShapeShape
#define TCollection_DataMapIterator_hxx <GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyShapeShape.hxx>
#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape
#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape_Type_()
#define TCollection_DataMap GEOMAlgo_DataMapOfPassKeyShapeShape
#define TCollection_DataMap_hxx <GEOMAlgo_DataMapOfPassKeyShapeShape.hxx>
#include <TCollection_DataMapNode.lxx>
#undef TheKey
#undef TheKey_hxx
#undef TheItem
#undef TheItem_hxx
#undef Hasher
#undef Hasher_hxx
#undef TCollection_DataMapNode
#undef TCollection_DataMapNode_hxx
#undef TCollection_DataMapIterator
#undef TCollection_DataMapIterator_hxx
#undef Handle_TCollection_DataMapNode
#undef TCollection_DataMapNode_Type_
#undef TCollection_DataMap
#undef TCollection_DataMap_hxx
// other Inline functions and methods (like "C++: function call" methods)
//
#endif

View File

@ -0,0 +1,103 @@
// Copyright (C) 2005 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
#include <GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape.hxx>
#ifndef _Standard_TypeMismatch_HeaderFile
#include <Standard_TypeMismatch.hxx>
#endif
#ifndef _GEOMAlgo_PassKeyShape_HeaderFile
#include <GEOMAlgo_PassKeyShape.hxx>
#endif
#ifndef _TopoDS_Shape_HeaderFile
#include <TopoDS_Shape.hxx>
#endif
#ifndef _GEOMAlgo_PassKeyShapeMapHasher_HeaderFile
#include <GEOMAlgo_PassKeyShapeMapHasher.hxx>
#endif
#ifndef _GEOMAlgo_DataMapOfPassKeyShapeShape_HeaderFile
#include <GEOMAlgo_DataMapOfPassKeyShapeShape.hxx>
#endif
#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyShapeShape_HeaderFile
#include <GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyShapeShape.hxx>
#endif
//GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape::~GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape() {}
Standard_EXPORT Handle_Standard_Type& GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape_Type_()
{
static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode);
static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
static Handle_Standard_Type _aType = new Standard_Type("GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape",
sizeof(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape),
1,
(Standard_Address)_Ancestors,
(Standard_Address)NULL);
return _aType;
}
// DownCast method
// allow safe downcasting
//
const Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape) Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape)::DownCast(const Handle(Standard_Transient)& AnObject)
{
Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape) _anOtherObject;
if (!AnObject.IsNull()) {
if (AnObject->IsKind(STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape))) {
_anOtherObject = Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape)((Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape)&)AnObject);
}
}
return _anOtherObject ;
}
const Handle(Standard_Type)& GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape::DynamicType() const
{
return STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape) ;
}
//Standard_Boolean GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape::IsKind(const Handle(Standard_Type)& AType) const
//{
// return (STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape) == AType || TCollection_MapNode::IsKind(AType));
//}
//Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape::~Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape() {}
#define TheKey GEOMAlgo_PassKeyShape
#define TheKey_hxx <GEOMAlgo_PassKeyShape.hxx>
#define TheItem TopoDS_Shape
#define TheItem_hxx <TopoDS_Shape.hxx>
#define Hasher GEOMAlgo_PassKeyShapeMapHasher
#define Hasher_hxx <GEOMAlgo_PassKeyShapeMapHasher.hxx>
#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape
#define TCollection_DataMapNode_hxx <GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape.hxx>
#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyShapeShape
#define TCollection_DataMapIterator_hxx <GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyShapeShape.hxx>
#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape
#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape_Type_()
#define TCollection_DataMap GEOMAlgo_DataMapOfPassKeyShapeShape
#define TCollection_DataMap_hxx <GEOMAlgo_DataMapOfPassKeyShapeShape.hxx>
#include <TCollection_DataMapNode.gxx>

View File

@ -0,0 +1,155 @@
// Copyright (C) 2005 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
#ifndef _GEOMAlgo_DataMapOfPassKeyShapeShape_HeaderFile
#define _GEOMAlgo_DataMapOfPassKeyShapeShape_HeaderFile
#ifndef _TCollection_BasicMap_HeaderFile
#include <TCollection_BasicMap.hxx>
#endif
#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape_HeaderFile
#include <Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape.hxx>
#endif
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
class Standard_DomainError;
class Standard_NoSuchObject;
class GEOMAlgo_PassKeyShape;
class TopoDS_Shape;
class GEOMAlgo_PassKeyShapeMapHasher;
class GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape;
class GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyShapeShape;
#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_Macro_HeaderFile
#include <Standard_Macro.hxx>
#endif
class GEOMAlgo_DataMapOfPassKeyShapeShape : public TCollection_BasicMap {
public:
void* operator new(size_t,void* anAddress)
{
return anAddress;
}
void* operator new(size_t size)
{
return Standard::Allocate(size);
}
void operator delete(void *anAddress)
{
if (anAddress) Standard::Free((Standard_Address&)anAddress);
}
// Methods PUBLIC
//
Standard_EXPORT GEOMAlgo_DataMapOfPassKeyShapeShape(const Standard_Integer NbBuckets = 1);
Standard_EXPORT GEOMAlgo_DataMapOfPassKeyShapeShape& Assign(const GEOMAlgo_DataMapOfPassKeyShapeShape& Other) ;
GEOMAlgo_DataMapOfPassKeyShapeShape& operator =(const GEOMAlgo_DataMapOfPassKeyShapeShape& Other)
{
return Assign(Other);
}
Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ;
Standard_EXPORT void Clear() ;
~GEOMAlgo_DataMapOfPassKeyShapeShape()
{
Clear();
}
Standard_EXPORT Standard_Boolean Bind(const GEOMAlgo_PassKeyShape& K,const TopoDS_Shape& I) ;
Standard_EXPORT Standard_Boolean IsBound(const GEOMAlgo_PassKeyShape& K) const;
Standard_EXPORT Standard_Boolean UnBind(const GEOMAlgo_PassKeyShape& K) ;
Standard_EXPORT const TopoDS_Shape& Find(const GEOMAlgo_PassKeyShape& K) const;
const TopoDS_Shape& operator()(const GEOMAlgo_PassKeyShape& K) const
{
return Find(K);
}
Standard_EXPORT TopoDS_Shape& ChangeFind(const GEOMAlgo_PassKeyShape& K) ;
TopoDS_Shape& operator()(const GEOMAlgo_PassKeyShape& K)
{
return ChangeFind(K);
}
protected:
// Methods PROTECTED
//
// Fields PROTECTED
//
private:
// Methods PRIVATE
//
Standard_EXPORT GEOMAlgo_DataMapOfPassKeyShapeShape(const GEOMAlgo_DataMapOfPassKeyShapeShape& Other);
// Fields PRIVATE
//
};
// other Inline functions and methods (like "C++: function call" methods)
//
#endif

View File

@ -0,0 +1,60 @@
// Copyright (C) 2005 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
#include <GEOMAlgo_DataMapOfPassKeyShapeShape.hxx>
#ifndef _Standard_DomainError_HeaderFile
#include <Standard_DomainError.hxx>
#endif
#ifndef _Standard_NoSuchObject_HeaderFile
#include <Standard_NoSuchObject.hxx>
#endif
#ifndef _GEOMAlgo_PassKeyShape_HeaderFile
#include <GEOMAlgo_PassKeyShape.hxx>
#endif
#ifndef _TopoDS_Shape_HeaderFile
#include <TopoDS_Shape.hxx>
#endif
#ifndef _GEOMAlgo_PassKeyShapeMapHasher_HeaderFile
#include <GEOMAlgo_PassKeyShapeMapHasher.hxx>
#endif
#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape_HeaderFile
#include <GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape.hxx>
#endif
#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyShapeShape_HeaderFile
#include <GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyShapeShape.hxx>
#endif
#define TheKey GEOMAlgo_PassKeyShape
#define TheKey_hxx <GEOMAlgo_PassKeyShape.hxx>
#define TheItem TopoDS_Shape
#define TheItem_hxx <TopoDS_Shape.hxx>
#define Hasher GEOMAlgo_PassKeyShapeMapHasher
#define Hasher_hxx <GEOMAlgo_PassKeyShapeMapHasher.hxx>
#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape
#define TCollection_DataMapNode_hxx <GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape.hxx>
#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyShapeShape
#define TCollection_DataMapIterator_hxx <GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyShapeShape.hxx>
#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape
#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape_Type_()
#define TCollection_DataMap GEOMAlgo_DataMapOfPassKeyShapeShape
#define TCollection_DataMap_hxx <GEOMAlgo_DataMapOfPassKeyShapeShape.hxx>
#include <TCollection_DataMap.gxx>

View File

@ -25,6 +25,11 @@
#include <GEOMAlgo_Gluer.ixx>
#include <NMTDS_BoxBndTree.hxx>
#include <NCollection_UBTreeFiller.hxx>
#include <TColStd_MapIteratorOfMapOfInteger.hxx>
#include <TColStd_MapOfInteger.hxx>
#include <TColStd_ListOfInteger.hxx>
#include <TColStd_ListIteratorOfListOfInteger.hxx>
@ -77,8 +82,8 @@
#include <GEOMAlgo_IndexedDataMapOfIntegerShape.hxx>
#include <GEOMAlgo_IndexedDataMapOfShapeBox.hxx>
#include <GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx> //qft
#include <GEOMAlgo_PassKeyShape.hxx>//qft
#include <GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx>
#include <GEOMAlgo_PassKeyShape.hxx>
#include <GEOMAlgo_Tools.hxx>
//
@ -179,11 +184,9 @@ void GEOMAlgo_Gluer::MakeVertices()
{
myErrorStatus=0;
//
Standard_Integer j, i, aNbV, aIndex, aNbVSD;
Standard_Integer j, i, aNbV, aNbVSD;
TColStd_ListIteratorOfListOfInteger aIt;
Handle(Bnd_HArray1OfBox) aHAB;
Bnd_BoundSortBox aBSB;
TopoDS_Shape aSTmp, aVF;
TopoDS_Shape aVF;
TopoDS_Vertex aVnew;
TopTools_IndexedMapOfShape aMV, aMVProcessed;
TopTools_ListIteratorOfListOfShape aItS;
@ -192,6 +195,11 @@ void GEOMAlgo_Gluer::MakeVertices()
GEOMAlgo_IndexedDataMapOfIntegerShape aMIS;
GEOMAlgo_IndexedDataMapOfShapeBox aMSB;
//
NMTDS_BoxBndTreeSelector aSelector;
NMTDS_BoxBndTree aBBTree;
NCollection_UBTreeFiller <Standard_Integer, Bnd_Box> aTreeFiller(aBBTree);
//
//
TopExp::MapShapes(myShape, TopAbs_VERTEX, aMV);
aNbV=aMV.Extent();
if (!aNbV) {
@ -199,21 +207,23 @@ void GEOMAlgo_Gluer::MakeVertices()
return;
}
//
aHAB=new Bnd_HArray1OfBox(1, aNbV);
//
for (i=1; i<=aNbV; ++i) {
const TopoDS_Shape& aV=aMV(i);
Bnd_Box aBox;
//
aBox.SetGap(myTol);
BRepBndLib::Add(aV, aBox);
aHAB->SetValue(i, aBox);
//
aTreeFiller.Add(i, aBox);
//
aMIS.Add(i, aV);
aMSB.Add(aV, aBox);
}
//
aBSB.Initialize(aHAB);
aTreeFiller.Fill();
//
//------------------------------
// Chains
for (i=1; i<=aNbV; ++i) {
const TopoDS_Shape& aV=aMV(i);
//
@ -221,32 +231,87 @@ void GEOMAlgo_Gluer::MakeVertices()
continue;
}
//
const Bnd_Box& aBoxV=aMSB.FindFromKey(aV);
const TColStd_ListOfInteger& aLI=aBSB.Compare(aBoxV);
aNbVSD=aLI.Extent();
if (!aNbVSD) {
myErrorStatus=3; // it must not be
return;
}
//
// Images
//
Standard_Integer aNbIP, aIP, aNbIP1, aIP1;
TopTools_ListOfShape aLVSD;
TColStd_MapOfInteger aMIP, aMIP1, aMIPC;
TColStd_MapIteratorOfMapOfInteger aIt1;
//
aMIP.Add(i);
while(1) {
aNbIP=aMIP.Extent();
aIt1.Initialize(aMIP);
for(; aIt1.More(); aIt1.Next()) {
aIP=aIt1.Key();
if (aMIPC.Contains(aIP)) {
continue;
}
//
const TopoDS_Shape& aVP=aMIS.FindFromKey(aIP);
const Bnd_Box& aBoxVP=aMSB.FindFromKey(aVP);
//
aSelector.Clear();
aSelector.SetBox(aBoxVP);
//
aNbVSD=aBBTree.Select(aSelector);
if (!aNbVSD) {
continue; // it must not be
}
//
const TColStd_ListOfInteger& aLI=aSelector.Indices();
aIt.Initialize(aLI);
for (j=0; aIt.More(); aIt.Next(), ++j) {
aIndex=aIt.Value();
const TopoDS_Shape& aVx=aMIS.FindFromKey(aIndex);
if(!j) {
aVF=aVx;
for (; aIt.More(); aIt.Next()) {
aIP1=aIt.Value();
if (aMIP.Contains(aIP1)) {
continue;
}
aLVSD.Append(aVx);
aMVProcessed.Add(aVx);
aMIP1.Add(aIP1);
} //for (; aIt.More(); aIt.Next()) {
}//for(; aIt1.More(); aIt1.Next()) {
//
aNbIP1=aMIP1.Extent();
if (!aNbIP1) {
break;
}
//
myImages.Bind(aVF, aLVSD);
aIt1.Initialize(aMIP);
for(; aIt1.More(); aIt1.Next()) {
aIP=aIt1.Key();
aMIPC.Add(aIP);
}
//
aMIP.Clear();
aIt1.Initialize(aMIP1);
for(; aIt1.More(); aIt1.Next()) {
aIP=aIt1.Key();
aMIP.Add(aIP);
}
aMIP1.Clear();
}// while(1)
//
// Fill myImages
aNbIP=aMIPC.Extent();
//
if (!aNbIP) {// no SD vertices founded
aVF=aV;
aLVSD.Append(aV);
aMVProcessed.Add(aV);
}
else { // SD vertices founded [ aMIPC ]
aIt1.Initialize(aMIPC);
for(j=0; aIt1.More(); aIt1.Next(), ++j) {
aIP=aIt1.Key();
const TopoDS_Shape& aVP=aMIS.FindFromKey(aIP);
if (!j) {
aVF=aVP;
}
aLVSD.Append(aVP);
aMVProcessed.Add(aVP);
}
}
myImages.Bind(aVF, aLVSD);
}// for (i=1; i<=aNbV; ++i) {
//------------------------------
//
// Make new vertices
aMV.Clear();
aItIm.Initialize(myImages);
@ -281,7 +346,6 @@ void GEOMAlgo_Gluer::MakeVertices()
for (; aItIm.More(); aItIm.Next()) {
const TopoDS_Shape& aV=aItIm.Key();
const TopTools_ListOfShape& aLVSD=aItIm.Value();
//
aItS.Initialize(aLVSD);
for (; aItS.More(); aItS.Next()) {
const TopoDS_Shape& aVSD=aItS.Value();
@ -424,8 +488,8 @@ void GEOMAlgo_Gluer::MakeShapes(const TopAbs_ShapeEnum aType)
TopoDS_Shape aNewShape;
TopTools_IndexedMapOfShape aMF;
TopTools_ListIteratorOfListOfShape aItS;
GEOMAlgo_PassKeyShape aPKF;//qft
GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape aMPKLF;//qft
GEOMAlgo_PassKeyShape aPKF;
GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape aMPKLF;
//
TopExp::MapShapes(myShape, aType, aMF);
//
@ -433,7 +497,6 @@ void GEOMAlgo_Gluer::MakeShapes(const TopAbs_ShapeEnum aType)
for (i=1; i<=aNbF; ++i) {
const TopoDS_Shape& aS=aMF(i);
//
//aPKF.Clear();//qft
if (aType==TopAbs_FACE) {
const TopoDS_Face& aF=TopoDS::Face(aS);
FacePassKey(aF, aPKF);
@ -622,21 +685,12 @@ void GEOMAlgo_Gluer::InnerTolerance()
void GEOMAlgo_Gluer::FacePassKey(const TopoDS_Face& aF,
GEOMAlgo_PassKeyShape& aPK)
{
Standard_Integer i, aNbE;//, aNbMax;//qft
Standard_Integer i, aNbE;
TopTools_ListOfShape aLE;
TopTools_IndexedMapOfShape aME;
//
TopExp::MapShapes(aF, TopAbs_EDGE, aME);
aNbE=aME.Extent();
//qf
/*
aNbMax=aPK.NbMax();
if (!aNbE || aNbE>aNbMax) {
myErrorStatus=101; // temprorary
return;
}
*/
//qt
//
for (i=1; i<=aNbE; ++i) {
const TopoDS_Shape& aE=aME(i);
@ -647,10 +701,7 @@ void GEOMAlgo_Gluer::FacePassKey(const TopoDS_Face& aF,
const TopoDS_Shape& aER=myOrigins.Find(aE);
aLE.Append(aER);
}
//qf
//aPK.SetIds(aLE);
aPK.SetShapes(aLE);
//qt
}
//=======================================================================
//function : EdgePassKey
@ -669,10 +720,7 @@ void GEOMAlgo_Gluer::EdgePassKey(const TopoDS_Edge& aE,
}
const TopoDS_Shape& aVR1=myOrigins.Find(aV1);
const TopoDS_Shape& aVR2=myOrigins.Find(aV2);
//qf
//aPK.SetIds(aVR1, aVR2);
aPK.SetShapes(aVR1, aVR2);
//qt
}
//=======================================================================
//function : MakeVertex
@ -774,7 +822,6 @@ void GEOMAlgo_Gluer::MakeEdge(const TopoDS_Edge& aE,
BOPTools_Tools::MakeSplitEdge(aEx, aVR1, aT1, aVR2, aT2, aNewEdge);
}
}
//
//=======================================================================
//function : MakeFace
//purpose :
@ -834,15 +881,13 @@ void GEOMAlgo_Gluer::MakeFace(const TopoDS_Face& aF,
//
aBB.Add(newWire, aER);
}
//modified by NIZNHY-PKV Mon Jan 31 17:26:36 2005f
//
// xf
TopTools_ListOfShape aLW;
//
aLW.Append(aW);
myImages.Bind(newWire, aLW);
myOrigins.Bind(aW, newWire);
//
//modified by NIZNHY-PKV Mon Jan 31 17:26:41 2005 t
// xt
aBB.Add(newFace, newWire);
}
aNewFace=newFace;
@ -963,10 +1008,10 @@ const TopTools_ListOfShape& GEOMAlgo_Gluer::Modified (const TopoDS_Shape& aS)
aType=aS.ShapeType();
if (aType==TopAbs_VERTEX ||
aType==TopAbs_EDGE ||
aType==TopAbs_WIRE || //modified by NIZNHY-PKV Mon Jan 31 17:18:36 2005ft
aType==TopAbs_WIRE ||
aType==TopAbs_FACE ||
aType==TopAbs_SHELL || //modified by NIZNHY-PKV Mon Jan 31 17:18:36 2005ft
aType==TopAbs_SOLID) { //modified by NIZNHY-PKV Mon Jan 31 17:18:36 2005ft
aType==TopAbs_SHELL ||
aType==TopAbs_SOLID) {
if(myOrigins.IsBound(aS)) {
const TopoDS_Shape& aSnew=myOrigins.Find(aS);
if (!aSnew.IsSame(aS)) {

View File

@ -0,0 +1,71 @@
-- Copyright (C) 2005 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: GEOMAlgo_Gluer1.cdl
-- Created: Wed Jan 24 11:37:31 2007
-- Author: Peter KURNEV
-- <pkv@irinox>
class Gluer1 from GEOMAlgo
inherits Gluer from GEOMAlgo
---Purpose:
uses
ListOfCoupleOfShapes from GEOMAlgo,
DataMapOfPassKeyShapeShape from GEOMAlgo
--raises
is
Create
returns Gluer1 from GEOMAlgo;
---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_Gluer1();"
SetFacesToUnglue(me:out;
aLCS:ListOfCoupleOfShapes from GEOMAlgo);
FacesToUnglue(me)
returns ListOfCoupleOfShapes from GEOMAlgo;
---C++: return const&
GluedFaces(me)
returns ListOfCoupleOfShapes from GEOMAlgo;
---C++: return const&
RejectedFaces(me)
returns ListOfCoupleOfShapes from GEOMAlgo;
---C++: return const&
Perform(me:out)
is redefined;
UnglueFaces(me:out);
FillGluedFaces(me:out)
is protected;
fields
myGluedFaces :ListOfCoupleOfShapes from GEOMAlgo is protected;
myFacesToUnglue :ListOfCoupleOfShapes from GEOMAlgo is protected;
myRejectedFaces :ListOfCoupleOfShapes from GEOMAlgo is protected;
myMapGN :DataMapOfPassKeyShapeShape from GEOMAlgo is protected;
end Gluer1;

542
src/GEOMAlgo/GEOMAlgo_Gluer1.cxx Executable file
View File

@ -0,0 +1,542 @@
// Copyright (C) 2005 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: GEOMAlgo_Gluer1.cxx
// Created: Wed Jan 24 11:52:27 2007
// Author: Peter KURNEV
// <pkv@irinox>
#include <GEOMAlgo_Gluer1.ixx>
#include <Geom_Surface.hxx>
#include <TopLoc_Location.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Shape.hxx>
#include <TopoDS_Face.hxx>
#include <TopoDS_Iterator.hxx>
#include <BRep_Builder.hxx>
#include <BRep_Tool.hxx>
#include <TopExp.hxx>
#include <TopTools_DataMapIteratorOfDataMapOfShapeShape.hxx>
#include <TopTools_DataMapIteratorOfDataMapOfShapeListOfShape.hxx>
#include <TopTools_ListOfShape.hxx>
#include <TopTools_ListIteratorOfListOfShape.hxx>
#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
#include <TopTools_MapOfShape.hxx>
#include <TopTools_MapOfShape.hxx>
#include <TopTools_DataMapOfShapeShape.hxx>
#include <GEOMAlgo_CoupleOfShapes.hxx>
#include <GEOMAlgo_PassKeyShape.hxx>
#include <GEOMAlgo_ListIteratorOfListOfCoupleOfShapes.hxx>
#include <GEOMAlgo_DataMapOfPassKeyShapeShape.hxx>
#include <GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyShapeShape.hxx>
//=======================================================================
//class : GEOMAlgo_CoupleOfInteger
//purpose :
//=======================================================================
class GEOMAlgo_CoupleOfInteger {
//
public:
//
GEOMAlgo_CoupleOfInteger() {
myInt1=0;
myInt2=0;
}
//
~GEOMAlgo_CoupleOfInteger() {
}
//
void SetValues(const Standard_Integer aI1,
const Standard_Integer aI2) {
myInt1=aI1;
myInt2=aI2;
}
//
void SetValue1(const Standard_Integer aI1) {
myInt1=aI1;
}
//
void SetValue2(const Standard_Integer aI1) {
myInt1=aI1;
}
//
void Values(Standard_Integer& aI1,
Standard_Integer& aI2) const {
aI1=myInt1;
aI2=myInt2;
}
//
Standard_Integer Value1()const {
return myInt1;
}
//
Standard_Integer Value2()const {
return myInt2;
}
//
protected:
Standard_Integer myInt1;
Standard_Integer myInt2;
};
//
//=======================================================================
//
static
void SortShell(const Standard_Integer ,
GEOMAlgo_CoupleOfInteger* );
static
void RefineSolid(const TopoDS_Shape& ,
const TopTools_DataMapOfShapeShape& ,
TopTools_DataMapOfShapeShape& );
static
void MakeFaceToReplace(const TopoDS_Face& ,
TopoDS_Face& );
//
//=======================================================================
//function : GEOMAlgo_Gluer1
//purpose :
//=======================================================================
GEOMAlgo_Gluer1::GEOMAlgo_Gluer1()
:
GEOMAlgo_Gluer()
{
}
//=======================================================================
//function :
//purpose :
//=======================================================================
GEOMAlgo_Gluer1::~GEOMAlgo_Gluer1()
{
}
//=======================================================================
//function : SetFacesToUnglue
//purpose :
//=======================================================================
void GEOMAlgo_Gluer1::SetFacesToUnglue(const GEOMAlgo_ListOfCoupleOfShapes& aLCS)
{
myFacesToUnglue=aLCS;
}
//=======================================================================
//function : FacesToUnglue
//purpose :
//=======================================================================
const GEOMAlgo_ListOfCoupleOfShapes& GEOMAlgo_Gluer1::FacesToUnglue()const
{
return myFacesToUnglue;
}
//=======================================================================
//function : GluedFaces
//purpose :
//=======================================================================
const GEOMAlgo_ListOfCoupleOfShapes& GEOMAlgo_Gluer1::GluedFaces()const
{
return myGluedFaces;
}
//=======================================================================
//function : RejectedFaces
//purpose :
//=======================================================================
const GEOMAlgo_ListOfCoupleOfShapes& GEOMAlgo_Gluer1::RejectedFaces()const
{
return myRejectedFaces;
}
//=======================================================================
//function : Perform
//purpose :
//=======================================================================
void GEOMAlgo_Gluer1::Perform()
{
// 1.
GEOMAlgo_Gluer::Perform();
if (myErrorStatus) {
return;
}
//
FillGluedFaces();
if (myErrorStatus) {
return;
}
}
//=======================================================================
//function : FillGluedFaces
//purpose :
//=======================================================================
void GEOMAlgo_Gluer1::FillGluedFaces()
{
myErrorStatus=0;
//
Standard_Integer aNbIm, aNbS, i;
TopAbs_ShapeEnum aType;
TopTools_ListIteratorOfListOfShape aItLS;
TopTools_DataMapIteratorOfDataMapOfShapeListOfShape aItIm;
GEOMAlgo_CoupleOfShapes aCS;
GEOMAlgo_PassKeyShape aPKS;
//
myMapGN.Clear();
myGluedFaces.Clear();
//
aNbIm=myImages.Extent();
aItIm.Initialize(myImages);
for (; aItIm.More(); aItIm.Next()) {
const TopoDS_Shape& aSnew=aItIm.Key();
aType=aSnew.ShapeType();
if (aType!=TopAbs_FACE) {
continue;
}
//
const TopTools_ListOfShape& aLS=aItIm.Value();
aNbS=aLS.Extent();
if (aNbS!=2) {
continue;
}
//
TopoDS_Shape aSold[2];
aItLS.Initialize(aLS);
for (i=0; aItLS.More(); aItLS.Next(), ++i) {
const TopoDS_Shape& aSi=aItLS.Value();
aSold[i]=aItLS.Value();
}
//
aCS.SetShapes(aSold[0], aSold[1]);
myGluedFaces.Append(aCS);
//
aPKS.Clear();
aPKS.SetShapes(aSold[0], aSold[1]);
myMapGN.Bind(aPKS, aSnew);
}
}
//=======================================================================
//function : UnglueFaces
//purpose :
//=======================================================================
void GEOMAlgo_Gluer1::UnglueFaces()
{
if (myErrorStatus) {
return;
}
//
Standard_Boolean bFound;
Standard_Integer i, aNbUN, aNbS, aNbF, iX;
TopTools_IndexedDataMapOfShapeListOfShape aMFSR, aMFS, aMSF;
TopTools_ListIteratorOfListOfShape aItLS, aItLS1;
GEOMAlgo_PassKeyShape aPKS;
GEOMAlgo_ListIteratorOfListOfCoupleOfShapes aItCS;
GEOMAlgo_DataMapOfPassKeyShapeShape aMapUN;
GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyShapeShape aItUN;
GEOMAlgo_CoupleOfInteger *pIx;
//
if (myResult.IsNull()) {
myErrorStatus=200; // no result
return;
}
myWarningStatus=0;
myRejectedFaces.Clear();
//
// 0. Fill map [Face]/Solid for myResult: aMFSR
TopExp::MapShapesAndAncestors(myResult, TopAbs_FACE, TopAbs_SOLID, aMFSR);
//
// 1. Fill Faces to process: aMapUN : [Fold1, Fold2] / Fnew
aNbUN=myFacesToUnglue.Extent();
if (!aNbUN) {
// all faces that can be unglued will be unglued
aMapUN=myMapGN;
myFacesToUnglue=myGluedFaces;
}
else {
aItCS.Initialize(myFacesToUnglue);
for (; aItCS.More(); aItCS.Next()) {
const GEOMAlgo_CoupleOfShapes& aCS=aItCS.Value();
const TopoDS_Shape& aS1=aCS.Shape1();
const TopoDS_Shape& aS2=aCS.Shape2();
aPKS.Clear();
aPKS.SetShapes(aS1, aS2);
if (!myMapGN.IsBound(aPKS)) {
//some faces, wanted to unglue, are not glued at all;
myWarningStatus=2;
myRejectedFaces.Append(aCS);
continue;
}
//
const TopoDS_Shape& aFN=myMapGN.Find(aPKS);
aMapUN.Bind(aPKS, aFN);
}
}
//
// 2 Fill map FN/Solids for myResult: aMFS
aNbUN=aMapUN.Extent();
aItUN.Initialize(aMapUN);
for (; aItUN.More(); aItUN.Next()) {
const TopoDS_Shape& aFN=aItUN.Value();
if (!aMFSR.Contains(aFN)) {
myWarningStatus=3; // how can it be
continue;
}
//
const TopTools_ListOfShape& aLS=aMFSR.FindFromKey(aFN);
aNbS=aLS.Extent();
if (aNbS!=2) {
// wrong result: More than 2 solids shared one face
myWarningStatus=4;
continue;
}
aMFS.Add(aFN, aLS);
}
//
// 3 Fill map Solids/FN for myResult: aMSF
aNbUN=aMFS.Extent();
for (i=1; i<=aNbUN; ++i) {
const TopoDS_Shape& aFN=aMFS.FindKey(i);
const TopTools_ListOfShape& aLS=aMFS(i);
aItLS.Initialize(aLS);
for (; aItLS.More(); aItLS.Next()) {
const TopoDS_Shape& aS=aItLS.Value();
if (aMSF.Contains(aS)) {
TopTools_ListOfShape& aLF=aMSF.ChangeFromKey(aS);
aLF.Append(aFN);
}
else {
TopTools_ListOfShape aLF;
aLF.Append(aFN);
aMSF.Add(aS, aLF);
}
}
}
//
// 4 Sort indices of aMSF
aNbS=aMSF.Extent();
if (aNbS<2) {
// wrong number of solids that have shared face
myWarningStatus=5;
}
//
pIx=new GEOMAlgo_CoupleOfInteger[aNbS];
//
for (i=1; i<=aNbS; ++i) {
const TopTools_ListOfShape& aLF=aMSF(i);
aNbF=aLF.Extent();
pIx[i-1].SetValues(aNbF, i);
}
SortShell(aNbS, pIx);
//
// 5 Refine solids
//
TopTools_DataMapOfShapeShape aMFNFN2, aMFNFD;
TopTools_DataMapIteratorOfDataMapOfShapeShape aItMSS;
TopTools_MapOfShape aMFNP;
TopTools_IndexedMapOfShape aMFD;
//
for (iX=aNbS-1; iX>=0; --iX) {
i=pIx[iX].Value2();
// solid from myResult aSN
const TopoDS_Shape& aSN=aMSF.FindKey(i);
//
// candidates to be faces to replace for aSN
const TopTools_ListOfShape& aLFN=aMSF(i);
aNbF=aLFN.Extent();
//
// original solid for aSN -> aSD
const TopTools_ListOfShape& aLSD=myImages.Find(aSN);
const TopoDS_Shape& aSD=aLSD.First();
//
// faces of original solid -> aMFD
aMFD.Clear();
TopExp::MapShapes(aSD, TopAbs_FACE, aMFD);
//
// faces to replace for aSN [FN]/FD -> aMFNFD
aMFNFD.Clear();
aItLS.Initialize(aLFN);
for (; aItLS.More(); aItLS.Next()) {
const TopoDS_Shape& aFN=aItLS.Value();
if (!aMFNP.Add(aFN)) {
continue;
}
//
// original face from original solid -> FD
TopoDS_Shape aFD;
//
bFound=Standard_False;
const TopTools_ListOfShape& aLFD=myImages.Find(aFN);
aItLS1.Initialize(aLFD);
for (; aItLS1.More(); aItLS1.Next()) {
const TopoDS_Shape& aFDx=aItLS1.Value();
if (aMFD.Contains(aFDx)) {
aFD=aFDx;
bFound=Standard_True;
break;
}
}
//if (!bFound) {...}
aMFNFD.Bind(aFN, aFD);
} // for (; aItLS.More(); aItLS.Next()) {
//
aNbF=aMFNFD.Extent();
if (!aNbF) {
// nothing to do here
continue;
}
// update solid SN (and its shells)
RefineSolid(aSN, aMFNFD, aMFNFN2);
//
// update myOrigins / myImages
aItMSS.Initialize(aMFNFD);
for (; aItMSS.More(); aItMSS.Next()) {
const TopoDS_Shape& aFN=aItMSS.Key(); // face removed from aSN
const TopoDS_Shape& aFD=aItMSS.Value(); // old face from aSD
const TopoDS_Shape& aFN2=aMFNFN2.Find(aFN);// face added to aSN
//
// myOrigins
myOrigins.ChangeFind(aFD)=aFN2;
//
// myImages
TopTools_ListOfShape aLFDx;
//
TopTools_ListOfShape& aLFD=myImages.ChangeFind(aFN);
aItLS.Initialize(aLFD);
for (; aItLS.More(); aItLS.Next()) {
const TopoDS_Shape& aFDx=aItLS.Value();
if (!aFDx.IsSame(aFD)) {
aLFDx.Append(aFDx);
}
}
aLFD=aLFDx;
//
aLFDx.Clear();
aLFDx.Append(aFD);
myImages.Bind(aFN2, aLFDx);
} // for (; aItMSS.More(); aItMSS.Next()) {
} // for (iX=aNbS-1; iX>=0; --iX) {
//
delete [] pIx;
}
//=======================================================================
// function: RefineSolid
// purpose : replace faces (aMFN) of solid aSd by new ones
//=======================================================================
void RefineSolid(const TopoDS_Shape& aSd,
const TopTools_DataMapOfShapeShape& aMFNFD,
TopTools_DataMapOfShapeShape& aMFNFN2)
{
TopoDS_Shape *pSh;
TopoDS_Face aF2;
TopoDS_Iterator aItSd, aItSh;
BRep_Builder aBB;
TopTools_ListOfShape aLF;
TopTools_ListIteratorOfListOfShape aItLF;
//
aItSd.Initialize(aSd);
for (; aItSd.More(); aItSd.Next()) {
const TopoDS_Shape& aSh=aItSd.Value();
pSh=(TopoDS_Shape *)&aSh;
pSh->Free(Standard_True);
aLF.Clear();
aItSh.Initialize(*pSh);
for (; aItSh.More(); aItSh.Next()) {
const TopoDS_Shape& aF=aItSh.Value();
if (aMFNFD.IsBound(aF)) {
aLF.Append(aF);
}
}
//
aItLF.Initialize(aLF);
for (; aItLF.More(); aItLF.Next()) {
const TopoDS_Face& aF=TopoDS::Face(aItLF.Value());
//
MakeFaceToReplace(aF, aF2);
//
aMFNFN2.Bind(aF, aF2);
aBB.Remove(*pSh, aF);
aBB.Add(*pSh, aF2);
}
pSh->Free(Standard_False);
}
}
//=======================================================================
//function : MakeFaceToReplace
//purpose :
//=======================================================================
void MakeFaceToReplace(const TopoDS_Face& aF,
TopoDS_Face& aFR)
{
Standard_Real aTol;
Handle(Geom_Surface) aS;
TopLoc_Location aLoc;
TopoDS_Face aFFWD, aFnew;
TopoDS_Iterator aItF;
BRep_Builder aBB;
//
aFFWD=aF;
aFFWD.Orientation(TopAbs_FORWARD);
aS=BRep_Tool::Surface(aFFWD, aLoc);
aTol=BRep_Tool::Tolerance(aFFWD);
//
aBB.MakeFace (aFnew, aS, aLoc, aTol);
aItF.Initialize(aFFWD);
for (; aItF.More(); aItF.Next()) {
const TopoDS_Shape& aW=aItF.Value();
aBB.Add(aFnew, aW);
}
aFnew.Orientation(aF.Orientation());
aFR=aFnew;
}
//=======================================================================
// function: SortShell
// purpose :
//=======================================================================
void SortShell(const Standard_Integer n,
GEOMAlgo_CoupleOfInteger* a)
{
Standard_Integer nd, i, j, l, d=1;
GEOMAlgo_CoupleOfInteger x;
//
while(d<=n) {
d*=2;
}
//
while (d) {
d=(d-1)/2;
//
nd=n-d;
for (i=0; i<nd; ++i) {
j=i;
m30:;
l=j+d;
if (a[l].Value1() < a[j].Value1()) {
x=a[j];
a[j]=a[l];
a[l]=x;
j-=d;
if (j > -1) {
goto m30;
}
}//if (a[l] < a[j]){
}//for (i=0; i<nd; ++i)
}//while (1)
}
//
// ErrorStatus
//
// 200; - result shape is Null

View File

@ -0,0 +1,125 @@
// Copyright (C) 2005 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
#ifndef _GEOMAlgo_Gluer1_HeaderFile
#define _GEOMAlgo_Gluer1_HeaderFile
#ifndef _GEOMAlgo_ListOfCoupleOfShapes_HeaderFile
#include <GEOMAlgo_ListOfCoupleOfShapes.hxx>
#endif
#ifndef _GEOMAlgo_DataMapOfPassKeyShapeShape_HeaderFile
#include <GEOMAlgo_DataMapOfPassKeyShapeShape.hxx>
#endif
#ifndef _GEOMAlgo_Gluer_HeaderFile
#include <GEOMAlgo_Gluer.hxx>
#endif
class GEOMAlgo_ListOfCoupleOfShapes;
#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_Macro_HeaderFile
#include <Standard_Macro.hxx>
#endif
class GEOMAlgo_Gluer1 : public GEOMAlgo_Gluer {
public:
void* operator new(size_t,void* anAddress)
{
return anAddress;
}
void* operator new(size_t size)
{
return Standard::Allocate(size);
}
void operator delete(void *anAddress)
{
if (anAddress) Standard::Free((Standard_Address&)anAddress);
}
// Methods PUBLIC
//
Standard_EXPORT GEOMAlgo_Gluer1();
Standard_EXPORT virtual ~GEOMAlgo_Gluer1();
Standard_EXPORT void SetFacesToUnglue(const GEOMAlgo_ListOfCoupleOfShapes& aLCS) ;
Standard_EXPORT const GEOMAlgo_ListOfCoupleOfShapes& FacesToUnglue() const;
Standard_EXPORT const GEOMAlgo_ListOfCoupleOfShapes& GluedFaces() const;
Standard_EXPORT const GEOMAlgo_ListOfCoupleOfShapes& RejectedFaces() const;
Standard_EXPORT virtual void Perform() ;
Standard_EXPORT void UnglueFaces() ;
protected:
// Methods PROTECTED
//
Standard_EXPORT void FillGluedFaces() ;
// Fields PROTECTED
//
GEOMAlgo_ListOfCoupleOfShapes myGluedFaces;
GEOMAlgo_ListOfCoupleOfShapes myFacesToUnglue;
GEOMAlgo_ListOfCoupleOfShapes myRejectedFaces;
GEOMAlgo_DataMapOfPassKeyShapeShape myMapGN;
private:
// Methods PRIVATE
//
// Fields PRIVATE
//
};
// other Inline functions and methods (like "C++: function call" methods)
//
#endif

View File

@ -0,0 +1,24 @@
// Copyright (C) 2005 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
#include <GEOMAlgo_Gluer1.jxx>

View File

@ -0,0 +1,25 @@
// Copyright (C) 2005 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
#ifndef _GEOMAlgo_ListOfCoupleOfShapes_HeaderFile
#include <GEOMAlgo_ListOfCoupleOfShapes.hxx>
#endif
#ifndef _GEOMAlgo_Gluer1_HeaderFile
#include <GEOMAlgo_Gluer1.hxx>
#endif

View File

@ -0,0 +1,139 @@
// File generated by CPPExt (Transient)
//
//
// Copyright (C) 1991 - 2000 by
// Matra Datavision SA. All rights reserved.
//
// Copyright (C) 2001 - 2004 by
// Open CASCADE SA. All rights reserved.
//
// This file is part of the Open CASCADE Technology software.
//
// This software may be distributed and/or modified under the terms and
// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
// and appearing in the file LICENSE included in the packaging of this file.
//
// This software is distributed on an "AS IS" basis, without warranty of any
// kind, and Open CASCADE SA hereby disclaims all such warranties,
// including without limitation, any warranties of merchantability, fitness
// for a particular purpose or non-infringement. Please see the License for
// the specific terms and conditions governing rights and limitations under the
// License.
#ifndef _GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo_HeaderFile
#define _GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo_HeaderFile
#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo_HeaderFile
#include <Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo.hxx>
#endif
#ifndef _TopoDS_Shape_HeaderFile
#include <TopoDS_Shape.hxx>
#endif
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _GEOMAlgo_ShapeInfo_HeaderFile
#include <GEOMAlgo_ShapeInfo.hxx>
#endif
#ifndef _TCollection_MapNodePtr_HeaderFile
#include <TCollection_MapNodePtr.hxx>
#endif
#ifndef _TCollection_MapNode_HeaderFile
#include <TCollection_MapNode.hxx>
#endif
class TopoDS_Shape;
class GEOMAlgo_ShapeInfo;
class TopTools_ShapeMapHasher;
class GEOMAlgo_IndexedDataMapOfShapeShapeInfo;
class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo : public TCollection_MapNode {
public:
// Methods PUBLIC
//
GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo(const TopoDS_Shape& K1,const Standard_Integer K2,const GEOMAlgo_ShapeInfo& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2);
TopoDS_Shape& Key1() const;
Standard_Integer& Key2() const;
TCollection_MapNodePtr& Next2() const;
GEOMAlgo_ShapeInfo& Value() const;
//Standard_EXPORT ~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo();
// Type management
//
Standard_EXPORT const Handle(Standard_Type)& DynamicType() const;
//Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const;
protected:
// Methods PROTECTED
//
// Fields PROTECTED
//
private:
// Methods PRIVATE
//
// Fields PRIVATE
//
TopoDS_Shape myKey1;
Standard_Integer myKey2;
GEOMAlgo_ShapeInfo myValue;
TCollection_MapNodePtr myNext2;
};
#define TheKey TopoDS_Shape
#define TheKey_hxx <TopoDS_Shape.hxx>
#define TheItem GEOMAlgo_ShapeInfo
#define TheItem_hxx <GEOMAlgo_ShapeInfo.hxx>
#define Hasher TopTools_ShapeMapHasher
#define Hasher_hxx <TopTools_ShapeMapHasher.hxx>
#define TCollection_IndexedDataMapNode GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo
#define TCollection_IndexedDataMapNode_hxx <GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo.hxx>
#define Handle_TCollection_IndexedDataMapNode Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo
#define TCollection_IndexedDataMapNode_Type_() GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo_Type_()
#define TCollection_IndexedDataMap GEOMAlgo_IndexedDataMapOfShapeShapeInfo
#define TCollection_IndexedDataMap_hxx <GEOMAlgo_IndexedDataMapOfShapeShapeInfo.hxx>
#include <TCollection_IndexedDataMapNode.lxx>
#undef TheKey
#undef TheKey_hxx
#undef TheItem
#undef TheItem_hxx
#undef Hasher
#undef Hasher_hxx
#undef TCollection_IndexedDataMapNode
#undef TCollection_IndexedDataMapNode_hxx
#undef Handle_TCollection_IndexedDataMapNode
#undef TCollection_IndexedDataMapNode_Type_
#undef TCollection_IndexedDataMap
#undef TCollection_IndexedDataMap_hxx
// other Inline functions and methods (like "C++: function call" methods)
//
#endif

View File

@ -0,0 +1,100 @@
// File generated by CPPExt (Transient)
//
// Copyright (C) 1991 - 2000 by
// Matra Datavision SA. All rights reserved.
//
// Copyright (C) 2001 - 2004 by
// Open CASCADE SA. All rights reserved.
//
// This file is part of the Open CASCADE Technology software.
//
// This software may be distributed and/or modified under the terms and
// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
// and appearing in the file LICENSE included in the packaging of this file.
//
// This software is distributed on an "AS IS" basis, without warranty of any
// kind, and Open CASCADE SA hereby disclaims all such warranties,
// including without limitation, any warranties of merchantability, fitness
// for a particular purpose or non-infringement. Please see the License for
// the specific terms and conditions governing rights and limitations under the
// License.
#include <GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo.hxx>
#ifndef _Standard_TypeMismatch_HeaderFile
#include <Standard_TypeMismatch.hxx>
#endif
#ifndef _TopoDS_Shape_HeaderFile
#include <TopoDS_Shape.hxx>
#endif
#ifndef _GEOMAlgo_ShapeInfo_HeaderFile
#include <GEOMAlgo_ShapeInfo.hxx>
#endif
#ifndef _TopTools_ShapeMapHasher_HeaderFile
#include <TopTools_ShapeMapHasher.hxx>
#endif
#ifndef _GEOMAlgo_IndexedDataMapOfShapeShapeInfo_HeaderFile
#include <GEOMAlgo_IndexedDataMapOfShapeShapeInfo.hxx>
#endif
//GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo::~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo() {}
Standard_EXPORT Handle_Standard_Type& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo_Type_()
{
static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode);
static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
static Handle_Standard_Type _aType = new Standard_Type("GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo",
sizeof(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo),
1,
(Standard_Address)_Ancestors,
(Standard_Address)NULL);
return _aType;
}
// DownCast method
// allow safe downcasting
//
const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo) Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo)::DownCast(const Handle(Standard_Transient)& AnObject)
{
Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo) _anOtherObject;
if (!AnObject.IsNull()) {
if (AnObject->IsKind(STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo))) {
_anOtherObject = Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo)((Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo)&)AnObject);
}
}
return _anOtherObject ;
}
const Handle(Standard_Type)& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo::DynamicType() const
{
return STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo) ;
}
//Standard_Boolean GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo::IsKind(const Handle(Standard_Type)& AType) const
//{
// return (STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo) == AType || TCollection_MapNode::IsKind(AType));
//}
//Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo::~Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo() {}
#define TheKey TopoDS_Shape
#define TheKey_hxx <TopoDS_Shape.hxx>
#define TheItem GEOMAlgo_ShapeInfo
#define TheItem_hxx <GEOMAlgo_ShapeInfo.hxx>
#define Hasher TopTools_ShapeMapHasher
#define Hasher_hxx <TopTools_ShapeMapHasher.hxx>
#define TCollection_IndexedDataMapNode GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo
#define TCollection_IndexedDataMapNode_hxx <GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo.hxx>
#define Handle_TCollection_IndexedDataMapNode Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo
#define TCollection_IndexedDataMapNode_Type_() GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo_Type_()
#define TCollection_IndexedDataMap GEOMAlgo_IndexedDataMapOfShapeShapeInfo
#define TCollection_IndexedDataMap_hxx <GEOMAlgo_IndexedDataMapOfShapeShapeInfo.hxx>
#include <TCollection_IndexedDataMapNode.gxx>

View File

@ -0,0 +1,172 @@
// File generated by CPPExt (Value)
//
// Copyright (C) 1991 - 2000 by
// Matra Datavision SA. All rights reserved.
//
// Copyright (C) 2001 - 2004 by
// Open CASCADE SA. All rights reserved.
//
// This file is part of the Open CASCADE Technology software.
//
// This software may be distributed and/or modified under the terms and
// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
// and appearing in the file LICENSE included in the packaging of this file.
//
// This software is distributed on an "AS IS" basis, without warranty of any
// kind, and Open CASCADE SA hereby disclaims all such warranties,
// including without limitation, any warranties of merchantability, fitness
// for a particular purpose or non-infringement. Please see the License for
// the specific terms and conditions governing rights and limitations under the
// License.
#ifndef _GEOMAlgo_IndexedDataMapOfShapeShapeInfo_HeaderFile
#define _GEOMAlgo_IndexedDataMapOfShapeShapeInfo_HeaderFile
#ifndef _TCollection_BasicMap_HeaderFile
#include <TCollection_BasicMap.hxx>
#endif
#ifndef _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo_HeaderFile
#include <Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo.hxx>
#endif
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
class Standard_DomainError;
class Standard_OutOfRange;
class Standard_NoSuchObject;
class TopoDS_Shape;
class GEOMAlgo_ShapeInfo;
class TopTools_ShapeMapHasher;
class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo;
#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_Macro_HeaderFile
#include <Standard_Macro.hxx>
#endif
class GEOMAlgo_IndexedDataMapOfShapeShapeInfo : public TCollection_BasicMap {
public:
void* operator new(size_t,void* anAddress)
{
return anAddress;
}
void* operator new(size_t size)
{
return Standard::Allocate(size);
}
void operator delete(void *anAddress)
{
if (anAddress) Standard::Free((Standard_Address&)anAddress);
}
// Methods PUBLIC
//
Standard_EXPORT GEOMAlgo_IndexedDataMapOfShapeShapeInfo(const Standard_Integer NbBuckets = 1);
Standard_EXPORT GEOMAlgo_IndexedDataMapOfShapeShapeInfo& Assign(const GEOMAlgo_IndexedDataMapOfShapeShapeInfo& Other) ;
GEOMAlgo_IndexedDataMapOfShapeShapeInfo& operator =(const GEOMAlgo_IndexedDataMapOfShapeShapeInfo& Other)
{
return Assign(Other);
}
Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ;
Standard_EXPORT void Clear() ;
~GEOMAlgo_IndexedDataMapOfShapeShapeInfo()
{
Clear();
}
Standard_EXPORT Standard_Integer Add(const TopoDS_Shape& K,const GEOMAlgo_ShapeInfo& I) ;
Standard_EXPORT void Substitute(const Standard_Integer I,const TopoDS_Shape& K,const GEOMAlgo_ShapeInfo& T) ;
Standard_EXPORT void RemoveLast() ;
Standard_EXPORT Standard_Boolean Contains(const TopoDS_Shape& K) const;
Standard_EXPORT const TopoDS_Shape& FindKey(const Standard_Integer I) const;
Standard_EXPORT const GEOMAlgo_ShapeInfo& FindFromIndex(const Standard_Integer I) const;
const GEOMAlgo_ShapeInfo& operator ()(const Standard_Integer I) const
{
return FindFromIndex(I);
}
Standard_EXPORT GEOMAlgo_ShapeInfo& ChangeFromIndex(const Standard_Integer I) ;
GEOMAlgo_ShapeInfo& operator ()(const Standard_Integer I)
{
return ChangeFromIndex(I);
}
Standard_EXPORT Standard_Integer FindIndex(const TopoDS_Shape& K) const;
Standard_EXPORT const GEOMAlgo_ShapeInfo& FindFromKey(const TopoDS_Shape& K) const;
Standard_EXPORT GEOMAlgo_ShapeInfo& ChangeFromKey(const TopoDS_Shape& K) ;
protected:
// Methods PROTECTED
//
// Fields PROTECTED
//
private:
// Methods PRIVATE
//
Standard_EXPORT GEOMAlgo_IndexedDataMapOfShapeShapeInfo(const GEOMAlgo_IndexedDataMapOfShapeShapeInfo& Other);
// Fields PRIVATE
//
};
// other Inline functions and methods (like "C++: function call" methods)
//
#endif

View File

@ -0,0 +1,60 @@
// File generated by CPPExt (Value)
//
// Copyright (C) 1991 - 2000 by
// Matra Datavision SA. All rights reserved.
//
// Copyright (C) 2001 - 2004 by
// Open CASCADE SA. All rights reserved.
//
// This file is part of the Open CASCADE Technology software.
//
// This software may be distributed and/or modified under the terms and
// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
// and appearing in the file LICENSE included in the packaging of this file.
//
// This software is distributed on an "AS IS" basis, without warranty of any
// kind, and Open CASCADE SA hereby disclaims all such warranties,
// including without limitation, any warranties of merchantability, fitness
// for a particular purpose or non-infringement. Please see the License for
// the specific terms and conditions governing rights and limitations under the
// License.
#include <GEOMAlgo_IndexedDataMapOfShapeShapeInfo.hxx>
#ifndef _Standard_DomainError_HeaderFile
#include <Standard_DomainError.hxx>
#endif
#ifndef _Standard_OutOfRange_HeaderFile
#include <Standard_OutOfRange.hxx>
#endif
#ifndef _Standard_NoSuchObject_HeaderFile
#include <Standard_NoSuchObject.hxx>
#endif
#ifndef _TopoDS_Shape_HeaderFile
#include <TopoDS_Shape.hxx>
#endif
#ifndef _GEOMAlgo_ShapeInfo_HeaderFile
#include <GEOMAlgo_ShapeInfo.hxx>
#endif
#ifndef _TopTools_ShapeMapHasher_HeaderFile
#include <TopTools_ShapeMapHasher.hxx>
#endif
#ifndef _GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo_HeaderFile
#include <GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo.hxx>
#endif
#define TheKey TopoDS_Shape
#define TheKey_hxx <TopoDS_Shape.hxx>
#define TheItem GEOMAlgo_ShapeInfo
#define TheItem_hxx <GEOMAlgo_ShapeInfo.hxx>
#define Hasher TopTools_ShapeMapHasher
#define Hasher_hxx <TopTools_ShapeMapHasher.hxx>
#define TCollection_IndexedDataMapNode GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo
#define TCollection_IndexedDataMapNode_hxx <GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo.hxx>
#define Handle_TCollection_IndexedDataMapNode Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo
#define TCollection_IndexedDataMapNode_Type_() GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo_Type_()
#define TCollection_IndexedDataMap GEOMAlgo_IndexedDataMapOfShapeShapeInfo
#define TCollection_IndexedDataMap_hxx <GEOMAlgo_IndexedDataMapOfShapeShapeInfo.hxx>
#include <TCollection_IndexedDataMap.gxx>

View File

@ -0,0 +1,37 @@
// File generated by CPPExt (Enum)
//
// Copyright (C) 1991 - 2000 by
// Matra Datavision SA. All rights reserved.
//
// Copyright (C) 2001 - 2004 by
// Open CASCADE SA. All rights reserved.
//
// This file is part of the Open CASCADE Technology software.
//
// This software may be distributed and/or modified under the terms and
// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
// and appearing in the file LICENSE included in the packaging of this file.
//
// This software is distributed on an "AS IS" basis, without warranty of any
// kind, and Open CASCADE SA hereby disclaims all such warranties,
// including without limitation, any warranties of merchantability, fitness
// for a particular purpose or non-infringement. Please see the License for
// the specific terms and conditions governing rights and limitations under the
// License.
#ifndef _GEOMAlgo_KindOfBounds_HeaderFile
#define _GEOMAlgo_KindOfBounds_HeaderFile
enum GEOMAlgo_KindOfBounds {
GEOMAlgo_KB_UNKNOWN,
GEOMAlgo_KB_TRIMMED,
GEOMAlgo_KB_INFINITE
};
#ifndef _Standard_PrimitiveTypes_HeaderFile
#include <Standard_PrimitiveTypes.hxx>
#endif
#endif

View File

@ -0,0 +1,37 @@
// File generated by CPPExt (Enum)
//
// Copyright (C) 1991 - 2000 by
// Matra Datavision SA. All rights reserved.
//
// Copyright (C) 2001 - 2004 by
// Open CASCADE SA. All rights reserved.
//
// This file is part of the Open CASCADE Technology software.
//
// This software may be distributed and/or modified under the terms and
// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
// and appearing in the file LICENSE included in the packaging of this file.
//
// This software is distributed on an "AS IS" basis, without warranty of any
// kind, and Open CASCADE SA hereby disclaims all such warranties,
// including without limitation, any warranties of merchantability, fitness
// for a particular purpose or non-infringement. Please see the License for
// the specific terms and conditions governing rights and limitations under the
// License.
#ifndef _GEOMAlgo_KindOfClosed_HeaderFile
#define _GEOMAlgo_KindOfClosed_HeaderFile
enum GEOMAlgo_KindOfClosed {
GEOMAlgo_KC_UNKNOWN,
GEOMAlgo_KC_CLOSED,
GEOMAlgo_KC_NOTCLOSED
};
#ifndef _Standard_PrimitiveTypes_HeaderFile
#include <Standard_PrimitiveTypes.hxx>
#endif
#endif

View File

@ -0,0 +1,54 @@
// File generated by CPPExt (Enum)
//
// Copyright (C) 1991 - 2000 by
// Matra Datavision SA. All rights reserved.
//
// Copyright (C) 2001 - 2004 by
// Open CASCADE SA. All rights reserved.
//
// This file is part of the Open CASCADE Technology software.
//
// This software may be distributed and/or modified under the terms and
// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
// and appearing in the file LICENSE included in the packaging of this file.
//
// This software is distributed on an "AS IS" basis, without warranty of any
// kind, and Open CASCADE SA hereby disclaims all such warranties,
// including without limitation, any warranties of merchantability, fitness
// for a particular purpose or non-infringement. Please see the License for
// the specific terms and conditions governing rights and limitations under the
// License.
#ifndef _GEOMAlgo_KindOfName_HeaderFile
#define _GEOMAlgo_KindOfName_HeaderFile
enum GEOMAlgo_KindOfName {
GEOMAlgo_KN_UNKNOWN,
GEOMAlgo_KN_SPHERE,
GEOMAlgo_KN_CYLINDER,
GEOMAlgo_KN_TORUS,
GEOMAlgo_KN_CONE,
GEOMAlgo_KN_ELLIPSE,
GEOMAlgo_KN_CIRCLE,
GEOMAlgo_KN_PLANE,
GEOMAlgo_KN_LINE,
GEOMAlgo_KN_BOX,
GEOMAlgo_KN_SEGMENT,
GEOMAlgo_KN_ARCCIRCLE,
GEOMAlgo_KN_POLYGON,
GEOMAlgo_KN_POLYHEDRON,
GEOMAlgo_KN_DISKCIRCLE,
GEOMAlgo_KN_DISKELLIPSE,
GEOMAlgo_KN_RECTANGLE,
GEOMAlgo_KN_TRIANGLE,
GEOMAlgo_KN_QUADRANGLE,
GEOMAlgo_KN_ARCELLIPSE
};
#ifndef _Standard_PrimitiveTypes_HeaderFile
#include <Standard_PrimitiveTypes.hxx>
#endif
#endif

View File

@ -0,0 +1,45 @@
// File generated by CPPExt (Enum)
//
// Copyright (C) 1991 - 2000 by
// Matra Datavision SA. All rights reserved.
//
// Copyright (C) 2001 - 2004 by
// Open CASCADE SA. All rights reserved.
//
// This file is part of the Open CASCADE Technology software.
//
// This software may be distributed and/or modified under the terms and
// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
// and appearing in the file LICENSE included in the packaging of this file.
//
// This software is distributed on an "AS IS" basis, without warranty of any
// kind, and Open CASCADE SA hereby disclaims all such warranties,
// including without limitation, any warranties of merchantability, fitness
// for a particular purpose or non-infringement. Please see the License for
// the specific terms and conditions governing rights and limitations under the
// License.
#ifndef _GEOMAlgo_KindOfShape_HeaderFile
#define _GEOMAlgo_KindOfShape_HeaderFile
enum GEOMAlgo_KindOfShape {
GEOMAlgo_KS_UNKNOWN,
GEOMAlgo_KS_SPHERE,
GEOMAlgo_KS_CYLINDER,
GEOMAlgo_KS_BOX,
GEOMAlgo_KS_TORUS,
GEOMAlgo_KS_CONE,
GEOMAlgo_KS_ELLIPSE,
GEOMAlgo_KS_PLANE,
GEOMAlgo_KS_CIRCLE,
GEOMAlgo_KS_LINE,
GEOMAlgo_KS_DEGENERATED
};
#ifndef _Standard_PrimitiveTypes_HeaderFile
#include <Standard_PrimitiveTypes.hxx>
#endif
#endif

View File

@ -0,0 +1,190 @@
-- File: GEOMAlgo_ShapeInfo.cdl
-- Created: Mon Apr 2 14:04:24 2007
-- Author: Peter KURNEV
-- <pkv@irinox>
---Copyright: Matra Datavision 2007
class ShapeInfo from GEOMAlgo
---Purpose:
uses
Pnt from gp,
Dir from gp,
Ax2 from gp,
Ax3 from gp,
ShapeEnum from TopAbs,
Shape from TopoDS,
KindOfShape from GEOMAlgo,
KindOfBounds from GEOMAlgo,
KindOfClosed from GEOMAlgo,
KindOfName from GEOMAlgo
--raises
is
Create
returns ShapeInfo from GEOMAlgo;
---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_ShapeInfo();"
Reset(me:out);
SetType(me:out;
aType:ShapeEnum from TopAbs);
Type(me)
returns ShapeEnum from TopAbs;
SetNbSubShapes(me:out;
aType:ShapeEnum from TopAbs;
aNb :Integer from Standard);
NbSubShapes(me;
aType:ShapeEnum from TopAbs)
returns Integer from Standard;
SetKindOfShape (me:out;
aT:KindOfShape from GEOMAlgo);
KindOfShape (me)
returns KindOfShape from GEOMAlgo;
SetKindOfName (me:out;
aT: KindOfName from GEOMAlgo);
KindOfName(me)
returns KindOfName from GEOMAlgo;
SetKindOfBounds (me:out;
aT:KindOfBounds from GEOMAlgo);
KindOfBounds (me)
returns KindOfBounds from GEOMAlgo;
SetKindOfClosed (me:out;
aT:KindOfClosed from GEOMAlgo);
KindOfClosed(me)
returns KindOfClosed from GEOMAlgo;
SetLocation (me:out;
aP: Pnt from gp);
Location (me)
returns Pnt from gp;
---C++: return const&
SetDirection (me:out;
aD:Dir from gp);
Direction (me)
returns Dir from gp;
---C++: return const&
SetPosition (me:out;
aAx2 : Ax2 from gp);
SetPosition (me:out;
aAx3 : Ax3 from gp);
Position (me)
returns Ax3 from gp;
---C++: return const&
SetPnt1 (me:out;
aP: Pnt from gp);
Pnt1 (me)
returns Pnt from gp;
---C++: return const&
SetPnt2 (me:out;
aP: Pnt from gp);
Pnt2 (me)
returns Pnt from gp;
---C++: return const&
SetRadius1 (me:out;
aR: Real from Standard);
Radius1(me)
returns Real from Standard;
SetRadius2 (me:out;
aR: Real from Standard);
Radius2(me)
returns Real from Standard;
SetLength(me:out;
aL: Real from Standard);
Length(me)
returns Real from Standard;
SetWidth(me:out;
aW: Real from Standard);
Width(me)
returns Real from Standard;
SetHeight(me:out;
aH: Real from Standard);
Height(me)
returns Real from Standard;
--
-- Dump
--
Dump(me);
DumpVertex(me)
is protected;
DumpEdge(me)
is protected;
DumpWire(me)
is protected;
DumpFace(me)
is protected;
DumpShell(me)
is protected;
DumpSolid(me)
is protected;
DumpCompSolid(me)
is protected;
DumpCompound(me)
is protected;
fields
myType : ShapeEnum from TopAbs is protected;
myNbSubShapes : Integer from Standard[9] is protected;
myKindOfShape : KindOfShape from GEOMAlgo is protected;
myKindOfName : KindOfName from GEOMAlgo is protected;
myKindOfBounds : KindOfBounds from GEOMAlgo is protected;
myKindOfClosed : KindOfClosed from GEOMAlgo is protected;
--
myLocation : Pnt from gp is protected;
myDirection : Dir from gp is protected;
myPosition : Ax3 from gp is protected;
--
myRadius1 : Real from Standard is protected;
myRadius2 : Real from Standard is protected;
myLength : Real from Standard is protected;
myWidth : Real from Standard is protected;
myHeight : Real from Standard is protected;
--
myPnt1 : Pnt from gp is protected;
myPnt2 : Pnt from gp is protected;
--
myNbTypes : Integer from Standard is protected;
end ShapeInfo;

View File

@ -0,0 +1,871 @@
#include <GEOMAlgo_ShapeInfo.ixx>
static
Standard_Integer TypeToInteger(const TopAbs_ShapeEnum aType);
static
void DumpKindOfShape(const GEOMAlgo_KindOfShape aKS);
static
void DumpKindOfClosed(const GEOMAlgo_KindOfClosed aKC);
static
void DumpKindOfBounds(const GEOMAlgo_KindOfBounds aKB);
static
void DumpKindOfName(const GEOMAlgo_KindOfName aKS);
static
void DumpPosition(const gp_Ax3& aAx3);
static
void DumpLocation(const gp_Pnt& aP);
static
void DumpDirection(const gp_Dir& aD);
//=======================================================================
//function :
//purpose :
//=======================================================================
GEOMAlgo_ShapeInfo::GEOMAlgo_ShapeInfo()
{
Reset();
}
//=======================================================================
//function : ~
//purpose :
//=======================================================================
GEOMAlgo_ShapeInfo::~GEOMAlgo_ShapeInfo()
{
}
//=======================================================================
//function : Reset
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfo::Reset()
{
Standard_Integer i;
//
myType=TopAbs_SHAPE;
//
myNbTypes=9;
for (i=0; i<myNbTypes; ++i) {
myNbSubShapes[i]=0;
}
//
myKindOfShape=GEOMAlgo_KS_UNKNOWN;
myKindOfBounds=GEOMAlgo_KB_UNKNOWN;
myKindOfClosed=GEOMAlgo_KC_UNKNOWN;
myKindOfName=GEOMAlgo_KN_UNKNOWN;
//
myLocation.SetCoord(99., 99., 99.);
myDirection.SetCoord(1.,0.,0.);
//
myRadius1=-1.;
myRadius2=-2.;
myLength=-3.;
myWidth=-3.;
myHeight=-3.;
}
//=======================================================================
//function : SetType
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfo::SetType(const TopAbs_ShapeEnum aType)
{
myType=aType;
}
//=======================================================================
//function : Type
//purpose :
//=======================================================================
TopAbs_ShapeEnum GEOMAlgo_ShapeInfo::Type() const
{
return myType;
}
//=======================================================================
//function : SetNbSubShapes
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfo::SetNbSubShapes(const TopAbs_ShapeEnum aType,
const Standard_Integer aNb)
{
Standard_Integer iN;
iN=TypeToInteger(aType);
if (iN>=0 && iN<myNbTypes) {
myNbSubShapes[iN]=aNb;
}
}
//=======================================================================
//function : NbSubShapes
//purpose :
//=======================================================================
Standard_Integer GEOMAlgo_ShapeInfo::NbSubShapes(const TopAbs_ShapeEnum aType) const
{
Standard_Integer iN;
iN=TypeToInteger(aType);
if (iN>=0 && iN<myNbTypes) {
return myNbSubShapes[iN];
}
return 0;
}
//=======================================================================
//function : SetKindOfShape
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfo::SetKindOfShape(const GEOMAlgo_KindOfShape aT)
{
myKindOfShape=aT;
}
//=======================================================================
//function : KindOfShape
//purpose :
//=======================================================================
GEOMAlgo_KindOfShape GEOMAlgo_ShapeInfo::KindOfShape() const
{
return myKindOfShape;
}
//=======================================================================
//function : SetKindOfName
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfo::SetKindOfName(const GEOMAlgo_KindOfName aT)
{
myKindOfName=aT;
}
//=======================================================================
//function : KindOfName
//purpose :
//=======================================================================
GEOMAlgo_KindOfName GEOMAlgo_ShapeInfo::KindOfName() const
{
return myKindOfName;
}
//=======================================================================
//function : SetKindOfBounds
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfo::SetKindOfBounds(const GEOMAlgo_KindOfBounds aT)
{
myKindOfBounds=aT;
}
//=======================================================================
//function : KindOfBounds
//purpose :
//=======================================================================
GEOMAlgo_KindOfBounds GEOMAlgo_ShapeInfo::KindOfBounds() const
{
return myKindOfBounds;
}
//=======================================================================
//function : SetKindOfClosed
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfo::SetKindOfClosed(const GEOMAlgo_KindOfClosed aT)
{
myKindOfClosed=aT;
}
//=======================================================================
//function : KindOfClosed
//purpose :
//=======================================================================
GEOMAlgo_KindOfClosed GEOMAlgo_ShapeInfo::KindOfClosed() const
{
return myKindOfClosed;
}
//=======================================================================
//function : SetLocation
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfo::SetLocation(const gp_Pnt& aP)
{
myLocation=aP;
}
//=======================================================================
//function : Location
//purpose :
//=======================================================================
const gp_Pnt& GEOMAlgo_ShapeInfo::Location() const
{
return myLocation;
}
//=======================================================================
//function : SetDirection
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfo::SetDirection(const gp_Dir& aD)
{
myDirection=aD;
}
//=======================================================================
//function : Direction
//purpose :
//=======================================================================
const gp_Dir& GEOMAlgo_ShapeInfo::Direction() const
{
return myDirection;
}
//=======================================================================
//function : SetPosition
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfo::SetPosition(const gp_Ax2& aAx2)
{
gp_Ax3 aAx3(aAx2);
SetPosition(aAx3);
}
//=======================================================================
//function : SetPosition
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfo::SetPosition(const gp_Ax3& aAx3)
{
myPosition=aAx3;
}
//=======================================================================
//function : Position
//purpose :
//=======================================================================
const gp_Ax3& GEOMAlgo_ShapeInfo::Position() const
{
return myPosition;
}
//=======================================================================
//function : SetPnt1
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfo::SetPnt1(const gp_Pnt& aP)
{
myPnt1=aP;
}
//=======================================================================
//function : Pnt1
//purpose :
//=======================================================================
const gp_Pnt& GEOMAlgo_ShapeInfo::Pnt1() const
{
return myPnt1;
}
//=======================================================================
//function : SetPnt2
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfo::SetPnt2(const gp_Pnt& aP)
{
myPnt2=aP;
}
//=======================================================================
//function : Pnt2
//purpose :
//=======================================================================
const gp_Pnt& GEOMAlgo_ShapeInfo::Pnt2() const
{
return myPnt2;
}
//=======================================================================
//function : SetRadius1
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfo::SetRadius1(const Standard_Real aR)
{
myRadius1=aR;
}
//=======================================================================
//function : Radius1
//purpose :
//=======================================================================
Standard_Real GEOMAlgo_ShapeInfo::Radius1() const
{
return myRadius1;
}
//=======================================================================
//function : SetRadius2
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfo::SetRadius2(const Standard_Real aR)
{
myRadius2=aR;
}
//=======================================================================
//function : Radius2
//purpose :
//=======================================================================
Standard_Real GEOMAlgo_ShapeInfo::Radius2() const
{
return myRadius2;
}
//=======================================================================
//function : SetLength
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfo::SetLength(const Standard_Real aL)
{
myLength=aL;
}
//=======================================================================
//function : Length
//purpose :
//=======================================================================
Standard_Real GEOMAlgo_ShapeInfo::Length() const
{
return myLength;
}
//=======================================================================
//function : SetWidth
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfo::SetWidth(const Standard_Real aW)
{
myWidth=aW;
}
//=======================================================================
//function : Width
//purpose :
//=======================================================================
Standard_Real GEOMAlgo_ShapeInfo::Width() const
{
return myWidth;
}
//=======================================================================
//function : SetHeight
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfo::SetHeight(const Standard_Real aH)
{
myHeight=aH;
}
//=======================================================================
//function : Height
//purpose :
//=======================================================================
Standard_Real GEOMAlgo_ShapeInfo::Height() const
{
return myHeight;
}
//=======================================================================
//function : TypeToInteger
//purpose :
//=======================================================================
Standard_Integer TypeToInteger(const TopAbs_ShapeEnum aType)
{
Standard_Integer iN;
//
iN=(Standard_Integer)aType;
return iN;
}
//=======================================================================
//function : Dump
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfo::Dump()const
{
switch (myType) {
//
case TopAbs_VERTEX:
DumpVertex();
break;
//
case TopAbs_EDGE:
DumpEdge();
break;
//
case TopAbs_WIRE:
DumpWire();
break;
//
case TopAbs_FACE:
DumpFace();
break;
//
case TopAbs_SHELL:
DumpShell();
break;
//
case TopAbs_SOLID:
DumpSolid();
break;
//
case TopAbs_COMPSOLID:
DumpCompSolid();
break;
//
case TopAbs_COMPOUND:
DumpCompound();
break;
//
default:
printf(" * not implememted yet\n");
break;
}
}
//=======================================================================
//function : DumpCompound
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfo::DumpCompound()const
{
Standard_Integer aNbV, aNbE, aNbF, aNbS, aNbC, aNbP;
GEOMAlgo_KindOfShape aKS;
GEOMAlgo_KindOfName aKN;
GEOMAlgo_KindOfBounds aKB;
GEOMAlgo_KindOfClosed aKC;
//
aNbV=NbSubShapes(TopAbs_VERTEX);
aNbE=NbSubShapes(TopAbs_EDGE);
aNbF=NbSubShapes(TopAbs_FACE);
aNbS=NbSubShapes(TopAbs_SOLID);
aNbC=NbSubShapes(TopAbs_COMPSOLID);
aNbP=NbSubShapes(TopAbs_COMPOUND);
aKS=KindOfShape();
aKN=KindOfName();
aKB=KindOfBounds();
aKC=KindOfClosed();
//
printf(" *COMPOUND\n");
printf(" number of vertices : %d\n", aNbV);
printf(" number of edges : %d\n", aNbE);
printf(" number of faces : %d\n", aNbF);
printf(" number of solids : %d\n", aNbS);
printf(" number of compsolids : %d\n", aNbC);
printf(" number of compounds : %d\n", aNbP);
DumpKindOfShape (aKS);
DumpKindOfName (aKN);
DumpKindOfBounds(aKB);
DumpKindOfClosed(aKC);
}
//=======================================================================
//function : DumpCompSolid
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfo::DumpCompSolid()const
{
Standard_Integer aNbV, aNbE, aNbF, aNbS;
GEOMAlgo_KindOfShape aKS;
GEOMAlgo_KindOfName aKN;
GEOMAlgo_KindOfBounds aKB;
GEOMAlgo_KindOfClosed aKC;
//
aNbV=NbSubShapes(TopAbs_VERTEX);
aNbE=NbSubShapes(TopAbs_EDGE);
aNbF=NbSubShapes(TopAbs_FACE);
aNbS=NbSubShapes(TopAbs_SOLID);
aKS=KindOfShape();
aKN=KindOfName();
aKB=KindOfBounds();
aKC=KindOfClosed();
//
printf(" *COMPSOLID\n");
printf(" number of vertices: %d\n", aNbV);
printf(" number of edges : %d\n", aNbE);
printf(" number of faces : %d\n", aNbF);
printf(" number of solids : %d\n", aNbS);
DumpKindOfShape (aKS);
DumpKindOfName (aKN);
DumpKindOfBounds(aKB);
DumpKindOfClosed(aKC);
}
//=======================================================================
//function : DumpSolid
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfo::DumpSolid()const
{
Standard_Integer aNbV, aNbE, aNbF;
GEOMAlgo_KindOfShape aKS;
GEOMAlgo_KindOfName aKN;
GEOMAlgo_KindOfBounds aKB;
GEOMAlgo_KindOfClosed aKC;
//
aNbV=NbSubShapes(TopAbs_VERTEX);
aNbE=NbSubShapes(TopAbs_EDGE);
aNbF=NbSubShapes(TopAbs_FACE);
aKS=KindOfShape();
aKN=KindOfName();
aKB=KindOfBounds();
aKC=KindOfClosed();
//
printf(" *SOLID\n");
printf(" number of vertices: %d\n", aNbV);
printf(" number of edges : %d\n", aNbE);
printf(" number of faces : %d\n", aNbF);
DumpKindOfShape (aKS);
DumpKindOfName (aKN);
DumpKindOfBounds(aKB);
DumpKindOfClosed(aKC);
//
if (aKN==GEOMAlgo_KN_SPHERE) {
DumpLocation (myLocation);
DumpPosition (myPosition);
printf(" Radius1 : %.3lf\n", myRadius1);
}
if (aKN==GEOMAlgo_KN_CYLINDER) {
DumpLocation (myLocation);
DumpPosition (myPosition);
printf(" Radius1 : %.3lf\n", myRadius1);
printf(" Height : %.3lf\n", myHeight);
}
else if (aKN==GEOMAlgo_KN_CONE) {
DumpLocation (myLocation);
DumpPosition (myPosition);
printf(" Radius1 : %.3lf\n", myRadius1);
printf(" Radius2 : %.3lf\n", myRadius2);
printf(" Height : %.3lf\n", myHeight);
}
else if (aKN==GEOMAlgo_KN_TORUS) {
DumpLocation (myLocation);
DumpPosition (myPosition);
printf(" Radius1 : %.3lf\n", myRadius1);
printf(" Radius2 : %.3lf\n", myRadius2);
}
else if (aKN==GEOMAlgo_KN_POLYHEDRON) {
DumpLocation (myLocation);
DumpPosition (myPosition);
}
else if (aKN==GEOMAlgo_KN_BOX) {
DumpLocation (myLocation);
DumpPosition (myPosition);
printf(" Length : %.3lf\n", myLength);
printf(" Width : %.3lf\n", myWidth);
printf(" Height : %.3lf\n", myHeight);
}
}
//=======================================================================
//function : DumpFace
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfo::DumpFace()const
{
Standard_Integer aNbV, aNbE;
GEOMAlgo_KindOfShape aKS;
GEOMAlgo_KindOfName aKN;
GEOMAlgo_KindOfBounds aKB;
GEOMAlgo_KindOfClosed aKC;
//
aNbV=NbSubShapes(TopAbs_VERTEX);
aNbE=NbSubShapes(TopAbs_EDGE);
aKS=KindOfShape();
aKN=KindOfName();
aKB=KindOfBounds();
aKC=KindOfClosed();
//
printf(" *FACE\n");
printf(" number of vertices: %d\n", aNbV);
printf(" number of edges : %d\n", aNbE);
DumpKindOfShape (aKS);
DumpKindOfName (aKN);
DumpKindOfBounds(aKB);
DumpKindOfClosed(aKC);
//
// PLANE
if (aKN==GEOMAlgo_KN_PLANE) {
DumpLocation (myLocation);
DumpPosition (myPosition);
}
else if (aKN==GEOMAlgo_KN_DISKCIRCLE) {
DumpLocation (myLocation);
DumpPosition (myPosition);
printf(" Radius1 : %.3lf\n", myRadius1);
}
else if (aKN==GEOMAlgo_KN_DISKELLIPSE) {
DumpLocation (myLocation);
DumpPosition (myPosition);
printf(" Radius1 : %.3lf\n", myRadius1);
printf(" Radius2 : %.3lf\n", myRadius2);
}
else if (aKN==GEOMAlgo_KN_RECTANGLE) {
DumpLocation (myLocation);
DumpPosition (myPosition);
printf(" Length : %.3lf\n", myLength);
printf(" Width : %.3lf\n", myWidth);
}
else if (aKN==GEOMAlgo_KN_TRIANGLE ||
aKN==GEOMAlgo_KN_QUADRANGLE||
aKN==GEOMAlgo_KN_POLYGON) {
DumpLocation (myLocation);
DumpPosition (myPosition);
}
//
// SPHERE
else if (aKN==GEOMAlgo_KN_SPHERE) {
DumpLocation (myLocation);
DumpPosition (myPosition);
printf(" Radius1 : %.3lf", myRadius1);
}
//
// CYLINDER
else if (aKN==GEOMAlgo_KN_CYLINDER) {
DumpLocation (myLocation);
DumpPosition (myPosition);
printf(" Radius1 : %.3lf\n", myRadius1);
printf(" Height : %.3lf\n", myHeight);
}
//
// CONE
else if (aKN==GEOMAlgo_KN_CONE) {
DumpLocation (myLocation);
DumpPosition (myPosition);
printf(" Radius1 : %.3lf\n", myRadius1);
printf(" Radius2 : %.3lf\n", myRadius2);
printf(" Height : %.3lf\n", myHeight);
}
//
// TORUS
else if (aKN==GEOMAlgo_KN_TORUS) {
DumpLocation (myLocation);
DumpPosition (myPosition);
printf(" Radius1 : %.3lf\n", myRadius1);
printf(" Radius2 : %.3lf\n", myRadius2);
}
printf("\n");
}
//=======================================================================
//function : DumpShell
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfo::DumpShell()const
{
Standard_Integer aNbV, aNbE, aNbF;
GEOMAlgo_KindOfClosed aKC;
//
printf(" *SHELL\n");
//
aNbV=NbSubShapes(TopAbs_VERTEX);
aNbE=NbSubShapes(TopAbs_EDGE);
aNbF=NbSubShapes(TopAbs_FACE);
printf(" number of vertices: %d\n", aNbV);
printf(" number of edges : %d\n", aNbE);
printf(" number of faces : %d\n", aNbF);
aKC=KindOfClosed();
DumpKindOfClosed(aKC);
printf("\n");
}
//=======================================================================
//function : DumpWire
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfo::DumpWire()const
{
Standard_Integer aNbV, aNbE;
GEOMAlgo_KindOfClosed aKC;
//
printf(" *WIRE\n");
//
aNbV=NbSubShapes(TopAbs_VERTEX);
aNbE=NbSubShapes(TopAbs_EDGE);
printf(" number of vertices: %d\n", aNbV);
printf(" number of edges : %d\n", aNbE);
aKC=KindOfClosed();
DumpKindOfClosed(aKC);
printf("\n");
}
//=======================================================================
//function : DumpEdge
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfo::DumpEdge()const
{
Standard_Integer aNbV;
Standard_Real aX, aY, aZ;
GEOMAlgo_KindOfShape aKS;
GEOMAlgo_KindOfName aKN;
GEOMAlgo_KindOfBounds aKB;
GEOMAlgo_KindOfClosed aKC;
//
aNbV=NbSubShapes(TopAbs_VERTEX);
aKS=KindOfShape();
aKN=KindOfName();
aKB=KindOfBounds();
aKC=KindOfClosed();
//
printf(" *EDGE\n");
printf(" number of vertices: %d\n", aNbV);
DumpKindOfShape (aKS);
DumpKindOfName (aKN);
DumpKindOfBounds(aKB);
DumpKindOfClosed(aKC);
//
// LINE
if (aKN==GEOMAlgo_KN_LINE) {
DumpLocation (myLocation);
DumpDirection(myDirection);
}
else if (aKN==GEOMAlgo_KN_SEGMENT) {
DumpLocation (myLocation);
DumpDirection(myDirection);
printf(" Length : %.3lf\n", myLength);
myPnt1.Coord(aX, aY, aZ);
printf(" Pnt1 : %.3lf %.3lf %.3lf\n", aX, aY, aZ);
myPnt2.Coord(aX, aY, aZ);
printf(" Pnt2 : %.3lf %.3lf %.3lf\n", aX, aY, aZ);
}
else if (aKN==GEOMAlgo_KN_CIRCLE) {
DumpLocation (myLocation);
DumpPosition (myPosition);
printf(" Radius1 : %.3lf\n", myRadius1);
}
else if (aKN==GEOMAlgo_KN_ARCCIRCLE) {
DumpLocation (myLocation);
DumpPosition (myPosition);
printf(" Radius1 : %.3lf\n", myRadius1);
myPnt1.Coord(aX, aY, aZ);
printf(" Pnt1 : %.3lf %.3lf %.3lf\n", aX, aY, aZ);
myPnt2.Coord(aX, aY, aZ);
printf(" Pnt2 : %.3lf %.3lf %.3lf\n", aX, aY, aZ);
}
else if (aKN==GEOMAlgo_KN_ELLIPSE) {
DumpLocation (myLocation);
DumpPosition (myPosition);
printf(" Radius1 : %.3lf\n", myRadius1);
printf(" Radius2 : %.3lf\n", myRadius2);
}
else if (aKN==GEOMAlgo_KN_ARCELLIPSE) {
DumpLocation (myLocation);
DumpPosition (myPosition);
printf(" Radius1 : %.3lf\n", myRadius1);
printf(" Radius2 : %.3lf\n", myRadius2);
myPnt1.Coord(aX, aY, aZ);
printf(" Pnt1 : %.3lf %.3lf %.3lf\n", aX, aY, aZ);
myPnt2.Coord(aX, aY, aZ);
printf(" Pnt2 : %.3lf %.3lf %.3lf\n", aX, aY, aZ);
}
printf("\n");
}
//=======================================================================
//function : DumpVertex
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfo::DumpVertex()const
{
printf(" *VERTEX\n");
DumpLocation(myLocation);
}
//=======================================================================
//function : DumpLocation
//purpose :
//=======================================================================
void DumpLocation(const gp_Pnt& aP)
{
Standard_Real aX, aY, aZ;
//
aP.Coord(aX, aY, aZ);
printf(" Location : %.3lf %.3lf %.3lf \n", aX, aY, aZ);
}
//=======================================================================
//function : DumpDirection
//purpose :
//=======================================================================
void DumpDirection(const gp_Dir& aD)
{
Standard_Real aX, aY, aZ;
//
aD.Coord(aX, aY, aZ);
printf(" Direction: %.3lf %.3lf %.3lf \n", aX, aY, aZ);
}
//=======================================================================
//function : DumpPosition
//purpose :
//=======================================================================
void DumpPosition(const gp_Ax3& aAx3)
{
const gp_Dir& aDZ=aAx3.Axis().Direction();
const gp_Dir& aDX=aAx3.XDirection();
const gp_Dir& aDY=aAx3.YDirection();
printf(" Position:\n");
printf(" Axis: %.3lf %.3lf %.3lf \n", aDZ.X(), aDZ.Y(), aDZ.Z());
printf(" X : %.3lf %.3lf %.3lf \n", aDX.X(), aDX.Y(), aDX.Z());
printf(" Y : %.3lf %.3lf %.3lf \n", aDY.X(), aDY.Y(), aDY.Z());
}
//=======================================================================
//function : DumpKindOfBounds
//purpose :
//=======================================================================
void DumpKindOfBounds(const GEOMAlgo_KindOfBounds aKB)
{
char *pStr[]={
"KB_UNKNOWN",
"KB_TRIMMED",
"KB_INFINITE"
};
int i;
//
i=(Standard_Integer)aKB;
printf(" KindOfBounds: %s\n", pStr[i]);
}
//=======================================================================
//function : DumpKindOfClosed
//purpose :
//=======================================================================
void DumpKindOfClosed(const GEOMAlgo_KindOfClosed aKC)
{
char *pStr[]={
"KC_UNKNOWN",
"KC_CLOSED",
"KC_NOTCLOSED"
};
int i;
//
i=(Standard_Integer)aKC;
printf(" KindOfClosed: %s\n", pStr[i]);
}
//=======================================================================
//function : DumpKindOfShape
//purpose :
//=======================================================================
void DumpKindOfShape(const GEOMAlgo_KindOfShape aKS)
{
char *pStr[]={
"KS_UNKNOWN",
"KS_SPHERE",
"KS_CYLINDER",
"KS_BOX",
"KS_TORUS",
"KS_CONE",
"KS_ELLIPSE",
"KS_PLANE",
"KS_CIRCLE",
"KS_LINE",
"KS_DEGENERATED"
};
int i;
//
i=(Standard_Integer)aKS;
printf(" KindOfShape : %s\n", pStr[i]);
}
//=======================================================================
//function : DumpKindOfName
//purpose :
//=======================================================================
void DumpKindOfName(const GEOMAlgo_KindOfName aKS)
{
char *pStr[]={
"KN_UNKNOWN",
"KN_SPHERE",
"KN_CYLINDER",
"KN_TORUS",
"KN_CONE",
"KN_ELLIPSE",
"KN_CIRCLE",
"KN_PLANE",
"KN_LINE",
"KN_BOX",
"KN_SEGMENT",
"KN_ARCCIRCLE",
"KN_POLYGON",
"KN_POLYHEDRON",
"KN_DISKCIRCLE",
"KN_DISKELLIPSE",
"KN_RECTANGLE",
"KN_TRIANGLE",
"KN_QUADRANGLE",
"KN_ARCELLIPSE"
};
int i;
//
i=(Standard_Integer)aKS;
printf(" KindOfName : %s\n", pStr[i]);
}

View File

@ -0,0 +1,272 @@
// File generated by CPPExt (Value)
//
// Copyright (C) 1991 - 2000 by
// Matra Datavision SA. All rights reserved.
//
// Copyright (C) 2001 - 2004 by
// Open CASCADE SA. All rights reserved.
//
// This file is part of the Open CASCADE Technology software.
//
// This software may be distributed and/or modified under the terms and
// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
// and appearing in the file LICENSE included in the packaging of this file.
//
// This software is distributed on an "AS IS" basis, without warranty of any
// kind, and Open CASCADE SA hereby disclaims all such warranties,
// including without limitation, any warranties of merchantability, fitness
// for a particular purpose or non-infringement. Please see the License for
// the specific terms and conditions governing rights and limitations under the
// License.
#ifndef _GEOMAlgo_ShapeInfo_HeaderFile
#define _GEOMAlgo_ShapeInfo_HeaderFile
#ifndef _TopAbs_ShapeEnum_HeaderFile
#include <TopAbs_ShapeEnum.hxx>
#endif
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _GEOMAlgo_KindOfShape_HeaderFile
#include <GEOMAlgo_KindOfShape.hxx>
#endif
#ifndef _GEOMAlgo_KindOfName_HeaderFile
#include <GEOMAlgo_KindOfName.hxx>
#endif
#ifndef _GEOMAlgo_KindOfBounds_HeaderFile
#include <GEOMAlgo_KindOfBounds.hxx>
#endif
#ifndef _GEOMAlgo_KindOfClosed_HeaderFile
#include <GEOMAlgo_KindOfClosed.hxx>
#endif
#ifndef _gp_Pnt_HeaderFile
#include <gp_Pnt.hxx>
#endif
#ifndef _gp_Dir_HeaderFile
#include <gp_Dir.hxx>
#endif
#ifndef _gp_Ax3_HeaderFile
#include <gp_Ax3.hxx>
#endif
#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
class gp_Pnt;
class gp_Dir;
class gp_Ax2;
class gp_Ax3;
#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_Macro_HeaderFile
#include <Standard_Macro.hxx>
#endif
class GEOMAlgo_ShapeInfo {
public:
void* operator new(size_t,void* anAddress)
{
return anAddress;
}
void* operator new(size_t size)
{
return Standard::Allocate(size);
}
void operator delete(void *anAddress)
{
if (anAddress) Standard::Free((Standard_Address&)anAddress);
}
// Methods PUBLIC
//
Standard_EXPORT GEOMAlgo_ShapeInfo();
Standard_EXPORT virtual ~GEOMAlgo_ShapeInfo();
Standard_EXPORT void Reset() ;
Standard_EXPORT void SetType(const TopAbs_ShapeEnum aType) ;
Standard_EXPORT TopAbs_ShapeEnum Type() const;
Standard_EXPORT void SetNbSubShapes(const TopAbs_ShapeEnum aType,const Standard_Integer aNb) ;
Standard_EXPORT Standard_Integer NbSubShapes(const TopAbs_ShapeEnum aType) const;
Standard_EXPORT void SetKindOfShape(const GEOMAlgo_KindOfShape aT) ;
Standard_EXPORT GEOMAlgo_KindOfShape KindOfShape() const;
Standard_EXPORT void SetKindOfName(const GEOMAlgo_KindOfName aT) ;
Standard_EXPORT GEOMAlgo_KindOfName KindOfName() const;
Standard_EXPORT void SetKindOfBounds(const GEOMAlgo_KindOfBounds aT) ;
Standard_EXPORT GEOMAlgo_KindOfBounds KindOfBounds() const;
Standard_EXPORT void SetKindOfClosed(const GEOMAlgo_KindOfClosed aT) ;
Standard_EXPORT GEOMAlgo_KindOfClosed KindOfClosed() const;
Standard_EXPORT void SetLocation(const gp_Pnt& aP) ;
Standard_EXPORT const gp_Pnt& Location() const;
Standard_EXPORT void SetDirection(const gp_Dir& aD) ;
Standard_EXPORT const gp_Dir& Direction() const;
Standard_EXPORT void SetPosition(const gp_Ax2& aAx2) ;
Standard_EXPORT void SetPosition(const gp_Ax3& aAx3) ;
Standard_EXPORT const gp_Ax3& Position() const;
Standard_EXPORT void SetPnt1(const gp_Pnt& aP) ;
Standard_EXPORT const gp_Pnt& Pnt1() const;
Standard_EXPORT void SetPnt2(const gp_Pnt& aP) ;
Standard_EXPORT const gp_Pnt& Pnt2() const;
Standard_EXPORT void SetRadius1(const Standard_Real aR) ;
Standard_EXPORT Standard_Real Radius1() const;
Standard_EXPORT void SetRadius2(const Standard_Real aR) ;
Standard_EXPORT Standard_Real Radius2() const;
Standard_EXPORT void SetLength(const Standard_Real aL) ;
Standard_EXPORT Standard_Real Length() const;
Standard_EXPORT void SetWidth(const Standard_Real aW) ;
Standard_EXPORT Standard_Real Width() const;
Standard_EXPORT void SetHeight(const Standard_Real aH) ;
Standard_EXPORT Standard_Real Height() const;
Standard_EXPORT void Dump() const;
protected:
// Methods PROTECTED
//
Standard_EXPORT void DumpVertex() const;
Standard_EXPORT void DumpEdge() const;
Standard_EXPORT void DumpWire() const;
Standard_EXPORT void DumpFace() const;
Standard_EXPORT void DumpShell() const;
Standard_EXPORT void DumpSolid() const;
Standard_EXPORT void DumpCompSolid() const;
Standard_EXPORT void DumpCompound() const;
// Fields PROTECTED
//
TopAbs_ShapeEnum myType;
Standard_Integer myNbSubShapes[9];
GEOMAlgo_KindOfShape myKindOfShape;
GEOMAlgo_KindOfName myKindOfName;
GEOMAlgo_KindOfBounds myKindOfBounds;
GEOMAlgo_KindOfClosed myKindOfClosed;
gp_Pnt myLocation;
gp_Dir myDirection;
gp_Ax3 myPosition;
Standard_Real myRadius1;
Standard_Real myRadius2;
Standard_Real myLength;
Standard_Real myWidth;
Standard_Real myHeight;
gp_Pnt myPnt1;
gp_Pnt myPnt2;
Standard_Integer myNbTypes;
private:
// Methods PRIVATE
//
// Fields PRIVATE
//
};
// other Inline functions and methods (like "C++: function call" methods)
//
#endif

View File

@ -0,0 +1,26 @@
// File generated by CPPExt (Value)
//
// Copyright (C) 1991 - 2000 by
// Matra Datavision SA. All rights reserved.
//
// Copyright (C) 2001 - 2004 by
// Open CASCADE SA. All rights reserved.
//
// This file is part of the Open CASCADE Technology software.
//
// This software may be distributed and/or modified under the terms and
// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
// and appearing in the file LICENSE included in the packaging of this file.
//
// This software is distributed on an "AS IS" basis, without warranty of any
// kind, and Open CASCADE SA hereby disclaims all such warranties,
// including without limitation, any warranties of merchantability, fitness
// for a particular purpose or non-infringement. Please see the License for
// the specific terms and conditions governing rights and limitations under the
// License.
#include <GEOMAlgo_ShapeInfo.jxx>

View File

@ -0,0 +1,15 @@
#ifndef _gp_Pnt_HeaderFile
#include <gp_Pnt.hxx>
#endif
#ifndef _gp_Dir_HeaderFile
#include <gp_Dir.hxx>
#endif
#ifndef _gp_Ax2_HeaderFile
#include <gp_Ax2.hxx>
#endif
#ifndef _gp_Ax3_HeaderFile
#include <gp_Ax3.hxx>
#endif
#ifndef _GEOMAlgo_ShapeInfo_HeaderFile
#include <GEOMAlgo_ShapeInfo.hxx>
#endif

View File

@ -0,0 +1,132 @@
-- File: GEOMAlgo_ShapeInfoFiller.cdl
-- Created: Mon Apr 2 15:05:34 2007
-- Author: Peter KURNEV
-- <pkv@irinox>
---Copyright: Matra Datavision 2007
class ShapeInfoFiller from GEOMAlgo
inherits Algo from GEOMAlgo
---Purpose:
uses
Pln from gp,
Sphere from gp,
Cylinder from gp,
Cone from gp,
Torus from gp,
Shape from TopoDS,
Face from TopoDS,
Solid from TopoDS,
ShapeInfo from GEOMAlgo,
KindOfName from GEOMAlgo,
IndexedDataMapOfShapeShapeInfo from GEOMAlgo
--raises
is
Create
returns ShapeInfoFiller from GEOMAlgo;
---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_ShapeInfoFiller();"
SetShape(me:out;
aS:Shape from TopoDS);
Shape(me)
returns Shape from TopoDS;
---C++:return const &
SetTolerance(me:out;
aT:Real from Standard);
Tolerance(me)
returns Real from Standard;
Info(me)
returns ShapeInfo from GEOMAlgo;
---C++:return const &
Info(me;
aS:Shape from TopoDS)
returns ShapeInfo from GEOMAlgo;
---C++:return const &
Perform(me:out)
is redefined;
CheckData(me:out)
is redefined protected;
FillNbSubShapes(me:out;
aS:Shape from TopoDS;
aInfo: out ShapeInfo from GEOMAlgo)
is protected;
FillSubShapes(me:out;
aS:Shape from TopoDS)
is protected;
FillShape(me:out;
aS:Shape from TopoDS)
is protected;
FillVertex(me:out;
aS:Shape from TopoDS)
is protected;
FillEdge(me:out;
aS:Shape from TopoDS)
is protected;
FillFace(me:out;
aS:Shape from TopoDS)
is protected;
FillSolid(me:out;
aS:Shape from TopoDS)
is protected;
FillContainer(me:out;
aS:Shape from TopoDS)
is protected;
FillDetails(me:out;
aF:Face from TopoDS;
aPln:Pln from gp)
is protected;
FillDetails(me:out;
aF:Face from TopoDS;
aSph:Sphere from gp)
is protected;
FillDetails(me:out;
aF:Face from TopoDS;
aCyl:Cylinder from gp)
is protected;
FillDetails(me:out;
aF:Face from TopoDS;
aCone:Cone from gp)
is protected;
FillDetails(me:out;
aF:Face from TopoDS;
aTorus:Torus from gp)
is protected;
FillDetails(me:out;
aS:Solid from TopoDS)
is protected;
fields
myShape : Shape from TopoDS is protected;
myEmptyInfo : ShapeInfo from GEOMAlgo is protected;
myMapInfo : IndexedDataMapOfShapeShapeInfo from GEOMAlgo is protected;
myTolerance : Real from Standard is protected;
end ShapeInfoFiller;

View File

@ -0,0 +1,792 @@
#include <GEOMAlgo_ShapeInfoFiller.ixx>
#include <Precision.hxx>
#include <gp_Lin.hxx>
#include <gp_Pnt.hxx>
#include <gp_Dir.hxx>
#include <Geom_Curve.hxx>
#include <GeomAdaptor_Curve.hxx>
#include <TopoDS_Vertex.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Edge.hxx>
#include <BRep_Tool.hxx>
#include <TopExp.hxx>
#include <TopTools_IndexedMapOfShape.hxx>
#include <gp_Circ.hxx>
#include <gp_Ax2.hxx>
#include <gp_Elips.hxx>
#include <TopoDS_Iterator.hxx>
#include <TopoDS_Wire.hxx>
#include <TopExp.hxx>
#include <Geom_Surface.hxx>
#include <TopoDS_Face.hxx>
#include <GeomAdaptor_Surface.hxx>
#include <gp_Pln.hxx>
#include <gp_Sphere.hxx>
#include <gp_Ax3.hxx>
#include <BRepTools.hxx>
#include <gp_Cylinder.hxx>
#include <gp_Cone.hxx>
#include <gp_Torus.hxx>
#include <TopoDS_Solid.hxx>
static
Standard_Boolean IsAllowedType(const GeomAbs_CurveType aCT);
static
Standard_Boolean IsAllowedType(const GeomAbs_SurfaceType aST);
static
Standard_Integer NbWires(const TopoDS_Face& aF);
static
Standard_Integer NbShells(const TopoDS_Solid& aS);
//=======================================================================
//function :
//purpose :
//=======================================================================
GEOMAlgo_ShapeInfoFiller::GEOMAlgo_ShapeInfoFiller()
:
GEOMAlgo_Algo()
{
myTolerance=0.0001;
}
//=======================================================================
//function : ~
//purpose :
//=======================================================================
GEOMAlgo_ShapeInfoFiller::~GEOMAlgo_ShapeInfoFiller()
{
}
//=======================================================================
//function : SetTolerance
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfoFiller::SetTolerance(const Standard_Real aT)
{
myTolerance=aT;
}
//=======================================================================
//function : Tolerance
//purpose :
//=======================================================================
Standard_Real GEOMAlgo_ShapeInfoFiller::Tolerance()const
{
return myTolerance;
}
//=======================================================================
//function : SetShape
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfoFiller::SetShape(const TopoDS_Shape& aS)
{
myShape=aS;
}
//=======================================================================
//function : Shape
//purpose :
//=======================================================================
const TopoDS_Shape& GEOMAlgo_ShapeInfoFiller::Shape() const
{
return myShape;
}
//=======================================================================
//function : Info
//purpose :
//=======================================================================
const GEOMAlgo_ShapeInfo& GEOMAlgo_ShapeInfoFiller::Info() const
{
return Info(myShape);
}
//=======================================================================
//function : Info
//purpose :
//=======================================================================
const GEOMAlgo_ShapeInfo& GEOMAlgo_ShapeInfoFiller::Info(const TopoDS_Shape& aS) const
{
if (!aS.IsNull()) {
if (myMapInfo.Contains(aS)) {
const GEOMAlgo_ShapeInfo& aInfo=myMapInfo.FindFromKey(aS);
return aInfo;
}
}
return myEmptyInfo;
}
//=======================================================================
//function : CheckData
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfoFiller::CheckData()
{
myErrorStatus=0;
//
if (myShape.IsNull()) {
myErrorStatus=10;
return;
}
}
//=======================================================================
//function : Perform
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfoFiller::Perform()
{
myErrorStatus=0;
//
myMapInfo.Clear();
//
CheckData();
if (myErrorStatus) {
return;
}
//
FillShape(myShape);
}
//=======================================================================
//function :FillShape
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfoFiller::FillShape(const TopoDS_Shape& aS)
{
TopAbs_ShapeEnum aType;
//
aType=aS.ShapeType();
switch(aType) {
//
case TopAbs_VERTEX:
FillVertex(aS);
break;
//
case TopAbs_EDGE:
FillEdge(aS);
break;
//
case TopAbs_FACE:
FillFace(aS);
break;
//
case TopAbs_SOLID:
FillSolid(aS);
break;
//
case TopAbs_WIRE:
case TopAbs_SHELL:
case TopAbs_COMPSOLID:
case TopAbs_COMPOUND:
FillContainer(aS);
break;
//
default:
break;
}
}
//=======================================================================
//function :FillSubShapes
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfoFiller::FillSubShapes(const TopoDS_Shape& aS)
{
TopoDS_Iterator aIt;
//
aIt.Initialize(aS);
for (; aIt.More(); aIt.Next()){
const TopoDS_Shape& aSx=aIt.Value();
FillShape(aSx);
}
}
//=======================================================================
//function : FillContainer
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfoFiller::FillContainer(const TopoDS_Shape& aS)
{
myErrorStatus=0;
//
Standard_Boolean bIsClosed;
TopAbs_ShapeEnum aType;
GEOMAlgo_KindOfClosed aKC;
//
aType=aS.ShapeType();
//----------------------------------------------------
if (myMapInfo.Contains(aS)) {
return;
}
else {
GEOMAlgo_ShapeInfo aInfoX;
myMapInfo.Add(aS, aInfoX);
}
GEOMAlgo_ShapeInfo& aInfo=myMapInfo.ChangeFromKey(aS);
//----------------------------------------------------
aInfo.SetType(aType);
FillNbSubShapes(aS, aInfo);
//
if (aType==TopAbs_SHELL) {
bIsClosed=BRep_Tool::IsClosed(aS);
aKC=(bIsClosed) ? GEOMAlgo_KC_CLOSED :GEOMAlgo_KC_NOTCLOSED;
aInfo.SetKindOfClosed(aKC);
}
else if (aType==TopAbs_WIRE) {
TopoDS_Wire aW;
TopoDS_Vertex aV1, aV2;
//
aW=TopoDS::Wire(aS);
TopExp::Vertices(aW, aV1, aV2);
//
bIsClosed=aV1.IsSame(aV2);
aKC=(bIsClosed) ? GEOMAlgo_KC_CLOSED :GEOMAlgo_KC_NOTCLOSED;
aInfo.SetKindOfClosed(aKC);
}
//
FillSubShapes(aS);
}
//=======================================================================
//function : FillSolid
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfoFiller::FillSolid(const TopoDS_Shape& aS)
{
Standard_Integer aNbShells;
TopoDS_Solid aSd;
//
myErrorStatus=0;
//----------------------------------------------------
if (myMapInfo.Contains(aS)) {
return;
}
else {
GEOMAlgo_ShapeInfo aInfoX;
myMapInfo.Add(aS, aInfoX);
}
GEOMAlgo_ShapeInfo& aInfo=myMapInfo.ChangeFromKey(aS);
//----------------------------------------------------
aInfo.SetType(TopAbs_SOLID);
FillNbSubShapes(aS, aInfo);
FillSubShapes(aS);
//
aSd=TopoDS::Solid(aS);
//
aNbShells=NbShells(aSd);
if (aNbShells>1) {
return;
}
//
FillDetails(aSd);
}
//=======================================================================
//function :FillFace
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfoFiller::FillFace(const TopoDS_Shape& aS)
{
myErrorStatus=0;
//
Standard_Boolean bIsAllowedType;
Standard_Integer aNbWires;//, iRet
Standard_Boolean bInf, bInfU1, bInfU2, bInfV1, bInfV2;
Standard_Real aUMin, aUMax, aVMin, aVMax, aR1, aR2;
gp_Pnt aP0;
gp_Dir aDN;
gp_Ax3 aAx3;
GeomAbs_SurfaceType aST;
Handle(Geom_Surface) aSurf;
TopoDS_Face aF;
//GEOMAlgo_KindOfName aKindOfName;
//----------------------------------------------------
if (myMapInfo.Contains(aS)) {
return;
}
else {
GEOMAlgo_ShapeInfo aInfoX;
myMapInfo.Add(aS, aInfoX);
}
GEOMAlgo_ShapeInfo& aInfo=myMapInfo.ChangeFromKey(aS);
//----------------------------------------------------
aInfo.SetType(TopAbs_FACE);
//
FillNbSubShapes(aS, aInfo);
//
FillSubShapes(aS);
//
aF=TopoDS::Face(aS);
//
aNbWires=NbWires(aF);
if (aNbWires>1) {
return;
}
//
aSurf=BRep_Tool::Surface(aF);
GeomAdaptor_Surface aGAS(aSurf);
aST=aGAS.GetType();
bIsAllowedType=IsAllowedType(aST);
if (!bIsAllowedType) {
return;
}
//
// 1. Plane
if (aST==GeomAbs_Plane) {
gp_Pln aPln;
//
aPln=aGAS.Plane();
aP0=aPln.Location();
aAx3=aPln.Position();
//
aInfo.SetKindOfShape(GEOMAlgo_KS_PLANE);
aInfo.SetKindOfClosed(GEOMAlgo_KC_NOTCLOSED);
aInfo.SetLocation(aP0);
aInfo.SetPosition(aAx3);
//
//aSurf->Bounds(aUMin, aUMax, aVMin, aVMax);
BRepTools::UVBounds(aF, aUMin, aUMax, aVMin, aVMax);
bInfU1=Precision::IsNegativeInfinite(aUMin);
bInfU2=Precision::IsPositiveInfinite(aUMax);
bInfV1=Precision::IsNegativeInfinite(aVMin);
bInfV2=Precision::IsPositiveInfinite(aVMax);
//
bInf=(bInfU1 || bInfU2 || bInfV1 || bInfV2);
if (bInf) {
aInfo.SetKindOfBounds(GEOMAlgo_KB_INFINITE);
}
else {
aInfo.SetKindOfBounds(GEOMAlgo_KB_TRIMMED);
}
//
FillDetails(aF, aPln);
}// if (aCT==GeomAbs_Line) {
//
// 2. Sphere
else if (aST==GeomAbs_Sphere) {
gp_Sphere aSphere;
//
aSphere=aGAS.Sphere();
aP0=aSphere.Location();
aAx3=aSphere.Position();
aR1=aSphere.Radius();
//
aInfo.SetKindOfShape(GEOMAlgo_KS_SPHERE);
aInfo.SetLocation(aP0);
aInfo.SetPosition(aAx3);
aInfo.SetRadius1(aR1);
//
aInfo.SetKindOfBounds(GEOMAlgo_KB_TRIMMED);
aInfo.SetKindOfClosed(GEOMAlgo_KC_CLOSED);
//
FillDetails(aF, aSphere);
}// else if (aST==GeomAbs_Sphere) {
//
// 3. Cylinder
else if (aST==GeomAbs_Cylinder) {
gp_Cylinder aCyl;
//
aCyl=aGAS.Cylinder();
aP0=aCyl.Location();
aAx3=aCyl.Position();
aR1=aCyl.Radius();
//
aInfo.SetKindOfShape(GEOMAlgo_KS_CYLINDER);
aInfo.SetLocation(aP0);
aInfo.SetPosition(aAx3);
aInfo.SetRadius1(aR1);
//
BRepTools::UVBounds(aF, aUMin, aUMax, aVMin, aVMax);
bInfU1=Precision::IsNegativeInfinite(aUMin);
bInfU2=Precision::IsPositiveInfinite(aUMax);
bInfV1=Precision::IsNegativeInfinite(aVMin);
bInfV2=Precision::IsPositiveInfinite(aVMax);
//
bInf=(bInfU1 || bInfU2 || bInfV1 || bInfV2);
if (bInf) {
aInfo.SetKindOfBounds(GEOMAlgo_KB_INFINITE);
}
else {
aInfo.SetKindOfBounds(GEOMAlgo_KB_TRIMMED);
}
FillDetails(aF, aCyl);
}
//
// 4. Cone
else if (aST==GeomAbs_Cone) {
gp_Cone aCone;
//
aCone=aGAS.Cone();
aP0=aCone.Location();
aAx3=aCone.Position();
//aR1=aCyl.Radius();
//
aInfo.SetKindOfShape(GEOMAlgo_KS_CONE);
aInfo.SetLocation(aP0);
aInfo.SetPosition(aAx3);
//aInfo.SetRadius1(aR1);
//
BRepTools::UVBounds(aF, aUMin, aUMax, aVMin, aVMax);
bInfU1=Precision::IsNegativeInfinite(aUMin);
bInfU2=Precision::IsPositiveInfinite(aUMax);
bInfV1=Precision::IsNegativeInfinite(aVMin);
bInfV2=Precision::IsPositiveInfinite(aVMax);
//
bInf=(bInfU1 || bInfU2 || bInfV1 || bInfV2);
if (bInf) {
aInfo.SetKindOfBounds(GEOMAlgo_KB_INFINITE);
}
else {
aInfo.SetKindOfBounds(GEOMAlgo_KB_TRIMMED);
}
FillDetails(aF, aCone);
}
//
// 5. Torus
else if (aST==GeomAbs_Torus) {
gp_Torus aTorus;
//
aTorus=aGAS.Torus();
aP0=aTorus.Location();
aAx3=aTorus.Position();
aR1=aTorus.MajorRadius();
aR2=aTorus.MinorRadius();
//
aInfo.SetKindOfShape(GEOMAlgo_KS_TORUS);
aInfo.SetLocation(aP0);
aInfo.SetPosition(aAx3);
aInfo.SetRadius1(aR1);
aInfo.SetRadius2(aR2);
//
aInfo.SetKindOfBounds(GEOMAlgo_KB_TRIMMED);
FillDetails(aF, aTorus);
}
}
//=======================================================================
//function :FillEdge
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfoFiller::FillEdge(const TopoDS_Shape& aS)
{
myErrorStatus=0;
//
Standard_Boolean bDegenerated, bIsAllowedType;
Standard_Integer aNbV;
Standard_Real aR1, aR2;
gp_Pnt aP, aP1, aP2, aPc;
gp_Dir aD;
gp_Ax2 aAx2;
Standard_Real aT1, aT2;
GeomAbs_CurveType aCT;
Handle(Geom_Curve) aC3D;
TopoDS_Edge aE;
//----------------------------------------------------
if (myMapInfo.Contains(aS)) {
return;
}
else {
GEOMAlgo_ShapeInfo aInfoX;
myMapInfo.Add(aS, aInfoX);
}
GEOMAlgo_ShapeInfo& aInfo=myMapInfo.ChangeFromKey(aS);
//----------------------------------------------------
aInfo.SetType(TopAbs_EDGE);
//
FillNbSubShapes(aS, aInfo);
//
aE=TopoDS::Edge(aS);
//
bDegenerated=BRep_Tool::Degenerated(aE);
if (bDegenerated) {
aInfo.SetKindOfShape(GEOMAlgo_KS_DEGENERATED);
FillSubShapes(aS);
return;
}
//
aC3D=BRep_Tool::Curve(aE, aT1, aT2);
GeomAdaptor_Curve aGAC(aC3D);
aCT=aGAC.GetType();
bIsAllowedType=IsAllowedType(aCT);
if (!bIsAllowedType) {
FillSubShapes(aS);
return;
}
// Line
if (aCT==GeomAbs_Line) {
Standard_Boolean bInf1, bInf2;
Standard_Real aLength;
gp_Lin aLin;
gp_XYZ aXYZ1, aXYZ2, aXYZc;
//
aLin=aGAC.Line();
aP=aLin.Location();
aD=aLin.Direction();
//
aInfo.SetKindOfShape(GEOMAlgo_KS_LINE);
aInfo.SetKindOfClosed(GEOMAlgo_KC_NOTCLOSED);
aInfo.SetLocation(aP);
aInfo.SetDirection(aD);
//
bInf1=Precision::IsNegativeInfinite(aT1);
bInf2=Precision::IsPositiveInfinite(aT2);
if (bInf1||bInf2) {
aInfo.SetKindOfBounds(GEOMAlgo_KB_INFINITE);
aInfo.SetKindOfName(GEOMAlgo_KN_LINE);
}
else {
aInfo.SetKindOfBounds(GEOMAlgo_KB_TRIMMED);
aInfo.SetKindOfName(GEOMAlgo_KN_SEGMENT);
aGAC.D0(aT1, aP1);
aGAC.D0(aT2, aP2);
aInfo.SetPnt1(aP1);
aInfo.SetPnt2(aP2);
//
aLength=aP1.Distance(aP2);
aXYZ1=aP1.XYZ();
aXYZ2=aP2.XYZ();
aXYZc=aXYZ1+aXYZ2;
aXYZc.Multiply(0.5);
//
aPc.SetXYZ(aXYZc);
gp_Vec aVec(aPc, aP2);
gp_Dir aDir(aVec);
//
aInfo.SetLocation(aPc);
aInfo.SetDirection(aDir);
aInfo.SetLength(aLength);
}
}// if (aCT==GeomAbs_Line) {
//
// Circle
else if (aCT==GeomAbs_Circle) {
gp_Circ aCirc;
//
aCirc=aGAC.Circle();
aP=aCirc.Location();
aAx2=aCirc.Position();
aR1=aCirc.Radius();
//
aInfo.SetKindOfShape(GEOMAlgo_KS_CIRCLE);
aInfo.SetLocation(aP);
aInfo.SetPosition(aAx2);
aInfo.SetRadius1(aR1);
//
aNbV=aInfo.NbSubShapes(TopAbs_VERTEX);
if (!aNbV) {
myErrorStatus=11; // circle edge without vertices
return;
}
aInfo.SetKindOfBounds(GEOMAlgo_KB_TRIMMED);
aGAC.D0(aT1, aP1);
aGAC.D0(aT2, aP2);
aInfo.SetPnt1(aP1);
aInfo.SetPnt2(aP2);
//
if (aNbV==1) {
aInfo.SetKindOfClosed(GEOMAlgo_KC_CLOSED);
aInfo.SetKindOfName(GEOMAlgo_KN_CIRCLE);
}
else {
aInfo.SetKindOfClosed(GEOMAlgo_KC_NOTCLOSED);
aInfo.SetKindOfName(GEOMAlgo_KN_ARCCIRCLE);
//
gp_Vec aVecX(aP, aP1);
gp_Dir aDirX(aVecX);
gp_Ax2 aAx2new(aP, aAx2.Direction(), aDirX);
aInfo.SetPosition(aAx2new);
}
}// else if (aCT==GeomAbs_Circle) {
//
// Ellipse
else if (aCT==GeomAbs_Ellipse) {
gp_Elips aElips;
//
aElips=aGAC.Ellipse();
aP=aElips.Location();
aAx2=aElips.Position();
aR1=aElips.MajorRadius();
aR2=aElips.MinorRadius();
//
aInfo.SetKindOfShape(GEOMAlgo_KS_ELLIPSE);
aInfo.SetLocation(aP);
aInfo.SetPosition(aAx2);
aInfo.SetRadius1(aR1);
aInfo.SetRadius2(aR2);
//
aNbV=aInfo.NbSubShapes(TopAbs_VERTEX);
if (!aNbV) {
myErrorStatus=11; // ellipse edge without vertices
return;
}
aInfo.SetKindOfBounds(GEOMAlgo_KB_TRIMMED);
aGAC.D0(aT1, aP1);
aGAC.D0(aT2, aP2);
aInfo.SetPnt1(aP1);
aInfo.SetPnt2(aP2);
//
if (aNbV==1) {
aInfo.SetKindOfClosed(GEOMAlgo_KC_CLOSED);
aInfo.SetKindOfName(GEOMAlgo_KN_ELLIPSE);
}
else {
aInfo.SetKindOfClosed(GEOMAlgo_KC_NOTCLOSED);
aInfo.SetKindOfName(GEOMAlgo_KN_ARCELLIPSE);
//
gp_Vec aVecX(aP, aP1);
gp_Dir aDirX(aVecX);
gp_Ax2 aAx2new(aP, aAx2.Direction(), aDirX);
aInfo.SetPosition(aAx2new);
}
}// else if (aCT==GeomAbs_Ellipse) {
//
FillSubShapes(aS);
}
//=======================================================================
//function :FillVertex
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfoFiller::FillVertex(const TopoDS_Shape& aS)
{
myErrorStatus=0;
//
gp_Pnt aP;
TopoDS_Vertex aV;
//
if (myMapInfo.Contains(aS)) {
return;
}
else {
GEOMAlgo_ShapeInfo aInfoX;
myMapInfo.Add(aS, aInfoX);
}
GEOMAlgo_ShapeInfo& aInfo=myMapInfo.ChangeFromKey(aS);
//
aV=TopoDS::Vertex(aS);
aP=BRep_Tool::Pnt(aV);
//
aInfo.SetType(TopAbs_VERTEX);
aInfo.SetLocation(aP);
myMapInfo.Add(aS, aInfo);
}
//=======================================================================
//function : FillNbSubshapes
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfoFiller::FillNbSubShapes(const TopoDS_Shape& aS,
GEOMAlgo_ShapeInfo& aInfo)
{
myErrorStatus=0;
//
Standard_Integer i, aNb, aNbS;
TopTools_IndexedMapOfShape aM;
TopAbs_ShapeEnum aST;
TopAbs_ShapeEnum aTypes[]= {
//TopAbs_FACE, TopAbs_EDGE, TopAbs_VERTEX
TopAbs_COMPOUND,
TopAbs_COMPSOLID,
TopAbs_SOLID,
TopAbs_SHELL,
TopAbs_FACE,
TopAbs_WIRE,
TopAbs_EDGE,
TopAbs_VERTEX
};
//
aST=aS.ShapeType();
aNb=sizeof(aTypes)/sizeof(aTypes[0]);
for (i=0; i<aNb; ++i) {
if (aTypes[i]==aST) {
continue;
}
aM.Clear();
TopExp::MapShapes(aS, aTypes[i], aM);
aNbS=aM.Extent();
aInfo.SetNbSubShapes(aTypes[i], aNbS);
}
}
//=======================================================================
//function :NbShells
//purpose :
//=======================================================================
Standard_Integer NbShells(const TopoDS_Solid& aSd)
{
Standard_Integer iCnt;
TopoDS_Iterator aIt;
//
iCnt=0;
//
aIt.Initialize(aSd);
for (; aIt.More(); aIt.Next()){
//const TopoDS_Shape& aSh=aIt.Value();
++iCnt;
}
return iCnt;
}
//=======================================================================
//function : NbWires
//purpose :
//=======================================================================
Standard_Integer NbWires(const TopoDS_Face& aF)
{
Standard_Integer iCnt;
TopoDS_Iterator aIt;
//
iCnt=0;
//
aIt.Initialize(aF);
for (; aIt.More(); aIt.Next()){
//const TopoDS_Shape& aW=aIt.Value();
++iCnt;
}
return iCnt;
}
//=======================================================================
//function : IsAllowedType
//purpose :
//=======================================================================
Standard_Boolean IsAllowedType(const GeomAbs_CurveType aCT)
{
Standard_Boolean bRet;
Standard_Integer i, aNb;
GeomAbs_CurveType aTypes[]={
GeomAbs_Line, GeomAbs_Circle, GeomAbs_Ellipse
};
//
bRet=Standard_False;
aNb=sizeof(aTypes)/sizeof(aTypes[0]);
for (i=0; i<aNb && !bRet; ++i) {
bRet=(aCT==aTypes[i]);
}
//
return bRet;
}
//=======================================================================
//function : IsAllowedType
//purpose :
//=======================================================================
Standard_Boolean IsAllowedType(const GeomAbs_SurfaceType aST)
{
Standard_Boolean bRet;
Standard_Integer i, aNb;
GeomAbs_SurfaceType aTypes[]={
GeomAbs_Plane, GeomAbs_Cylinder,
GeomAbs_Cone, GeomAbs_Sphere,
GeomAbs_Torus
};
//
bRet=Standard_False;
aNb=sizeof(aTypes)/sizeof(aTypes[0]);
for (i=0; i<aNb && !bRet; ++i) {
bRet=(aST==aTypes[i]);
}
//
return bRet;
}
//
// myErrorStatus
//
// 0 - Ok
// 1 - The object is just initialized
//
// 10 - Null shape
// 11 - circle/ellipse edge without vertices

View File

@ -0,0 +1,186 @@
// File generated by CPPExt (Value)
//
// Copyright (C) 1991 - 2000 by
// Matra Datavision SA. All rights reserved.
//
// Copyright (C) 2001 - 2004 by
// Open CASCADE SA. All rights reserved.
//
// This file is part of the Open CASCADE Technology software.
//
// This software may be distributed and/or modified under the terms and
// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
// and appearing in the file LICENSE included in the packaging of this file.
//
// This software is distributed on an "AS IS" basis, without warranty of any
// kind, and Open CASCADE SA hereby disclaims all such warranties,
// including without limitation, any warranties of merchantability, fitness
// for a particular purpose or non-infringement. Please see the License for
// the specific terms and conditions governing rights and limitations under the
// License.
#ifndef _GEOMAlgo_ShapeInfoFiller_HeaderFile
#define _GEOMAlgo_ShapeInfoFiller_HeaderFile
#ifndef _TopoDS_Shape_HeaderFile
#include <TopoDS_Shape.hxx>
#endif
#ifndef _GEOMAlgo_ShapeInfo_HeaderFile
#include <GEOMAlgo_ShapeInfo.hxx>
#endif
#ifndef _GEOMAlgo_IndexedDataMapOfShapeShapeInfo_HeaderFile
#include <GEOMAlgo_IndexedDataMapOfShapeShapeInfo.hxx>
#endif
#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
#ifndef _GEOMAlgo_Algo_HeaderFile
#include <GEOMAlgo_Algo.hxx>
#endif
class TopoDS_Shape;
class GEOMAlgo_ShapeInfo;
class TopoDS_Face;
class gp_Pln;
class gp_Sphere;
class gp_Cylinder;
class gp_Cone;
class gp_Torus;
class TopoDS_Solid;
#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_Macro_HeaderFile
#include <Standard_Macro.hxx>
#endif
class GEOMAlgo_ShapeInfoFiller : public GEOMAlgo_Algo {
public:
void* operator new(size_t,void* anAddress)
{
return anAddress;
}
void* operator new(size_t size)
{
return Standard::Allocate(size);
}
void operator delete(void *anAddress)
{
if (anAddress) Standard::Free((Standard_Address&)anAddress);
}
// Methods PUBLIC
//
Standard_EXPORT GEOMAlgo_ShapeInfoFiller();
Standard_EXPORT virtual ~GEOMAlgo_ShapeInfoFiller();
Standard_EXPORT void SetShape(const TopoDS_Shape& aS) ;
Standard_EXPORT const TopoDS_Shape& Shape() const;
Standard_EXPORT void SetTolerance(const Standard_Real aT) ;
Standard_EXPORT Standard_Real Tolerance() const;
Standard_EXPORT const GEOMAlgo_ShapeInfo& Info() const;
Standard_EXPORT const GEOMAlgo_ShapeInfo& Info(const TopoDS_Shape& aS) const;
Standard_EXPORT virtual void Perform() ;
protected:
// Methods PROTECTED
//
Standard_EXPORT virtual void CheckData() ;
Standard_EXPORT void FillNbSubShapes(const TopoDS_Shape& aS,GEOMAlgo_ShapeInfo& aInfo) ;
Standard_EXPORT void FillSubShapes(const TopoDS_Shape& aS) ;
Standard_EXPORT void FillShape(const TopoDS_Shape& aS) ;
Standard_EXPORT void FillVertex(const TopoDS_Shape& aS) ;
Standard_EXPORT void FillEdge(const TopoDS_Shape& aS) ;
Standard_EXPORT void FillFace(const TopoDS_Shape& aS) ;
Standard_EXPORT void FillSolid(const TopoDS_Shape& aS) ;
Standard_EXPORT void FillContainer(const TopoDS_Shape& aS) ;
Standard_EXPORT void FillDetails(const TopoDS_Face& aF,const gp_Pln& aPln) ;
Standard_EXPORT void FillDetails(const TopoDS_Face& aF,const gp_Sphere& aSph) ;
Standard_EXPORT void FillDetails(const TopoDS_Face& aF,const gp_Cylinder& aCyl) ;
Standard_EXPORT void FillDetails(const TopoDS_Face& aF,const gp_Cone& aCone) ;
Standard_EXPORT void FillDetails(const TopoDS_Face& aF,const gp_Torus& aTorus) ;
Standard_EXPORT void FillDetails(const TopoDS_Solid& aS) ;
// Fields PROTECTED
//
TopoDS_Shape myShape;
GEOMAlgo_ShapeInfo myEmptyInfo;
GEOMAlgo_IndexedDataMapOfShapeShapeInfo myMapInfo;
Standard_Real myTolerance;
private:
// Methods PRIVATE
//
// Fields PRIVATE
//
};
// other Inline functions and methods (like "C++: function call" methods)
//
#endif

View File

@ -0,0 +1,26 @@
// File generated by CPPExt (Value)
//
// Copyright (C) 1991 - 2000 by
// Matra Datavision SA. All rights reserved.
//
// Copyright (C) 2001 - 2004 by
// Open CASCADE SA. All rights reserved.
//
// This file is part of the Open CASCADE Technology software.
//
// This software may be distributed and/or modified under the terms and
// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
// and appearing in the file LICENSE included in the packaging of this file.
//
// This software is distributed on an "AS IS" basis, without warranty of any
// kind, and Open CASCADE SA hereby disclaims all such warranties,
// including without limitation, any warranties of merchantability, fitness
// for a particular purpose or non-infringement. Please see the License for
// the specific terms and conditions governing rights and limitations under the
// License.
#include <GEOMAlgo_ShapeInfoFiller.jxx>

View File

@ -0,0 +1,30 @@
#ifndef _TopoDS_Shape_HeaderFile
#include <TopoDS_Shape.hxx>
#endif
#ifndef _GEOMAlgo_ShapeInfo_HeaderFile
#include <GEOMAlgo_ShapeInfo.hxx>
#endif
#ifndef _TopoDS_Face_HeaderFile
#include <TopoDS_Face.hxx>
#endif
#ifndef _gp_Pln_HeaderFile
#include <gp_Pln.hxx>
#endif
#ifndef _gp_Sphere_HeaderFile
#include <gp_Sphere.hxx>
#endif
#ifndef _gp_Cylinder_HeaderFile
#include <gp_Cylinder.hxx>
#endif
#ifndef _gp_Cone_HeaderFile
#include <gp_Cone.hxx>
#endif
#ifndef _gp_Torus_HeaderFile
#include <gp_Torus.hxx>
#endif
#ifndef _TopoDS_Solid_HeaderFile
#include <TopoDS_Solid.hxx>
#endif
#ifndef _GEOMAlgo_ShapeInfoFiller_HeaderFile
#include <GEOMAlgo_ShapeInfoFiller.hxx>
#endif

View File

@ -0,0 +1,738 @@
#include <GEOMAlgo_ShapeInfoFiller.ixx>
#include <Precision.hxx>
#include <gp_Lin.hxx>
#include <gp_XYZ.hxx>
#include <gp_Ax1.hxx>
#include <gp_Dir.hxx>
#include <gp_Vec.hxx>
#include <gp_Ax2.hxx>
#include <gp_Ax3.hxx>
#include <ElCLib.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Vertex.hxx>
#include <TopoDS_Edge.hxx>
#include <TopoDS_Wire.hxx>
#include <TopoDS_Face.hxx>
#include <TopoDS_Iterator.hxx>
#include <BRep_Tool.hxx>
#include <TopExp.hxx>
#include <TopExp_Explorer.hxx>
#include <TopTools_MapOfShape.hxx>
#include <TopTools_IndexedMapOfShape.hxx>
#include <BRepTools_WireExplorer.hxx>
#include <GEOMAlgo_ShapeInfo.hxx>
#include <TColStd_MapOfInteger.hxx>
#include <TColStd_IndexedMapOfInteger.hxx>
//=======================================================================
//function : FillDetails
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfoFiller::FillDetails(const TopoDS_Solid& aSd)
{
Standard_Integer i, aNbF, aNbCyl, aNbCon, aNbPgn, aNbRct, aNbCrc, aNbX;
TopoDS_Shape aFCyl, aFCon;
TopTools_IndexedMapOfShape aMF;
GEOMAlgo_KindOfName aKNF;
//
GEOMAlgo_ShapeInfo& aInfo=myMapInfo.ChangeFromKey(aSd);
aInfo.SetKindOfName(GEOMAlgo_KN_UNKNOWN);
//
TopExp::MapShapes(aSd, TopAbs_FACE, aMF);
//
aNbF=aMF.Extent();
if (!aNbF) {
return;
}
//
if (aNbF==1) {
const TopoDS_Shape& aF=aMF(1);
GEOMAlgo_ShapeInfo& aInfoF=myMapInfo.ChangeFromKey(aF);
aKNF=aInfoF.KindOfName(); // mb: sphere, torus
if (aKNF==GEOMAlgo_KN_SPHERE ||
aKNF==GEOMAlgo_KN_TORUS) {
aInfo.SetKindOfName(aKNF);
aInfo.SetLocation(aInfoF.Location());
aInfo.SetPosition(aInfoF.Position());
aInfo.SetRadius1(aInfoF.Radius1());
if(aKNF==GEOMAlgo_KN_TORUS) {
aInfo.SetRadius2(aInfoF.Radius2());
}
return;
}
}
//
aNbCyl=0;
aNbCon=0;
aNbPgn=0;
aNbRct=0;
aNbCrc=0;
for (i=1; i<=aNbF; ++i) {
const TopoDS_Shape& aF=aMF(i);
GEOMAlgo_ShapeInfo& aInfoF=myMapInfo.ChangeFromKey(aF);
aKNF=aInfoF.KindOfName();
if (aKNF==GEOMAlgo_KN_CYLINDER) {
aFCyl=aF;
++aNbCyl;
}
else if (aKNF==GEOMAlgo_KN_CONE) {
aFCon=aF;
++aNbCon;
}
else if (aKNF==GEOMAlgo_KN_DISKCIRCLE) {
++aNbCrc;
}
else if (aKNF==GEOMAlgo_KN_POLYGON ||
aKNF==GEOMAlgo_KN_TRIANGLE ||
aKNF==GEOMAlgo_KN_QUADRANGLE) {
++aNbPgn;
}
else if (aKNF==GEOMAlgo_KN_RECTANGLE) {
++aNbPgn;
++aNbRct;
}
}
//
aNbX=aNbCyl+aNbCrc;
if (aNbCyl==1 && aNbCrc==2 && aNbX==aNbF) {
// cylinder (as they understand it)
GEOMAlgo_ShapeInfo& aInfoF=myMapInfo.ChangeFromKey(aFCyl);
aKNF=aInfoF.KindOfName();
aInfo.SetKindOfName(aKNF);
aInfo.SetLocation(aInfoF.Location());
aInfo.SetPosition(aInfoF.Position());
aInfo.SetRadius1(aInfoF.Radius1());
aInfo.SetHeight(aInfoF.Height());
return;
}
//
aNbX=aNbCon+aNbCrc;
if (aNbCon==1 && (aNbCrc==1 || aNbCrc==2) && aNbX==aNbF) {
// cone
GEOMAlgo_ShapeInfo& aInfoF=myMapInfo.ChangeFromKey(aFCon);
aKNF=aInfoF.KindOfName();
aInfo.SetKindOfName(aKNF);
aInfo.SetLocation(aInfoF.Location());
aInfo.SetPosition(aInfoF.Position());
aInfo.SetRadius1(aInfoF.Radius1());
aInfo.SetRadius2(aInfoF.Radius2());
aInfo.SetHeight(aInfoF.Height());
return;
}
//
if (aNbPgn!=6) {
aInfo.SetKindOfName(GEOMAlgo_KN_POLYHEDRON);
return;
}
if (aNbPgn!=aNbRct) {
aInfo.SetKindOfName(GEOMAlgo_KN_POLYHEDRON);
return;
}
//===================================================
// aNbRct=6;
// box
Standard_Integer j, aNbFi, aNbV, iMax, iMin, iMid;
Standard_Real aDot, aLength, aWidth, aHeight, aDist[3];
Standard_Real aDistMin, aDistMax;
gp_Pnt aPi, aPc;
gp_Dir aDir[3];
gp_XYZ aXYZc;
TColStd_IndexedMapOfInteger aMp;
TopTools_IndexedMapOfShape aMV, aMFi;
//
// barycenter aPc
TopExp::MapShapes(aSd, TopAbs_VERTEX, aMV);
aNbV=aMV.Extent();
if (aNbV!=8) {
return;
}
//
aXYZc.SetCoord(0.,0.,0.);
for (i=1; i<=aNbV; ++i) {
const TopoDS_Vertex& aVi=TopoDS::Vertex(aMV(i));
aPi=BRep_Tool::Pnt(aVi);
const gp_XYZ& aXYZ=aPi.XYZ();
aXYZc=aXYZc+aXYZ;
}
//
aXYZc.Divide(aNbV);
aPc.SetXYZ(aXYZc);
//
// 3 faces
for (i=1; i<=aNbF; ++i) {
if (aMp.Contains(i)) {
continue;
}
//
const TopoDS_Shape& aFi=aMF(i);
const GEOMAlgo_ShapeInfo& aIFi=myMapInfo.FindFromKey(aFi);
const gp_Dir& aDNi=aIFi.Position().Direction();
//
for (j=i+1; j<=aNbF; ++j) {
if (aMp.Contains(j)) {
continue;
}
//
const TopoDS_Shape& aFj=aMF(j);
const GEOMAlgo_ShapeInfo& aIFj=myMapInfo.FindFromKey(aFj);
const gp_Dir& aDNj=aIFj.Position().Direction();
//
aDot=aDNi*aDNj;
if (fabs(1.-aDot)<0.0001) {
aMp.Add(i);
aMp.Add(j);
aMFi.Add(aFi);
break;
}
//
}
}
aNbFi=aMFi.Extent();
if (aNbFi!=3) {
return;
}
//
aDistMin=1.e15;
aDistMax=-aDistMin;
for (i=0; i<aNbFi; ++i) {
const TopoDS_Shape& aFi=aMFi(i+1);
const GEOMAlgo_ShapeInfo& aIFi=myMapInfo.FindFromKey(aFi);
aPi=aIFi.Location();
aDist[i]=aPc.Distance(aPi);
if (aDist[i]>aDistMax) {
aDistMax=aDist[i];
iMax=i;
}
if (aDist[i]<aDistMin) {
aDistMin=aDist[i];
iMin=i;
}
gp_Vec aVi(aPc, aPi);
gp_Dir aDi(aVi);
aDir[i]=aDi;
}
//
if (iMax==iMin) {
iMax=0;
iMin=1;
}
iMid=3-iMax-iMin;
//
aLength=2.*aDist[iMax];
aWidth=2.*aDist[iMid];
aHeight=2.*aDist[iMin];
//
gp_Ax2 aAx2(aPc, aDir[iMin], aDir[iMax]);
gp_Ax3 aAx3(aAx2);
//
aInfo.SetKindOfName(GEOMAlgo_KN_BOX);
aInfo.SetLocation(aPc);
aInfo.SetLength(aLength);
aInfo.SetWidth(aWidth);
aInfo.SetHeight(aHeight);
aInfo.SetPosition(aAx3);
}
//=======================================================================
//function : FillDetails
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfoFiller::FillDetails(const TopoDS_Face& aF,
const gp_Pln& aPln)
{
Standard_Integer aNbV, aNbE, i, j;
Standard_Real aDot, aD0, aD1, aLength, aWidth;
gp_Dir aDx[4], aDX;
gp_Pnt aPx[4], aP, aPc;
gp_XYZ aXYZc;
TopExp_Explorer aExp;
TopoDS_Shape aE;
TopoDS_Wire aW;
TopoDS_Edge aEx;
TopoDS_Iterator aIt;
TopTools_IndexedMapOfShape aMV;
BRepTools_WireExplorer aWExp;
GEOMAlgo_KindOfName aKN, aKNE;
GEOMAlgo_KindOfShape aKS;
//
GEOMAlgo_ShapeInfo& aInfo=myMapInfo.ChangeFromKey(aF);
aKN=GEOMAlgo_KN_UNKNOWN;
aInfo.SetKindOfName(GEOMAlgo_KN_UNKNOWN);
//
aKS=aInfo.KindOfShape();
if (aKS!=GEOMAlgo_KS_PLANE) {
return;
}
//
if (aInfo.KindOfBounds()==GEOMAlgo_KB_INFINITE) {
aInfo.SetKindOfName(GEOMAlgo_KN_PLANE);
return;
}
//
aNbV=aInfo.NbSubShapes(TopAbs_VERTEX);
aNbE=aInfo.NbSubShapes(TopAbs_EDGE);
//
// 1. may be it is circle/ellipse
if (aNbV==1 && aNbE==1) {
aExp.Init(aF, TopAbs_EDGE);
for (; aExp.More(); aExp.Next()) {
aE=aExp.Current();
break;
}
//
const GEOMAlgo_ShapeInfo& aInfoE=myMapInfo.FindFromKey(aE);
aKNE=aInfoE.KindOfName();
if (aKNE==GEOMAlgo_KN_CIRCLE) {
aKN=GEOMAlgo_KN_DISKCIRCLE;
aInfo.SetKindOfName(aKN);
aInfo.SetRadius1(aInfoE.Radius1());
aInfo.SetLocation(aInfoE.Location());
aInfo.SetPosition(aInfoE.Position());
}
if (aKNE==GEOMAlgo_KN_ELLIPSE) {
aKN=GEOMAlgo_KN_DISKELLIPSE;
aInfo.SetKindOfName(aKN);
aInfo.SetRadius1(aInfoE.Radius1());
aInfo.SetRadius2(aInfoE.Radius2());
aInfo.SetLocation(aInfoE.Location());
aInfo.SetPosition(aInfoE.Position());
}
}
//
// 2. may be it is rectangle
else {
aExp.Init(aF, TopAbs_EDGE);
for (; aExp.More(); aExp.Next()) {
aE=aExp.Current();
const GEOMAlgo_ShapeInfo& aInfoE=myMapInfo.FindFromKey(aE);
aKNE=aInfoE.KindOfName();
if (aKNE!=GEOMAlgo_KN_SEGMENT) {
return;
}
}
//
aInfo.SetKindOfName(GEOMAlgo_KN_POLYGON);
//
if (aNbV==3 && aNbE==3) {
aInfo.SetKindOfName(GEOMAlgo_KN_TRIANGLE);
//
aXYZc.SetCoord(0.,0.,0.);
TopExp::MapShapes(aF, TopAbs_VERTEX, aMV);
for (i=1; i<=aNbV; ++i) {
const TopoDS_Vertex& aV=TopoDS::Vertex(aMV(i));
aP=BRep_Tool::Pnt(aV);
const gp_XYZ& aXYZ=aP.XYZ();
aXYZc=aXYZc+aXYZ;
aPx[i-1]=aP;
}
aXYZc.Divide(3.);
//
aPc.SetXYZ(aXYZc);
gp_Vec aVX(aPc, aPx[0]);
aVX.Normalize();
aDX.SetXYZ(aVX.XYZ());
const gp_Dir& aDZ=aPln.Axis().Direction();
//
gp_Ax2 aAx2(aPc, aDZ, aDX);
gp_Ax3 aAx3(aAx2);
//
aInfo.SetLocation(aPc);
aInfo.SetPosition(aAx3);
//
return;
}
//
if (!(aNbV==4 && aNbE==4)) {
return;
}
//
// aNbV==4 && aNbE==4 and all edges are segments
aIt.Initialize(aF);
for (; aIt.More(); aIt.Next()){
aW=TopoDS::Wire(aIt.Value());
break;
}
//
aWExp.Init(aW, aF);
for (i=0; aWExp.More(); aWExp.Next(), ++i) {
aEx=aWExp.Current();
const GEOMAlgo_ShapeInfo& aInfoEx=myMapInfo.FindFromKey(aEx);
aDx[i]=aInfoEx.Direction();
aPx[i]=aInfoEx.Location();
}
//
for (i=0; i<4; ++i) {
j=(i==3) ? 0 : i+1;
aDot=aDx[i]*aDx[j];
if (fabs (aDot) > myTolerance) {
aInfo.SetKindOfName(GEOMAlgo_KN_QUADRANGLE);
return;
}
}
//
// rectangle
aInfo.SetKindOfName(GEOMAlgo_KN_RECTANGLE);
//
// shift location to the center and calc. sizes
aXYZc.SetCoord(0.,0.,0.);
TopExp::MapShapes(aF, TopAbs_VERTEX, aMV);
for (i=1; i<=aNbV; ++i) {
const TopoDS_Vertex& aV=TopoDS::Vertex(aMV(i));
aP=BRep_Tool::Pnt(aV);
const gp_XYZ& aXYZ=aP.XYZ();
aXYZc=aXYZc+aXYZ;
}
//
// Location : aPc in center of rectangle
// Position : 0z is plane normal
// 0x is along length
//
aXYZc.Divide(4.);
aPc.SetXYZ(aXYZc);
//
gp_Lin aL0(aPx[0], aDx[0]);
gp_Lin aL1(aPx[1], aDx[1]);
//
aD0=aL0.Distance(aPc);
aD1=aL1.Distance(aPc);
//
aLength=aD0;
aWidth =aD1;
aDX=aL1.Direction();
if (aD0<aD1) {
aLength=aD1;
aWidth =aD0;
aDX=aL0.Direction();
}
//
aLength=2.*aLength;
aWidth =2.*aWidth;
//
aInfo.SetLocation(aPc);
aInfo.SetLength(aLength);
aInfo.SetWidth(aWidth);
//
const gp_Dir& aDZ=aPln.Axis().Direction();
gp_Ax2 aAx2(aPc, aDZ, aDX);
gp_Ax3 aAx3(aAx2);
aInfo.SetPosition(aAx3);
}
return;
}
//=======================================================================
//function : FillDetails
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfoFiller::FillDetails(const TopoDS_Face& aF,
const gp_Sphere& )
{
Standard_Integer aNbV, aNbE, aNbSE, aNbDE;
TopoDS_Edge aE;
TopExp_Explorer aExp;
TopTools_MapOfShape aM;
GEOMAlgo_KindOfShape aKS, aKSE;
//
GEOMAlgo_ShapeInfo& aInfo=myMapInfo.ChangeFromKey(aF);
aInfo.SetKindOfName(GEOMAlgo_KN_UNKNOWN);
//
aKS=aInfo.KindOfShape();
if (aKS!=GEOMAlgo_KS_SPHERE) {
return;
}
//
aNbV=aInfo.NbSubShapes(TopAbs_VERTEX);
aNbE=aInfo.NbSubShapes(TopAbs_EDGE);
if (!(aNbV==2 && aNbE==3)) {
return;
}
//
aNbSE=0;
aNbDE=0;
aExp.Init(aF, TopAbs_EDGE);
for (; aExp.More(); aExp.Next()) {
aE=TopoDS::Edge(aExp.Current());
if(aM.Add(aE)) {
const GEOMAlgo_ShapeInfo& aInfoE=myMapInfo.FindFromKey(aE);
aKSE=aInfoE.KindOfShape();
//
if (BRep_Tool::IsClosed(aE, aF)) {
++aNbSE;
}
else if (aKSE==GEOMAlgo_KS_DEGENERATED) {
++aNbDE;
}
}
}
//
if (!(aNbSE==1 && aNbDE==2)) {
return;
}
aInfo.SetKindOfName(GEOMAlgo_KN_SPHERE);
}
//=======================================================================
//function : FillDetails
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfoFiller::FillDetails(const TopoDS_Face& aF,
const gp_Cone& )//aCone)
{
Standard_Integer aNbV, aNbE, aNbCE, aNbSE, aNbDE, i;
Standard_Real aR[3], aHeight;
gp_Pnt aPC[3], aPD, aPc, aPX[3];
TopoDS_Vertex aVD;
TopoDS_Edge aE;
TopoDS_Iterator aIt;
TopExp_Explorer aExp;
TopTools_MapOfShape aM;
GEOMAlgo_KindOfShape aKS, aKSE;
GEOMAlgo_KindOfName aKN, aKNE;
GEOMAlgo_KindOfClosed aKCE;
//
GEOMAlgo_ShapeInfo& aInfo=myMapInfo.ChangeFromKey(aF);
aKN=GEOMAlgo_KN_UNKNOWN;
aInfo.SetKindOfName(aKN);
//
aKS=aInfo.KindOfShape();
if (aKS!=GEOMAlgo_KS_CONE) {
return;
}
//
if (aInfo.KindOfBounds()==GEOMAlgo_KB_INFINITE) {
return;
}
//
aNbV=aInfo.NbSubShapes(TopAbs_VERTEX);
aNbE=aInfo.NbSubShapes(TopAbs_EDGE);
if (!(aNbV==2 && aNbE==3)) {
return;
}
//
i=0;
aNbCE=0;
aNbSE=0;
aNbDE=0;
aExp.Init(aF, TopAbs_EDGE);
for (; aExp.More(); aExp.Next()) {
aE=TopoDS::Edge(aExp.Current());
if(aM.Add(aE)) {
const GEOMAlgo_ShapeInfo& aInfoE=myMapInfo.FindFromKey(aE);
aKNE=aInfoE.KindOfName();
aKCE=aInfoE.KindOfClosed();
aKSE=aInfoE.KindOfShape();
if (aKNE==GEOMAlgo_KN_CIRCLE && aKCE==GEOMAlgo_KC_CLOSED) {
aPC[i]=aInfoE.Location();
aR[i]=aInfoE.Radius1();
//
aIt.Initialize(aE);
for (; aIt.More(); aIt.Next()) {
aVD=TopoDS::Vertex(aIt.Value());
break;
}
aPX[i]=BRep_Tool::Pnt(aVD);
//
++i;
++aNbCE;
}
else if (aKNE==GEOMAlgo_KN_SEGMENT) {
if (BRep_Tool::IsClosed(aE, aF)) {
++aNbSE;
}
}
else if (aKSE==GEOMAlgo_KS_DEGENERATED) {
aIt.Initialize(aE);
for (; aIt.More(); aIt.Next()) {
aVD=TopoDS::Vertex(aIt.Value());
break;
}
//
aPD=BRep_Tool::Pnt(aVD);
//
++aNbDE;
}
}
}
//
if (!((aNbCE==2 || (aNbCE==1 && aNbDE==1)) && aNbSE==1)) {
return;
}
//
if (aNbDE==1) {
aPC[1]=aPD;
aR[1]=0.;
}
//
aHeight=aPC[0].Distance(aPC[1]);
//
Standard_Real aRmin, aRmax;
gp_Ax2 aAx2new;
//
if (aR[0]>aR[1]) {
aRmin=aR[1];
aRmax=aR[0];
aPc=aPC[0];
gp_Vec aVz(aPC[0], aPC[1]);
gp_Vec aVx(aPC[0], aPX[0]);
gp_Dir aDz(aVz);
gp_Dir aDx(aVx);
gp_Ax2 aAx2(aPc, aDz, aDx);
aAx2new=aAx2;
}
else {
aRmin=aR[0];
aRmax=aR[1];
aPc=aPC[1];
gp_Vec aVz(aPC[1], aPC[0]);
gp_Vec aVx(aPC[1], aPX[1]);
gp_Dir aDz(aVz);
gp_Dir aDx(aVx);
gp_Ax2 aAx2(aPc, aDz, aDx);
aAx2new=aAx2;
}
//
gp_Ax3 aAx3(aAx2new);
aInfo.SetLocation(aPc);
aInfo.SetPosition(aAx3);
aInfo.SetRadius1(aRmax);
aInfo.SetRadius2(aRmin);
aInfo.SetHeight(aHeight);
//
aInfo.SetKindOfName(GEOMAlgo_KN_CONE);
}
//=======================================================================
//function : FillDetails
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfoFiller::FillDetails(const TopoDS_Face& aF,
const gp_Cylinder& aCyl)
{
Standard_Integer i, aNbV, aNbE, aNbCE, aNbSE;
Standard_Real aT0, aT1, aHeight;
gp_Pnt aPC[3], aPc;
TopoDS_Edge aE;
TopExp_Explorer aExp;
TopTools_MapOfShape aM;
GEOMAlgo_KindOfShape aKS;
GEOMAlgo_KindOfName aKN, aKNE;
GEOMAlgo_KindOfClosed aKCE;
//
GEOMAlgo_ShapeInfo& aInfo=myMapInfo.ChangeFromKey(aF);
aKN=GEOMAlgo_KN_UNKNOWN;
aInfo.SetKindOfName(aKN);
//
aKS=aInfo.KindOfShape();
if (aKS!=GEOMAlgo_KS_CYLINDER) {
return;
}
//
if (aInfo.KindOfBounds()==GEOMAlgo_KB_INFINITE) {
return;
}
//
aNbV=aInfo.NbSubShapes(TopAbs_VERTEX);
aNbE=aInfo.NbSubShapes(TopAbs_EDGE);
if (!(aNbV==2 && aNbE==3)) {
return;
}
//
i=0;
aNbCE=0;
aNbSE=0;
aExp.Init(aF, TopAbs_EDGE);
for (; aExp.More(); aExp.Next()) {
aE=TopoDS::Edge(aExp.Current());
if(aM.Add(aE)) {
const GEOMAlgo_ShapeInfo& aInfoE=myMapInfo.FindFromKey(aE);
aKNE=aInfoE.KindOfName();
aKCE=aInfoE.KindOfClosed();
if (aKNE==GEOMAlgo_KN_CIRCLE && aKCE==GEOMAlgo_KC_CLOSED) {
aPC[aNbCE]=aInfoE.Location();
++aNbCE;
}
else if (aKNE==GEOMAlgo_KN_SEGMENT) {
if (BRep_Tool::IsClosed(aE, aF)) {
++aNbSE;
}
}
}
}
//
if (!(aNbCE==2 && aNbSE==1)) {
return;
}
//
const gp_Ax1& aAx1=aCyl.Axis();
const gp_Dir& aDir=aAx1.Direction();
const gp_Pnt& aPLoc=aAx1.Location();
gp_Lin aLin(aPLoc, aDir);
//
aT0=ElCLib::Parameter(aLin, aPC[0]);
aT1=ElCLib::Parameter(aLin, aPC[1]);
//
aPc=aPC[0];;
if (aT0>aT1) {
aPc=aPC[1];
}
aHeight=aPC[0].Distance(aPC[1]);
//
gp_Ax3 aAx3=aCyl.Position();
aAx3.SetLocation(aPc);
//
aInfo.SetKindOfName(GEOMAlgo_KN_CYLINDER);
aInfo.SetPosition(aAx3);
aInfo.SetLocation(aPc);
aInfo.SetHeight(aHeight);
}
//=======================================================================
//function : FillDetails
//purpose :
//=======================================================================
void GEOMAlgo_ShapeInfoFiller::FillDetails(const TopoDS_Face& aF,
const gp_Torus& )
{
Standard_Integer aNbV, aNbE, aNbSE;
TopoDS_Edge aE;
TopExp_Explorer aExp;
TopTools_MapOfShape aM;
GEOMAlgo_KindOfShape aKS;
//
GEOMAlgo_ShapeInfo& aInfo=myMapInfo.ChangeFromKey(aF);
aInfo.SetKindOfName(GEOMAlgo_KN_UNKNOWN);
//
aKS=aInfo.KindOfShape();
if (aKS!=GEOMAlgo_KS_TORUS) {
return;
}
//
aNbV=aInfo.NbSubShapes(TopAbs_VERTEX);
aNbE=aInfo.NbSubShapes(TopAbs_EDGE);
if (!(aNbV==1 && aNbE==2)) {
return;
}
//
aNbSE=0;
aExp.Init(aF, TopAbs_EDGE);
for (; aExp.More(); aExp.Next()) {
aE=TopoDS::Edge(aExp.Current());
if (aM.Add(aE)) {
//const GEOMAlgo_ShapeInfo& aInfoE=myMapInfo.FindFromKey(aE);
if (BRep_Tool::IsClosed(aE, aF)) {
++aNbSE;
}
}
}
//
if (aNbSE!=2) {
return;
}
aInfo.SetKindOfName(GEOMAlgo_KN_TORUS);
}

View File

@ -115,7 +115,7 @@ static
//=======================================================================
void GEOMAlgo_WESCorrector::DoConnexityBlocks()
{
Standard_Boolean bRegular;
Standard_Boolean bRegular, bClosed;
Standard_Integer i, aNbV, j, aNbC, aNbVP, aNbVS;
TopTools_ListIteratorOfListOfShape aIt;
TopoDS_Iterator aItE;
@ -208,17 +208,17 @@ static
aER=aMEC(j);
//
if (aMER.Contains(aER)) {
Standard_Boolean bClosed;
//
aER.Orientation(TopAbs_FORWARD);
aLEC.Append(aER);
aER.Orientation(TopAbs_REVERSED);
aLEC.Append(aER);
//
bClosed=BRep_Tool::IsClosed(TopoDS::Edge(aER), myWES->Face());
if (!bClosed) {
//modified by NIZNHY-PKV Tue Nov 28 12:02:29 2006f
//bClosed=BRep_Tool::IsClosed(TopoDS::Edge(aER), myWES->Face());
//if (!bClosed) {
bRegular=Standard_False;
}
//}
//modified by NIZNHY-PKV Tue Nov 28 12:02:33 2006t
}
else {
aLEC.Append(aER);
@ -234,11 +234,12 @@ static
//
aNbVR=aMVER.Extent();
for (k=1; k<=aNbVR; ++k) {
const TopTools_ListOfShape& aLER=aMVER(k);//?? it was aMVE(k)
const TopTools_ListOfShape& aLER=aMVER(k);
aNbER=aLER.Extent();
if (aNbER==1) {
const TopoDS_Edge& aEx=TopoDS::Edge(aER);
if (!BRep_Tool::IsClosed(aEx, myWES->Face())) {
bClosed=BRep_Tool::IsClosed(aEx, myWES->Face());
if (!bClosed) {
bRegular=!bRegular;
break;
}

Some files were not shown because too many files have changed in this diff Show More