chamferall.png \
chamferedge.png \
chamferface.png \
+change_orientation.png \
check.png \
circle.png \
circlepointvector.png \
pointonedge.png \
polyline.png \
prism.png \
+prism2.png \
revol.png \
rotate.png \
scale.png \
# common directories to put headerfiles
inc_builddir=$(top_builddir)/include/salome
+MODULE_NAME=@MODULE_NAME@
+
@SET_MAKE@
SHELL=/bin/sh
PACKAGE=salome
AC_SUBST(PACKAGE)
-VERSION=3.2.0
-XVERSION=0x030200
+VERSION=3.2.2
+XVERSION=0x030202
AC_SUBST(VERSION)
AC_SUBST(XVERSION)
+# set up MODULE_NAME variable for dynamic construction of directories (resources, etc.)
+MODULE_NAME=geom
+AC_SUBST(MODULE_NAME)
+
dnl
dnl Initialize source and build root directories
dnl
fi
# make other build directories
-for rep in salome_adm adm_local doc bin/salome include/salome lib${LIB_LOCATION_SUFFIX}/salome share/salome/resources idl
+for rep in salome_adm adm_local doc bin/salome include/salome lib${LIB_LOCATION_SUFFIX}/salome share/salome/resources/${MODULE_NAME} idl
do
# if test ! -d $rep ; then
# eval mkdir $rep
<style type="text/css">
<!--
p.whs1 { font-family:'Lucida Console' , monospace; }
+p.whs2 { font-family:'Times New Roman' , serif; }
-->
</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
<!--
<h3><a name=bookmark4>Multi Transformation</a></h3>
-<p class="whs1">import geompy</p>
+<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
+ geompy</span></p>
<p class="whs1">import salome</p>
+<p class="whs1"> </p>
+
<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-<p> </p>
+<p class="whs1"> </p>
-<p># create vertices</p>
+<p class="whs2"># create vertices</p>
<p class="whs1">p_25_25_50 = geompy.MakeVertex(25.,
25., 50.)</p>
<p class="whs1">p_25_50_25 = geompy.MakeVertex(25.,
50., 25.)</p>
+<p class="whs1"> </p>
+
<p class="whs1">box = geompy.MakeBoxDXDYDZ(50,
50, 50)</p>
+<p class="whs1"> </p>
+
<p class="whs1">top_face = geompy.GetFaceNearPoint(box,
p_25_25_50)</p>
<p class="whs1">xz_face = geompy.GetFaceNearPoint(box,
p_25_50_25)</p>
-<p class="whs1">top_face_ind = geompy.LocalOp.GetSubShapeIndex(box,
+<p class="whs1"> </p>
+
+<p class="whs1">top_face_ind = geompy.GetSubShapeID(box,
top_face)</p>
-<p class="whs1">yz_face_ind = geompy.LocalOp.GetSubShapeIndex(box,
+<p class="whs1">yz_face_ind = geompy.GetSubShapeID(box,
yz_face)</p>
-<p class="whs1">xz_face_ind = geompy.LocalOp.GetSubShapeIndex(box,
+<p class="whs1">xz_face_ind = geompy.GetSubShapeID(box,
xz_face)</p>
-<p> </p>
+<p class="whs1"> </p>
-<p># Multi-transformate block and glue the result</p>
+<p class="whs2"># Multi-transformate
+ block and glue the result</p>
<p class="whs1">box_tr1 = geompy.MakeMultiTransformation1D(box,
yz_face_ind, top_face_ind, 3)</p>
<p class="whs1">box_tr2 = geompy.MakeMultiTransformation2D(box,
xz_face_ind, yz_face_ind, 3, top_face_ind, 0, 2)</p>
-<p> </p>
+<p class="whs1"> </p>
-<p># add objects in the study</p>
+<p class="whs2"># add objects in the
+ study</p>
<p class="whs1">id_box = geompy.addToStudy(box,
"Box")</p>
<p class="whs1">id_box_tr2 = geompy.addToStudy(box_tr2,
"Multi-transformed Block 2D")</p>
-<p> </p>
+<p class="whs1"> </p>
-<p># display the results</p>
+<p class="whs2"># display the results</p>
<p class="whs1">gg.createAndDisplayGO(id_box)</p>
<p class="whs1">gg.createAndDisplayGO(id_box_tr1)</p>
-<p><span style="font-family: 'Lucida Console', monospace;">gg.createAndDisplayGO(id_box_tr2)</span>
+<p class="whs1">gg.createAndDisplayGO(id_box_tr2)
</p>
-<p> </p>
+<p class="whs1"> </p>
<h3><a name=bookmark5>Explode on Blocks</a></h3>
<p class="whs1">import salome</p>
+<p class="whs1"> </p>
+
<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-<p> </p>
+<p class="whs1"> </p>
-<p># create a box and a sphere</p>
+<p class="whs2"># create a box and a
+ sphere</p>
<p class="whs1">box = geompy.MakeBoxDXDYDZ(200,
200, 200)</p>
<p class="whs1"> </p>
-<p># make a compound</p>
+<p class="whs2"># make a compound</p>
<p class="whs1">compound = geompy.MakeCompound([box,
sphere])</p>
-<p> </p>
+<p class="whs2"> </p>
+
+<p class="whs2"># get all the blocks
+ of the given compound, by criteria: min_nb_faces <= nb. of faces <=
+ max_nb_faces</p>
+
+<p class="whs1">min_nb_faces = 6</p>
-<p># get all the blocks, contained in the given compound</p>
+<p class="whs1">max_nb_faces = 6</p>
<p class="whs1">make_block_explode
- = geompy.MakeBlockExplode(compound, 1, 1)</p>
+ = geompy.MakeBlockExplode(compound, min_nb_faces, max_nb_faces)</p>
-<p> </p>
+<p class="whs1"> </p>
-<p># add objects in the study</p>
+<p class="whs2"># add objects in the
+ study</p>
<p class="whs1">id_compound = geompy.addToStudy(compound,
"Compound")</p>
<p class="whs1">id_make_block_explode
- = geompy.addToStudy(make_block_explode[0], "MakeBlockExplode")</p>
+ = geompy.addToStudyInFather(compound, make_block_explode[0], "MakeBlockExplode")</p>
-<p> </p>
+<p class="whs1"> </p>
-<p># display the results</p>
+<p class="whs2"># display the results</p>
<p class="whs1">gg.createAndDisplayGO(id_compound)</p>
<p class="whs1">import salome</p>
-<p> </p>
+<p class="whs1"> </p>
-<p># create a box and a sphere</p>
+<p class="whs2"># create a box</p>
<p class="whs1">box = geompy.MakeBoxDXDYDZ(200,
200, 200)</p>
-<p> </p>
-
-<p># check and improve</p>
-
-<p class="whs1">check_box = geompy.CheckAndImprove(box)</p>
-
-<p> </p>
+<p class="whs1"> </p>
-<p># build all possible propagation groups</p>
+<p class="whs2"># build all possible
+ propagation groups</p>
<p class="whs1">listChains = geompy.Propagate(check_box)</p>
-<p> </p>
+<p class="whs1"> </p>
-<p># add objects in the study</p>
+<p class="whs2"># add objects in the
+ study</p>
<p class="whs1">geompy.addToStudy(check_box,
"Box")</p>
+<p class="whs1">ii = 1</p>
+
<p class="whs1">for chain in listChains:</p>
<p class="whs1"> geompy.addToStudyInFather(check_box,
- chain, "propagation chain")</p>
+ chain, "propagation chain " + `ii`)</p>
-<p><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
+<p class="whs1"> ii
+ = ii + 1</p>
+
+<p class="whs1"> pass</p>
<p> </p>
+<p><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
+ </p>
+
<script type="text/javascript" language="javascript1.2">
<!--
if (window.writeIntopicBar)
<p> </p>
<p>Firstly, you can define a <span style="font-weight: bold;"><B>Box</B></span>
- by two specified <span style="font-weight: bold;"><B>Vertices (</B></span>its
- opposite corners), and with edges, parallel to the coordinate axes. </p>
+ by two specified <span style="font-weight: bold;"><B>Vertices </B></span>(its
+ opposite corners). The edges of the box will be parallel to the coordinate
+ axes.</p>
<p><span style="font-weight: bold;"><B><b style="font-weight: bold;">TUI Command
:</b> </B></span><span style="font-style: italic;"><I>geompy.MakeBoxTwoPnt(Point1,
<style type="text/css">
<!--
p.whs1 { font-family:'Lucida Console' , monospace; }
+p.whs2 { font-family:'Times New Roman' , serif; }
-->
</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
<!--
<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_qface3,1)</span>
</p>
-<p> </p>
-
<h3>Hexagonal Solid</h3>
<p class="whs1">import geompy</p>
<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-<p> </p>
+<p class="whs1"> </p>
-<p># create vertices</p>
+<p class="whs2"># create vertices</p>
-<p class="whs1">p1 = geompy.MakeVertex(
- 0., 0.,
+<p class="whs1">p0 =
+ geompy.MakeVertex( 0.,
+ 0.,
0.)</p>
-<p class="whs1">p2 = geompy.MakeVertex(150.,
- 30., 0.)</p>
+<p class="whs1">p1 =
+ geompy.MakeVertex( 0.,
+ 0.,
+ 40.)</p>
-<p class="whs1">p3 = geompy.MakeVertex(
- 0., 120.,
- 50.)</p>
+<p class="whs1">p2 =
+ geompy.MakeVertex( 70., -15., 0.)</p>
-<p class="whs1">p4 = geompy.MakeVertex(
- 0., 40.,
- 70.)</p>
+<p class="whs1">p3 =
+ geompy.MakeVertex( 70., -15., 70.)</p>
-<p class="whs1">p5 = geompy.MakeVertex(100.,
- 20., 45.)</p>
+<p class="whs1"> </p>
-<p class="whs1">p6 = geompy.MakeVertex(
- 0., 70.,
- 40.)</p>
+<p class="whs1">p4 =
+ geompy.MakeVertex( 0.,
+ 70., 0.)</p>
-<p class="whs1">p7 = geompy.MakeVertex(
- 70., 70., 70.)</p>
+<p class="whs1">p5 =
+ geompy.MakeVertex( 0.,
+ 70., 40.)</p>
-<p class="whs1">p8 = geompy.MakeVertex(
- 70.,-15., 70.)</p>
+<p class="whs1">p6 =
+ geompy.MakeVertex( 70., 70.,
+ 0.)</p>
-<p class="whs1">p9 = geompy.MakeVertex(
- 0., 0.,
- 40.)</p>
+<p class="whs1">p7 =
+ geompy.MakeVertex( 70., 70.,
+ 70.)</p>
+
+<p class="whs1"> </p>
+
+<p class="whs1">p8 =
+ geompy.MakeVertex( 0.,
+ -50., 0.)</p>
+
+<p class="whs1">p9 =
+ geompy.MakeVertex( 0.,
+ -50., 40.)</p>
<p class="whs1">p10 = geompy.MakeVertex(
- 0., 70.,
- 0.)</p>
+ 70., -35., 0.)</p>
<p class="whs1">p11 = geompy.MakeVertex(
- 70., 70., 0.)</p>
+ 70., -35., 70.)</p>
-<p class="whs1">p12 = geompy.MakeVertex(
- 70., -15., 0.)</p>
+<p class="whs1"> </p>
-<p class="whs1">p13 = geompy.MakeVertex(
- 0., 0.,
- 0.)</p>
+<p class="whs2"># create faces</p>
-<p> </p>
+<p class="whs1">qface1 = geompy.MakeQuad4Vertices(p0,
+ p1, p2, p3)</p>
-<p># create faces</p>
+<p class="whs1">qface2 = geompy.MakeQuad4Vertices(p4,
+ p5, p6, p7)</p>
-<p class="whs1">qface1 = geompy.MakeQuad4Vertices(p1,
- p2, p3, p4)</p>
+<p class="whs1">qface3 = geompy.MakeQuad4Vertices(p0,
+ p1, p4, p5)</p>
-<p class="whs1">qface2 = geompy.MakeQuad4Vertices(p1,
- p2, p5, p4)</p>
+<p class="whs1">qface4 = geompy.MakeQuad4Vertices(p2,
+ p3, p6, p7)</p>
-<p class="whs1">qface3 = geompy.MakeQuad4Vertices(p13,
- p12, p11, p10)</p>
+<p class="whs1">qface5 = geompy.MakeQuad4Vertices(p0,
+ p2, p4, p6)</p>
-<p class="whs1">qface4 = geompy.MakeQuad4Vertices(p9,
- p8, p7, p6)</p>
+<p class="whs1">qface6 = geompy.MakeQuad4Vertices(p1,
+ p3, p5, p7)</p>
-<p class="whs1">qface5 = geompy.MakeQuad4Vertices(p13,
- p9, p6, p10)</p>
+<p class="whs1"> </p>
-<p class="whs1">qface6 = geompy.MakeQuad4Vertices(p13,
- p9, p8, p12)</p>
+<p class="whs1">qface7 = geompy.MakeQuad4Vertices(p8,
+ p9, p10, p11)</p>
-<p class="whs1">qface7 = geompy.MakeQuad4Vertices(p12,
- p8, p7, p11)</p>
+<p class="whs1"> </p>
-<p class="whs1">qface8 = geompy.MakeQuad4Vertices(p11,
- p7, p6, p10)</p>
+<p class="whs2"># create a hexahedral
+ solid between two given faces</p>
-<p> </p>
+<p class="whs1">solid1 = geompy.MakeHexa2Faces(qface1,
+ qface7)</p>
-<p># create a hexahedral solid between two given faces</p>
+<p class="whs1"> </p>
-<p class="whs1">solid1 = geompy.MakeHexa2Faces(qface1,
- qface2)</p>
+<p class="whs2"># create a hexahedral
+ solid, bounded by six given faces</p>
-<p> </p>
+<p class="whs1">solid2 = geompy.MakeHexa(qface1,
+ qface2, qface3, qface4, qface5, qface6)</p>
-<p># create a hexahedral solids, bounded by six given faces</p>
+<p class="whs1"> </p>
-<p class="whs1">solid2 = geompy.MakeHexa(qface3,
- qface4, qface5, qface6, qface7, qface8)</p>
+<p class="whs2"># add objects in the
+ study</p>
-<p> </p>
+<p class="whs1">geompy.addToStudy(qface1,"qface1")</p>
-<p># add objects in the study</p>
+<p class="whs1">geompy.addToStudy(qface2,"qface2")</p>
+
+<p class="whs1">geompy.addToStudy(qface3,"qface3")</p>
+
+<p class="whs1">geompy.addToStudy(qface4,"qface4")</p>
+
+<p class="whs1">geompy.addToStudy(qface5,"qface5")</p>
+
+<p class="whs1">geompy.addToStudy(qface6,"qface6")</p>
+
+<p class="whs1">geompy.addToStudy(qface7,"qface7")</p>
+
+<p class="whs1"> </p>
<p class="whs1">id_solid1 = geompy.addToStudy(solid1,"Solid1")</p>
<p class="whs1">id_solid2 = geompy.addToStudy(solid2,"Solid2")</p>
-<p> </p>
+<p class="whs1"> </p>
-<p># display solids</p>
+<p class="whs2"># display solids</p>
<p class="whs1">gg.createAndDisplayGO(id_solid1)</p>
-<p class="whs1">gg.setDisplayMode(id_solid1,1)</p>
+<p class="whs1">gg.setDisplayMode(id_solid1,
+ 1)</p>
<p class="whs1">gg.createAndDisplayGO(id_solid2)</p>
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_solid2,1)</span>
- </p>
-
-<p> </p>
+<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_solid2,
+ 1)</span> </p>
<script type="text/javascript" language="javascript1.2">
<!--
--- /dev/null
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Change Orientation</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{ document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:23px; height:24px; }\r
+p.whs2 { font-size:12pt; }\r
+p.whs3 { font-size:12pt; font-weight:bold; }\r
+p.whs4 { font-size:12pt; margin-left:40px; }\r
+img_whs5 { border:none; width:400px; height:315px; float:none; border-style:none; }\r
+table.whs6 { x-cell-content-align:top; border-spacing:0px; width:46.327%; }\r
+col.whs7 { width:52.644%; }\r
+col.whs8 { width:47.356%; }\r
+tr.whs9 { x-cell-content-align:top; }\r
+td.whs10 { width:52.644%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-right-style:none; border-left-style:none; border-top-style:none; }\r
+img_whs11 { border:none; width:138px; height:143px; border-style:none; }\r
+td.whs12 { width:47.356%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-top-style:none; border-right-style:none; }\r
+img_whs13 { border:none; width:139px; height:144px; border-style:none; }\r
+td.whs14 { width:52.644%; padding-right:10px; padding-left:10px; border-right-style:none; border-left-style:none; border-bottom-style:none; }\r
+td.whs15 { width:47.356%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-right-style:none; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+ if (innerWidth != origWidth || innerHeight != origHeight)\r
+ location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+ origWidth = innerWidth;\r
+ origHeight = innerHeight;\r
+ onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+p.WebHelpNavBar { text-align:right; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+ if (window.setRelStartPage)\r
+ {\r
+ addTocInfo("Geometry module\nTransforming geometrical objects\nRepairing Operations\nChange Orientation");\r
+addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");\r
+addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");\r
+\r
+ }\r
+\r
+\r
+ if (window.setRelStartPage)\r
+ {\r
+ setRelStartPage("index.htm");\r
+\r
+ autoSync(1);\r
+ sendSyncInfo();\r
+ sendAveInfoOut();\r
+ }\r
+\r
+}\r
+else\r
+ if (window.gbIE4)\r
+ document.location.reload();\r
+//-->\r
+</script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+ writeIntopicBar(4);\r
+//-->\r
+</script>\r
+<h1><img src="image43.gif" width="23px" height="24px" border="0" class="img_whs1"> Change Orientation</h1>\r
+\r
+<p class="whs2"><b style="font-weight: normal;">T</b>o <span \r
+ style="font-weight: bold;"><B>Change Orientation</B></span> in the Main Menu \r
+ select <span style="font-weight: bold;"><B>Repair - > Change Orientation</B></span>.</p>\r
+\r
+<p class="whs2">This operation reverses the normals of faces \r
+ composing the selected shell. </p>\r
+\r
+<p class="whs2"> </p>\r
+\r
+<p class="whs2"><b style="font-weight: bold;">TUI Command :</b><i><span \r
+ style="font-style: italic;"><I> geompy.ChangeOrientation(shape)</I></span></i></p>\r
+\r
+<p class="whs2"><b style="font-weight: bold;">Arguments: <span \r
+ style="font-weight: normal;">Name + 1 shape (shell) </span></b></p>\r
+\r
+<p class="whs3"><span style="font-weight: normal;">Uncheck</span> \r
+ Create a copy<span style="font-weight: normal;"> checkbox if you don't \r
+ wish to leave the initial object in the project (</span>Result name<span \r
+ style="font-weight: normal;"> field will be locked).</span></p>\r
+\r
+<p class="whs2"> </p>\r
+\r
+<p class="whs4"><img src="pics/changeorientation.png" x-maintain-ratio="TRUE" width="400px" height="315px" border="0" class="img_whs5"></p>\r
+\r
+<p class="whs2"> </p>\r
+\r
+<p class="whs2"><span style="font-weight: bold;"><B>Example:</B></span> \r
+ </p>\r
+\r
+<p class="whs2"> </p>\r
+\r
+<table x-use-null-cells cellspacing="0" width="46.327%" class="whs6">\r
+<col class="whs7">\r
+<col class="whs8">\r
+\r
+<tr valign="top" class="whs9">\r
+<td width="52.644%" class="whs10">\r
+<p><img src="image38.gif" width="138px" height="143px" border="0" class="img_whs11"></td>\r
+<td width="47.356%" class="whs12">\r
+<p><img src="image40.gif" width="139px" height="144px" border="0" class="img_whs13"></td></tr>\r
+\r
+<tr valign="top" class="whs9">\r
+<td width="52.644%" class="whs14">\r
+<p>Inward orientation. </td>\r
+<td width="47.356%" class="whs15">\r
+<p>Outward orientation</td></tr>\r
+</table>\r
+\r
+<p class="whs2"> </p>\r
+\r
+<p class="whs2"> </p>\r
+\r
+<p class="whs2"> </p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+ writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
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:350px; float:none; border-style:none; }
+img_whs4 { border:none; width:400px; height:350px; float:none; border-style:none; }
p.whs5 { font-size:12pt; font-weight:bold; }
-p.whs6 { font-size:12pt; font-style:italic; margin-left:40px; }
-img_whs7 { border:none; float:none; width:300px; height:175px; border-style:none; }
-img_whs8 { border:none; width:350px; height:175px; float:none; border-style:none; }
+p.whs6 { font-size:12pt; margin-left:40px; font-weight:normal; font-style:italic; }
+img_whs7 { border:none; width:400px; height:359px; float:none; border-style:none; }
+p.whs8 { font-size:12pt; font-style:italic; margin-left:40px; }
+img_whs9 { border:none; float:none; width:300px; height:175px; border-style:none; }
+img_whs10 { border:none; width:350px; height:175px; float:none; border-style:none; }
-->
</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
<!--
<p class="whs2"> </p>
-<p class="whs2">To create an Extrusion (Prism) you should define
- the <span style="font-weight: bold;"><B>Base Shape </B></span>(a basis of the
- extrusion)<span style="font-weight: bold;"><B>, </B></span>the <span style="font-weight: bold;"><B>Vector</B></span>
- (a direction of the extrusion) and the <span style="font-weight: bold;"><B>Height</B></span>
+<p>There are 2 algorithms for creation of <span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">an
+ Extrusion (Prism)</font></span>. </p>
+
+<p class="whs2">Firstly, you can define the <span style="font-weight: bold;"><B>Base
+ Shape </B></span>(a basis of the extrusion)<span style="font-weight: bold;"><B>,
+ </B></span>the <span style="font-weight: bold;"><B>Vector</B></span> (a direction
+ of the extrusion) and the <span style="font-weight: bold;"><B>Height</B></span>
of extrusion. </p>
<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
<p> </p>
-<p class="whs3"><img src="pics/extrusion.png" x-maintain-ratio="TRUE" width="312px" height="350px" border="0" class="img_whs4"></p>
+<p class="whs3"><img src="pics/extrusion1.png" x-maintain-ratio="TRUE" width="400px" height="350px" border="0" class="img_whs4"></p>
<p class="whs2"> </p>
-<p class="whs5">NB! <span style="font-weight: normal;">The
- is another way to create an</span> Extrusion, <span style="font-weight: normal;">which
- is currently accessible only via</span> TUI commands.</p>
-
-<p class="whs5"><span style="font-weight: normal;">You
- can define the</span> Extrusion <span style="font-weight: normal;">by
+<p class="whs5"><span style="font-weight: normal;">Secondly,
+ you can define the</span> Extrusion <span style="font-weight: normal;">by
the </span>Base Shape<span style="font-weight: normal;"> and the </span>Start<span
style="font-weight: normal;"> and </span>End Point<span style="font-weight: normal;">
of the </span>Vector<span style="font-weight: normal;"> (in
Command:</b> <span style="font-weight: normal; font-style: italic;"><I>geompy.MakePrism(Base,
Point1, Point2) </I></span></p>
+<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
+ Name + 1 shape (vertex, edge, wire, face or shell) serving as base object
+ + 2 vertices.</p>
+
<p> </p>
-<p class="whs3"> </p>
+<p class="whs6"><img src="pics/extrusion2.png" x-maintain-ratio="TRUE" width="400px" height="359px" border="0" class="img_whs7"></p>
+
+<p class="whs6"> </p>
<p class="whs2"><b style="font-weight: bold;">Examples:</b></p>
<p class="whs2"> </p>
-<p class="whs6">Base Shape Prisms</p>
+<p class="whs8">Base Shape Prisms</p>
-<p class="whs3"><img src="pics/prisms_basessn.png" x-maintain-ratio="TRUE" width="300px" height="175px" border="0" class="img_whs7"> <img src="pics/prismssn.png" x-maintain-ratio="TRUE" width="350px" height="175px" border="0" class="img_whs8"> </p>
+<p class="whs3"><img src="pics/prisms_basessn.png" x-maintain-ratio="TRUE" width="300px" height="175px" border="0" class="img_whs9"> <img src="pics/prismssn.png" x-maintain-ratio="TRUE" width="350px" height="175px" border="0" class="img_whs10"> </p>
<p class="whs2"> </p>
<html>
<head>
-<title>Titre</title>
+<title>Using Boolean Operations</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">
writeIntopicBar(4);
//-->
</script>
-<h1 class="whs1">Using boolean operations</h1>
+<h1 class="whs1">Using Boolean Operations</h1>
<p class="whs2"> </p>
<html>
<head>
-<title>Titre</title>
+<title>Importing and exporting geometrical objects</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">
<html>
<head>
-<title>Titre</title>
+<title>Using Measurement Tools</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">
p.whs17 { font-size:12pt; font-weight:normal; }
img_whs18 { border:none; width:360px; height:290px; float:none; border-style:none; }
img_whs19 { border:none; width:360px; height:405px; float:none; border-style:none; }
-img_whs20 { border:none; width:360px; height:309px; float:none; border-style:none; }
+img_whs20 { border:none; width:360px; height:337px; float:none; border-style:none; }
p.whs21 { font-size:12pt; margin-left:40px; text-indent:-40px; }
img_whs22 { border:none; width:25px; height:23px; border-style:none; }
ul.whs23 { list-style:disc; }
<p class="whs1"> </p>
-<p class="whs1"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b style="font-weight: bold;">Description:</b>
- Returns the coordinates of a point.</font></span></p>
+<p class="whs1"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Returns the
+ coordinates of a point.</font></span></p>
<p class="whs1"> </p>
<p class="whs1"><b style="font-weight: bold;">Result:</b> Point
coordinates (X, Y, Z) in 3D space in the form of Python Tuple.</p>
-<p class="whs1"> </p>
-
<p class="whs1"><span style="font-weight: bold;"><B>TUI command:</B></span>
<span style="font-style: italic;"><I>geompy.PointCoordinates(Point)</I></span>,
where Point is a point whose coordinates are inquired.</p>
<p class="whs9"> </p>
-<p class="whs1"><b style="font-weight: bold;">Description:</b>
- Return the properties (Length, Surface & Volume) of a definite geometrical
- object.</p>
+<p class="whs1">Returns the properties (Length, Surface &
+ Volume) for the selected geometrical object.</p>
<p class="whs1"> </p>
<p class="whs1"><b style="font-weight: bold;">Result:</b> Display
Length, Surface & Volume in the form of Python Tuple.</p>
-<p class="whs1"> </p>
-
<p class="whs1"><span style="font-weight: bold;"><B>TUI command:</B></span>
<span style="font-style: italic;"><I>geompy.BasicProperties(Shape)</I></span>,
where Shape is a shape whose properties are inquired.</p>
<p class="whs9"> </p>
-<p class="whs1"><b style="font-weight: bold;">Description:</b>
- Creates a gravity center of a shape and returns its coordinates.</p>
+<p class="whs1">Calculates and returns the coordinates of the
+ gravity center for the selected geometrical object.</p>
<p class="whs1"> </p>
<p class="whs1"><b style="font-weight: bold;">Result:</b> GEOM_Object
(vertex).</p>
-<p class="whs1"> </p>
-
<p class="whs1"><b style="font-weight: bold;">TUI Command:</b><i>
</i><span style="font-style: italic;"><I>geompy.MakeCDG(Shape)</I></span>, where
Shape is the shape for which a center of gravity is computed.</p>
<p class="whs7"> </p>
-<p class="whs1"><b style="font-weight: bold;">Description:</b>
- Returns the inertia axis of a geometrical object.</p>
+<p class="whs1">Returns the axis of inertia for the selected
+ geometrical object.</p>
<p class="whs1"> </p>
-<p class="whs1"><b style="font-weight: bold;">Result:</b> Display
+<p class="whs1"><b style="font-weight: bold;">Result:</b> Displays
the matrix and moments of inertia in the form of Python Tuple (I11, I12,
I13, </p>
<p class="whs7"> </p>
-<p class="whs1"><b style="font-weight: bold;">Description:</b>
- Returns the dimensions of the bounding box of a geometrical object.</p>
+<p class="whs1">Returns the dimensions of the bounding box
+ for the selected geometrical object.</p>
<p class="whs1"> </p>
the dimensions of the bounding box of a geometrical object in the form
of Python Tuple (Xmin, Xmax, Ymin, Ymax, Zmin, Zmax).</p>
-<p class="whs1"> </p>
-
<p class="whs15">TUI command: <span style="font-weight: normal; font-style: italic;"><I>geompy.BoundingBox(Shape)</I></span><span
style="font-weight: normal;">, where Shape is a shape for which a bounding
box is computed.</span></p>
<p class="whs7"> </p>
-<p class="whs1"><b style="font-weight: bold;">Description:</b>
- Returns the min. distance between 2 geometrical objects.</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1"><b style="font-weight: bold;">Result:</b> Displays
- the min. distance.</p>
+<p class="whs1">Returns the minimum distance between two geometrical
+ objects.</p>
<p class="whs1"> </p>
<p class="whs9"> </p>
-<p class="whs1"><b style="font-weight: bold;">Description:</b>
- Returns the tolerance of a geometrical object.</p>
+<p class="whs1">Returns the maximum and the minimum tolerance
+ for the selected geometrical object.</p>
<p class="whs1"> </p>
the tolerance values (FaceMinTol, FaceMaxTol, EgdeMinTol, EgdeMaxTol,
VertexMinTol, VertexMaxTol).</p>
-<p class="whs1"> </p>
-
<p class="whs15">TUI command: <span style="font-weight: normal; font-style: italic;"><I>geompy.Tolerance(Shape)</I></span><span
style="font-weight: normal;">, where Shape is a shape for which minimal
and maximal tolerances are returned.</span></p>
<p class="whs9"> </p>
-<p class="whs1"><b style="font-weight: bold;">Description:</b>
- Returns the type of a geometrical object.</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1"><b style="font-weight: bold;">Result:</b> Displays
- all elements composing your geometrical object.</p>
+<p class="whs1">Displays types and quantities of all elements
+ composing the selected geometrical object.</p>
<p class="whs1"> </p>
<p class="whs7"> </p>
-<p class="whs1"><b style="font-weight: bold;">Description:</b>
- Returns True if this geometrical object is valid.</p>
+<p class="whs1">Checks the topology of the selected geometrical
+ object and returns True if it is valid. <span style="font-weight: bold;"><B>Check
+ also geometry</B></span> checkbox allows to test the geometry as well. </p>
<p class="whs1"> </p>
<p class="whs1"><b style="font-weight: bold;">Result:</b> Boolean.</p>
-<p class="whs1"> </p>
-
<p class="whs1"><b style="font-weight: bold;">TUI Command:</b><i>
- </i><span style="font-style: italic;"><I>geompy.CheckShape(Shape)</I></span>,
- where is shape which is checked for validity.</p>
+ </i><span style="font-style: italic;"><I>geompy.(theShape, theIsCheckGeom
+ = 0)</I></span>, where is shape which is checked for validity.</p>
<p class="whs1"> </p>
-<p class="whs11"><img src="../pics/measures9.png" x-maintain-ratio="TRUE" width="360px" height="309px" border="0" class="img_whs20"></p>
-
-<p class="whs11"> </p>
+<p class="whs11"><img src="../pics/measures9.png" x-maintain-ratio="TRUE" width="360px" height="337px" border="0" class="img_whs20"></p>
<p class="whs21"> </p>
<p class="whs21"> </p>
-<p class="whs1"><b style="font-weight: bold;">Description:</b>
- Checks whether a shape is a compound of glued blocks. To be considered
- as a compound of blocks, the given shape must satisfy the following conditions:</p>
+<p class="whs1">Checks whether a shape is a compound of glued
+ blocks. To be considered as a compound of blocks, the given shape must
+ satisfy the following conditions:</p>
<ul type="disc" class="whs23">
<p class="whs1"><b style="font-weight: bold;">Result:</b> Boolean;
highlight in the viewer.</p>
-<p class="whs1"> </p>
-
<p class="whs1"><b style="font-weight: bold;">TUI Command:</b><i>
</i><span style="font-style: italic;"><I>geompy.CheckCompoundOfBlocks(Compound).
</I></span>Checks if the<span style="font-style: italic;"> <I></I></span>shape is
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:367px; float:none; border-style:none; }
+img_whs4 { border:none; width:400px; height:367px; border-style:none; float:none; }
img_whs5 { border:none; float:none; width:260px; height:230px; border-style:none; }
-->
</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
//-->
</script>
<h1><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image58.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span>Filling
- Surface with Curves</h1>
+ Surface with Edges</h1>
<p><b><span style="font-weight: normal;">T</b>o</span> <span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">generate
a </font></span><span style="font-size: 12pt; font-weight: bold;"><font size=3 style="font-size:12pt;"><B>Filling</B></font></span><span
<p class="whs2"> </p>
-<p class="whs2">To create a curving face using several curves
- you need to define the <span style="font-weight: bold;"><B>Curves</B></span>,
- which will be the components of your face, <span style="font-weight: bold;"><B>Minimum</B></span>
+<p class="whs2">To create a curving face using several edges
+ you need to define the <span style="font-weight: bold;"><B>Edges Compound,</B></span>
+ <span style="font-weight: bold;"><B>Minimum</B></span>
and <span style="font-weight: bold;"><B>Maximum Degree</B></span>, <span style="font-weight: bold;"><B>Tolerance
</B></span>for<span style="font-weight: bold;"><B> 2D</B></span> and for <span style="font-weight: bold;"><B>3D
</B></span> and
<p class="whs2"> </p>
-<p class="whs3"><img src="pics/filling.png" x-maintain-ratio="TRUE" width="312px" height="367px" border="0" class="img_whs4"></p>
+<p class="whs3"><img src="pics/filling.png" x-maintain-ratio="TRUE" width="400px" height="367px" border="0" class="img_whs4"></p>
<p class="whs2"> </p>
box.htm
building_by_blocks.htm
chamfer.htm
+change_orientation.htm
changing_display_parameters.htm
check_free_boundaries.htm
check_free_faces.htm
files\salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image87.gif
files\salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image76.gif
files\salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image31.gif
+image38.gif
pics\multi_transformationsn1d.png
pics\fillingsn.png
pics\spheres.png
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\changeorientation.png
+pics\pipesn.png
+pics\pipe_wire_edgesn.png
image2.gif
pics\chamfer_faces.png
pics\fillet_prism.png
pics\rotationsn1.png
pics\disp_mode1sn.png
-pics\pipesn.png
-pics\pipe_wire_edgesn.png
pics\cones.png
pics\planes1.png
pics\lines.png
pics\circle1.png
image3.gif
files\salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image56.gif
+pics\extrusion1.png
image4.gif
pics\isos_u12_v12sn.png
pics\free_boudaries1.png
pics\point3.png
image185.jpg
files\salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image57.gif
+pics\extrusion2.png
image5.gif
pics\free_boudaries2.png
pics\multi_rotation2d1.png
image154.jpg
image110.jpg
files\salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image59.gif
+image40.gif
pics\scale_transformsn2.png
pics\translationsn1.png
pics\facesn1.png
files\salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image101.gif
files\salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image1.gif
salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image14.gif
+image43.gif
pics\image95.gif
pics\mirror_planesn2.png
pics\neo-scetcher2.png
pics\transformation2.png
pics\mtransf1.png
pics\editgroup.png
-pics\extrusion.png
pics\box2.png
image44.gif
files\salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image103.gif
whgdata\whlstf11.htm
whgdata\whlstf12.htm
whgdata\whlstf13.htm
+whgdata\whlstf14.htm
whgdata\whlstg0.htm
index.htm
index_csh.htm
<h3><a name=bookmark4>Creation of a Compound</a></h3>
-<p class="whs1">import geompy</p>
+<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
+ geompy</span></p>
<p class="whs1">import salome</p>
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
<p class="whs1"> </p>
-<p class="whs2">#create vertices</p>
-
-<p class="whs1">p0 = geompy.MakeVertex(
- 0., 0.,
- 0.)</p>
-
-<p class="whs1">pz = geompy.MakeVertex(
- 0., 0.,
- 40.)</p>
+<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
<p class="whs1"> </p>
-<p class="whs2"># create sketchers</p>
+<p class="whs2"># create a vertex and
+ a vector</p>
-<p class="whs1">sketcher = geompy.MakeSketcher("Sketcher:F
- -50 -50:TT 100 -50:R 0:C 50 70:R 0:L 100:WW")</p>
+<p class="whs1">p1 = geompy.MakeVertex(
+ -30., -30.,
+ 50.)</p>
-<p class="whs1"> </p>
+<p class="whs1">p2 = geompy.MakeVertex(
+ -60., -60.,
+ 30.)</p>
-<p class="whs2"># create faces from two
- wires</p>
-
-<p class="whs1">face = geompy.MakeFace(sketcher,1)</p>
+<p class="whs1">p3 = geompy.MakeVertex(
+ -30., -30.,
+ 10.)</p>
<p class="whs1"> </p>
-<p class="whs2"># create a prism</p>
-
-<p class="whs1">prism = geompy.MakePrism(face,
- p0, pz)</p>
-
-<p class="whs1"> </p>
+<p class="whs2"># create an arc from
+ three points</p>
-<p class="whs2"># explode the prism into
- faces</p>
+<p class="whs1">arc = geompy.MakeArc(p1,
+ p2, p3)</p>
-<p class="whs1">prism_faces = geompy.SubShapeAllSorted(prism,
- geompy.ShapeType["FACE"])</p>
+<p class="whs1">ShapeListCompound
+ = []</p>
-<p class="whs1"> </p>
+<p class="whs1">i = 0</p>
-<p class="whs2"># create a shell from
- a set of faces</p>
+<p class="whs1">while i <= 3 :</p>
-<p class="whs1">shell = geompy.MakeShell([prism_faces[0],
- prism_faces[1],</p>
+<p class="whs1"> S
+ = geompy.MakeTranslation(arc, i * 50., 0., 0.)</p>
-<p class="whs1"> prism_faces[3],
- prism_faces[4],</p>
+<p class="whs1"> ShapeListCompound.append(S)</p>
-<p class="whs1"> prism_faces[5],
- prism_faces[2]])</p>
+<p class="whs1"> i
+ = i + 1</p>
<p class="whs1"> </p>
-<p class="whs2"># create a solid, bounded
- by the given shells</p>
+<p class="whs2"># create a compund of
+ the given shapes</p>
-<p class="whs1">solid = geompy.MakeSolid([shell])</p>
+<p class="whs1">compound = geompy.MakeCompound(ShapeListCompound)</p>
<p class="whs1"> </p>
-<p class="whs2"># add objects in the
- study</p>
+<p class="whs2"># add object in the study</p>
-<p class="whs1">id_solid = geompy.addToStudy(solid,"Solid")</p>
+<p class="whs1">id_compound = geompy.addToStudy(compound,"Compound")</p>
<p class="whs1"> </p>
-<p class="whs2"># display the solid</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_solid)</p>
+<p class="whs2"># display the compound</p>
-<p class="whs1">gg.setDisplayMode(id_solid,1)
+<p class="whs1">gg.createAndDisplayGO(id_compound)
</p>
<script type="text/javascript" language="javascript1.2">
<p class="whs5"> </p>
<p class="whs6">Secondly, you can simply
- select a point in the object browser or 3D viewer, in this case the coordinates
- of origin are automatically filled in with the coordinates of the selected
- point and X and Y axes direction will be parallel to the X and Y direction
- of the Global CS. </p>
+ select any object in the object browser or 3D viewer, in this case the
+ coordinates of origin and axes direction of the LCS are calculated automatically
+ basing on the selected object. </p>
<p class="whs6"><b style="font-weight: bold;">Arguments:
</b>Name + reference object.</p>
<p class="whs2"> </p>
-<p class="whs2">The last algorithm also presumes that you select
- a point in the object browser or 3D viewer, but in this case you define
- X and Y axes direction yourselves. </p>
+<p class="whs2">The last algorithm of LCS construction allows
+ to define the coordinates of origin by a point and axes directions by
+ a line or a vector. </p>
<p class="whs8"><b style="font-weight: bold;">Arguments:</b>
<span style="font-weight: normal;">Name + 1 point of origin + X axis direction,
<h3>Point Coordinates</h3>
+<p class="whs1">import math</p>
+
<p class="whs1">import geompy</p>
-<p> </p>
+<p class="whs1"> </p>
-<p># create a point</p>
+<p class="whs2"># create a point</p>
-<p class="whs1">point = geompy.MakeVertex(15,
- 23, 80)</p>
+<p class="whs1">point = geompy.MakeVertex(15.,
+ 23., 80.)</p>
-<p> </p>
+<p class="whs1"> </p>
-<p># get the coordinates of the point and check its values</p>
+<p class="whs2"># get the coordinates
+ of the point and check its values</p>
<p class="whs1">coords = geompy.PointCoordinates(point)</p>
-<p class="whs1">if coords[0] != 15
- or coords[1] != 23 or coords[2] != 80 :</p>
+<p class="whs1"> </p>
+
+<p class="whs2"># check the obtained
+ coordinate values </p>
+
+<p class="whs1">tolerance = 1.e-07</p>
+
+<p class="whs1">def IsEqual(val1,
+ val2): return (math.fabs(val1 - val2) < tolerance)</p>
+
+<p class="whs1"> </p>
+
+<p class="whs1">if IsEqual(coords[0],
+ 15.) and IsEqual(coords[1], 23.) and IsEqual(coords[2], 80.):</p>
<p class="whs1"> print
- "Coordinates of point must be (15, 23, 80), but returned (",
- coords[0], ", ", coords[1], ", ", coords[2], ")"</p>
+ "All values are OK."</p>
<p class="whs1">else :</p>
-<p><span style="font-family: 'Lucida Console', monospace;"> print
- "All values are OK."</span> </p>
+<p class="whs1"> print
+ "Coordinates of point must be (15, 23, 80), but returned (",</p>
+
+<p class="whs1"> print
+ coords[0], ", ", coords[1], ", ", coords[2], ")"</p>
+
+<p><span style="font-family: 'Lucida Console', monospace;"> pass</span>
+ </p>
<h3>Basic Properties</h3>
a </font></span><span style="font-size: 12pt; font-weight: bold;"><font size=3 style="font-size:12pt;"><B>Pipe</B></font></span>
in the <span style="font-weight: bold;"><B>Main Menu</B></span> select <span
style="font-weight: bold;"><B>New Entity - > Generation -
- > Pipe</B></span></p>
+ > Extrusion along a path</B></span></p>
<p> </p>
img_whs4 { border:none; width:312px; height:346px; float:none; border-style:none; }
p.whs5 { font-size:12pt; font-weight:bold; }
img_whs6 { border:none; width:312px; height:385px; float:none; border-style:none; }
-p.whs7 { margin-left:40px; }
+img_whs7 { border:none; width:400px; height:315px; float:none; }
table.whs8 { x-cell-content-align:top; width:72.604%; border-spacing:0px; }
col.whs9 { width:32.089%; }
col.whs10 { width:32.008%; }
<p> </p>
<p>There are three algorithms to <span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">create
- a point in the 3D space.</font></span></p>
+ a plane in the 3D space.</font></span></p>
<p><b style="font-weight: bold;"><span style="font-weight: normal;">The</span><span
style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> Result </font></span><span style="font-weight: normal;">of
<p class="whs2">Secondly, you can define a <span style="font-weight: bold;"><B>Plane</B></span>
by three <span style="font-weight: bold;"><B>Points </B></span>through which
the plane
- passes.</p>
+ passes and a <span style="font-weight: bold;"><B>Size of the Plane</B></span>.</p>
<p class="whs5"><b style="font-weight: bold;">TUI
Command:</b> <span style="font-weight: normal; font-style: italic;"><I>geompy.MakePlaneThreePnt(Point1,
<p class="whs2"> </p>
-<p class="whs2">Finally, you can define a <span style="font-weight: bold;"><B>Plane</B></span>,
- similar to the existing one, but with another size of representing face.
- </p>
+<p class="whs2">Finally, you can define a <span style="font-weight: bold;"><B>Plane
+ </B></span>by another <span style="font-weight: bold;"><B>Plane</B></span> or <span
+ style="font-weight: bold;"><B>Local Coordinate System</B></span> and a <span
+ style="font-weight: bold;"><B>Size of the Plane</B></span>. </p>
<p class="whs2"><span style="font-weight: bold;"><B><b style="font-weight: bold;">TUI
Command:</b> </B></span>geompy.MakePlaneFace(Face, TrimSize) </p>
-<p class="whs2"><b style="font-weight: bold;">Arguments: </b>Name
- + 1 face + 1 value (to define the size of the plane).</p>
+<p class="whs2"><b>Arguments: </b>Name + 1 face + 1 value (to
+ define the size of the plane).</p>
<p class="whs2"> </p>
-<p class="whs7"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><img src="pics/plane3.png" x-maintain-ratio="TRUE" width="312px" height="385px" border="0" class="img_whs6"></font></span> </p>
+<p class="whs3"><img src="pics/plane3.png" x-maintain-ratio="TRUE" width="400px" height="315px" border="0" class="img_whs7"></p>
<p class="whs2"> </p>
<p class="whs1">import salome</p>
+<p class="whs1"> </p>
+
<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-<p> </p>
+<p class="whs1"> </p>
<p># create a vertex and a vector</p>
-<p class="whs1">p1 = geompy.MakeVertex(35,
- 35, 0)</p>
+<p class="whs1">p1 = geompy.MakeVertex(25,
+ 35, 45)</p>
-<p class="whs1">p2 = geompy.MakeVertex(35,
- 35, 70)</p>
+<p class="whs1">p2 = geompy.MakeVertex(70,
+ 70, 70)</p>
<p class="whs1">v = geompy.MakeVector(p1,
p2)</p>
<p> </p>
-<p># create cones</p>
+<p># create cylinders</p>
-<p class="whs1">cone1 = geompy.MakeCone(p1,
- v, 17, 1, 20)</p>
+<p class="whs1">height = 40</p>
-<p class="whs1">cone2 = geompy.MakeConeR1R2H(30,
- 10, 30)</p>
+<p class="whs1"> </p>
+
+<p class="whs1">radius1 = 15</p>
+
+<p class="whs1">cylinder1 = geompy.MakeCylinder(p1,
+ v, radius1, height)</p>
+
+<p class="whs1"> </p>
+
+<p class="whs1">radius2 = 30</p>
+
+<p class="whs1">cylinder2 = geompy.MakeCylinderRH(radius2,
+ height)</p>
<p class="whs1"> </p>
<p># add objects in the study</p>
-<p class="whs1">id_cone1 = geompy.addToStudy(cone1,"Cone1")</p>
+<p class="whs1">id_cylinder1 = geompy.addToStudy(cylinder1,"Cylinder1")</p>
-<p class="whs1">id_cone2 = geompy.addToStudy(cone2,"Cone2")</p>
+<p class="whs1">id_cylinder2 = geompy.addToStudy(cylinder2,"Cylinder2")</p>
<p> </p>
-<p># display cones</p>
+<p># display the cylinders</p>
-<p class="whs1">gg.createAndDisplayGO(id_cone1)</p>
+<p class="whs1">gg.createAndDisplayGO(id_cylinder1)</p>
-<p class="whs1">gg.setDisplayMode(id_cone1,1)</p>
+<p class="whs1">gg.setDisplayMode(id_cylinder1,1)</p>
-<p class="whs1">gg.createAndDisplayGO(id_cone2)</p>
+<p class="whs1">gg.createAndDisplayGO(id_cylinder2)</p>
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_cone2,1)</span>
+<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_cylinder2,1)</span>
</p>
<p> </p>
</script>
<h1><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image57.gif" width="20px" height="20px" border="0" class="img_whs1"></font></span>Revolution</h1>
-<p><b><span style="font-weight: normal;">T</b>o</span> <span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">create
- an extruded shape by </font></span><span style="font-size: 12pt; font-weight: bold;"><font size=3 style="font-size:12pt;"><B>Revolution</B></font></span>
- in the <span style="font-weight: bold;"><B>Main Menu</B></span> select <span
- style="font-weight: bold;"><B>New Entity - > Generation -
- > Revolution</B></span></p>
+<p><b><span style="font-weight: normal;">T</span></b><b><span style="font-weight: normal;">o</span>
+ <span style="font-weight: normal; font-size: 12pt;"><font size=3 style="font-size:12pt;">create an extruded
+ shape by</font></span><span style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span><span style="font-size: 12pt; font-weight: bold;"><font size=3 style="font-size:12pt;"><B>Revolution</B></font></span><span
+ style="font-weight: normal;"> in the </span><span style="font-weight: bold;"><B>Main
+ Menu</B></span><span style="font-weight: normal;"> select </span><span style="font-weight: bold;"><B>New
+ Entity - > Generation -
+ > Revolution</B></span></b></p>
<p class="whs2"> </p>
<style type="text/css">
<!--
p.whs1 { font-family:'Lucida Console' , monospace; }
+p.whs2 { font-family:'Times New Roman' , serif; }
-->
</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
<!--
<p> </p>
-<p># create an object, symmetrical to the given one relatively the given
+<p># create an object, symmetrical to another object through the given
plane</p>
<p class="whs1">p1 = geompy.MakeVertex(
<p> </p>
-<p># create an object, symmetrical to the given one relatively the given
+<p># create an object, symmetrical to another object through the given
axis</p>
<p class="whs1">p4 = geompy.MakeVertex(
<p> </p>
-<p># create an object, symmetrical to the given one relatively the given
+<p># create an object, symmetrical to another object through the given
point</p>
<p class="whs1">mirror3 = geompy.MakeMirrorByPoint(box,
<p class="whs1">import salome</p>
+<p class="whs1"> </p>
+
<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-<p> </p>
+<p class="whs1"> </p>
-<p># create a box and a sphere</p>
+<p class="whs2"># create a box and a
+ sphere</p>
<p class="whs1">box = geompy.MakeBoxDXDYDZ(200,
200, 200)</p>
-<p> </p>
+<p class="whs1"> </p>
-<p># scale the given object by the factor</p>
+<p class="whs2"># scale the given object
+ by the factor</p>
<p class="whs1">p0 = geompy.MakeVertex(100,
100, 100)</p>
<p class="whs1">scale = geompy.MakeScaleTransform(box,
p0, factor)</p>
-<p> </p>
+<p class="whs1"> </p>
-<p># add objects in the study</p>
+<p class="whs2"># add objects in the
+ study</p>
<p class="whs1">id_box = geompy.addToStudy(box,
"Box")</p>
<p class="whs1">id_scale = geompy.addToStudy(scale,
"Scale")</p>
-<p> </p>
+<p class="whs1"> </p>
-<p># display the results</p>
+<p class="whs2"># display the results</p>
<p class="whs1">gg.createAndDisplayGO(id_box)</p>
<p class="whs1">gg.setDisplayMode(id_box,1)</p>
+<p class="whs1">gg.setTransparency(id_box,0.5)</p>
+
<p class="whs1">gg.createAndDisplayGO(id_scale)</p>
<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_scale,1)</span>
}
//-->
</script>
-</html>
\ No newline at end of file
+</html>
aTE("Box","box.htm");
aTE("Building by Blocks","building_by_blocks.htm");
aTE("Chamfer","chamfer.htm");
+aTE("Change Orientation","change_orientation.htm");
aTE("Changing Display Parameters","changing_display_parameters.htm");
aTE("Check Free Boundaries","check_free_boundaries.htm");
aTE("Check Free Faces","check_free_faces.htm");
aTE("Extrusion","extrusion.htm");
aTE("Face","face.htm");
aTE("Introduction to GEOM","files/introduction_to_geom.htm");
-aTE("Titre","files/salome2_sp3_booleangui_functions.htm");
-aTE("Titre","files/salome2_sp3_geomtoolsgui_functions.htm");
-aTE("Titre","files/salome2_sp3_measuregui_functions.htm");
+aTE("Using Boolean Operations","files/salome2_sp3_booleangui_functions.htm");
+aTE("Importing and exporting geometrical objects","files/salome2_sp3_geomtoolsgui_functions.htm");
+aTE("Using Measurement Tools","files/salome2_sp3_measuregui_functions.htm");
aTE("Fillet","fillet.htm");
aTE("Filling","filling.htm");
aTE("Fuse","fuse.htm");
//-->
</script>
</body>
-</html>
\ No newline at end of file
+</html>
</script>
<script language="javascript">
<!--
-aWE("0",0,3,4,5,6,8,10,17,36,39,43,45,55,56,58,64,67,73,75);
-aWE("00001",58);
-aWE("0001",17);
+aWE("0",0,3,4,5,6,8,11,18,37,40,44,46,56,57,59,65,68,74,76,33);
+aWE("00001",59);
+aWE("0001",18);
aWE("01",4);
-aWE("1",0,2,3,4,5,6,8,9,10,13,14,17,19,22,24,25,26,27,28,33,34,36,38,39,42,43,44,45,46,47,48,52,53,54,55,56,57,58,59,60,61,63,64,66,67,69,71,30,73,74,75,76,81,82);
-aWE("10",3,17,43,56,67,73);
-aWE("100",3,4,5,8,17,36,43,45,58,67,73);
-aWE("1000",3,73);
+aWE("07",44);
+aWE("1",0,2,3,4,5,6,8,9,10,11,14,15,18,20,23,25,26,27,28,29,34,35,37,39,40,43,44,45,46,47,48,49,53,54,55,56,57,58,59,60,61,62,64,65,67,68,70,72,74,75,76,77,31,82,83);
+aWE("10",3,18,37,44,57,68,74);
+aWE("100",3,4,5,18,37,44,46,59,68,74);
+aWE("1000",3,74);
aWE("1000000",4);
-aWE("100x30x100",43);
-aWE("105",43);
-aWE("11",43);
-aWE("12",32);
+aWE("100x30x100",44);
+aWE("105",44);
+aWE("11",44);
+aWE("12",33);
aWE("120",8);
-aWE("130",58);
-aWE("140",58);
-aWE("15",8,17,43,56,67);
-aWE("150",3,8,36,58,67);
-aWE("165",10);
-aWE("17",56);
+aWE("130",59);
+aWE("140",59);
+aWE("15",8,18,44,57,68);
+aWE("150",3,8,37,59,68);
+aWE("165",11);
+aWE("17",57);
aWE("170",3);
-aWE("180",58,64,67);
-aWE("1840",43);
-aWE("1d",5,73);
-aWE("1e",43,58);
-aWE("2",49,5,7,13,16,17,20,21,22,23,26,35,36,39,40,41,43,46,47,48,52,58,62,66,32,30,73,74,76,77,81);
-aWE("20",3,6,8,17,36,56,58,67,73);
-aWE("200",3,4,5,39,43,45,58,73);
-aWE("210",73);
-aWE("218",10);
-aWE("220",73);
-aWE("23",43);
-aWE("25",3,5,6,56,73);
-aWE("250",36,43,58,67);
-aWE("2d",5,34,58,64,30,73);
-aWE("3",1,2,5,7,10,13,17,19,36,39,43,47,54,55,58,66,30,73,74,77);
-aWE("30",3,8,10,17,43,56,58,67,73);
-aWE("300",36,67);
-aWE("300000",43);
-aWE("31",10);
-aWE("32",58);
-aWE("32000",43);
-aWE("35",6,56,58,73);
-aWE("3d",13,20,34,42,50,52,54,55,58,64,70,32,30,77,78,80,82);
-aWE("4",49,36,39,43,47,66,30,73);
-aWE("40",6,8,17,36,56,58,73);
-aWE("41",58);
-aWE("45",8,56,58);
-aWE("5",0,3,10,17,34,36,39,43,55,58,66,67,31,73);
-aWE("50",3,5,8,10,17,36,43,58,67,73,75);
+aWE("180",59,65,68);
+aWE("1840",44);
+aWE("1d",5,74);
+aWE("1e",44,59);
+aWE("2",50,5,7,14,17,18,21,22,23,24,27,28,36,37,40,41,42,44,47,48,49,53,59,63,67,74,75,77,31,78,82);
+aWE("20",3,6,18,37,57,59,68,74);
+aWE("200",3,4,5,40,44,46,59,74);
+aWE("210",74);
+aWE("218",11);
+aWE("220",74);
+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("30",3,8,11,18,37,44,57,59,68,74);
+aWE("300",37,68);
+aWE("300000",44);
+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("4",50,37,40,44,48,67,74,31);
+aWE("40",6,8,18,37,57,59,74);
+aWE("41",59);
+aWE("45",57,59);
+aWE("5",0,3,11,18,35,37,40,32,44,56,59,67,68,74);
+aWE("50",3,5,8,11,18,37,44,59,68,74,76);
aWE("500",4);
-aWE("55",6,56,58);
-aWE("6",49,43,32);
-aWE("60",17,58,73);
-aWE("65",58);
-aWE("7",36,43,58);
-aWE("70",3,8,36,56,58,67,73);
-aWE("8",43);
-aWE("80",43,58,67,73);
-aWE("9",36,43,66);
-aWE("90",64,66);
-aWE("abl",50,66);
-aWE("absolut",66);
-aWE("absolute",75);
-aWE("acces",50,78);
-aWE("accessibl",7,15,27,28,41,69);
+aWE("55",6,57,59);
+aWE("6",50,5,44,33);
+aWE("60",18,37,59,74);
+aWE("65",59);
+aWE("7",37,44,59);
+aWE("70",3,8,37,57,59,68,74);
+aWE("8",44);
+aWE("80",44,59,68,74);
+aWE("9",37,44,67);
+aWE("90",65,67);
+aWE("abl",51,67);
+aWE("absolut",67);
+aWE("absolute",76);
+aWE("acces",51,79);
+aWE("accessibl",7,16,29,42,70);
aWE("accord",0);
-aWE("accordanc",0,14);
-aWE("ad",14,39,31,82);
-aWE("add",0,3,4,5,6,8,17,36,39,56,58,67,73,82);
-aWE("addobject",39,82);
-aWE("addtostudy",3,4,5,6,8,10,17,36,39,56,58,67,73);
-aWE("addtostudyinfath",5,58);
-aWE("advanc",7,18,23,27,28,36,65,68,69,79);
-aWE("algorithm",7,13,19,20,22,42,45,52,54,55,66,69,76,77,81);
-aWE("all_fac",58);
-aWE("allow",49,9,25,44,45,46,50,60,63,64,66,71,74,78);
-aWE("along",7,9,45,48,51,53,73,74);
-aWE("alongsid",30);
-aWE("already",39);
-aWE("although",45);
-aWE("angl",46,58,59,60,64,66,73);
-aWE("anoth",21,27,41,54,55,69);
-aWE("any",2,52,60,64,74);
-aWE("ap",42,73,82);
-aWE("appear",78,82);
-aWE("append",17,73);
-aWE("appli",9,64);
-aWE("applicabl",51);
-aWE("apply",64,78);
-aWE("approximation",64);
-aWE("arc",1,3,17,36,58,66,67,73);
-aWE("arc1",17);
-aWE("arc2",17);
+aWE("accordanc",0,15);
+aWE("ad",15,40,32,83);
+aWE("add",0,3,4,5,6,8,18,37,40,57,59,68,74,83);
+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("all_fac",59);
+aWE("allow",50,9,26,45,46,47,51,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("ap",43,74,83);
+aWE("appear",79,83);
+aWE("append",18,37,74);
+aWE("appli",9,65);
+aWE("applicabl",52);
+aWE("apply",65,79);
+aWE("approximation",65);
+aWE("arc",1,3,18,37,59,67,68,74);
+aWE("arc1",18);
+aWE("arc2",18);
aWE("archimed",2,4);
-aWE("area",43,50);
-aWE("argument",0,1,2,49,7,9,13,14,16,18,19,20,21,22,23,24,25,26,27,28,33,34,35,38,40,41,42,44,45,46,47,48,51,52,53,54,55,57,59,60,61,62,63,65,66,68,69,70,71,72,30,74,76,77,79,81,82);
-aWE("around",46,59,73);
-aWE("automatical",49,42,78);
-aWE("availabl",0,49,14,50,66,70,71,72,31,82);
-aWE("ax",7,42,50,74);
-aWE("axi",17,19,22,42,44,45,46,48,59,60,32,73);
-aWE("b",3,20,64);
-aWE("background",78);
-aWE("bas",19,22,27,46,50,53,58,59,61,64,74,76);
-aWE("baseshap",53);
-aWE("basi",27,50);
-aWE("basic",1,2,3,4,13,20,24,37,29,41,42,43,52,54,55,66,32,77,81);
-aWE("basicproperti",43,32);
-aWE("bb",43);
-aWE("be",23);
-aWE("befor",58,64,66);
-aWE("begin",58);
+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("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("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);
+aWE("basicproperti",44,33);
+aWE("bb",44);
+aWE("be",24);
+aWE("befor",59,65,67);
+aWE("begin",59);
aWE("belong",9);
-aWE("below",49);
-aWE("besi",20);
-aWE("bezi",3,20,64);
-aWE("black",78);
-aWE("block",49,5,8,26,37,29,43,47,57,32);
-aWE("bmp",50,78);
-aWE("boolean",6,16,21,35,37,29,62,32,30);
-aWE("both",7,19,47,64);
-aWE("boudari",58);
-aWE("bound",8,36,43,32);
-aWE("boundari",11,58,63,71);
-aWE("boundary",11,58,72);
-aWE("boundingbox",43,32);
-aWE("box",4,49,5,7,10,15,21,26,39,43,56,58,64,66,72,32,31,73,75,79,82);
+aWE("below",50);
+aWE("besi",21);
+aWE("bezi",3,21,65);
+aWE("black",79);
+aWE("block",50,5,8,27,38,30,44,48,58,33);
+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("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_tr1",5);
aWE("box_tr2",5);
-aWE("box1",43,56,58);
-aWE("box2",43,56,58);
-aWE("box3",56);
-aWE("bracket",64);
-aWE("break",57);
-aWE("brep",37,29,58,31);
-aWE("brows",42,31,78,79);
-aWE("bsplin",64);
-aWE("bsplinerestriction",64);
-aWE("build",49,5,8,18,23,28,37,29,52,57,65,68,79);
-aWE("button",42,50,63,71,79,82);
-aWE("bypas",49);
-aWE("c",36,64,67);
-aWE("c0",64);
-aWE("c1",64);
-aWE("c2",64);
-aWE("cad",37,29);
-aWE("camera",81);
-aWE("cas",49,42,47,72);
-aWE("cascad",50);
-aWE("catia",31);
-aWE("cent",7,13,19,24,43,45,46,50,66,69,32,76);
-aWE("center",25);
-aWE("centerofscal",61);
-aWE("central",19,22,61,64);
-aWE("certain",64,82);
+aWE("box1",44,57,59);
+aWE("box2",44,57,59);
+aWE("box3",57);
+aWE("bracket",65);
+aWE("break",58);
+aWE("brep",38,32,30,59);
+aWE("brows",32,43,79,80);
+aWE("bsplin",65);
+aWE("bsplinerestriction",65);
+aWE("build",50,5,8,19,24,29,38,30,53,58,66,69,80);
+aWE("button",43,51,54,64,72,80,83);
+aWE("bypas",50);
+aWE("c",37,65,68);
+aWE("c0",65);
+aWE("c1",65);
+aWE("c2",65);
+aWE("cad",38,30);
+aWE("calculat",33);
+aWE("camera",82);
+aWE("cas",50,43,48,73);
+aWE("cascad",51);
+aWE("catia",32);
+aWE("cent",7,14,20,25,44,46,47,51,67,70,77,33);
+aWE("center",26);
+aWE("centerofscal",62);
+aWE("central",20,23,62,65);
+aWE("certain",65,83);
aWE("chain",5);
-aWE("chamf",9,73);
-aWE("chamfer_",73);
-aWE("chamfer_all",73);
-aWE("chamfer_f",73);
-aWE("chamfer_f1",73);
-aWE("chang",10,15,40,75,78,80);
-aWE("check",5,11,12,26,28,43,58,64,72,32);
+aWE("chamf",9,74);
+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("changeorientation",10);
+aWE("check",12,13,27,29,44,59,65,73,33);
aWE("check_box",5);
-aWE("checkandimprov",5);
-aWE("checkbox",44,45,46,60,71,74);
-aWE("checkcompoundofblock",43,32);
-aWE("checkshap",43,58,32);
-aWE("choic",20);
-aWE("choos",26,42,31);
-aWE("circl",3,13,66);
+aWE("checkbox",10,45,46,47,61,72,75,33);
+aWE("checkcompoundofblock",44,33);
+aWE("checkshap",44,59);
+aWE("choic",21);
+aWE("choos",27,32,43);
+aWE("circl",3,14,67);
aWE("circle1",3);
aWE("circle2",3);
-aWE("click",15,50,31,78,80,82);
-aWE("clip",50);
-aWE("clon",50);
-aWE("clos",11,14,58,64,68,82);
-aWE("closecontour",14,58);
-aWE("closedwir",11,58);
-aWE("closur",14);
-aWE("cm",43);
-aWE("cn",64);
-aWE("coincid",45);
-aWE("coincident",38);
-aWE("coincidental",64);
-aWE("collinear",19,22);
-aWE("color",10,15,78,80);
-aWE("command",0,1,2,49,7,9,11,12,13,14,15,16,18,19,20,22,23,24,25,26,27,28,33,34,35,38,41,42,44,45,46,47,48,51,52,53,54,55,57,59,60,61,62,63,64,65,66,68,69,70,71,72,32,30,74,75,76,77,78,79,80,82);
-aWE("common",6,9,14,16,30,73);
-aWE("complex",17,27,34,37,29,53,59,30);
-aWE("component",3,17,34,66,74);
-aWE("compos",49,32);
-aWE("compound",49,5,16,17,18,21,25,26,35,36,38,43,46,48,51,58,62,32);
-aWE("compsolid",25,27,53,59);
-aWE("comput",2,32);
-aWE("con",19,56,58);
-aWE("concern",32);
-aWE("condition",32);
-aWE("cone1",56);
-aWE("cone2",56);
-aWE("confirm",31,82);
-aWE("conical",64);
-aWE("connect",9,28,65,32,79);
-aWE("connection",32);
-aWE("consequent",73);
-aWE("consider",14,38,32);
-aWE("consol",32);
-aWE("constraint",49);
-aWE("construct",49,68);
-aWE("construction",20,37,29,50,53,30);
-aWE("contain",0,5,12,14,57);
-aWE("content",39,50,31);
-aWE("continuiti",64);
-aWE("continuity",64);
-aWE("continuity2d",64);
-aWE("continuity3d",64);
-aWE("continuou",64);
-aWE("contour",14,58);
-aWE("conversion",64);
-aWE("convert",64);
-aWE("coord",43);
-aWE("coordinat",7,19,22,25,42,43,45,50,55,66,69,32,73,74,76,77,81);
-aWE("copy",44,45,60,74);
-aWE("corn",64);
+aWE("click",16,32,51,54,79,81,83);
+aWE("clip",51);
+aWE("clon",51);
+aWE("clos",12,15,59,65,69,83);
+aWE("closecontour",15,59);
+aWE("closedwir",12,59);
+aWE("closur",15);
+aWE("cm",44);
+aWE("cn",65);
+aWE("coincid",46);
+aWE("coincident",39);
+aWE("coincidental",65);
+aWE("collinear",20,23);
+aWE("color",11,16,79,81);
+aWE("command",0,1,2,50,7,9,10,12,13,14,15,16,17,19,20,21,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("common",6,9,15,17,74,31);
+aWE("complex",18,28,35,38,30,54,60,31);
+aWE("component",3,18,67,75);
+aWE("compos",50,10,33);
+aWE("compound",50,5,17,18,19,22,26,27,35,36,37,39,44,47,49,52,59,63,33);
+aWE("compsolid",26,28,54,60);
+aWE("compund",37);
+aWE("comput",2,33);
+aWE("con",20,57,59);
+aWE("concern",33);
+aWE("condition",33);
+aWE("cone1",57);
+aWE("cone2",57);
+aWE("confirm",32,83);
+aWE("conical",65);
+aWE("connect",9,29,66,33,80);
+aWE("connection",33);
+aWE("consequent",74);
+aWE("consider",15,39,33);
+aWE("consol",33);
+aWE("constraint",50);
+aWE("construct",50,69);
+aWE("construction",21,38,30,51,31);
+aWE("contain",0,13,15,58);
+aWE("content",40,32,51);
+aWE("continuiti",65);
+aWE("continuity",65);
+aWE("continuity2d",65);
+aWE("continuity3d",65);
+aWE("continuou",65);
+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("copy",10,45,46,61,75);
+aWE("corn",65);
aWE("corner",7,8);
-aWE("correct",64);
-aWE("correction",64);
-aWE("correspond",2,11,20,23,26);
-aWE("count",58);
-aWE("coupl",66);
-aWE("cover",30);
-aWE("creat",1,2,3,4,49,5,6,7,8,9,13,14,17,18,19,20,22,23,24,25,27,28,33,34,35,36,39,41,42,43,44,45,46,50,53,54,55,56,58,59,60,61,62,65,66,67,68,69,32,73,74,76,77,78,79,81,82);
-aWE("createanddisplaygo",3,4,5,6,8,10,17,36,39,56,58,67,73);
-aWE("creategroup",39,82);
-aWE("creation",1,3,7,13,14,17,18,19,20,22,23,24,27,28,34,36,37,39,29,41,53,54,55,56,58,59,65,68,69,76,77,79,82);
-aWE("cros",50);
-aWE("cs",42);
-aWE("cs1",73);
-aWE("cs2",73);
-aWE("cub",45);
-aWE("current",7,27,41,50,66,69);
-aWE("curv",3,20,34,64,66);
-aWE("curvatur",64);
-aWE("curve2dmod",64);
-aWE("curve3dmod",64);
-aWE("curvecontinuity",64);
-aWE("cut",6,16,21,52,58,30);
-aWE("cut_without_f_2",58);
-aWE("cylind",6,19,22,56,58,73);
-aWE("cylinder",17);
-aWE("cylindrical",64);
-aWE("d",9,58,64);
-aWE("d1",9,73);
-aWE("d2",9,73);
-aWE("data",32);
-aWE("data_dir",58);
-aWE("default",50,55,66,78,82);
-aWE("defin",1,7,9,13,19,20,22,24,25,26,27,33,34,41,42,46,47,48,50,53,54,55,59,60,61,64,66,69,31,74,76,77,81,82);
-aWE("definit",71,32);
-aWE("definition",53);
+aWE("correct",65);
+aWE("correction",65);
+aWE("correspond",2,12,21,24,27);
+aWE("count",59);
+aWE("coupl",67);
+aWE("cover",31);
+aWE("creat",1,2,3,4,50,5,6,7,8,9,10,14,15,18,19,20,21,23,24,25,26,28,29,34,35,36,37,40,42,43,44,45,46,47,51,54,55,56,57,59,60,61,62,63,66,67,68,69,70,74,75,77,33,78,79,80,82,83);
+aWE("createanddisplaygo",3,4,5,6,8,11,18,37,40,57,59,68,74);
+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("curv",3,21,35,65,67);
+aWE("curvatur",65);
+aWE("curve2dmod",65);
+aWE("curve3dmod",65);
+aWE("curvecontinuity",65);
+aWE("cut",6,17,22,53,59,31);
+aWE("cut_without_f_2",59);
+aWE("cylind",6,20,23,57,59,74);
+aWE("cylinder",18,57);
+aWE("cylinder1",57);
+aWE("cylinder2",57);
+aWE("cylindrical",65);
+aWE("d",9,59,65);
+aWE("d1",9,74);
+aWE("d2",9,74);
+aWE("data",33);
+aWE("data_dir",59);
+aWE("def",44);
+aWE("default",51,56,67,79,83);
+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,61,62,65,67,70,75,77,78,82,83);
+aWE("definit",72);
+aWE("definition",54);
aWE("deflection",2);
-aWE("degenerat",32);
-aWE("degre",34,59,64,66);
-aWE("delet",52,82);
+aWE("degenerat",33);
+aWE("degre",35,60,65,67);
+aWE("delet",53,83);
aWE("density",2);
-aWE("depend",47,64);
-aWE("derivativ",64);
-aWE("descr",43);
-aWE("description",49,43,66,67,32);
-aWE("design",82);
-aWE("destin",37,29);
-aWE("destination",66);
-aWE("detect",11,63,71);
-aWE("detection",64);
-aWE("develop",50);
-aWE("dialog",49,21,64,66,31,75,79,82);
-aWE("differencelist",39);
-aWE("different",44,32);
-aWE("dimension",7,9,22,27,46,32);
-aWE("dir",46,48);
-aWE("dir1",48);
-aWE("dir2",48);
-aWE("direct",42);
-aWE("direction",2,13,19,24,27,42,46,47,48,50,59,60,64,66,76);
-aWE("dirfaceid1",47);
-aWE("dirfaceid1u",47);
-aWE("dirfaceid1v",47);
-aWE("dirfaceid2",47);
-aWE("dirfaceid2u",47);
-aWE("dirfaceid2v",47);
-aWE("display",3,4,5,6,8,10,15,17,36,39,40,50,56,58,63,67,71,32,31,73,75,78,80,82);
-aWE("displayon",78);
-aWE("distanc",38,43,51,64,32);
-aWE("divid",0,58);
-aWE("divideedg",0,58);
-aWE("doesn",39,50);
-aWE("don",7,14,27,48,50,69);
-aWE("doubl",46,47,48,66,75);
-aWE("down",82);
-aWE("downward",50);
-aWE("drag",50);
-aWE("drawn",50);
-aWE("drop",64);
-aWE("dropsmalledg",64);
-aWE("du",64);
-aWE("dump",50,78);
-aWE("duplicat",50);
-aWE("dx",7,43,66,74,77);
-aWE("dy",7,43,66,74,77);
-aWE("dz",7,43,74,77);
-aWE("e",64);
-aWE("e1",49);
-aWE("e2",49);
-aWE("e3",49);
-aWE("e4",49);
-aWE("easi",82);
-aWE("edg",0,1,49,7,8,9,11,13,14,17,20,23,24,25,27,33,34,36,41,43,53,55,57,58,59,64,65,66,32,73,77,79,80);
-aWE("edge_ind",58);
-aWE("edge_point",58);
+aWE("depend",48,65);
+aWE("derivativ",65);
+aWE("descr",44);
+aWE("description",50,44,67,68,33);
+aWE("design",83);
+aWE("destin",38,30);
+aWE("destination",67);
+aWE("detect",12,64,72);
+aWE("detection",65);
+aWE("develop",51);
+aWE("dialog",50,22,32,65,67,76,80,83);
+aWE("differencelist",40);
+aWE("different",45,33);
+aWE("dimension",7,9,23,28,47,33);
+aWE("dir",47,49);
+aWE("dir1",49);
+aWE("dir2",49);
+aWE("direct",43);
+aWE("direction",2,14,20,25,28,43,47,48,49,51,60,61,65,67,77);
+aWE("dirfaceid1",48);
+aWE("dirfaceid1u",48);
+aWE("dirfaceid1v",48);
+aWE("dirfaceid2",48);
+aWE("dirfaceid2u",48);
+aWE("dirfaceid2v",48);
+aWE("display",3,4,5,6,8,11,16,18,37,40,32,41,51,57,59,64,68,72,74,76,33,79,81,83);
+aWE("displayon",79);
+aWE("distanc",39,44,52,65,33);
+aWE("divid",0,59);
+aWE("divideedg",0,59);
+aWE("doesn",40,51);
+aWE("don",7,10,15,28,49,51,70);
+aWE("doubl",47,48,49,67,76);
+aWE("down",83);
+aWE("downward",51);
+aWE("drag",51);
+aWE("drawn",51);
+aWE("drop",65);
+aWE("dropsmalledg",65);
+aWE("du",65);
+aWE("dump",51,79);
+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("e1",50);
+aWE("e2",50);
+aWE("e3",50);
+aWE("e4",50);
+aWE("easi",83);
+aWE("edg",0,1,50,7,8,9,12,14,15,18,21,24,25,26,28,34,35,37,42,44,54,56,58,59,60,65,66,67,74,33,78,80,81);
+aWE("edge_ind",59);
+aWE("edge_point",59);
aWE("edge1",8);
aWE("edge2",8);
aWE("edge3",8);
aWE("edge4",8);
aWE("edgeid",0);
-aWE("edit",82);
-aWE("egdemaxtol",32);
-aWE("egdemintol",32);
-aWE("eith",49,45);
-aWE("element",14,28,66,32,30,78,82);
-aWE("elementary",49);
-aWE("ellips",3,24);
-aWE("els",43,58);
-aWE("empty",71,72);
-aWE("encounter",32);
-aWE("end",1,14,27,45,58,64,66,73,74,77);
-aWE("ent",82);
-aWE("entir",32);
-aWE("entity",1,49,7,13,18,19,20,22,23,24,25,27,28,34,41,42,53,54,55,59,65,66,68,69,76,77,79,81,82);
-aWE("equal",19,64,66);
-aWE("eras",78);
-aWE("eraseall",78);
-aWE("eraseon",78);
-aWE("error",11,39,32);
-aWE("etc",25,64);
-aWE("exampl",0,1,2,49,7,9,11,12,13,14,15,16,18,19,20,21,22,23,24,26,27,28,33,34,35,38,40,41,42,44,45,46,47,48,51,52,53,54,55,57,58,59,60,61,62,63,64,65,66,68,69,70,71,72,31,30,74,75,76,77,79,80,82);
-aWE("except",72);
-aWE("exist",54,66,82);
-aWE("expand",31);
-aWE("explod",5,25,26,36);
-aWE("export",37,29,50,31,78);
-aWE("exportation",31);
-aWE("extend",50);
-aWE("extra",32);
-aWE("extract",26);
-aWE("extrud",53,59);
-aWE("extrusion",27);
-aWE("f",36,67);
-aWE("f_2",58);
-aWE("f_ind_1",73);
-aWE("f_ind_2",73);
-aWE("f1",49);
-aWE("f1_id",58);
-aWE("f2",49);
-aWE("f3",49);
-aWE("f4",49);
-aWE("f5",49);
-aWE("f6",49);
-aWE("fac",3,49,8,9,12,14,17,25,26,27,28,33,34,36,38,39,43,47,51,52,53,54,58,59,64,65,66,67,70,72,32,73,81);
-aWE("face_nam",58);
-aWE("face_rot",58);
-aWE("face1",9,17,36);
-aWE("face2",9,17,36);
-aWE("face3",36);
-aWE("faceid",39);
-aWE("facemaxtol",32);
-aWE("facemintol",32);
-aWE("factor",61,73);
-aWE("fail",43,58);
-aWE("fals",11);
-aWE("fil",15,17,34,42,31,78,80);
-aWE("fill",71);
-aWE("fillet",9,33,73);
-aWE("filletall",73);
-aWE("final",44,45,54,55,74,81,82);
-aWE("first",7,13,19,22,23,42,44,45,47,48,52,54,55,64,67,69,30,74,76,77,81);
-aWE("fit",50);
-aWE("fix",64);
-aWE("fixfacesiz",64);
-aWE("fixshap",58,64);
-aWE("flag",32);
-aWE("flight_solid",58);
-aWE("follow",64,66,67,32,30,75,82);
-aWE("format",37,29,50,31,78);
-aWE("four",49,8,64);
-aWE("fram",50);
-aWE("fre",11,12,58,63,71);
-aWE("function",37,29,50,73);
-aWE("functionaliti",49);
-aWE("functionality",50,66,82);
-aWE("fus",6,10,35,30);
-aWE("fuse_id",10);
-aWE("g1",64);
-aWE("g2",64);
-aWE("gap",14);
-aWE("gc",45);
-aWE("general",49,30);
-aWE("generat",27,34,53);
-aWE("generation",27,34,37,29,53,59);
-aWE("geom",3,4,5,6,8,10,17,36,39,43,56,57,58,67,32,73);
-aWE("geom_object",0,1,2,49,7,9,11,12,13,14,16,18,19,20,21,22,23,24,25,26,27,28,33,34,35,38,41,44,46,47,48,51,52,53,54,55,57,59,60,61,62,63,64,65,66,68,69,70,71,72,32,74,76,77,79,82);
-aWE("geometric",1,49,13,18,20,23,24,27,28,34,41,53,54,55,59,64,65,68,77,78,79);
-aWE("geometrical",3,10,16,36,37,29,46,50,32,31,30,78,80,82);
-aWE("geometry",37,29,50,58,64,31);
-aWE("geompy",0,1,2,3,4,49,5,6,7,8,9,10,11,13,14,16,17,18,19,20,22,23,24,25,26,27,28,33,34,35,36,38,39,41,42,43,44,45,46,47,48,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,32,30,73,74,76,77,79,82);
-aWE("get",5,43,58,32,73);
-aWE("getenv",58);
+aWE("edit",83);
+aWE("egdemaxtol",33);
+aWE("egdemintol",33);
+aWE("eith",50,46);
+aWE("element",15,29,67,31,33,79,83);
+aWE("elementary",50);
+aWE("ellips",3,25);
+aWE("els",44,59);
+aWE("empty",72,73);
+aWE("encounter",33);
+aWE("end",1,15,28,46,59,65,67,74,75,78);
+aWE("ent",83);
+aWE("entir",33);
+aWE("entity",1,50,7,14,19,20,21,23,24,25,26,28,29,35,42,43,54,55,56,60,66,67,69,70,77,78,80,82,83);
+aWE("equal",20,65,67);
+aWE("eras",79);
+aWE("eraseall",79);
+aWE("eraseon",79);
+aWE("error",12,40,33);
+aWE("etc",26,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("expand",32);
+aWE("explod",5,26,27,37);
+aWE("export",38,32,30,51,79);
+aWE("exportation",32);
+aWE("extend",51);
+aWE("extra",33);
+aWE("extract",27);
+aWE("extrud",54,60);
+aWE("extrusion",28,54);
+aWE("f",37,68);
+aWE("f_2",59);
+aWE("f_ind_1",74);
+aWE("f_ind_2",74);
+aWE("f1",50);
+aWE("f1_id",59);
+aWE("f2",50);
+aWE("f3",50);
+aWE("f4",50);
+aWE("f5",50);
+aWE("f6",50);
+aWE("fab",44);
+aWE("fac",2,3,50,5,8,9,10,13,15,18,26,27,28,29,34,35,37,39,40,44,48,52,53,54,55,59,60,65,66,67,68,71,73,74,33,82);
+aWE("face_nam",59);
+aWE("face_rot",59);
+aWE("face1",9,18,37);
+aWE("face2",9,18,37);
+aWE("face3",37);
+aWE("faceid",40);
+aWE("facemaxtol",33);
+aWE("facemintol",33);
+aWE("factor",62,74);
+aWE("fail",44,59);
+aWE("fals",12);
+aWE("field",10);
+aWE("fil",16,18,35,32,43,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("fit",51);
+aWE("fix",65);
+aWE("fixfacesiz",65);
+aWE("fixshap",59,65);
+aWE("flag",33);
+aWE("flight_solid",59);
+aWE("follow",65,67,68,76,31,33,83);
+aWE("format",38,32,30,51,79);
+aWE("four",50,8,65);
+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("fus",6,11,36,31);
+aWE("fuse_id",11);
+aWE("g1",65);
+aWE("g2",65);
+aWE("gap",15);
+aWE("gc",46);
+aWE("general",50,31);
+aWE("generat",28,35,54);
+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("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);
+aWE("getenv",59);
aWE("getfacenearpoint",5);
-aWE("getfreeboundary",11,58);
-aWE("getfreefacesid",12,58);
-aWE("getobjectid",82);
-aWE("getsubshap",58);
-aWE("getsubshapeid",39,58,73);
-aWE("getsubshapeindex",5);
-aWE("gg",3,4,5,6,8,10,15,17,36,39,43,56,58,67,73,75,80);
-aWE("giv",13,24,54,64,31);
-aWE("given",3,5,8,9,12,17,22,25,26,28,33,36,38,41,46,51,55,58,64,67,32,73,76);
-aWE("global",42,45,50);
-aWE("glu",5,38,43,52,58,32);
-aWE("good",50);
-aWE("gravity",25,43,46,32);
-aWE("great",50);
-aWE("group",5,37,39,29,50,57,82);
-aWE("group_n",82);
-aWE("group1",39);
-aWE("handl",82);
-aWE("hav",64,65);
-aWE("height",6,19,22,27,58,73);
-aWE("her",82);
+aWE("getfreeboundary",12,59);
+aWE("getfreefacesid",13,59);
+aWE("getobjectid",83);
+aWE("getsubshap",59);
+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("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("handl",83);
+aWE("hav",65,66);
+aWE("height",6,20,23,28,57,59,74);
+aWE("her",83);
aWE("hexagonal",8);
-aWE("hexahedral",49,8,47);
-aWE("hexahedron",49);
-aWE("hid",50,78);
-aWE("highlight",11,32);
-aWE("hol",58,71);
-aWE("hold",79);
-aWE("how",32);
-aWE("i",17,39,58,64);
-aWE("i11",32);
-aWE("i12",32);
-aWE("i13",32);
-aWE("i21",32);
-aWE("i22",32);
-aWE("i23",32);
-aWE("i31",32);
-aWE("i32",32);
-aWE("i33",32);
-aWE("id",0,12,14,15,25,47,58,70,71,72,73,75,78,80,82);
+aWE("hexahedral",50,8,48);
+aWE("hexahedron",50);
+aWE("hid",51,79);
+aWE("highlight",12,33);
+aWE("hol",59,72);
+aWE("hold",80);
+aWE("how",33);
+aWE("i",18,37,40,59,65);
+aWE("i11",33);
+aWE("i12",33);
+aWE("i13",33);
+aWE("i21",33);
+aWE("i22",33);
+aWE("i23",33);
+aWE("i31",33);
+aWE("i32",33);
+aWE("i33",33);
+aWE("id",0,13,15,16,26,48,59,71,72,73,74,76,79,81,83);
aWE("id_arc",3);
aWE("id_archimed",4);
-aWE("id_axi",73);
+aWE("id_axi",74);
aWE("id_bezi",3);
-aWE("id_box",4,5,58,73);
+aWE("id_box",4,5,59,74);
aWE("id_box_tr1",5);
aWE("id_box_tr2",5);
-aWE("id_box1",56,58);
-aWE("id_box2",56,58);
-aWE("id_box3",56);
-aWE("id_chamfer_",73);
-aWE("id_chamfer_all",73);
-aWE("id_chamfer_f",73);
-aWE("id_chamfer_f1",73);
+aWE("id_box1",57,59);
+aWE("id_box2",57,59);
+aWE("id_box3",57);
+aWE("id_chamfer_",74);
+aWE("id_chamfer_all",74);
+aWE("id_chamfer_f",74);
+aWE("id_chamfer_f1",74);
aWE("id_circle1",3);
aWE("id_circle2",3);
aWE("id_common",6);
-aWE("id_compound",5,17,58);
-aWE("id_cone1",56);
-aWE("id_cone2",56);
-aWE("id_cs1",73);
-aWE("id_cs2",73);
-aWE("id_cut",6,58);
-aWE("id_cut_without_f_2",58);
-aWE("id_cylind",6,73);
-aWE("id_divid",58);
-aWE("id_edg",17,36,58);
+aWE("id_compound",5,18,37,59);
+aWE("id_cone1",57);
+aWE("id_cone2",57);
+aWE("id_cs1",74);
+aWE("id_cs2",74);
+aWE("id_cut",6,59);
+aWE("id_cut_without_f_2",59);
+aWE("id_cylind",6,74);
+aWE("id_cylinder1",57);
+aWE("id_cylinder2",57);
+aWE("id_divid",59);
+aWE("id_edg",18,37,59);
aWE("id_edge1",8);
aWE("id_edge2",8);
aWE("id_edge3",8);
aWE("id_edge4",8);
aWE("id_ellips",3);
-aWE("id_fac",3,58,67);
-aWE("id_face_rot",58);
-aWE("id_face1",17,36);
-aWE("id_face2",17,36);
-aWE("id_face3",36);
-aWE("id_fil",17);
-aWE("id_fillet",73);
-aWE("id_filletall",73);
+aWE("id_fac",3,59,68);
+aWE("id_face_rot",59);
+aWE("id_face1",18,37);
+aWE("id_face2",18,37);
+aWE("id_face3",37);
+aWE("id_fil",18);
+aWE("id_fillet",74);
+aWE("id_filletall",74);
aWE("id_fus",6);
-aWE("id_glu",58);
-aWE("id_group1",39);
-aWE("id_importbrep",58);
+aWE("id_glu",59);
+aWE("id_group1",40);
+aWE("id_importbrep",59);
aWE("id_interpol",3);
aWE("id_line1",3);
aWE("id_line2",3);
aWE("id_make_block_explod",5);
-aWE("id_mirror1",73);
-aWE("id_mirror2",73);
-aWE("id_mirror3",73);
-aWE("id_offset",73);
-aWE("id_p",58);
+aWE("id_mirror1",74);
+aWE("id_mirror2",74);
+aWE("id_mirror3",74);
+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_p100",3);
aWE("id_p2",3,8);
aWE("id_p3",3,8);
-aWE("id_p4",3,8,73);
+aWE("id_p4",3,8,74);
aWE("id_partition1",4);
aWE("id_partition2",4);
aWE("id_partition3",4);
-aWE("id_pip",17);
-aWE("id_plan",4,73);
+aWE("id_pip",18);
+aWE("id_plan",4,74);
aWE("id_plane1",3);
aWE("id_plane2",3);
aWE("id_plane3",3);
aWE("id_polylin",3);
-aWE("id_position",73);
-aWE("id_prism",73);
-aWE("id_prism1",17);
-aWE("id_prism2",17);
+aWE("id_position",74);
+aWE("id_prism",74);
+aWE("id_prism1",18);
+aWE("id_prism2",18);
aWE("id_px",3);
aWE("id_py",3);
aWE("id_pz",3);
aWE("id_qface1",8);
aWE("id_qface2",8);
aWE("id_qface3",8);
-aWE("id_result",58);
-aWE("id_revolution",17);
-aWE("id_rot1d",73);
-aWE("id_rot2d",73);
-aWE("id_rotation",73);
-aWE("id_scal",73);
+aWE("id_result",59);
+aWE("id_revolution",18);
+aWE("id_rot1d",74);
+aWE("id_rot2d",74);
+aWE("id_rotation",74);
+aWE("id_scal",74);
aWE("id_section",6);
-aWE("id_sew",58);
-aWE("id_shap",58);
-aWE("id_shell",36);
-aWE("id_sketcher1",67);
-aWE("id_sketcher2",67);
-aWE("id_solid",36);
+aWE("id_sew",59);
+aWE("id_shap",59);
+aWE("id_shell",37);
+aWE("id_sketcher1",68);
+aWE("id_sketcher2",68);
+aWE("id_solid",37);
aWE("id_solid1",8);
aWE("id_solid2",8);
aWE("id_spher",6);
-aWE("id_sphere1",56);
-aWE("id_sphere2",56);
-aWE("id_sphere3",56);
-aWE("id_torus1",56);
-aWE("id_torus2",56);
-aWE("id_tr1d",73);
-aWE("id_tr2d",73);
-aWE("id_translation1",73);
-aWE("id_translation2",73);
-aWE("id_translation3",73);
+aWE("id_sphere1",57);
+aWE("id_sphere2",57);
+aWE("id_sphere3",57);
+aWE("id_torus1",57);
+aWE("id_torus2",57);
+aWE("id_tr1d",74);
+aWE("id_tr2d",74);
+aWE("id_translation1",74);
+aWE("id_translation2",74);
+aWE("id_translation3",74);
aWE("id_vector",3);
aWE("id_vector1",3);
aWE("id_vector2",3);
-aWE("id_vector3",17);
-aWE("id_vr",73);
+aWE("id_vector3",18);
+aWE("id_vr",74);
aWE("id_vxy",3);
-aWE("id_wir",17,36,58);
-aWE("id_wire_clos",58);
-aWE("idlist",58,73);
-aWE("idlist_",73);
-aWE("idlist_f",73);
-aWE("if",0,11,14,19,28,39,43,50,52,58,64,71,72,32);
-aWE("ig",37,29,31);
-aWE("imag",44,50,73,78);
-aWE("imp",64);
-aWE("implement",31);
-aWE("impli",64);
-aWE("import",3,4,5,6,8,10,17,36,37,39,29,43,56,58,67,32,31,73);
-aWE("importation",31);
-aWE("importbrep",58);
-aWE("importcomponentgui",3,4,5,6,8,10,17,36,39,43,56,58,67,73);
-aWE("impossibl",28);
-aWE("improv",5);
-aWE("in",51,31);
-aWE("includ",39);
-aWE("increas",14);
-aWE("independent",16);
-aWE("index",25,82);
-aWE("indic",9,25,52,58);
-aWE("indicat",48,55);
-aWE("inertia",43,32);
-aWE("inform",32);
-aWE("initial",44,45,46,60,61,74);
-aWE("inquir",32);
-aWE("insert",14);
-aWE("insid",52);
-aWE("instead",19);
-aWE("integ",47);
-aWE("integer",26,47);
-aWE("interactive",26);
-aWE("intermediat",49);
-aWE("internal",58,72);
+aWE("id_wir",18,37,59);
+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("ig",38,32,30);
+aWE("ii",5);
+aWE("imag",45,51,74,79);
+aWE("imp",65);
+aWE("implement",32);
+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);
+aWE("importbrep",59);
+aWE("importcomponentgui",3,4,5,6,8,11,18,37,40,44,57,59,68,74);
+aWE("impossibl",29);
+aWE("in",32,52);
+aWE("includ",40);
+aWE("increas",15);
+aWE("independent",17);
+aWE("index",26,83);
+aWE("indic",9,26,53,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);
+aWE("interactive",27);
+aWE("intermediat",50);
+aWE("internal",59,73);
aWE("interpol",3);
-aWE("interpolat",20);
-aWE("intersect",52);
-aWE("intersection",52);
-aWE("introduction",49,37,29);
-aWE("invalid",43,58,64);
-aWE("invert",50);
-aWE("invisibl",75);
+aWE("interpolat",21);
+aWE("intersect",53);
+aWE("intersection",53);
+aWE("introduction",50,38,30);
+aWE("invalid",44,59,65);
+aWE("invert",51);
+aWE("invisibl",76);
+aWE("inward",10);
aWE("isbyparamet",0);
-aWE("iscommonvertex",14);
-aWE("iso",78);
-aWE("isolin",40,78);
-aWE("isometric",50);
-aWE("isplanarfac",36);
-aWE("isplanarwant",3,17,28,67);
-aWE("issucces",58);
-aWE("isvalid",43,58);
-aWE("iteration",34);
-aWE("itself",14);
-aWE("ix",43,32);
-aWE("iy",43,32);
-aWE("iz",43,32);
-aWE("join",64);
-aWE("jpeg",50,78);
-aWE("jpg",50,78);
-aWE("junction",64);
-aWE("just",49);
-aWE("k",64);
-aWE("keep",44,45,60,74,82);
-aWE("keyboard",82);
-aWE("ko",58);
-aWE("l",36,67);
-aWE("last",23,42);
-aWE("lc",42,45);
-aWE("lcs1",45);
-aWE("lcs2",45);
-aWE("least",20);
-aWE("leav",82);
-aWE("left",45,50,78);
-aWE("len",58);
-aWE("length",0,43,66,32);
-aWE("li",1,13);
-aWE("limit",52);
-aWE("lin",2,3,41,66,82);
+aWE("iscommonvertex",15);
+aWE("isequal",44);
+aWE("iso",79);
+aWE("isolin",41,79);
+aWE("isometric",51);
+aWE("isplanarfac",37);
+aWE("isplanarwant",3,18,29,68);
+aWE("issucces",59);
+aWE("isvalid",44,59);
+aWE("iteration",35);
+aWE("itself",15);
+aWE("ix",44,33);
+aWE("iy",44,33);
+aWE("iz",44,33);
+aWE("join",65);
+aWE("jpeg",51,79);
+aWE("jpg",51,79);
+aWE("junction",65);
+aWE("just",50);
+aWE("k",65);
+aWE("keep",45,46,61,75,83);
+aWE("keyboard",83);
+aWE("ko",59);
+aWE("l",37,68);
+aWE("last",24,43);
+aWE("lc",43,46);
+aWE("lcs1",46);
+aWE("lcs2",46);
+aWE("least",21);
+aWE("leav",10,83);
+aWE("left",46,51,79);
+aWE("len",59);
+aWE("length",0,44,67,33);
+aWE("li",1,14);
+aWE("limit",53);
+aWE("lin",2,3,42,67,83);
aWE("line1",3);
aWE("line2",3);
-aWE("linear",66);
-aWE("list",3,9,11,12,14,18,20,25,28,34,39,52,57,58,63,64,65,66,68,70,71,72,73,79,82);
+aWE("linear",67);
+aWE("list",3,9,12,13,15,19,21,26,29,35,40,53,58,59,64,65,66,67,69,71,72,73,74,80,83);
aWE("listchain",5);
aWE("listoffaceid",9);
-aWE("listofgeomshap",70);
-aWE("listofid",70);
-aWE("listofind",25);
-aWE("listofkeepinsid",52);
-aWE("listofmaterial",52);
-aWE("listofremoveinsid",52);
-aWE("listofshap",18,20,52,63,65,68,79);
-aWE("listoftool",52);
-aWE("listofwireid",71);
-aWE("listshap",33);
-aWE("ll",50);
-aWE("local",42,45,51,66,73);
-aWE("localcs1",45);
-aWE("localcs2",45);
-aWE("localop",5);
-aWE("locat",55);
-aWE("location",42,45,31,73);
-aWE("lock",50);
-aWE("lsc",45);
-aWE("ly",66,72);
-aWE("magnitud",64);
-aWE("main",0,1,2,49,7,9,11,12,13,14,16,18,19,20,21,22,23,24,25,26,27,28,33,34,35,38,41,42,43,44,45,46,47,48,51,52,53,54,55,57,59,60,61,62,63,64,65,66,68,69,70,71,72,32,74,76,77,79,81,82);
-aWE("mainshap",82);
-aWE("major",24,76);
-aWE("mak",5,6,9,43,47,48,52,58,73,74,82);
+aWE("listofgeomshap",71);
+aWE("listofid",71);
+aWE("listofind",26);
+aWE("listofkeepinsid",53);
+aWE("listofmaterial",53);
+aWE("listofremoveinsid",53);
+aWE("listofshap",19,21,53,64,66,69,80);
+aWE("listoftool",53);
+aWE("listofwireid",72);
+aWE("listshap",34);
+aWE("ll",51);
+aWE("local",43,46,52,67,74);
+aWE("localcs1",46);
+aWE("localcs2",46);
+aWE("locat",56);
+aWE("location",32,43,46,74);
+aWE("lock",10,51);
+aWE("lsc",46);
+aWE("ly",67,73);
+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("make_block_explod",5);
-aWE("makearc",1,3,17,36,58,67,73);
-aWE("makebezi",3,20);
-aWE("makeblockexplod",5,26);
-aWE("makeboolean",10,30);
-aWE("makebox",7,10,43,56,58,73);
-aWE("makeboxdxdydz",5,7,43,56,58,73);
-aWE("makeboxtwopnt",4,7,39,56);
-aWE("makecdg",43,32);
-aWE("makechamf",73);
-aWE("makechamferall",9,73);
-aWE("makechamferedg",9,73);
-aWE("makechamferfac",9,73);
-aWE("makecircl",3,13);
-aWE("makecirclethreepnt",3,13);
-aWE("makecommon",6,16);
-aWE("makecompound",5,17,18,43,58);
-aWE("makecon",19,56,58);
-aWE("makeconer1r2h",19,56);
-aWE("makecut",6,58);
-aWE("makecylind",6,22,58,73);
-aWE("makecylinderrh",22);
-aWE("makeedg",8,17,23,36,58);
-aWE("makeellips",3,24);
-aWE("makefac",3,17,28,36,58,67,73);
-aWE("makefacewir",28,36);
-aWE("makefil",17,34);
-aWE("makefillet",33,73);
-aWE("makefilletall",33,73);
-aWE("makefus",6,35);
-aWE("makegluefac",38,43,58);
-aWE("makehalfpartition",4,52);
-aWE("makehexa",49,8);
-aWE("makehexa2fac",49,8);
-aWE("makeinterpol",3,20);
-aWE("makelin",3,41);
-aWE("makelinetwopnt",3,41);
-aWE("makemark",42,73);
-aWE("makemirrorbyaxi",44,73);
-aWE("makemirrorbyplan",44,73);
-aWE("makemirrorbypoint",44,73);
-aWE("makemultirotation1d",46);
-aWE("makemultirotation2d",46);
-aWE("makemultitransformation1d",5,47);
-aWE("makemultitransformation2d",5,47);
-aWE("makemultitranslation1d",48,73);
-aWE("makemultitranslation2d",48,73);
-aWE("makeoffset",51,73);
-aWE("makepartition",4,52);
-aWE("makepip",17,53);
-aWE("makeplan",3,4,54);
-aWE("makeplanefac",3,54);
-aWE("makeplanethreepnt",3,54,73);
-aWE("makepolylin",3,20);
-aWE("makeposition",45,73);
-aWE("makeprism",17,27,36);
-aWE("makeprismvech",17,27,58,73);
-aWE("makequad",49,8);
-aWE("makequad2edg",49,8);
-aWE("makequad4vertic",49,8);
-aWE("makerevolution",17,59);
-aWE("makerotation",58,60,73);
-aWE("makescaletransform",61,73);
-aWE("makesection",6,62);
-aWE("makesew",58,63);
-aWE("makeshell",36,65);
-aWE("makesketch",36,66,67);
-aWE("makesketcheronplan",67);
-aWE("makesolid",36,68);
-aWE("makespher",5,6,10,56,69);
-aWE("makespherepntr",56);
-aWE("maketoru",56,76);
-aWE("maketorusrr",56,76);
-aWE("maketranslation",17,73,74);
-aWE("maketranslationtwopoint",73,74);
-aWE("maketranslationvector",73,74);
-aWE("makevector",3,6,17,36,56,58,67,73,77);
-aWE("makevectordxdydz",3,4,17,77);
-aWE("makevertex",3,4,5,6,8,17,36,39,43,55,56,58,67,73);
-aWE("makevertexoncurv",3,55);
-aWE("makevertexwithref",3,55);
-aWE("makewir",3,17,36,58,67,73,79);
-aWE("manual",82);
-aWE("mark",50);
-aWE("mas",43,32);
-aWE("material",52);
-aWE("math",43,58,73);
-aWE("matrix",43,32);
-aWE("max",26,34,43,64);
-aWE("maxdeg",17);
-aWE("maxdegre",34);
-aWE("maximal",26,64,32);
-aWE("maximum",26,34,38,64);
-aWE("maxnbfac",26);
-aWE("maxtoleranc",64);
-aWE("maxtolerance3d",64);
-aWE("mean",51,55,66,80);
-aWE("measur",32);
-aWE("measurement",43,32);
-aWE("mechanism",31);
-aWE("meet",64);
-aWE("memoris",50);
-aWE("mention",49);
-aWE("menu",0,1,2,49,7,9,11,12,13,14,15,16,18,19,20,21,22,23,24,25,26,27,28,33,34,35,38,40,41,42,44,45,46,47,48,51,52,53,54,55,57,59,60,61,62,63,64,65,66,68,69,70,71,72,32,31,74,76,77,78,79,80,81,82);
-aWE("merg",64);
-aWE("mesh",2,49,50,78);
+aWE("makearc",1,3,18,37,59,68,74);
+aWE("makebezi",3,21);
+aWE("makeblockexplod",5,27);
+aWE("makeboolean",11,31);
+aWE("makebox",7,11,44,57,59,74);
+aWE("makeboxdxdydz",5,7,44,57,59,74);
+aWE("makeboxtwopnt",4,7,40,57);
+aWE("makecdg",44,33);
+aWE("makechamf",74);
+aWE("makechamferall",9,74);
+aWE("makechamferedg",9,74);
+aWE("makechamferfac",9,74);
+aWE("makecircl",3,14);
+aWE("makecirclethreepnt",3,14);
+aWE("makecommon",6,17);
+aWE("makecompound",5,18,19,37,44,59);
+aWE("makecon",20,57,59);
+aWE("makeconer1r2h",20,57);
+aWE("makecut",6,59);
+aWE("makecylind",6,23,57,59,74);
+aWE("makecylinderrh",23,57);
+aWE("makeedg",8,18,24,37,59);
+aWE("makeellips",3,25);
+aWE("makefac",3,18,29,37,59,68,74);
+aWE("makefacewir",29,37);
+aWE("makefil",18,35);
+aWE("makefillet",34,74);
+aWE("makefilletall",34,74);
+aWE("makefus",6,36);
+aWE("makegluefac",39,44,59);
+aWE("makehalfpartition",4,53);
+aWE("makehexa",50,8);
+aWE("makehexa2fac",50,8);
+aWE("makeinterpol",3,21);
+aWE("makelin",3,42);
+aWE("makelinetwopnt",3,42);
+aWE("makemark",43,74);
+aWE("makemirrorbyaxi",45,74);
+aWE("makemirrorbyplan",45,74);
+aWE("makemirrorbypoint",45,74);
+aWE("makemultirotation1d",47);
+aWE("makemultirotation2d",47);
+aWE("makemultitransformation1d",5,48);
+aWE("makemultitransformation2d",5,48);
+aWE("makemultitranslation1d",49,74);
+aWE("makemultitranslation2d",49,74);
+aWE("makeoffset",52,74);
+aWE("makepartition",4,53);
+aWE("makepip",18,54);
+aWE("makeplan",3,4,55);
+aWE("makeplanefac",3,55);
+aWE("makeplanethreepnt",3,55,74);
+aWE("makepolylin",3,21);
+aWE("makeposition",46,74);
+aWE("makeprism",18,28,37);
+aWE("makeprismvech",18,28,59,74);
+aWE("makequad",50,8);
+aWE("makequad2edg",50,8);
+aWE("makequad4vertic",50,8);
+aWE("makerevolution",18,60);
+aWE("makerotation",59,61,74);
+aWE("makescaletransform",62,74);
+aWE("makesection",6,63);
+aWE("makesew",59,64);
+aWE("makeshell",37,66);
+aWE("makesketch",37,67,68);
+aWE("makesketcheronplan",68);
+aWE("makesolid",37,69);
+aWE("makespher",5,6,11,57,70);
+aWE("makespherepntr",57);
+aWE("maketoru",57,77);
+aWE("maketorusrr",57,77);
+aWE("maketranslation",18,37,74,75);
+aWE("maketranslationtwopoint",74,75);
+aWE("maketranslationvector",74,75);
+aWE("makevector",3,6,18,37,57,59,68,74,78);
+aWE("makevectordxdydz",3,4,18,78);
+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("mark",51);
+aWE("mas",44,33);
+aWE("material",53);
+aWE("math",44,59,74);
+aWE("matrix",44,33);
+aWE("max",27,35,44,65);
+aWE("max_nb_fac",5);
+aWE("maxdeg",18);
+aWE("maxdegre",35);
+aWE("maximal",27,65,33);
+aWE("maximum",27,35,39,65,33);
+aWE("maxnbfac",27);
+aWE("maxtoleranc",65);
+aWE("maxtolerance3d",65);
+aWE("mean",52,56,67,81);
+aWE("measur",33);
+aWE("measurement",44,33);
+aWE("mechanism",32);
+aWE("meet",65);
+aWE("memoris",51);
+aWE("mention",50);
+aWE("menu",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,32,41,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,77,33,78,79,80,81,82,83);
+aWE("merg",65);
+aWE("mesh",2,50,51,79);
aWE("meshingdeflection",2,4);
-aWE("method",45);
-aWE("middl",1,55);
-aWE("min",26,34,43,32);
-aWE("min_dist",43);
-aWE("mindeg",17);
-aWE("mindegre",34);
-aWE("mindistanc",43,32);
-aWE("minimal",26,28,43,32);
-aWE("minimum",26,34,64);
-aWE("minnbfac",26);
-aWE("minor",24,76);
-aWE("mirror",44,73);
-aWE("mirror1",73);
-aWE("mirror2",73);
-aWE("mirror3",73);
-aWE("mod",0,10,14,64,78,80);
-aWE("model",2,37,29);
-aWE("modifi",14,45);
-aWE("modify",45,73);
-aWE("modul",37,29,50,31);
-aWE("moment",43,32);
-aWE("mous",50,78);
-aWE("mov",45,48);
-aWE("much",82);
-aWE("multi",5,46,47,48,73);
-aWE("multirotate1d",46,73);
-aWE("multirotate2d",46,73);
-aWE("multitud",57);
-aWE("must",43,46,48,71,32);
-aWE("n",64);
-aWE("nam",0,1,2,49,7,9,13,14,16,18,19,20,21,22,23,24,27,28,33,34,35,38,41,42,44,45,46,47,48,51,52,53,54,55,59,61,62,63,64,65,68,69,70,71,72,31,74,76,77,78,79,81,82);
-aWE("nb",7,27,41,69);
-aWE("nb_sub",25);
-aWE("nbit",17,34);
-aWE("nbound",43);
-aWE("nbox",43);
-aWE("nbsplitpoint",64);
-aWE("nbtim",46,47,48);
-aWE("nbtimes1",46,48);
-aWE("nbtimes2",46,48);
-aWE("nbtimesu",47);
-aWE("nbtimesv",47);
-aWE("ncentr",43);
-aWE("ncompound",43);
-aWE("ne",7,9,25,27,28,33,34,46,48,53,59,60,61,64,69,74);
-aWE("necessari",64);
-aWE("necessary",9,33,64,66,32);
-aWE("need",14);
-aWE("negativ",51);
-aWE("neighbour",64);
-aWE("new",1,49,7,13,14,18,19,20,22,23,24,25,27,28,34,41,42,50,53,54,55,59,65,66,68,69,73,76,77,78,79,81,82);
-aWE("ninertia",43);
-aWE("nminimal",43);
-aWE("nod",20);
-aWE("noerror",11);
-aWE("non",43);
-aWE("normal",3,13,24,51,54,76);
-aWE("not",19);
-aWE("noth",28);
-aWE("notion",49);
-aWE("nth",64);
-aWE("numb",26,34,40,46,47,48,51,58,63,64,71,73,78);
-aWE("number",47);
-aWE("object",1,2,3,4,5,6,8,9,10,13,15,16,17,18,20,23,24,25,27,28,33,34,36,37,39,29,41,42,44,45,46,50,51,53,54,55,56,57,58,59,60,64,65,67,68,72,32,31,30,73,74,77,78,79,80,82);
-aWE("obtain",25,43,45,64);
-aWE("occ",0,9,14,33,50,70,71,72,78,82);
-aWE("occur",11);
-aWE("offset",51,73);
-aWE("ok",42,43,58,82);
-aWE("old",55);
-aWE("on",0,14,21,46,47,48,54,55,58,64,66,73,81);
-aWE("opaqu",75);
-aWE("open",11,14,50,58,31,82);
-aWE("openwir",11,58);
-aWE("operation",0,1,2,4,49,5,6,7,9,11,12,13,14,16,19,20,21,22,24,25,26,27,33,34,35,37,38,29,41,44,45,46,47,48,51,52,53,54,55,57,58,59,60,61,62,63,64,66,69,70,71,72,30,73,74,76,77,82);
-aWE("operator",58,64);
-aWE("opportunity",31);
+aWE("method",46);
+aWE("middl",1,56);
+aWE("min",27,35,44,33);
+aWE("min_dist",44);
+aWE("min_nb_fac",5);
+aWE("mindeg",18);
+aWE("mindegre",35);
+aWE("mindistanc",44,33);
+aWE("minimal",27,29,44,33);
+aWE("minimum",27,35,65,33);
+aWE("minnbfac",27);
+aWE("minor",25,77);
+aWE("mirror",45,74);
+aWE("mirror1",74);
+aWE("mirror2",74);
+aWE("mirror3",74);
+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("moment",44,33);
+aWE("mous",51,79);
+aWE("mov",46,49);
+aWE("much",83);
+aWE("multi",5,47,48,49,74);
+aWE("multirotate1d",47,74);
+aWE("multirotate2d",47,74);
+aWE("multitud",58);
+aWE("must",44,47,49,72,33);
+aWE("n",65);
+aWE("nam",0,1,2,50,7,9,10,14,15,17,19,20,21,22,23,24,25,28,29,34,35,36,39,32,42,43,45,46,47,48,49,52,53,54,55,56,60,62,63,64,65,66,69,70,71,72,73,75,77,78,79,80,82,83);
+aWE("nb",5,7,42,70);
+aWE("nb_sub",26);
+aWE("nbit",18,35);
+aWE("nbound",44);
+aWE("nbox",44);
+aWE("nbsplitpoint",65);
+aWE("nbtim",47,48,49);
+aWE("nbtimes1",47,49);
+aWE("nbtimes2",47,49);
+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("necessari",65);
+aWE("necessary",9,34,65,67,33);
+aWE("need",15);
+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("ninertia",44);
+aWE("nminimal",44);
+aWE("nod",21);
+aWE("noerror",12);
+aWE("non",44);
+aWE("normal",3,10,14,25,52,55,77);
+aWE("not",20);
+aWE("noth",29);
+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("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("opaqu",76);
+aWE("open",12,15,32,51,59,83);
+aWE("openwir",12,59);
+aWE("operation",0,1,2,4,50,5,6,7,9,10,12,13,14,15,17,20,21,22,23,25,26,27,28,34,35,36,38,39,30,42,45,46,47,48,49,52,53,54,55,56,58,59,60,61,62,63,64,65,67,70,71,72,73,74,75,77,31,78,83);
+aWE("operator",59,65);
+aWE("opportunity",32);
aWE("opposit",7);
-aWE("optimization",37,29);
-aWE("option",78,80);
-aWE("ord",64);
-aWE("orient",49);
-aWE("orientat",50);
-aWE("orientation",50);
-aWE("origin",7,19,22,42,50,69,76,77);
-aWE("os",58);
-aWE("otherwis",0,14,44,45,60,74);
-aWE("our",0,1,2,49,7,9,11,12,13,14,15,16,18,19,20,21,22,23,24,26,27,28,33,34,35,38,41,44,45,46,47,48,51,52,53,54,55,57,59,60,61,62,63,64,65,66,68,69,70,71,72,32,30,74,75,76,77,79,80,82);
-aWE("out",50,64);
-aWE("outsid",52);
-aWE("ox",42,66);
-aWE("oy",42);
-aWE("oz",19,22,42,66);
-aWE("p",56);
+aWE("optimization",38,30);
+aWE("option",79,81);
+aWE("ord",65);
+aWE("orient",50);
+aWE("orientat",51);
+aWE("orientation",10,51);
+aWE("origin",7,20,23,43,51,70,77,78);
+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);
+aWE("oz",20,23,43,67);
+aWE("p",57);
aWE("p_25_25_50",5);
aWE("p_25_50_25",5);
aWE("p_50_25_25",5);
aWE("p_on_arc",3);
-aWE("p0",3,4,17,36,39,56,58,73);
-aWE("p1",3,6,8,17,56,58,67,73);
+aWE("p0",3,4,8,18,37,40,57,59,74);
+aWE("p1",3,6,8,18,37,57,59,68,74);
aWE("p10",8);
aWE("p100",3);
aWE("p11",8);
-aWE("p12",8);
-aWE("p13",8);
-aWE("p2",3,6,8,17,56,58,67,73);
-aWE("p200",4,39);
-aWE("p3",3,8,17,58,67,73);
-aWE("p4",3,8,17,73);
-aWE("p5",3,8,17,73);
+aWE("p2",3,6,8,18,37,57,59,68,74);
+aWE("p200",4,40);
+aWE("p3",3,8,18,37,59,68,74);
+aWE("p4",3,8,18,74);
+aWE("p5",3,8,18,74);
aWE("p50",3);
-aWE("p6",8,17);
-aWE("p7",8,17);
-aWE("p70",56);
-aWE("p8",8,17);
+aWE("p6",8,18);
+aWE("p7",8,18);
+aWE("p70",57);
+aWE("p8",8,18);
aWE("p9",8);
-aWE("pan",50);
-aWE("parallel",7,41,42,64);
-aWE("paramet",0,14,55,64);
-aWE("parameter",4,15,34,58,64,66,75,78,80);
-aWE("parameterization",64);
-aWE("parametric",64);
+aWE("pan",51);
+aWE("parallel",7,42,43,65);
+aWE("paramet",0,15,56,65);
+aWE("parameter",4,16,35,59,65,67,76,79,81);
+aWE("parameterization",65);
+aWE("parametric",65);
aWE("paramt",0);
-aWE("part",16,19,50);
-aWE("partition",4,52);
+aWE("part",17,20,51);
+aWE("partition",4,53);
aWE("partition1",4);
aWE("partition2",4);
aWE("partition3",4);
-aWE("pas",20,41,46,54,66);
-aWE("path",17,53);
-aWE("pathshap",53);
-aWE("perform",4,25,52,73);
-aWE("perpendicular",66);
-aWE("pi",46,58,73);
-aWE("pictur",45);
-aWE("pip",17,53);
-aWE("plac",45,50,64);
-aWE("plan",2,3,4,44,50,52,54,66,73,81,82);
-aWE("planar",28,66,67,73,81);
+aWE("pas",5,21,42,44,47,55,67);
+aWE("path",18,54);
+aWE("pathshap",54);
+aWE("perform",4,26,53,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("planar",29,67,68,74,82);
aWE("plane1",3);
aWE("plane2",3);
aWE("plane3",3);
-aWE("plug",31);
+aWE("plug",32);
aWE("plung",2);
-aWE("png",50,78);
-aWE("point",0,1,3,4,49,7,8,13,14,17,19,20,22,23,24,27,36,39,41,42,43,44,46,50,51,54,55,58,61,64,66,67,69,32,73,74,76,77,82);
-aWE("point1",1,3,7,8,13,23,27,41,54,74,77);
-aWE("point2",1,3,7,8,13,23,27,41,54,74,77);
-aWE("point3",1,3,8,13,54);
+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("point3",1,3,8,14,55);
aWE("point4",3,8);
aWE("point5",3);
-aWE("pointcoordinat",43,32);
-aWE("polylin",3,20);
-aWE("pop",15,80);
-aWE("position",0,45,50,55,64,73,81);
-aWE("positional",64);
-aWE("possibiliti",28);
-aWE("possibility",64);
-aWE("possibl",5,20,57,64,32);
-aWE("precision",58,63);
-aWE("predefin",66);
-aWE("pres",42,50);
-aWE("presentation",78);
-aWE("presum",42);
-aWE("preview",50);
-aWE("previou",64,66);
-aWE("primitiv",7,19,22,37,29,56,69,76);
-aWE("print",43,58,32);
-aWE("prism",17,27,36,58,73);
-aWE("prism_edg",73);
-aWE("prism_fac",36,73);
-aWE("prism1",17);
-aWE("prism2",17);
-aWE("problem",64);
-aWE("proces",14,58,64,70);
-aWE("processshap",58,64);
-aWE("produc",2,9,14,16,21,26,33,35,44,46,47,48,51,52,57,60,61,62,63,64,70,73,74);
-aWE("program",39);
-aWE("projection",46,81);
-aWE("prop",43);
-aWE("propagat",5,57);
-aWE("propagation",5,57);
-aWE("properti",43,32);
-aWE("proportional",64);
-aWE("provid",0,1,2,49,7,9,11,12,13,14,15,16,18,19,20,21,22,23,24,26,27,28,33,34,35,38,41,44,45,46,47,48,50,51,52,53,54,55,57,59,60,61,62,63,64,65,66,68,69,70,71,72,30,74,75,76,77,79,80,82);
-aWE("ps",58);
+aWE("pointcoordinat",44,33);
+aWE("polylin",3,21);
+aWE("pop",16,81);
+aWE("position",0,46,51,56,65,74,82);
+aWE("positional",65);
+aWE("possibiliti",29);
+aWE("possibility",65);
+aWE("possibl",5,21,58,65,33);
+aWE("precision",59,64);
+aWE("predefin",67);
+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);
+aWE("print",44,59,33);
+aWE("prism",18,28,37,59,74);
+aWE("prism_edg",74);
+aWE("prism_fac",37,74);
+aWE("prism1",18);
+aWE("prism2",18);
+aWE("problem",65);
+aWE("proces",15,59,65,71);
+aWE("processshap",59,65);
+aWE("produc",2,9,15,17,22,27,34,36,45,47,48,49,52,53,58,61,62,63,64,65,71,74,75);
+aWE("program",40);
+aWE("project",10);
+aWE("projection",47,82);
+aWE("prop",44);
+aWE("propagat",5,58);
+aWE("propagation",5,58);
+aWE("properti",44,33);
+aWE("proportional",65);
+aWE("provid",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,51,52,53,54,55,56,58,60,61,62,63,64,65,66,67,69,70,71,72,73,75,76,77,31,78,80,81,83);
+aWE("ps",59);
aWE("put",2);
-aWE("px",3,17,36,58,73);
-aWE("pxy",73);
-aWE("pxyz",17,36,73);
-aWE("py",3,17,36,58,73);
-aWE("py1",58);
-aWE("python",32);
-aWE("pz",3,4,17,36,58,73);
+aWE("px",3,18,37,59,74);
+aWE("pxy",74);
+aWE("pxyz",18,37,74);
+aWE("py",3,18,37,59,74);
+aWE("py1",59);
+aWE("python",33);
+aWE("pz",3,4,18,37,59,74);
aWE("qface1",8);
aWE("qface2",8);
aWE("qface3",8);
aWE("qface5",8);
aWE("qface6",8);
aWE("qface7",8);
-aWE("qface8",8);
-aWE("quadrangl",49,8,54,32);
-aWE("r",33,36,67);
-aWE("radio",82);
-aWE("radiu",3,9,13,19,22,24,33,66,69,73,76);
-aWE("radius",3,19,24,76);
-aWE("radius1",6,19,56,58,73);
-aWE("radius2",19,56);
-aWE("radius3",56);
-aWE("radiusmajor",24,76);
-aWE("radiusminor",24,76);
-aWE("rais",39,43,58);
-aWE("rang",0,25,37,29,31,75);
-aWE("recent",78);
-aWE("reconstruction",52);
-aWE("redefin",78);
-aWE("reduc",64);
-aWE("referenc",42,55);
-aWE("refresh",78);
-aWE("regard",55);
-aWE("relativ",66);
-aWE("relative",73);
-aWE("relevant",80);
-aWE("remain",50,80);
-aWE("remaind",45);
-aWE("remot",50);
-aWE("remov",39,44,45,50,58,60,64,70,71,72,74,82);
-aWE("removeobject",39,82);
-aWE("removeweb",52);
-aWE("renam",78);
-aWE("repair",0,11,12,14,37,38,29,58,63,64,70,71,72);
-aWE("repetition",46,48);
-aWE("represent",50,54);
-aWE("representation",50);
-aWE("requir",64,31);
-aWE("requireddegre",64);
-aWE("requirednbsegment",64);
-aWE("res",58);
-aWE("reset",50);
-aWE("resiz",50);
-aWE("respect",38,66);
-aWE("restor",50);
-aWE("restriction",64);
-aWE("result",0,1,2,4,49,5,6,7,9,11,12,13,14,16,18,19,20,21,22,23,24,25,26,27,28,33,34,35,38,41,44,46,47,48,50,51,52,53,54,55,57,58,59,60,61,62,63,64,65,66,68,69,70,71,72,32,73,74,76,77,79,82);
-aWE("resultant",64);
-aWE("retriev",12);
-aWE("return",25,26,43,50,32,82);
-aWE("revers",46,60);
-aWE("revolution",17,59,64);
-aWE("right",15,45,78,80);
-aWE("ris",64);
-aWE("rot1d",73);
-aWE("rot2d",73);
-aWE("rotat",46,50,59,60,73);
-aWE("rotation",46,50,58,60,73);
-aWE("rul",64);
-aWE("runtimeerror",43,58);
-aWE("s",11,13,14,17,47,58,61,70,71,72,82);
-aWE("s1",16,35,62);
-aWE("s2",16,35,62);
-aWE("salom",3,4,5,6,8,10,17,36,37,39,29,43,56,58,67,73);
-aWE("sam",46,64,66,73,82);
-aWE("sameparamet",64);
-aWE("satisfy",32);
-aWE("sav",50,31);
-aWE("scal",61,73);
-aWE("scen",50);
-aWE("script",0,1,2,49,7,9,11,12,13,14,15,16,18,19,20,21,22,23,24,26,27,28,33,34,35,38,41,44,45,46,47,48,51,52,53,54,55,57,59,60,61,62,63,64,65,66,68,69,70,71,72,32,30,74,75,76,77,79,80,82);
-aWE("se",45,50,80);
-aWE("search",31);
-aWE("second",7,13,19,22,42,44,45,47,48,52,54,55,64,67,69,30,74,76,77,81);
-aWE("section",2,6,50,62,30);
-aWE("seem",58);
-aWE("segment",64,66);
-aWE("select",0,1,2,4,7,9,11,12,13,14,15,16,18,19,20,21,22,23,24,25,26,27,28,33,34,35,38,39,41,42,44,45,46,47,48,50,51,52,53,54,55,57,58,59,60,61,62,63,64,65,66,68,69,70,71,72,32,31,74,76,77,78,79,80,81,82);
-aWE("selection",33,66,81,82);
-aWE("sens",52);
-aWE("separat",30);
-aWE("serv",20,27,53,59);
-aWE("set",0,14,26,28,36,46,51,55,81);
-aWE("setcolor",10,15);
-aWE("setdisplaymod",3,4,5,6,8,10,17,36,56,58,67,73,80);
-aWE("settransparency",3,10,36,67,75);
-aWE("sew",58,63);
-aWE("sg",5,39,58,78);
-aWE("shad",78,80);
-aWE("shap",0,2,4,9,11,12,14,16,18,21,25,27,33,34,35,37,38,39,29,40,43,44,45,46,48,50,51,52,53,57,58,59,60,61,62,63,64,70,71,72,32,73,74,75,78,82);
-aWE("shape1",32,30);
-aWE("shape2",32,30);
-aWE("shapelistcompound",17);
-aWE("shapes_of_given_typ",25);
-aWE("shapetyp",33,36,39,58,73,82);
-aWE("shapetypeedg",73);
-aWE("shapetypefac",73);
-aWE("shar",12);
-aWE("sharp",64);
-aWE("shel",12,18,36,51,65,68,80);
-aWE("shell",49,27,36,51,53,59,65,68);
-aWE("shift",45,55,79,82);
-aWE("short",15,80);
-aWE("shortcut",28);
-aWE("should",27,41,70,71,32);
-aWE("show",50,32);
-aWE("shown",42);
-aWE("sid",54);
-aWE("sign",51);
-aWE("similar",54);
-aWE("simp",42);
-aWE("simpl",46,47,48);
-aWE("singl",28);
-aWE("six",49,8);
-aWE("siz",9,54,64);
-aWE("sketch",36,66,67);
-aWE("sketcher",36);
-aWE("sketcher1",36,67);
-aWE("sketcher2",36,67);
-aWE("sketcher3",36);
-aWE("skip",82);
-aWE("small",50,64);
-aWE("so",28,45);
-aWE("solid",49,7,8,19,22,25,27,36,47,51,53,59,68,69,76);
+aWE("quadrangl",50,8,55,33);
+aWE("quantiti",33);
+aWE("r",34,37,68);
+aWE("radio",83);
+aWE("radiu",3,9,14,20,23,25,34,67,70,74,77);
+aWE("radius",3,20,25,77);
+aWE("radius1",6,20,57,59,74);
+aWE("radius2",20,57);
+aWE("radius3",57);
+aWE("radiusmajor",25,77);
+aWE("radiusminor",25,77);
+aWE("rais",40,44,59);
+aWE("rang",0,26,38,32,30,76);
+aWE("recent",79);
+aWE("reconstruction",53);
+aWE("redefin",79);
+aWE("reduc",65);
+aWE("referenc",43,56);
+aWE("refresh",79);
+aWE("regard",56);
+aWE("relativ",67);
+aWE("relevant",81);
+aWE("remain",51,81);
+aWE("remaind",46);
+aWE("remot",51);
+aWE("remov",40,45,46,51,59,61,65,71,72,73,75,83);
+aWE("removeobject",40,83);
+aWE("removeweb",53);
+aWE("renam",79);
+aWE("repair",0,10,12,13,15,38,39,30,59,64,65,71,72,73);
+aWE("repetition",47,49);
+aWE("represent",51,55);
+aWE("representation",51);
+aWE("requir",32,65);
+aWE("requireddegre",65);
+aWE("requirednbsegment",65);
+aWE("res",59);
+aWE("reset",51);
+aWE("resiz",51);
+aWE("respect",39,67);
+aWE("restor",51);
+aWE("restriction",65);
+aWE("result",0,1,2,4,50,5,6,7,9,10,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,51,52,53,54,55,56,58,59,60,61,62,63,64,65,66,67,69,70,71,72,73,74,75,77,33,78,80,83);
+aWE("resultant",65);
+aWE("retriev",13);
+aWE("return",26,27,44,51,33,83);
+aWE("revers",10,47,61);
+aWE("revolution",18,60,65);
+aWE("right",16,46,79,81);
+aWE("ris",65);
+aWE("rot1d",74);
+aWE("rot2d",74);
+aWE("rotat",47,51,60,61,74);
+aWE("rotation",47,51,59,61,74);
+aWE("rul",65);
+aWE("runtimeerror",44,59);
+aWE("s",12,14,15,18,37,48,59,62,71,72,73,83);
+aWE("s1",17,36,63);
+aWE("s2",17,36,63);
+aWE("salom",3,4,5,6,8,11,18,37,38,40,30,44,57,59,68,74);
+aWE("sam",47,65,67,74,83);
+aWE("sameparamet",65);
+aWE("satisfy",33);
+aWE("sav",32,51);
+aWE("scal",62,74);
+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("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("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);
+aWE("sew",59,64);
+aWE("sg",5,40,59,79);
+aWE("shad",79,81);
+aWE("shap",0,2,4,9,10,12,13,15,17,19,22,26,28,34,35,36,37,38,39,40,30,41,44,45,46,47,49,51,52,53,54,58,59,60,61,62,63,64,65,71,72,73,74,75,76,33,79,83);
+aWE("shape1",31,33);
+aWE("shape2",31,33);
+aWE("shapelistcompound",18,37);
+aWE("shapes_of_given_typ",26);
+aWE("shapetyp",34,37,40,59,74,83);
+aWE("shapetypeedg",74);
+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("shift",46,56,80,83);
+aWE("short",16,81);
+aWE("shortcut",29);
+aWE("should",42,71,72,33);
+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("singl",29);
+aWE("six",50,8);
+aWE("siz",9,55,65);
+aWE("sketch",37,67,68);
+aWE("sketcher",37);
+aWE("sketcher1",37,68);
+aWE("sketcher2",37,68);
+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("solid1",8);
aWE("solid2",8);
-aWE("sort",25);
-aWE("sourc",59);
-aWE("spac",13,20,54,55,32,77);
-aWE("specifi",0,7,9,14,33,42,47,58,64,72,73);
-aWE("specific",49);
-aWE("specify",0,60);
-aWE("spher",5,6,10,56,69,73);
-aWE("sphere1",56);
-aWE("sphere2",56);
-aWE("sphere3",56);
-aWE("splin",3,20);
-aWE("split",0,64);
-aWE("splitangl",64);
-aWE("splitclosedfac",64);
-aWE("splitcontinuity",64);
-aWE("spot",64);
-aWE("sqrt",43);
-aWE("stag",49);
-aWE("standard",15,78);
-aWE("start",1,27,45,66,74,77);
-aWE("step",37,29,46,48,31);
-aWE("step1",48);
-aWE("step2",48);
-aWE("still",64);
-aWE("str",66);
-aWE("strict",50);
-aWE("strip",64);
-aWE("study",3,4,5,6,8,17,36,56,58,67,73);
-aWE("sub",25,50,58,71,82);
-aWE("sub_shape_id",58);
-aWE("subfacelist",39);
-aWE("submenu",32);
-aWE("subshap",25,82);
-aWE("subshapeall",25);
-aWE("subshapeallid",25);
-aWE("subshapeallsort",25,36,39,58,73);
-aWE("subshapeallsortedid",25);
-aWE("subshapeid",82);
-aWE("subshapesort",25);
-aWE("subtraction",45);
-aWE("successful",43);
-aWE("sup_fac",58);
-aWE("suppres",58,70,71,72);
-aWE("suppressfac",58,70);
-aWE("suppresshol",58,71);
-aWE("suppressinternalwir",58,72);
-aWE("surfac",28,34,43,51,64,32,73);
-aWE("surfacecontinuity",64);
-aWE("surfacemod",64);
-aWE("symmetric",73);
-aWE("symmetrical",44,73);
-aWE("symmetry",44);
-aWE("system",19,22,42,45,69,73,81);
-aWE("t",7,27,39,50,69);
-aWE("tak",64);
-aWE("tangent",64,66);
-aWE("tangential",64);
-aWE("target",26,66);
-aWE("technology",50);
-aWE("tetrahedral",49);
-aWE("textual",66,67);
-aWE("th",64);
-aWE("theendlc",45);
-aWE("them",7,25,50,64,70,79,82);
-aWE("theobject",45);
-aWE("therefor",66);
-aWE("theshap",38,58);
-aWE("thestartlc",45);
-aWE("thetoleranc",38);
+aWE("sort",26);
+aWE("sourc",60);
+aWE("spac",14,21,55,56,33,78);
+aWE("specifi",0,7,9,15,34,43,48,59,65,73,74);
+aWE("specific",50);
+aWE("specify",0,61);
+aWE("spher",5,6,11,57,70,74);
+aWE("sphere1",57);
+aWE("sphere2",57);
+aWE("sphere3",57);
+aWE("splin",3,21);
+aWE("split",0,65);
+aWE("splitangl",65);
+aWE("splitclosedfac",65);
+aWE("splitcontinuity",65);
+aWE("spot",65);
+aWE("sqrt",44);
+aWE("stag",50);
+aWE("standard",16,79);
+aWE("start",1,28,46,67,75,78);
+aWE("step",38,32,30,47,49);
+aWE("step1",49);
+aWE("step2",49);
+aWE("still",65);
+aWE("str",67);
+aWE("strict",51);
+aWE("strip",65);
+aWE("study",3,4,5,6,8,18,37,57,59,68,74);
+aWE("sub",26,51,59,72,83);
+aWE("sub_shape_id",59);
+aWE("subfacelist",40);
+aWE("submenu",33);
+aWE("subshap",26,83);
+aWE("subshapeall",26);
+aWE("subshapeallid",26);
+aWE("subshapeallsort",26,37,40,59,74);
+aWE("subshapeallsortedid",26);
+aWE("subshapeid",83);
+aWE("subshapesort",26);
+aWE("subtraction",46);
+aWE("successful",44);
+aWE("sup_fac",59);
+aWE("suppres",59,71,72,73);
+aWE("suppressfac",59,71);
+aWE("suppresshol",59,72);
+aWE("suppressinternalwir",59,73);
+aWE("surfac",29,35,44,52,65,74,33);
+aWE("surfacecontinuity",65);
+aWE("surfacemod",65);
+aWE("symmetric",74);
+aWE("symmetrical",45,74);
+aWE("symmetry",45);
+aWE("system",20,23,43,46,70,74,82);
+aWE("t",7,10,28,40,51,70);
+aWE("tak",65);
+aWE("tangent",65,67);
+aWE("tangential",65);
+aWE("target",27,67);
+aWE("technology",51);
+aWE("test",33);
+aWE("tetrahedral",50);
+aWE("textual",67,68);
+aWE("th",65);
+aWE("theendlc",46);
+aWE("theischeckgeom",33);
+aWE("them",7,26,51,65,71,80,83);
+aWE("theobject",46);
+aWE("therefor",67);
+aWE("theshap",39,59,33);
+aWE("thestartlc",46);
+aWE("thetoleranc",39);
aWE("third",7);
-aWE("thre",1,3,13,17,20,36,42,44,54,55,67,73,81);
-aWE("thu",64,75);
-aWE("tim",20,46,48,55,73);
-aWE("tobezi",64);
-aWE("togeth",82);
-aWE("tol",43);
-aWE("tol2d",17,34);
-aWE("tol3d",17,34);
-aWE("toleranc",14,34,38,43,58,64,32);
-aWE("tolerance2d",64);
-aWE("tolerance3d",58,64);
-aWE("tool",43,52,32);
-aWE("toolbar",50);
+aWE("thre",1,3,14,18,21,37,43,45,55,56,68,74,82);
+aWE("thu",65,76);
+aWE("tim",21,47,49,56,74);
+aWE("tobezi",65);
+aWE("togeth",83);
+aWE("tol",44);
+aWE("tol2d",18,35);
+aWE("tol3d",18,35);
+aWE("toleranc",15,35,39,44,59,65,33);
+aWE("tolerance2d",65);
+aWE("tolerance3d",59,65);
+aWE("tool",44,53,33);
+aWE("toolbar",51,54);
aWE("top_fac",5);
aWE("top_face_ind",5);
-aWE("toru",56,76);
-aWE("torus",56);
-aWE("torus1",56);
-aWE("torus2",56);
-aWE("tr1d",73);
-aWE("tr2d",73);
-aWE("transform",5,16,47,61,73);
+aWE("topology",33);
+aWE("toru",57,77);
+aWE("torus",57);
+aWE("torus1",57);
+aWE("torus2",57);
+aWE("tr1d",74);
+aWE("tr2d",74);
+aWE("transform",5,17,48,62,74);
aWE("transformat",5);
-aWE("transformation",5,9,33,37,29,44,45,46,47,48,50,51,60,61,73,74);
-aWE("translat",45,46,48,51,73,74);
-aWE("translation",46,47,48,73,74);
-aWE("translation1",73);
-aWE("translation2",73);
-aWE("translation3",73);
-aWE("transparency",10,75,78);
-aWE("transparent",75,80);
-aWE("triangl",50);
-aWE("trihedron",50);
-aWE("trimsiz",3,4,54);
-aWE("tru",0,14,52,58,32);
-aWE("truncat",19);
-aWE("try",28);
-aWE("tt",36,67);
-aWE("tui",0,1,2,49,7,9,11,12,13,14,15,16,18,19,20,21,22,23,24,25,26,27,28,33,34,35,38,41,42,44,45,46,47,48,51,52,53,54,55,57,59,60,61,62,63,64,65,66,68,69,70,71,72,32,30,74,75,76,77,78,79,80,82);
-aWE("tupl",32);
-aWE("two",0,3,4,49,7,8,9,12,16,17,19,23,35,36,38,39,45,46,47,48,52,64,67,69,32,73,76,81,82);
-aWE("typ",20,25,26,52,64,66,32,30,82);
-aWE("u",64);
-aWE("underly",14,64);
-aWE("unionlist",39);
-aWE("up",15,19,80);
-aWE("updat",78);
-aWE("updateobjbrows",5,39,58);
-aWE("us",2,49,14,25,26,34,37,29,45,47,50,64,66,72,32,30,75,82);
-aWE("useful",0,1,2,49,7,9,11,12,13,14,15,16,18,19,20,21,22,23,24,26,27,28,33,34,35,38,41,44,45,46,47,48,51,52,53,54,55,57,59,60,61,62,63,64,65,66,68,69,70,71,72,30,74,75,76,77,78,79,80,82);
-aWE("v",6,56,58,73);
-aWE("v1",49);
-aWE("v2",49);
-aWE("v3",49);
-aWE("v4",49);
+aWE("transformation",5,9,34,38,30,45,46,47,48,49,51,52,61,62,74,75);
+aWE("translat",46,47,49,52,74,75);
+aWE("translation",47,48,49,74,75);
+aWE("translation1",74);
+aWE("translation2",74);
+aWE("translation3",74);
+aWE("transparency",11,76,79);
+aWE("transparent",76,81);
+aWE("triangl",51);
+aWE("trihedron",51);
+aWE("trimsiz",3,4,55);
+aWE("tru",0,15,53,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("typ",21,26,27,53,65,67,31,33,83);
+aWE("u",65);
+aWE("uncheck",10);
+aWE("underly",15,65);
+aWE("unionlist",40);
+aWE("up",16,20,81);
+aWE("updat",79);
+aWE("updateobjbrows",5,40,59);
+aWE("us",2,50,15,26,27,35,38,30,46,48,51,65,67,73,76,31,33,83);
+aWE("useful",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,78,79,80,81,83);
+aWE("v",6,57,59,74);
+aWE("v1",50);
+aWE("v2",50);
+aWE("v3",50);
+aWE("v4",50);
aWE("val",0);
-aWE("valid",43,58,32);
-aWE("validity",32);
-aWE("valu",0,2,7,9,14,19,22,27,33,38,40,42,43,45,46,48,51,54,58,59,63,64,66,69,32,74,76,77);
-aWE("variety",25);
-aWE("variou",64);
-aWE("vector",3,4,6,13,17,19,22,24,27,36,41,42,44,46,48,54,56,58,59,60,64,66,67,73,74,76,77,81);
-aWE("vector_arc",3,67);
-aWE("vector1",3,17);
-aWE("vector1_arc1",17);
-aWE("vector1_arc2",17);
-aWE("vector2",3,17);
-aWE("vector2_arc1",17);
-aWE("vector2_arc2",17);
-aWE("vector3",17);
-aWE("versa",64);
-aWE("vertex",3,4,6,13,14,17,19,22,23,24,27,43,44,53,54,55,56,58,59,61,69,32,73,76);
-aWE("vertex_n",55);
-aWE("vertex1",23);
-aWE("vertex2",23);
-aWE("vertexmaxtol",32);
-aWE("vertexmintol",32);
-aWE("vertic",1,3,49,5,7,8,14,17,23,25,36,39,41,54,56,58,67,73,74,77);
-aWE("via",49,7,27,28,41,50,66,69,31);
-aWE("vic",64);
-aWE("view",0,9,10,14,33,42,50,70,71,72,32,78,79,80,82);
-aWE("visibl",50);
-aWE("visualiz",50);
-aWE("volum",43,32);
-aWE("vr",73);
-aWE("vrot1d",73);
-aWE("vt",73);
-aWE("vtr1d",73);
-aWE("vtr2d",73);
-aWE("vxy",3,17,36,58,73);
+aWE("val1",44);
+aWE("val2",44);
+aWE("valid",44,59,33);
+aWE("validity",33);
+aWE("valu",0,2,7,9,15,20,23,28,34,39,41,43,44,46,47,49,52,55,59,60,64,65,67,70,75,77,33,78);
+aWE("variety",26);
+aWE("variou",65);
+aWE("vector",3,4,6,14,18,20,23,25,28,37,42,43,45,47,49,55,57,59,60,61,65,67,68,74,75,77,78,82);
+aWE("vector_arc",3,68);
+aWE("vector1",3,18);
+aWE("vector1_arc1",18);
+aWE("vector1_arc2",18);
+aWE("vector2",3,18);
+aWE("vector2_arc1",18);
+aWE("vector2_arc2",18);
+aWE("vector3",18);
+aWE("versa",65);
+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);
+aWE("vertex2",24);
+aWE("vertexmaxtol",33);
+aWE("vertexmintol",33);
+aWE("vertic",1,3,50,5,7,8,15,18,24,26,28,37,40,42,55,57,59,68,74,75,78);
+aWE("via",50,7,29,32,42,51,67,70);
+aWE("vic",65);
+aWE("view",0,9,11,15,34,43,51,71,72,73,33,79,80,81,83);
+aWE("visibl",51);
+aWE("visualiz",51);
+aWE("volum",44,33);
+aWE("vr",74);
+aWE("vrot1d",74);
+aWE("vt",74);
+aWE("vtr1d",74);
+aWE("vtr2d",74);
+aWE("vxy",3,18,37,59,74);
aWE("vxyz",4);
-aWE("vz",73);
-aWE("w_0",58);
-aWE("wantplanarfac",58);
+aWE("vz",74);
+aWE("w_0",59);
+aWE("wantplanarfac",59);
aWE("wat",2);
aWE("waterdensity",2,4);
-aWE("way",7,25,27,41,44,46,69,82);
+aWE("way",7,26,28,42,45,47,70,83);
aWE("weight",2,4);
-aWE("well",64);
-aWE("wf",67);
-aWE("what",43);
-aWE("whati",43,32);
-aWE("wheth",32);
-aWE("whil",11,17,43,64,80);
-aWE("whos",28,32);
-aWE("wid",37,29);
-aWE("will",0,1,2,49,7,9,11,12,13,14,16,18,19,20,21,22,23,24,25,26,27,28,33,34,35,38,41,42,44,45,46,47,48,50,51,52,53,54,55,57,59,60,61,62,63,64,65,66,68,69,70,71,72,31,74,76,77,79,82);
-aWE("wir",3,49,11,14,17,25,27,28,36,43,53,58,59,66,67,71,72,73,79);
-aWE("wire_clos",58);
-aWE("wire_nam",58);
-aWE("wire1",17);
-aWE("wire2",17);
-aWE("wirefram",78,80);
-aWE("wish",25,50,31);
-aWE("within",14,40,78);
-aWE("without",58);
-aWE("work",37,29,46,50,64,66,81,82);
-aWE("workingplan",66);
-aWE("ww",36,67);
-aWE("x",3,7,24,42,45,55,66,69,32);
+aWE("well",65,33);
+aWE("wf",68);
+aWE("what",44);
+aWE("whati",44,33);
+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("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);
+aWE("wire1",18);
+aWE("wire2",18);
+aWE("wirefram",79,81);
+aWE("wish",10,26,32,51);
+aWE("within",15,41,79);
+aWE("without",59);
+aWE("work",38,30,47,51,65,67,82,83);
+aWE("workingplan",67);
+aWE("ww",37,68);
+aWE("x",3,7,25,43,46,56,67,70,33);
aWE("x1",7);
aWE("x2",7);
-aWE("xdx",42);
-aWE("xdy",42);
-aWE("xdz",42);
-aWE("xmax",43,32);
-aWE("xmin",43,32);
-aWE("xoy",66);
-aWE("xyz",81);
+aWE("xdx",43);
+aWE("xdy",43);
+aWE("xdz",43);
+aWE("xmax",44,33);
+aWE("xmin",44,33);
+aWE("xoy",67);
+aWE("xyz",82);
aWE("xz_fac",5);
aWE("xz_face_ind",5);
-aWE("y",3,7,24,42,55,66,69,32);
+aWE("y",3,7,25,43,56,67,70,33);
aWE("y1",7);
aWE("y2",7);
-aWE("ydx",42);
-aWE("ydy",42);
-aWE("ydz",42);
-aWE("ymax",43,32);
-aWE("ymin",43,32);
-aWE("your",15,34,63,71,32,31,78,81,82);
-aWE("yourselv",42);
+aWE("ydx",43);
+aWE("ydy",43);
+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,42,55,69,32);
+aWE("z",2,3,7,43,56,70,33);
aWE("z1",7);
aWE("z2",7);
-aWE("zero",19);
-aWE("zmax",43,32);
-aWE("zmin",43,32);
-aWE("zoom",50);
+aWE("zero",20);
+aWE("zmax",44,33);
+aWE("zmin",44,33);
+aWE("zoom",51);
//-->
</script>
<script language="javascript" src="whtdata.js"></script>
<script language="javascript">
<!--
- aTE(1,97,"Geometry module");
+ aTE(1,98,"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");
aTE(2,0,"Extrusion","extrusion.htm");
aTE(2,0,"Revolution","revolution.htm");
aTE(2,0,"Filling","filling.htm");
- aTE(2,0,"Pipe","pipe_creation.htm");
+ aTE(2,0,"Extrusion along a path","pipe_creation.htm");
aTE(2,0,"Working with groups","working_with_groups.htm");
aTE(2,0,"Building by blocks","newentity_blocks.htm");
aTE(2,0,"Sketcher","sketcher.htm");
aTE(2,0,"Color","color.htm");
aTE(2,0,"Transparency","transparency.htm");
aTE(2,0,"Isolines","isos.htm");
- aTE(1,35,"Transforming geometrical objects");
+ aTE(1,36,"Transforming geometrical objects");
aTE(1,2,"Basic Operations");
aTE(2,0,"Partition","partition.htm");
aTE(2,0,"Archimede","archimede.htm");
aTE(2,0,"Multi Transformation","multi_transformation.htm");
aTE(2,0,"Explode on Blocks","explode_on_blocks.htm");
aTE(2,0,"Propagate","propagate.htm");
- aTE(1,10,"Repairing Operations");
+ aTE(1,11,"Repairing Operations");
aTE(2,0,"Shape Processing","shape_processing.htm");
aTE(2,0,"Suppress Faces","suppress_faces.htm");
aTE(2,0,"Close Contour","close_contour.htm");
aTE(2,0,"Add Point on Edge","add_point_on_edge.htm");
aTE(2,0,"Check Free Boundaries","check_free_boundaries.htm");
aTE(2,0,"Check Free Faces","check_free_faces.htm");
+ aTE(2,0,"Change Orientation","change_orientation.htm");
aTE(2,0,"Using measurement tools","files/salome2_sp3_measuregui_functions.htm");
- aTE(2,0,"Access to Geometry module functionality from Python (using geompy.py)","geompy_doc/namespacegeompy.html");
+aTE(2,0,"Python interface geompy.py" , geompy_doc/namespacegeompy.html");
aTE(1,16,"TUI Scripts");
aTE(2,0,"Viewing Geometrical Objects","changing_display_parameters.htm");
aTE(1,7,"Creating Geometric Objects");
//-->
</script>
</body>
-</html>
\ No newline at end of file
+</html>
<nobr><a name="15"></a><a href="whlstt15.htm#15" target="_self" title="closed book"><img src="../whd_toc1.gif" border="0" align="absmiddle"> Creating Geometric Objects</a></nobr><br>
<nobr><a name="16"></a><a href="whlstt16.htm#16" target="_self" title="closed book"><img src="../whd_toc1.gif" border="0" align="absmiddle"> Transformation</a></nobr><br>
<nobr><a href="../measurement_tools.htm"><img src="../whd_toc3.gif" border="0" align="absmiddle"> Measurement Tools</a></nobr><br>
- <nobr><a href="../geompy_doc/namespacegeompy.html"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Access to Geometry module functionality from Python (using geompy.py)</a></nobr><br>
+ <nobr><a href="../geompy_doc/namespacegeompy.html"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Python interface geompy.py</a></nobr><br>
</p>
</td></tr>
//-->
</script>
</body>
-</html>
\ No newline at end of file
+</html>
</head>
<frameset id="whPfset" cols="260,*"><noframes><p>Your browser does not support frames. We recommend that you update your browser to a version that supports frames.</p><p>To view the Help system without frames click on this<a href="whgdata/whnvp30.htm">hyperlink.</a></p></noframes><frame src="whgdata/whnvp30.htm" title="navigation pane" name="navigation pane" scrolling="no"><frame src="geometry.htm" title="topic pane" name="bsscright" scrolling="yes"></frameset>
-</html>
\ No newline at end of file
+</html>
<indent attr="9pt" />
</glossary>
</paneskin>
-</resource>
\ No newline at end of file
+</resource>
<tr><td> Authoring Tool Name </td><td>RoboHelp X5</td></tr>
<table>
</body>
-</html>
\ No newline at end of file
+</html>
</body>
-</html>
\ No newline at end of file
+</html>
return true;
else
return false;
-}
\ No newline at end of file
+}
//-->
</script>
</body>
-</html>
\ No newline at end of file
+</html>
gbWhTopic=true;
}
else
- document.location.reload();
\ No newline at end of file
+ document.location.reload();
<topic name="Box" url="box.htm" />
<topic name="Building by Blocks" url="building_by_blocks.htm" />
<topic name="Chamfer" url="chamfer.htm" />
+<topic name="Change Orientation" url="change_orientation.htm" />
<topic name="Changing Display Parameters" url="changing_display_parameters.htm" />
<topic name="Check Free Boundaries" url="check_free_boundaries.htm" />
<topic name="Check Free Faces" url="check_free_faces.htm" />
<topic name="Extrusion" url="extrusion.htm" />
<topic name="Face" url="face.htm" />
<topic name="Introduction to GEOM" url="files/introduction_to_geom.htm" />
-<topic name="Titre" url="files/salome2_sp3_booleangui_functions.htm" />
-<topic name="Titre" url="files/salome2_sp3_geomtoolsgui_functions.htm" />
-<topic name="Titre" url="files/salome2_sp3_measuregui_functions.htm" />
+<topic name="Using Boolean Operations" url="files/salome2_sp3_booleangui_functions.htm" />
+<topic name="Importing and exporting geometrical objects" url="files/salome2_sp3_geomtoolsgui_functions.htm" />
+<topic name="Using Measurement Tools" url="files/salome2_sp3_measuregui_functions.htm" />
<topic name="Fillet" url="fillet.htm" />
<topic name="Filling" url="filling.htm" />
<topic name="Fuse" url="fuse.htm" />
<?xml version='1.0' encoding='windows-1252' ?>
<ftswdata>
-<key name="0"> 0,3,4,5,6,8,10,17,36,39,43,45,55,56,58,64,67,73,75, </key>
-<key name="00001"> 58, </key>
-<key name="0001"> 17, </key>
+<key name="0"> 0,3,4,5,6,8,11,18,37,40,44,46,56,57,59,65,68,74,76,33, </key>
+<key name="00001"> 59, </key>
+<key name="0001"> 18, </key>
<key name="01"> 4, </key>
-<key name="1"> 0,2,3,4,5,6,8,9,10,13,14,17,19,22,24,25,26,27,28,33,34,36,38,39,42,43,44,45,46,47,48,52,53,54,55,56,57,58,59,60,61,63,64,66,67,69,71,30,73,74,75,76,81,82, </key>
-<key name="10"> 3,17,43,56,67,73, </key>
-<key name="100"> 3,4,5,8,17,36,43,45,58,67,73, </key>
-<key name="1000"> 3,73, </key>
+<key name="07"> 44, </key>
+<key name="1"> 0,2,3,4,5,6,8,9,10,11,14,15,18,20,23,25,26,27,28,29,34,35,37,39,40,43,44,45,46,47,48,49,53,54,55,56,57,58,59,60,61,62,64,65,67,68,70,72,74,75,76,77,31,82,83, </key>
+<key name="10"> 3,18,37,44,57,68,74, </key>
+<key name="100"> 3,4,5,18,37,44,46,59,68,74, </key>
+<key name="1000"> 3,74, </key>
<key name="1000000"> 4, </key>
-<key name="100x30x100"> 43, </key>
-<key name="105"> 43, </key>
-<key name="11"> 43, </key>
-<key name="12"> 32, </key>
+<key name="100x30x100"> 44, </key>
+<key name="105"> 44, </key>
+<key name="11"> 44, </key>
+<key name="12"> 33, </key>
<key name="120"> 8, </key>
-<key name="130"> 58, </key>
-<key name="140"> 58, </key>
-<key name="15"> 8,17,43,56,67, </key>
-<key name="150"> 3,8,36,58,67, </key>
-<key name="165"> 10, </key>
-<key name="17"> 56, </key>
+<key name="130"> 59, </key>
+<key name="140"> 59, </key>
+<key name="15"> 8,18,44,57,68, </key>
+<key name="150"> 3,8,37,59,68, </key>
+<key name="165"> 11, </key>
+<key name="17"> 57, </key>
<key name="170"> 3, </key>
-<key name="180"> 58,64,67, </key>
-<key name="1840"> 43, </key>
-<key name="1d"> 5,73, </key>
-<key name="1e"> 43,58, </key>
-<key name="2"> 49,5,7,13,16,17,20,21,22,23,26,35,36,39,40,41,43,46,47,48,52,58,62,66,32,30,73,74,76,77,81, </key>
-<key name="20"> 3,6,8,17,36,56,58,67,73, </key>
-<key name="200"> 3,4,5,39,43,45,58,73, </key>
-<key name="210"> 73, </key>
-<key name="218"> 10, </key>
-<key name="220"> 73, </key>
-<key name="23"> 43, </key>
-<key name="25"> 3,5,6,56,73, </key>
-<key name="250"> 36,43,58,67, </key>
-<key name="2d"> 5,34,58,64,30,73, </key>
-<key name="3"> 1,2,5,7,10,13,17,19,36,39,43,47,54,55,58,66,30,73,74,77, </key>
-<key name="30"> 3,8,10,17,43,56,58,67,73, </key>
-<key name="300"> 36,67, </key>
-<key name="300000"> 43, </key>
-<key name="31"> 10, </key>
-<key name="32"> 58, </key>
-<key name="32000"> 43, </key>
-<key name="35"> 6,56,58,73, </key>
-<key name="3d"> 13,20,34,42,50,52,54,55,58,64,70,32,30,77,78,80,82, </key>
-<key name="4"> 49,36,39,43,47,66,30,73, </key>
-<key name="40"> 6,8,17,36,56,58,73, </key>
-<key name="41"> 58, </key>
-<key name="45"> 8,56,58, </key>
-<key name="5"> 0,3,10,17,34,36,39,43,55,58,66,67,31,73, </key>
-<key name="50"> 3,5,8,10,17,36,43,58,67,73,75, </key>
+<key name="180"> 59,65,68, </key>
+<key name="1840"> 44, </key>
+<key name="1d"> 5,74, </key>
+<key name="1e"> 44,59, </key>
+<key name="2"> 50,5,7,14,17,18,21,22,23,24,27,28,36,37,40,41,42,44,47,48,49,53,59,63,67,74,75,77,31,78,82, </key>
+<key name="20"> 3,6,18,37,57,59,68,74, </key>
+<key name="200"> 3,4,5,40,44,46,59,74, </key>
+<key name="210"> 74, </key>
+<key name="218"> 11, </key>
+<key name="220"> 74, </key>
+<key name="23"> 44, </key>
+<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="30"> 3,8,11,18,37,44,57,59,68,74, </key>
+<key name="300"> 37,68, </key>
+<key name="300000"> 44, </key>
+<key name="31"> 11, </key>
+<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="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>
+<key name="45"> 57,59, </key>
+<key name="5"> 0,3,11,18,35,37,40,32,44,56,59,67,68,74, </key>
+<key name="50"> 3,5,8,11,18,37,44,59,68,74,76, </key>
<key name="500"> 4, </key>
-<key name="55"> 6,56,58, </key>
-<key name="6"> 49,43,32, </key>
-<key name="60"> 17,58,73, </key>
-<key name="65"> 58, </key>
-<key name="7"> 36,43,58, </key>
-<key name="70"> 3,8,36,56,58,67,73, </key>
-<key name="8"> 43, </key>
-<key name="80"> 43,58,67,73, </key>
-<key name="9"> 36,43,66, </key>
-<key name="90"> 64,66, </key>
-<key name="abl"> 50,66, </key>
-<key name="absolut"> 66, </key>
-<key name="absolute"> 75, </key>
-<key name="acces"> 50,78, </key>
-<key name="accessibl"> 7,15,27,28,41,69, </key>
+<key name="55"> 6,57,59, </key>
+<key name="6"> 50,5,44,33, </key>
+<key name="60"> 18,37,59,74, </key>
+<key name="65"> 59, </key>
+<key name="7"> 37,44,59, </key>
+<key name="70"> 3,8,37,57,59,68,74, </key>
+<key name="8"> 44, </key>
+<key name="80"> 44,59,68,74, </key>
+<key name="9"> 37,44,67, </key>
+<key name="90"> 65,67, </key>
+<key name="abl"> 51,67, </key>
+<key name="absolut"> 67, </key>
+<key name="absolute"> 76, </key>
+<key name="acces"> 51,79, </key>
+<key name="accessibl"> 7,16,29,42,70, </key>
<key name="accord"> 0, </key>
-<key name="accordanc"> 0,14, </key>
-<key name="ad"> 14,39,31,82, </key>
-<key name="add"> 0,3,4,5,6,8,17,36,39,56,58,67,73,82, </key>
-<key name="addobject"> 39,82, </key>
-<key name="addtostudy"> 3,4,5,6,8,10,17,36,39,56,58,67,73, </key>
-<key name="addtostudyinfath"> 5,58, </key>
-<key name="advanc"> 7,18,23,27,28,36,65,68,69,79, </key>
-<key name="algorithm"> 7,13,19,20,22,42,45,52,54,55,66,69,76,77,81, </key>
-<key name="all_fac"> 58, </key>
-<key name="allow"> 49,9,25,44,45,46,50,60,63,64,66,71,74,78, </key>
-<key name="along"> 7,9,45,48,51,53,73,74, </key>
-<key name="alongsid"> 30, </key>
-<key name="already"> 39, </key>
-<key name="although"> 45, </key>
-<key name="angl"> 46,58,59,60,64,66,73, </key>
-<key name="anoth"> 21,27,41,54,55,69, </key>
-<key name="any"> 2,52,60,64,74, </key>
-<key name="ap"> 42,73,82, </key>
-<key name="appear"> 78,82, </key>
-<key name="append"> 17,73, </key>
-<key name="appli"> 9,64, </key>
-<key name="applicabl"> 51, </key>
-<key name="apply"> 64,78, </key>
-<key name="approximation"> 64, </key>
-<key name="arc"> 1,3,17,36,58,66,67,73, </key>
-<key name="arc1"> 17, </key>
-<key name="arc2"> 17, </key>
+<key name="accordanc"> 0,15, </key>
+<key name="ad"> 15,40,32,83, </key>
+<key name="add"> 0,3,4,5,6,8,18,37,40,57,59,68,74,83, </key>
+<key name="addobject"> 40,83, </key>
+<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="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="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="ap"> 43,74,83, </key>
+<key name="appear"> 79,83, </key>
+<key name="append"> 18,37,74, </key>
+<key name="appli"> 9,65, </key>
+<key name="applicabl"> 52, </key>
+<key name="apply"> 65,79, </key>
+<key name="approximation"> 65, </key>
+<key name="arc"> 1,3,18,37,59,67,68,74, </key>
+<key name="arc1"> 18, </key>
+<key name="arc2"> 18, </key>
<key name="archimed"> 2,4, </key>
-<key name="area"> 43,50, </key>
-<key name="argument"> 0,1,2,49,7,9,13,14,16,18,19,20,21,22,23,24,25,26,27,28,33,34,35,38,40,41,42,44,45,46,47,48,51,52,53,54,55,57,59,60,61,62,63,65,66,68,69,70,71,72,30,74,76,77,79,81,82, </key>
-<key name="around"> 46,59,73, </key>
-<key name="automatical"> 49,42,78, </key>
-<key name="availabl"> 0,49,14,50,66,70,71,72,31,82, </key>
-<key name="ax"> 7,42,50,74, </key>
-<key name="axi"> 17,19,22,42,44,45,46,48,59,60,32,73, </key>
-<key name="b"> 3,20,64, </key>
-<key name="background"> 78, </key>
-<key name="bas"> 19,22,27,46,50,53,58,59,61,64,74,76, </key>
-<key name="baseshap"> 53, </key>
-<key name="basi"> 27,50, </key>
-<key name="basic"> 1,2,3,4,13,20,24,37,29,41,42,43,52,54,55,66,32,77,81, </key>
-<key name="basicproperti"> 43,32, </key>
-<key name="bb"> 43, </key>
-<key name="be"> 23, </key>
-<key name="befor"> 58,64,66, </key>
-<key name="begin"> 58, </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="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="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>
+<key name="basicproperti"> 44,33, </key>
+<key name="bb"> 44, </key>
+<key name="be"> 24, </key>
+<key name="befor"> 59,65,67, </key>
+<key name="begin"> 59, </key>
<key name="belong"> 9, </key>
-<key name="below"> 49, </key>
-<key name="besi"> 20, </key>
-<key name="bezi"> 3,20,64, </key>
-<key name="black"> 78, </key>
-<key name="block"> 49,5,8,26,37,29,43,47,57,32, </key>
-<key name="bmp"> 50,78, </key>
-<key name="boolean"> 6,16,21,35,37,29,62,32,30, </key>
-<key name="both"> 7,19,47,64, </key>
-<key name="boudari"> 58, </key>
-<key name="bound"> 8,36,43,32, </key>
-<key name="boundari"> 11,58,63,71, </key>
-<key name="boundary"> 11,58,72, </key>
-<key name="boundingbox"> 43,32, </key>
-<key name="box"> 4,49,5,7,10,15,21,26,39,43,56,58,64,66,72,32,31,73,75,79,82, </key>
+<key name="below"> 50, </key>
+<key name="besi"> 21, </key>
+<key name="bezi"> 3,21,65, </key>
+<key name="black"> 79, </key>
+<key name="block"> 50,5,8,27,38,30,44,48,58,33, </key>
+<key name="bmp"> 51,79, </key>
+<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="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_tr1"> 5, </key>
<key name="box_tr2"> 5, </key>
-<key name="box1"> 43,56,58, </key>
-<key name="box2"> 43,56,58, </key>
-<key name="box3"> 56, </key>
-<key name="bracket"> 64, </key>
-<key name="break"> 57, </key>
-<key name="brep"> 37,29,58,31, </key>
-<key name="brows"> 42,31,78,79, </key>
-<key name="bsplin"> 64, </key>
-<key name="bsplinerestriction"> 64, </key>
-<key name="build"> 49,5,8,18,23,28,37,29,52,57,65,68,79, </key>
-<key name="button"> 42,50,63,71,79,82, </key>
-<key name="bypas"> 49, </key>
-<key name="c"> 36,64,67, </key>
-<key name="c0"> 64, </key>
-<key name="c1"> 64, </key>
-<key name="c2"> 64, </key>
-<key name="cad"> 37,29, </key>
-<key name="camera"> 81, </key>
-<key name="cas"> 49,42,47,72, </key>
-<key name="cascad"> 50, </key>
-<key name="catia"> 31, </key>
-<key name="cent"> 7,13,19,24,43,45,46,50,66,69,32,76, </key>
-<key name="center"> 25, </key>
-<key name="centerofscal"> 61, </key>
-<key name="central"> 19,22,61,64, </key>
-<key name="certain"> 64,82, </key>
+<key name="box1"> 44,57,59, </key>
+<key name="box2"> 44,57,59, </key>
+<key name="box3"> 57, </key>
+<key name="bracket"> 65, </key>
+<key name="break"> 58, </key>
+<key name="brep"> 38,32,30,59, </key>
+<key name="brows"> 32,43,79,80, </key>
+<key name="bsplin"> 65, </key>
+<key name="bsplinerestriction"> 65, </key>
+<key name="build"> 50,5,8,19,24,29,38,30,53,58,66,69,80, </key>
+<key name="button"> 43,51,54,64,72,80,83, </key>
+<key name="bypas"> 50, </key>
+<key name="c"> 37,65,68, </key>
+<key name="c0"> 65, </key>
+<key name="c1"> 65, </key>
+<key name="c2"> 65, </key>
+<key name="cad"> 38,30, </key>
+<key name="calculat"> 33, </key>
+<key name="camera"> 82, </key>
+<key name="cas"> 50,43,48,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="center"> 26, </key>
+<key name="centerofscal"> 62, </key>
+<key name="central"> 20,23,62,65, </key>
+<key name="certain"> 65,83, </key>
<key name="chain"> 5, </key>
-<key name="chamf"> 9,73, </key>
-<key name="chamfer_"> 73, </key>
-<key name="chamfer_all"> 73, </key>
-<key name="chamfer_f"> 73, </key>
-<key name="chamfer_f1"> 73, </key>
-<key name="chang"> 10,15,40,75,78,80, </key>
-<key name="check"> 5,11,12,26,28,43,58,64,72,32, </key>
+<key name="chamf"> 9,74, </key>
+<key name="chamfer_"> 74, </key>
+<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="changeorientation"> 10, </key>
+<key name="check"> 12,13,27,29,44,59,65,73,33, </key>
<key name="check_box"> 5, </key>
-<key name="checkandimprov"> 5, </key>
-<key name="checkbox"> 44,45,46,60,71,74, </key>
-<key name="checkcompoundofblock"> 43,32, </key>
-<key name="checkshap"> 43,58,32, </key>
-<key name="choic"> 20, </key>
-<key name="choos"> 26,42,31, </key>
-<key name="circl"> 3,13,66, </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="choic"> 21, </key>
+<key name="choos"> 27,32,43, </key>
+<key name="circl"> 3,14,67, </key>
<key name="circle1"> 3, </key>
<key name="circle2"> 3, </key>
-<key name="click"> 15,50,31,78,80,82, </key>
-<key name="clip"> 50, </key>
-<key name="clon"> 50, </key>
-<key name="clos"> 11,14,58,64,68,82, </key>
-<key name="closecontour"> 14,58, </key>
-<key name="closedwir"> 11,58, </key>
-<key name="closur"> 14, </key>
-<key name="cm"> 43, </key>
-<key name="cn"> 64, </key>
-<key name="coincid"> 45, </key>
-<key name="coincident"> 38, </key>
-<key name="coincidental"> 64, </key>
-<key name="collinear"> 19,22, </key>
-<key name="color"> 10,15,78,80, </key>
-<key name="command"> 0,1,2,49,7,9,11,12,13,14,15,16,18,19,20,22,23,24,25,26,27,28,33,34,35,38,41,42,44,45,46,47,48,51,52,53,54,55,57,59,60,61,62,63,64,65,66,68,69,70,71,72,32,30,74,75,76,77,78,79,80,82, </key>
-<key name="common"> 6,9,14,16,30,73, </key>
-<key name="complex"> 17,27,34,37,29,53,59,30, </key>
-<key name="component"> 3,17,34,66,74, </key>
-<key name="compos"> 49,32, </key>
-<key name="compound"> 49,5,16,17,18,21,25,26,35,36,38,43,46,48,51,58,62,32, </key>
-<key name="compsolid"> 25,27,53,59, </key>
-<key name="comput"> 2,32, </key>
-<key name="con"> 19,56,58, </key>
-<key name="concern"> 32, </key>
-<key name="condition"> 32, </key>
-<key name="cone1"> 56, </key>
-<key name="cone2"> 56, </key>
-<key name="confirm"> 31,82, </key>
-<key name="conical"> 64, </key>
-<key name="connect"> 9,28,65,32,79, </key>
-<key name="connection"> 32, </key>
-<key name="consequent"> 73, </key>
-<key name="consider"> 14,38,32, </key>
-<key name="consol"> 32, </key>
-<key name="constraint"> 49, </key>
-<key name="construct"> 49,68, </key>
-<key name="construction"> 20,37,29,50,53,30, </key>
-<key name="contain"> 0,5,12,14,57, </key>
-<key name="content"> 39,50,31, </key>
-<key name="continuiti"> 64, </key>
-<key name="continuity"> 64, </key>
-<key name="continuity2d"> 64, </key>
-<key name="continuity3d"> 64, </key>
-<key name="continuou"> 64, </key>
-<key name="contour"> 14,58, </key>
-<key name="conversion"> 64, </key>
-<key name="convert"> 64, </key>
-<key name="coord"> 43, </key>
-<key name="coordinat"> 7,19,22,25,42,43,45,50,55,66,69,32,73,74,76,77,81, </key>
-<key name="copy"> 44,45,60,74, </key>
-<key name="corn"> 64, </key>
+<key name="click"> 16,32,51,54,79,81,83, </key>
+<key name="clip"> 51, </key>
+<key name="clon"> 51, </key>
+<key name="clos"> 12,15,59,65,69,83, </key>
+<key name="closecontour"> 15,59, </key>
+<key name="closedwir"> 12,59, </key>
+<key name="closur"> 15, </key>
+<key name="cm"> 44, </key>
+<key name="cn"> 65, </key>
+<key name="coincid"> 46, </key>
+<key name="coincident"> 39, </key>
+<key name="coincidental"> 65, </key>
+<key name="collinear"> 20,23, </key>
+<key name="color"> 11,16,79,81, </key>
+<key name="command"> 0,1,2,50,7,9,10,12,13,14,15,16,17,19,20,21,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="common"> 6,9,15,17,74,31, </key>
+<key name="complex"> 18,28,35,38,30,54,60,31, </key>
+<key name="component"> 3,18,67,75, </key>
+<key name="compos"> 50,10,33, </key>
+<key name="compound"> 50,5,17,18,19,22,26,27,35,36,37,39,44,47,49,52,59,63,33, </key>
+<key name="compsolid"> 26,28,54,60, </key>
+<key name="compund"> 37, </key>
+<key name="comput"> 2,33, </key>
+<key name="con"> 20,57,59, </key>
+<key name="concern"> 33, </key>
+<key name="condition"> 33, </key>
+<key name="cone1"> 57, </key>
+<key name="cone2"> 57, </key>
+<key name="confirm"> 32,83, </key>
+<key name="conical"> 65, </key>
+<key name="connect"> 9,29,66,33,80, </key>
+<key name="connection"> 33, </key>
+<key name="consequent"> 74, </key>
+<key name="consider"> 15,39,33, </key>
+<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="contain"> 0,13,15,58, </key>
+<key name="content"> 40,32,51, </key>
+<key name="continuiti"> 65, </key>
+<key name="continuity"> 65, </key>
+<key name="continuity2d"> 65, </key>
+<key name="continuity3d"> 65, </key>
+<key name="continuou"> 65, </key>
+<key name="contour"> 15,59, </key>
+<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="copy"> 10,45,46,61,75, </key>
+<key name="corn"> 65, </key>
<key name="corner"> 7,8, </key>
-<key name="correct"> 64, </key>
-<key name="correction"> 64, </key>
-<key name="correspond"> 2,11,20,23,26, </key>
-<key name="count"> 58, </key>
-<key name="coupl"> 66, </key>
-<key name="cover"> 30, </key>
-<key name="creat"> 1,2,3,4,49,5,6,7,8,9,13,14,17,18,19,20,22,23,24,25,27,28,33,34,35,36,39,41,42,43,44,45,46,50,53,54,55,56,58,59,60,61,62,65,66,67,68,69,32,73,74,76,77,78,79,81,82, </key>
-<key name="createanddisplaygo"> 3,4,5,6,8,10,17,36,39,56,58,67,73, </key>
-<key name="creategroup"> 39,82, </key>
-<key name="creation"> 1,3,7,13,14,17,18,19,20,22,23,24,27,28,34,36,37,39,29,41,53,54,55,56,58,59,65,68,69,76,77,79,82, </key>
-<key name="cros"> 50, </key>
-<key name="cs"> 42, </key>
-<key name="cs1"> 73, </key>
-<key name="cs2"> 73, </key>
-<key name="cub"> 45, </key>
-<key name="current"> 7,27,41,50,66,69, </key>
-<key name="curv"> 3,20,34,64,66, </key>
-<key name="curvatur"> 64, </key>
-<key name="curve2dmod"> 64, </key>
-<key name="curve3dmod"> 64, </key>
-<key name="curvecontinuity"> 64, </key>
-<key name="cut"> 6,16,21,52,58,30, </key>
-<key name="cut_without_f_2"> 58, </key>
-<key name="cylind"> 6,19,22,56,58,73, </key>
-<key name="cylinder"> 17, </key>
-<key name="cylindrical"> 64, </key>
-<key name="d"> 9,58,64, </key>
-<key name="d1"> 9,73, </key>
-<key name="d2"> 9,73, </key>
-<key name="data"> 32, </key>
-<key name="data_dir"> 58, </key>
-<key name="default"> 50,55,66,78,82, </key>
-<key name="defin"> 1,7,9,13,19,20,22,24,25,26,27,33,34,41,42,46,47,48,50,53,54,55,59,60,61,64,66,69,31,74,76,77,81,82, </key>
-<key name="definit"> 71,32, </key>
-<key name="definition"> 53, </key>
+<key name="correct"> 65, </key>
+<key name="correction"> 65, </key>
+<key name="correspond"> 2,12,21,24,27, </key>
+<key name="count"> 59, </key>
+<key name="coupl"> 67, </key>
+<key name="cover"> 31, </key>
+<key name="creat"> 1,2,3,4,50,5,6,7,8,9,10,14,15,18,19,20,21,23,24,25,26,28,29,34,35,36,37,40,42,43,44,45,46,47,51,54,55,56,57,59,60,61,62,63,66,67,68,69,70,74,75,77,33,78,79,80,82,83, </key>
+<key name="createanddisplaygo"> 3,4,5,6,8,11,18,37,40,57,59,68,74, </key>
+<key name="creategroup"> 40,83, </key>
+<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="curv"> 3,21,35,65,67, </key>
+<key name="curvatur"> 65, </key>
+<key name="curve2dmod"> 65, </key>
+<key name="curve3dmod"> 65, </key>
+<key name="curvecontinuity"> 65, </key>
+<key name="cut"> 6,17,22,53,59,31, </key>
+<key name="cut_without_f_2"> 59, </key>
+<key name="cylind"> 6,20,23,57,59,74, </key>
+<key name="cylinder"> 18,57, </key>
+<key name="cylinder1"> 57, </key>
+<key name="cylinder2"> 57, </key>
+<key name="cylindrical"> 65, </key>
+<key name="d"> 9,59,65, </key>
+<key name="d1"> 9,74, </key>
+<key name="d2"> 9,74, </key>
+<key name="data"> 33, </key>
+<key name="data_dir"> 59, </key>
+<key name="def"> 44, </key>
+<key name="default"> 51,56,67,79,83, </key>
+<key name="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,61,62,65,67,70,75,77,78,82,83, </key>
+<key name="definit"> 72, </key>
+<key name="definition"> 54, </key>
<key name="deflection"> 2, </key>
-<key name="degenerat"> 32, </key>
-<key name="degre"> 34,59,64,66, </key>
-<key name="delet"> 52,82, </key>
+<key name="degenerat"> 33, </key>
+<key name="degre"> 35,60,65,67, </key>
+<key name="delet"> 53,83, </key>
<key name="density"> 2, </key>
-<key name="depend"> 47,64, </key>
-<key name="derivativ"> 64, </key>
-<key name="descr"> 43, </key>
-<key name="description"> 49,43,66,67,32, </key>
-<key name="design"> 82, </key>
-<key name="destin"> 37,29, </key>
-<key name="destination"> 66, </key>
-<key name="detect"> 11,63,71, </key>
-<key name="detection"> 64, </key>
-<key name="develop"> 50, </key>
-<key name="dialog"> 49,21,64,66,31,75,79,82, </key>
-<key name="differencelist"> 39, </key>
-<key name="different"> 44,32, </key>
-<key name="dimension"> 7,9,22,27,46,32, </key>
-<key name="dir"> 46,48, </key>
-<key name="dir1"> 48, </key>
-<key name="dir2"> 48, </key>
-<key name="direct"> 42, </key>
-<key name="direction"> 2,13,19,24,27,42,46,47,48,50,59,60,64,66,76, </key>
-<key name="dirfaceid1"> 47, </key>
-<key name="dirfaceid1u"> 47, </key>
-<key name="dirfaceid1v"> 47, </key>
-<key name="dirfaceid2"> 47, </key>
-<key name="dirfaceid2u"> 47, </key>
-<key name="dirfaceid2v"> 47, </key>
-<key name="display"> 3,4,5,6,8,10,15,17,36,39,40,50,56,58,63,67,71,32,31,73,75,78,80,82, </key>
-<key name="displayon"> 78, </key>
-<key name="distanc"> 38,43,51,64,32, </key>
-<key name="divid"> 0,58, </key>
-<key name="divideedg"> 0,58, </key>
-<key name="doesn"> 39,50, </key>
-<key name="don"> 7,14,27,48,50,69, </key>
-<key name="doubl"> 46,47,48,66,75, </key>
-<key name="down"> 82, </key>
-<key name="downward"> 50, </key>
-<key name="drag"> 50, </key>
-<key name="drawn"> 50, </key>
-<key name="drop"> 64, </key>
-<key name="dropsmalledg"> 64, </key>
-<key name="du"> 64, </key>
-<key name="dump"> 50,78, </key>
-<key name="duplicat"> 50, </key>
-<key name="dx"> 7,43,66,74,77, </key>
-<key name="dy"> 7,43,66,74,77, </key>
-<key name="dz"> 7,43,74,77, </key>
-<key name="e"> 64, </key>
-<key name="e1"> 49, </key>
-<key name="e2"> 49, </key>
-<key name="e3"> 49, </key>
-<key name="e4"> 49, </key>
-<key name="easi"> 82, </key>
-<key name="edg"> 0,1,49,7,8,9,11,13,14,17,20,23,24,25,27,33,34,36,41,43,53,55,57,58,59,64,65,66,32,73,77,79,80, </key>
-<key name="edge_ind"> 58, </key>
-<key name="edge_point"> 58, </key>
+<key name="depend"> 48,65, </key>
+<key name="derivativ"> 65, </key>
+<key name="descr"> 44, </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="detect"> 12,64,72, </key>
+<key name="detection"> 65, </key>
+<key name="develop"> 51, </key>
+<key name="dialog"> 50,22,32,65,67,76,80,83, </key>
+<key name="differencelist"> 40, </key>
+<key name="different"> 45,33, </key>
+<key name="dimension"> 7,9,23,28,47,33, </key>
+<key name="dir"> 47,49, </key>
+<key name="dir1"> 49, </key>
+<key name="dir2"> 49, </key>
+<key name="direct"> 43, </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>
+<key name="dirfaceid1v"> 48, </key>
+<key name="dirfaceid2"> 48, </key>
+<key name="dirfaceid2u"> 48, </key>
+<key name="dirfaceid2v"> 48, </key>
+<key name="display"> 3,4,5,6,8,11,16,18,37,40,32,41,51,57,59,64,68,72,74,76,33,79,81,83, </key>
+<key name="displayon"> 79, </key>
+<key name="distanc"> 39,44,52,65,33, </key>
+<key name="divid"> 0,59, </key>
+<key name="divideedg"> 0,59, </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>
+<key name="down"> 83, </key>
+<key name="downward"> 51, </key>
+<key name="drag"> 51, </key>
+<key name="drawn"> 51, </key>
+<key name="drop"> 65, </key>
+<key name="dropsmalledg"> 65, </key>
+<key name="du"> 65, </key>
+<key name="dump"> 51,79, </key>
+<key name="duplicat"> 51, </key>
+<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="e1"> 50, </key>
+<key name="e2"> 50, </key>
+<key name="e3"> 50, </key>
+<key name="e4"> 50, </key>
+<key name="easi"> 83, </key>
+<key name="edg"> 0,1,50,7,8,9,12,14,15,18,21,24,25,26,28,34,35,37,42,44,54,56,58,59,60,65,66,67,74,33,78,80,81, </key>
+<key name="edge_ind"> 59, </key>
+<key name="edge_point"> 59, </key>
<key name="edge1"> 8, </key>
<key name="edge2"> 8, </key>
<key name="edge3"> 8, </key>
<key name="edge4"> 8, </key>
<key name="edgeid"> 0, </key>
-<key name="edit"> 82, </key>
-<key name="egdemaxtol"> 32, </key>
-<key name="egdemintol"> 32, </key>
-<key name="eith"> 49,45, </key>
-<key name="element"> 14,28,66,32,30,78,82, </key>
-<key name="elementary"> 49, </key>
-<key name="ellips"> 3,24, </key>
-<key name="els"> 43,58, </key>
-<key name="empty"> 71,72, </key>
-<key name="encounter"> 32, </key>
-<key name="end"> 1,14,27,45,58,64,66,73,74,77, </key>
-<key name="ent"> 82, </key>
-<key name="entir"> 32, </key>
-<key name="entity"> 1,49,7,13,18,19,20,22,23,24,25,27,28,34,41,42,53,54,55,59,65,66,68,69,76,77,79,81,82, </key>
-<key name="equal"> 19,64,66, </key>
-<key name="eras"> 78, </key>
-<key name="eraseall"> 78, </key>
-<key name="eraseon"> 78, </key>
-<key name="error"> 11,39,32, </key>
-<key name="etc"> 25,64, </key>
-<key name="exampl"> 0,1,2,49,7,9,11,12,13,14,15,16,18,19,20,21,22,23,24,26,27,28,33,34,35,38,40,41,42,44,45,46,47,48,51,52,53,54,55,57,58,59,60,61,62,63,64,65,66,68,69,70,71,72,31,30,74,75,76,77,79,80,82, </key>
-<key name="except"> 72, </key>
-<key name="exist"> 54,66,82, </key>
-<key name="expand"> 31, </key>
-<key name="explod"> 5,25,26,36, </key>
-<key name="export"> 37,29,50,31,78, </key>
-<key name="exportation"> 31, </key>
-<key name="extend"> 50, </key>
-<key name="extra"> 32, </key>
-<key name="extract"> 26, </key>
-<key name="extrud"> 53,59, </key>
-<key name="extrusion"> 27, </key>
-<key name="f"> 36,67, </key>
-<key name="f_2"> 58, </key>
-<key name="f_ind_1"> 73, </key>
-<key name="f_ind_2"> 73, </key>
-<key name="f1"> 49, </key>
-<key name="f1_id"> 58, </key>
-<key name="f2"> 49, </key>
-<key name="f3"> 49, </key>
-<key name="f4"> 49, </key>
-<key name="f5"> 49, </key>
-<key name="f6"> 49, </key>
-<key name="fac"> 3,49,8,9,12,14,17,25,26,27,28,33,34,36,38,39,43,47,51,52,53,54,58,59,64,65,66,67,70,72,32,73,81, </key>
-<key name="face_nam"> 58, </key>
-<key name="face_rot"> 58, </key>
-<key name="face1"> 9,17,36, </key>
-<key name="face2"> 9,17,36, </key>
-<key name="face3"> 36, </key>
-<key name="faceid"> 39, </key>
-<key name="facemaxtol"> 32, </key>
-<key name="facemintol"> 32, </key>
-<key name="factor"> 61,73, </key>
-<key name="fail"> 43,58, </key>
-<key name="fals"> 11, </key>
-<key name="fil"> 15,17,34,42,31,78,80, </key>
-<key name="fill"> 71, </key>
-<key name="fillet"> 9,33,73, </key>
-<key name="filletall"> 73, </key>
-<key name="final"> 44,45,54,55,74,81,82, </key>
-<key name="first"> 7,13,19,22,23,42,44,45,47,48,52,54,55,64,67,69,30,74,76,77,81, </key>
-<key name="fit"> 50, </key>
-<key name="fix"> 64, </key>
-<key name="fixfacesiz"> 64, </key>
-<key name="fixshap"> 58,64, </key>
-<key name="flag"> 32, </key>
-<key name="flight_solid"> 58, </key>
-<key name="follow"> 64,66,67,32,30,75,82, </key>
-<key name="format"> 37,29,50,31,78, </key>
-<key name="four"> 49,8,64, </key>
-<key name="fram"> 50, </key>
-<key name="fre"> 11,12,58,63,71, </key>
-<key name="function"> 37,29,50,73, </key>
-<key name="functionaliti"> 49, </key>
-<key name="functionality"> 50,66,82, </key>
-<key name="fus"> 6,10,35,30, </key>
-<key name="fuse_id"> 10, </key>
-<key name="g1"> 64, </key>
-<key name="g2"> 64, </key>
-<key name="gap"> 14, </key>
-<key name="gc"> 45, </key>
-<key name="general"> 49,30, </key>
-<key name="generat"> 27,34,53, </key>
-<key name="generation"> 27,34,37,29,53,59, </key>
-<key name="geom"> 3,4,5,6,8,10,17,36,39,43,56,57,58,67,32,73, </key>
-<key name="geom_object"> 0,1,2,49,7,9,11,12,13,14,16,18,19,20,21,22,23,24,25,26,27,28,33,34,35,38,41,44,46,47,48,51,52,53,54,55,57,59,60,61,62,63,64,65,66,68,69,70,71,72,32,74,76,77,79,82, </key>
-<key name="geometric"> 1,49,13,18,20,23,24,27,28,34,41,53,54,55,59,64,65,68,77,78,79, </key>
-<key name="geometrical"> 3,10,16,36,37,29,46,50,32,31,30,78,80,82, </key>
-<key name="geometry"> 37,29,50,58,64,31, </key>
-<key name="geompy"> 0,1,2,3,4,49,5,6,7,8,9,10,11,13,14,16,17,18,19,20,22,23,24,25,26,27,28,33,34,35,36,38,39,41,42,43,44,45,46,47,48,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,32,30,73,74,76,77,79,82, </key>
-<key name="get"> 5,43,58,32,73, </key>
-<key name="getenv"> 58, </key>
+<key name="edit"> 83, </key>
+<key name="egdemaxtol"> 33, </key>
+<key name="egdemintol"> 33, </key>
+<key name="eith"> 50,46, </key>
+<key name="element"> 15,29,67,31,33,79,83, </key>
+<key name="elementary"> 50, </key>
+<key name="ellips"> 3,25, </key>
+<key name="els"> 44,59, </key>
+<key name="empty"> 72,73, </key>
+<key name="encounter"> 33, </key>
+<key name="end"> 1,15,28,46,59,65,67,74,75,78, </key>
+<key name="ent"> 83, </key>
+<key name="entir"> 33, </key>
+<key name="entity"> 1,50,7,14,19,20,21,23,24,25,26,28,29,35,42,43,54,55,56,60,66,67,69,70,77,78,80,82,83, </key>
+<key name="equal"> 20,65,67, </key>
+<key name="eras"> 79, </key>
+<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="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="expand"> 32, </key>
+<key name="explod"> 5,26,27,37, </key>
+<key name="export"> 38,32,30,51,79, </key>
+<key name="exportation"> 32, </key>
+<key name="extend"> 51, </key>
+<key name="extra"> 33, </key>
+<key name="extract"> 27, </key>
+<key name="extrud"> 54,60, </key>
+<key name="extrusion"> 28,54, </key>
+<key name="f"> 37,68, </key>
+<key name="f_2"> 59, </key>
+<key name="f_ind_1"> 74, </key>
+<key name="f_ind_2"> 74, </key>
+<key name="f1"> 50, </key>
+<key name="f1_id"> 59, </key>
+<key name="f2"> 50, </key>
+<key name="f3"> 50, </key>
+<key name="f4"> 50, </key>
+<key name="f5"> 50, </key>
+<key name="f6"> 50, </key>
+<key name="fab"> 44, </key>
+<key name="fac"> 2,3,50,5,8,9,10,13,15,18,26,27,28,29,34,35,37,39,40,44,48,52,53,54,55,59,60,65,66,67,68,71,73,74,33,82, </key>
+<key name="face_nam"> 59, </key>
+<key name="face_rot"> 59, </key>
+<key name="face1"> 9,18,37, </key>
+<key name="face2"> 9,18,37, </key>
+<key name="face3"> 37, </key>
+<key name="faceid"> 40, </key>
+<key name="facemaxtol"> 33, </key>
+<key name="facemintol"> 33, </key>
+<key name="factor"> 62,74, </key>
+<key name="fail"> 44,59, </key>
+<key name="fals"> 12, </key>
+<key name="field"> 10, </key>
+<key name="fil"> 16,18,35,32,43,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="fit"> 51, </key>
+<key name="fix"> 65, </key>
+<key name="fixfacesiz"> 65, </key>
+<key name="fixshap"> 59,65, </key>
+<key name="flag"> 33, </key>
+<key name="flight_solid"> 59, </key>
+<key name="follow"> 65,67,68,76,31,33,83, </key>
+<key name="format"> 38,32,30,51,79, </key>
+<key name="four"> 50,8,65, </key>
+<key name="fram"> 51, </key>
+<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="fus"> 6,11,36,31, </key>
+<key name="fuse_id"> 11, </key>
+<key name="g1"> 65, </key>
+<key name="g2"> 65, </key>
+<key name="gap"> 15, </key>
+<key name="gc"> 46, </key>
+<key name="general"> 50,31, </key>
+<key name="generat"> 28,35,54, </key>
+<key name="generation"> 28,35,38,30,54,60, </key>
+<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="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>
+<key name="getenv"> 59, </key>
<key name="getfacenearpoint"> 5, </key>
-<key name="getfreeboundary"> 11,58, </key>
-<key name="getfreefacesid"> 12,58, </key>
-<key name="getobjectid"> 82, </key>
-<key name="getsubshap"> 58, </key>
-<key name="getsubshapeid"> 39,58,73, </key>
-<key name="getsubshapeindex"> 5, </key>
-<key name="gg"> 3,4,5,6,8,10,15,17,36,39,43,56,58,67,73,75,80, </key>
-<key name="giv"> 13,24,54,64,31, </key>
-<key name="given"> 3,5,8,9,12,17,22,25,26,28,33,36,38,41,46,51,55,58,64,67,32,73,76, </key>
-<key name="global"> 42,45,50, </key>
-<key name="glu"> 5,38,43,52,58,32, </key>
-<key name="good"> 50, </key>
-<key name="gravity"> 25,43,46,32, </key>
-<key name="great"> 50, </key>
-<key name="group"> 5,37,39,29,50,57,82, </key>
-<key name="group_n"> 82, </key>
-<key name="group1"> 39, </key>
-<key name="handl"> 82, </key>
-<key name="hav"> 64,65, </key>
-<key name="height"> 6,19,22,27,58,73, </key>
-<key name="her"> 82, </key>
+<key name="getfreeboundary"> 12,59, </key>
+<key name="getfreefacesid"> 13,59, </key>
+<key name="getobjectid"> 83, </key>
+<key name="getsubshap"> 59, </key>
+<key name="getsubshapeid"> 5,40,59,74, </key>
+<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="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="handl"> 83, </key>
+<key name="hav"> 65,66, </key>
+<key name="height"> 6,20,23,28,57,59,74, </key>
+<key name="her"> 83, </key>
<key name="hexagonal"> 8, </key>
-<key name="hexahedral"> 49,8,47, </key>
-<key name="hexahedron"> 49, </key>
-<key name="hid"> 50,78, </key>
-<key name="highlight"> 11,32, </key>
-<key name="hol"> 58,71, </key>
-<key name="hold"> 79, </key>
-<key name="how"> 32, </key>
-<key name="i"> 17,39,58,64, </key>
-<key name="i11"> 32, </key>
-<key name="i12"> 32, </key>
-<key name="i13"> 32, </key>
-<key name="i21"> 32, </key>
-<key name="i22"> 32, </key>
-<key name="i23"> 32, </key>
-<key name="i31"> 32, </key>
-<key name="i32"> 32, </key>
-<key name="i33"> 32, </key>
-<key name="id"> 0,12,14,15,25,47,58,70,71,72,73,75,78,80,82, </key>
+<key name="hexahedral"> 50,8,48, </key>
+<key name="hexahedron"> 50, </key>
+<key name="hid"> 51,79, </key>
+<key name="highlight"> 12,33, </key>
+<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="i11"> 33, </key>
+<key name="i12"> 33, </key>
+<key name="i13"> 33, </key>
+<key name="i21"> 33, </key>
+<key name="i22"> 33, </key>
+<key name="i23"> 33, </key>
+<key name="i31"> 33, </key>
+<key name="i32"> 33, </key>
+<key name="i33"> 33, </key>
+<key name="id"> 0,13,15,16,26,48,59,71,72,73,74,76,79,81,83, </key>
<key name="id_arc"> 3, </key>
<key name="id_archimed"> 4, </key>
-<key name="id_axi"> 73, </key>
+<key name="id_axi"> 74, </key>
<key name="id_bezi"> 3, </key>
-<key name="id_box"> 4,5,58,73, </key>
+<key name="id_box"> 4,5,59,74, </key>
<key name="id_box_tr1"> 5, </key>
<key name="id_box_tr2"> 5, </key>
-<key name="id_box1"> 56,58, </key>
-<key name="id_box2"> 56,58, </key>
-<key name="id_box3"> 56, </key>
-<key name="id_chamfer_"> 73, </key>
-<key name="id_chamfer_all"> 73, </key>
-<key name="id_chamfer_f"> 73, </key>
-<key name="id_chamfer_f1"> 73, </key>
+<key name="id_box1"> 57,59, </key>
+<key name="id_box2"> 57,59, </key>
+<key name="id_box3"> 57, </key>
+<key name="id_chamfer_"> 74, </key>
+<key name="id_chamfer_all"> 74, </key>
+<key name="id_chamfer_f"> 74, </key>
+<key name="id_chamfer_f1"> 74, </key>
<key name="id_circle1"> 3, </key>
<key name="id_circle2"> 3, </key>
<key name="id_common"> 6, </key>
-<key name="id_compound"> 5,17,58, </key>
-<key name="id_cone1"> 56, </key>
-<key name="id_cone2"> 56, </key>
-<key name="id_cs1"> 73, </key>
-<key name="id_cs2"> 73, </key>
-<key name="id_cut"> 6,58, </key>
-<key name="id_cut_without_f_2"> 58, </key>
-<key name="id_cylind"> 6,73, </key>
-<key name="id_divid"> 58, </key>
-<key name="id_edg"> 17,36,58, </key>
+<key name="id_compound"> 5,18,37,59, </key>
+<key name="id_cone1"> 57, </key>
+<key name="id_cone2"> 57, </key>
+<key name="id_cs1"> 74, </key>
+<key name="id_cs2"> 74, </key>
+<key name="id_cut"> 6,59, </key>
+<key name="id_cut_without_f_2"> 59, </key>
+<key name="id_cylind"> 6,74, </key>
+<key name="id_cylinder1"> 57, </key>
+<key name="id_cylinder2"> 57, </key>
+<key name="id_divid"> 59, </key>
+<key name="id_edg"> 18,37,59, </key>
<key name="id_edge1"> 8, </key>
<key name="id_edge2"> 8, </key>
<key name="id_edge3"> 8, </key>
<key name="id_edge4"> 8, </key>
<key name="id_ellips"> 3, </key>
-<key name="id_fac"> 3,58,67, </key>
-<key name="id_face_rot"> 58, </key>
-<key name="id_face1"> 17,36, </key>
-<key name="id_face2"> 17,36, </key>
-<key name="id_face3"> 36, </key>
-<key name="id_fil"> 17, </key>
-<key name="id_fillet"> 73, </key>
-<key name="id_filletall"> 73, </key>
+<key name="id_fac"> 3,59,68, </key>
+<key name="id_face_rot"> 59, </key>
+<key name="id_face1"> 18,37, </key>
+<key name="id_face2"> 18,37, </key>
+<key name="id_face3"> 37, </key>
+<key name="id_fil"> 18, </key>
+<key name="id_fillet"> 74, </key>
+<key name="id_filletall"> 74, </key>
<key name="id_fus"> 6, </key>
-<key name="id_glu"> 58, </key>
-<key name="id_group1"> 39, </key>
-<key name="id_importbrep"> 58, </key>
+<key name="id_glu"> 59, </key>
+<key name="id_group1"> 40, </key>
+<key name="id_importbrep"> 59, </key>
<key name="id_interpol"> 3, </key>
<key name="id_line1"> 3, </key>
<key name="id_line2"> 3, </key>
<key name="id_make_block_explod"> 5, </key>
-<key name="id_mirror1"> 73, </key>
-<key name="id_mirror2"> 73, </key>
-<key name="id_mirror3"> 73, </key>
-<key name="id_offset"> 73, </key>
-<key name="id_p"> 58, </key>
+<key name="id_mirror1"> 74, </key>
+<key name="id_mirror2"> 74, </key>
+<key name="id_mirror3"> 74, </key>
+<key name="id_offset"> 74, </key>
+<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_p100"> 3, </key>
<key name="id_p2"> 3,8, </key>
<key name="id_p3"> 3,8, </key>
-<key name="id_p4"> 3,8,73, </key>
+<key name="id_p4"> 3,8,74, </key>
<key name="id_partition1"> 4, </key>
<key name="id_partition2"> 4, </key>
<key name="id_partition3"> 4, </key>
-<key name="id_pip"> 17, </key>
-<key name="id_plan"> 4,73, </key>
+<key name="id_pip"> 18, </key>
+<key name="id_plan"> 4,74, </key>
<key name="id_plane1"> 3, </key>
<key name="id_plane2"> 3, </key>
<key name="id_plane3"> 3, </key>
<key name="id_polylin"> 3, </key>
-<key name="id_position"> 73, </key>
-<key name="id_prism"> 73, </key>
-<key name="id_prism1"> 17, </key>
-<key name="id_prism2"> 17, </key>
+<key name="id_position"> 74, </key>
+<key name="id_prism"> 74, </key>
+<key name="id_prism1"> 18, </key>
+<key name="id_prism2"> 18, </key>
<key name="id_px"> 3, </key>
<key name="id_py"> 3, </key>
<key name="id_pz"> 3, </key>
<key name="id_qface1"> 8, </key>
<key name="id_qface2"> 8, </key>
<key name="id_qface3"> 8, </key>
-<key name="id_result"> 58, </key>
-<key name="id_revolution"> 17, </key>
-<key name="id_rot1d"> 73, </key>
-<key name="id_rot2d"> 73, </key>
-<key name="id_rotation"> 73, </key>
-<key name="id_scal"> 73, </key>
+<key name="id_result"> 59, </key>
+<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_scal"> 74, </key>
<key name="id_section"> 6, </key>
-<key name="id_sew"> 58, </key>
-<key name="id_shap"> 58, </key>
-<key name="id_shell"> 36, </key>
-<key name="id_sketcher1"> 67, </key>
-<key name="id_sketcher2"> 67, </key>
-<key name="id_solid"> 36, </key>
+<key name="id_sew"> 59, </key>
+<key name="id_shap"> 59, </key>
+<key name="id_shell"> 37, </key>
+<key name="id_sketcher1"> 68, </key>
+<key name="id_sketcher2"> 68, </key>
+<key name="id_solid"> 37, </key>
<key name="id_solid1"> 8, </key>
<key name="id_solid2"> 8, </key>
<key name="id_spher"> 6, </key>
-<key name="id_sphere1"> 56, </key>
-<key name="id_sphere2"> 56, </key>
-<key name="id_sphere3"> 56, </key>
-<key name="id_torus1"> 56, </key>
-<key name="id_torus2"> 56, </key>
-<key name="id_tr1d"> 73, </key>
-<key name="id_tr2d"> 73, </key>
-<key name="id_translation1"> 73, </key>
-<key name="id_translation2"> 73, </key>
-<key name="id_translation3"> 73, </key>
+<key name="id_sphere1"> 57, </key>
+<key name="id_sphere2"> 57, </key>
+<key name="id_sphere3"> 57, </key>
+<key name="id_torus1"> 57, </key>
+<key name="id_torus2"> 57, </key>
+<key name="id_tr1d"> 74, </key>
+<key name="id_tr2d"> 74, </key>
+<key name="id_translation1"> 74, </key>
+<key name="id_translation2"> 74, </key>
+<key name="id_translation3"> 74, </key>
<key name="id_vector"> 3, </key>
<key name="id_vector1"> 3, </key>
<key name="id_vector2"> 3, </key>
-<key name="id_vector3"> 17, </key>
-<key name="id_vr"> 73, </key>
+<key name="id_vector3"> 18, </key>
+<key name="id_vr"> 74, </key>
<key name="id_vxy"> 3, </key>
-<key name="id_wir"> 17,36,58, </key>
-<key name="id_wire_clos"> 58, </key>
-<key name="idlist"> 58,73, </key>
-<key name="idlist_"> 73, </key>
-<key name="idlist_f"> 73, </key>
-<key name="if"> 0,11,14,19,28,39,43,50,52,58,64,71,72,32, </key>
-<key name="ig"> 37,29,31, </key>
-<key name="imag"> 44,50,73,78, </key>
-<key name="imp"> 64, </key>
-<key name="implement"> 31, </key>
-<key name="impli"> 64, </key>
-<key name="import"> 3,4,5,6,8,10,17,36,37,39,29,43,56,58,67,32,31,73, </key>
-<key name="importation"> 31, </key>
-<key name="importbrep"> 58, </key>
-<key name="importcomponentgui"> 3,4,5,6,8,10,17,36,39,43,56,58,67,73, </key>
-<key name="impossibl"> 28, </key>
-<key name="improv"> 5, </key>
-<key name="in"> 51,31, </key>
-<key name="includ"> 39, </key>
-<key name="increas"> 14, </key>
-<key name="independent"> 16, </key>
-<key name="index"> 25,82, </key>
-<key name="indic"> 9,25,52,58, </key>
-<key name="indicat"> 48,55, </key>
-<key name="inertia"> 43,32, </key>
-<key name="inform"> 32, </key>
-<key name="initial"> 44,45,46,60,61,74, </key>
-<key name="inquir"> 32, </key>
-<key name="insert"> 14, </key>
-<key name="insid"> 52, </key>
-<key name="instead"> 19, </key>
-<key name="integ"> 47, </key>
-<key name="integer"> 26,47, </key>
-<key name="interactive"> 26, </key>
-<key name="intermediat"> 49, </key>
-<key name="internal"> 58,72, </key>
+<key name="id_wir"> 18,37,59, </key>
+<key name="id_wire_clos"> 59, </key>
+<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="ig"> 38,32,30, </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="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>
+<key name="importbrep"> 59, </key>
+<key name="importcomponentgui"> 3,4,5,6,8,11,18,37,40,44,57,59,68,74, </key>
+<key name="impossibl"> 29, </key>
+<key name="in"> 32,52, </key>
+<key name="includ"> 40, </key>
+<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="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>
+<key name="interactive"> 27, </key>
+<key name="intermediat"> 50, </key>
+<key name="internal"> 59,73, </key>
<key name="interpol"> 3, </key>
-<key name="interpolat"> 20, </key>
-<key name="intersect"> 52, </key>
-<key name="intersection"> 52, </key>
-<key name="introduction"> 49,37,29, </key>
-<key name="invalid"> 43,58,64, </key>
-<key name="invert"> 50, </key>
-<key name="invisibl"> 75, </key>
+<key name="interpolat"> 21, </key>
+<key name="intersect"> 53, </key>
+<key name="intersection"> 53, </key>
+<key name="introduction"> 50,38,30, </key>
+<key name="invalid"> 44,59,65, </key>
+<key name="invert"> 51, </key>
+<key name="invisibl"> 76, </key>
+<key name="inward"> 10, </key>
<key name="isbyparamet"> 0, </key>
-<key name="iscommonvertex"> 14, </key>
-<key name="iso"> 78, </key>
-<key name="isolin"> 40,78, </key>
-<key name="isometric"> 50, </key>
-<key name="isplanarfac"> 36, </key>
-<key name="isplanarwant"> 3,17,28,67, </key>
-<key name="issucces"> 58, </key>
-<key name="isvalid"> 43,58, </key>
-<key name="iteration"> 34, </key>
-<key name="itself"> 14, </key>
-<key name="ix"> 43,32, </key>
-<key name="iy"> 43,32, </key>
-<key name="iz"> 43,32, </key>
-<key name="join"> 64, </key>
-<key name="jpeg"> 50,78, </key>
-<key name="jpg"> 50,78, </key>
-<key name="junction"> 64, </key>
-<key name="just"> 49, </key>
-<key name="k"> 64, </key>
-<key name="keep"> 44,45,60,74,82, </key>
-<key name="keyboard"> 82, </key>
-<key name="ko"> 58, </key>
-<key name="l"> 36,67, </key>
-<key name="last"> 23,42, </key>
-<key name="lc"> 42,45, </key>
-<key name="lcs1"> 45, </key>
-<key name="lcs2"> 45, </key>
-<key name="least"> 20, </key>
-<key name="leav"> 82, </key>
-<key name="left"> 45,50,78, </key>
-<key name="len"> 58, </key>
-<key name="length"> 0,43,66,32, </key>
-<key name="li"> 1,13, </key>
-<key name="limit"> 52, </key>
-<key name="lin"> 2,3,41,66,82, </key>
+<key name="iscommonvertex"> 15, </key>
+<key name="isequal"> 44, </key>
+<key name="iso"> 79, </key>
+<key name="isolin"> 41,79, </key>
+<key name="isometric"> 51, </key>
+<key name="isplanarfac"> 37, </key>
+<key name="isplanarwant"> 3,18,29,68, </key>
+<key name="issucces"> 59, </key>
+<key name="isvalid"> 44,59, </key>
+<key name="iteration"> 35, </key>
+<key name="itself"> 15, </key>
+<key name="ix"> 44,33, </key>
+<key name="iy"> 44,33, </key>
+<key name="iz"> 44,33, </key>
+<key name="join"> 65, </key>
+<key name="jpeg"> 51,79, </key>
+<key name="jpg"> 51,79, </key>
+<key name="junction"> 65, </key>
+<key name="just"> 50, </key>
+<key name="k"> 65, </key>
+<key name="keep"> 45,46,61,75,83, </key>
+<key name="keyboard"> 83, </key>
+<key name="ko"> 59, </key>
+<key name="l"> 37,68, </key>
+<key name="last"> 24,43, </key>
+<key name="lc"> 43,46, </key>
+<key name="lcs1"> 46, </key>
+<key name="lcs2"> 46, </key>
+<key name="least"> 21, </key>
+<key name="leav"> 10,83, </key>
+<key name="left"> 46,51,79, </key>
+<key name="len"> 59, </key>
+<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="line1"> 3, </key>
<key name="line2"> 3, </key>
-<key name="linear"> 66, </key>
-<key name="list"> 3,9,11,12,14,18,20,25,28,34,39,52,57,58,63,64,65,66,68,70,71,72,73,79,82, </key>
+<key name="linear"> 67, </key>
+<key name="list"> 3,9,12,13,15,19,21,26,29,35,40,53,58,59,64,65,66,67,69,71,72,73,74,80,83, </key>
<key name="listchain"> 5, </key>
<key name="listoffaceid"> 9, </key>
-<key name="listofgeomshap"> 70, </key>
-<key name="listofid"> 70, </key>
-<key name="listofind"> 25, </key>
-<key name="listofkeepinsid"> 52, </key>
-<key name="listofmaterial"> 52, </key>
-<key name="listofremoveinsid"> 52, </key>
-<key name="listofshap"> 18,20,52,63,65,68,79, </key>
-<key name="listoftool"> 52, </key>
-<key name="listofwireid"> 71, </key>
-<key name="listshap"> 33, </key>
-<key name="ll"> 50, </key>
-<key name="local"> 42,45,51,66,73, </key>
-<key name="localcs1"> 45, </key>
-<key name="localcs2"> 45, </key>
-<key name="localop"> 5, </key>
-<key name="locat"> 55, </key>
-<key name="location"> 42,45,31,73, </key>
-<key name="lock"> 50, </key>
-<key name="lsc"> 45, </key>
-<key name="ly"> 66,72, </key>
-<key name="magnitud"> 64, </key>
-<key name="main"> 0,1,2,49,7,9,11,12,13,14,16,18,19,20,21,22,23,24,25,26,27,28,33,34,35,38,41,42,43,44,45,46,47,48,51,52,53,54,55,57,59,60,61,62,63,64,65,66,68,69,70,71,72,32,74,76,77,79,81,82, </key>
-<key name="mainshap"> 82, </key>
-<key name="major"> 24,76, </key>
-<key name="mak"> 5,6,9,43,47,48,52,58,73,74,82, </key>
+<key name="listofgeomshap"> 71, </key>
+<key name="listofid"> 71, </key>
+<key name="listofind"> 26, </key>
+<key name="listofkeepinsid"> 53, </key>
+<key name="listofmaterial"> 53, </key>
+<key name="listofremoveinsid"> 53, </key>
+<key name="listofshap"> 19,21,53,64,66,69,80, </key>
+<key name="listoftool"> 53, </key>
+<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="localcs1"> 46, </key>
+<key name="localcs2"> 46, </key>
+<key name="locat"> 56, </key>
+<key name="location"> 32,43,46,74, </key>
+<key name="lock"> 10,51, </key>
+<key name="lsc"> 46, </key>
+<key name="ly"> 67,73, </key>
+<key name="magnitud"> 65, </key>
+<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="make_block_explod"> 5, </key>
-<key name="makearc"> 1,3,17,36,58,67,73, </key>
-<key name="makebezi"> 3,20, </key>
-<key name="makeblockexplod"> 5,26, </key>
-<key name="makeboolean"> 10,30, </key>
-<key name="makebox"> 7,10,43,56,58,73, </key>
-<key name="makeboxdxdydz"> 5,7,43,56,58,73, </key>
-<key name="makeboxtwopnt"> 4,7,39,56, </key>
-<key name="makecdg"> 43,32, </key>
-<key name="makechamf"> 73, </key>
-<key name="makechamferall"> 9,73, </key>
-<key name="makechamferedg"> 9,73, </key>
-<key name="makechamferfac"> 9,73, </key>
-<key name="makecircl"> 3,13, </key>
-<key name="makecirclethreepnt"> 3,13, </key>
-<key name="makecommon"> 6,16, </key>
-<key name="makecompound"> 5,17,18,43,58, </key>
-<key name="makecon"> 19,56,58, </key>
-<key name="makeconer1r2h"> 19,56, </key>
-<key name="makecut"> 6,58, </key>
-<key name="makecylind"> 6,22,58,73, </key>
-<key name="makecylinderrh"> 22, </key>
-<key name="makeedg"> 8,17,23,36,58, </key>
-<key name="makeellips"> 3,24, </key>
-<key name="makefac"> 3,17,28,36,58,67,73, </key>
-<key name="makefacewir"> 28,36, </key>
-<key name="makefil"> 17,34, </key>
-<key name="makefillet"> 33,73, </key>
-<key name="makefilletall"> 33,73, </key>
-<key name="makefus"> 6,35, </key>
-<key name="makegluefac"> 38,43,58, </key>
-<key name="makehalfpartition"> 4,52, </key>
-<key name="makehexa"> 49,8, </key>
-<key name="makehexa2fac"> 49,8, </key>
-<key name="makeinterpol"> 3,20, </key>
-<key name="makelin"> 3,41, </key>
-<key name="makelinetwopnt"> 3,41, </key>
-<key name="makemark"> 42,73, </key>
-<key name="makemirrorbyaxi"> 44,73, </key>
-<key name="makemirrorbyplan"> 44,73, </key>
-<key name="makemirrorbypoint"> 44,73, </key>
-<key name="makemultirotation1d"> 46, </key>
-<key name="makemultirotation2d"> 46, </key>
-<key name="makemultitransformation1d"> 5,47, </key>
-<key name="makemultitransformation2d"> 5,47, </key>
-<key name="makemultitranslation1d"> 48,73, </key>
-<key name="makemultitranslation2d"> 48,73, </key>
-<key name="makeoffset"> 51,73, </key>
-<key name="makepartition"> 4,52, </key>
-<key name="makepip"> 17,53, </key>
-<key name="makeplan"> 3,4,54, </key>
-<key name="makeplanefac"> 3,54, </key>
-<key name="makeplanethreepnt"> 3,54,73, </key>
-<key name="makepolylin"> 3,20, </key>
-<key name="makeposition"> 45,73, </key>
-<key name="makeprism"> 17,27,36, </key>
-<key name="makeprismvech"> 17,27,58,73, </key>
-<key name="makequad"> 49,8, </key>
-<key name="makequad2edg"> 49,8, </key>
-<key name="makequad4vertic"> 49,8, </key>
-<key name="makerevolution"> 17,59, </key>
-<key name="makerotation"> 58,60,73, </key>
-<key name="makescaletransform"> 61,73, </key>
-<key name="makesection"> 6,62, </key>
-<key name="makesew"> 58,63, </key>
-<key name="makeshell"> 36,65, </key>
-<key name="makesketch"> 36,66,67, </key>
-<key name="makesketcheronplan"> 67, </key>
-<key name="makesolid"> 36,68, </key>
-<key name="makespher"> 5,6,10,56,69, </key>
-<key name="makespherepntr"> 56, </key>
-<key name="maketoru"> 56,76, </key>
-<key name="maketorusrr"> 56,76, </key>
-<key name="maketranslation"> 17,73,74, </key>
-<key name="maketranslationtwopoint"> 73,74, </key>
-<key name="maketranslationvector"> 73,74, </key>
-<key name="makevector"> 3,6,17,36,56,58,67,73,77, </key>
-<key name="makevectordxdydz"> 3,4,17,77, </key>
-<key name="makevertex"> 3,4,5,6,8,17,36,39,43,55,56,58,67,73, </key>
-<key name="makevertexoncurv"> 3,55, </key>
-<key name="makevertexwithref"> 3,55, </key>
-<key name="makewir"> 3,17,36,58,67,73,79, </key>
-<key name="manual"> 82, </key>
-<key name="mark"> 50, </key>
-<key name="mas"> 43,32, </key>
-<key name="material"> 52, </key>
-<key name="math"> 43,58,73, </key>
-<key name="matrix"> 43,32, </key>
-<key name="max"> 26,34,43,64, </key>
-<key name="maxdeg"> 17, </key>
-<key name="maxdegre"> 34, </key>
-<key name="maximal"> 26,64,32, </key>
-<key name="maximum"> 26,34,38,64, </key>
-<key name="maxnbfac"> 26, </key>
-<key name="maxtoleranc"> 64, </key>
-<key name="maxtolerance3d"> 64, </key>
-<key name="mean"> 51,55,66,80, </key>
-<key name="measur"> 32, </key>
-<key name="measurement"> 43,32, </key>
-<key name="mechanism"> 31, </key>
-<key name="meet"> 64, </key>
-<key name="memoris"> 50, </key>
-<key name="mention"> 49, </key>
-<key name="menu"> 0,1,2,49,7,9,11,12,13,14,15,16,18,19,20,21,22,23,24,25,26,27,28,33,34,35,38,40,41,42,44,45,46,47,48,51,52,53,54,55,57,59,60,61,62,63,64,65,66,68,69,70,71,72,32,31,74,76,77,78,79,80,81,82, </key>
-<key name="merg"> 64, </key>
-<key name="mesh"> 2,49,50,78, </key>
+<key name="makearc"> 1,3,18,37,59,68,74, </key>
+<key name="makebezi"> 3,21, </key>
+<key name="makeblockexplod"> 5,27, </key>
+<key name="makeboolean"> 11,31, </key>
+<key name="makebox"> 7,11,44,57,59,74, </key>
+<key name="makeboxdxdydz"> 5,7,44,57,59,74, </key>
+<key name="makeboxtwopnt"> 4,7,40,57, </key>
+<key name="makecdg"> 44,33, </key>
+<key name="makechamf"> 74, </key>
+<key name="makechamferall"> 9,74, </key>
+<key name="makechamferedg"> 9,74, </key>
+<key name="makechamferfac"> 9,74, </key>
+<key name="makecircl"> 3,14, </key>
+<key name="makecirclethreepnt"> 3,14, </key>
+<key name="makecommon"> 6,17, </key>
+<key name="makecompound"> 5,18,19,37,44,59, </key>
+<key name="makecon"> 20,57,59, </key>
+<key name="makeconer1r2h"> 20,57, </key>
+<key name="makecut"> 6,59, </key>
+<key name="makecylind"> 6,23,57,59,74, </key>
+<key name="makecylinderrh"> 23,57, </key>
+<key name="makeedg"> 8,18,24,37,59, </key>
+<key name="makeellips"> 3,25, </key>
+<key name="makefac"> 3,18,29,37,59,68,74, </key>
+<key name="makefacewir"> 29,37, </key>
+<key name="makefil"> 18,35, </key>
+<key name="makefillet"> 34,74, </key>
+<key name="makefilletall"> 34,74, </key>
+<key name="makefus"> 6,36, </key>
+<key name="makegluefac"> 39,44,59, </key>
+<key name="makehalfpartition"> 4,53, </key>
+<key name="makehexa"> 50,8, </key>
+<key name="makehexa2fac"> 50,8, </key>
+<key name="makeinterpol"> 3,21, </key>
+<key name="makelin"> 3,42, </key>
+<key name="makelinetwopnt"> 3,42, </key>
+<key name="makemark"> 43,74, </key>
+<key name="makemirrorbyaxi"> 45,74, </key>
+<key name="makemirrorbyplan"> 45,74, </key>
+<key name="makemirrorbypoint"> 45,74, </key>
+<key name="makemultirotation1d"> 47, </key>
+<key name="makemultirotation2d"> 47, </key>
+<key name="makemultitransformation1d"> 5,48, </key>
+<key name="makemultitransformation2d"> 5,48, </key>
+<key name="makemultitranslation1d"> 49,74, </key>
+<key name="makemultitranslation2d"> 49,74, </key>
+<key name="makeoffset"> 52,74, </key>
+<key name="makepartition"> 4,53, </key>
+<key name="makepip"> 18,54, </key>
+<key name="makeplan"> 3,4,55, </key>
+<key name="makeplanefac"> 3,55, </key>
+<key name="makeplanethreepnt"> 3,55,74, </key>
+<key name="makepolylin"> 3,21, </key>
+<key name="makeposition"> 46,74, </key>
+<key name="makeprism"> 18,28,37, </key>
+<key name="makeprismvech"> 18,28,59,74, </key>
+<key name="makequad"> 50,8, </key>
+<key name="makequad2edg"> 50,8, </key>
+<key name="makequad4vertic"> 50,8, </key>
+<key name="makerevolution"> 18,60, </key>
+<key name="makerotation"> 59,61,74, </key>
+<key name="makescaletransform"> 62,74, </key>
+<key name="makesection"> 6,63, </key>
+<key name="makesew"> 59,64, </key>
+<key name="makeshell"> 37,66, </key>
+<key name="makesketch"> 37,67,68, </key>
+<key name="makesketcheronplan"> 68, </key>
+<key name="makesolid"> 37,69, </key>
+<key name="makespher"> 5,6,11,57,70, </key>
+<key name="makespherepntr"> 57, </key>
+<key name="maketoru"> 57,77, </key>
+<key name="maketorusrr"> 57,77, </key>
+<key name="maketranslation"> 18,37,74,75, </key>
+<key name="maketranslationtwopoint"> 74,75, </key>
+<key name="maketranslationvector"> 74,75, </key>
+<key name="makevector"> 3,6,18,37,57,59,68,74,78, </key>
+<key name="makevectordxdydz"> 3,4,18,78, </key>
+<key name="makevertex"> 3,4,5,6,8,18,37,40,44,56,57,59,68,74, </key>
+<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="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>
+<key name="max_nb_fac"> 5, </key>
+<key name="maxdeg"> 18, </key>
+<key name="maxdegre"> 35, </key>
+<key name="maximal"> 27,65,33, </key>
+<key name="maximum"> 27,35,39,65,33, </key>
+<key name="maxnbfac"> 27, </key>
+<key name="maxtoleranc"> 65, </key>
+<key name="maxtolerance3d"> 65, </key>
+<key name="mean"> 52,56,67,81, </key>
+<key name="measur"> 33, </key>
+<key name="measurement"> 44,33, </key>
+<key name="mechanism"> 32, </key>
+<key name="meet"> 65, </key>
+<key name="memoris"> 51, </key>
+<key name="mention"> 50, </key>
+<key name="menu"> 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,32,41,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,77,33,78,79,80,81,82,83, </key>
+<key name="merg"> 65, </key>
+<key name="mesh"> 2,50,51,79, </key>
<key name="meshingdeflection"> 2,4, </key>
-<key name="method"> 45, </key>
-<key name="middl"> 1,55, </key>
-<key name="min"> 26,34,43,32, </key>
-<key name="min_dist"> 43, </key>
-<key name="mindeg"> 17, </key>
-<key name="mindegre"> 34, </key>
-<key name="mindistanc"> 43,32, </key>
-<key name="minimal"> 26,28,43,32, </key>
-<key name="minimum"> 26,34,64, </key>
-<key name="minnbfac"> 26, </key>
-<key name="minor"> 24,76, </key>
-<key name="mirror"> 44,73, </key>
-<key name="mirror1"> 73, </key>
-<key name="mirror2"> 73, </key>
-<key name="mirror3"> 73, </key>
-<key name="mod"> 0,10,14,64,78,80, </key>
-<key name="model"> 2,37,29, </key>
-<key name="modifi"> 14,45, </key>
-<key name="modify"> 45,73, </key>
-<key name="modul"> 37,29,50,31, </key>
-<key name="moment"> 43,32, </key>
-<key name="mous"> 50,78, </key>
-<key name="mov"> 45,48, </key>
-<key name="much"> 82, </key>
-<key name="multi"> 5,46,47,48,73, </key>
-<key name="multirotate1d"> 46,73, </key>
-<key name="multirotate2d"> 46,73, </key>
-<key name="multitud"> 57, </key>
-<key name="must"> 43,46,48,71,32, </key>
-<key name="n"> 64, </key>
-<key name="nam"> 0,1,2,49,7,9,13,14,16,18,19,20,21,22,23,24,27,28,33,34,35,38,41,42,44,45,46,47,48,51,52,53,54,55,59,61,62,63,64,65,68,69,70,71,72,31,74,76,77,78,79,81,82, </key>
-<key name="nb"> 7,27,41,69, </key>
-<key name="nb_sub"> 25, </key>
-<key name="nbit"> 17,34, </key>
-<key name="nbound"> 43, </key>
-<key name="nbox"> 43, </key>
-<key name="nbsplitpoint"> 64, </key>
-<key name="nbtim"> 46,47,48, </key>
-<key name="nbtimes1"> 46,48, </key>
-<key name="nbtimes2"> 46,48, </key>
-<key name="nbtimesu"> 47, </key>
-<key name="nbtimesv"> 47, </key>
-<key name="ncentr"> 43, </key>
-<key name="ncompound"> 43, </key>
-<key name="ne"> 7,9,25,27,28,33,34,46,48,53,59,60,61,64,69,74, </key>
-<key name="necessari"> 64, </key>
-<key name="necessary"> 9,33,64,66,32, </key>
-<key name="need"> 14, </key>
-<key name="negativ"> 51, </key>
-<key name="neighbour"> 64, </key>
-<key name="new"> 1,49,7,13,14,18,19,20,22,23,24,25,27,28,34,41,42,50,53,54,55,59,65,66,68,69,73,76,77,78,79,81,82, </key>
-<key name="ninertia"> 43, </key>
-<key name="nminimal"> 43, </key>
-<key name="nod"> 20, </key>
-<key name="noerror"> 11, </key>
-<key name="non"> 43, </key>
-<key name="normal"> 3,13,24,51,54,76, </key>
-<key name="not"> 19, </key>
-<key name="noth"> 28, </key>
-<key name="notion"> 49, </key>
-<key name="nth"> 64, </key>
-<key name="numb"> 26,34,40,46,47,48,51,58,63,64,71,73,78, </key>
-<key name="number"> 47, </key>
-<key name="object"> 1,2,3,4,5,6,8,9,10,13,15,16,17,18,20,23,24,25,27,28,33,34,36,37,39,29,41,42,44,45,46,50,51,53,54,55,56,57,58,59,60,64,65,67,68,72,32,31,30,73,74,77,78,79,80,82, </key>
-<key name="obtain"> 25,43,45,64, </key>
-<key name="occ"> 0,9,14,33,50,70,71,72,78,82, </key>
-<key name="occur"> 11, </key>
-<key name="offset"> 51,73, </key>
-<key name="ok"> 42,43,58,82, </key>
-<key name="old"> 55, </key>
-<key name="on"> 0,14,21,46,47,48,54,55,58,64,66,73,81, </key>
-<key name="opaqu"> 75, </key>
-<key name="open"> 11,14,50,58,31,82, </key>
-<key name="openwir"> 11,58, </key>
-<key name="operation"> 0,1,2,4,49,5,6,7,9,11,12,13,14,16,19,20,21,22,24,25,26,27,33,34,35,37,38,29,41,44,45,46,47,48,51,52,53,54,55,57,58,59,60,61,62,63,64,66,69,70,71,72,30,73,74,76,77,82, </key>
-<key name="operator"> 58,64, </key>
-<key name="opportunity"> 31, </key>
+<key name="method"> 46, </key>
+<key name="middl"> 1,56, </key>
+<key name="min"> 27,35,44,33, </key>
+<key name="min_dist"> 44, </key>
+<key name="min_nb_fac"> 5, </key>
+<key name="mindeg"> 18, </key>
+<key name="mindegre"> 35, </key>
+<key name="mindistanc"> 44,33, </key>
+<key name="minimal"> 27,29,44,33, </key>
+<key name="minimum"> 27,35,65,33, </key>
+<key name="minnbfac"> 27, </key>
+<key name="minor"> 25,77, </key>
+<key name="mirror"> 45,74, </key>
+<key name="mirror1"> 74, </key>
+<key name="mirror2"> 74, </key>
+<key name="mirror3"> 74, </key>
+<key name="mod"> 0,11,15,65,79,81, </key>
+<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="moment"> 44,33, </key>
+<key name="mous"> 51,79, </key>
+<key name="mov"> 46,49, </key>
+<key name="much"> 83, </key>
+<key name="multi"> 5,47,48,49,74, </key>
+<key name="multirotate1d"> 47,74, </key>
+<key name="multirotate2d"> 47,74, </key>
+<key name="multitud"> 58, </key>
+<key name="must"> 44,47,49,72,33, </key>
+<key name="n"> 65, </key>
+<key name="nam"> 0,1,2,50,7,9,10,14,15,17,19,20,21,22,23,24,25,28,29,34,35,36,39,32,42,43,45,46,47,48,49,52,53,54,55,56,60,62,63,64,65,66,69,70,71,72,73,75,77,78,79,80,82,83, </key>
+<key name="nb"> 5,7,42,70, </key>
+<key name="nb_sub"> 26, </key>
+<key name="nbit"> 18,35, </key>
+<key name="nbound"> 44, </key>
+<key name="nbox"> 44, </key>
+<key name="nbsplitpoint"> 65, </key>
+<key name="nbtim"> 47,48,49, </key>
+<key name="nbtimes1"> 47,49, </key>
+<key name="nbtimes2"> 47,49, </key>
+<key name="nbtimesu"> 48, </key>
+<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="necessari"> 65, </key>
+<key name="necessary"> 9,34,65,67,33, </key>
+<key name="need"> 15, </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="ninertia"> 44, </key>
+<key name="nminimal"> 44, </key>
+<key name="nod"> 21, </key>
+<key name="noerror"> 12, </key>
+<key name="non"> 44, </key>
+<key name="normal"> 3,10,14,25,52,55,77, </key>
+<key name="not"> 20, </key>
+<key name="noth"> 29, </key>
+<key name="notion"> 50, </key>
+<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="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="opaqu"> 76, </key>
+<key name="open"> 12,15,32,51,59,83, </key>
+<key name="openwir"> 12,59, </key>
+<key name="operation"> 0,1,2,4,50,5,6,7,9,10,12,13,14,15,17,20,21,22,23,25,26,27,28,34,35,36,38,39,30,42,45,46,47,48,49,52,53,54,55,56,58,59,60,61,62,63,64,65,67,70,71,72,73,74,75,77,31,78,83, </key>
+<key name="operator"> 59,65, </key>
+<key name="opportunity"> 32, </key>
<key name="opposit"> 7, </key>
-<key name="optimization"> 37,29, </key>
-<key name="option"> 78,80, </key>
-<key name="ord"> 64, </key>
-<key name="orient"> 49, </key>
-<key name="orientat"> 50, </key>
-<key name="orientation"> 50, </key>
-<key name="origin"> 7,19,22,42,50,69,76,77, </key>
-<key name="os"> 58, </key>
-<key name="otherwis"> 0,14,44,45,60,74, </key>
-<key name="our"> 0,1,2,49,7,9,11,12,13,14,15,16,18,19,20,21,22,23,24,26,27,28,33,34,35,38,41,44,45,46,47,48,51,52,53,54,55,57,59,60,61,62,63,64,65,66,68,69,70,71,72,32,30,74,75,76,77,79,80,82, </key>
-<key name="out"> 50,64, </key>
-<key name="outsid"> 52, </key>
-<key name="ox"> 42,66, </key>
-<key name="oy"> 42, </key>
-<key name="oz"> 19,22,42,66, </key>
-<key name="p"> 56, </key>
+<key name="optimization"> 38,30, </key>
+<key name="option"> 79,81, </key>
+<key name="ord"> 65, </key>
+<key name="orient"> 50, </key>
+<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="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>
+<key name="oz"> 20,23,43,67, </key>
+<key name="p"> 57, </key>
<key name="p_25_25_50"> 5, </key>
<key name="p_25_50_25"> 5, </key>
<key name="p_50_25_25"> 5, </key>
<key name="p_on_arc"> 3, </key>
-<key name="p0"> 3,4,17,36,39,56,58,73, </key>
-<key name="p1"> 3,6,8,17,56,58,67,73, </key>
+<key name="p0"> 3,4,8,18,37,40,57,59,74, </key>
+<key name="p1"> 3,6,8,18,37,57,59,68,74, </key>
<key name="p10"> 8, </key>
<key name="p100"> 3, </key>
<key name="p11"> 8, </key>
-<key name="p12"> 8, </key>
-<key name="p13"> 8, </key>
-<key name="p2"> 3,6,8,17,56,58,67,73, </key>
-<key name="p200"> 4,39, </key>
-<key name="p3"> 3,8,17,58,67,73, </key>
-<key name="p4"> 3,8,17,73, </key>
-<key name="p5"> 3,8,17,73, </key>
+<key name="p2"> 3,6,8,18,37,57,59,68,74, </key>
+<key name="p200"> 4,40, </key>
+<key name="p3"> 3,8,18,37,59,68,74, </key>
+<key name="p4"> 3,8,18,74, </key>
+<key name="p5"> 3,8,18,74, </key>
<key name="p50"> 3, </key>
-<key name="p6"> 8,17, </key>
-<key name="p7"> 8,17, </key>
-<key name="p70"> 56, </key>
-<key name="p8"> 8,17, </key>
+<key name="p6"> 8,18, </key>
+<key name="p7"> 8,18, </key>
+<key name="p70"> 57, </key>
+<key name="p8"> 8,18, </key>
<key name="p9"> 8, </key>
-<key name="pan"> 50, </key>
-<key name="parallel"> 7,41,42,64, </key>
-<key name="paramet"> 0,14,55,64, </key>
-<key name="parameter"> 4,15,34,58,64,66,75,78,80, </key>
-<key name="parameterization"> 64, </key>
-<key name="parametric"> 64, </key>
+<key name="pan"> 51, </key>
+<key name="parallel"> 7,42,43,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="parameterization"> 65, </key>
+<key name="parametric"> 65, </key>
<key name="paramt"> 0, </key>
-<key name="part"> 16,19,50, </key>
-<key name="partition"> 4,52, </key>
+<key name="part"> 17,20,51, </key>
+<key name="partition"> 4,53, </key>
<key name="partition1"> 4, </key>
<key name="partition2"> 4, </key>
<key name="partition3"> 4, </key>
-<key name="pas"> 20,41,46,54,66, </key>
-<key name="path"> 17,53, </key>
-<key name="pathshap"> 53, </key>
-<key name="perform"> 4,25,52,73, </key>
-<key name="perpendicular"> 66, </key>
-<key name="pi"> 46,58,73, </key>
-<key name="pictur"> 45, </key>
-<key name="pip"> 17,53, </key>
-<key name="plac"> 45,50,64, </key>
-<key name="plan"> 2,3,4,44,50,52,54,66,73,81,82, </key>
-<key name="planar"> 28,66,67,73,81, </key>
+<key name="pas"> 5,21,42,44,47,55,67, </key>
+<key name="path"> 18,54, </key>
+<key name="pathshap"> 54, </key>
+<key name="perform"> 4,26,53,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="planar"> 29,67,68,74,82, </key>
<key name="plane1"> 3, </key>
<key name="plane2"> 3, </key>
<key name="plane3"> 3, </key>
-<key name="plug"> 31, </key>
+<key name="plug"> 32, </key>
<key name="plung"> 2, </key>
-<key name="png"> 50,78, </key>
-<key name="point"> 0,1,3,4,49,7,8,13,14,17,19,20,22,23,24,27,36,39,41,42,43,44,46,50,51,54,55,58,61,64,66,67,69,32,73,74,76,77,82, </key>
-<key name="point1"> 1,3,7,8,13,23,27,41,54,74,77, </key>
-<key name="point2"> 1,3,7,8,13,23,27,41,54,74,77, </key>
-<key name="point3"> 1,3,8,13,54, </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="point3"> 1,3,8,14,55, </key>
<key name="point4"> 3,8, </key>
<key name="point5"> 3, </key>
-<key name="pointcoordinat"> 43,32, </key>
-<key name="polylin"> 3,20, </key>
-<key name="pop"> 15,80, </key>
-<key name="position"> 0,45,50,55,64,73,81, </key>
-<key name="positional"> 64, </key>
-<key name="possibiliti"> 28, </key>
-<key name="possibility"> 64, </key>
-<key name="possibl"> 5,20,57,64,32, </key>
-<key name="precision"> 58,63, </key>
-<key name="predefin"> 66, </key>
-<key name="pres"> 42,50, </key>
-<key name="presentation"> 78, </key>
-<key name="presum"> 42, </key>
-<key name="preview"> 50, </key>
-<key name="previou"> 64,66, </key>
-<key name="primitiv"> 7,19,22,37,29,56,69,76, </key>
-<key name="print"> 43,58,32, </key>
-<key name="prism"> 17,27,36,58,73, </key>
-<key name="prism_edg"> 73, </key>
-<key name="prism_fac"> 36,73, </key>
-<key name="prism1"> 17, </key>
-<key name="prism2"> 17, </key>
-<key name="problem"> 64, </key>
-<key name="proces"> 14,58,64,70, </key>
-<key name="processshap"> 58,64, </key>
-<key name="produc"> 2,9,14,16,21,26,33,35,44,46,47,48,51,52,57,60,61,62,63,64,70,73,74, </key>
-<key name="program"> 39, </key>
-<key name="projection"> 46,81, </key>
-<key name="prop"> 43, </key>
-<key name="propagat"> 5,57, </key>
-<key name="propagation"> 5,57, </key>
-<key name="properti"> 43,32, </key>
-<key name="proportional"> 64, </key>
-<key name="provid"> 0,1,2,49,7,9,11,12,13,14,15,16,18,19,20,21,22,23,24,26,27,28,33,34,35,38,41,44,45,46,47,48,50,51,52,53,54,55,57,59,60,61,62,63,64,65,66,68,69,70,71,72,30,74,75,76,77,79,80,82, </key>
-<key name="ps"> 58, </key>
+<key name="pointcoordinat"> 44,33, </key>
+<key name="polylin"> 3,21, </key>
+<key name="pop"> 16,81, </key>
+<key name="position"> 0,46,51,56,65,74,82, </key>
+<key name="positional"> 65, </key>
+<key name="possibiliti"> 29, </key>
+<key name="possibility"> 65, </key>
+<key name="possibl"> 5,21,58,65,33, </key>
+<key name="precision"> 59,64, </key>
+<key name="predefin"> 67, </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>
+<key name="print"> 44,59,33, </key>
+<key name="prism"> 18,28,37,59,74, </key>
+<key name="prism_edg"> 74, </key>
+<key name="prism_fac"> 37,74, </key>
+<key name="prism1"> 18, </key>
+<key name="prism2"> 18, </key>
+<key name="problem"> 65, </key>
+<key name="proces"> 15,59,65,71, </key>
+<key name="processshap"> 59,65, </key>
+<key name="produc"> 2,9,15,17,22,27,34,36,45,47,48,49,52,53,58,61,62,63,64,65,71,74,75, </key>
+<key name="program"> 40, </key>
+<key name="project"> 10, </key>
+<key name="projection"> 47,82, </key>
+<key name="prop"> 44, </key>
+<key name="propagat"> 5,58, </key>
+<key name="propagation"> 5,58, </key>
+<key name="properti"> 44,33, </key>
+<key name="proportional"> 65, </key>
+<key name="provid"> 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,51,52,53,54,55,56,58,60,61,62,63,64,65,66,67,69,70,71,72,73,75,76,77,31,78,80,81,83, </key>
+<key name="ps"> 59, </key>
<key name="put"> 2, </key>
-<key name="px"> 3,17,36,58,73, </key>
-<key name="pxy"> 73, </key>
-<key name="pxyz"> 17,36,73, </key>
-<key name="py"> 3,17,36,58,73, </key>
-<key name="py1"> 58, </key>
-<key name="python"> 32, </key>
-<key name="pz"> 3,4,17,36,58,73, </key>
+<key name="px"> 3,18,37,59,74, </key>
+<key name="pxy"> 74, </key>
+<key name="pxyz"> 18,37,74, </key>
+<key name="py"> 3,18,37,59,74, </key>
+<key name="py1"> 59, </key>
+<key name="python"> 33, </key>
+<key name="pz"> 3,4,18,37,59,74, </key>
<key name="qface1"> 8, </key>
<key name="qface2"> 8, </key>
<key name="qface3"> 8, </key>
<key name="qface5"> 8, </key>
<key name="qface6"> 8, </key>
<key name="qface7"> 8, </key>
-<key name="qface8"> 8, </key>
-<key name="quadrangl"> 49,8,54,32, </key>
-<key name="r"> 33,36,67, </key>
-<key name="radio"> 82, </key>
-<key name="radiu"> 3,9,13,19,22,24,33,66,69,73,76, </key>
-<key name="radius"> 3,19,24,76, </key>
-<key name="radius1"> 6,19,56,58,73, </key>
-<key name="radius2"> 19,56, </key>
-<key name="radius3"> 56, </key>
-<key name="radiusmajor"> 24,76, </key>
-<key name="radiusminor"> 24,76, </key>
-<key name="rais"> 39,43,58, </key>
-<key name="rang"> 0,25,37,29,31,75, </key>
-<key name="recent"> 78, </key>
-<key name="reconstruction"> 52, </key>
-<key name="redefin"> 78, </key>
-<key name="reduc"> 64, </key>
-<key name="referenc"> 42,55, </key>
-<key name="refresh"> 78, </key>
-<key name="regard"> 55, </key>
-<key name="relativ"> 66, </key>
-<key name="relative"> 73, </key>
-<key name="relevant"> 80, </key>
-<key name="remain"> 50,80, </key>
-<key name="remaind"> 45, </key>
-<key name="remot"> 50, </key>
-<key name="remov"> 39,44,45,50,58,60,64,70,71,72,74,82, </key>
-<key name="removeobject"> 39,82, </key>
-<key name="removeweb"> 52, </key>
-<key name="renam"> 78, </key>
-<key name="repair"> 0,11,12,14,37,38,29,58,63,64,70,71,72, </key>
-<key name="repetition"> 46,48, </key>
-<key name="represent"> 50,54, </key>
-<key name="representation"> 50, </key>
-<key name="requir"> 64,31, </key>
-<key name="requireddegre"> 64, </key>
-<key name="requirednbsegment"> 64, </key>
-<key name="res"> 58, </key>
-<key name="reset"> 50, </key>
-<key name="resiz"> 50, </key>
-<key name="respect"> 38,66, </key>
-<key name="restor"> 50, </key>
-<key name="restriction"> 64, </key>
-<key name="result"> 0,1,2,4,49,5,6,7,9,11,12,13,14,16,18,19,20,21,22,23,24,25,26,27,28,33,34,35,38,41,44,46,47,48,50,51,52,53,54,55,57,58,59,60,61,62,63,64,65,66,68,69,70,71,72,32,73,74,76,77,79,82, </key>
-<key name="resultant"> 64, </key>
-<key name="retriev"> 12, </key>
-<key name="return"> 25,26,43,50,32,82, </key>
-<key name="revers"> 46,60, </key>
-<key name="revolution"> 17,59,64, </key>
-<key name="right"> 15,45,78,80, </key>
-<key name="ris"> 64, </key>
-<key name="rot1d"> 73, </key>
-<key name="rot2d"> 73, </key>
-<key name="rotat"> 46,50,59,60,73, </key>
-<key name="rotation"> 46,50,58,60,73, </key>
-<key name="rul"> 64, </key>
-<key name="runtimeerror"> 43,58, </key>
-<key name="s"> 11,13,14,17,47,58,61,70,71,72,82, </key>
-<key name="s1"> 16,35,62, </key>
-<key name="s2"> 16,35,62, </key>
-<key name="salom"> 3,4,5,6,8,10,17,36,37,39,29,43,56,58,67,73, </key>
-<key name="sam"> 46,64,66,73,82, </key>
-<key name="sameparamet"> 64, </key>
-<key name="satisfy"> 32, </key>
-<key name="sav"> 50,31, </key>
-<key name="scal"> 61,73, </key>
-<key name="scen"> 50, </key>
-<key name="script"> 0,1,2,49,7,9,11,12,13,14,15,16,18,19,20,21,22,23,24,26,27,28,33,34,35,38,41,44,45,46,47,48,51,52,53,54,55,57,59,60,61,62,63,64,65,66,68,69,70,71,72,32,30,74,75,76,77,79,80,82, </key>
-<key name="se"> 45,50,80, </key>
-<key name="search"> 31, </key>
-<key name="second"> 7,13,19,22,42,44,45,47,48,52,54,55,64,67,69,30,74,76,77,81, </key>
-<key name="section"> 2,6,50,62,30, </key>
-<key name="seem"> 58, </key>
-<key name="segment"> 64,66, </key>
-<key name="select"> 0,1,2,4,7,9,11,12,13,14,15,16,18,19,20,21,22,23,24,25,26,27,28,33,34,35,38,39,41,42,44,45,46,47,48,50,51,52,53,54,55,57,58,59,60,61,62,63,64,65,66,68,69,70,71,72,32,31,74,76,77,78,79,80,81,82, </key>
-<key name="selection"> 33,66,81,82, </key>
-<key name="sens"> 52, </key>
-<key name="separat"> 30, </key>
-<key name="serv"> 20,27,53,59, </key>
-<key name="set"> 0,14,26,28,36,46,51,55,81, </key>
-<key name="setcolor"> 10,15, </key>
-<key name="setdisplaymod"> 3,4,5,6,8,10,17,36,56,58,67,73,80, </key>
-<key name="settransparency"> 3,10,36,67,75, </key>
-<key name="sew"> 58,63, </key>
-<key name="sg"> 5,39,58,78, </key>
-<key name="shad"> 78,80, </key>
-<key name="shap"> 0,2,4,9,11,12,14,16,18,21,25,27,33,34,35,37,38,39,29,40,43,44,45,46,48,50,51,52,53,57,58,59,60,61,62,63,64,70,71,72,32,73,74,75,78,82, </key>
-<key name="shape1"> 32,30, </key>
-<key name="shape2"> 32,30, </key>
-<key name="shapelistcompound"> 17, </key>
-<key name="shapes_of_given_typ"> 25, </key>
-<key name="shapetyp"> 33,36,39,58,73,82, </key>
-<key name="shapetypeedg"> 73, </key>
-<key name="shapetypefac"> 73, </key>
-<key name="shar"> 12, </key>
-<key name="sharp"> 64, </key>
-<key name="shel"> 12,18,36,51,65,68,80, </key>
-<key name="shell"> 49,27,36,51,53,59,65,68, </key>
-<key name="shift"> 45,55,79,82, </key>
-<key name="short"> 15,80, </key>
-<key name="shortcut"> 28, </key>
-<key name="should"> 27,41,70,71,32, </key>
-<key name="show"> 50,32, </key>
-<key name="shown"> 42, </key>
-<key name="sid"> 54, </key>
-<key name="sign"> 51, </key>
-<key name="similar"> 54, </key>
-<key name="simp"> 42, </key>
-<key name="simpl"> 46,47,48, </key>
-<key name="singl"> 28, </key>
-<key name="six"> 49,8, </key>
-<key name="siz"> 9,54,64, </key>
-<key name="sketch"> 36,66,67, </key>
-<key name="sketcher"> 36, </key>
-<key name="sketcher1"> 36,67, </key>
-<key name="sketcher2"> 36,67, </key>
-<key name="sketcher3"> 36, </key>
-<key name="skip"> 82, </key>
-<key name="small"> 50,64, </key>
-<key name="so"> 28,45, </key>
-<key name="solid"> 49,7,8,19,22,25,27,36,47,51,53,59,68,69,76, </key>
+<key name="quadrangl"> 50,8,55,33, </key>
+<key name="quantiti"> 33, </key>
+<key name="r"> 34,37,68, </key>
+<key name="radio"> 83, </key>
+<key name="radiu"> 3,9,14,20,23,25,34,67,70,74,77, </key>
+<key name="radius"> 3,20,25,77, </key>
+<key name="radius1"> 6,20,57,59,74, </key>
+<key name="radius2"> 20,57, </key>
+<key name="radius3"> 57, </key>
+<key name="radiusmajor"> 25,77, </key>
+<key name="radiusminor"> 25,77, </key>
+<key name="rais"> 40,44,59, </key>
+<key name="rang"> 0,26,38,32,30,76, </key>
+<key name="recent"> 79, </key>
+<key name="reconstruction"> 53, </key>
+<key name="redefin"> 79, </key>
+<key name="reduc"> 65, </key>
+<key name="referenc"> 43,56, </key>
+<key name="refresh"> 79, </key>
+<key name="regard"> 56, </key>
+<key name="relativ"> 67, </key>
+<key name="relevant"> 81, </key>
+<key name="remain"> 51,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>
+<key name="removeobject"> 40,83, </key>
+<key name="removeweb"> 53, </key>
+<key name="renam"> 79, </key>
+<key name="repair"> 0,10,12,13,15,38,39,30,59,64,65,71,72,73, </key>
+<key name="repetition"> 47,49, </key>
+<key name="represent"> 51,55, </key>
+<key name="representation"> 51, </key>
+<key name="requir"> 32,65, </key>
+<key name="requireddegre"> 65, </key>
+<key name="requirednbsegment"> 65, </key>
+<key name="res"> 59, </key>
+<key name="reset"> 51, </key>
+<key name="resiz"> 51, </key>
+<key name="respect"> 39,67, </key>
+<key name="restor"> 51, </key>
+<key name="restriction"> 65, </key>
+<key name="result"> 0,1,2,4,50,5,6,7,9,10,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,51,52,53,54,55,56,58,59,60,61,62,63,64,65,66,67,69,70,71,72,73,74,75,77,33,78,80,83, </key>
+<key name="resultant"> 65, </key>
+<key name="retriev"> 13, </key>
+<key name="return"> 26,27,44,51,33,83, </key>
+<key name="revers"> 10,47,61, </key>
+<key name="revolution"> 18,60,65, </key>
+<key name="right"> 16,46,79,81, </key>
+<key name="ris"> 65, </key>
+<key name="rot1d"> 74, </key>
+<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="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>
+<key name="s1"> 17,36,63, </key>
+<key name="s2"> 17,36,63, </key>
+<key name="salom"> 3,4,5,6,8,11,18,37,38,40,30,44,57,59,68,74, </key>
+<key name="sam"> 47,65,67,74,83, </key>
+<key name="sameparamet"> 65, </key>
+<key name="satisfy"> 33, </key>
+<key name="sav"> 32,51, </key>
+<key name="scal"> 62,74, </key>
+<key name="scen"> 51, </key>
+<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="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="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>
+<key name="sew"> 59,64, </key>
+<key name="sg"> 5,40,59,79, </key>
+<key name="shad"> 79,81, </key>
+<key name="shap"> 0,2,4,9,10,12,13,15,17,19,22,26,28,34,35,36,37,38,39,40,30,41,44,45,46,47,49,51,52,53,54,58,59,60,61,62,63,64,65,71,72,73,74,75,76,33,79,83, </key>
+<key name="shape1"> 31,33, </key>
+<key name="shape2"> 31,33, </key>
+<key name="shapelistcompound"> 18,37, </key>
+<key name="shapes_of_given_typ"> 26, </key>
+<key name="shapetyp"> 34,37,40,59,74,83, </key>
+<key name="shapetypeedg"> 74, </key>
+<key name="shapetypefac"> 74, </key>
+<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="shift"> 46,56,80,83, </key>
+<key name="short"> 16,81, </key>
+<key name="shortcut"> 29, </key>
+<key name="should"> 42,71,72,33, </key>
+<key name="show"> 51,33, </key>
+<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="singl"> 29, </key>
+<key name="six"> 50,8, </key>
+<key name="siz"> 9,55,65, </key>
+<key name="sketch"> 37,67,68, </key>
+<key name="sketcher"> 37, </key>
+<key name="sketcher1"> 37,68, </key>
+<key name="sketcher2"> 37,68, </key>
+<key name="sketcher3"> 37, </key>
+<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="solid1"> 8, </key>
<key name="solid2"> 8, </key>
-<key name="sort"> 25, </key>
-<key name="sourc"> 59, </key>
-<key name="spac"> 13,20,54,55,32,77, </key>
-<key name="specifi"> 0,7,9,14,33,42,47,58,64,72,73, </key>
-<key name="specific"> 49, </key>
-<key name="specify"> 0,60, </key>
-<key name="spher"> 5,6,10,56,69,73, </key>
-<key name="sphere1"> 56, </key>
-<key name="sphere2"> 56, </key>
-<key name="sphere3"> 56, </key>
-<key name="splin"> 3,20, </key>
-<key name="split"> 0,64, </key>
-<key name="splitangl"> 64, </key>
-<key name="splitclosedfac"> 64, </key>
-<key name="splitcontinuity"> 64, </key>
-<key name="spot"> 64, </key>
-<key name="sqrt"> 43, </key>
-<key name="stag"> 49, </key>
-<key name="standard"> 15,78, </key>
-<key name="start"> 1,27,45,66,74,77, </key>
-<key name="step"> 37,29,46,48,31, </key>
-<key name="step1"> 48, </key>
-<key name="step2"> 48, </key>
-<key name="still"> 64, </key>
-<key name="str"> 66, </key>
-<key name="strict"> 50, </key>
-<key name="strip"> 64, </key>
-<key name="study"> 3,4,5,6,8,17,36,56,58,67,73, </key>
-<key name="sub"> 25,50,58,71,82, </key>
-<key name="sub_shape_id"> 58, </key>
-<key name="subfacelist"> 39, </key>
-<key name="submenu"> 32, </key>
-<key name="subshap"> 25,82, </key>
-<key name="subshapeall"> 25, </key>
-<key name="subshapeallid"> 25, </key>
-<key name="subshapeallsort"> 25,36,39,58,73, </key>
-<key name="subshapeallsortedid"> 25, </key>
-<key name="subshapeid"> 82, </key>
-<key name="subshapesort"> 25, </key>
-<key name="subtraction"> 45, </key>
-<key name="successful"> 43, </key>
-<key name="sup_fac"> 58, </key>
-<key name="suppres"> 58,70,71,72, </key>
-<key name="suppressfac"> 58,70, </key>
-<key name="suppresshol"> 58,71, </key>
-<key name="suppressinternalwir"> 58,72, </key>
-<key name="surfac"> 28,34,43,51,64,32,73, </key>
-<key name="surfacecontinuity"> 64, </key>
-<key name="surfacemod"> 64, </key>
-<key name="symmetric"> 73, </key>
-<key name="symmetrical"> 44,73, </key>
-<key name="symmetry"> 44, </key>
-<key name="system"> 19,22,42,45,69,73,81, </key>
-<key name="t"> 7,27,39,50,69, </key>
-<key name="tak"> 64, </key>
-<key name="tangent"> 64,66, </key>
-<key name="tangential"> 64, </key>
-<key name="target"> 26,66, </key>
-<key name="technology"> 50, </key>
-<key name="tetrahedral"> 49, </key>
-<key name="textual"> 66,67, </key>
-<key name="th"> 64, </key>
-<key name="theendlc"> 45, </key>
-<key name="them"> 7,25,50,64,70,79,82, </key>
-<key name="theobject"> 45, </key>
-<key name="therefor"> 66, </key>
-<key name="theshap"> 38,58, </key>
-<key name="thestartlc"> 45, </key>
-<key name="thetoleranc"> 38, </key>
+<key name="sort"> 26, </key>
+<key name="sourc"> 60, </key>
+<key name="spac"> 14,21,55,56,33,78, </key>
+<key name="specifi"> 0,7,9,15,34,43,48,59,65,73,74, </key>
+<key name="specific"> 50, </key>
+<key name="specify"> 0,61, </key>
+<key name="spher"> 5,6,11,57,70,74, </key>
+<key name="sphere1"> 57, </key>
+<key name="sphere2"> 57, </key>
+<key name="sphere3"> 57, </key>
+<key name="splin"> 3,21, </key>
+<key name="split"> 0,65, </key>
+<key name="splitangl"> 65, </key>
+<key name="splitclosedfac"> 65, </key>
+<key name="splitcontinuity"> 65, </key>
+<key name="spot"> 65, </key>
+<key name="sqrt"> 44, </key>
+<key name="stag"> 50, </key>
+<key name="standard"> 16,79, </key>
+<key name="start"> 1,28,46,67,75,78, </key>
+<key name="step"> 38,32,30,47,49, </key>
+<key name="step1"> 49, </key>
+<key name="step2"> 49, </key>
+<key name="still"> 65, </key>
+<key name="str"> 67, </key>
+<key name="strict"> 51, </key>
+<key name="strip"> 65, </key>
+<key name="study"> 3,4,5,6,8,18,37,57,59,68,74, </key>
+<key name="sub"> 26,51,59,72,83, </key>
+<key name="sub_shape_id"> 59, </key>
+<key name="subfacelist"> 40, </key>
+<key name="submenu"> 33, </key>
+<key name="subshap"> 26,83, </key>
+<key name="subshapeall"> 26, </key>
+<key name="subshapeallid"> 26, </key>
+<key name="subshapeallsort"> 26,37,40,59,74, </key>
+<key name="subshapeallsortedid"> 26, </key>
+<key name="subshapeid"> 83, </key>
+<key name="subshapesort"> 26, </key>
+<key name="subtraction"> 46, </key>
+<key name="successful"> 44, </key>
+<key name="sup_fac"> 59, </key>
+<key name="suppres"> 59,71,72,73, </key>
+<key name="suppressfac"> 59,71, </key>
+<key name="suppresshol"> 59,72, </key>
+<key name="suppressinternalwir"> 59,73, </key>
+<key name="surfac"> 29,35,44,52,65,74,33, </key>
+<key name="surfacecontinuity"> 65, </key>
+<key name="surfacemod"> 65, </key>
+<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="t"> 7,10,28,40,51,70, </key>
+<key name="tak"> 65, </key>
+<key name="tangent"> 65,67, </key>
+<key name="tangential"> 65, </key>
+<key name="target"> 27,67, </key>
+<key name="technology"> 51, </key>
+<key name="test"> 33, </key>
+<key name="tetrahedral"> 50, </key>
+<key name="textual"> 67,68, </key>
+<key name="th"> 65, </key>
+<key name="theendlc"> 46, </key>
+<key name="theischeckgeom"> 33, </key>
+<key name="them"> 7,26,51,65,71,80,83, </key>
+<key name="theobject"> 46, </key>
+<key name="therefor"> 67, </key>
+<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,13,17,20,36,42,44,54,55,67,73,81, </key>
-<key name="thu"> 64,75, </key>
-<key name="tim"> 20,46,48,55,73, </key>
-<key name="tobezi"> 64, </key>
-<key name="togeth"> 82, </key>
-<key name="tol"> 43, </key>
-<key name="tol2d"> 17,34, </key>
-<key name="tol3d"> 17,34, </key>
-<key name="toleranc"> 14,34,38,43,58,64,32, </key>
-<key name="tolerance2d"> 64, </key>
-<key name="tolerance3d"> 58,64, </key>
-<key name="tool"> 43,52,32, </key>
-<key name="toolbar"> 50, </key>
+<key name="thre"> 1,3,14,18,21,37,43,45,55,56,68,74,82, </key>
+<key name="thu"> 65,76, </key>
+<key name="tim"> 21,47,49,56,74, </key>
+<key name="tobezi"> 65, </key>
+<key name="togeth"> 83, </key>
+<key name="tol"> 44, </key>
+<key name="tol2d"> 18,35, </key>
+<key name="tol3d"> 18,35, </key>
+<key name="toleranc"> 15,35,39,44,59,65,33, </key>
+<key name="tolerance2d"> 65, </key>
+<key name="tolerance3d"> 59,65, </key>
+<key name="tool"> 44,53,33, </key>
+<key name="toolbar"> 51,54, </key>
<key name="top_fac"> 5, </key>
<key name="top_face_ind"> 5, </key>
-<key name="toru"> 56,76, </key>
-<key name="torus"> 56, </key>
-<key name="torus1"> 56, </key>
-<key name="torus2"> 56, </key>
-<key name="tr1d"> 73, </key>
-<key name="tr2d"> 73, </key>
-<key name="transform"> 5,16,47,61,73, </key>
+<key name="topology"> 33, </key>
+<key name="toru"> 57,77, </key>
+<key name="torus"> 57, </key>
+<key name="torus1"> 57, </key>
+<key name="torus2"> 57, </key>
+<key name="tr1d"> 74, </key>
+<key name="tr2d"> 74, </key>
+<key name="transform"> 5,17,48,62,74, </key>
<key name="transformat"> 5, </key>
-<key name="transformation"> 5,9,33,37,29,44,45,46,47,48,50,51,60,61,73,74, </key>
-<key name="translat"> 45,46,48,51,73,74, </key>
-<key name="translation"> 46,47,48,73,74, </key>
-<key name="translation1"> 73, </key>
-<key name="translation2"> 73, </key>
-<key name="translation3"> 73, </key>
-<key name="transparency"> 10,75,78, </key>
-<key name="transparent"> 75,80, </key>
-<key name="triangl"> 50, </key>
-<key name="trihedron"> 50, </key>
-<key name="trimsiz"> 3,4,54, </key>
-<key name="tru"> 0,14,52,58,32, </key>
-<key name="truncat"> 19, </key>
-<key name="try"> 28, </key>
-<key name="tt"> 36,67, </key>
-<key name="tui"> 0,1,2,49,7,9,11,12,13,14,15,16,18,19,20,21,22,23,24,25,26,27,28,33,34,35,38,41,42,44,45,46,47,48,51,52,53,54,55,57,59,60,61,62,63,64,65,66,68,69,70,71,72,32,30,74,75,76,77,78,79,80,82, </key>
-<key name="tupl"> 32, </key>
-<key name="two"> 0,3,4,49,7,8,9,12,16,17,19,23,35,36,38,39,45,46,47,48,52,64,67,69,32,73,76,81,82, </key>
-<key name="typ"> 20,25,26,52,64,66,32,30,82, </key>
-<key name="u"> 64, </key>
-<key name="underly"> 14,64, </key>
-<key name="unionlist"> 39, </key>
-<key name="up"> 15,19,80, </key>
-<key name="updat"> 78, </key>
-<key name="updateobjbrows"> 5,39,58, </key>
-<key name="us"> 2,49,14,25,26,34,37,29,45,47,50,64,66,72,32,30,75,82, </key>
-<key name="useful"> 0,1,2,49,7,9,11,12,13,14,15,16,18,19,20,21,22,23,24,26,27,28,33,34,35,38,41,44,45,46,47,48,51,52,53,54,55,57,59,60,61,62,63,64,65,66,68,69,70,71,72,30,74,75,76,77,78,79,80,82, </key>
-<key name="v"> 6,56,58,73, </key>
-<key name="v1"> 49, </key>
-<key name="v2"> 49, </key>
-<key name="v3"> 49, </key>
-<key name="v4"> 49, </key>
+<key name="transformation"> 5,9,34,38,30,45,46,47,48,49,51,52,61,62,74,75, </key>
+<key name="translat"> 46,47,49,52,74,75, </key>
+<key name="translation"> 47,48,49,74,75, </key>
+<key name="translation1"> 74, </key>
+<key name="translation2"> 74, </key>
+<key name="translation3"> 74, </key>
+<key name="transparency"> 11,76,79, </key>
+<key name="transparent"> 76,81, </key>
+<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="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="typ"> 21,26,27,53,65,67,31,33,83, </key>
+<key name="u"> 65, </key>
+<key name="uncheck"> 10, </key>
+<key name="underly"> 15,65, </key>
+<key name="unionlist"> 40, </key>
+<key name="up"> 16,20,81, </key>
+<key name="updat"> 79, </key>
+<key name="updateobjbrows"> 5,40,59, </key>
+<key name="us"> 2,50,15,26,27,35,38,30,46,48,51,65,67,73,76,31,33,83, </key>
+<key name="useful"> 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,78,79,80,81,83, </key>
+<key name="v"> 6,57,59,74, </key>
+<key name="v1"> 50, </key>
+<key name="v2"> 50, </key>
+<key name="v3"> 50, </key>
+<key name="v4"> 50, </key>
<key name="val"> 0, </key>
-<key name="valid"> 43,58,32, </key>
-<key name="validity"> 32, </key>
-<key name="valu"> 0,2,7,9,14,19,22,27,33,38,40,42,43,45,46,48,51,54,58,59,63,64,66,69,32,74,76,77, </key>
-<key name="variety"> 25, </key>
-<key name="variou"> 64, </key>
-<key name="vector"> 3,4,6,13,17,19,22,24,27,36,41,42,44,46,48,54,56,58,59,60,64,66,67,73,74,76,77,81, </key>
-<key name="vector_arc"> 3,67, </key>
-<key name="vector1"> 3,17, </key>
-<key name="vector1_arc1"> 17, </key>
-<key name="vector1_arc2"> 17, </key>
-<key name="vector2"> 3,17, </key>
-<key name="vector2_arc1"> 17, </key>
-<key name="vector2_arc2"> 17, </key>
-<key name="vector3"> 17, </key>
-<key name="versa"> 64, </key>
-<key name="vertex"> 3,4,6,13,14,17,19,22,23,24,27,43,44,53,54,55,56,58,59,61,69,32,73,76, </key>
-<key name="vertex_n"> 55, </key>
-<key name="vertex1"> 23, </key>
-<key name="vertex2"> 23, </key>
-<key name="vertexmaxtol"> 32, </key>
-<key name="vertexmintol"> 32, </key>
-<key name="vertic"> 1,3,49,5,7,8,14,17,23,25,36,39,41,54,56,58,67,73,74,77, </key>
-<key name="via"> 49,7,27,28,41,50,66,69,31, </key>
-<key name="vic"> 64, </key>
-<key name="view"> 0,9,10,14,33,42,50,70,71,72,32,78,79,80,82, </key>
-<key name="visibl"> 50, </key>
-<key name="visualiz"> 50, </key>
-<key name="volum"> 43,32, </key>
-<key name="vr"> 73, </key>
-<key name="vrot1d"> 73, </key>
-<key name="vt"> 73, </key>
-<key name="vtr1d"> 73, </key>
-<key name="vtr2d"> 73, </key>
-<key name="vxy"> 3,17,36,58,73, </key>
+<key name="val1"> 44, </key>
+<key name="val2"> 44, </key>
+<key name="valid"> 44,59,33, </key>
+<key name="validity"> 33, </key>
+<key name="valu"> 0,2,7,9,15,20,23,28,34,39,41,43,44,46,47,49,52,55,59,60,64,65,67,70,75,77,33,78, </key>
+<key name="variety"> 26, </key>
+<key name="variou"> 65, </key>
+<key name="vector"> 3,4,6,14,18,20,23,25,28,37,42,43,45,47,49,55,57,59,60,61,65,67,68,74,75,77,78,82, </key>
+<key name="vector_arc"> 3,68, </key>
+<key name="vector1"> 3,18, </key>
+<key name="vector1_arc1"> 18, </key>
+<key name="vector1_arc2"> 18, </key>
+<key name="vector2"> 3,18, </key>
+<key name="vector2_arc1"> 18, </key>
+<key name="vector2_arc2"> 18, </key>
+<key name="vector3"> 18, </key>
+<key name="versa"> 65, </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>
+<key name="vertex2"> 24, </key>
+<key name="vertexmaxtol"> 33, </key>
+<key name="vertexmintol"> 33, </key>
+<key name="vertic"> 1,3,50,5,7,8,15,18,24,26,28,37,40,42,55,57,59,68,74,75,78, </key>
+<key name="via"> 50,7,29,32,42,51,67,70, </key>
+<key name="vic"> 65, </key>
+<key name="view"> 0,9,11,15,34,43,51,71,72,73,33,79,80,81,83, </key>
+<key name="visibl"> 51, </key>
+<key name="visualiz"> 51, </key>
+<key name="volum"> 44,33, </key>
+<key name="vr"> 74, </key>
+<key name="vrot1d"> 74, </key>
+<key name="vt"> 74, </key>
+<key name="vtr1d"> 74, </key>
+<key name="vtr2d"> 74, </key>
+<key name="vxy"> 3,18,37,59,74, </key>
<key name="vxyz"> 4, </key>
-<key name="vz"> 73, </key>
-<key name="w_0"> 58, </key>
-<key name="wantplanarfac"> 58, </key>
+<key name="vz"> 74, </key>
+<key name="w_0"> 59, </key>
+<key name="wantplanarfac"> 59, </key>
<key name="wat"> 2, </key>
<key name="waterdensity"> 2,4, </key>
-<key name="way"> 7,25,27,41,44,46,69,82, </key>
+<key name="way"> 7,26,28,42,45,47,70,83, </key>
<key name="weight"> 2,4, </key>
-<key name="well"> 64, </key>
-<key name="wf"> 67, </key>
-<key name="what"> 43, </key>
-<key name="whati"> 43,32, </key>
-<key name="wheth"> 32, </key>
-<key name="whil"> 11,17,43,64,80, </key>
-<key name="whos"> 28,32, </key>
-<key name="wid"> 37,29, </key>
-<key name="will"> 0,1,2,49,7,9,11,12,13,14,16,18,19,20,21,22,23,24,25,26,27,28,33,34,35,38,41,42,44,45,46,47,48,50,51,52,53,54,55,57,59,60,61,62,63,64,65,66,68,69,70,71,72,31,74,76,77,79,82, </key>
-<key name="wir"> 3,49,11,14,17,25,27,28,36,43,53,58,59,66,67,71,72,73,79, </key>
-<key name="wire_clos"> 58, </key>
-<key name="wire_nam"> 58, </key>
-<key name="wire1"> 17, </key>
-<key name="wire2"> 17, </key>
-<key name="wirefram"> 78,80, </key>
-<key name="wish"> 25,50,31, </key>
-<key name="within"> 14,40,78, </key>
-<key name="without"> 58, </key>
-<key name="work"> 37,29,46,50,64,66,81,82, </key>
-<key name="workingplan"> 66, </key>
-<key name="ww"> 36,67, </key>
-<key name="x"> 3,7,24,42,45,55,66,69,32, </key>
+<key name="well"> 65,33, </key>
+<key name="wf"> 68, </key>
+<key name="what"> 44, </key>
+<key name="whati"> 44,33, </key>
+<key name="wheth"> 33, </key>
+<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="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>
+<key name="wire1"> 18, </key>
+<key name="wire2"> 18, </key>
+<key name="wirefram"> 79,81, </key>
+<key name="wish"> 10,26,32,51, </key>
+<key name="within"> 15,41,79, </key>
+<key name="without"> 59, </key>
+<key name="work"> 38,30,47,51,65,67,82,83, </key>
+<key name="workingplan"> 67, </key>
+<key name="ww"> 37,68, </key>
+<key name="x"> 3,7,25,43,46,56,67,70,33, </key>
<key name="x1"> 7, </key>
<key name="x2"> 7, </key>
-<key name="xdx"> 42, </key>
-<key name="xdy"> 42, </key>
-<key name="xdz"> 42, </key>
-<key name="xmax"> 43,32, </key>
-<key name="xmin"> 43,32, </key>
-<key name="xoy"> 66, </key>
-<key name="xyz"> 81, </key>
+<key name="xdx"> 43, </key>
+<key name="xdy"> 43, </key>
+<key name="xdz"> 43, </key>
+<key name="xmax"> 44,33, </key>
+<key name="xmin"> 44,33, </key>
+<key name="xoy"> 67, </key>
+<key name="xyz"> 82, </key>
<key name="xz_fac"> 5, </key>
<key name="xz_face_ind"> 5, </key>
-<key name="y"> 3,7,24,42,55,66,69,32, </key>
+<key name="y"> 3,7,25,43,56,67,70,33, </key>
<key name="y1"> 7, </key>
<key name="y2"> 7, </key>
-<key name="ydx"> 42, </key>
-<key name="ydy"> 42, </key>
-<key name="ydz"> 42, </key>
-<key name="ymax"> 43,32, </key>
-<key name="ymin"> 43,32, </key>
-<key name="your"> 15,34,63,71,32,31,78,81,82, </key>
-<key name="yourselv"> 42, </key>
+<key name="ydx"> 43, </key>
+<key name="ydy"> 43, </key>
+<key name="ydz"> 43, </key>
+<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,42,55,69,32, </key>
+<key name="z"> 2,3,7,43,56,70,33, </key>
<key name="z1"> 7, </key>
<key name="z2"> 7, </key>
-<key name="zero"> 19, </key>
-<key name="zmax"> 43,32, </key>
-<key name="zmin"> 43,32, </key>
-<key name="zoom"> 50, </key>
+<key name="zero"> 20, </key>
+<key name="zmax"> 44,33, </key>
+<key name="zmin"> 44,33, </key>
+<key name="zoom"> 51, </key>
</ftswdata>
<item name="Extrusion" url="extrusion.htm" />
<item name="Revolution" url="revolution.htm" />
<item name="Filling" url="filling.htm" />
- <item name="Pipe" url="pipe_creation.htm" />
+ <item name="Extrusion along a path" url="pipe_creation.htm" />
</book>
<item name="Working with groups" url="working_with_groups.htm" />
<item name="Building by blocks" url="newentity_blocks.htm" />
<item name="Add Point on Edge" url="add_point_on_edge.htm" />
<item name="Check Free Boundaries" url="check_free_boundaries.htm" />
<item name="Check Free Faces" url="check_free_faces.htm" />
+ <item name="Change Orientation" url="change_orientation.htm" />
</book>
</book>
<item name="Using measurement tools" url="files/salome2_sp3_measuregui_functions.htm" />
- <item name="Access to Geometry module functionality from Python (using geompy.py)" url="geompy_doc/namespacegeompy.html" />
+ <item name="Python Interface geompy.py" url="geompy_doc/namespacegeompy.html" />
+
<book name="TUI Scripts" >
<item name="Viewing Geometrical Objects" url="changing_display_parameters.htm" />
<book name="Creating Geometric Objects" >
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:231px; float:none; border-style:none; }
+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; }
-->
<p class="whs2"> </p>
-<p class="whs2">Firstly, you can select a <span style="font-weight: bold;"><B>Plane</B></span>
- or a <span style="font-weight: bold;"><B>Planar Face</B></span> to be your <span
- style="font-weight: bold;"><B>Working Plane</B></span></p>
+<p class="whs2">Firstly, you can select a <span style="font-weight: bold;"><B>Plane</B></span>,<span
+ style="font-weight: bold;"> <B></B></span>a <span style="font-weight: bold;"><B>Planar
+ 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 style="font-weight: bold;">Arguments:</b>
- Name + 1 selection (face or planar face), </p>
+<p class="whs2"><b>Arguments:</b> Name + 1 selection (face
+ or planar face), </p>
+
+<p class="whs2"> </p>
-<p class="whs3"><img src="pics/workplane4.png" x-maintain-ratio="TRUE" width="312px" height="231px" border="0" class="img_whs4"></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="whs2"> </p>
/*!
* Create a plane, similar to the existing one, but with another size of representing face.
- * \param theFace Referenced plane.
+ * \param theFace Referenced plane or LCS(Marker).
* \param theTrimSize New half size of a side of quadrangle face, representing the plane.
* \return New GEOM_Object, containing the created plane.
*/
in double theFactor);
/*!
- * Modify the Location of the given object by LCS
+ * Modify the Location of the given object by LCS.
+ * \param theObject The object to be displaced.
+ * \param theStartLCS Coordinate system to perform displacement from it.
+ * If \a theStartLCS is NULL, displacement
+ * will be performed from global CS.
+ * If \a theObject itself is used as \a theStartLCS,
+ * its location will be changed to \a theEndLCS.
+ * \param theEndLCS Coordinate system to perform displacement to it.
+ * \return theObject.
*/
GEOM_Object PositionShape (in GEOM_Object theObject,
in GEOM_Object theStartLCS,
in GEOM_Object theEndLCS);
/*!
- * Modify the Location of the given object by LCS
- * creating its copy before the setting
+ * Modify the Location of the given object by LCS,
+ * creating its copy before the setting.
+ * \param theObject The object to be displaced.
+ * \param theStartLCS Coordinate system to perform displacement from it.
+ * If \a theStartLCS is NULL, displacement
+ * will be performed from global CS.
+ * If \a theObject itself is used as \a theStartLCS,
+ * its location will be changed to \a theEndLCS.
+ * \param theEndLCS Coordinate system to perform displacement to it.
+ * \return New GEOM_Object, containing the displaced shape.
*/
GEOM_Object PositionShapeCopy (in GEOM_Object theObject,
in GEOM_Object theStartLCS,
/*!
* Create a face on the given wire.
- * \param theWire Wire to build the face on.
+ * \param theWire closed Wire or Edge to build the face on.
* \param isPlanarWanted If TRUE, only planar face will be built.
* If impossible, NULL object will be returned.
* \return New GEOM_Object, containing the created face.
/*!
* Create a face on the given wires set.
- * \param theWires List of wires to build the face on.
+ * \param theWires List of closed wires or edges to build the face on.
* \param isPlanarWanted If TRUE, only planar face will be built.
* If impossible, NULL object will be returned.
* \return New GEOM_Object, containing the created face.
in long theShapeType,
in GEOM_Object theAx1,
in shape_state theState);
+ /*!
+ * Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
+ * the specified plane by the certain way, defined through \a theState parameter.
+ * \param theShape Shape to find sub-shapes of.
+ * \param theShapeType Type of sub-shapes to be retrieved.
+ * \param theAx1 Vector (or line, or linear edge), specifying normal
+ * direction of the plane to find shapes on.
+ * \param thePnt Point specifying location of the plane to find shapes on.
+ * \param theState The state of the subshapes to find.
+ * \return List of all found sub-shapes.
+ */
+ ListOfGO GetShapesOnPlaneWithLocation (in GEOM_Object theShape,
+ in long theShapeType,
+ in GEOM_Object theAx1,
+ in GEOM_Object thePnt,
+ in shape_state theState);
+
+
/*!
* Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
in long theShapeType,
in GEOM_Object theAx1,
in shape_state theState);
+
+ /*!
+ * Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
+ * the specified plane by the certain way, defined through \a theState parameter.
+ * \param theShape Shape to find sub-shapes of.
+ * \param theShapeType Type of sub-shapes to be retrieved.
+ * \param theAx1 Vector (or line, or linear edge), specifying normal
+ * direction of the plane to find shapes on.
+ * \param thePnt Point specifying location of the plane to find shapes on.
+ * \param theState The state of the subshapes to find.
+ * \return List of IDs of all found sub-shapes.
+ */
+ ListOfLong GetShapesOnPlaneWithLocationIDs (in GEOM_Object theShape,
+ in long theShapeType,
+ in GEOM_Object theAx1,
+ in GEOM_Object thePnt,
+ in shape_state theState);
/*!
* Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
* For format of the description string see the previous method.\n
* \param theCommand String, defining the sketcher in local
* coordinates of the working plane.
- * \param theWorkingPlane Planar Face of the working plane.
+ * \param theWorkingPlane Planar Face or LCS(Marker) of the working plane.
* \return New GEOM_Object, containing the created wire.
*/
GEOM_Object MakeSketcherOnPlane (in string theCommand, in GEOM_Object theWorkingPlane);
boolean GetFreeBoundary (in GEOM_Object theObject,
out ListOfGO theClosedWires,
out ListOfGO theOpenWires);
+
+ /*!
+ * Change orientation of the given object.
+ * \param theObject Shape to be processed.
+ * \return New GEOM_Object, containing processed shape.
+ */
+ GEOM_Object ChangeOrientation (in GEOM_Object theObject);
+ GEOM_Object ChangeOrientationCopy (in GEOM_Object theObject);
+
};
/*!
*/
interface GEOM_IMeasureOperations : GEOM_IOperations
{
+ /*!
+ * Get position (LCS) of theShape.
+ * \param theShape Shape to calculate position of.
+ * \param Ox,Oy,Oz Output. Coordinates of shape's location origin.
+ * Origin of the LCS is situated at the shape's center of mass.
+ * \param Zx,Zy,Zz Output. Coordinates of shape's location normal(main) direction.
+ * \param Xx,Xy,Xz Output. Coordinates of shape's location X direction.
+ * Axes of the LCS are obtained from shape's location or,
+ * if the shape is a planar face, from position of its plane.
+ * \return Returns position of the shape through the last nine arguments.
+ */
+ void GetPosition (in GEOM_Object theShape,
+ out double Ox, out double Oy, out double Oz,
+ out double Zx, out double Zy, out double Zz,
+ out double Xx, out double Xy, out double Xz);
+
/*!
* Get summarized length of all wires,
* area of surface and volume of the given shape.
boolean CheckShape (in GEOM_Object theShape,
out string theDescription);
+ /*!
+ * Check a topology and a geometry of the given shape.
+ * \param theShape Shape to check validity of.
+ * \param theDescription Output. Description of problems in the shape, if they are.
+ * \return TRUE, if the shape "seems to be valid".
+ */
+ boolean CheckShapeWithGeometry (in GEOM_Object theShape,
+ out string theDescription);
+
/*!
* Obtain description of the given shape
* \param theShape Shape to be described.
</section>
<section name="resources">
<!-- Module resources -->
- <parameter name="GEOM" value="${GEOM_ROOT_DIR}/share/salome/resources"/>
+ <parameter name="GEOM" value="${GEOM_ROOT_DIR}/share/salome/resources/geom"/>
</section>
<section name="Geometry" >
<!-- Other module preferences -->
- <parameter name="SettingsGeomStep" value="10" />
- <parameter name="display_mode" value="0" />
- <parameter name="shading_color" value="255, 255, 0" />
+ <parameter name="SettingsGeomStep" value="10" />
+ <parameter name="display_mode" value="0" />
+ <parameter name="shading_color" value="255, 255, 0" />
+ <parameter name="wireframe_color" value="255, 255, 0" />
+ <parameter name="free_bound_color" value="0, 255, 0" />
+ <parameter name="line_color" value="255, 0, 0" />
+ <parameter name="point_color" value="255, 255, 0" />
+ <parameter name="isos_color" value="200, 200, 200" />
</section>
</document>
using namespace std;
-//=======================================================================
-// function : GetBasicGUI()
-// purpose : Get the only BasicGUI object [ static ]
-//=======================================================================
-BasicGUI* BasicGUI::GetBasicGUI( GeometryGUI* parent )
-{
- return new BasicGUI( parent );
-}
-
//=======================================================================
// function : BasicGUI()
// purpose : Constructor
QDialog* aDlg = getGeometryGUI()->GetActiveDialogBox();
// Create Point dialog, OCC viewer
- if ( aDlg && aDlg->isA( "BasicGUI_PointDlg" ) && theViewWindow->getViewManager()->getType() == OCCViewer_Viewer::Type() && pe->state() != Qt::ControlButton )
+ if ( aDlg && aDlg->isA( "BasicGUI_PointDlg" ) &&
+ theViewWindow->getViewManager()->getType() == OCCViewer_Viewer::Type() &&
+ pe->state() != Qt::ControlButton )
{
BasicGUI_PointDlg* aPntDlg = (BasicGUI_PointDlg*) aDlg;
if ( aPntDlg->acceptMouseEvent() )
+ {
+ OCCViewer_Viewer* anOCCViewer =
+ ((OCCViewer_ViewManager*)(theViewWindow->getViewManager()))->getOCCViewer();
+ Handle(AIS_InteractiveContext) ic = anOCCViewer->getAISContext();
+
+ gp_Pnt aPnt;
+
+ ic->InitSelected();
+ if ( pe->state() == Qt::ShiftButton )
+ ic->ShiftSelect(); // Append selection
+ else
+ ic->Select(); // New selection
+
+ ic->InitSelected();
+ if ( ic->MoreSelected() )
{
- OCCViewer_Viewer* anOCCViewer = ((OCCViewer_ViewManager*)(theViewWindow->getViewManager()))->getOCCViewer();
- Handle(AIS_InteractiveContext) ic = anOCCViewer->getAISContext();
-
- gp_Pnt aPnt;
-
- ic->InitSelected();
- if( pe->state() == Qt::ShiftButton )
- ic->ShiftSelect(); // Append selection
- else
- ic->Select(); // New selection
-
- ic->InitSelected();
- if( ic->MoreSelected() )
- {
- TopoDS_Shape aShape = ic->SelectedShape();
- if ( !aShape.IsNull() && aShape.ShapeType() == TopAbs_VERTEX )
- aPnt = BRep_Tool::Pnt( TopoDS::Vertex( ic->SelectedShape() ) );
- }
- else
- {
- OCCViewer_ViewPort3d* vp = ((OCCViewer_ViewWindow*)theViewWindow)->getViewPort();
- aPnt = ConvertClickToPoint( pe->x(), pe->y(), vp->getView() );
- }
-
- aPntDlg->OnPointSelected( aPnt ); // "feed" the point to point construction dialog
- } // acceptMouseEvent()
- }
+ TopoDS_Shape aShape = ic->SelectedShape();
+ if ( !aShape.IsNull() && aShape.ShapeType() == TopAbs_VERTEX )
+ aPnt = BRep_Tool::Pnt( TopoDS::Vertex( ic->SelectedShape() ) );
+ }
+ else
+ {
+ OCCViewer_ViewPort3d* vp = ((OCCViewer_ViewWindow*)theViewWindow)->getViewPort();
+ aPnt = ConvertClickToPoint( pe->x(), pe->y(), vp->getView() );
+ }
+
+ aPntDlg->OnPointSelected( aPnt ); // "feed" the point to point construction dialog
+ } // acceptMouseEvent()
+ }
return false;
}
GEOM_BASICGUI_EXPORT
GEOMGUI* GetLibGUI( GeometryGUI* parent )
{
- return BasicGUI::GetBasicGUI( parent );
+ return new BasicGUI( parent );
}
}
//=================================================================================
class GEOM_BASICGUI_EXPORT BasicGUI : public GEOMGUI
{
-protected:
- BasicGUI( GeometryGUI* parent ); // hide constructor to avoid direct creation
-
public:
+ BasicGUI( GeometryGUI* parent );
~BasicGUI();
- // Get the only BasicGUI object
- static BasicGUI* GetBasicGUI( GeometryGUI* parent );
-
bool OnGUIEvent(int theCommandID, SUIT_Desktop* parent);
bool OnMousePress(QMouseEvent* pe, SUIT_Desktop* parent, SUIT_ViewWindow* theViewWindow);
double aStep = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100);
/* min, max, step and decimals for spin boxes & initial values */
- GroupPntVecR->SpinBox_DX->RangeStepAndValidator(0.001, 999.999, aStep, 3);
+ GroupPntVecR->SpinBox_DX->RangeStepAndValidator(0.001, COORD_MAX, aStep, 3);
GroupPntVecR->SpinBox_DX->SetValue( 100 );
/* signals and slots connections */
// class : BasicGUI_CircleDlg
// purpose :
//=================================================================================
-class BasicGUI_CircleDlg : public GEOMBase_Skeleton
+class GEOM_BASICGUI_EXPORT BasicGUI_CircleDlg : public GEOMBase_Skeleton
{
Q_OBJECT
double aMajorR( 200. ), aMinorR( 100. );
/* min, max, step and decimals for spin boxes & initial values */
- GroupPoints->SpinBox_DX->RangeStepAndValidator( 0.001, 999.999, step, 3 );
- GroupPoints->SpinBox_DY->RangeStepAndValidator( 0.001, 999.999, step, 3 );
+ GroupPoints->SpinBox_DX->RangeStepAndValidator( 0.001, COORD_MAX, step, 3 );
+ GroupPoints->SpinBox_DY->RangeStepAndValidator( 0.001, COORD_MAX, step, 3 );
GroupPoints->SpinBox_DX->SetValue( aMajorR );
GroupPoints->SpinBox_DY->SetValue( aMinorR );
// GEOM GEOMGUI : GUI for Geometry component
//
// Copyright (C) 2003 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
+// 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 <qlabel.h>
#include "GEOMImpl_Types.hxx"
+
#include "utilities.h"
+// OCCT Includes
+#include <BRep_Tool.hxx>
#include <TopExp.hxx>
#include <TopAbs.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Vertex.hxx>
#include <TopoDS_Face.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
+#include <Geom_Plane.hxx>
#include <TopTools_IndexedMapOfShape.hxx>
-#include <BRep_Tool.hxx>
+#include <TColStd_IndexedMapOfInteger.hxx>
#include <gp_Pnt.hxx>
#include <gp_Pln.hxx>
-#include <Geom_Plane.hxx>
-#include <GProp_GProps.hxx>
-#include <BRepGProp.hxx>
//=================================================================================
// class : BasicGUI_MarkerDlg()
myData[ DY2 ] = new DlgRef_SpinBox( anYAxisGrp );
new QLabel( tr( "DZ" ), anYAxisGrp );
myData[ DZ2 ] = new DlgRef_SpinBox( anYAxisGrp );
-
+
Layout1->addWidget( aMainGrp, 2, 0 );
Layout1->addWidget( Group1, 2, 0 );
Layout1->addWidget( Group2, 2, 0 );
setHelpFileName("local_coordinate_system.htm");
-
+
Init();
}
Group2->LineEdit1->setReadOnly( true );
Group2->LineEdit2->setReadOnly( true );
Group2->LineEdit3->setReadOnly( true );
-
+
connect(GroupConstructors, SIGNAL(clicked(int)), this, SLOT(ConstructorsClicked(int)));
connect(Group1->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
connect(Group2->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
connect( buttonOk, SIGNAL( clicked() ), this, SLOT( onOk() ) );
connect( buttonApply, SIGNAL( clicked() ), this, SLOT( onApply() ) );
- connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
+ connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
SIGNAL( currentSelectionChanged() ), this, SLOT( onSelectionDone() ) );
initName( tr( "LCS_NAME" ) );
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100);
-
+
for ( DataMap::iterator anIter = myData.begin(); anIter != myData.end(); ++anIter )
{
- anIter.data()->RangeStepAndValidator( -999.999, 999.999, step, 3 );
+ anIter.data()->RangeStepAndValidator( COORD_MIN, COORD_MAX, step, 3 );
connect( anIter.data(), SIGNAL( valueChanged( double ) ),
this, SLOT( onValueChanged( double ) ) );
}
{
Group2->hide();
aMainGrp->hide();
- resize(0, 0);
+ //PAL6669: resize(0, 0);
Group1->show();
globalSelection( GEOM_ALLGEOM );
{
aMainGrp->hide();
Group1->show();
- resize(0, 0);
+ //PAL6669: resize(0, 0);
Group2->show();
globalSelection( GEOM_POINT );
}
}
- connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
+ connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
SIGNAL(currentSelectionChanged()), this, SLOT(onSelectionDone()));
onSelectionDone();
}
initName();
ConstructorsClicked( getConstructorId() );
-
+
return true;
}
{
if ( IObjectCount() == 1 )
{
-
Standard_Boolean aRes = Standard_False;
Handle(SALOME_InteractiveObject) anIO = firstIObject();
GEOM::GEOM_Object_var aSelectedObj = GEOMBase::ConvertIOinGEOMObject( anIO, aRes );
+ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
+
if ( aRes && !aSelectedObj->_is_nil() )
{
TopoDS_Shape aShape;
if ( GEOMBase::GetShape( aSelectedObj, aShape, TopAbs_SHAPE ) && !aShape.IsNull() )
{
+ // Existing LCS selected
if ( aSelectedObj->GetType() == GEOM_MARKER && aShape.ShapeType() == TopAbs_FACE )
{
TopoDS_Face aFace = TopoDS::Face( aShape );
myData[ DX2 ]->SetValue( aYDir.X() );
myData[ DY2 ]->SetValue( aYDir.Y() );
myData[ DZ2 ]->SetValue( aYDir.Z() );
- ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr()->clearSelected();
+ aSelMgr->clearSelected();
}
}
else
{
TColStd_IndexedMapOfInteger aMap;
- ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr()->GetIndexes( anIO, aMap );
+ aSelMgr->GetIndexes( anIO, aMap );
if ( aMap.Extent() == 1 )
{
int anIndex = aMap( 1 );
TopTools_IndexedMapOfShape aShapes;
TopExp::MapShapes( aShape, aShapes );
aShape = aShapes.FindKey( anIndex );
- ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr()->clearSelected();
+ aSelMgr->clearSelected();
}
-
if ( !aShape.IsNull() && aShape.ShapeType() == TopAbs_VERTEX )
{
//=================================================================================
void BasicGUI_MarkerDlg::onSelectionDone()
{
- if ( getConstructorId() == 0 )
- {
+ if ( getConstructorId() == 0 ) {
onSelectionDone0();
return;
}
-
myEditCurrentArgument->setText("");
QString aName;
if ( !CORBA::is_nil( aSelectedObj ) && aRes ) {
aName = GEOMBase::GetName( aSelectedObj );
- TopoDS_Shape aShape;
- if ( GEOMBase::GetShape( aSelectedObj, aShape, TopAbs_SHAPE ) ) {
- GEOM::short_array anIndexes;
-
- TColStd_IndexedMapOfInteger aMap;
- ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr()->GetIndexes( anIO, aMap );
-
- if ( !aMap.IsEmpty() ) {
- int anIndex = aMap( 1 );
- TopTools_IndexedMapOfShape aShapes;
- TopExp::MapShapes( aShape, aShapes );
- aShape = aShapes.FindKey( anIndex );
- }
- if ( getConstructorId() == 1 ) {
- if ( !aShape.IsNull() ) {
- gp_Pnt aPnt;
- if (aShape.ShapeType() == TopAbs_VERTEX) {
- aPnt = BRep_Tool::Pnt(TopoDS::Vertex(aShape));
- }
- else {
- GProp_GProps aSystem;
- if (aShape.ShapeType() == TopAbs_EDGE || aShape.ShapeType() == TopAbs_WIRE)
- BRepGProp::LinearProperties(aShape, aSystem);
- else if (aShape.ShapeType() == TopAbs_FACE || aShape.ShapeType() == TopAbs_SHELL)
- BRepGProp::SurfaceProperties(aShape, aSystem);
- else
- BRepGProp::VolumeProperties(aShape, aSystem);
-
- aPnt = aSystem.CentreOfMass();
- }
-
- gp_Ax3 anAx3;
- anAx3.Transform(aShape.Location().Transformation());
- if(aShape.ShapeType() == TopAbs_FACE) {
- Handle(Geom_Surface) aGS = BRep_Tool::Surface( TopoDS::Face( aShape ) );
- if (!aGS.IsNull() && aGS->IsKind( STANDARD_TYPE( Geom_Plane ) ) ) {
- Handle(Geom_Plane) aGPlane = Handle(Geom_Plane)::DownCast( aGS );
- gp_Pln aPln = aGPlane->Pln();
- anAx3 = aPln.Position();
- }
- }
-
- gp_Dir aDirX = anAx3.XDirection();
- gp_Dir aDirY = anAx3.YDirection();
-
- myData[ X ]->SetValue( aPnt.X() );
- myData[ Y ]->SetValue( aPnt.Y() );
- myData[ Z ]->SetValue( aPnt.Z() );
-
- myData[ DX1 ]->SetValue( aDirX.X() );
- myData[ DY1 ]->SetValue( aDirX.Y() );
- myData[ DZ1 ]->SetValue( aDirX.Z() );
-
- myData[ DX2 ]->SetValue( aDirY.X() );
- myData[ DY2 ]->SetValue( aDirY.Y() );
- myData[ DZ2 ]->SetValue( aDirY.Z() );
-
- myEditCurrentArgument->setText( aName );
- }
- else {
- myData[ X ]->SetValue( 0 );
- myData[ Y ]->SetValue( 0 );
- myData[ Z ]->SetValue( 0 );
-
- myData[ DX1 ]->SetValue( 0 );
- myData[ DY1 ]->SetValue( 0 );
- myData[ DZ1 ]->SetValue( 0 );
-
- myData[ DX2 ]->SetValue( 0 );
- myData[ DY2 ]->SetValue( 0 );
- myData[ DZ2 ]->SetValue( 0 );
- }
- }
- else if ( getConstructorId() == 2 ) {
- if (myEditCurrentArgument == Group2->LineEdit1) {
+ if ( getConstructorId() == 1 ) { // by shape position
+ // Get shape's position
+ CORBA::Double Ox,Oy,Oz, Zx,Zy,Zz, Xx,Xy,Xz, Yx,Yy,Yz;
+ Ox = Oy = Oz = Zx = Zy = Xy = Xz = Yx = Yz = 0;
+ Zz = Xx = Yy = 1.;
+
+ GEOM::GEOM_IMeasureOperations_ptr aMeasureOp =
+ myGeomGUI->GetGeomGen()->GetIMeasureOperations(getStudyId());
+ aMeasureOp->GetPosition(aSelectedObj, Ox,Oy,Oz, Zx,Zy,Zz, Xx,Xy,Xz);
+
+ // Calculate Y direction
+ if (aMeasureOp->IsDone()) {
+ gp_Pnt aPnt (Ox,Oy,Oz);
+ gp_Dir aDirN (Zx,Zy,Zz);
+ gp_Dir aDirX (Xx,Xy,Xz);
+ gp_Ax3 anAx3 (aPnt, aDirN, aDirX);
+
+ gp_Dir aDirY = anAx3.YDirection();
+ aDirY.Coord(Yx,Yy,Yz);
+ }
+
+ // Set values
+ myData[ X ]->SetValue( Ox );
+ myData[ Y ]->SetValue( Oy );
+ myData[ Z ]->SetValue( Oz );
+
+ myData[ DX1 ]->SetValue( Xx );
+ myData[ DY1 ]->SetValue( Xy );
+ myData[ DZ1 ]->SetValue( Xz );
+
+ myData[ DX2 ]->SetValue( Yx );
+ myData[ DY2 ]->SetValue( Yy );
+ myData[ DZ2 ]->SetValue( Yz );
+
+ myEditCurrentArgument->setText( aName );
+ }
+ else if ( getConstructorId() == 2 ) { // by point and two vectors
+ TopoDS_Shape aShape;
+ if ( GEOMBase::GetShape( aSelectedObj, aShape, TopAbs_SHAPE ) ) {
+ GEOM::short_array anIndexes;
+
+ TColStd_IndexedMapOfInteger aMap;
+ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
+ aSelMgr->GetIndexes( anIO, aMap );
+
+ if ( !aMap.IsEmpty() ) {
+ int anIndex = aMap( 1 );
+ TopTools_IndexedMapOfShape aShapes;
+ TopExp::MapShapes( aShape, aShapes );
+ aShape = aShapes.FindKey( anIndex );
+ }
+
+ if (myEditCurrentArgument == Group2->LineEdit1) {
if ( !aShape.IsNull() && aShape.ShapeType() == TopAbs_VERTEX ) {
gp_Pnt aPnt = BRep_Tool::Pnt( TopoDS::Vertex( aShape ) );
myData[ X ]->SetValue( aPnt.X() );
gp_Pnt aP1 = BRep_Tool::Pnt(TopExp::FirstVertex(TopoDS::Edge(aShape)));
gp_Pnt aP2 = BRep_Tool::Pnt(TopExp::LastVertex(TopoDS::Edge(aShape)));
gp_Dir aDir(gp_Vec(aP1, aP2));
-
+
myData[ DX1 ]->SetValue( aDir.X() );
myData[ DY1 ]->SetValue( aDir.Y() );
myData[ DZ1 ]->SetValue( aDir.Z() );
gp_Pnt aP1 = BRep_Tool::Pnt(TopExp::FirstVertex(TopoDS::Edge(aShape)));
gp_Pnt aP2 = BRep_Tool::Pnt(TopExp::LastVertex(TopoDS::Edge(aShape)));
gp_Dir aDir(gp_Vec(aP1, aP2));
-
+
myData[ DX2 ]->SetValue( aDir.X() );
myData[ DY2 ]->SetValue( aDir.Y() );
myData[ DZ2 ]->SetValue( aDir.Z() );
myData[ X ]->SetValue( 0 );
myData[ Y ]->SetValue( 0 );
myData[ Z ]->SetValue( 0 );
-
+
myData[ DX1 ]->SetValue( 0 );
myData[ DY1 ]->SetValue( 0 );
myData[ DZ1 ]->SetValue( 0 );
-
+
myData[ DX2 ]->SetValue( 0 );
myData[ DY2 ]->SetValue( 0 );
myData[ DZ2 ]->SetValue( 0 );
myData[ DY2 ]->SetValue( 0 );
myData[ DZ2 ]->SetValue( 0 );
}
- }
+ }
}
-
+
displayPreview();
}
void BasicGUI_MarkerDlg::SetEditCurrentArgument()
{
QPushButton* send = (QPushButton*)sender();
-
+
if(send == Group1->PushButton1) {
myEditCurrentArgument = Group1->LineEdit1;
globalSelection( GEOM_ALLGEOM );
myEditCurrentArgument = Group2->LineEdit3;
globalSelection( GEOM_LINE );
}
-
+
myEditCurrentArgument->setFocus();
onSelectionDone();
}
void BasicGUI_MarkerDlg::onActivate()
{
GEOMBase_Skeleton::ActivateThisDialog();
- connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
+ connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
SIGNAL( currentSelectionChanged() ), this, SLOT( onSelectionDone() ) );
ConstructorsClicked( getConstructorId() );
// purpose :
//=================================================================================
void BasicGUI_MarkerDlg::enterEvent(QEvent* e)
-{
+{
if ( !GroupConstructors->isEnabled() )
onActivate();
}
case 1:
return !Group1->LineEdit1->text().isEmpty() && isOk;
case 2:
- return !Group2->LineEdit1->text().isEmpty() &&
- !Group2->LineEdit2->text().isEmpty() &&
+ return !Group2->LineEdit1->text().isEmpty() &&
+ !Group2->LineEdit2->text().isEmpty() &&
!Group2->LineEdit3->text().isEmpty() && isOk;
}
return false;
}
}
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
// GEOM GEOMGUI : GUI for Geometry component
//
// Copyright (C) 2003 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
-//
+// 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 "SalomeApp_Application.h"
#include "LightApp_SelectionMgr.h"
+#include <TColStd_MapOfInteger.hxx>
+
#include <qlabel.h>
#include "GEOMImpl_Types.hxx"
//=================================================================================
// class : BasicGUI_PlaneDlg()
-// purpose : Constructs a BasicGUI_PlaneDlg which is a child of 'parent', with the
+// purpose : Constructs a BasicGUI_PlaneDlg which is a child of 'parent', with the
// name 'name' and widget flags set to 'f'.
// The dialog will by default be modeless, unless you set 'modal' to
// TRUE to construct a modal dialog.
Group3Pnts->LineEdit3->setReadOnly( true );
GroupFace = new DlgRef_1Sel1Spin(this, "GroupFace");
- GroupFace->GroupBox1->setTitle(tr("GEOM_FACE"));
+ GroupFace->GroupBox1->setTitle(tr("GEOM_FACE_OR_LCS"));
GroupFace->TextLabel1->setText(tr("GEOM_SELECTION"));
GroupFace->TextLabel2->setText(tr("GEOM_PLANE_SIZE"));
GroupFace->PushButton1->setPixmap(image3);
GroupFace->LineEdit1->setReadOnly( true );
-
+
Layout1->addWidget(GroupPntDir, 2, 0);
Layout1->addWidget(Group3Pnts, 2, 0);
Layout1->addWidget(GroupFace, 2, 0);
/***************************************************************/
setHelpFileName("plane.htm");
-
+
Init();
}
// purpose : Destroys the object and frees any allocated resources
//=================================================================================
BasicGUI_PlaneDlg::~BasicGUI_PlaneDlg()
-{
+{
}
/* Get setting of step value from file configuration */
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
double aStep = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100);
-
+
double aTrimSize = 2000.0;
-
+
/* min, max, step and decimals for spin boxes */
- GroupPntDir->SpinBox_DX->RangeStepAndValidator( 0.001, 10000000.0, aStep, 3 );
+ GroupPntDir->SpinBox_DX->RangeStepAndValidator( 0.001, COORD_MAX, aStep, 3 );
GroupPntDir->SpinBox_DX->SetValue( aTrimSize );
- Group3Pnts->SpinBox_DX->RangeStepAndValidator(0.001, 10000000.0, aStep, 3);
+ Group3Pnts->SpinBox_DX->RangeStepAndValidator(0.001, COORD_MAX, aStep, 3);
Group3Pnts->SpinBox_DX->SetValue( aTrimSize );
- GroupFace->SpinBox_DX->RangeStepAndValidator(0.001, 10000000.0, aStep, 3);
+ GroupFace->SpinBox_DX->RangeStepAndValidator(0.001, COORD_MAX, aStep, 3);
GroupFace->SpinBox_DX->SetValue( aTrimSize );
/* signals and slots connections */
switch ( constructorId )
{
case 0: /* plane from a point and a direction (vector, edge...) */
- {
+ {
Group3Pnts->hide();
GroupFace->hide();
resize(0, 0);
/* for the first argument */
globalSelection( GEOM_POINT );
break;
- }
+ }
case 2: /* plane from a planar face selection */
{
GroupPntDir->hide();
GroupFace->LineEdit1->setText(tr(""));
/* for the first argument */
- globalSelection( GEOM_PLANE );
+ //globalSelection( GEOM_PLANE );
+ TColStd_MapOfInteger aMap;
+ aMap.Add( GEOM_PLANE );
+ aMap.Add( GEOM_MARKER );
+ globalSelection( aMap );
break;
}
}
myEditCurrentArgument->setFocus();
- connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
+ connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
}
void BasicGUI_PlaneDlg::SelectionIntoArgument()
{
myEditCurrentArgument->setText("");
-
- if ( IObjectCount() != 1 )
+
+ if ( IObjectCount() != 1 )
{
if ( myEditCurrentArgument == GroupPntDir->LineEdit1 ) myPoint = GEOM::GEOM_Object::_nil();
else if ( myEditCurrentArgument == GroupPntDir->LineEdit2 ) myDir = GEOM::GEOM_Object::_nil();
Standard_Boolean aRes = Standard_False;
GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes );
if ( !CORBA::is_nil( aSelectedObject ) && aRes )
- {
+ {
myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
if ( myEditCurrentArgument == GroupPntDir->LineEdit1 ) myPoint = aSelectedObject;
else if ( myEditCurrentArgument == GroupPntDir->LineEdit2 ) myDir = aSelectedObject;
//=================================================================================
void BasicGUI_PlaneDlg::SetEditCurrentArgument()
{
- QPushButton* send = (QPushButton*)sender();
+ QPushButton* send = (QPushButton*)sender();
if ( send == GroupPntDir->PushButton1 ) myEditCurrentArgument = GroupPntDir->LineEdit1;
else if ( send == GroupPntDir->PushButton2 ) myEditCurrentArgument = GroupPntDir->LineEdit2;
else if ( send == GroupFace->PushButton1 ) myEditCurrentArgument = GroupFace->LineEdit1;
myEditCurrentArgument->setFocus();
-
+
if ( myEditCurrentArgument == GroupPntDir->LineEdit2 )
globalSelection( GEOM_LINE );
- else if ( myEditCurrentArgument == GroupFace->LineEdit1 )
- globalSelection( GEOM_PLANE );
+ else if ( myEditCurrentArgument == GroupFace->LineEdit1 ) {
+ //globalSelection( GEOM_PLANE );
+ TColStd_MapOfInteger aMap;
+ aMap.Add( GEOM_PLANE );
+ aMap.Add( GEOM_MARKER );
+ globalSelection( aMap );
+ }
else
- globalSelection( GEOM_POINT );
-
+ globalSelection( GEOM_POINT );
+
SelectionIntoArgument();
}
void BasicGUI_PlaneDlg::ActivateThisDialog()
{
GEOMBase_Skeleton::ActivateThisDialog();
- connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
+ connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
// myGeomGUI->SetState( 0 );
double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100);
/* min, max, step and decimals for spin boxes */
- GroupXYZ->SpinBox_DX->RangeStepAndValidator(-999.999, 999.999, step, 3);
- GroupXYZ->SpinBox_DY->RangeStepAndValidator(-999.999, 999.999, step, 3);
- GroupXYZ->SpinBox_DZ->RangeStepAndValidator(-999.999, 999.999, step, 3);
+ GroupXYZ->SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ GroupXYZ->SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ GroupXYZ->SpinBox_DZ->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
GroupXYZ->SpinBox_DX->SetValue(0.0);
GroupXYZ->SpinBox_DY->SetValue(0.0);
GroupXYZ->SpinBox_DZ->SetValue(0.0);
- GroupRefPoint->SpinBox_DX->RangeStepAndValidator(-999.999, 999.999, step, 3);
- GroupRefPoint->SpinBox_DY->RangeStepAndValidator(-999.999, 999.999, step, 3);
- GroupRefPoint->SpinBox_DZ->RangeStepAndValidator(-999.999, 999.999, step, 3);
+ GroupRefPoint->SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ GroupRefPoint->SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ GroupRefPoint->SpinBox_DZ->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
GroupRefPoint->SpinBox_DX->SetValue(0.0);
GroupRefPoint->SpinBox_DY->SetValue(0.0);
GroupRefPoint->SpinBox_DZ->SetValue(0.0);
double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100);
/* min, max, step and decimals for spin boxes */
- GroupDimensions->SpinBox_DX->RangeStepAndValidator(-999.999, 999.999, step, 3);
- GroupDimensions->SpinBox_DY->RangeStepAndValidator(-999.999, 999.999, step, 3);
- GroupDimensions->SpinBox_DZ->RangeStepAndValidator(-999.999, 999.999, step, 3);
+ GroupDimensions->SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ GroupDimensions->SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ GroupDimensions->SpinBox_DZ->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
double dx( 0. ), dy( 0. ), dz( 200. );
GroupDimensions->SpinBox_DX->SetValue( dx );
// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
#include "SalomeApp_Application.h"
#include "LightApp_SelectionMgr.h"
-#include <Geom_Surface.hxx>
-#include <Geom_Plane.hxx>
+// OCCT Includes
+#include <BRep_Tool.hxx>
#include <TopoDS.hxx>
-#include <TopoDS_Face.hxx>
#include <TopoDS_Edge.hxx>
#include <TopoDS_Vertex.hxx>
#include <TopExp.hxx>
-#include <BRep_Tool.hxx>
#include <gp_Pnt.hxx>
#include <gp_Dir.hxx>
-#include <gp_Pln.hxx>
-#include <V3d_View.hxx>
-
-#include "GEOMImpl_Types.hxx"
+#include <TColStd_MapOfInteger.hxx>
+// QT Includes
#include <qcheckbox.h>
#include <qlabel.h>
+#include "GEOMImpl_Types.hxx"
+
using namespace std;
//=================================================================================
connect(Group3->GroupBox1, SIGNAL(clicked(int)), this, SLOT(GroupClicked(int)));
- connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
+ connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
initName( tr( "GEOM_WPLANE" ) );
//=================================================================================
void BasicGUI_WorkingPlaneDlg::ConstructorsClicked(int constructorId)
{
- disconnect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0);
- // myGeomGUI->SetState( 0 );
+ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
+
+ disconnect(aSelMgr, 0, this, 0);
switch (constructorId)
{
case 0:
{
- globalSelection( GEOM_PLANE );
+ //globalSelection( GEOM_PLANE );
+ TColStd_MapOfInteger aMap;
+ aMap.Add( GEOM_PLANE );
+ aMap.Add( GEOM_MARKER );
+ globalSelection( aMap );
Group2->hide();
Group3->hide();
Group1->LineEdit1->setText("");
myFace = GEOM::GEOM_Object::_nil();
- connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
- SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
+ connect(aSelMgr, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
break;
}
case 1:
myVectX = GEOM::GEOM_Object::_nil();
myVectZ = GEOM::GEOM_Object::_nil();
- connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
- SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
+ connect(aSelMgr, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
break;
}
case 2:
Group3->RadioButton1->setChecked(true);
aOriginType = 1;
- break;
+ break;
}
}
displayPreview();
myGeomGUI->application()->putInfo(tr(""));
const int id = getConstructorId();
- if (id == 0) {
- if ( !CORBA::is_nil( myFace ) ) {
- TopoDS_Face aPlaneShape;
- if ( GEOMBase::GetShape( myFace, aPlaneShape, TopAbs_FACE ) ) {
- Handle(Geom_Surface) aGS = BRep_Tool::Surface( TopoDS::Face( aPlaneShape ) );
- if ( !aGS.IsNull() && aGS->IsKind( STANDARD_TYPE( Geom_Plane ) ) ) {
- Handle(Geom_Plane) aGPlane = Handle(Geom_Plane)::DownCast( aGS );
- gp_Pln aPln = aGPlane->Pln();
-
- myWPlane = aPln.Position();
- myGeomGUI->SetWorkingPlane(myWPlane);
- myGeomGUI->ActiveWorkingPlane();
- return true;
- }
- }
+ 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) {
+
+ } 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 V1, V2;
+ TopoDS_Vertex VX1, VX2, VZ1, VZ2;
gp_Vec aVX, aVZ;
- if (GEOMBase::GetShape( myVectX, aVectX, TopAbs_EDGE ) &&
- GEOMBase::GetShape( myVectZ, aVectZ, TopAbs_EDGE )) {
- TopExp::Vertices(aVectZ, V1, V2, Standard_True);
- if (!V1.IsNull() && !V2.IsNull())
- aVZ = gp_Vec(BRep_Tool::Pnt(V1), BRep_Tool::Pnt(V2));
- else {
- showError( "Bad OZ vector" );
- return false;
- }
-
- TopExp::Vertices(aVectX, V1, V2, Standard_True);
- if (!V1.IsNull() && !V2.IsNull())
- aVX = gp_Vec(BRep_Tool::Pnt(V1), BRep_Tool::Pnt(V2));
- else {
- showError( "Bad OX vector" );
- return false;
- }
- gp_Dir aDirZ = gp_Dir(aVZ.X(), aVZ.Y(), aVZ.Z());
- gp_Dir aDirX = gp_Dir(aVX.X(), aVX.Y(), aVX.Z());
-
- if (aDirX.IsParallel(aDirZ, Precision::Confusion())) {
- showError( "Parallel vectors selected" );
- return false;
- }
+ 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;
+ }
- myWPlane = gp_Ax3(BRep_Tool::Pnt(V1), aDirZ, aDirX);
+ TopExp::Vertices(aVectX, VX1, VX2, Standard_True);
+ TopExp::Vertices(aVectZ, VZ1, VZ2, Standard_True);
- myGeomGUI->SetWorkingPlane(myWPlane);
- myGeomGUI->ActiveWorkingPlane();
- return true;
+ if (VX1.IsNull() || VX2.IsNull()) {
+ showError( "Bad OX vector" );
+ return false;
+ }
+ if (VZ1.IsNull() || VZ2.IsNull()) {
+ showError( "Bad OZ vector" );
+ return false;
}
- } else if (id == 2) {
- gp_Pnt P1 = gp_Pnt(0., 0., 0.);
- gp_Dir aDirZ, aDirX;
- if (aOriginType == 1) {
- aDirZ = gp_Dir(0., 0., 1.);
- aDirX = gp_Dir(1., 0., 0.);
+ 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;
}
- else if (aOriginType == 2) {
- aDirZ = gp_Dir(1., 0., 0.);
- aDirX = gp_Dir(0., 1., 0.);
+ if (aVZ.Magnitude() < Precision::Confusion()) {
+ showError( "Bad OZ vector" );
+ return false;
}
- else if (aOriginType == 0) {
- aDirZ = gp_Dir(0., 1., 0.);
- aDirX = gp_Dir(0., 0., 1.);
+
+ 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(P1, aDirZ, aDirX);
+ myWPlane = gp_Ax3(BRep_Tool::Pnt(VX1), aDirZ, aDirX);
- myGeomGUI->SetWorkingPlane(myWPlane);
- myGeomGUI->ActiveWorkingPlane();
- return true;
+ } 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;
}
- return false;
+
+ myGeomGUI->SetWorkingPlane(myWPlane);
+ myGeomGUI->ActiveWorkingPlane();
+ return true;
}
//=================================================================================
void BasicGUI_WorkingPlaneDlg::ActivateThisDialog( )
{
GEOMBase_Skeleton::ActivateThisDialog();
- connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
+ connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
ConstructorsClicked( getConstructorId() );
#include "SalomeApp_Application.h"
-BlocksGUI* BlocksGUI::myGUIObject = 0;
-
-//=======================================================================
-// function : GetBlocksGUI()
-// purpose : Get the only BlocksGUI object [ static ]
-//=======================================================================
-BlocksGUI* BlocksGUI::GetBlocksGUI( GeometryGUI* parent )
-{
- if ( myGUIObject == 0 )
- myGUIObject = new BlocksGUI( parent );
-
- return myGUIObject;
-}
-
//=======================================================================
// function : BlocksGUI()
// purpose : Constructor
GEOM_BLOCKSGUI_EXPORT
GEOMGUI* GetLibGUI( GeometryGUI* parent )
{
- return BlocksGUI::GetBlocksGUI( parent );
+ return new BlocksGUI( parent );
}
}
// File : BuildGUI.h
// Author : Julia DOROVSKIKH
// Module : GEOM
-// $Header$
#ifndef BLOCKSGUI_H
#define BLOCKSGUI_H
//=================================================================================
class GEOM_BLOCKSGUI_EXPORT BlocksGUI : public GEOMGUI
{
- protected:
- BlocksGUI( GeometryGUI* parent ); // hide constructor to avoid direct creation
-
public:
+ BlocksGUI( GeometryGUI* parent );
~BlocksGUI();
- // Get the only BuildGUI object
- static BlocksGUI* GetBlocksGUI( GeometryGUI* parent );
-
bool OnGUIEvent (int theCommandID, SUIT_Desktop* parent);
-
-private:
- static BlocksGUI* myGUIObject; // the only BlocksGUI object
};
#endif
double SpecificStep = 1.0;
QMap<int, DlgRef_SpinBox*>::iterator anIter;
for (anIter = mySpinBox.begin(); anIter != mySpinBox.end(); ++anIter) {
- anIter.data()->RangeStepAndValidator(1.0, 999.999, SpecificStep, 3);
+ //anIter.data()->RangeStepAndValidator(1.0, 999.999, SpecificStep, 3);
+ anIter.data()->RangeStepAndValidator(1.0, MAX_NUMBER, SpecificStep, 3);
}
// signals and slots connections
// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
using namespace std;
-BooleanGUI* BooleanGUI::myGUIObject = 0;
-
-//=======================================================================
-// function : GetBooleanGUI()
-// purpose : Get the only BooleanGUI object [ static ]
-//=======================================================================
-BooleanGUI* BooleanGUI::GetBooleanGUI( GeometryGUI* parent )
-{
- if ( myGUIObject == 0 ) {
- // init BooleanGUI only once
- myGUIObject = new BooleanGUI( parent );
- }
- return myGUIObject;
-}
-
//=======================================================================
// function : BooleanGUI()
// purpose : Constructor
{
}
-
//=======================================================================
// function : ~BooleanGUI()
// purpose : Destructor
QDialog* aDlg = new BooleanGUI_Dialog( anOperation, getGeometryGUI(), parent, "");
aDlg->show();
-
+
return true;
}
GEOM_BOOLEANGUI_EXPORT
GEOMGUI* GetLibGUI( GeometryGUI* parent )
{
- return BooleanGUI::GetBooleanGUI( parent );
+ return new BooleanGUI( parent );
}
}
// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
// File : BooleanGUI.h
// Author : Damien COQUERET
// Module : GEOM
-// $Header$
#ifndef BOOLEANGUI_H
#define BOOLEANGUI_H
//=================================================================================
class GEOM_BOOLEANGUI_EXPORT BooleanGUI : public GEOMGUI
{
-protected:
- BooleanGUI( GeometryGUI* parent ); // hide constructor to avoid direct creation
-
public:
enum BooleanOperation { COMMON = 1, CUT = 2, FUSE = 3, SECTION = 4 };
+ BooleanGUI( GeometryGUI* parent );
~BooleanGUI();
- // Get the only BooleanGUI object
- static BooleanGUI* GetBooleanGUI( GeometryGUI* parent );
-
bool OnGUIEvent(int theCommandID, SUIT_Desktop* parent);
-
-private:
- static BooleanGUI* myGUIObject; // the only BooleanGUI object
};
#endif
// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
#include "SUIT_Desktop.h"
#include "SUIT_Session.h"
+#include "SalomeApp_Application.h"
+
#include "BuildGUI_EdgeDlg.h" // Method EDGE
#include "BuildGUI_WireDlg.h" // Method WIRE
#include "BuildGUI_FaceDlg.h" // Method FACE
#include "GeometryGUI.h"
-BuildGUI* BuildGUI::myGUIObject = 0;
-
-//=======================================================================
-// function : GetBuildGUI()
-// purpose : Get the only BuildGUI object [ static ]
-//=======================================================================
-BuildGUI* BuildGUI::GetBuildGUI( GeometryGUI* parent )
-{
- if ( myGUIObject == 0 )
- myGUIObject = new BuildGUI( parent );
-
- return myGUIObject;
-}
-
//=======================================================================
// function : BuildGUI()
// purpose : Constructor
{
}
-
//=======================================================================
// function : ~BuildGUI()
// purpose : Destructor
bool BuildGUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent )
{
getGeometryGUI()->EmitSignalDeactivateDialog();
-
+
QDialog* aDlg = NULL;
switch ( theCommandID )
case 4084: aDlg = new BuildGUI_ShellDlg ( getGeometryGUI(), parent, "" ); break;
case 4085: aDlg = new BuildGUI_SolidDlg ( getGeometryGUI(), parent, "" ); break;
case 4086: aDlg = new BuildGUI_CompoundDlg( getGeometryGUI(), parent, "" ); break;
-
+
default:
- SUIT_Session::session()->activeApplication()->putInfo( tr( "GEOM_PRP_COMMAND" ).arg( theCommandID ) );
+ getGeometryGUI()->getApp()->putInfo( tr( "GEOM_PRP_COMMAND" ).arg( theCommandID ) );
break;
}
-
+
if ( aDlg != NULL )
aDlg->show();
-
+
return true;
}
GEOM_BUILDGUI_EXPORT
GEOMGUI* GetLibGUI( GeometryGUI* parent )
{
- return BuildGUI::GetBuildGUI( parent );
+ return new BuildGUI( parent );
}
}
// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
// File : BuildGUI.h
// Author : Damien COQUERET
// Module : GEOM
-// $Header$
#ifndef BUILDGUI_H
#define BUILDGUI_H
//=================================================================================
class GEOM_BUILDGUI_EXPORT BuildGUI : public GEOMGUI
{
-protected:
- BuildGUI( GeometryGUI* parent ); // hide constructor to avoid direct creation
-
public :
+ BuildGUI( GeometryGUI* parent );
~BuildGUI();
- // Get the only BuildGUI object
- static BuildGUI* GetBuildGUI( GeometryGUI* parent );
-
bool OnGUIEvent( int theCommandID, SUIT_Desktop* parent );
-
-private:
- static BuildGUI* myGUIObject; // the only BuildGUI object
};
#endif
#include "BuildGUI_FaceDlg.h"
#include "GEOMImpl_Types.hxx"
+#include "TColStd_MapOfInteger.hxx"
#include "SUIT_Session.h"
#include "SalomeApp_Application.h"
GroupWire = new DlgRef_1Sel1Check_QTD(this, "GroupWire");
GroupWire->GroupBox1->setTitle(tr("GEOM_FACE_FFW"));
- GroupWire->TextLabel1->setText(tr("GEOM_WIRES"));
+ GroupWire->TextLabel1->setText(tr("GEOM_OBJECTS"));
GroupWire->CheckButton1->setText(tr("GEOM_FACE_OPT"));
GroupWire->PushButton1->setPixmap(image1);
GroupWire->CheckButton1->setChecked(TRUE);
- globalSelection( GEOM_WIRE );
+ TColStd_MapOfInteger aMap;
+ aMap.Add( GEOM_EDGE );
+ aMap.Add( GEOM_WIRE );
+ globalSelection( aMap );
/* signals and slots connections */
connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk()));
if (!myWires.length())
return;
if(aNbSel != 1)
- aName = tr("%1_wires").arg(aNbSel);
+ aName = tr("%1_objects").arg(aNbSel);
myEditCurrentArgument->setText( aName );
if (send != GroupWire->PushButton1)
return;
- globalSelection( GEOM_WIRE );
+ TColStd_MapOfInteger aMap;
+ aMap.Add( GEOM_EDGE );
+ aMap.Add( GEOM_WIRE );
+ globalSelection( aMap );
+
myEditCurrentArgument = GroupWire->LineEdit1;
myEditCurrentArgument->setFocus();
GEOMBase_Skeleton::ActivateThisDialog();
connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ;
- globalSelection( GEOM_WIRE );
+ TColStd_MapOfInteger aMap;
+ aMap.Add( GEOM_EDGE );
+ aMap.Add( GEOM_WIRE );
+ globalSelection( aMap );
}
// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
#include <qmenubar.h>
-DisplayGUI* DisplayGUI::myGUIObject = 0;
-
-//=======================================================================
-// function : DisplayGUI::GetDisplayGUI()
-// purpose : Get the only DisplayGUI object [ static ]
-//=======================================================================
-DisplayGUI* DisplayGUI::GetDisplayGUI( GeometryGUI* parent )
-{
- if ( myGUIObject == 0 ) {
- // init DisplayGUI only once
- myGUIObject = new DisplayGUI( parent );
- }
- return myGUIObject;
-}
-
//=======================================================================
// function : DisplayGUI::DisplayGUI()
// purpose : Constructor
{
}
-
//=======================================================================
// function : DisplayGUI::~DisplayGUI()
// purpose : Destructor
//=======================================================================
bool DisplayGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent)
{
- DisplayGUI* myDisplayGUI = GetDisplayGUI( getGeometryGUI() );
- LightApp_SelectionMgr *Sel = getGeometryGUI()->getApp()->selectionMgr();
+ SalomeApp_Application* app = getGeometryGUI()->getApp();
+ if (!app) return false;
+
+ LightApp_SelectionMgr *Sel = app->selectionMgr();
SALOME_ListIO selected;
Sel->selectedObjects( selected );
switch (theCommandID) {
case 211: // MENU VIEW - WIREFRAME/SHADING
{
- myDisplayGUI->InvertDisplayMode();
- int newMode = myDisplayGUI->GetDisplayMode();
- getGeometryGUI()->action( 211 )->setMenuText( newMode == 1 ? tr( "GEOM_MEN_WIREFRAME" ) : tr("GEOM_MEN_SHADING") );
+ InvertDisplayMode();
+ int newMode = GetDisplayMode();
+ getGeometryGUI()->action( 211 )->setMenuText
+ ( newMode == 1 ? tr( "GEOM_MEN_WIREFRAME" ) : tr("GEOM_MEN_SHADING") );
getGeometryGUI()->menuMgr()->update();
-// SUIT_Session::session()->activeApplication()->desktop()->menuBar()->
-// changeItem( 211, newMode == 1 ? tr( "GEOM_MEN_WIREFRAME" ) : tr("GEOM_MEN_SHADING") );
break;
}
case 212: // MENU VIEW - DISPLAY ALL
{
getGeometryGUI()->EmitSignalDeactivateDialog();
- myDisplayGUI->DisplayAll();
+ DisplayAll();
break;
}
case 213: // MENU VIEW - DISPLAY ONLY
{
getGeometryGUI()->EmitSignalDeactivateDialog();
- myDisplayGUI->DisplayOnly();
+ DisplayOnly();
break;
}
case 214: // MENU VIEW - ERASE ALL
{
- myDisplayGUI->EraseAll();
+ EraseAll();
break;
}
case 215: // MENU VIEW - ERASE
{
- myDisplayGUI->Erase();
+ Erase();
break;
}
case 216: // MENU VIEW - DISPLAY
{
getGeometryGUI()->EmitSignalDeactivateDialog();
- myDisplayGUI->Display();
+ Display();
break;
}
case 80311: // POPUP VIEWER - WIREFRAME
{
- myDisplayGUI->ChangeDisplayMode( 0 );
+ ChangeDisplayMode( 0 );
break;
}
case 80312: // POPUP VIEWER - SHADING
{
- myDisplayGUI->ChangeDisplayMode( 1 );
+ ChangeDisplayMode( 1 );
break;
}
default:
{
- SUIT_Session::session()->activeApplication()->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID));
+ app->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID));
break;
}
}
//=====================================================================================
void DisplayGUI::DisplayAll()
{
- SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( SUIT_Session::session()->activeApplication()->activeStudy() );
+ SalomeApp_Application* app = getGeometryGUI()->getApp();
+ if ( !app ) return;
+
+ SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( app->activeStudy() );
if ( !appStudy ) return;
_PTR(Study) aStudy = appStudy->studyDS();
if ( !aStudy ) return;
_PTR(SObject) valSO ( anIter->Value() );
_PTR(SObject) refSO;
if ( !valSO->ReferencedObject( refSO ) ) {
- listIO.Append( new SALOME_InteractiveObject( valSO->GetID().c_str(), SC->ComponentDataType().c_str() ,valSO->GetName().c_str() ) );
+ listIO.Append( new SALOME_InteractiveObject(valSO->GetID().c_str(),
+ SC->ComponentDataType().c_str(),
+ valSO->GetName().c_str()) );
}
anIter->Next();
}
{
SUIT_OverrideCursor();
- SUIT_Application* app = SUIT_Session::session()->activeApplication();
+ SUIT_Application* app = getGeometryGUI()->getApp();
if ( app ) {
SUIT_ViewWindow* vw = app->desktop()->activeWindow();
if ( vw ) {
void DisplayGUI::Display()
{
SALOME_ListIO listIO;
-
- SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
+
+ SalomeApp_Application* app = getGeometryGUI()->getApp();
if ( !app ) return;
SalomeApp_Study* anActiveStudy = dynamic_cast<SalomeApp_Study*>( app->activeStudy() );
if ( !anActiveStudy ) return;
-
+
//get SalomeApp selection manager
LightApp_SelectionMgr* aSelMgr = app->selectionMgr();
if ( !aSelMgr ) return;
-
+
SALOME_ListIO aList;
aSelMgr->selectedObjects( aList );
SALOME_ListIteratorOfListIO It( aList );
-
+
SUIT_OverrideCursor();
for( ;It.More();It.Next() ) {
Handle(SALOME_InteractiveObject) anIObject = It.Value();
if ( anIObject->hasEntry() ) {
_PTR(SObject) SO ( anActiveStudy->studyDS()->FindObjectID( anIObject->getEntry() ) );
- if ( SO && QString( SO->GetID().c_str() ) == QString( SO->GetFatherComponent()->GetID().c_str() ) ) {
+ if ( SO && QString(SO->GetID().c_str()) == QString(SO->GetFatherComponent()->GetID().c_str()) ) {
_PTR(SComponent) SC ( SO->GetFatherComponent() );
// if component is selected
listIO.Clear();
_PTR(SObject) valSO ( anIter->Value() );
_PTR(SObject) refSO;
if ( !valSO->ReferencedObject( refSO ) ) {
- listIO.Append( new SALOME_InteractiveObject( valSO->GetID().c_str(), SC->ComponentDataType().c_str() ,valSO->GetName().c_str() ) );
- }
+ listIO.Append( new SALOME_InteractiveObject(valSO->GetID().c_str(),
+ SC->ComponentDataType().c_str(),
+ valSO->GetName().c_str()) );
+ }
anIter->Next();
}
break;
{
SALOME_ListIO listIO;
- SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
+ SalomeApp_Application* app = getGeometryGUI()->getApp();
if ( !app ) return;
SalomeApp_Study* anActiveStudy = dynamic_cast<SalomeApp_Study*>( app->activeStudy() );
if ( !anActiveStudy ) return;
-
+
//get SalomeApp selection manager
LightApp_SelectionMgr* aSelMgr = app->selectionMgr();
if ( !aSelMgr ) return;
-
+
SALOME_ListIO aList;
aSelMgr->selectedObjects( aList );
SALOME_ListIteratorOfListIO It( aList );
SUIT_OverrideCursor();
- for( ;It.More();It.Next() ) {
+ for( ; It.More(); It.Next() ) {
Handle(SALOME_InteractiveObject) anIObject = It.Value();
if ( anIObject->hasEntry() ) {
_PTR(SObject) SO ( anActiveStudy->studyDS()->FindObjectID( anIObject->getEntry() ) );
- if ( SO && QString( SO->GetID().c_str() ) == QString( SO->GetFatherComponent()->GetID().c_str() ) ) {
+ if ( SO && QString(SO->GetID().c_str()) == QString(SO->GetFatherComponent()->GetID().c_str()) ) {
_PTR(SComponent) SC ( SO->GetFatherComponent() );
// if component is selected
listIO.Clear();
_PTR(SObject) valSO ( anIter->Value() );
_PTR(SObject) refSO;
if ( !valSO->ReferencedObject( refSO ) ) {
- listIO.Append( new SALOME_InteractiveObject( valSO->GetID().c_str(), SC->ComponentDataType().c_str() ,valSO->GetName().c_str() ) );
- }
+ listIO.Append( new SALOME_InteractiveObject(valSO->GetID().c_str(),
+ SC->ComponentDataType().c_str(),
+ valSO->GetName().c_str()) );
+ }
anIter->Next();
}
break;
}
}
GEOM_Displayer(anActiveStudy).Erase( listIO, true );
- ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr()->clearSelected();
+ getGeometryGUI()->getApp()->selectionMgr()->clearSelected();
}
//=====================================================================================
SUIT_OverrideCursor();
if ( !viewWindow )
- viewWindow = SUIT_Session::session()->activeApplication()->desktop()->activeWindow();
+ viewWindow = getGeometryGUI()->getApp()->desktop()->activeWindow();
if ( viewWindow->getViewManager()->getType() == SVTK_Viewer::Type() ) {
SVTK_View* aView = ((SVTK_ViewWindow*)viewWindow)->getView();
aView->SetDisplayMode( mode );
AIS_ListOfInteractive List1;
ic->ObjectsInCollector( List1 );
List.Append( List1 );
-
+
AIS_ListIteratorOfListOfInteractive ite( List );
while( ite.More() ) {
if( ite.Value()->IsInstance( STANDARD_TYPE(GEOM_AISShape) ) ) {
}
ite.Next();
}
-
+
ic->SetDisplayMode( newmode, Standard_False );
}
}
{
int dispMode = 0;
if ( !viewWindow )
- viewWindow = SUIT_Session::session()->activeApplication()->desktop()->activeWindow();
+ viewWindow = getGeometryGUI()->getApp()->desktop()->activeWindow();
if ( viewWindow->getViewManager()->getType() == SVTK_Viewer::Type() ) {
SVTK_View* aView = ((SVTK_ViewWindow*)viewWindow)->getView();
dispMode = aView->GetDisplayMode();
//=====================================================================================
void DisplayGUI::ChangeDisplayMode( const int mode, SUIT_ViewWindow* viewWindow )
{
- if ( !viewWindow )
- viewWindow = SUIT_Session::session()->activeApplication()->desktop()->activeWindow();
-
- SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
+ SalomeApp_Application* app = getGeometryGUI()->getApp();
if ( !app ) return;
+ if ( !viewWindow )
+ viewWindow = app->desktop()->activeWindow();
+
LightApp_SelectionMgr* aSelMgr = app->selectionMgr();
if ( !aSelMgr ) return;
-
+
SUIT_OverrideCursor();
SALOME_ListIO aList;
-
+
if ( viewWindow->getViewManager()->getType() == SVTK_Viewer::Type() ) {
SVTK_ViewWindow* vw = dynamic_cast<SVTK_ViewWindow*>( viewWindow );
SVTK_View* aView = vw->getView();
for( ;It.More(); It.Next() ) {
SVTK_Viewer* stvkViewer = dynamic_cast<SVTK_Viewer*>(vw->getViewManager()->getViewModel());
- SVTK_Prs* vtkPrs = stvkViewer ? dynamic_cast<SVTK_Prs*>( stvkViewer->CreatePrs( It.Value()->getEntry() ) ) : 0;
+ SVTK_Prs* vtkPrs =
+ stvkViewer ? dynamic_cast<SVTK_Prs*>( stvkViewer->CreatePrs( It.Value()->getEntry() ) ) : 0;
if ( vtkPrs && !vtkPrs->IsNull() ) {
if ( mode == 0 )
aView->ChangeRepresentationToWireframe( vtkPrs->GetObjects() );
GEOM_DISPLAYGUI_EXPORT
GEOMGUI* GetLibGUI( GeometryGUI* parent )
{
- return DisplayGUI::GetDisplayGUI( parent );
+ return new DisplayGUI( parent );
}
}
// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
// File : DisplayGUI.h
// Author : Damien COQUERET
// Module : GEOM
-// $Header$
#ifndef DISPLAYGUI_H
#define DISPLAYGUI_H
#include "GEOMBase.h"
#ifdef WNT
- #if defined DISPLAYGUI_EXPORTS
- #if defined WIN32
- #define GEOM_DISPLAYGUI_EXPORT __declspec( dllexport )
- #else
- #define GEOM_DISPLAYGUI_EXPORT
- #endif
- #else
- #if defined WIN32
- #define GEOM_DISPLAYGUI_EXPORT __declspec( dllimport )
- #else
- #define GEOM_DISPLAYGUI_EXPORT
- #endif
- #endif
+# if defined DISPLAYGUI_EXPORTS
+# define GEOM_DISPLAYGUI_EXPORT __declspec( dllexport )
+# else
+# define GEOM_DISPLAYGUI_EXPORT __declspec( dllimport )
+# endif
#else
- #define GEOM_DISPLAYGUI_EXPORT
+# define GEOM_DISPLAYGUI_EXPORT
#endif
+
//=================================================================================
// class : GEOMBase_Display
// purpose :
class SUIT_ViewWindow;
class GEOM_DISPLAYGUI_EXPORT DisplayGUI : public GEOMGUI
{
-protected:
- DisplayGUI( GeometryGUI* parent ); // hide constructor to avoid direct creation
-
-public :
+public:
+ DisplayGUI( GeometryGUI* parent );
~DisplayGUI();
- // Get the only DisplayGUI object
- static DisplayGUI* GetDisplayGUI( GeometryGUI* parent );
-
// Dispatch menu command
bool OnGUIEvent(int theCommandID, SUIT_Desktop* parent);
// Set display mode for selected objects in the viewer given
// (current viewer if <viewWindow> = 0 )
void ChangeDisplayMode( const int mode, SUIT_ViewWindow* viewWindo = 0 );
-
-private:
- static DisplayGUI* myGUIObject; // the only DisplayGUI object
};
#endif
void DlgRef_SpinBox::RangeStepAndValidator(double min, double max,double step,
unsigned short decimals)
{
+ setPrecision(-decimals); // PAL12789. Minus is for using 'g' double->string conversion specifier,
+ // see QtxDblSpinBox::mapValueToText( double v )
setRange(min, max);
setLineStep(step);
((QDoubleValidator*)validator())->setRange(min, max, decimals);
#include "QtxDblSpinBox.h"
+#define COORD_MIN -1e+15
+#define COORD_MAX +1e+15
+#define MAX_NUMBER 100000
+
//=================================================================================
// class : DlgRef_SpinBox
// purpose : Derivated from QSpinBox class and modified to accept floats
// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
#include "OCCViewer_ViewManager.h"
#include "SalomeApp_Study.h"
#include "SalomeApp_Tools.h"
+#include "SalomeApp_Application.h"
#include <TopoDS_Compound.hxx>
#include <BRep_Builder.hxx>
using namespace boost;
using namespace std;
-//=======================================================================
-// function : GetEntityGUI()
-// purpose : Get the only EntityGUI object [ static ]
-//=======================================================================
-EntityGUI* EntityGUI::GetEntityGUI( GeometryGUI* parent )
-{
- return new EntityGUI( parent );
-}
-
//=======================================================================
// function : EntityGUI()
// purpose : Constructor
//=======================================================================
bool EntityGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent)
{
+ SalomeApp_Application* app = getGeometryGUI()->getApp();
+ if ( !app ) return false;
+
getGeometryGUI()->EmitSignalDeactivateDialog();
QDialog* aDlg = NULL;
aDlg = new EntityGUI_SubShapeDlg(getGeometryGUI(), parent, "");
break;
default:
- SUIT_Session::session()->activeApplication()->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID));
+ app->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID));
break;
}
if ( aDlg )
//=====================================================================================
void EntityGUI::DisplaySimulationShape(const TopoDS_Shape& S1, const TopoDS_Shape& S2)
{
- SUIT_ViewManager* aVM =
- SUIT_Session::session()->activeApplication()->desktop()->activeWindow()->getViewManager();
+ SalomeApp_Application* app = getGeometryGUI()->getApp();
+ if ( !app ) return;
+
+ SUIT_ViewManager* aVM = app->desktop()->activeWindow()->getViewManager();
if (aVM->getType() != OCCViewer_Viewer::Type())
return;
mySimulationShape1 = new AIS_Shape(TopoDS_Shape());
mySimulationShape1->Set(S1);
mySimulationShape1->SetColor(Quantity_NOC_RED);
-
+
ic->Deactivate(mySimulationShape1);
ic->Display(mySimulationShape1, Standard_False);
mySimulationShape1->UnsetColor();
//==================================================================================
void EntityGUI::EraseSimulationShape()
{
+ SalomeApp_Application* app = getGeometryGUI()->getApp();
+ if ( !app ) return;
+
// get all view windows at the desktop
- QPtrList<SUIT_ViewWindow> aWndLst = SUIT_Session::session()->activeApplication()->desktop()->windows();
+ QPtrList<SUIT_ViewWindow> aWndLst = app->desktop()->windows();
//get all view windows, which belong to the active study
QPtrList<SUIT_ViewWindow> aWndLstAS;
SUIT_ViewWindow* vw;
for ( vw = aWndLst.first(); vw; vw = aWndLst.next() )
- if ( vw->getViewManager()->study() == SUIT_Session::session()->activeApplication()->activeStudy() )
+ if ( vw->getViewManager()->study() == app->activeStudy() )
aWndLstAS.append( vw );
-
+
for ( vw = aWndLstAS.first(); vw; vw = aWndLstAS.next() ) {
if ( vw->getViewManager()->getType() == OCCViewer_Viewer::Type() ) {
OCCViewer_Viewer* v3d = ((OCCViewer_ViewManager*)(vw->getViewManager()))->getOCCViewer();
//=====================================================================================
bool EntityGUI::SObjectExist(const _PTR(SObject)& theFatherObject, const char* IOR)
{
- SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>
- ( SUIT_Session::session()->activeApplication()->activeStudy() );
+ SalomeApp_Application* app = getGeometryGUI()->getApp();
+ if ( !app ) return false;
+ SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( app->activeStudy() );
if ( !appStudy ) return false;
+
_PTR(Study) aStudy = appStudy->studyDS();
_PTR(ChildIterator) it ( aStudy->NewChildIterator(theFatherObject) );
_PTR(SObject) RefSO;
GEOM_ENTITYGUI_EXPORT
GEOMGUI* GetLibGUI( GeometryGUI* parent )
{
- return EntityGUI::GetEntityGUI( parent );
+ return new EntityGUI( parent );
}
}
// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
//=================================================================================
class GEOM_ENTITYGUI_EXPORT EntityGUI : public GEOMGUI
{
-protected:
- EntityGUI( GeometryGUI* parent ); // hide constructor to avoid direct creation
-
public :
+ EntityGUI( GeometryGUI* parent ); // hide constructor to avoid direct creation
~EntityGUI();
- // Get the only EntityGUI object
- static EntityGUI* GetEntityGUI( GeometryGUI* parent );
-
bool OnGUIEvent(int theCommandID, SUIT_Desktop* parent);
void DisplaySimulationShape(const TopoDS_Shape& S1, const TopoDS_Shape& S2);
// GEOM GEOMGUI : GUI for Geometry component
//
// Copyright (C) 2003 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
+// 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 : EntityGUI_SketcherDlg.cxx
// Author : Damien COQUERET
// Module : GEOM
-// $Header:
+// $Header$
#include "EntityGUI_SketcherDlg.h"
#include "Sketcher_Profile.hxx"
//=================================================================================
// class : EntityGUI_SketcherDlg()
-// purpose : Constructs a EntityGUI_SketcherDlg which is a child of 'parent', with the
+// purpose : Constructs a EntityGUI_SketcherDlg which is a child of 'parent', with the
// name 'name' and widget flags set to 'f'.
// The dialog will by default be modeless, unless you set 'modal' to
// TRUE to construct a modal dialog.
buttonClose->setText(tr("GEOM_BUT_CLOSE_SKETCH"));
buttonHelp->setText(tr("GEOM_BUT_HELP"));
- GroupVal->close(TRUE);
+ GroupVal->close(TRUE);
GroupDest2->close(TRUE);
GroupDest3->close(TRUE);
Group1Spin->buttonApply->setText(tr("GEOM_SKETCHER_APPLY"));
Group1Spin->buttonUndo->setPixmap(image1);
Group1Spin->buttonRedo->setPixmap(image2);
+ QWidget::setTabOrder(Group1Spin->SpinBox_DX , Group1Spin->buttonApply);
+ QWidget::setTabOrder(Group1Spin->buttonApply, Group1Spin->buttonUndo);
+ QWidget::setTabOrder(Group1Spin->buttonUndo , Group1Spin->buttonRedo);
Group2Spin = new EntityGUI_2Spin(this, "Group2Spin");
Group2Spin->GroupBox1->setTitle(tr("GEOM_SKETCHER_VALUES"));
Group2Spin->buttonApply->setText(tr("GEOM_SKETCHER_APPLY"));
Group2Spin->buttonUndo->setPixmap(image1);
Group2Spin->buttonRedo->setPixmap(image2);
+ QWidget::setTabOrder(Group2Spin->SpinBox_DX , Group2Spin->SpinBox_DY);
+ QWidget::setTabOrder(Group2Spin->SpinBox_DY , Group2Spin->buttonApply);
+ QWidget::setTabOrder(Group2Spin->buttonApply, Group2Spin->buttonUndo);
+ QWidget::setTabOrder(Group2Spin->buttonUndo , Group2Spin->buttonRedo);
Group3Spin = new EntityGUI_3Spin(this, "Group3Spin");
Group3Spin->GroupBox1->setTitle(tr("GEOM_SKETCHER_VALUES"));
Group3Spin->buttonApply->setText(tr("GEOM_SKETCHER_APPLY"));
Group3Spin->buttonUndo->setPixmap(image1);
Group3Spin->buttonRedo->setPixmap(image2);
+ QWidget::setTabOrder(Group3Spin->SpinBox_DX , Group3Spin->SpinBox_DY);
+ QWidget::setTabOrder(Group3Spin->SpinBox_DY , Group3Spin->SpinBox_DZ);
+ QWidget::setTabOrder(Group3Spin->SpinBox_DZ , Group3Spin->buttonApply);
+ QWidget::setTabOrder(Group3Spin->buttonApply, Group3Spin->buttonUndo);
+ QWidget::setTabOrder(Group3Spin->buttonUndo , Group3Spin->buttonRedo);
Group4Spin = new EntityGUI_4Spin(this, "Group4Spin");
Group4Spin->GroupBox1->setTitle(tr("GEOM_SKETCHER_VALUES"));
Group4Spin->buttonApply->setText(tr("GEOM_SKETCHER_APPLY"));
Group4Spin->buttonUndo->setPixmap(image1);
Group4Spin->buttonRedo->setPixmap(image2);
+ QWidget::setTabOrder(Group4Spin->SpinBox_DX , Group4Spin->SpinBox_DY);
+ QWidget::setTabOrder(Group4Spin->SpinBox_DY , Group4Spin->SpinBox_DZ);
+ QWidget::setTabOrder(Group4Spin->SpinBox_DZ , Group4Spin->SpinBox_DS);
+ QWidget::setTabOrder(Group4Spin->SpinBox_DS , Group4Spin->buttonApply);
+ QWidget::setTabOrder(Group4Spin->buttonApply, Group4Spin->buttonUndo);
+ QWidget::setTabOrder(Group4Spin->buttonUndo , Group4Spin->buttonRedo);
Layout5->addMultiCellWidget(GroupPt, 1, 1, 0, 1);
Layout5->addWidget(GroupD1, 1, 0);
connect(myGeometryGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog()));
connect(myGeometryGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel()));
-
+
+ // install event filter on spin-boxes to provide Apply action on Return pressed
+ Group1Spin->SpinBox_DX->installEventFilter(this);
+ Group2Spin->SpinBox_DX->installEventFilter(this);
+ Group2Spin->SpinBox_DY->installEventFilter(this);
+ Group3Spin->SpinBox_DX->installEventFilter(this);
+ Group3Spin->SpinBox_DY->installEventFilter(this);
+ Group3Spin->SpinBox_DZ->installEventFilter(this);
+ Group4Spin->SpinBox_DX->installEventFilter(this);
+ Group4Spin->SpinBox_DY->installEventFilter(this);
+ Group4Spin->SpinBox_DZ->installEventFilter(this);
+ Group4Spin->SpinBox_DS->installEventFilter(this);
+
Init();
}
//=================================================================================
EntityGUI_SketcherDlg::~EntityGUI_SketcherDlg()
{
- myGeometryGUI->SetActiveDialogBox( 0 );
+ myGeometryGUI->SetActiveDialogBox( 0 );
+}
+
+
+//=================================================================================
+// function : eventFilter()
+// purpose : event filter for spin-boxes to provide Apply action on Return pressed
+//=================================================================================
+bool EntityGUI_SketcherDlg::eventFilter (QObject* object, QEvent* event)
+{
+ if (event->type() == QEvent::KeyPress) {
+ QKeyEvent* ke = (QKeyEvent*)event;
+ if (ke->key() == Key_Return) {
+ if (object == Group1Spin->SpinBox_DX) {
+ Group1Spin->buttonApply->animateClick();
+ return true;
+ } else if (object == Group2Spin->SpinBox_DX ||
+ object == Group2Spin->SpinBox_DY) {
+ Group2Spin->buttonApply->animateClick();
+ return true;
+ } else if (object == Group3Spin->SpinBox_DX ||
+ object == Group3Spin->SpinBox_DY ||
+ object == Group3Spin->SpinBox_DZ) {
+ Group3Spin->buttonApply->animateClick();
+ return true;
+ } else if (object == Group4Spin->SpinBox_DX ||
+ object == Group4Spin->SpinBox_DY ||
+ object == Group4Spin->SpinBox_DZ ||
+ object == Group4Spin->SpinBox_DS) {
+ Group4Spin->buttonApply->animateClick();
+ return true;
+ }
+ }
+ }
+
+ return EntityGUI_Skeleton_QTD::eventFilter(object, event);
}
double step = SUIT_Session::session()->resourceMgr()->doubleValue( "Geometry", "SettingsGeomStep", 100.0 );
/* min, max, step and decimals for spin boxes */
- Group1Spin->SpinBox_DX->RangeStepAndValidator(-999999.999, 999999.999, step, 3);
- Group2Spin->SpinBox_DX->RangeStepAndValidator(-999999.999, 999999.999, step, 3);
- Group2Spin->SpinBox_DY->RangeStepAndValidator(-999999.999, 999999.999, step, 3);
- Group3Spin->SpinBox_DX->RangeStepAndValidator(-999999.999, 999999.999, step, 3);
- Group3Spin->SpinBox_DY->RangeStepAndValidator(-999999.999, 999999.999, step, 3);
- Group3Spin->SpinBox_DZ->RangeStepAndValidator(-999999.999, 999999.999, step, 3);
- Group4Spin->SpinBox_DX->RangeStepAndValidator(-999999.999, 999999.999, 0.1, 3);
- Group4Spin->SpinBox_DY->RangeStepAndValidator(-999999.999, 999999.999, 0.1, 3);
- Group4Spin->SpinBox_DZ->RangeStepAndValidator(-999999.999, 999999.999, step, 3);
- Group4Spin->SpinBox_DS->RangeStepAndValidator(-999999.999, 999999.999, 5., 3);
+ Group1Spin->SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ Group2Spin->SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ Group2Spin->SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ Group3Spin->SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ Group3Spin->SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ Group3Spin->SpinBox_DZ->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ Group4Spin->SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, 0.1, 3);
+ Group4Spin->SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, 0.1, 3);
+ Group4Spin->SpinBox_DZ->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ Group4Spin->SpinBox_DS->RangeStepAndValidator(COORD_MIN, COORD_MAX, 5., 3);
/* displays Dialog */
GroupConstructors->setEnabled(false);
//=================================================================================
void EntityGUI_SketcherDlg::InitClick()
{
- disconnect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0);
+ disconnect(myGeometryGUI->getApp()->selectionMgr(), 0, this, 0);
Group1Sel->hide();
Group1Spin->hide();
{
InitClick();
+ // Get setting of step value from file configuration
+ double step = SUIT_Session::session()->resourceMgr()->doubleValue("Geometry", "SettingsGeomStep", 100.0);
+
if ( myConstructorId == 0 )
{ // SEGMENT
if ( constructorId == 1 )
{ // XY
mySketchType = PT_ABS;
- Group2Spin->SpinBox_DX->RangeStepAndValidator(-999999.999, 999999.999, 100., 3);
- Group2Spin->SpinBox_DY->RangeStepAndValidator(-999999.999, 999999.999, 100., 3);
+ Group2Spin->SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ Group2Spin->SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
Group2Spin->TextLabel1->setText(tr("GEOM_SKETCHER_X2"));
Group2Spin->TextLabel2->setText(tr("GEOM_SKETCHER_Y2"));
myX = 0.0;
else if ( constructorId == 0 )
{ // DXDY
mySketchType = PT_RELATIVE;
- Group2Spin->SpinBox_DX->RangeStepAndValidator(-999999.999, 999999.999, 100., 3);
- Group2Spin->SpinBox_DY->RangeStepAndValidator(-999999.999, 999999.999, 100., 3);
+ Group2Spin->SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ Group2Spin->SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
Group2Spin->TextLabel1->setText(tr("GEOM_SKETCHER_DX2"));
Group2Spin->TextLabel2->setText(tr("GEOM_SKETCHER_DY2"));
myDX = 0.0;
{ // Selection
mySketchType = PT_SEL;
myEditCurrentArgument = Group1Sel->LineEdit1;
- connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
- SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ;
+ connect(myGeometryGUI->getApp()->selectionMgr(),
+ SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
Group1Sel->show();
Group1Sel->buttonApply->setFocus();
SelectionIntoArgument();
InitClick();
myAngle = 0.0;
+ // Get setting of step value from file configuration
+ double step = SUIT_Session::session()->resourceMgr()->doubleValue("Geometry", "SettingsGeomStep", 100.0);
+
if ( myConstructorId == 0 )
{ // SEGMENT
myX = 0.0;
myLength = 100.0;
if ( myConstructorDirId == 2 )
{ // Angle
- Group2Spin->SpinBox_DX->RangeStepAndValidator(-999999.999, 999999.999, 5., 3);
- Group2Spin->SpinBox_DY->RangeStepAndValidator(-999999.999, 999999.999, 100., 3);
+ Group2Spin->SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, 5., 3);
+ Group2Spin->SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
Group2Spin->TextLabel1->setText(tr("GEOM_SKETCHER_ANGLE2"));
Group2Spin->SpinBox_DX->SetValue(myAngle);
Group2Spin->buttonApply->setFocus();
Group2Spin->TextLabel2->setText(tr("GEOM_SKETCHER_Y3"));
Group2Spin->SpinBox_DY->SetValue(myY);
}
- }
+ }
else if ( myConstructorDirId == 0 )
{ // Perpendicular
Group1Spin->show();
}
else if ( myConstructorDirId == 3 )
{ // DXDY
- Group3Spin->SpinBox_DX->RangeStepAndValidator(-999999.999, 999999.999, 0.1, 3);
- Group3Spin->SpinBox_DY->RangeStepAndValidator(-999999.999, 999999.999, 0.1, 3);
- Group3Spin->SpinBox_DZ->RangeStepAndValidator(-999999.999, 999999.999, 100., 3);
+ Group3Spin->SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, 0.1, 3);
+ Group3Spin->SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, 0.1, 3);
+ Group3Spin->SpinBox_DZ->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
Group3Spin->TextLabel1->setText(tr("GEOM_SKETCHER_VX2"));
Group3Spin->TextLabel2->setText(tr("GEOM_SKETCHER_VY2"));
myDX = 0.0;
if ( constructorId == 2 )
{ // Length
mySketchType = DIR_ANGLE_LENGTH;
- Group3Spin->SpinBox_DX->RangeStepAndValidator(-999999.999, 999999.999, 5., 3);
- Group3Spin->SpinBox_DY->RangeStepAndValidator(-999999.999, 999999.999, 100., 3);
- Group3Spin->SpinBox_DZ->RangeStepAndValidator(-999999.999, 999999.999, 5., 3);
+ Group3Spin->SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, 5., 3);
+ Group3Spin->SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ Group3Spin->SpinBox_DZ->RangeStepAndValidator(COORD_MIN, COORD_MAX, 5., 3);
Group3Spin->TextLabel1->setText(tr("GEOM_SKETCHER_ANGLE2"));
Group3Spin->TextLabel2->setText(tr("GEOM_SKETCHER_RADIUS2"));
Group3Spin->TextLabel3->setText(tr("GEOM_SKETCHER_ANGLE2"));
if ( constructorId == 2 )
{ // Length
mySketchType = DIR_PER_LENGTH;
- Group2Spin->SpinBox_DY->RangeStepAndValidator(-999999.999, 999999.999, 100., 3);
- Group2Spin->SpinBox_DY->RangeStepAndValidator(-999999.999, 999999.999, 5., 3);
+ Group2Spin->SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ Group2Spin->SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, 5., 3);
Group2Spin->TextLabel1->setText(tr("GEOM_SKETCHER_RADIUS2"));
Group2Spin->TextLabel2->setText(tr("GEOM_SKETCHER_ANGLE2"));
myRadius = 100.0;
if ( constructorId == 2 )
{ // Length
mySketchType = DIR_TAN_LENGTH;
- Group2Spin->SpinBox_DY->RangeStepAndValidator(-999999.999, 999999.999, 100., 3);
- Group2Spin->SpinBox_DY->RangeStepAndValidator(-999999.999, 999999.999, 5., 3);
+ Group2Spin->SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ Group2Spin->SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, 5., 3);
Group2Spin->TextLabel1->setText(tr("GEOM_SKETCHER_RADIUS2"));
Group2Spin->TextLabel2->setText(tr("GEOM_SKETCHER_ANGLE2"));
myRadius = 100.0;
tr( "GEOM_ERROR_STATUS" ), tr( "CANNOT_CLOSE" ), tr( "BUT_OK" ) );
return;
}
-
+
QString Command = myCommand.join( "" ) + GetNewCommand();
Sketcher_Profile aProfile (Command.ascii());
TopoDS_Shape myShape;
if ( aProfile.IsDone() )
myShape = aProfile.GetShape();
-
+
if(myShape.ShapeType() != TopAbs_VERTEX)
myCommand.append( ":WW" );
}
- else
+ else
myIsAllAdded = true;
if( myCommand.size() > 2 )
//=================================================================================
bool EntityGUI_SketcherDlg::ClickOnApply()
{
- ((QPushButton*)sender())->setFocus();
+ ((QPushButton*)sender())->setFocus(); // to update value of currently edited spin-box (PAL11948)
myCommand.append( GetNewCommand() );
mySketchState = NEXT_POINT;
GEOMBase_Helper::displayPreview();
+ // Set focus to SpinBox_DX
+ if (sender() == Group1Spin->buttonApply) {
+ (Group1Spin->SpinBox_DX)->setFocus();
+ (Group1Spin->SpinBox_DX)->selectAll();
+ }
+ else if (sender() == Group2Spin->buttonApply) {
+ (Group2Spin->SpinBox_DX)->setFocus();
+ (Group2Spin->SpinBox_DX)->selectAll();
+ }
+ else if (sender() == Group3Spin->buttonApply) {
+ (Group3Spin->SpinBox_DX)->setFocus();
+ (Group3Spin->SpinBox_DX)->selectAll();
+ }
+ else if (sender() == Group4Spin->buttonApply) {
+ (Group4Spin->SpinBox_DX)->setFocus();
+ (Group4Spin->SpinBox_DX)->selectAll();
+ }
+
return true;
}
void EntityGUI_SketcherDlg::ClickOnHelp()
{
LightApp_Application* app = (LightApp_Application*)(SUIT_Session::session()->activeApplication());
- if (app)
+ if (app)
app->onHelpContextModule(myGeometryGUI ? app->moduleName(myGeometryGUI->moduleName()) : QString(""), myHelpFileName);
else {
QString platform;
if(myCommand.count() == 1) {
mySketchState = FIRST_POINT;
-
+
RadioButton1->setChecked(true);
TypeClicked(0);
setEnabled( false );
globalSelection();
- disconnect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0);
+ disconnect(myGeometryGUI->getApp()->selectionMgr(), 0, this, 0);
myGeometryGUI->SetActiveDialogBox(0);
}
setEnabled(true);
myGeometryGUI->SetActiveDialogBox((QDialog*)this);
- connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
- SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ;
+ connect(myGeometryGUI->getApp()->selectionMgr(),
+ SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
//myGeometryGUI->SetState( 0 );
globalSelection( GEOM_POINT );
void EntityGUI_SketcherDlg::closeEvent(QCloseEvent* e)
{
//myGeometryGUI->SetState( -1 );
- disconnect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0);
+ disconnect(myGeometryGUI->getApp()->selectionMgr(), 0, this, 0);
QDialog::closeEvent( e );
}
}
QString cmd;
- if( ( mySketchState != FIRST_POINT && myLastX1 == myLastX2 && myLastY1 == myLastY2 ) || myIsAllAdded ) {
+ if( ( mySketchState != FIRST_POINT &&
+ myLastX1 == myLastX2 && myLastY1 == myLastY2 ) || myIsAllAdded ) {
cmd = myCommand.join( "" );
if ( Group1Sel->isVisible() ) {
Group1Sel->buttonApply->setEnabled(false);
- Group1Sel->buttonApply->setFocus();
+ //Group1Sel->buttonApply->setFocus();
}
if ( Group1Spin->isVisible() ) {
Group1Spin->buttonApply->setEnabled(false);
- Group1Spin->buttonApply->setFocus();
+ //Group1Spin->buttonApply->setFocus();
}
if ( Group2Spin->isVisible() ) {
Group2Spin->buttonApply->setEnabled(false);
- Group2Spin->buttonApply->setFocus();
+ //Group2Spin->buttonApply->setFocus();
}
if ( Group3Spin->isVisible() ) {
Group3Spin->buttonApply->setEnabled(false);
- Group3Spin->buttonApply->setFocus();
+ //Group3Spin->buttonApply->setFocus();
}
if ( Group4Spin->isVisible() ) {
Group4Spin->buttonApply->setEnabled(false);
- Group4Spin->buttonApply->setFocus();
+ //Group4Spin->buttonApply->setFocus();
}
}
else {
if ( Group1Sel->isVisible() ) {
Group1Sel->buttonApply->setEnabled(true);
- Group1Sel->buttonApply->setFocus();
+ //Group1Sel->buttonApply->setFocus();
}
if ( Group1Spin->isVisible() ) {
Group1Spin->buttonApply->setEnabled(true);
- Group1Spin->buttonApply->setFocus();
+ //Group1Spin->buttonApply->setFocus();
}
if ( Group2Spin->isVisible() ) {
Group2Spin->buttonApply->setEnabled(true);
- Group2Spin->buttonApply->setFocus();
+ //Group2Spin->buttonApply->setFocus();
}
if ( Group3Spin->isVisible() ) {
Group3Spin->buttonApply->setEnabled(true);
- Group3Spin->buttonApply->setFocus();
+ //Group3Spin->buttonApply->setFocus();
}
if ( Group4Spin->isVisible() ) {
Group4Spin->buttonApply->setEnabled(true);
- Group4Spin->buttonApply->setFocus();
+ //Group4Spin->buttonApply->setFocus();
}
}
-
+
gp_Ax3 myWPlane = myGeometryGUI->GetWorkingPlane();
GEOM::ListOfDouble_var WPlane = new GEOM::ListOfDouble;
WPlane->length(9);
WPlane[7] = myWPlane.XDirection().Y();
WPlane[8] = myWPlane.XDirection().Z();
- GEOM::GEOM_Object_var anObj = GEOM::GEOM_ICurvesOperations::_narrow( getOperation() )->MakeSketcher( cmd.latin1(), WPlane );
+ GEOM::GEOM_Object_var anObj =
+ GEOM::GEOM_ICurvesOperations::_narrow( getOperation() )->MakeSketcher( cmd.latin1(), WPlane );
if ( !anObj->_is_nil() )
objects.push_back( anObj._retn() );
return true;
}
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void EntityGUI_SketcherDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
-
-
-
-
-
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ ClickOnHelp();
+ }
+}
// GEOM GEOMGUI : GUI for Geometry component
//
// Copyright (C) 2003 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
+// 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
//
//
//
const char* name = 0, bool modal = FALSE, WFlags fl = 0);
~EntityGUI_SketcherDlg();
+ bool eventFilter (QObject* object, QEvent* event);
+
protected:
// redefined from GEOMBase_Helper
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool execute( ObjectList& objects );
void closeEvent( QCloseEvent* e );
+ void keyPressEvent( QKeyEvent* e );
private :
void Init();
#include <map>
#include <string>
+#include <Standard_Failure.hxx>
#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
static GEOM_Engine* TheEngine = NULL;
aSSI.SetIndices(theIndices);
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
GEOM_Solver aSolver (GEOM_Engine::GetEngine());
if (!aSolver.ComputeFunction(aFunction)) {
MESSAGE("GEOM_Engine::AddSubShape Error: Can't build a sub shape");
#include <TCollection_AsciiString.hxx>
#include <TCollection_ExtendedString.hxx>
+#include <Standard_Failure.hxx>
#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
#define ARGUMENT_LABEL 1
if(anObject.IsNull()) return aShape;
if(!anObject->IsMainShape()) {
try {
- GEOM_Solver aSolver(GEOM_Engine::GetEngine());
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ GEOM_Solver aSolver(GEOM_Engine::GetEngine());
if (!aSolver.ComputeFunction(this)) {
MESSAGE("GEOM_Object::GetValue Error : Can't build a sub shape");
return aShape;
TPythonDump& TPythonDump::operator<< (const Handle(GEOM_Object)& theObject)
{
- TCollection_AsciiString anEntry;
- TDF_Tool::Entry(theObject->GetEntry(), anEntry);
- myStream << anEntry.ToCString();
+ if (theObject.IsNull()) {
+ myStream << "None";
+ } else {
+ TCollection_AsciiString anEntry;
+ TDF_Tool::Entry(theObject->GetEntry(), anEntry);
+ myStream << anEntry.ToCString();
+ }
return *this;
}
{
myHelpFileName = theName;
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void GEOMBase_Skeleton::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ ClickOnHelp();
+ }
+}
protected:
void closeEvent(QCloseEvent* e);
+ void keyPressEvent(QKeyEvent* e);
/*! initialize "Name" field with a string "thePrefix_X" (Vertex_3)
*/
SALOMEDS.idl \
SALOMEDS_Attributes.idl \
SALOME_GenericObj.idl \
+ SALOME_Component.idl \
GEOM_Gen.idl
LIB_SERVER_IDL =
msgid "ICON_DLG_SUPRESS_HOLE_FACE_SHELL"
msgstr "supressHolesOnFaceShell.png"
+#ChangeOrientationDlg
+msgid "ICON_DLG_CHANGE_ORIENTATION"
+msgstr "change_orientation.png"
+
#MultiTranslationDlg
msgid "ICON_DLG_MULTITRANSLATION_SIMPLE"
msgstr "multitranslationsimple.png"
msgid "GEOM_PRISM_BSV"
msgstr "Base Shape + Vector"
+#: GeometryGUI_PrismDlg.cxx:83
+msgid "GEOM_PRISM_BSV_2P"
+msgstr "Base Shape + 2 Points"
+
#: GeometryGUI_PropertiesDlg.cxx:56
msgid "GEOM_PROPERTIES_TITLE"
msgstr "Basic Properties Informations"
msgid "GEOM_PRISM_BSV"
msgstr "Shape de base + Vecteur"
+#: GeometryGUI_PrismDlg.cxx:83
+msgid "GEOM_PRISM_BSV_2P"
+msgstr "Shape de base + 2 Points"
+
#: GeometryGUI_PropertiesDlg.cxx:56
msgid "GEOM_PROPERTIES_TITLE"
msgstr "Proprietes Basiques"
#include <SelectMgr_IndexedMapOfOwner.hxx>
#include <NCollection_DataMap.hxx>
+#include <SUIT_Session.h>
+#include <SalomeApp_Study.h>
+
//================================================================
// Function : GEOMGUI_OCCSelector
const LightApp_DataOwner* owner = dynamic_cast<const LightApp_DataOwner*>( (*itr).operator->() );
if ( owner )
{
- globalSelMap[owner->entry()] = 1;
+ SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( SUIT_Session::session()->activeApplication()->activeStudy() );
+ QString anEntry = appStudy->referencedToEntry( owner->entry() );
+
+ globalSelMap[anEntry] = 1;
}
}
}
// OCCT Includes
#include <AIS_Drawer.hxx>
#include <AIS_ListIteratorOfListOfInteractive.hxx>
+#include <Prs3d_IsoAspect.hxx>
#include <Prs3d_PointAspect.hxx>
#include <Graphic3d_AspectMarker3d.hxx>
#include <StdSelect_TypeOfEdge.hxx>
AISShape->SetDisplayMode( myDisplayMode );
AISShape->SetShadingColor( myShadingColor );
+ // Set color for iso lines
+ SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr();
+ QColor col = aResMgr->colorValue( "Geometry", "isos_color", QColor(int(0.5*255), int(0.5*255), int(0.5*255)) );
+ Quantity_Color aColor = SalomeApp_Tools::color( col );
+
+ Handle(Prs3d_IsoAspect) anAspect = AISShape->Attributes()->UIsoAspect();
+ anAspect->SetColor( aColor );
+ AISShape->Attributes()->SetUIsoAspect( anAspect );
+
+ anAspect = AISShape->Attributes()->VIsoAspect();
+ anAspect->SetColor( aColor );
+ AISShape->Attributes()->SetVIsoAspect( anAspect );
+
if ( HasColor() )
{
AISShape->SetColor( (Quantity_NameOfColor)GetColor() );
AISShape->Attributes()->SetPointAspect( anAspect );
}
}
+ else
+ {
+ if ( myShape.ShapeType() == TopAbs_VERTEX )
+ {
+ col = aResMgr->colorValue( "Geometry", "point_color", QColor( 255, 255, 0 ) );
+ aColor = SalomeApp_Tools::color( col );
+
+ Handle(Prs3d_PointAspect) anAspect = AISShape->Attributes()->PointAspect();
+ anAspect->SetColor( aColor );
+ AISShape->Attributes()->SetPointAspect( anAspect );
+ }
+ else
+ {
+ // Set line aspect
+ col = aResMgr->colorValue( "Geometry", "wireframe_color", QColor( 255, 255, 0 ) );
+ aColor = SalomeApp_Tools::color( col );
+
+ Handle(Prs3d_LineAspect) anAspect = AISShape->Attributes()->LineAspect();
+ anAspect->SetColor( aColor );
+ AISShape->Attributes()->SetLineAspect( anAspect );
+
+ // Set unfree boundaries aspect
+ anAspect = AISShape->Attributes()->UnFreeBoundaryAspect();
+ anAspect->SetColor( aColor );
+ AISShape->Attributes()->SetUnFreeBoundaryAspect( anAspect );
+
+ // Set free boundaries aspect
+ col = aResMgr->colorValue( "Geometry", "free_bound_color", QColor( 0, 255, 0 ) );
+ aColor = SalomeApp_Tools::color( col );
+
+ anAspect = AISShape->Attributes()->FreeBoundaryAspect();
+ anAspect->SetColor( aColor );
+ AISShape->Attributes()->SetFreeBoundaryAspect( anAspect );
+
+ // Set wire aspect
+ col = aResMgr->colorValue( "Geometry", "line_color", QColor( 255, 0, 0 ) );
+ aColor = SalomeApp_Tools::color( col );
+
+ anAspect = AISShape->Attributes()->WireAspect();
+ anAspect->SetColor( aColor );
+ AISShape->Attributes()->SetWireAspect( anAspect );
+ }
+ }
if ( HasWidth() )
AISShape->SetWidth( GetWidth() );
msgid "ICON_DLG_SEWING"
msgstr "sewing.png"
+#ChangeOrientationDlg
+msgid "ICON_DLG_CHANGE_ORIENTATION"
+msgstr "change_orientation.png"
+
#PipeDlg
msgid "ICON_DLG_PIPE"
msgstr "pipe.png"
msgid "ICON_DLG_PRISM"
msgstr "prism.png"
+msgid "ICON_DLG_PRISM_2P"
+msgstr "prism2.png"
+
#RevolutionDlg
msgid "ICON_DLG_REVOL"
msgstr "revol.png"
msgid "ICO_CHECK_FREE_FACES"
msgstr "free_faces.png"
+msgid "ICO_CHANGE_ORIENTATION"
+msgstr "change_orientation.png"
+
msgid "ICO_POINT_COORDS"
msgstr "point_coord.png"
msgstr "Mirror"
#Prism
-msgid "GEOM_PRISM"
-msgstr "Prism"
+msgid "GEOM_EXTRUSION"
+msgstr "Extrusion"
#Sub Shapes
msgid "GEOM_SUB_SHAPE"
msgid "GEOM_FACES"
msgstr "Faces"
+#Face or LCS
+msgid "GEOM_FACE_OR_LCS"
+msgstr "Face or LCS"
+
#Line
msgid "GEOM_LINE"
msgstr "Line"
#: GeometryGUI_FaceDlg.cxx:78
msgid "GEOM_FACE_FFW"
-msgstr "Face from a wire"
+msgstr "Face from a closed wire and edge"
#: GeometryGUI_FaceDlg.cxx:103
msgid "GEOM_FACE_OPT"
#: GeometryGUI_FillingDlg.cxx:53
msgid "GEOM_FILLING_TITLE"
-msgstr "Filling Surface With Curves"
+msgstr "Filling Surface With Edges"
#: GeometryGUI_FillingDlg.cxx:112
msgid "GEOM_FILLING_ARG"
#: GeometryGUI_FillingDlg.cxx:170
msgid "GEOM_FILLING_COMPOUND"
-msgstr "Curves Comp."
+msgstr "Edges compound"
#: GeometryGUI_FillingDlg.cxx:184
msgid "GEOM_FILLING_TOL_3D"
msgstr "Point + Vector"
#: GeometryGUI_PrismDlg.cxx:54
-msgid "GEOM_PRISM_TITLE"
-msgstr "Prism Construction"
+msgid "GEOM_EXTRUSION_TITLE"
+msgstr "Construction by Extrusion"
#: GeometryGUI_PrismDlg.cxx:83
-msgid "GEOM_PRISM_BSV"
+msgid "GEOM_EXTRUSION_BSV"
msgstr "Base Shape + Vector"
+msgid "GEOM_EXTRUSION_BSV_2P"
+msgstr "Base Shape + 2 Points"
+
#: GeometryGUI_PropertiesDlg.cxx:56
msgid "GEOM_PROPERTIES_TITLE"
msgstr "Basic Properties Informations"
#: GeometryGUI_WorkingPlaneDlg.cxx:107
msgid "GEOM_WPLANE_FACE"
-msgstr "Plane Or Planar Face"
+msgstr "Plane, Planar Face or LCS"
#: GeometryGUI_WorkingPlaneDlg.cxx:107
msgid "GEOM_WPLANE_VECTOR"
msgid "GEOM_FREE_FACES"
msgstr "Free faces"
+msgid "GEOM_CHANGE_ORIENTATION_TITLE"
+msgstr "Change orientation"
+
+msgid "GEOM_CHANGE_ORIENTATION"
+msgstr "Objects to change orientation"
+
msgid "GEOM_BY_PARAMETER"
msgstr "By parameter"
msgid "MeasureGUI_PointDlg::COORDINATES"
msgstr "Point and its coordinates"
+msgid "MeasureGUI_1Sel1TextView1Check_QTD::CHECK_SHAPE_GEOMETRY"
+msgstr "Check also geometry"
+
msgid "GroupGUI_GroupDlg::CREATE_GROUP_TITLE"
msgstr "Create Group"
msgid "SUPRESS_FACE_NEW_OBJ_NAME"
msgstr "SupressFaces"
+msgid "CHANGE_ORIENTATION_NEW_OBJ_NAME"
+msgstr "Invert"
+
msgid "NON_GEOM_OBJECTS_SELECTED"
msgstr "There are objects selected which do not belong to %1 component."
msgstr "Create a filling"
msgid "TOP_PIPE"
-msgstr "Create a pipe"
+msgstr "Extrusion along a path"
msgid "MEN_PIPE"
-msgstr "Pipe"
+msgstr "Extrusion along a path"
msgid "STB_PIPE"
-msgstr "Create a pipe"
+msgstr "Create a shape by Extrusion along a path"
msgid "MEN_GROUP"
msgstr "Group"
msgid "STB_CHECK_FREE_FACES"
msgstr "Check free faces"
+msgid "TOP_CHANGE_ORIENTATION"
+msgstr "Change orientation"
+
+msgid "MEN_CHANGE_ORIENTATION"
+msgstr "Change orientation"
+
+msgid "STB_CHANGE_ORIENTATION"
+msgstr "Change orientation"
+
msgid "MEN_MEASURES"
msgstr "Measures"
msgid "PREF_SHADING_COLOR"
msgstr "Default shading color"
+msgid "PREF_WIREFRAME_COLOR"
+msgstr "Default wireframe color"
+
+msgid "PREF_FREE_BOUND_COLOR"
+msgstr "Color of free boundaries"
+
+msgid "PREF_LINE_COLOR"
+msgstr "Color of edges, vectors, wires"
+
+msgid "PREF_POINT_COLOR"
+msgstr "Color of points"
+
+msgid "PREF_ISOS_COLOR"
+msgstr "Color of isolines"
+
msgid "PREF_STEP_VALUE"
msgstr "Step value for spin boxes"
msgid "PREF_TAB_SETTINGS"
msgstr "Settings"
+
+msgid "ERROR_SHAPE_TYPE"
+msgstr "Object of incorrect type selected!\nPlease, select face, shell or solid and try again"
+
+msgid "DEP_OBJECT"
+msgstr "Selected object has been used to create another one\n It can't be deleted "
#Filling
msgid "GEOM_FILLING"
-msgstr "Surface Par Courbes"
+msgstr "Surface Par Edges"
#Fuse
msgid "GEOM_FUSE"
msgstr "Miroir"
#Prism
-msgid "GEOM_PRISM"
+msgid "GEOM_EXTRUSION"
msgstr "Extrusion"
#Sub Shapes
#: GeometryGUI_FillingDlg.cxx:53
msgid "GEOM_FILLING_TITLE"
-msgstr "Surface Par Courbes"
+msgstr "Surface Par Edges"
#: GeometryGUI_FillingDlg.cxx:112
msgid "GEOM_FILLING_ARG"
#: GeometryGUI_FillingDlg.cxx:170
msgid "GEOM_FILLING_COMPOUND"
-msgstr "Compound de Courbes"
+msgstr "Compound de Edges"
#: GeometryGUI_FillingDlg.cxx:184
msgid "GEOM_FILLING_TOL_3D"
msgstr "Point + Vecteur"
#: GeometryGUI_PrismDlg.cxx:54
-msgid "GEOM_PRISM_TITLE"
+msgid "GEOM_EXTRUSION_TITLE"
msgstr "Extruder une Shape de base"
#: GeometryGUI_PrismDlg.cxx:83
-msgid "GEOM_PRISM_BSV"
+msgid "GEOM_EXTRUSION_BSV"
msgstr "Shape de base + Vecteur"
+msgid "GEOM_EXTRUSION_BSV_2P"
+msgstr "Shape de base + 2 Points"
+
#: GeometryGUI_PropertiesDlg.cxx:56
msgid "GEOM_PROPERTIES_TITLE"
msgstr "Proprietes Basiques"
// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
//=======================================================================
// function : ClientSObjectToObject
-// purpose :
+// purpose :
//=======================================================================
CORBA::Object_var GeometryGUI::ClientSObjectToObject (_PTR(SObject) theSObject)
{
//=======================================================================
// function : ClientStudyToStudy
-// purpose :
+// purpose :
//=======================================================================
SALOMEDS::Study_var GeometryGUI::ClientStudyToStudy (_PTR(Study) theStudy)
{
SalomeApp_Module( "GEOM" )
{
if ( CORBA::is_nil( myComponentGeom ) )
- {
+ {
SALOME_LifeCycleCORBA* ls = new SALOME_LifeCycleCORBA( getApp()->namingService() );
Engines::Component_var comp = ls->FindOrLoad_Component( "FactoryServer", "GEOM" );
myComponentGeom = GEOM::GEOM_Gen::_narrow( comp );
}
-
+
myState = -1;
myActiveDialogBox = 0;
myFatherior = "";
bool ViewVTK = ( window && window->getViewManager()->getType() == SVTK_Viewer::Type() );
// if current viewframe is not of OCC and not of VTK type - return immediately
// fix for IPAL8958 - allow some commands to execute even when NO viewer is active (rename for example)
- bool NotViewerDependentCommand = ( id == 901 || id == 216 || id == 213 );
+ bool NotViewerDependentCommand = ( id == 901 || id == 216 || id == 213 );
if ( !ViewOCC && !ViewVTK && !NotViewerDependentCommand )
return;
else if( id == 503 || // MENU OPERATION - PARTITION
id == 504 || // MENU OPERATION - ARCHIMEDE
id == 505 || // MENU OPERATION - FILLET
- id == 506 || // MENU OPERATION - CHAMFER
+ id == 506 || // MENU OPERATION - CHAMFER
id == 507 ) { // MENU OPERATION - CLIPPING RANGE
#ifndef WNT
library = getLibrary( "libOperationGUI.so" );
id == 608 || // MENU REPAIR - ADD POINT ON EDGE
id == 609 || // MENU REPAIR - FREE BOUNDARIES
id == 610 || // MENU REPAIR - FREE FACES
+ id == 611 || // MENU REPAIR - CHANGE ORIENTATION
id == 602 ) { // MENU REPAIR - GLUE FACES
#ifndef WNT
library = getLibrary( "libRepairGUI.so" );
}
// call method of corresponding GUI library
- if ( library )
+ if ( library )
library->OnGUIEvent( id, desk );
- else
+ else
SUIT_MessageBox::error1( desk, tr( "GEOM_ERROR" ), tr( "GEOM_ERR_LIB_NOT_FOUND" ), tr( "GEOM_BUT_OK" ) );
}
// purpose : Manages mouse move events [static]
//=================================================================================
void GeometryGUI::OnMouseMove( SUIT_ViewWindow* win, QMouseEvent* pe )
-{
+{
GUIMap::Iterator it;
bool bOk = true;
for ( it = myGUIMap.begin(); it != myGUIMap.end(); ++it ) {
{
QMenuBar* Mb = parent->getMainMenuBar();
SUIT_Study* ActiveStudy = application()->activeStudy();
-
+
// Wireframe or Shading
int DisplayMode = 0;
SUIT_ViewWindow* window = application()->desktop()->activeWindow();
// if(!AddInStudy.isEmpty())
// Settings_AddInStudy = AddInStudy.toInt();
// else
-
+
Settings_AddInStudy = 1;
Mb->setItemChecked(411, Settings_AddInStudy);
- // step value
+ // step value
QString S = QAD_CONFIG->getSetting("Geometry:SettingsGeomStep");
if(S.isEmpty())
QAD_CONFIG->addSetting("Geometry:SettingsGeomStep", "100");
- // isos
+ // isos
int count = ActiveStudy->getStudyFramesCount();
for(int i = 0; i < count; i++) {
if(ActiveStudy->getStudyFrame(i)->getTypeView() == VIEW_OCC) {
GUIMap::Iterator it;
for ( it = myGUIMap.begin(); it != myGUIMap.end(); ++it )
bOk = bOk && it.data()->SetSettings( parent );
-
- // MZN: Enable/disable "Clipping range" menu item(from GEOM_CLIPPING variable)
+
+ // MZN: Enable/disable "Clipping range" menu item(from GEOM_CLIPPING variable)
if (getenv( "GEOM_CLIPPING" ) == NULL)
{
QMenuItem* mi = Mb->findItem(50);
if (mi && mi->popup())
- mi->popup()->removeItem(507);
- }
-
+ mi->popup()->removeItem(507);
+ }
+
return bOk;
}
*/
//=======================================================================
// function : createGeomAction
-// purpose :
+// purpose :
//=======================================================================
void GeometryGUI::createGeomAction( const int id, const QString& po_id, const QString& icon_id, const int key, const bool toggle )
{
QWidget* parent = application()->desktop();
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
QPixmap pix;
- if ( icon_id.length() )
+ if ( icon_id.length() )
pix = resMgr->loadPixmap( "GEOM", tr( icon_id ) );
else
pix = resMgr->loadPixmap( "GEOM", tr( QString( "ICO_" )+po_id ), false );
createGeomAction( 608, "POINT_ON_EDGE" );
createGeomAction( 609, "CHECK_FREE_BNDS" );
createGeomAction( 610, "CHECK_FREE_FACES" );
-
+ createGeomAction( 611, "CHANGE_ORIENTATION" );
+
createGeomAction( 708, "POINT_COORDS" );
createGeomAction( 701, "BASIC_PROPS" );
createGeomAction( 702, "MASS_CENTER" );
createGeomAction( 7072, "CHECK_COMPOUND" );
createGeomAction( 5103, "CHECK_GEOMETRY" );
-
+
createGeomAction( 412, "SHADING_COLOR" );
createGeomAction( 413, "ISOS" );
createGeomAction( 414, "STEP_VALUE" );
createMenu( 4020, basicId, -1 );
int primId = createMenu( tr( "MEN_PRIMITIVES" ), newEntId, -1 );
- createMenu( 4021, primId, -1 );
- createMenu( 4022, primId, -1 );
- createMenu( 4023, primId, -1 );
- createMenu( 4024, primId, -1 );
- createMenu( 4025, primId, -1 );
+ createMenu( 4021, primId, -1 );
+ createMenu( 4022, primId, -1 );
+ createMenu( 4023, primId, -1 );
+ createMenu( 4024, primId, -1 );
+ createMenu( 4025, primId, -1 );
int genId = createMenu( tr( "MEN_GENERATION" ), newEntId, -1 );
- createMenu( 4031, genId, -1 );
- createMenu( 4032, genId, -1 );
- createMenu( 4033, genId, -1 );
- createMenu( 4034, genId, -1 );
+ createMenu( 4031, genId, -1 );
+ createMenu( 4032, genId, -1 );
+ createMenu( 4033, genId, -1 );
+ createMenu( 4034, genId, -1 );
createMenu( separator(), newEntId, -1 );
int groupId = createMenu( tr( "MEN_GROUP" ), newEntId, -1 );
- createMenu( 800, groupId, -1 );
- createMenu( 801, groupId, -1 );
+ createMenu( 800, groupId, -1 );
+ createMenu( 801, groupId, -1 );
createMenu( separator(), newEntId, -1 );
int blocksId = createMenu( tr( "MEN_BLOCKS" ), newEntId, -1 );
- createMenu( 9997, blocksId, -1 );
- createMenu( 9999, blocksId, -1 );
+ createMenu( 9997, blocksId, -1 );
+ createMenu( 9999, blocksId, -1 );
createMenu( separator(), newEntId, -1 );
- createMenu( 404, newEntId, -1 );
+ createMenu( 404, newEntId, -1 );
createMenu( separator(), newEntId, -1 );
- createMenu( 407, newEntId, -1 );
+ createMenu( 407, newEntId, -1 );
int buildId = createMenu( tr( "MEN_BUILD" ), newEntId, -1 );
- createMenu( 4081, buildId, -1 );
- createMenu( 4082, buildId, -1 );
- createMenu( 4083, buildId, -1 );
- createMenu( 4084, buildId, -1 );
- createMenu( 4085, buildId, -1 );
- createMenu( 4086, buildId, -1 );
+ createMenu( 4081, buildId, -1 );
+ createMenu( 4082, buildId, -1 );
+ createMenu( 4083, buildId, -1 );
+ createMenu( 4084, buildId, -1 );
+ createMenu( 4085, buildId, -1 );
+ createMenu( 4086, buildId, -1 );
int operId = createMenu( tr( "MEN_OPERATIONS" ), -1, -1, 10 );
int boolId = createMenu( tr( "MEN_BOOLEAN" ), operId, -1 );
- createMenu( 5011, boolId, -1 );
- createMenu( 5012, boolId, -1 );
- createMenu( 5013, boolId, -1 );
- createMenu( 5014, boolId, -1 );
+ createMenu( 5011, boolId, -1 );
+ createMenu( 5012, boolId, -1 );
+ createMenu( 5013, boolId, -1 );
+ createMenu( 5014, boolId, -1 );
int transId = createMenu( tr( "MEN_TRANSFORMATION" ), operId, -1 );
- createMenu( 5021, transId, -1 );
- createMenu( 5022, transId, -1 );
- createMenu( 5023, transId, -1 );
- createMenu( 5024, transId, -1 );
- createMenu( 5025, transId, -1 );
- createMenu( 5026, transId, -1 );
+ createMenu( 5021, transId, -1 );
+ createMenu( 5022, transId, -1 );
+ createMenu( 5023, transId, -1 );
+ createMenu( 5024, transId, -1 );
+ createMenu( 5025, transId, -1 );
+ createMenu( 5026, transId, -1 );
createMenu( separator(), transId, -1 );
- createMenu( 5027, transId, -1 );
- createMenu( 5028, transId, -1 );
+ createMenu( 5027, transId, -1 );
+ createMenu( 5028, transId, -1 );
- createMenu( 503, operId, -1 );
- createMenu( 504, operId, -1 );
+ createMenu( 503, operId, -1 );
+ createMenu( 504, operId, -1 );
createMenu( separator(), operId, -1 );
- createMenu( 505, transId, -1 );
- createMenu( 506, transId, -1 );
- //createMenu( 507, transId, -1 );
+ createMenu( 505, transId, -1 );
+ createMenu( 506, transId, -1 );
+ //createMenu( 507, transId, -1 );
int blockId = createMenu( tr( "MEN_BLOCKS" ), operId, -1 );
- createMenu( 9998, blockId, -1 );
- createMenu( 9995, blockId, -1 );
- createMenu( 99991, blockId, -1 );
+ createMenu( 9998, blockId, -1 );
+ createMenu( 9995, blockId, -1 );
+ createMenu( 99991, blockId, -1 );
int repairId = createMenu( tr( "MEN_REPAIR" ), -1, -1, 10 );
- createMenu( 605, repairId, -1 );
- createMenu( 603, repairId, -1 );
- createMenu( 606, repairId, -1 );
- createMenu( 607, repairId, -1 );
- createMenu( 604, repairId, -1 );
- createMenu( 601, repairId, -1 );
- createMenu( 602, repairId, -1 );
- createMenu( 608, repairId, -1 );
- createMenu( 609, repairId, -1 );
- createMenu( 610, repairId, -1 );
+ createMenu( 605, repairId, -1 );
+ createMenu( 603, repairId, -1 );
+ createMenu( 606, repairId, -1 );
+ createMenu( 607, repairId, -1 );
+ createMenu( 604, repairId, -1 );
+ createMenu( 601, repairId, -1 );
+ createMenu( 602, repairId, -1 );
+ createMenu( 608, repairId, -1 );
+ createMenu( 609, repairId, -1 );
+ createMenu( 610, repairId, -1 );
+ createMenu( 611, repairId, -1 );
int measurId = createMenu( tr( "MEN_MEASURES" ), -1, -1, 10 );
- createMenu( 708, measurId, -1 );
- createMenu( 701, measurId, -1 );
+ createMenu( 708, measurId, -1 );
+ createMenu( 701, measurId, -1 );
createMenu( separator(), measurId, -1 );
- createMenu( 702, measurId, -1 );
- createMenu( 703, measurId, -1 );
+ createMenu( 702, measurId, -1 );
+ createMenu( 703, measurId, -1 );
createMenu( separator(), measurId, -1 );
int dimId = createMenu( tr( "MEN_DIMENSIONS" ), measurId, -1 );
- createMenu( 7041, dimId, -1 );
+ createMenu( 7041, dimId, -1 );
createMenu( 7042, dimId, -1 );
createMenu( separator(), measurId, -1 );
-
- createMenu( 705, measurId, -1 );
+
+ createMenu( 705, measurId, -1 );
createMenu( separator(), measurId, -1 );
- createMenu( 706, measurId, -1 );
- createMenu( 707, measurId, -1 );
- createMenu( 7072, measurId, -1 );
+ createMenu( 706, measurId, -1 );
+ createMenu( 707, measurId, -1 );
+ createMenu( 7072, measurId, -1 );
int toolsId = createMenu( tr( "MEN_TOOLS" ), -1, -1, 50 );
createMenu( separator(), toolsId, -1 );
- createMenu( 5103, toolsId, -1 );
-
+ createMenu( 5103, toolsId, -1 );
+
//int prefId = createMenu( tr( "MEN_PREFERENCES" ), -1, -1, 50 );
//createMenu( separator(), prefId, -1 );
//int geomId = createMenu( tr( "MEN_PREFERENCES_GEOM" ), prefId, -1 );
- //createMenu( 412, geomId, -1 );
- //createMenu( 413, geomId, -1 );
- //createMenu( 414, geomId, -1 );
+ //createMenu( 412, geomId, -1 );
+ //createMenu( 413, geomId, -1 );
+ //createMenu( 414, geomId, -1 );
//createMenu( separator(), prefId, -1 );
int viewId = createMenu( tr( "MEN_VIEW" ), -1, -1 );
createMenu( separator(), viewId, -1 );
int dispmodeId = createMenu( tr( "MEN_DISPLAY_MODE" ), viewId, -1 );
- createMenu( 211, dispmodeId, -1 );
-
+ createMenu( 211, dispmodeId, -1 );
+
createMenu( separator(), viewId, -1 );
- createMenu( 212, viewId, -1 );
- createMenu( 214, viewId, -1 );
+ createMenu( 212, viewId, -1 );
+ createMenu( 214, viewId, -1 );
createMenu( separator(), viewId, -1 );
/*
because of these items are accessible through object browser and viewers
we have removed they from main menu
- createMenu( 216, viewId, -1 );
- createMenu( 213, viewId, -1 );
+ createMenu( 216, viewId, -1 );
+ createMenu( 213, viewId, -1 );
createMenu( 215, viewId, -1 );
*/
createTool( 4020, basicTbId );
int primTbId = createTool( tr( "TOOL_PRIMITIVES" ) );
- createTool( 4021, primTbId );
- createTool( 4022, primTbId );
- createTool( 4023, primTbId );
- createTool( 4024, primTbId );
- createTool( 4025, primTbId );
+ createTool( 4021, primTbId );
+ createTool( 4022, primTbId );
+ createTool( 4023, primTbId );
+ createTool( 4024, primTbId );
+ createTool( 4025, primTbId );
int boolTbId = createTool( tr( "TOOL_BOOLEAN" ) );
- createTool( 5011, boolTbId );
- createTool( 5012, boolTbId );
- createTool( 5013, boolTbId );
- createTool( 5014, boolTbId );
+ createTool( 5011, boolTbId );
+ createTool( 5012, boolTbId );
+ createTool( 5013, boolTbId );
+ createTool( 5014, boolTbId );
int genTbId = createTool( tr( "TOOL_GENERATION" ) );
- createTool( 4031, genTbId );
- createTool( 4032, genTbId );
- createTool( 4033, genTbId );
- createTool( 4034, genTbId );
+ createTool( 4031, genTbId );
+ createTool( 4032, genTbId );
+ createTool( 4033, genTbId );
+ createTool( 4034, genTbId );
int transTbId = createTool( tr( "TOOL_TRANSFORMATION" ) );
- createTool( 5021, transTbId );
- createTool( 5022, transTbId );
- createTool( 5023, transTbId );
- createTool( 5024, transTbId );
- createTool( 5025, transTbId );
- createTool( 5026, transTbId );
+ createTool( 5021, transTbId );
+ createTool( 5022, transTbId );
+ createTool( 5023, transTbId );
+ createTool( 5024, transTbId );
+ createTool( 5025, transTbId );
+ createTool( 5026, transTbId );
createTool( separator(), transTbId );
- createTool( 5027, transTbId );
+ createTool( 5027, transTbId );
createTool( 5028, transTbId );
+ // ---- create popup menus --------------------------
+
+ QString clientOCCorVTK = "(client='OCCViewer' or client='VTKViewer')";
+ QString clientOCCorVTK_AndSomeVisible = clientOCCorVTK + " and selcount>0 and isVisible";
+
QtxPopupMgr* mgr = popupMgr();
- mgr->insert( action( 901 ), -1, -1 ); // rename
+ mgr->insert( action( 901 ), -1, -1 ); // rename
mgr->setRule( action( 901 ), "$type in {'Shape' 'Group'} and selcount=1", true );
mgr->insert( action( 8001 ), -1, -1 ); // create group
mgr->setRule( action( 8001 ), "client='ObjectBrowser' and type='Shape' and selcount=1 and isOCC=true", true );
- mgr->insert( action( 801 ), -1, -1 ); // edit group
+ mgr->insert( action( 801 ), -1, -1 ); // edit group
mgr->setRule( action( 801 ), "client='ObjectBrowser' and type='Group' and selcount=1 and isOCC=true", true );
- mgr->insert( separator(), -1, -1 ); // -----------
+ mgr->insert( separator(), -1, -1 ); // -----------
dispmodeId = mgr->insert( tr( "MEN_DISPLAY_MODE" ), -1, -1 ); // display mode menu
mgr->insert( action( 80311 ), dispmodeId, -1 ); // wireframe
- mgr->setRule( action( 80311 ), "(client='OCCViewer' or client='VTKViewer') and selcount>0 and isVisible", true );
- mgr->setRule( action( 80311 ), "(client='OCCViewer' or client='VTKViewer') and displaymode='Wireframe'", false );
+ mgr->setRule( action( 80311 ), clientOCCorVTK_AndSomeVisible, true );
+ mgr->setRule( action( 80311 ), clientOCCorVTK + " and displaymode='Wireframe'", false );
mgr->insert( action( 80312 ), dispmodeId, -1 ); // shading
- mgr->setRule( action( 80312 ), "(client='OCCViewer' or client='VTKViewer') and selcount>0 and isVisible", true );
- mgr->setRule( action( 80312 ), "(client='OCCViewer' or client='VTKViewer') and displaymode='Shading'", false );
- mgr->insert( separator(), -1, -1 ); // -----------
+ mgr->setRule( action( 80312 ), clientOCCorVTK_AndSomeVisible, true );
+ mgr->setRule( action( 80312 ), clientOCCorVTK + " and displaymode='Shading'", false );
+ mgr->insert( separator(), -1, -1 ); // -----------
mgr->insert( action( 8032 ), -1, -1 ); // color
- mgr->setRule( action( 8032 ), "(client='OCCViewer' or client='VTKViewer') and selcount>0 and isVisible", true );
+ mgr->setRule( action( 8032 ), clientOCCorVTK_AndSomeVisible + " and ($component={'GEOM'})", true );
mgr->insert( action( 8033 ), -1, -1 ); // transparency
- mgr->setRule( action( 8033 ), "(client='OCCViewer' or client='VTKViewer') and selcount>0 and isVisible", true );
+ mgr->setRule( action( 8033 ), clientOCCorVTK_AndSomeVisible, true );
mgr->insert( action( 8034 ), -1, -1 ); // isos
mgr->setRule( action( 8034 ), "client='OCCViewer' and selcount>0 and isVisible", true );
- mgr->insert( separator(), -1, -1 ); // -----------
-
+ mgr->insert( separator(), -1, -1 ); // -----------
QString canDisplay = "($component={'GEOM'}) and (selcount>0) and ({true} in $canBeDisplayed) ",
mgr->setRule( action( 215 ), rule.arg( types ).arg( "isVisible" ), true );
mgr->insert( action( 214 ), -1, -1 ); // erase All
- mgr->setRule( action( 214 ), "client='OCCViewer' or client='VTKViewer'", true );
+ mgr->setRule( action( 214 ), clientOCCorVTK, true );
mgr->insert( action( 213 ), -1, -1 ); // display only
mgr->setRule( action( 213 ), rule.arg( types ).arg( "true" ), true );
setMenuShown( false );
setToolShown( false );
- disconnect( application()->desktop(), SIGNAL( windowActivated( SUIT_ViewWindow* ) ),
+ disconnect( application()->desktop(), SIGNAL( windowActivated( SUIT_ViewWindow* ) ),
this, SLOT( onWindowActivated( SUIT_ViewWindow* ) ) );
EmitSignalCloseAllDialogs();
GUIMap::Iterator it;
for ( it = myGUIMap.begin(); it != myGUIMap.end(); ++it )
- it.data()->deactivate();
+ it.data()->deactivate();
+
+ // Unset actions accelerator keys
+ //action(111)->setAccel(QKeySequence()); // Import
+ //action(121)->setAccel(QKeySequence()); // Export
+ action(111)->setEnabled(false); // Import
+ action(121)->setEnabled(false); // Export
// Unset actions accelerator keys
//action(111)->setAccel(QKeySequence()); // Import
if( nbSel == 0 ) {
////// NOTHING SELECTED
popup->clear();
- }
+ }
else if ( nbSel == 1 ) {
////// SINGLE OBJECT SELECTION
if ( parentComponent != parent->getActiveComponent() ) {
//=======================================================================
// function : GeometryGUI::BuildPresentation()
-// purpose :
+// purpose :
//=======================================================================
void GeometryGUI::BuildPresentation( const Handle(SALOME_InteractiveObject)& io, SUIT_ViewWindow* win )
{
const bool ViewOCC = ( win->getViewManager()->getType() == OCCViewer_Viewer::Type() );
// const bool ViewVTK = ( win->getViewManager()->getType() == SVTK_Viewer::Type() );
-
+
// disable non-OCC viewframe menu commands
// action( 404 )->setEnabled( ViewOCC ); // SKETCHER
action( 603 )->setEnabled( ViewOCC ); // SuppressFace
int tabId = addPreference( tr( "PREF_TAB_SETTINGS" ) );
int genGroup = addPreference( tr( "PREF_GROUP_GENERAL" ), tabId );
- addPreference( tr( "PREF_SHADING_COLOR" ), genGroup,
- LightApp_Preferences::Color, "Geometry", "shading_color" );
- int step = addPreference( tr( "PREF_STEP_VALUE" ), genGroup,
- LightApp_Preferences::IntSpin, "Geometry", "SettingsGeomStep" );
+ setPreferenceProperty( genGroup, "columns", 1 );
+
int dispmode = addPreference( tr( "PREF_DISPLAY_MODE" ), genGroup,
LightApp_Preferences::Selector, "Geometry", "display_mode" );
- setPreferenceProperty( genGroup, "columns", 1 );
+ addPreference( tr( "PREF_SHADING_COLOR" ), genGroup,
+ LightApp_Preferences::Color, "Geometry", "shading_color" );
- setPreferenceProperty( step, "min", 0.001 );
- setPreferenceProperty( step, "max", 10000 );
- setPreferenceProperty( step, "precision", 3 );
+ addPreference( tr( "PREF_WIREFRAME_COLOR" ), genGroup,
+ LightApp_Preferences::Color, "Geometry", "wireframe_color" );
+
+ addPreference( tr( "PREF_FREE_BOUND_COLOR" ), genGroup,
+ LightApp_Preferences::Color, "Geometry", "free_bound_color" );
+
+ addPreference( tr( "PREF_LINE_COLOR"), genGroup,
+ LightApp_Preferences::Color, "Geometry", "line_color" );
+
+ addPreference( tr( "PREF_POINT_COLOR"), genGroup,
+ LightApp_Preferences::Color, "Geometry", "point_color" );
+
+ addPreference( tr( "PREF_ISOS_COLOR" ), genGroup,
+ LightApp_Preferences::Color, "Geometry", "isos_color" );
+
+ int step = addPreference( tr( "PREF_STEP_VALUE" ), genGroup,
+ LightApp_Preferences::IntSpin, "Geometry", "SettingsGeomStep" );
// Set property for default display mode
QStringList aModesList;
aModesList.append( tr("MEN_WIREFRAME") );
aModesList.append( tr("MEN_SHADING") );
-
+
QValueList<QVariant> anIndexesList;
anIndexesList.append(0);
anIndexesList.append(1);
-
+
setPreferenceProperty( dispmode, "strings", aModesList );
setPreferenceProperty( dispmode, "indexes", anIndexesList );
+
+ // Set property for step value for spinboxes
+ setPreferenceProperty( step, "min", 0.001 );
+ setPreferenceProperty( step, "max", 10000 );
+ setPreferenceProperty( step, "precision", 3 );
+
}
void GeometryGUI::preferencesChanged( const QString& section, const QString& param )
{
+ if (section == "Geometry") {
+ SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr();
+ if (param == QString("SettingsGeomStep")) {
+ double spin_step = aResourceMgr->doubleValue(section, param, 100.);
+ EmitSignalDefaultStepValueChanged(spin_step);
+ }
+ }
}
LightApp_Displayer* GeometryGUI::displayer()
// MESSAGE("Destructeur");
}
-void GEOM_Swig::createAndDisplayGO (const char* Entry)
+void GEOM_Swig::createAndDisplayGO (const char* Entry, bool isUpdated)
{
class TEvent: public SALOME_Event
{
std::string myEntry;
+ bool myUpdateViewer;
public:
- TEvent(const char* theEntry):
- myEntry(theEntry)
+ TEvent(const char* theEntry, bool toUpdateViewer):
+ myEntry(theEntry),
+ myUpdateViewer(toUpdateViewer)
{}
virtual void Execute()
{
"GEOM",
const_cast<char*>( obj->GetID().c_str()));
- GEOM_Displayer(ActiveStudy).Display(anIO, true);
+ GEOM_Displayer(ActiveStudy).Display(anIO, myUpdateViewer);
/*if (SVTK_ViewWindow* aViewWindow = GetSVTKViewWindow(app)) {
SVTK_View* aView = aViewWindow->getView();
int aMode = aView->GetDisplayMode();
};
// MESSAGE("createAndDisplayGO");
- ProcessVoidEvent(new TEvent (Entry));
+ ProcessVoidEvent(new TEvent (Entry, isUpdated));
class TEventUpdateBrowser: public SALOME_Event
{
}
};
- ProcessVoidEvent(new TEventUpdateBrowser ());
+ if (isUpdated)
+ ProcessVoidEvent(new TEventUpdateBrowser ());
}
void GEOM_Swig::createAndDisplayFitAllGO (const char* Entry)
ProcessVoidEvent(new TEventFitAll());
}
+void GEOM_Swig::UpdateViewer()
+{
+ class TEventUpdateViewer: public SALOME_Event
+ {
+ public:
+ TEventUpdateViewer() {}
+ virtual void Execute() {
+ SUIT_Application* app = SUIT_Session::session()->activeApplication();
+ if (!app) return;
+ SalomeApp_Study* ActiveStudy = dynamic_cast<SalomeApp_Study*>(app->activeStudy());
+ if (!ActiveStudy) return;
+
+ GEOM_Displayer(ActiveStudy).UpdateViewer();
+ }
+ };
+
+ ProcessVoidEvent(new TEventUpdateViewer());
+}
+
int GEOM_Swig::getIndexTopology(const char* SubIOR, const char* IOR)
{
GEOM::GEOM_Gen_var aGeomGen = GeometryGUI::GetGeomGen();
return "None";
}
-void GEOM_Swig::setDisplayMode(const char* theEntry, int theMode)
+void GEOM_Swig::setDisplayMode(const char* theEntry, int theMode, bool isUpdated)
{
class TEvent: public SALOME_Event {
std::string myEntry;
int myMode;
+ bool myUpdateViewer;
public:
- TEvent(const char* theEntryArg, int theModeArg):
- myEntry(theEntryArg), myMode(theModeArg)
+ TEvent(const char* theEntryArg, int theModeArg, bool theUpdated):
+ myEntry(theEntryArg), myMode(theModeArg), myUpdateViewer(theUpdated)
{}
virtual void Execute() {
SUIT_Application* anApp = SUIT_Session::session()->activeApplication();
if (SVTK_ViewWindow* aViewWindow = GetSVTKViewWindow(anApp)) {
SVTK_View* aView = aViewWindow->getView();
aView->SetDisplayMode(anIO, myMode);
- aView->Repaint();
+ if (myUpdateViewer)
+ aView->Repaint();
}
else if (OCCViewer_Viewer* occViewer = GetOCCViewer(anApp)) {
SOCC_Viewer* soccViewer = dynamic_cast<SOCC_Viewer*>(occViewer);
if (soccViewer)
- soccViewer->switchRepresentation(anIO, myMode);
+ soccViewer->switchRepresentation(anIO, myMode, myUpdateViewer);
}
}
};
- ProcessVoidEvent(new TEvent (theEntry, theMode));
+ ProcessVoidEvent(new TEvent (theEntry, theMode, isUpdated));
}
-void GEOM_Swig::setColor(const char* theEntry, int red, int green, int blue)
+void GEOM_Swig::setColor(const char* theEntry, int red, int green, int blue, bool isUpdated)
{
class TEvent: public SALOME_Event {
std::string myEntry;
int myRed;
int myGreen;
int myBlue;
+ bool myUpdateViewer;
public:
- TEvent(const char* theEntryArg, int theR, int theG, int theB):
- myEntry(theEntryArg), myRed(theR), myGreen(theG), myBlue(theB)
+ TEvent(const char* theEntryArg, int theR, int theG, int theB, bool theUpdated):
+ myEntry(theEntryArg), myRed(theR), myGreen(theG), myBlue(theB), myUpdateViewer(theUpdated)
{}
virtual void Execute() {
SUIT_Application* anApp = SUIT_Session::session()->activeApplication();
SVTK_View* aView = aViewWindow->getView();
QColor aColor (myRed, myGreen, myBlue);
aView->SetColor(anIO, aColor);
- aView->Repaint();
+ if (myUpdateViewer)
+ aView->Repaint();
} else if (OCCViewer_Viewer* occViewer = GetOCCViewer(anApp)) {
Handle(AIS_InteractiveContext) ic = occViewer->getAISContext();
AIS_ListOfInteractive List;
ite.Value()->SetColor(CSFColor);
if (ite.Value()->IsKind(STANDARD_TYPE(GEOM_AISShape)))
Handle(GEOM_AISShape)::DownCast(ite.Value())->SetShadingColor(CSFColor);
- ite.Value()->Redisplay(Standard_True);
- occViewer->update();
+ ic->Redisplay(ite.Value(), true, true);
+ if (myUpdateViewer)
+ occViewer->update();
break;
}
}
}
}
};
- ProcessVoidEvent(new TEvent(theEntry, red, green, blue));
+ ProcessVoidEvent(new TEvent(theEntry, red, green, blue, isUpdated));
}
-void GEOM_Swig::setTransparency(const char* theEntry, float transp)
+void GEOM_Swig::setTransparency(const char* theEntry, float transp, bool isUpdated)
{
class TEvent: public SALOME_Event {
std::string myEntry;
float myParam;
+ bool myUpdateViewer;
public:
- TEvent(const char* theEntryArg, float theParam):
- myEntry(theEntryArg), myParam(theParam)
+ TEvent(const char* theEntryArg, float theParam, bool theUpdated):
+ myEntry(theEntryArg), myParam(theParam), myUpdateViewer(theUpdated)
{}
virtual void Execute() {
SUIT_Application* anApp = SUIT_Session::session()->activeApplication();
if (SVTK_ViewWindow* aViewWindow = GetSVTKViewWindow(anApp)) {
SVTK_View* aView = aViewWindow->getView();
aView->SetTransparency(anIO, myParam);
- aView->Repaint();
+ if (myUpdateViewer)
+ aView->Repaint();
} else if (OCCViewer_Viewer* occViewer = GetOCCViewer(anApp)) {
SOCC_Viewer* soccViewer = dynamic_cast<SOCC_Viewer*>(occViewer);
if (soccViewer)
- soccViewer->setTransparency(anIO, myParam);
+ soccViewer->setTransparency(anIO, myParam, myUpdateViewer);
}
}
};
- ProcessVoidEvent(new TEvent (theEntry, transp));
+ ProcessVoidEvent(new TEvent (theEntry, transp, isUpdated));
}
GEOM_Swig();
~GEOM_Swig();
- void createAndDisplayGO(const char* Entry);
+ void createAndDisplayGO(const char* Entry, bool isUpdated = true);
void eraseGO(const char* Entry, bool allWindows);
void createAndDisplayFitAllGO(const char* Entry);
- void setDisplayMode(const char* Entry, int mode);
- void setColor(const char* Entry, int red, int green, int blue);
- void setTransparency(const char* Entry, float transp);
+ void UpdateViewer();
+ void setDisplayMode(const char* Entry, int mode, bool isUpdated = true);
+ void setColor(const char* Entry, int red, int green, int blue, bool isUpdated = true);
+ void setTransparency(const char* Entry, float transp, bool isUpdated = true);
void setDeflection(const char* Entry, float deflect);
int getIndexTopology(const char *SubEntry, const char *Entry);
// GEOM GEOMGUI : GUI for Geometry component
//
// Copyright (C) 2003 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
+// 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 "GeometryGUI_Swig.hxx"
%}
+/*
+ managing C++ exception in the Python API
+*/
+%exception
+{
+ class PyAllowThreadsGuard {
+ public:
+ // Py_BEGIN_ALLOW_THREADS
+ PyAllowThreadsGuard() { _save = PyEval_SaveThread(); }
+ // Py_END_ALLOW_THREADS
+ ~PyAllowThreadsGuard() { PyEval_RestoreThread(_save); }
+ private:
+ PyThreadState *_save;
+ };
+
+ PyAllowThreadsGuard guard;
+
+ $action
+}
+
class GEOM_Swig
{
public:
GEOM_Swig();
~GEOM_Swig();
- void createAndDisplayGO(const char* Entry);
+ void createAndDisplayGO(const char* Entry, bool isUpdated =true);
void eraseGO(const char* Entry, bool allWindows);
void createAndDisplayFitAllGO(const char* Entry);
+ void UpdateViewer();
int getIndexTopology(const char *SubEntry, const char *Entry);
const char* getShapeTypeString(const char *Entry);
- void setDisplayMode(const char* Entry, int mode);
- void setColor(const char* Entry, int red, int green, int blue);
- void setTransparency(const char* Entry, float transp);
+ void setDisplayMode(const char* Entry, int mode, bool isUpdated =true);
+ void setColor(const char* Entry, int red, int green, int blue, bool isUpdated =true);
+ void setTransparency(const char* Entry, float transp, bool isUpdated =true);
void setDeflection(const char* Entry, float deflect);
const char* getShapeTypeIcon(const char *Ior);
-
+
bool initGeomGen();
};
// 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
+// 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
+//
+// 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
+// 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 <Standard_Stream.hxx>
-
#include <GEOMImpl_BooleanDriver.hxx>
#include <GEOMImpl_IBoolean.hxx>
#include <GEOMImpl_Types.hxx>
+#include <GEOMImpl_GlueDriver.hxx>
#include <GEOM_Function.hxx>
+#include <BRep_Builder.hxx>
#include <BRepAlgo.hxx>
#include <BRepAlgoAPI_Common.hxx>
#include <BRepAlgoAPI_Cut.hxx>
#include <BRepAlgoAPI_Fuse.hxx>
#include <BRepAlgoAPI_Section.hxx>
#include <TopoDS_Shape.hxx>
+#include <TopoDS_Compound.hxx>
+#include <TopoDS_Iterator.hxx>
+#include <TopTools_MapOfShape.hxx>
+#include <TopTools_ListOfShape.hxx>
+#include <TopTools_ListIteratorOfListOfShape.hxx>
+#include <Precision.hxx>
#include <Standard_ConstructionError.hxx>
#include <StdFail_NotDone.hxx>
{
}
+void AddSimpleShapes(TopoDS_Shape theShape, TopTools_ListOfShape& theList)
+{
+ if (theShape.ShapeType() != TopAbs_COMPOUND &&
+ theShape.ShapeType() != TopAbs_COMPSOLID) {
+ theList.Append(theShape);
+ return;
+ }
+
+ TopTools_MapOfShape mapShape;
+ TopoDS_Iterator It (theShape, Standard_True, Standard_True);
+
+ for (; It.More(); It.Next()) {
+ TopoDS_Shape aShape_i = It.Value();
+ if (mapShape.Add(aShape_i)) {
+ if (aShape_i.ShapeType() == TopAbs_COMPOUND ||
+ aShape_i.ShapeType() == TopAbs_COMPSOLID) {
+ AddSimpleShapes(aShape_i, theList);
+ } else {
+ theList.Append(aShape_i);
+ }
+ }
+ }
+}
+
//=======================================================================
//function : Execute
//purpose :
TopoDS_Shape aShape1 = aRefShape1->GetValue();
TopoDS_Shape aShape2 = aRefShape2->GetValue();
if (!aShape1.IsNull() && !aShape2.IsNull()) {
+
+ // perform COMMON operation
if (aType == BOOLEAN_COMMON) {
- BRepAlgoAPI_Common BO (aShape1, aShape2);
-// BO.Build();
- if (!BO.IsDone()) {
- StdFail_NotDone::Raise("Requested boolean operation can not be performed on the given shapes");
+ BRep_Builder B;
+ TopoDS_Compound C;
+ B.MakeCompound(C);
+
+ TopTools_ListOfShape listShape1, listShape2;
+ AddSimpleShapes(aShape1, listShape1);
+ AddSimpleShapes(aShape2, listShape2);
+
+ Standard_Boolean isCompound =
+ (listShape1.Extent() > 1 || listShape2.Extent() > 1);
+
+ TopTools_ListIteratorOfListOfShape itSub1 (listShape1);
+ for (; itSub1.More(); itSub1.Next()) {
+ TopoDS_Shape aValue1 = itSub1.Value();
+ TopTools_ListIteratorOfListOfShape itSub2 (listShape2);
+ for (; itSub2.More(); itSub2.Next()) {
+ TopoDS_Shape aValue2 = itSub2.Value();
+ BRepAlgoAPI_Common BO (aValue1, aValue2);
+ if (!BO.IsDone()) {
+ StdFail_NotDone::Raise("Common operation can not be performed on the given shapes");
+ }
+ if (isCompound) {
+ TopoDS_Shape aStepResult = BO.Shape();
+
+ // check result of this step: if it is a compound (boolean operations
+ // allways return a compound), we add all sub-shapes of it.
+ // This allows to avoid adding empty compounds,
+ // resulting from COMMON on two non-intersecting shapes.
+ if (aStepResult.ShapeType() == TopAbs_COMPOUND) {
+ TopoDS_Iterator aCompIter (aStepResult);
+ for (; aCompIter.More(); aCompIter.Next()) {
+ // add shape in a result
+ B.Add(C, aCompIter.Value());
+ }
+ }
+ else {
+ // add shape in a result
+ B.Add(C, aStepResult);
+ }
+ }
+ else
+ aShape = BO.Shape();
+ }
}
- aShape = BO.Shape();
- } else if (aType == BOOLEAN_CUT) {
- BRepAlgoAPI_Cut BO (aShape1, aShape2);
- if (!BO.IsDone()) {
- StdFail_NotDone::Raise("Requested boolean operation can not be performed on the given shapes");
+
+ if (isCompound) {
+ TopTools_ListOfShape listShapeC;
+ AddSimpleShapes(C, listShapeC);
+ TopTools_ListIteratorOfListOfShape itSubC (listShapeC);
+ bool isOnlySolids = true;
+ for (; itSubC.More(); itSubC.Next()) {
+ TopoDS_Shape aValueC = itSubC.Value();
+ if (aValueC.ShapeType() != TopAbs_SOLID) isOnlySolids = false;
+ }
+ if (isOnlySolids)
+ aShape = GEOMImpl_GlueDriver::GlueFaces(C, Precision::Confusion());
+ else
+ aShape = C;
}
- aShape = BO.Shape();
- } else if (aType == BOOLEAN_FUSE) {
+ }
+
+ // perform CUT operation
+ else if (aType == BOOLEAN_CUT) {
+ BRep_Builder B;
+ TopoDS_Compound C;
+ B.MakeCompound(C);
+
+ TopTools_ListOfShape listShapes, listTools;
+ AddSimpleShapes(aShape1, listShapes);
+ AddSimpleShapes(aShape2, listTools);
+
+ Standard_Boolean isCompound = (listShapes.Extent() > 1);
+
+ TopTools_ListIteratorOfListOfShape itSub1 (listShapes);
+ for (; itSub1.More(); itSub1.Next()) {
+ TopoDS_Shape aCut = itSub1.Value();
+ // tools
+ TopTools_ListIteratorOfListOfShape itSub2 (listTools);
+ for (; itSub2.More(); itSub2.Next()) {
+ TopoDS_Shape aTool = itSub2.Value();
+ BRepAlgoAPI_Cut BO (aCut, aTool);
+ if (!BO.IsDone()) {
+ StdFail_NotDone::Raise("Cut operation can not be performed on the given shapes");
+ }
+ aCut = BO.Shape();
+ }
+ if (isCompound) {
+ // check result of this step: if it is a compound (boolean operations
+ // allways return a compound), we add all sub-shapes of it.
+ // This allows to avoid adding empty compounds,
+ // resulting from CUT of parts
+ if (aCut.ShapeType() == TopAbs_COMPOUND) {
+ TopoDS_Iterator aCompIter (aCut);
+ for (; aCompIter.More(); aCompIter.Next()) {
+ // add shape in a result
+ B.Add(C, aCompIter.Value());
+ }
+ }
+ else {
+ // add shape in a result
+ B.Add(C, aCut);
+ }
+ }
+ else
+ aShape = aCut;
+ }
+
+ if (isCompound) {
+ TopTools_ListOfShape listShapeC;
+ AddSimpleShapes(C, listShapeC);
+ TopTools_ListIteratorOfListOfShape itSubC (listShapeC);
+ bool isOnlySolids = true;
+ for (; itSubC.More(); itSubC.Next()) {
+ TopoDS_Shape aValueC = itSubC.Value();
+ if (aValueC.ShapeType() != TopAbs_SOLID) isOnlySolids = false;
+ }
+ if (isOnlySolids)
+ aShape = GEOMImpl_GlueDriver::GlueFaces(C, Precision::Confusion());
+ else
+ aShape = C;
+ }
+ }
+
+ // perform FUSE operation
+ else if (aType == BOOLEAN_FUSE) {
BRepAlgoAPI_Fuse BO (aShape1, aShape2);
if (!BO.IsDone()) {
- StdFail_NotDone::Raise("Requested boolean operation can not be performed on the given shapes");
+ StdFail_NotDone::Raise("Fuse operation can not be performed on the given shapes");
}
aShape = BO.Shape();
- } else if (aType == BOOLEAN_SECTION) {
- BRepAlgoAPI_Section BO (aShape1, aShape2);
- if (!BO.IsDone()) {
- StdFail_NotDone::Raise("Requested boolean operation can not be performed on the given shapes");
+ }
+
+ // perform SECTION operation
+ else if (aType == BOOLEAN_SECTION) {
+ BRep_Builder B;
+ TopoDS_Compound C;
+ B.MakeCompound(C);
+
+ TopTools_ListOfShape listShape1, listShape2;
+ AddSimpleShapes(aShape1, listShape1);
+ AddSimpleShapes(aShape2, listShape2);
+
+ Standard_Boolean isCompound =
+ (listShape1.Extent() > 1 || listShape2.Extent() > 1);
+
+ TopTools_ListIteratorOfListOfShape itSub1 (listShape1);
+ for (; itSub1.More(); itSub1.Next()) {
+ TopoDS_Shape aValue1 = itSub1.Value();
+ TopTools_ListIteratorOfListOfShape itSub2 (listShape2);
+ for (; itSub2.More(); itSub2.Next()) {
+ TopoDS_Shape aValue2 = itSub2.Value();
+ BRepAlgoAPI_Section BO (aValue1, aValue2);
+ if (!BO.IsDone()) {
+ StdFail_NotDone::Raise("Section operation can not be performed on the given shapes");
+ }
+ if (isCompound) {
+ TopoDS_Shape aStepResult = BO.Shape();
+
+ // check result of this step: if it is a compound (boolean operations
+ // allways return a compound), we add all sub-shapes of it.
+ // This allows to avoid adding empty compounds,
+ // resulting from SECTION on two non-intersecting shapes.
+ if (aStepResult.ShapeType() == TopAbs_COMPOUND) {
+ TopoDS_Iterator aCompIter (aStepResult);
+ for (; aCompIter.More(); aCompIter.Next()) {
+ // add shape in a result
+ B.Add(C, aCompIter.Value());
+ }
+ }
+ else {
+ // add shape in a result
+ B.Add(C, aStepResult);
+ }
+ }
+ else
+ aShape = BO.Shape();
+ }
}
- aShape = BO.Shape();
- } else {
+
+ if (isCompound)
+ aShape = C;
+ }
+
+ // UNKNOWN operation
+ else {
}
}
if (aShape.IsNull()) return 0;
if (!BRepAlgo::IsValid(aShape)) {
- Standard_ConstructionError::Raise("Boolean aborted : non valid shape result");
+ Standard_ConstructionError::Raise("Boolean operation aborted : non valid shape result");
}
aFunction->SetValue(aShape);
const TCollection_AsciiString&,
const TCollection_AsciiString&);
-//This class is workaround of BUG OCC13051 ( SWP13103 )
-//It's stored all loaded libraries for export and unload that in destructor
-class DLL_Collector
-{
- typedef NCollection_DataMap<TCollection_AsciiString,LibHandle> DLL_Collector_Map;
- DLL_Collector_Map myMapOfDLL;
-public:
- DLL_Collector(){};
- ~DLL_Collector()
- {
- DLL_Collector_Map::Iterator Iter( myMapOfDLL );
- for( ; Iter.More(); Iter.Next() )
- UnLoadLib( Iter.Value() );
- }
-
-public:
- LibHandle LoadDLL( const TCollection_AsciiString& theLibName )
- {
- if ( myMapOfDLL.IsBound( theLibName ) )
- return myMapOfDLL( theLibName );
-
- LibHandle res = LoadLib( theLibName.ToCString() );
- if ( res )
- myMapOfDLL.Bind( theLibName, res );
-
- return res;
- }
-};
-
-static DLL_Collector GlobalCollector;
-
//=======================================================================
//function : GetID
//purpose :
return 0;
// load plugin library
- LibHandle anExportLib = GlobalCollector.LoadDLL( aLibName ); //This is workaround of BUG OCC13051
+ LibHandle anExportLib = LoadLib( aLibName.ToCString() ); //This is workaround of BUG OCC13051
funcPoint fp = 0;
if ( anExportLib )
fp = (funcPoint)GetProc( anExportLib, "Export" );
#include <ShHealOper_FillHoles.hxx>
#include <ShHealOper_Sewing.hxx>
#include <ShHealOper_EdgeDivide.hxx>
+#include <ShHealOper_ChangeOrientation.hxx>
#include <TopoDS.hxx>
#include <TopExp.hxx>
case DIVIDE_EDGE:
AddPointOnEdge(&HI, anOriginalShape, aShape);
break;
+ case CHANGE_ORIENTATION:
+ ChangeOrientation(&HI, anOriginalShape, aShape);
+ break;
default:
return 0;
}
}
+//=======================================================================
+//function : ChangeOrientation
+//purpose :
+//=======================================================================
+Standard_Boolean GEOMImpl_HealingDriver::ChangeOrientation (GEOMImpl_IHealing* theHI,
+ const TopoDS_Shape& theOriginalShape,
+ TopoDS_Shape& theOutShape) const
+{
+ ShHealOper_ChangeOrientation aHealer (theOriginalShape);
+
+ Standard_Boolean aResult = aHealer.Perform();
+
+ if (aResult)
+ theOutShape = aHealer.GetResultShape();
+ else
+ raiseNotDoneExeption( aHealer.GetErrorStatus() );
+
+ return aResult;
+}
+
+
//=======================================================================
//function : GEOMImpl_HealingDriver_Type_
//purpose :
Standard_Boolean RemoveHoles ( GEOMImpl_IHealing*, const TopoDS_Shape&, TopoDS_Shape& ) const;
Standard_Boolean Sew ( GEOMImpl_IHealing*, const TopoDS_Shape&, TopoDS_Shape& ) const;
Standard_Boolean AddPointOnEdge( GEOMImpl_IHealing*, const TopoDS_Shape&, TopoDS_Shape& ) const;
-
+Standard_Boolean ChangeOrientation( GEOMImpl_IHealing*, const TopoDS_Shape&, TopoDS_Shape& ) const;
};
#include <GEOMImpl_IThruSections.hxx>
#include <GEOMImpl_IPipeDiffSect.hxx>
+#include <Standard_Failure.hxx>
#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
//=============================================================================
//Compute the box value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Box driver failed");
return NULL;
//Compute the Box value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Box driver failed");
return NULL;
//Compute the Cylinder value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Cylinder driver failed");
return NULL;
//Compute the Cylinder value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Cylinder driver failed");
return NULL;
//Compute the Cone value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Cone driver failed");
return NULL;
//Compute the Cone value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Cone driver failed");
return NULL;
//Compute the Sphere value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Sphere driver failed");
return NULL;
//Compute the Sphere value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Sphere driver failed");
return NULL;
//Compute the Torus value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Torus driver failed");
return NULL;
//Compute the Torus value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Torus driver failed");
return NULL;
//Compute the Prism value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
- SetErrorCode("Prism driver failed");
+ //SetErrorCode("Prism driver failed");
+ SetErrorCode("Extrusion can not be created, check input data");
return NULL;
}
}
//Compute the Prism value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
- SetErrorCode("Prism driver failed");
+ //SetErrorCode("Prism driver failed");
+ SetErrorCode("Extrusion can not be created, check input data");
return NULL;
}
}
//Compute the Pipe value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Pipe driver failed");
return NULL;
//Compute the Revolution value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Revolution driver failed");
return NULL;
//Compute the Solid value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Solid driver failed");
return NULL;
//Compute the Solid value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Filling driver failed");
return NULL;
//Compute the ThruSections value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("ThruSections driver failed");
return anObj;
//Compute the Pipe value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Pipe with defferent section driver failed");
return anObj;
#include <GEOMImpl_Types.hxx>
+#include <Standard_Failure.hxx>
#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
//=============================================================================
//Compute the point value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Point driver failed");
return NULL;
//Compute the point value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Point driver failed");
return NULL;
//Compute the point value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Point driver failed");
return NULL;
//Compute the vector value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Vector driver failed");
return NULL;
//Compute the Vector value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Vector driver failed");
return NULL;
//Compute the Vector value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Vector driver failed");
return NULL;
//Compute the Line value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Line driver failed");
return NULL;
//Compute the Line value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Line driver failed");
return NULL;
//Compute the Plane value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Plane driver failed");
return NULL;
//Compute the Plane value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Plane driver failed");
return NULL;
//Compute the Plane value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Plane driver failed");
return NULL;
//Compute the marker value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Marker driver failed");
return NULL;
//Compute the Plane value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Plane driver failed");
return NULL;
#include <Precision.hxx>
+#include <Standard_Failure.hxx>
#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
//=============================================================================
//Compute the Face value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Block driver failed to compute a face");
return NULL;
//Compute the Face value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Block driver failed to compute a face");
return NULL;
//Compute the Face value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Block driver failed to compute a face");
return NULL;
//Compute the Block value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Block driver failed to compute a block");
return NULL;
//Compute the Block value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Block driver failed to compute a block");
return NULL;
//Compute the Blocks Compound value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Block driver failed to compute a blocks compound");
return NULL;
//Compute the Edge value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
TopTools_IndexedDataMapOfShapeListOfShape MVE;
GEOMImpl_Block6Explorer::MapShapesAndAncestors
(aBlockOrComp, TopAbs_VERTEX, TopAbs_EDGE, MVE);
//Compute the Edge value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
TopoDS_Shape aShape;
TopoDS_Vertex aVert = TopoDS::Vertex(anArg);
//Compute the Face value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
TopoDS_Shape aShape;
TopTools_IndexedDataMapOfShapeListOfShape MVF;
SetErrorCode("Block or compound is null");
return NULL;
}
- if (aBlockOrComp.ShapeType() != TopAbs_SOLID &&
- aBlockOrComp.ShapeType() != TopAbs_COMPOUND &&
- aBlockOrComp.ShapeType() != TopAbs_COMPSOLID) {
- SetErrorCode("Shape is neither a block, nor a compound of blocks");
- return NULL;
- }
TopoDS_Shape anArg1 = theEdge1->GetValue();
TopoDS_Shape anArg2 = theEdge2->GetValue();
//Compute the Face value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
TopoDS_Shape aShape;
TopTools_IndexedDataMapOfShapeListOfShape MEF;
//Compute the Face value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
TopoDS_Shape aShape;
GEOMImpl_Block6Explorer aBlockTool;
SetErrorCode("Block or compound is null");
return NULL;
}
- if (aBlockOrComp.ShapeType() != TopAbs_SOLID &&
- aBlockOrComp.ShapeType() != TopAbs_COMPOUND &&
- aBlockOrComp.ShapeType() != TopAbs_COMPSOLID) {
- SetErrorCode("Shape is neither a block, nor a compound of blocks");
- return NULL;
- }
TopoDS_Shape anArg = thePoint->GetValue();
if (anArg.IsNull()) {
//Compute the Face value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
TopoDS_Shape aShape;
TopoDS_Vertex aVert = TopoDS::Vertex(anArg);
SetErrorCode("Block or compound is null");
return NULL;
}
- if (aBlockOrComp.ShapeType() != TopAbs_SOLID &&
- aBlockOrComp.ShapeType() != TopAbs_COMPOUND &&
- aBlockOrComp.ShapeType() != TopAbs_COMPSOLID) {
- SetErrorCode("Shape is neither a block, nor a compound of blocks");
- return NULL;
- }
TopoDS_Shape anArg = theVector->GetValue();
if (anArg.IsNull()) {
//Compute the Face value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
TopoDS_Shape aShape;
TopoDS_Edge anEdge = TopoDS::Edge(anArg);
//Check
isCompOfBlocks = Standard_True;
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
TopTools_MapOfShape mapShape;
TopExp_Explorer exp (aBlockOrComp, TopAbs_SOLID);
for (; exp.More(); exp.Next()) {
//Compute the fixed shape
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Block driver failed to remove extra edges of the given shape");
return NULL;
//Compute the fixed shape
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Block driver failed to improve the given blocks compound");
return NULL;
// Explode
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
TopExp_Explorer exp (aBlockOrComp, TopAbs_SOLID);
for (; exp.More(); exp.Next()) {
if (mapShape.Add(exp.Current())) {
//Compute the Block value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
TopoDS_Shape aShape;
TopoDS_Vertex aVert = TopoDS::Vertex(anArg);
//Compute the Block value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
// 1. Explode compound on solids
TopTools_MapOfShape mapShape;
Standard_Integer nbSolids = 0;
//Get the Blocks
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
TopTools_MapOfShape mapShape;
Standard_Integer nbSolids = 0;
TopExp_Explorer exp (aBlockOrComp, TopAbs_SOLID);
//Compute the transformation
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Block driver failed to make multi-transformation");
return NULL;
//Compute the transformation
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Block driver failed to make multi-transformation");
return NULL;
#include "utilities.h"
+#include <Standard_Failure.hxx>
#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
//=============================================================================
//Compute the Boolean value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Boolean driver failed");
return NULL;
if (theMaterials.IsNull()) {
Handle(TColStd_HArray1OfInteger) aMaterials =
new TColStd_HArray1OfInteger (1, aShapesSeq->Length());
+ aMaterials->Init(0);
aCI.SetMaterials(aMaterials);
} else {
aCI.SetMaterials(theMaterials);
//Compute the Partition
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Partition driver failed");
return NULL;
//Compute the Partition value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Partition driver failed");
return NULL;
#include <TDF_Tool.hxx>
+#include <Standard_Failure.hxx>
#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
//=============================================================================
//Compute the Polyline value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Polyline driver failed");
return NULL;
//Compute the Circle value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Circle driver failed");
return NULL;
//Compute the Circle value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Circle driver failed");
return NULL;
//Compute the Ellipse value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Ellipse driver failed");
return NULL;
//Compute the Arc value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Arc driver failed");
return NULL;
//Compute the Spline value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Spline driver failed");
return NULL;
//Compute the Spline value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Spline driver failed");
return NULL;
//Compute the Sketcher value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Sketcher driver failed");
return NULL;
//Compute the Sketcher value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Sketcher driver failed");
return NULL;
#include <TDataStd_Integer.hxx>
#include <TopExp.hxx>
+#include <TopExp_Explorer.hxx>
#include <TopTools_IndexedMapOfShape.hxx>
#include <TColStd_HArray1OfInteger.hxx>
#include <TColStd_ListOfInteger.hxx>
#include <TColStd_ListIteratorOfListOfInteger.hxx>
-#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
-
//=============================================================================
/*!
* constructor:
else {
aNewSeq = new TColStd_HArray1OfInteger(1, aLength-1);
Standard_Boolean isFound = Standard_False;
- for(Standard_Integer i = 1, k=1; i<=aLength; i++) {
- if(i == aLength && !isFound) {
- SetErrorCode(NOT_EXISTS);
- return;
- }
- if(aSeq->Value(i) == theSubShapeID) {
+ for (Standard_Integer i = 1, k = 1; i <= aLength; i++) {
+ if (aSeq->Value(i) == theSubShapeID) {
isFound = Standard_True;
- continue;
- }
- aNewSeq->SetValue(k, aSeq->Value(i));
- k++;
+ } else {
+ if (k < aLength) { // this check is to avoid sequence <aNewSeq> overflow
+ aNewSeq->SetValue(k, aSeq->Value(i));
+ k++;
+ }
+ }
}
- if(!isFound) {
+ if (!isFound) {
SetErrorCode(NOT_EXISTS);
return;
}
TopTools_IndexedMapOfShape mapIndices;
TopExp::MapShapes(aMainShape, mapIndices);
+ // Get group type
+ TopAbs_ShapeEnum aType = GetType(theGroup);
+
// Get IDs of sub-shapes to add
Standard_Integer i, new_id;
for (i = 1; i <= aLen; i++) {
Handle(GEOM_Object) anObj_i = Handle(GEOM_Object)::DownCast(theSubShapes->Value(i));
+ TopoDS_Shape aShape_i = anObj_i->GetValue();
+ TopAbs_ShapeEnum aType_i = aShape_i.ShapeType();
+
+ // 1. If aShape_i is sub-shape of aMainShape - add it
if (anObj_i->IsMainShape()) {
- TopoDS_Shape aShape_i = anObj_i->GetValue();
- if (mapIndices.Contains(aShape_i)) {
- new_id = mapIndices.FindIndex(aShape_i);
- if (mapIDs.Add(new_id)) {
- aNewIDs.Append(new_id);
- }
- } else {
- SetErrorCode("One of given objects can not be added to the group, because it is not a sub-shape of the group's main shape");
+ if (aType_i != aType && aType != TopAbs_SHAPE && aType != TopAbs_COMPOUND) {
+ SetErrorCode("Operation aborted: one of given objects has a wrong type");
return;
}
- } else {
- // Check main shape of sub-shape to add
- Handle(GEOM_Function) aFunc_i = anObj_i->GetFunction(1);
- if (aFunc_i.IsNull()) return;
-
- GEOM_ISubShape aSSI_i (aFunc_i);
-
- Handle(GEOM_Function) aMainShapeFunc_i = aSSI_i.GetMainShape();
- if (aMainShapeFunc_i.IsNull()) return;
- TDF_Label aLabel_i = aMainShapeFunc_i->GetOwnerEntry();
- if (aLabel_i.IsRoot()) return;
- Handle(GEOM_Object) aMainObj_i = GEOM_Object::GetObject(aLabel);
- if (aMainObj_i.IsNull()) return;
- TopoDS_Shape aMainShape_i = aMainObj_i->GetValue();
- if (aMainShape_i.IsNull()) return;
-
- if (aMainShape_i.IsSame(aMainShape)) {
- // add all sub-shape IDs to the list
-
- // Get IDs
- Handle(TColStd_HArray1OfInteger) aSeq_i = aSSI_i.GetIndices();
- if (aSeq_i.IsNull()) return;
- Standard_Integer aLength_i = aSeq_i->Length();
-
- for (Standard_Integer i_j = 1; i_j <= aLength_i; i_j++) {
- new_id = aSeq_i->Value(i_j);
- if (new_id > 0) {
- if (mapIDs.Add(new_id)) {
- aNewIDs.Append(new_id);
- }
- }
- }
-
- } else if (mapIndices.Contains(aMainShape_i)) {
- // compute new IDs and add them to the list
- TopTools_IndexedMapOfShape mapIndices_i;
- TopExp::MapShapes(aMainShape_i, mapIndices_i);
-
- // Get IDs
- Handle(TColStd_HArray1OfInteger) aSeq_i = aSSI_i.GetIndices();
- if (aSeq_i.IsNull()) return;
- Standard_Integer aLength_i = aSeq_i->Length();
-
- for (Standard_Integer i_j = 1; i_j <= aLength_i; i_j++) {
- if (aSeq_i->Value(i_j) > 0) {
- TopoDS_Shape aShape_i_j = mapIndices_i.FindKey(i_j);
- new_id = mapIndices.FindIndex(aShape_i_j);
- if (mapIDs.Add(new_id)) {
- aNewIDs.Append(new_id);
- }
+ if (!mapIndices.Contains(aShape_i)) {
+ SetErrorCode("Operation aborted: not a sub-shape given");
+ return;
+ }
+ new_id = mapIndices.FindIndex(aShape_i);
+ if (mapIDs.Add(new_id)) {
+ aNewIDs.Append(new_id);
+ }
+ }
+ // 2. If type of group is not defined - add all sub-shapes of aShape_i
+ else if (aType == TopAbs_SHAPE || aType == TopAbs_COMPOUND) {
+ TopTools_IndexedMapOfShape mapIndices_i;
+ TopExp::MapShapes(aShape_i, mapIndices_i);
+ Standard_Integer ii = 1, nbSubSh = mapIndices_i.Extent();
+ Standard_Boolean someGood = Standard_False;
+ for (; ii <= nbSubSh; ii++) {
+ TopoDS_Shape aSubShape_i = mapIndices_i.FindKey(ii);
+ if (mapIndices.Contains(aSubShape_i)) {
+ someGood = Standard_True;
+ new_id = mapIndices.FindIndex(aSubShape_i);
+ if (mapIDs.Add(new_id)) {
+ aNewIDs.Append(new_id);
}
}
-
- } else {
- SetErrorCode("One of given objects can not be added to the group, because it is not a sub-shape of the group's main shape");
+ }
+ if (!someGood) {
+ SetErrorCode("Operation aborted: not a sub-shape given");
return;
}
}
+ // 3. If type of group is defined - add all sub-shapes of aShape_i of that type
+ else {
+ TopExp_Explorer aSubShapes_i (aShape_i, aType);
+ for (; aSubShapes_i.More(); aSubShapes_i.Next()) {
+ TopoDS_Shape aSubShape_i = aSubShapes_i.Current();
+ if (!mapIndices.Contains(aSubShape_i)) {
+ SetErrorCode("Operation aborted: not a sub-shape given");
+ return;
+ }
+ new_id = mapIndices.FindIndex(aSubShape_i);
+ if (mapIDs.Add(new_id)) {
+ aNewIDs.Append(new_id);
+ }
+ }
+ }
}
if (aNewIDs.Extent() > 0) {
TopTools_IndexedMapOfShape mapIndices;
TopExp::MapShapes(aMainShape, mapIndices);
+ // Get group type
+ TopAbs_ShapeEnum aType = GetType(theGroup);
+
// Get IDs of sub-shapes to be removed
Standard_Integer i, rem_id;
for (i = 1; i <= aLen; i++) {
Handle(GEOM_Object) anObj_i = Handle(GEOM_Object)::DownCast(theSubShapes->Value(i));
- if (anObj_i->IsMainShape()) {
- TopoDS_Shape aShape_i = anObj_i->GetValue();
- if (mapIndices.Contains(aShape_i)) {
- rem_id = mapIndices.FindIndex(aShape_i);
- if (mapIDsCurrent.Contains(rem_id)) {
- mapIDsToRemove.Add(rem_id);
- }
- } else {
- SetErrorCode("One of given objects can not be removed from the group, because it is not a sub-shape of the group's main shape");
- return;
+ TopoDS_Shape aShape_i = anObj_i->GetValue();
+
+ // 1. If aShape_i is sub-shape of aMainShape - remove it
+ if (mapIndices.Contains(aShape_i)) {
+ rem_id = mapIndices.FindIndex(aShape_i);
+ if (mapIDsCurrent.Contains(rem_id)) {
+ mapIDsToRemove.Add(rem_id);
}
- } else {
- // Check main shape of sub-shape to be removed
- Handle(GEOM_Function) aFunc_i = anObj_i->GetFunction(1);
- if (aFunc_i.IsNull()) return;
-
- GEOM_ISubShape aSSI_i (aFunc_i);
-
- Handle(GEOM_Function) aMainShapeFunc_i = aSSI_i.GetMainShape();
- if (aMainShapeFunc_i.IsNull()) return;
- TDF_Label aLabel_i = aMainShapeFunc_i->GetOwnerEntry();
- if (aLabel_i.IsRoot()) return;
- Handle(GEOM_Object) aMainObj_i = GEOM_Object::GetObject(aLabel);
- if (aMainObj_i.IsNull()) return;
- TopoDS_Shape aMainShape_i = aMainObj_i->GetValue();
- if (aMainShape_i.IsNull()) return;
-
- if (aMainShape_i.IsSame(aMainShape)) {
- // remove all sub-shapes
-
- // Get IDs
- Handle(TColStd_HArray1OfInteger) aSeq_i = aSSI_i.GetIndices();
- if (aSeq_i.IsNull()) return;
- Standard_Integer aLength_i = aSeq_i->Length();
-
- for (Standard_Integer i_j = 1; i_j <= aLength_i; i_j++) {
- rem_id = aSeq_i->Value(i_j);
- if (rem_id > 0) {
- if (mapIDsCurrent.Contains(rem_id)) {
- mapIDsToRemove.Add(rem_id);
- }
+ }
+ // 2. If type of group is not defined - remove all sub-shapes of aShape_i
+ else if (aType == TopAbs_SHAPE || aType == TopAbs_COMPOUND) {
+ TopTools_IndexedMapOfShape mapIndices_i;
+ TopExp::MapShapes(aShape_i, mapIndices_i);
+ Standard_Integer nbSubSh = mapIndices_i.Extent();
+ Standard_Integer ii = 1;
+ for (; ii <= nbSubSh; ii++) {
+ TopoDS_Shape aSubShape_i = mapIndices_i.FindKey(ii);
+ if (mapIndices.Contains(aSubShape_i)) {
+ rem_id = mapIndices.FindIndex(aSubShape_i);
+ if (mapIDsCurrent.Contains(rem_id)) {
+ mapIDsToRemove.Add(rem_id);
}
}
-
- } else if (mapIndices.Contains(aMainShape_i)) {
- // compute new IDs and add them to the map of ids to be removed
- TopTools_IndexedMapOfShape mapIndices_i;
- TopExp::MapShapes(aMainShape_i, mapIndices_i);
-
- // Get IDs
- Handle(TColStd_HArray1OfInteger) aSeq_i = aSSI_i.GetIndices();
- if (aSeq_i.IsNull()) return;
- Standard_Integer aLength_i = aSeq_i->Length();
-
- for (Standard_Integer i_j = 1; i_j <= aLength_i; i_j++) {
- if (aSeq_i->Value(i_j) > 0) {
- TopoDS_Shape aShape_i_j = mapIndices_i.FindKey(i_j);
- rem_id = mapIndices.FindIndex(aShape_i_j);
- if (mapIDsCurrent.Contains(rem_id)) {
- mapIDsToRemove.Add(rem_id);
- }
+ }
+ }
+ // 3. If type of group is defined - remove all sub-shapes of aShape_i of that type
+ else {
+ TopExp_Explorer aSubShapes_i (aShape_i, aType);
+ for (; aSubShapes_i.More(); aSubShapes_i.Next()) {
+ TopoDS_Shape aSubShape_i = aSubShapes_i.Current();
+ if (mapIndices.Contains(aSubShape_i)) {
+ rem_id = mapIndices.FindIndex(aSubShape_i);
+ if (mapIDsCurrent.Contains(rem_id)) {
+ mapIDsToRemove.Add(rem_id);
}
}
-
- } else {
- SetErrorCode("One of given objects can not be removed from the group, because it is not a sub-shape of the group's main shape");
- return;
}
}
}
TDF_Label aFreeLabel = theGroup->GetFreeLabel();
Handle(TDataStd_Integer) anAttrib;
if(!aFreeLabel.FindAttribute(TDataStd_Integer::GetID(), anAttrib)) return TopAbs_SHAPE;
-
+
SetErrorCode(OK);
return (TopAbs_ShapeEnum) anAttrib->Get();
}
#include <TDF_Tool.hxx>
+#include <Standard_Failure.hxx>
#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
}
//Compute the translation
- try
- {
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction))
{
SetErrorCode("Shape Healing algorithm failed");
HI.SetOriginal( aLastFunction );
//Compute the translation
- try
- {
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction))
{
SetErrorCode("Healing driver failed");
HI.SetOriginal( aLastFunction );
//Compute the translation
- try
- {
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction))
{
SetErrorCode("Healing driver failed");
HI.SetOriginal( aLastFunction );
//Compute the translation
- try
- {
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction))
{
SetErrorCode("Healing driver failed");
HI.SetOriginal( aLastFunction );
//Compute the translation
- try
- {
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction))
{
SetErrorCode("Healing driver failed");
HI.SetOriginal( aLastFunction );
//Compute the translation
- try
- {
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction))
{
SetErrorCode("Healing driver failed");
HI.SetOriginal( aLastFunction );
//Compute the translation
- try
- {
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction))
{
SetErrorCode("Healing driver failed");
SetErrorCode(OK);
return true;
}
+
+
+//=============================================================================
+/*!
+ * ChangeOrientation
+ */
+//=============================================================================
+Handle(GEOM_Object) GEOMImpl_IHealingOperations::ChangeOrientation (Handle(GEOM_Object) theObject)
+{
+ // set error code, check parameters
+ SetErrorCode(KO);
+
+ if (theObject.IsNull())
+ return NULL;
+
+ if (!theObject->IsMainShape()) {
+ SetErrorCode("Sub shape cannot be transformed - need to create a copy");
+ return NULL;
+ }
+
+ Handle(GEOM_Function) aFunction, aLastFunction = theObject->GetLastFunction();
+ if (aLastFunction.IsNull())
+ return NULL; //There is no function which creates an object to be processed
+
+ //Add the function
+ aFunction = theObject->AddFunction(GEOMImpl_HealingDriver::GetID(), CHANGE_ORIENTATION);
+
+ if (aFunction.IsNull())
+ return NULL;
+
+ //Check if the function is set correctly
+ if (aFunction->GetDriverGUID() != GEOMImpl_HealingDriver::GetID()) return NULL;
+
+ // prepare "data container" class IHealing
+ GEOMImpl_IHealing HI(aFunction);
+ HI.SetOriginal( aLastFunction );
+
+ //Compute the translation
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ if (!GetSolver()->ComputeFunction(aFunction)) {
+ SetErrorCode("Healing driver failed");
+ return NULL;
+ }
+ }
+ catch (Standard_Failure) {
+ Handle(Standard_Failure) aFail = Standard_Failure::Caught();
+ SetErrorCode(aFail->GetMessageString());
+ return NULL;
+ }
+
+ //Make a Python command
+ GEOM::TPythonDump(aFunction) << "geompy.ChangeOrientationShell("
+ << theObject << ")";
+
+ SetErrorCode(OK);
+ return theObject;
+}
+
+
+//=============================================================================
+/*!
+ * ChangeOrientationCopy
+ */
+//=============================================================================
+Handle(GEOM_Object) GEOMImpl_IHealingOperations::ChangeOrientationCopy (Handle(GEOM_Object) theObject)
+{
+ // set error code, check parameters
+ SetErrorCode(KO);
+
+ if (theObject.IsNull())
+ return NULL;
+
+ Handle(GEOM_Function) aFunction, aLastFunction = theObject->GetLastFunction();
+ if (aLastFunction.IsNull())
+ return NULL; //There is no function which creates an object to be processed
+
+ // Add a new object
+ Handle(GEOM_Object) aNewObject = GetEngine()->AddObject( GetDocID(), GEOM_COPY );
+
+ //Add the function
+ aFunction = aNewObject->AddFunction(GEOMImpl_HealingDriver::GetID(), CHANGE_ORIENTATION);
+
+ if (aFunction.IsNull())
+ return NULL;
+
+ //Check if the function is set correctly
+ if (aFunction->GetDriverGUID() != GEOMImpl_HealingDriver::GetID()) return NULL;
+
+ // prepare "data container" class IHealing
+ GEOMImpl_IHealing HI(aFunction);
+ HI.SetOriginal( aLastFunction );
+
+ //Compute the translation
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ if (!GetSolver()->ComputeFunction(aFunction)) {
+ SetErrorCode("Healing driver failed");
+ return NULL;
+ }
+ }
+ catch (Standard_Failure) {
+ Handle(Standard_Failure) aFail = Standard_Failure::Caught();
+ SetErrorCode(aFail->GetMessageString());
+ return NULL;
+ }
+
+ //Make a Python command
+ GEOM::TPythonDump(aFunction) << aNewObject << " = geompy.ChangeOrientationShellCopy("
+ << theObject << ")";
+
+ SetErrorCode(OK);
+ return aNewObject;
+}
+
Standard_EXPORT bool GetFreeBoundary ( Handle(GEOM_Object) theObject,
Handle(TColStd_HSequenceOfTransient)& theOutClosedWires,
Handle(TColStd_HSequenceOfTransient)& theOutOpenWires );
+
+ Standard_EXPORT Handle(GEOM_Object) ChangeOrientation( Handle(GEOM_Object) theObject);
+ Standard_EXPORT Handle(GEOM_Object) ChangeOrientationCopy( Handle(GEOM_Object) theObject);
+
};
#endif
#include <GEOMImpl_Types.hxx>
+#include <Standard_Failure.hxx>
#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
//=============================================================================
//Compute the Copy value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Copy driver failed");
return NULL;
//Perform the Export
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Export driver failed");
return;
//Perform the Import
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Import driver failed");
return NULL;
// Initialize the Resource Manager
TCollection_AsciiString aResDir (getenv("GEOM_ROOT_DIR"));
#ifdef WNT
- aResDir += "\\share\\salome\\resources";
+ aResDir += "\\share\\salome\\resources\\geom";
#else
- aResDir += "/share/salome/resources";
+ aResDir += "/share/salome/resources/geom";
#endif
char * dir = getenv("GEOM_ENGINE_RESOURCES_DIR");
TCollection_AsciiString aUserResDir;
#include <TopoDS_TShape.hxx>
#include <TopTools_IndexedMapOfShape.hxx>
+#include <Standard_Failure.hxx>
#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
//=============================================================================
//Compute the Fillet value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Fillet driver failed");
return NULL;
//Compute the Fillet value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Fillet driver failed");
return NULL;
//Compute the Fillet value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Fillet driver failed");
return NULL;
//Compute the Chamfer value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Chamfer driver failed");
return NULL;
//Compute the Chamfer value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Chamfer driver failed");
return NULL;
//Compute the Chamfer value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Chamfer driver failed");
return NULL;
//Compute the Archimede value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Archimede driver failed");
return NULL;
// 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
+// 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
+//
+// 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
+// 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 <OpUtil.hxx>
#include <Utils_ExceptHandlers.hxx>
+// OCCT Includes
#include <TFunction_DriverTable.hxx>
#include <TFunction_Driver.hxx>
#include <TFunction_Logbook.hxx>
#include <TopTools_ListOfShape.hxx>
#include <TopTools_ListIteratorOfListOfShape.hxx>
+#include <Geom_Surface.hxx>
+#include <Geom_Plane.hxx>
+#include <gp_Pln.hxx>
+
+#include <Standard_Failure.hxx>
#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
//=============================================================================
}
+//=============================================================================
+/*! Get LCS, corresponding to the given shape.
+ * Origin of the LCS is situated at the shape's center of mass.
+ * Axes of the LCS are obtained from shape's location or,
+ * if the shape is a planar face, from position of its plane.
+ */
+//=============================================================================
+gp_Ax3 GEOMImpl_IMeasureOperations::GetPosition (const TopoDS_Shape& theShape)
+{
+ gp_Ax3 aResult;
+
+ if (theShape.IsNull())
+ return aResult;
+
+ // Axes
+ aResult.Transform(theShape.Location().Transformation());
+ if (theShape.ShapeType() == TopAbs_FACE) {
+ Handle(Geom_Surface) aGS = BRep_Tool::Surface(TopoDS::Face(theShape));
+ if (!aGS.IsNull() && aGS->IsKind(STANDARD_TYPE(Geom_Plane))) {
+ Handle(Geom_Plane) aGPlane = Handle(Geom_Plane)::DownCast(aGS);
+ gp_Pln aPln = aGPlane->Pln();
+ aResult = aPln.Position();
+ }
+ }
+
+ // Origin
+ gp_Pnt aPnt;
+ if (theShape.ShapeType() == TopAbs_VERTEX) {
+ aPnt = BRep_Tool::Pnt(TopoDS::Vertex(theShape));
+ }
+ else {
+ GProp_GProps aSystem;
+ if (theShape.ShapeType() == TopAbs_EDGE || theShape.ShapeType() == TopAbs_WIRE)
+ BRepGProp::LinearProperties(theShape, aSystem);
+ else if (theShape.ShapeType() == TopAbs_FACE || theShape.ShapeType() == TopAbs_SHELL)
+ BRepGProp::SurfaceProperties(theShape, aSystem);
+ else
+ BRepGProp::VolumeProperties(theShape, aSystem);
+
+ aPnt = aSystem.CentreOfMass();
+ }
+
+ aResult.SetLocation(aPnt);
+
+ return aResult;
+}
+
+//=============================================================================
+/*!
+ * GetPosition
+ */
+//=============================================================================
+void GEOMImpl_IMeasureOperations::GetPosition
+ (Handle(GEOM_Object) theShape,
+ Standard_Real& Ox, Standard_Real& Oy, Standard_Real& Oz,
+ Standard_Real& Zx, Standard_Real& Zy, Standard_Real& Zz,
+ Standard_Real& Xx, Standard_Real& Xy, Standard_Real& Xz)
+{
+ SetErrorCode(KO);
+
+ //Set default values: global CS
+ Ox = Oy = Oz = Zx = Zy = Xy = Xz = 0.;
+ Zz = Xx = 1.;
+
+ if (theShape.IsNull()) return;
+
+ Handle(GEOM_Function) aRefShape = theShape->GetLastFunction();
+ if (aRefShape.IsNull()) return;
+
+ TopoDS_Shape aShape = aRefShape->GetValue();
+ if (aShape.IsNull()) {
+ SetErrorCode("The Objects has NULL Shape");
+ return;
+ }
+
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+
+ gp_Ax3 anAx3 = GetPosition(aShape);
+
+ gp_Pnt anOri = anAx3.Location();
+ gp_Dir aDirZ = anAx3.Direction();
+ gp_Dir aDirX = anAx3.XDirection();
+
+ // Output values
+ anOri.Coord(Ox, Oy, Oz);
+ aDirZ.Coord(Zx, Zy, Zz);
+ aDirX.Coord(Xx, Xy, Xz);
+ }
+ catch (Standard_Failure) {
+ Handle(Standard_Failure) aFail = Standard_Failure::Caught();
+ SetErrorCode(aFail->GetMessageString());
+ return;
+ }
+
+ SetErrorCode(OK);
+}
+
//=============================================================================
/*!
* GetCentreOfMass
//Compute the CentreOfMass value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Measure driver failed to compute centre of mass");
return NULL;
//Compute the parameters
GProp_GProps LProps, SProps;
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
BRepGProp::LinearProperties(aShape, LProps);
theLength = LProps.Mass();
GProp_GProps System;
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (aShape.ShapeType() == TopAbs_VERTEX ||
aShape.ShapeType() == TopAbs_EDGE ||
aShape.ShapeType() == TopAbs_WIRE) {
Bnd_Box B;
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
BRepBndLib::Add(aShape, B);
B.Get(Xmin, Ymin, Zmin, Xmax, Ymax, Zmax);
}
FaceMax = EdgeMax = VertMax = -RealLast();
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
for (TopExp_Explorer ExF (aShape, TopAbs_FACE); ExF.More(); ExF.Next()) {
TopoDS_Face Face = TopoDS::Face(ExF.Current());
T = BRep_Tool::Tolerance(Face);
*/
//=============================================================================
bool GEOMImpl_IMeasureOperations::CheckShape (Handle(GEOM_Object) theShape,
+ const Standard_Boolean theIsCheckGeom,
TCollection_AsciiString& theDump)
{
SetErrorCode(KO);
//Compute the parameters
bool isValid = false;
try {
- BRepCheck_Analyzer ana (aShape, false);
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ BRepCheck_Analyzer ana (aShape, theIsCheckGeom);
if (ana.IsValid()) {
theDump.Clear();
isValid = true;
Astr = Astr + " Number of sub-shapes : \n";
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
int iType, nbTypes [TopAbs_SHAPE];
for (iType = 0; iType < TopAbs_SHAPE; ++iType)
nbTypes[iType] = 0;
//Compute the parameters
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
BRepExtrema_DistShapeShape dst (aShape1, aShape2);
if (dst.IsDone()) {
gp_Pnt PMin1, PMin2, P1, P2;
return;
}
- try
- {
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
gp_Pnt aPnt = BRep_Tool::Pnt( TopoDS::Vertex( aShape ) );
theX = aPnt.X();
theY = aPnt.Y();
#include "GEOM_IOperations.hxx"
#include <BRepCheck_Analyzer.hxx>
+#include <TopoDS_Shape.hxx>
#include <TopTools_HSequenceOfShape.hxx>
#include <TopTools_DataMapOfShapeListOfShape.hxx>
#include <TCollection_AsciiString.hxx>
+#include <gp_Ax3.hxx>
class GEOM_Engine;
class Handle(GEOM_Object);
Standard_EXPORT GEOMImpl_IMeasureOperations(GEOM_Engine* theEngine, int theDocID);
Standard_EXPORT ~GEOMImpl_IMeasureOperations();
+ Standard_EXPORT void GetPosition (Handle(GEOM_Object) theShape,
+ Standard_Real& Ox, Standard_Real& Oy, Standard_Real& Oz,
+ Standard_Real& Zx, Standard_Real& Zy, Standard_Real& Zz,
+ Standard_Real& Xx, Standard_Real& Xy, Standard_Real& Xz);
+
Standard_EXPORT Handle(GEOM_Object) GetCentreOfMass (Handle(GEOM_Object) theShape);
Standard_EXPORT void GetBasicProperties (Handle(GEOM_Object) theShape,
- Standard_Real& theLength,
- Standard_Real& theSurfArea,
- Standard_Real& theVolume);
+ Standard_Real& theLength,
+ Standard_Real& theSurfArea,
+ Standard_Real& theVolume);
Standard_EXPORT void GetInertia (Handle(GEOM_Object) theShape,
- Standard_Real& I11, Standard_Real& I12, Standard_Real& I13,
- Standard_Real& I21, Standard_Real& I22, Standard_Real& I23,
- Standard_Real& I31, Standard_Real& I32, Standard_Real& I33,
- Standard_Real& Ix , Standard_Real& Iy , Standard_Real& Iz);
+ Standard_Real& I11, Standard_Real& I12, Standard_Real& I13,
+ Standard_Real& I21, Standard_Real& I22, Standard_Real& I23,
+ Standard_Real& I31, Standard_Real& I32, Standard_Real& I33,
+ Standard_Real& Ix , Standard_Real& Iy , Standard_Real& Iz);
Standard_EXPORT void GetBoundingBox (Handle(GEOM_Object) theShape,
- Standard_Real& Xmin, Standard_Real& Xmax,
- Standard_Real& Ymin, Standard_Real& Ymax,
- Standard_Real& Zmin, Standard_Real& Zmax);
+ Standard_Real& Xmin, Standard_Real& Xmax,
+ Standard_Real& Ymin, Standard_Real& Ymax,
+ Standard_Real& Zmin, Standard_Real& Zmax);
Standard_EXPORT void GetTolerance (Handle(GEOM_Object) theShape,
- Standard_Real& FaceMin, Standard_Real& FaceMax,
- Standard_Real& EdgeMin, Standard_Real& EdgeMax,
- Standard_Real& VertMin, Standard_Real& VertMax);
+ Standard_Real& FaceMin, Standard_Real& FaceMax,
+ Standard_Real& EdgeMin, Standard_Real& EdgeMax,
+ Standard_Real& VertMin, Standard_Real& VertMax);
Standard_EXPORT bool CheckShape (Handle(GEOM_Object) theShape,
- TCollection_AsciiString& theDump);
+ const Standard_Boolean theIsCheckGeom,
+ TCollection_AsciiString& theDump);
Standard_EXPORT TCollection_AsciiString WhatIs (Handle(GEOM_Object) theShape);
- Standard_EXPORT Standard_Real GetMinDistance (Handle(GEOM_Object) theShape1, Handle(GEOM_Object) theShape2,
- Standard_Real& X1, Standard_Real& Y1, Standard_Real& Z1,
- Standard_Real& X2, Standard_Real& Y2, Standard_Real& Z2);
+ Standard_EXPORT Standard_Real GetMinDistance (Handle(GEOM_Object) theShape1,
+ Handle(GEOM_Object) theShape2,
+ Standard_Real& X1, Standard_Real& Y1, Standard_Real& Z1,
+ Standard_Real& X2, Standard_Real& Y2, Standard_Real& Z2);
+
+ Standard_EXPORT void PointCoordinates(Handle(GEOM_Object) theShape,
+ Standard_Real& theX, Standard_Real& theY, Standard_Real& theZ );
+
+ public:
+ Standard_EXPORT static gp_Ax3 GetPosition (const TopoDS_Shape& theShape);
- Standard_EXPORT void PointCoordinates( Handle(GEOM_Object) theShape,
- Standard_Real& theX, Standard_Real& theY, Standard_Real& theZ );
-
private:
void StructuralDump (const BRepCheck_Analyzer& theAna,
const TopoDS_Shape& theShape,
#include <vector>
+#include <Standard_Failure.hxx>
#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
//=============================================================================
//Compute the Edge value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Vector driver failed");
return NULL;
//Compute the Face value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Shape driver failed to compute a face");
return NULL;
//Compute the shape
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Shape driver failed");
return NULL;
//Compute the Solid value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Solid driver failed");
return NULL;
//Compute the shape
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Shape driver failed");
return NULL;
//Compute the sub-shape value
Standard_Boolean isWarning = Standard_False;
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Shape driver failed to glue faces");
return NULL;
//Compute the sub-shape value
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Shape driver failed to reverse shape");
return NULL;
return aSeq;
}
+//=============================================================================
+/*!
+ * GetShapesOnPlaneWithLocation
+ */
+//=============================================================================
+Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetShapesOnPlaneWithLocation
+ (const Handle(GEOM_Object)& theShape,
+ const Standard_Integer theShapeType,
+ const Handle(GEOM_Object)& theAx1,
+ const Handle(GEOM_Object)& thePnt,
+ const GEOMAlgo_State theState)
+{
+ SetErrorCode(KO);
+
+ if (theShape.IsNull() || theAx1.IsNull() || thePnt.IsNull()) return NULL;
+
+ TopoDS_Shape aShape = theShape->GetValue();
+ TopoDS_Shape anAx1 = theAx1->GetValue();
+ TopoDS_Shape anPnt = thePnt->GetValue();
+
+ if (aShape.IsNull() || anAx1.IsNull() || anPnt.IsNull()) return NULL;
+
+ TopAbs_ShapeEnum aShapeType = TopAbs_ShapeEnum(theShapeType);
+ if ( !checkTypeShapesOn( theShapeType ))
+ return NULL;
+
+ // Create plane
+ if ( anAx1.ShapeType() != TopAbs_EDGE || anPnt.ShapeType() != TopAbs_VERTEX ) return NULL;
+ TopoDS_Vertex V1, V2, V3;
+ TopoDS_Edge anEdge = TopoDS::Edge(anAx1);
+ TopExp::Vertices(anEdge, V1, V2, Standard_True);
+
+ if (V1.IsNull() || V2.IsNull()) {
+ SetErrorCode("Bad edge given for the plane normal vector");
+ return NULL;
+ }
+ V3 = TopoDS::Vertex(anPnt);
+
+ if(V3.IsNull()) {
+ SetErrorCode("Bad vertex given for the plane location");
+ return NULL;
+ }
+ gp_Pnt aLoc = BRep_Tool::Pnt(V3);
+ gp_Vec aVec(BRep_Tool::Pnt(V1),BRep_Tool::Pnt(V2));
+
+ if (aVec.Magnitude() < Precision::Confusion()) {
+ SetErrorCode("Vector with null magnitude given");
+ return NULL;
+ }
+ Handle(Geom_Surface) aPlane = new Geom_Plane(aLoc, aVec);
+
+ if ( aPlane.IsNull() )
+ return NULL;
+
+ // Find objects
+ TCollection_AsciiString anAsciiList;
+ Handle(TColStd_HSequenceOfTransient) aSeq;
+ aSeq = getShapesOnSurface( aPlane, theShape, aShapeType, theState, anAsciiList );
+ if ( aSeq.IsNull() || aSeq->Length() == 0 )
+ return NULL;
+
+ // Make a Python command
+
+ Handle(GEOM_Object) anObj = Handle(GEOM_Object)::DownCast( aSeq->Value( 1 ));
+ Handle(GEOM_Function) aFunction = anObj->GetLastFunction();
+
+ GEOM::TPythonDump(aFunction) << "[" << anAsciiList.ToCString()
+ << "] = geompy.GetShapesOnPlaneWithLocation(" << theShape << ", "
+ << aShapeType << ", " << theAx1 << ", "<< thePnt <<", " << theState << ")";
+
+ SetErrorCode(OK);
+ return aSeq;
+}
+
//=============================================================================
/*!
* GetShapesOnCylinder
return aSeq;
}
+//=============================================================================
+/*!
+ * GetShapesOnPlaneWithLocationIDs
+ */
+//=============================================================================
+Handle(TColStd_HSequenceOfInteger) GEOMImpl_IShapesOperations::GetShapesOnPlaneWithLocationIDs
+ (const Handle(GEOM_Object)& theShape,
+ const Standard_Integer theShapeType,
+ const Handle(GEOM_Object)& theAx1,
+ const Handle(GEOM_Object)& thePnt,
+ const GEOMAlgo_State theState)
+{
+ SetErrorCode(KO);
+
+ if (theShape.IsNull() || theAx1.IsNull() || thePnt.IsNull()) return NULL;
+
+ TopoDS_Shape aShape = theShape->GetValue();
+ TopoDS_Shape anAx1 = theAx1->GetValue();
+ TopoDS_Shape anPnt = thePnt->GetValue();
+
+ if (aShape.IsNull() || anAx1.IsNull() || anPnt.IsNull()) return NULL;
+
+ TopAbs_ShapeEnum aShapeType = TopAbs_ShapeEnum(theShapeType);
+ if ( !checkTypeShapesOn( aShapeType ))
+ return NULL;
+
+ // Create plane
+ if (anAx1.ShapeType() != TopAbs_EDGE || anPnt.ShapeType() != TopAbs_VERTEX) return NULL;
+ TopoDS_Edge anEdge = TopoDS::Edge(anAx1);
+ TopoDS_Vertex V1, V2, V3;
+ TopExp::Vertices(anEdge, V1, V2, Standard_True);
+ if (V1.IsNull() || V2.IsNull()) {
+ SetErrorCode("Bad edge given for the plane normal vector");
+ return NULL;
+ }
+ V3 = TopoDS::Vertex(anPnt);
+ if(V3.IsNull()) {
+ SetErrorCode("Bad vertex given for the plane location");
+ return NULL;
+ }
+ gp_Pnt aLoc = BRep_Tool::Pnt(V3);
+ gp_Vec aVec(BRep_Tool::Pnt(V1),BRep_Tool::Pnt(V2));
+ if (aVec.Magnitude() < Precision::Confusion()) {
+ SetErrorCode("Vector with null magnitude given");
+ return NULL;
+ }
+
+ Handle(Geom_Surface) aPlane = new Geom_Plane(aLoc, aVec);
+ if ( aPlane.IsNull() )
+ return NULL;
+
+ // Find object IDs
+ Handle(TColStd_HSequenceOfInteger) aSeq;
+ aSeq = getShapesOnSurfaceIDs( aPlane, aShape, aShapeType, theState );
+
+ // The GetShapesOnPlaneIDs() doesn't change object so no new function is required.
+ Handle(GEOM_Function) aFunction = GEOM::GetCreatedLast(theShape,theAx1)->GetLastFunction();
+
+ // Make a Python command
+ GEOM::TPythonDump(aFunction, /*append=*/true)
+ << "listShapesOnPlane = geompy.GetShapesOnPlaneWithLocationIDs"
+ << "(" << theShape << ", " << aShapeType << ", " << theAx1 << ", "<< thePnt << ", " << theState << ")";
+
+ SetErrorCode(OK);
+ return aSeq;
+}
+
//=============================================================================
/*!
* GetShapesOnCylinderIDs
const Handle(GEOM_Object)& theAx1,
const GEOMAlgo_State theState);
+ Standard_EXPORT Handle(TColStd_HSequenceOfTransient) GetShapesOnPlaneWithLocation (const Handle(GEOM_Object)& theShape,
+ const Standard_Integer theShapeType,
+ const Handle(GEOM_Object)& theAx1,
+ const Handle(GEOM_Object)& thePnt,
+ const GEOMAlgo_State theState);
+
+
Standard_EXPORT Handle(TColStd_HSequenceOfTransient) GetShapesOnCylinder (const Handle(GEOM_Object)& theShape,
const Standard_Integer theShapeType,
const Handle(GEOM_Object)& theAxis,
const Handle(GEOM_Object)& theAx1,
const GEOMAlgo_State theState);
+ Standard_EXPORT Handle(TColStd_HSequenceOfInteger) GetShapesOnPlaneWithLocationIDs (const Handle(GEOM_Object)& theShape,
+ const Standard_Integer theShapeType,
+ const Handle(GEOM_Object)& theAx1,
+ const Handle(GEOM_Object)& thePnt,
+ const GEOMAlgo_State theState);
+
Standard_EXPORT Handle(TColStd_HSequenceOfInteger) GetShapesOnCylinderIDs (const Handle(GEOM_Object)& theShape,
const Standard_Integer theShapeType,
const Handle(GEOM_Object)& theAxis,
// 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
+// 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
+//
+// 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
+// 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 <GEOMImpl_Types.hxx>
+#include <Standard_Failure.hxx>
#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
//=============================================================================
//Compute the translation
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Translation driver failed");
return NULL;
//Compute the translation
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Translation driver failed");
return NULL;
//Compute the translation
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Translation driver failed");
return NULL;
//Compute the translation
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Translation driver failed");
return NULL;
//Compute the translation
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Translation driver failed");
return NULL;
//Compute the translation
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Translation driver failed");
return NULL;
//Compute the translation
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Translation driver failed");
return NULL;
//Compute the translation
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Translation driver failed");
return NULL;
//Compute the mirror
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Mirror driver failed");
return NULL;
//Compute the mirror
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Mirror driver failed");
return NULL;
//Compute the mirror
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Mirror driver failed");
return NULL;
//Compute the mirror
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Mirror driver failed");
return NULL;
//Compute the mirror
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Mirror driver failed");
return NULL;
//Compute the mirror
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Mirror driver failed");
return NULL;
//Compute the offset
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Offset driver failed");
return NULL;
//Compute the offset
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Offset driver failed");
return NULL;
//Compute the scale
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Scale driver failed");
return NULL;
//Compute the scale
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Scale driver failed");
return NULL;
{
SetErrorCode(KO);
- if (theObject.IsNull() || theStartLCS.IsNull() || theEndLCS.IsNull()) return NULL;
+ if (theObject.IsNull() || theEndLCS.IsNull()) return NULL;
Handle(GEOM_Function) anOriginal = theObject->GetLastFunction();
if (anOriginal.IsNull()) return NULL; //There is no function which creates an object to be set in position
- // Get last functions of the arguments
- Handle(GEOM_Function) aStartLCS = theStartLCS->GetLastFunction();
- Handle(GEOM_Function) aEndLCS = theEndLCS->GetLastFunction();
-
//Add a Position function
+ Standard_Integer aType = POSITION_SHAPE;
+ if (theStartLCS.IsNull()) aType = POSITION_SHAPE_FROM_GLOBAL;
+
Handle(GEOM_Function) aFunction =
- theObject->AddFunction(GEOMImpl_PositionDriver::GetID(), POSITION_SHAPE);
+ theObject->AddFunction(GEOMImpl_PositionDriver::GetID(), aType);
if (aFunction.IsNull()) return NULL;
//Check if the function is set correctly
if (aFunction->GetDriverGUID() != GEOMImpl_PositionDriver::GetID()) return NULL;
+ //Set operation arguments
GEOMImpl_IPosition aTI (aFunction);
aTI.SetShape(anOriginal);
- aTI.SetStartLCS(aStartLCS);
- aTI.SetEndLCS(aEndLCS);
+ aTI.SetEndLCS(theEndLCS->GetLastFunction());
+ if (!theStartLCS.IsNull())
+ aTI.SetStartLCS(theStartLCS->GetLastFunction());
//Compute the Position
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Position driver failed");
return NULL;
{
SetErrorCode(KO);
- if (theObject.IsNull() || theStartLCS.IsNull() || theEndLCS.IsNull()) return NULL;
+ if (theObject.IsNull() || theEndLCS.IsNull()) return NULL;
Handle(GEOM_Function) anOriginal = theObject->GetLastFunction();
if (anOriginal.IsNull()) return NULL; //There is no function which creates an object to be set in position
Handle(GEOM_Object) aCopy = GetEngine()->AddObject(GetDocID(), theObject->GetType());
//Add a position function
+ Standard_Integer aType = POSITION_SHAPE_COPY;
+ if (theStartLCS.IsNull()) aType = POSITION_SHAPE_FROM_GLOBAL_COPY;
+
Handle(GEOM_Function) aFunction =
- aCopy->AddFunction(GEOMImpl_PositionDriver::GetID(), POSITION_SHAPE_COPY);
+ aCopy->AddFunction(GEOMImpl_PositionDriver::GetID(), aType);
if (aFunction.IsNull()) return NULL;
//Check if the function is set correctly
GEOMImpl_IPosition aTI (aFunction);
aTI.SetShape(anOriginal);
- aTI.SetStartLCS(theStartLCS->GetLastFunction());
aTI.SetEndLCS(theEndLCS->GetLastFunction());
+ if (!theStartLCS.IsNull())
+ aTI.SetStartLCS(theStartLCS->GetLastFunction());
//Compute the position
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Position driver failed");
return NULL;
//Compute the translation
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Rotate driver failed");
return NULL;
//Compute the translation
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Rotate driver failed");
return NULL;
//Compute the translation
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Rotate driver failed");
return NULL;
//Compute the translation
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!GetSolver()->ComputeFunction(aFunction)) {
SetErrorCode("Rotate driver failed");
return NULL;
const TCollection_AsciiString&,
TCollection_AsciiString&);
-//This class is workaround of BUG OCC13051
-//It's stored all loaded libraries for import and unload that in destructor
-class DLL_Collector
-{
- typedef NCollection_DataMap<TCollection_AsciiString,LibHandle> DLL_Collector_Map;
- DLL_Collector_Map myMapOfDLL;
-public:
- DLL_Collector(){};
- ~DLL_Collector()
- {
- DLL_Collector_Map::Iterator Iter( myMapOfDLL );
- for( ; Iter.More(); Iter.Next() )
- UnLoadLib( Iter.Value() );
- }
-
-public:
- LibHandle LoadDLL( const TCollection_AsciiString& theLibName )
- {
- if ( myMapOfDLL.IsBound( theLibName ) )
- return myMapOfDLL( theLibName );
-
- LibHandle res = LoadLib( theLibName.ToCString() );
- if ( res )
- myMapOfDLL.Bind( theLibName, res );
-
- return res;
- }
-};
-
-static DLL_Collector GlobalCollector;
-
//=======================================================================
//function : GetID
//purpose :
return 0;
// load plugin library
- LibHandle anImportLib = GlobalCollector.LoadDLL( aLibName ); //This is workaround of BUG OCC13051
+ LibHandle anImportLib = LoadLib( aLibName.ToCString() ); //This is workaround of BUG OCC13051
funcPoint fp = 0;
if ( anImportLib )
fp = (funcPoint)GetProc( anImportLib, "Import" );
TopoDS_Shape aShape1 = aRefPnt1->GetValue();
TopoDS_Shape aShape2 = aRefPnt2->GetValue();
if (aShape1.ShapeType() != TopAbs_VERTEX ||
- aShape2.ShapeType() != TopAbs_VERTEX) return 0;
+ aShape2.ShapeType() != TopAbs_VERTEX) {
+ Standard_ConstructionError::Raise("Wrong arguments: two points must be given");
+ }
if (aShape1.IsSame(aShape2)) {
Standard_ConstructionError::Raise("The end points must be different");
}
Handle(GEOM_Function) aRefDir = aPI.GetPoint2();
TopoDS_Shape aShape1 = aRefPnt->GetValue();
TopoDS_Shape aShape2 = aRefDir->GetValue();
- if (aShape1.ShapeType() != TopAbs_VERTEX ||
- aShape2.ShapeType() != TopAbs_EDGE) return 0;
+ if (aShape1.ShapeType() != TopAbs_VERTEX) {
+ Standard_ConstructionError::Raise("Wrong first argument: must be point");
+ }
+ if (aShape2.ShapeType() != TopAbs_EDGE) {
+ Standard_ConstructionError::Raise("Wrong second argument: must be vector");
+ }
if (aShape1.IsSame(aShape2)) {
Standard_ConstructionError::Raise("The end points must be different");
}
// 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
+// 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
+//
+// 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
+// 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 <GEOMImpl_Types.hxx>
#include <GEOM_Function.hxx>
+#include <GEOMImpl_IMeasureOperations.hxx>
+
+// OCCT Includes
#include <BRepBuilderAPI_MakeFace.hxx>
#include <BRep_Tool.hxx>
#include <BRepTopAdaptor_FClass2d.hxx>
//=======================================================================
//function : GetID
//purpose :
-//=======================================================================
+//=======================================================================
const Standard_GUID& GEOMImpl_PlaneDriver::GetID()
{
static Standard_GUID aPlaneDriver("FF1BBB05-5D14-4df2-980B-3A668264EA16");
- return aPlaneDriver;
+ return aPlaneDriver;
}
//=======================================================================
//function : GEOMImpl_PlaneDriver
-//purpose :
+//purpose :
//=======================================================================
-GEOMImpl_PlaneDriver::GEOMImpl_PlaneDriver()
+GEOMImpl_PlaneDriver::GEOMImpl_PlaneDriver()
{
}
//=======================================================================
//function : Execute
//purpose :
-//=======================================================================
+//=======================================================================
Standard_Integer GEOMImpl_PlaneDriver::Execute(TFunction_Logbook& log) const
{
- if (Label().IsNull()) return 0;
+ if (Label().IsNull()) return 0;
Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label());
GEOMImpl_IPlane aPI (aFunction);
} else if (aType == PLANE_FACE) {
Handle(GEOM_Function) aRef = aPI.GetFace();
TopoDS_Shape aRefShape = aRef->GetValue();
- if (aRefShape.ShapeType() != TopAbs_FACE) return 0;
- Handle(Geom_Surface) aGS = BRep_Tool::Surface(TopoDS::Face(aRefShape));
- if (!aGS->IsKind(STANDARD_TYPE(Geom_Plane))) {
- Standard_TypeMismatch::Raise("Plane creation aborted: non-planar face given as argument");
- }
- aShape = BRepBuilderAPI_MakeFace(aGS, -aSize, +aSize, -aSize, +aSize).Shape();
- }
+ //if (aRefShape.ShapeType() != TopAbs_FACE) return 0;
+ //Handle(Geom_Surface) aGS = BRep_Tool::Surface(TopoDS::Face(aRefShape));
+ //if (!aGS->IsKind(STANDARD_TYPE(Geom_Plane))) {
+ // Standard_TypeMismatch::Raise("Plane creation aborted: non-planar face given as argument");
+ //}
+ //aShape = BRepBuilderAPI_MakeFace(aGS, -aSize, +aSize, -aSize, +aSize).Shape();
+ gp_Ax3 anAx3 = GEOMImpl_IMeasureOperations::GetPosition(aRefShape);
+ gp_Pln aPln (anAx3);
+ aShape = BRepBuilderAPI_MakeFace(aPln, -aSize, +aSize, -aSize, +aSize).Shape();
+ }
else if (aType == PLANE_TANGENT_FACE)
{
Handle(GEOM_Function) aRefFace = aPI.GetFace();
if(aShape1.IsNull())
Standard_TypeMismatch::Raise("Plane was not created.Basis face was not specified");
TopoDS_Face aFace = TopoDS::Face(aShape1);
-
+
Standard_Real aKoefU = aPI.GetParameterU();
Standard_Real aKoefV = aPI.GetParameterV();
Standard_Real aUmin,aUmax,aVmin,aVmax;
gp_Pnt aPLoc;
aSurf->D1(aParamU,aParamV,aPLoc,aVecU,aVecV);
BRepTopAdaptor_FClass2d clas(aFace,Precision::PConfusion());
-
+
TopAbs_State stOut= clas.PerformInfinitePoint();
gp_Pnt2d aP2d(aParamU,aParamV);
TopAbs_State st= clas.Perform(aP2d);
if(aTool.IsDone())
aShape = aTool.Shape();
}
-
else {
}
aFunction->SetValue(aShape);
- log.SetTouched(Label());
+ log.SetTouched(Label());
return 1;
}
//=======================================================================
//function : GEOMImpl_PlaneDriver_Type_
//purpose :
-//=======================================================================
+//=======================================================================
Standard_EXPORT Handle_Standard_Type& GEOMImpl_PlaneDriver_Type_()
{
static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
- if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
+ if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
+
static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_PlaneDriver",
//=======================================================================
//function : DownCast
//purpose :
-//=======================================================================
+//=======================================================================
const Handle(GEOMImpl_PlaneDriver) Handle(GEOMImpl_PlaneDriver)::DownCast
(const Handle(Standard_Transient)& AnObject)
{
// 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
+// 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
+//
+// 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
+// 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 <Standard_Stream.hxx>
+//#include <Standard_Stream.hxx>
#include <GEOMImpl_PositionDriver.hxx>
#include <GEOMImpl_IPosition.hxx>
#include <GEOMImpl_Types.hxx>
#include <GEOM_Function.hxx>
+#include <GEOMImpl_IMeasureOperations.hxx>
+
+// OCCT Includes
#include <BRepBuilderAPI_Transform.hxx>
#include <BRep_Tool.hxx>
#include <TopoDS.hxx>
//=======================================================================
//function : GetID
//purpose :
-//=======================================================================
+//=======================================================================
const Standard_GUID& GEOMImpl_PositionDriver::GetID()
{
static Standard_GUID aPositionDriver("FF1BBB69-5D14-4df2-980B-3A668264EA16");
- return aPositionDriver;
+ return aPositionDriver;
}
//=======================================================================
//function : GEOMImpl_PositionDriver
-//purpose :
+//purpose :
//=======================================================================
-GEOMImpl_PositionDriver::GEOMImpl_PositionDriver()
+GEOMImpl_PositionDriver::GEOMImpl_PositionDriver()
{
}
//=======================================================================
//function : Execute
//purpose :
-//=======================================================================
+//=======================================================================
Standard_Integer GEOMImpl_PositionDriver::Execute(TFunction_Logbook& log) const
{
- if (Label().IsNull()) return 0;
+ if (Label().IsNull()) return 0;
Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label());
GEOMImpl_IPosition aCI (aFunction);
TopoDS_Shape aShapeStartLCS = aRefStartLCS->GetValue();
TopoDS_Shape aShapeEndLCS = aRefEndLCS->GetValue();
- if (aShapeBase.IsNull() || aShapeStartLCS.IsNull() ||
+ if (aShapeBase.IsNull() || aShapeStartLCS.IsNull() ||
aShapeEndLCS.IsNull() || aShapeEndLCS.ShapeType() != TopAbs_FACE)
return 0;
gp_Trsf aTrsf;
gp_Ax3 aStartAx3, aDestAx3;
- aStartAx3.Transform(aShapeStartLCS.Location().Transformation());
- aDestAx3.Transform(aShapeEndLCS.Location().Transformation());
-
- Handle(Geom_Surface) aGS2 = BRep_Tool::Surface( TopoDS::Face( aShapeEndLCS ) );
- if (!aGS2.IsNull() && aGS2->IsKind( STANDARD_TYPE( Geom_Plane ) ) ) {
- Handle(Geom_Plane) aGPlane2 = Handle(Geom_Plane)::DownCast( aGS2 );
- gp_Pln aPln2 = aGPlane2->Pln();
- aDestAx3 = aPln2.Position();
- }
-
- if(aShapeStartLCS.ShapeType() == TopAbs_FACE) {
- Handle(Geom_Surface) aGS = BRep_Tool::Surface( TopoDS::Face( aShapeStartLCS ) );
- if (!aGS.IsNull() && aGS->IsKind( STANDARD_TYPE( Geom_Plane ) ) ) {
- Handle(Geom_Plane) aGPlane = Handle(Geom_Plane)::DownCast( aGS );
- gp_Pln aPln = aGPlane->Pln();
- aStartAx3 = aPln.Position();
- }
- aTrsf.SetDisplacement(aStartAx3, aDestAx3);
- }
- else {
- gp_Trsf aTrsf1, aTrsf2;
- aTrsf1.SetDisplacement(aStartAx3, aDestAx3);
- BRepBuilderAPI_Transform aBT (aShapeBase, aTrsf1, Standard_False);
- TopoDS_Shape aNewShape = aBT.Shape();
-
- gp_Pnt aPnt;
- if (aNewShape.ShapeType() == TopAbs_VERTEX) {
- aPnt = BRep_Tool::Pnt(TopoDS::Vertex(aNewShape));
- }
- else {
- GProp_GProps aSystem;
- if (aNewShape.ShapeType() == TopAbs_EDGE || aNewShape.ShapeType() == TopAbs_WIRE)
- BRepGProp::LinearProperties(aNewShape, aSystem);
- else if (aNewShape.ShapeType() == TopAbs_FACE || aNewShape.ShapeType() == TopAbs_SHELL)
- BRepGProp::SurfaceProperties(aNewShape, aSystem);
- else
- BRepGProp::VolumeProperties(aNewShape, aSystem);
-
- aPnt = aSystem.CentreOfMass();
- }
-
- gp_Vec aVec(aPnt, aDestAx3.Location());
- aTrsf2.SetTranslation(aVec);
- aTrsf = aTrsf2 * aTrsf1;
- }
+ // End LCS
+ aDestAx3 = GEOMImpl_IMeasureOperations::GetPosition(aShapeEndLCS);
+
+ // Start LCS
+ aStartAx3 = GEOMImpl_IMeasureOperations::GetPosition(aShapeStartLCS);
+
+ // Set transformation
+ aTrsf.SetDisplacement(aStartAx3, aDestAx3);
+
+ // Perform transformation
+ BRepBuilderAPI_Transform aBRepTrsf (aShapeBase, aTrsf, Standard_False);
+ aShape = aBRepTrsf.Shape();
+ }
+ else if (aType == POSITION_SHAPE_FROM_GLOBAL ||
+ aType == POSITION_SHAPE_FROM_GLOBAL_COPY) {
+ Handle(GEOM_Function) aRefShape = aCI.GetShape();
+ Handle(GEOM_Function) aRefEndLCS = aCI.GetEndLCS();
+
+ TopoDS_Shape aShapeBase = aRefShape->GetValue();
+ TopoDS_Shape aShapeEndLCS = aRefEndLCS->GetValue();
+
+ if (aShapeBase.IsNull() || aShapeEndLCS.IsNull() ||
+ aShapeEndLCS.ShapeType() != TopAbs_FACE)
+ return 0;
+
+ gp_Trsf aTrsf;
+ gp_Ax3 aStartAx3, aDestAx3;
+
+ // End LCS
+ aDestAx3 = GEOMImpl_IMeasureOperations::GetPosition(aShapeEndLCS);
+
+ // Set transformation
+ aTrsf.SetDisplacement(aStartAx3, aDestAx3);
+
+ // Perform transformation
BRepBuilderAPI_Transform aBRepTrsf (aShapeBase, aTrsf, Standard_False);
aShape = aBRepTrsf.Shape();
}
aFunction->SetValue(aShape);
- log.SetTouched(Label());
+ log.SetTouched(Label());
- return 1;
+ return 1;
}
//=======================================================================
//function : GEOMImpl_PositionDriver_Type_
//purpose :
-//=======================================================================
+//=======================================================================
Standard_EXPORT Handle_Standard_Type& GEOMImpl_PositionDriver_Type_()
{
static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
- if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
+ if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
+
static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_PositionDriver",
//=======================================================================
//function : DownCast
//purpose :
-//=======================================================================
+//=======================================================================
const Handle(GEOMImpl_PositionDriver) Handle(GEOMImpl_PositionDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
{
Handle(GEOMImpl_PositionDriver) _anOtherObject;
#include <TopoDS_Shape.hxx>
#include <TopoDS_Edge.hxx>
#include <TopoDS_Wire.hxx>
+#include <TopoDS_Shell.hxx>
#include <TopoDS_Solid.hxx>
#include <TopoDS_Compound.hxx>
#include <TopoDS_Iterator.hxx>
if (aShape_i.ShapeType() == TopAbs_EDGE) {
B.Add(aWire, TopoDS::Edge(aShape_i));
MW.Add(TopoDS::Edge(aShape_i));
+ if (!MW.IsDone()) {
+ // check status after each edge/wire addition, because the final status
+ // can be OK even in case, when some edges/wires was not accepted.
+ isMWDone = false;
+ }
} else if (aShape_i.ShapeType() == TopAbs_WIRE) {
- B.Add(aWire, TopoDS::Wire(aShape_i));
- MW.Add(TopoDS::Wire(aShape_i));
+ TopExp_Explorer exp (aShape_i, TopAbs_EDGE);
+ for (; exp.More(); exp.Next()) {
+ B.Add(aWire, TopoDS::Edge(exp.Current()));
+ MW.Add(TopoDS::Edge(exp.Current()));
+ if (!MW.IsDone()) {
+ // check status after each edge/wire addition, because the final status
+ // can be OK even in case, when some edges/wires was not accepted.
+ isMWDone = false;
+ }
+ }
} else {
Standard_TypeMismatch::Raise
("Shape for wire construction is neither an edge nor a wire");
}
- if (!MW.IsDone()) {
- // check status after each edge/wire addition, because the final status
- // can be OK even in case, when some edges/wires was not accepted.
- isMWDone = false;
- }
}
if (isMWDone) {
}
aShape = aFW->WireAPIMake();
}
-
- } else if (aType == FACE_WIRE) {
+ }
+ else if (aType == FACE_WIRE) {
Handle(GEOM_Function) aRefBase = aCI.GetBase();
TopoDS_Shape aShapeBase = aRefBase->GetValue();
- if (aShapeBase.IsNull() || aShapeBase.ShapeType() != TopAbs_WIRE) {
+ if (aShapeBase.IsNull()) Standard_NullObject::Raise("Argument Shape is null");
+ TopoDS_Wire W;
+ if (aShapeBase.ShapeType() == TopAbs_WIRE) {
+ W = TopoDS::Wire(aShapeBase);
+ }
+ else if (aShapeBase.ShapeType() == TopAbs_EDGE && aShapeBase.Closed()) {
+ BRepBuilderAPI_MakeWire MW;
+ MW.Add(TopoDS::Edge(aShapeBase));
+ if (!MW.IsDone()) {
+ Standard_ConstructionError::Raise("Wire construction failed");
+ }
+ W = MW;
+ }
+ else {
Standard_NullObject::Raise
- ("Shape for face construction is null or not a wire");
+ ("Shape for face construction is neither a wire nor a closed edge");
}
- TopoDS_Wire W = TopoDS::Wire(aShapeBase);
- //BRepBuilderAPI_MakeFace MF (W, aCI.GetIsPlanar());
- //if (!MF.IsDone()) {
- // Standard_ConstructionError::Raise("Face construction failed");
- //}
- //aShape = MF.Shape();
GEOMImpl_Block6Explorer::MakeFace(W, aCI.GetIsPlanar(), aShape);
if (aShape.IsNull()) {
Standard_ConstructionError::Raise("Face construction failed");
}
-
- } else if (aType == FACE_WIRES) {
+ }
+ else if (aType == FACE_WIRES) {
Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes();
int nbshapes = aShapes->Length();
if (nbshapes < 1) {
Standard_ConstructionError::Raise("No wires given");
}
- // first wire
+ // first wire or edge
Handle(GEOM_Function) aRefWire = Handle(GEOM_Function)::DownCast(aShapes->Value(1));
TopoDS_Shape aWire = aRefWire->GetValue();
- if (aWire.IsNull() || aWire.ShapeType() != TopAbs_WIRE) {
- Standard_NullObject::Raise("Shape for face construction is null or not a wire");
+ if (aWire.IsNull()) Standard_NullObject::Raise("Argument Shape is null");
+ TopoDS_Wire W1;
+ if(aWire.ShapeType() == TopAbs_WIRE) {
+ W1 = TopoDS::Wire(aWire);
+ }
+ else if(aWire.ShapeType() == TopAbs_EDGE && aWire.Closed()) {
+ BRepBuilderAPI_MakeWire MW;
+ MW.Add(TopoDS::Edge(aWire));
+ if (!MW.IsDone()) {
+ Standard_ConstructionError::Raise("Wire construction failed");
+ }
+ W1 = MW;
+ }
+ else {
+ Standard_NullObject::Raise
+ ("Shape for face construction is neither a wire nor closed edge");
}
- TopoDS_Wire W = TopoDS::Wire(aWire);
// basic face
- //BRepBuilderAPI_MakeFace MF (W, aCI.GetIsPlanar());
- //if (!MF.IsDone()) {
- // Standard_ConstructionError::Raise("Face construction failed");
- //}
- //TopoDS_Shape FFace = MF.Shape();
TopoDS_Shape FFace;
- GEOMImpl_Block6Explorer::MakeFace(W, aCI.GetIsPlanar(), FFace);
+ GEOMImpl_Block6Explorer::MakeFace(W1, aCI.GetIsPlanar(), FFace);
if (FFace.IsNull()) {
Standard_ConstructionError::Raise("Face construction failed");
}
Handle(GEOM_Function) aRefWire_i =
Handle(GEOM_Function)::DownCast(aShapes->Value(ind));
TopoDS_Shape aWire_i = aRefWire_i->GetValue();
- if (aWire_i.IsNull() || aWire_i.ShapeType() != TopAbs_WIRE) {
- Standard_NullObject::Raise("Shape for face construction is null or not a wire");
- }
-
- FR.Add(TopoDS::Wire(aWire_i));
+ if (aWire_i.IsNull()) Standard_NullObject::Raise("Argument Shape is null");
+ TopoDS_Wire W_i;
+ if(aWire_i.ShapeType() == TopAbs_WIRE) {
+ W_i = TopoDS::Wire(aWire_i);
+ }
+ else if(aWire_i.ShapeType() == TopAbs_EDGE && aWire_i.Closed()) {
+ BRepBuilderAPI_MakeWire MW1;
+ MW1.Add(TopoDS::Edge(aWire_i));
+ if (!MW1.IsDone()) {
+ Standard_ConstructionError::Raise("Wire construction failed");
+ }
+ W_i = MW1;
+ }
+ else {
+ Standard_NullObject::Raise
+ ("Shape for face construction is neither a wire nor closed edges");
+ }
+ FR.Add(W_i);
}
FR.Perform();
}
}
}
- } else if (aType == SHELL_FACES) {
+ }
+ else if (aType == SHELL_FACES) {
Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes();
unsigned int ind, nbshapes = aShapes->Length();
aSewing.Perform();
- TopExp_Explorer exp (aSewing.SewedShape(), TopAbs_SHELL);
- Standard_Integer ish = 0;
- for (; exp.More(); exp.Next()) {
- aShape = exp.Current();
- ish++;
+ TopoDS_Shape sh = aSewing.SewedShape();
+ if( sh.ShapeType()==TopAbs_FACE && nbshapes==1 ) {
+ // case for creation of shell from one face - PAL12722 (skl 26.06.2006)
+ TopoDS_Shell ss;
+ B.MakeShell(ss);
+ B.Add(ss,sh);
+ aShape = ss;
}
+ else {
+ //TopExp_Explorer exp (aSewing.SewedShape(), TopAbs_SHELL);
+ TopExp_Explorer exp (sh, TopAbs_SHELL);
+ Standard_Integer ish = 0;
+ for (; exp.More(); exp.Next()) {
+ aShape = exp.Current();
+ ish++;
+ }
- if (ish != 1)
- aShape = aSewing.SewedShape();
+ if (ish != 1)
+ aShape = aSewing.SewedShape();
+ }
- } else if (aType == SOLID_SHELL) {
+ }
+ else if (aType == SOLID_SHELL) {
Handle(GEOM_Function) aRefShell = aCI.GetBase();
TopoDS_Shape aShapeShell = aRefShell->GetValue();
if (aShapeShell.IsNull() || aShapeShell.ShapeType() != TopAbs_SHELL) {
aShape = Sol;
- } else if (aType == SOLID_SHELLS) {
+ }
+ else if (aType == SOLID_SHELLS) {
Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes();
unsigned int ind, nbshapes = aShapes->Length();
Standard_Integer ish = 0;
return 0;
}
- } else if (aType == COMPOUND_SHAPES) {
+ }
+ else if (aType == COMPOUND_SHAPES) {
Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes();
unsigned int ind, nbshapes = aShapes->Length();
aShape = C;
- } else if (aType == REVERSE_ORIENTATION) {
+ }
+ else if (aType == REVERSE_ORIENTATION) {
Handle(GEOM_Function) aRefShape = aCI.GetBase();
TopoDS_Shape aShape_i = aRefShape->GetValue();
if (aShape_i.IsNull()) {
#include <GEOMImpl_Types.hxx>
#include <GEOM_Function.hxx>
+#include <GEOMImpl_IMeasureOperations.hxx>
+
+// OCCT Includes
#include <BRepBuilderAPI_Transform.hxx>
#include <BRep_Tool.hxx>
#include <Geom_Plane.hxx>
{
Handle(GEOM_Function) aRefFace = aCI.GetWorkingPlane();
TopoDS_Shape aShape = aRefFace->GetValue();
- if ( aShape.IsNull() || aShape.ShapeType() != TopAbs_FACE )
- return 0;
- Handle(Geom_Surface) aGS = BRep_Tool::Surface( TopoDS::Face( aShape ));
- if ( aGS.IsNull() || !aGS->IsKind( STANDARD_TYPE( Geom_Plane )))
- return 0;
- Handle(Geom_Plane) aGPlane = Handle(Geom_Plane)::DownCast( aGS );
- aWPlane = aGPlane->Pln().Position();
+ //if ( aShape.IsNull() || aShape.ShapeType() != TopAbs_FACE )
+ // return 0;
+ //Handle(Geom_Surface) aGS = BRep_Tool::Surface( TopoDS::Face( aShape ));
+ //if ( aGS.IsNull() || !aGS->IsKind( STANDARD_TYPE( Geom_Plane )))
+ // return 0;
+ //Handle(Geom_Plane) aGPlane = Handle(Geom_Plane)::DownCast( aGS );
+ //aWPlane = aGPlane->Pln().Position();
+ aWPlane = GEOMImpl_IMeasureOperations::GetPosition(aShape);
}
gp_Trsf aTrans;
aTrans.SetTransformation(aWPlane);
#define POSITION_SHAPE 1
#define POSITION_SHAPE_COPY 2
+#define POSITION_SHAPE_FROM_GLOBAL 3
+#define POSITION_SHAPE_FROM_GLOBAL_COPY 4
#define TORUS_RR 1
#define TORUS_PNT_VEC_RR 2
#define ARCHIMEDE_TYPE 1
// Shape Healing operators
-#define SHAPE_PROCESS 1
-#define SUPPRESS_FACES 2
-#define CLOSE_CONTOUR 3
-#define REMOVE_INT_WIRES 4
-#define FILL_HOLES 5
-#define SEWING 6
-#define DIVIDE_EDGE 7
+#define SHAPE_PROCESS 1
+#define SUPPRESS_FACES 2
+#define CLOSE_CONTOUR 3
+#define REMOVE_INT_WIRES 4
+#define FILL_HOLES 5
+#define SEWING 6
+#define DIVIDE_EDGE 7
+#define CHANGE_ORIENTATION 8
#define BASIC_FILLING 1
void GEOMToolsGUI::OnEditDelete()
{
SALOME_ListIO selected;
- SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
+ SalomeApp_Application* app =
+ dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
if ( app ) {
LightApp_SelectionMgr* aSelMgr = app->selectionMgr();
SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( app->activeStudy() );
_PTR(GenericAttribute) anAttr;
GEOM_Displayer* disp = new GEOM_Displayer( appStudy );
+ _PTR(SComponent) aGeom ( aStudy->FindComponent("GEOM") );
+ if ( !aGeom )
+ return;
+
// MAIN LOOP OF SELECTED OBJECTS
for ( SALOME_ListIteratorOfListIO It( selected ); It.More(); It.Next() ) {
if ( !strcmp( obj->GetIOR().c_str(), geomIOR ) )
continue;
- // iterate through all children of obj, find IOR attributes on children
- // and remove shapes that correspond to these IORs
- for (_PTR(ChildIterator) it (aStudy->NewChildIterator(obj)); it->More(); it->Next()) {
- _PTR(SObject) child (it->Value());
- if (child->FindAttribute(anAttr, "AttributeIOR")) {
- _PTR(AttributeIOR) anIOR (anAttr);
-
- // Delete child( s ) shape in Client :
- const TCollection_AsciiString ASCior ((char*)anIOR->Value().c_str());
- getGeometryGUI()->GetShapeReader().RemoveShapeFromBuffer(ASCior);
-
- CORBA::Object_var corbaObj = GeometryGUI::ClientSObjectToObject(child);
- GEOM::GEOM_Object_var geomObj = GEOM::GEOM_Object::_narrow(corbaObj);
- if (!CORBA::is_nil(geomObj)) {
- for (view = views.first(); view; view = views.next()) {
- disp->Erase(geomObj, true, view);
- }
+ //If the object has been used to create another one,then it can't be deleted
+ _PTR(ChildIterator) it (aStudy->NewChildIterator(aGeom));
+ for ( it->InitEx( true ); it->More(); it->Next() ) {
+ _PTR(SObject) chobj (it->Value());
+ CORBA::Object_var corbaObj = GeometryGUI::ClientSObjectToObject(chobj);
+ GEOM::GEOM_Object_var geomObj = GEOM::GEOM_Object::_narrow( corbaObj );
+ if( CORBA::is_nil(geomObj) )
+ continue;
+ GEOM::ListOfGO_var list = geomObj->GetDependency();
+ if( list->length() > 1 )
+ for(int i = 0; i < list->length(); i++ ){
+ CORBA::Object_var corbaObj_rem = GeometryGUI::ClientSObjectToObject(obj);
+ GEOM::GEOM_Object_var geomObj_rem = GEOM::GEOM_Object::_narrow( corbaObj_rem );
+ if( list[i]->_is_equivalent( geomObj_rem ) ){
+ SUIT_MessageBox::warn1 ( app->desktop(),
+ QObject::tr("WRN_WARNING"),
+ QObject::tr("DEP_OBJECT"),
+ QObject::tr("BUT_OK") );
+ return;
+ }
}
- }
- } // for ( children of obj )
-
- // Erase main graphical object
- for ( view = views.first(); view; view = views.next() )
- disp->Erase( io, true, view );
-
- // Delete main shape in Client :
- if ( obj->FindAttribute( anAttr, "AttributeIOR" ) ) {
- _PTR(AttributeIOR) anIOR( anAttr );
- const TCollection_AsciiString ASCIor( (char*)anIOR->Value().c_str() );
- getGeometryGUI()->GetShapeReader().RemoveShapeFromBuffer( ASCIor );
- }
+ }
- CORBA::Object_var corbaObj = GeometryGUI::ClientSObjectToObject(obj);
- GEOM::GEOM_Object_var geomObj = GEOM::GEOM_Object::_narrow( corbaObj );
- if ( !CORBA::is_nil( geomObj ) )
- GeometryGUI::GetGeomGen()->RemoveObject( geomObj );
+ RemoveObjectWithChildren(obj, aStudy, views, disp);
// Remove objects from Study
aStudyBuilder->RemoveObject( obj );
QString fileName = getFileName(app->desktop(), "", aMap,
tr("GEOM_MEN_IMPORT"), true, fileType);
+
+ if (fileType.isEmpty() )
+ {
+ // Trying to detect file type
+ QFileInfo aFileInfo( fileName );
+ QString aPossibleType = (aFileInfo.extension(false)).upper() ;
+
+ if ( (aMap.values()).contains(aPossibleType) )
+ fileType = aPossibleType;
+ }
+
if (fileName.isEmpty() || fileType.isEmpty())
return false;
return QString();
}
+//=====================================================================================
+// function : RemoveObjectWithChildren
+// purpose : to be used by OnEditDelete() method
+//=====================================================================================
+void GEOMToolsGUI::RemoveObjectWithChildren(_PTR(SObject) obj,
+ _PTR(Study) aStudy,
+ QPtrList<SALOME_View> views,
+ GEOM_Displayer* disp)
+{
+ // iterate through all children of obj
+ for (_PTR(ChildIterator) it (aStudy->NewChildIterator(obj)); it->More(); it->Next()) {
+ _PTR(SObject) child (it->Value());
+ RemoveObjectWithChildren(child, aStudy, views, disp);
+ }
+
+ // erase object and remove it from engine
+ _PTR(GenericAttribute) anAttr;
+ if (obj->FindAttribute(anAttr, "AttributeIOR")) {
+ _PTR(AttributeIOR) anIOR (anAttr);
+
+ // Delete shape in Client
+ const TCollection_AsciiString ASCIor ((char*)anIOR->Value().c_str());
+ getGeometryGUI()->GetShapeReader().RemoveShapeFromBuffer(ASCIor);
+
+ CORBA::Object_var corbaObj = GeometryGUI::ClientSObjectToObject(obj);
+ GEOM::GEOM_Object_var geomObj = GEOM::GEOM_Object::_narrow( corbaObj );
+ if (!CORBA::is_nil(geomObj)) {
+ // Erase graphical object
+ SALOME_View* view = views.first();
+ for (; view; view = views.next()) {
+ disp->Erase(geomObj, true, view);
+ }
+
+ // Remove object from Engine
+ GeometryGUI::GetGeomGen()->RemoveObject( geomObj );
+ }
+ }
+}
+
//=====================================================================================
// EXPORTED METHODS
//=====================================================================================
#include "GEOM_ToolsGUI.hxx"
#include "GEOMGUI.h"
+#include "GEOM_Displayer.h"
+
+#include <SALOME_Prs.h>
#include <SALOMEDSClient.hxx>
#include <SALOME_ListIO.hxx>
-#include <omniORB4/CORBA.h>
+#include <CORBA.h>
+
+#include <qptrlist.h>
//=================================================================================
// class : GEOMToolsGUI
// if objects belong to different Components, a NULL string is returned.
QString getParentComponent( _PTR( Study ), const SALOME_ListIO& );
QString getParentComponent( _PTR(SObject) );
+
+ // Recursive deletion of object with children
+ void RemoveObjectWithChildren(_PTR(SObject) obj,
+ _PTR(Study) aStudy,
+ QPtrList<SALOME_View> views,
+ GEOM_Displayer* disp);
};
#endif
#include <AIS_ListOfInteractive.hxx>
#include <AIS_ListIteratorOfListOfInteractive.hxx>
#include <Prs3d_IsoAspect.hxx>
+#include <Prs3d_PointAspect.hxx>
+#include <Graphic3d_AspectMarker3d.hxx>
// VTK Includes
#include <vtkBMPReader.h>
for ( SALOME_ListIteratorOfListIO It( selected ); It.More(); It.Next() ) {
io = GEOMBase::GetAIS( It.Value(), true );
if ( !io.IsNull() ) {
+ // Set color for a point
+ OCCViewer_Viewer* vm = dynamic_cast<OCCViewer_Viewer*>( window->getViewManager()->getViewModel() );
+ Handle (AIS_InteractiveContext) ic = vm->getAISContext();
+ Handle(AIS_Drawer) aCurDrawer = io->Attributes();
+ Handle(Prs3d_PointAspect) aCurPointAspect = aCurDrawer->PointAspect();
+ Quantity_Color aCurColor;
+ Standard_Real aCurScale;
+ Aspect_TypeOfMarker aCurTypeOfMarker;
+ aCurPointAspect->Aspect()->Values( aCurColor, aCurTypeOfMarker, aCurScale );
+ aCurDrawer->SetPointAspect( new Prs3d_PointAspect( aCurTypeOfMarker, aColor, aCurScale) );
+ ic->SetLocalAttributes(io, aCurDrawer);
+
io->SetColor( aColor );
if ( io->IsKind( STANDARD_TYPE(GEOM_AISShape) ) )
Handle(GEOM_AISShape)::DownCast( io )->SetShadingColor( aColor );
QObject::tr("BUT_OK"));
}
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void GEOMToolsGUI_NbIsosDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ ClickOnHelp();
+ }
+}
void setV( const int );
private slots:
- void ClickOnHelp();
+ void ClickOnHelp();
+
+private:
+ void keyPressEvent(QKeyEvent*);
private:
QSpinBox* SpinBoxU;
ic->UpdateCurrentViewer();
} // if ( isOCC )
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void GEOMToolsGUI_TransparencyDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ ClickOnHelp();
+ }
+}
GEOMToolsGUI_TransparencyDlg( QWidget* parent );
~GEOMToolsGUI_TransparencyDlg();
+private:
+ void keyPressEvent(QKeyEvent*);
+
private :
bool myFirstInit ; /* Inform for the first init */
QSlider* mySlider;
// 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
+// 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
+//
+// 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
+// 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
_impl = new ::GEOMImpl_Gen;
- OSD::SetSignal( true );
+ //PAL10867: disable signals catching with "noexcepthandler" option
+ char* envNoCatchSignals = getenv("NOT_INTERCEPT_SIGNALS");
+ if (!envNoCatchSignals || !atoi(envNoCatchSignals))
+ {
+ //work around PAL12004, PAL12628
+ //OSD::SetSignal( true );
+ bool raiseFPE;
+#ifdef _DEBUG_
+ raiseFPE = true;
+ char* envDisableFPE = getenv("DISABLE_FPE");
+ if (envDisableFPE && atoi(envDisableFPE))
+ raiseFPE = false;
+#else
+ raiseFPE = false;
+#endif
+ OSD::SetSignal( raiseFPE );
+ }
}
-
-
//============================================================================
// function : ~GEOM_Gen_i()
// purpose : destructor
{
GEOM::GEOM_Object_var anObject = GEOM::GEOM_Object::_narrow(_orb->string_to_object(IORString));
if (!CORBA::is_nil(anObject)) {
- return strdup(anObject->GetEntry());
+ return CORBA::string_dup(anObject->GetEntry());
}
return 0;
}
GEOM::GEOM_Object_var obj = GetObject(anObject->GetDocID(), anEntry.ToCString());
CORBA::String_var aPersRefString = _orb->object_to_string(obj);
- return strdup(aPersRefString.in());
+ return CORBA::string_dup(aPersRefString);
}
//============================================================================
}
anAttr = aStudyBuilder->FindOrCreateAttribute(aResultSO, "AttributeIOR");
SALOMEDS::AttributeIOR_var anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
- CORBA::String_var aGeomObjIOR = _orb->object_to_string(theObject);
- anIOR->SetValue( aGeomObjIOR .in() );
+ //char *aGeomObjIOR = _orb->object_to_string(theObject);
+ CORBA::String_var aGeomObjIOR = _orb->object_to_string(theObject);
+ //anIOR->SetValue(CORBA::string_dup(aGeomObjIOR));
+ anIOR->SetValue(aGeomObjIOR);
anAttr = aStudyBuilder->FindOrCreateAttribute(aResultSO, "AttributePixMap");
SALOMEDS::AttributePixMap_var aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
aShapeName = "Vertex_";
}
//if (strlen(theName) == 0) aShapeName += TCollection_AsciiString(aResultSO->Tag());
- //else aShapeName = TCollection_AsciiString((char *)theName);
+ //else aShapeName = TCollection_AsciiString(CORBA::string_dup(theName));
// asv : 11.11.04 Introducing a more sofisticated method of name creation, just as
// it is done in GUI in GEOMBase::GetDefaultName() - not just add a Tag() == number
aShapeName = aNewShapeName;
}
else // MOST PROBABLY CALLED FROM GEOM GUI (ALREADY WITH VALID NAME)
- aShapeName = TCollection_AsciiString((char *)theName);
+ aShapeName = TCollection_AsciiString((char*)theName);
//Set the study entry as a name of the published GEOM_Object
aShape->SetStudyEntry(aResultSO->GetID());
if (!isMultiFile) SALOMEDS_Tool::RemoveTemporaryFiles(aTmpDir.c_str(), aSeq.in(), true);
SALOMEDS::Study_var Study = theComponent->GetStudy();
- TCollection_AsciiString name( (char *)(Study->Name() ) );
+ TCollection_AsciiString name (Study->Name());
return true;
}
TDF_Tool::Entry(anObj->GetEntry(), anEntry);
GEOM::GEOM_Object_var obj = GetObject(anObj->GetDocID(), anEntry.ToCString());
+ //Set the study entry of the published GEOM_Object
+ obj->SetStudyEntry(aNewSO->GetID());
+
// Add IORAttribute to the Study and set IOR of the created GEOM_Object to it
SALOMEDS::GenericAttribute_var anAttr = aStudyBuilder->FindOrCreateAttribute(aNewSO, "AttributeIOR");
SALOMEDS::AttributeIOR_var anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
//============================================================================
char* GEOM_Gen_i::ComponentDataType()
{
- return strdup("GEOM");
+ return CORBA::string_dup("GEOM");
}
//============================================================================
//============================================================================
void GEOM_Gen_i::register_name(char * name)
{
- CORBA::Object_var obj = _this();
- GEOM::GEOM_Gen_var g = GEOM::GEOM_Gen::_narrow(obj);
- name_service->Register(g, name);
+ GEOM::GEOM_Gen_ptr g = GEOM::GEOM_Gen::_narrow(_this());
+ name_service->Register(g, CORBA::string_dup(name));
}
//============================================================================
//Get the materials
aLen = theMaterials.length();
- if ( aLen )
+ if ( aLen ) {
aMaterials = new TColStd_HArray1OfInteger (1, aLen);
- for (ind = 0; ind < aLen; ind++) {
- aMaterials->SetValue(ind+1, theMaterials[ind]);
+ for (ind = 0; ind < aLen; ind++) {
+ aMaterials->SetValue(ind+1, theMaterials[ind]);
+ }
}
// Make Partition
return true;
}
+
+
+//=============================================================================
+/*!
+ * ChangeOrientation
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::ChangeOrientation (GEOM::GEOM_Object_ptr theObject)
+{
+ GEOM::GEOM_Object_var aGEOMObject;
+
+ // Set a not done flag
+ GetOperations()->SetNotDone();
+
+ // Check parameters
+ if ( CORBA::is_nil(theObject) )
+ return aGEOMObject._retn();
+
+ aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject);
+
+ // Get the object itself
+ Handle(GEOM_Object) anObject =
+ GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry());
+ if (anObject.IsNull())
+ return aGEOMObject._retn();
+
+ // Perform
+// Handle(GEOM_Object) aNewObject =
+ GetOperations()->ChangeOrientation( anObject );
+// if (!GetOperations()->IsDone() || aNewObject.IsNull())
+// return aGEOMObject._retn();
+
+ //return GetObject(aNewObject);
+ return aGEOMObject._retn();
+}
+
+
+//=============================================================================
+/*!
+ * ChangeOrientationCopy
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::ChangeOrientationCopy (GEOM::GEOM_Object_ptr theObject)
+{
+ GEOM::GEOM_Object_var aGEOMObject;
+
+ // Set a not done flag
+ GetOperations()->SetNotDone();
+
+ // Check parameters
+ if ( CORBA::is_nil(theObject) )
+ return aGEOMObject._retn();
+
+ // Get the object itself
+ Handle(GEOM_Object) anObject =
+ GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry());
+ if (anObject.IsNull())
+ return aGEOMObject._retn();
+
+ // Perform
+ Handle(GEOM_Object) aNewObject =
+ GetOperations()->ChangeOrientationCopy( anObject );
+ if (!GetOperations()->IsDone() || aNewObject.IsNull())
+ return aGEOMObject._retn();
+
+ return GetObject(aNewObject);
+}
+
CORBA::Boolean GetFreeBoundary(GEOM::GEOM_Object_ptr theObject, GEOM::ListOfGO_out theClosedWires, GEOM::ListOfGO_out theOpenWires );
+ GEOM::GEOM_Object_ptr ChangeOrientation (GEOM::GEOM_Object_ptr theObject);
+ GEOM::GEOM_Object_ptr ChangeOrientationCopy (GEOM::GEOM_Object_ptr theObject);
+
::GEOMImpl_IHealingOperations* GetOperations() { return (::GEOMImpl_IHealingOperations*)GetImpl(); }
private:
// 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
+// 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
+//
+// 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
+// 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
}
+//=============================================================================
+/*!
+ * GetPosition
+ */
+//=============================================================================
+void GEOM_IMeasureOperations_i::GetPosition
+ (GEOM::GEOM_Object_ptr theShape,
+ CORBA::Double& Ox, CORBA::Double& Oy, CORBA::Double& Oz,
+ CORBA::Double& Zx, CORBA::Double& Zy, CORBA::Double& Zz,
+ CORBA::Double& Xx, CORBA::Double& Xy, CORBA::Double& Xz)
+{
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+
+ //Set default values: global CS
+ Ox = Oy = Oz = Zx = Zy = Xy = Xz = 0.;
+ Zz = Xx = 1.;
+
+ if (theShape == NULL) return;
+
+ //Get the reference shape
+ Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
+ (theShape->GetStudyID(), theShape->GetEntry());
+
+ if (aShape.IsNull()) return;
+
+ // Get shape parameters
+ GetOperations()->GetPosition(aShape, Ox,Oy,Oz, Zx,Zy,Zz, Xx,Xy,Xz);
+}
+
//=============================================================================
/*!
* GetCentreOfMass
//Set a not done flag
GetOperations()->SetNotDone();
- if (theShape == NULL)
+ if (theShape == NULL)
+ {
+ theDescription = CORBA::string_dup("null");
+ return 0;
+ }
+
+ //Get the reference shape
+ Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
+ (theShape->GetStudyID(), theShape->GetEntry());
+
+ if (aShape.IsNull())
+ {
+ theDescription = CORBA::string_dup("null2");
+ return 0;
+ }
+
+ // Get shape parameters
+ TCollection_AsciiString aDump;
+ if (GetOperations()->CheckShape(aShape, /*check_geom = */false, aDump))
+ {
+ theDescription = CORBA::string_dup("OK");
+ return 1;
+ }
+ theDescription = CORBA::string_dup(aDump.ToCString());
+ return 0;
+}
+
+CORBA::Boolean GEOM_IMeasureOperations_i::CheckShapeWithGeometry (GEOM::GEOM_Object_ptr theShape,
+ CORBA::String_out theDescription)
+{
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+
+ if (theShape == NULL)
{
theDescription = CORBA::string_dup("null");
return 0;
// Get shape parameters
TCollection_AsciiString aDump;
- if (GetOperations()->CheckShape(aShape, aDump))
+ if (GetOperations()->CheckShape(aShape, /*check_geom = */true, aDump))
{
theDescription = CORBA::string_dup("OK");
return 1;
::GEOMImpl_IMeasureOperations* theImpl);
~GEOM_IMeasureOperations_i();
+ void GetPosition (GEOM::GEOM_Object_ptr theShape,
+ CORBA::Double& Ox, CORBA::Double& Oy, CORBA::Double& Oz,
+ CORBA::Double& Zx, CORBA::Double& Zy, CORBA::Double& Zz,
+ CORBA::Double& Xx, CORBA::Double& Xy, CORBA::Double& Xz);
+
void GetBasicProperties (GEOM::GEOM_Object_ptr theShape,
CORBA::Double& theLength,
CORBA::Double& theSurfArea,
CORBA::Boolean CheckShape (GEOM::GEOM_Object_ptr theShape,
CORBA::String_out theDescription);
+ CORBA::Boolean CheckShapeWithGeometry (GEOM::GEOM_Object_ptr theShape,
+ CORBA::String_out theDescription);
+
char* WhatIs (GEOM::GEOM_Object_ptr theShape);
CORBA::Double GetMinDistance (GEOM::GEOM_Object_ptr theShape1,
return aSeq._retn();
}
+//=============================================================================
+/*!
+ * GetShapesOnPlaneWithLocation
+ */
+//=============================================================================
+GEOM::ListOfGO* GEOM_IShapesOperations_i::GetShapesOnPlaneWithLocation
+ (GEOM::GEOM_Object_ptr theShape,
+ const CORBA::Long theShapeType,
+ GEOM::GEOM_Object_ptr theAx1,
+ GEOM::GEOM_Object_ptr thePnt,
+ const GEOM::shape_state theState)
+{
+ GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO;
+
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+
+ if (theShape == NULL || theAx1 == NULL || thePnt == NULL) return aSeq._retn();
+
+ //Get the reference objects
+ Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
+ (theShape->GetStudyID(), theShape->GetEntry());
+ Handle(GEOM_Object) anAx1 = GetOperations()->GetEngine()->GetObject
+ (theAx1->GetStudyID(), theAx1->GetEntry());
+ Handle(GEOM_Object) anPnt = GetOperations()->GetEngine()->GetObject
+ (thePnt->GetStudyID(), thePnt->GetEntry());
+
+ if (aShape.IsNull() || anAx1.IsNull() || anPnt.IsNull()) return aSeq._retn();
+
+ //Get Shapes On Plane
+ Handle(TColStd_HSequenceOfTransient) aHSeq =
+ GetOperations()->GetShapesOnPlaneWithLocation(aShape, theShapeType, anAx1, anPnt, ShapeState(theState));
+ if (!GetOperations()->IsDone() || aHSeq.IsNull())
+ return aSeq._retn();
+
+ Standard_Integer aLength = aHSeq->Length();
+ aSeq->length(aLength);
+ for (Standard_Integer i = 1; i <= aLength; i++)
+ aSeq[i-1] = GetObject(Handle(GEOM_Object)::DownCast(aHSeq->Value(i)));
+
+ return aSeq._retn();
+}
+
//=============================================================================
/*!
* GetShapesOnCylinder
return aSeq._retn();
}
+//=============================================================================
+/*!
+ * GetShapesOnPlaneWithLocationIDs
+ */
+//=============================================================================
+GEOM::ListOfLong* GEOM_IShapesOperations_i::GetShapesOnPlaneWithLocationIDs
+ (GEOM::GEOM_Object_ptr theShape,
+ const CORBA::Long theShapeType,
+ GEOM::GEOM_Object_ptr theAx1,
+ GEOM::GEOM_Object_ptr thePnt,
+ const GEOM::shape_state theState)
+{
+ GEOM::ListOfLong_var aSeq = new GEOM::ListOfLong;
+
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+
+ if (theShape == NULL || theAx1 == NULL || thePnt == NULL) return aSeq._retn();
+
+ //Get the reference objects
+ Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
+ (theShape->GetStudyID(), theShape->GetEntry());
+ Handle(GEOM_Object) anAx1 = GetOperations()->GetEngine()->GetObject
+ (theAx1->GetStudyID(), theAx1->GetEntry());
+ Handle(GEOM_Object) anPnt = GetOperations()->GetEngine()->GetObject
+ (thePnt->GetStudyID(), thePnt->GetEntry());
+
+ if (aShape.IsNull() || anAx1.IsNull() || anPnt.IsNull()) return aSeq._retn();
+
+ //Get Shapes On Plane
+ Handle(TColStd_HSequenceOfInteger) aHSeq =
+ GetOperations()->GetShapesOnPlaneWithLocationIDs(aShape, theShapeType, anAx1, anPnt, ShapeState(theState));
+ if (!GetOperations()->IsDone() || aHSeq.IsNull())
+ return aSeq._retn();
+
+ Standard_Integer aLength = aHSeq->Length();
+ aSeq->length(aLength);
+ for (Standard_Integer i = 1; i <= aLength; i++)
+ aSeq[i-1] = aHSeq->Value(i);
+
+ return aSeq._retn();
+}
+
//=============================================================================
/*!
* GetShapesOnCylinderIDs
GEOM::GEOM_Object_ptr theAx1,
GEOM::shape_state theState);
+ GEOM::ListOfGO* GetShapesOnPlaneWithLocation(GEOM::GEOM_Object_ptr theShape,
+ CORBA::Long theShapeType,
+ GEOM::GEOM_Object_ptr theAx1,
+ GEOM::GEOM_Object_ptr thePnt,
+ GEOM::shape_state theState);
+
GEOM::ListOfGO* GetShapesOnCylinder (GEOM::GEOM_Object_ptr theShape,
CORBA::Long theShapeType,
GEOM::GEOM_Object_ptr theAxis,
GEOM::GEOM_Object_ptr theAx1,
GEOM::shape_state theState);
+ GEOM::ListOfLong* GetShapesOnPlaneWithLocationIDs (GEOM::GEOM_Object_ptr theShape,
+ CORBA::Long theShapeType,
+ GEOM::GEOM_Object_ptr theAx1,
+ GEOM::GEOM_Object_ptr thePnt,
+ GEOM::shape_state theState);
+
GEOM::ListOfLong* GetShapesOnCylinderIDs (GEOM::GEOM_Object_ptr theShape,
CORBA::Long theShapeType,
GEOM::GEOM_Object_ptr theAxis,
// 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
+// 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
+//
+// 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
+// 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
/*!
* TranslateTwoPoints
*/
-//=============================================================================
+//=============================================================================
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateTwoPoints
(GEOM::GEOM_Object_ptr theObject,
GEOM::GEOM_Object_ptr thePoint1,
//Set a not done flag
GetOperations()->SetNotDone();
GEOM::GEOM_Object_var aGEOMObject;
-
+
if (thePoint1 == NULL || thePoint2 == NULL || theObject == NULL) return aGEOMObject._retn();
//check if the object is a subshape
/*!
* TranslateTwoPointsCopy
*/
-//=============================================================================
+//=============================================================================
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateTwoPointsCopy
(GEOM::GEOM_Object_ptr theObject,
GEOM::GEOM_Object_ptr thePoint1,
/*!
* TranslateDXDYDZ
*/
-//=============================================================================
-GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateDXDYDZ (GEOM::GEOM_Object_ptr theObject,
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateDXDYDZ (GEOM::GEOM_Object_ptr theObject,
CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ)
{
//Set a not done flag
- GetOperations()->SetNotDone();
+ GetOperations()->SetNotDone();
GEOM::GEOM_Object_var aGEOMObject ;
if (theObject == NULL) return aGEOMObject._retn();
/*!
* TranslateDXDYDZCopy
*/
-//=============================================================================
+//=============================================================================
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateDXDYDZCopy
(GEOM::GEOM_Object_ptr theObject, CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ)
{
return GetObject(anObject);
}
-
+
//=============================================================================
/*!
* TranslateVector
*/
-//=============================================================================
+//=============================================================================
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateVector
(GEOM::GEOM_Object_ptr theObject,
GEOM::GEOM_Object_ptr theVector)
{
//Set a not done flag
- GetOperations()->SetNotDone();
+ GetOperations()->SetNotDone();
GEOM::GEOM_Object_var aGEOMObject;
if (theObject == NULL || theVector == NULL) return aGEOMObject._retn();
Handle(GEOM_Object) aVector =
GetOperations()->GetEngine()->GetObject(theVector->GetStudyID(), theVector->GetEntry());
if (aVector.IsNull()) return aGEOMObject._retn();
-
+
//Perform the translation
- GetOperations()->TranslateVector(anObject, aVector);
+ GetOperations()->TranslateVector(anObject, aVector);
- return aGEOMObject._retn();
+ return aGEOMObject._retn();
}
-
+
//=============================================================================
/*!
* TranslateVectorCopy
*/
-//=============================================================================
+//=============================================================================
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateVectorCopy
(GEOM::GEOM_Object_ptr theObject,
GEOM::GEOM_Object_ptr theVector)
GEOM::GEOM_Object_var aGEOMObject;
//Set a not done flag
- GetOperations()->SetNotDone();
+ GetOperations()->SetNotDone();
if (theObject == NULL || theVector == NULL) return aGEOMObject._retn();
Handle(GEOM_Object) aVector =
GetOperations()->GetEngine()->GetObject(theVector->GetStudyID(), theVector->GetEntry());
if (aVector.IsNull()) return aGEOMObject._retn();
-
+
//Perform the translation
- Handle(GEOM_Object) anObject = GetOperations()->TranslateVectorCopy(aBasicObject, aVector);
+ Handle(GEOM_Object) anObject = GetOperations()->TranslateVectorCopy(aBasicObject, aVector);
if (!GetOperations()->IsDone() || anObject.IsNull())
return aGEOMObject._retn();
- return GetObject(anObject);
+ return GetObject(anObject);
}
/*!
* Rotate
*/
-//=============================================================================
+//=============================================================================
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::Rotate (GEOM::GEOM_Object_ptr theObject,
GEOM::GEOM_Object_ptr theAxis,
CORBA::Double theAngle)
{
//Set a not done flag
- GetOperations()->SetNotDone();
+ GetOperations()->SetNotDone();
GEOM::GEOM_Object_var aGEOMObject;
if (theObject == NULL || theAxis == NULL) return aGEOMObject._retn();
Handle(GEOM_Object) anAxis =
GetOperations()->GetEngine()->GetObject(theAxis->GetStudyID(), theAxis->GetEntry());
if (anAxis.IsNull()) return aGEOMObject._retn();
-
+
//Perform the rotation
- GetOperations()->Rotate(anObject, anAxis, theAngle);
+ GetOperations()->Rotate(anObject, anAxis, theAngle);
- return aGEOMObject._retn();
+ return aGEOMObject._retn();
}
//=============================================================================
/*!
* RotateCopy
*/
-//=============================================================================
+//=============================================================================
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::RotateCopy (GEOM::GEOM_Object_ptr theObject,
GEOM::GEOM_Object_ptr theAxis,
CORBA::Double theAngle)
GEOM::GEOM_Object_var aGEOMObject;
//Set a not done flag
- GetOperations()->SetNotDone();
+ GetOperations()->SetNotDone();
if (theObject == NULL || theAxis == NULL) return aGEOMObject._retn();
Handle(GEOM_Object) anAxis =
GetOperations()->GetEngine()->GetObject(theAxis->GetStudyID(), theAxis->GetEntry());
if (anAxis.IsNull()) return aGEOMObject._retn();
-
+
//Perform the rotation
- Handle(GEOM_Object) anObject = GetOperations()->RotateCopy(aBasicObject, anAxis, theAngle);
+ Handle(GEOM_Object) anObject = GetOperations()->RotateCopy(aBasicObject, anAxis, theAngle);
if (!GetOperations()->IsDone() || anObject.IsNull())
return aGEOMObject._retn();
- return GetObject(anObject);
+ return GetObject(anObject);
}
/*!
* MirrorPlane
*/
-//=============================================================================
+//=============================================================================
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPlane
(GEOM::GEOM_Object_ptr theObject,
GEOM::GEOM_Object_ptr thePlane)
GEOM::GEOM_Object_var aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject);
//Set a not done flag
- GetOperations()->SetNotDone();
+ GetOperations()->SetNotDone();
if (theObject == NULL || thePlane == NULL) return aGEOMObject._retn();
if (aPlane.IsNull()) return aGEOMObject._retn();
//Perform the mirror
- GetOperations()->MirrorPlane(anObject, aPlane);
+ GetOperations()->MirrorPlane(anObject, aPlane);
- return aGEOMObject._retn();
+ return aGEOMObject._retn();
}
-
+
//=============================================================================
/*!
* MirrorPlaneCopy
*/
-//=============================================================================
+//=============================================================================
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPlaneCopy
(GEOM::GEOM_Object_ptr theObject,
GEOM::GEOM_Object_ptr thePlane)
GEOM::GEOM_Object_var aGEOMObject;
//Set a not done flag
- GetOperations()->SetNotDone();
+ GetOperations()->SetNotDone();
if (theObject == NULL || thePlane == NULL) return aGEOMObject._retn();
Handle(GEOM_Object) aPlane =
GetOperations()->GetEngine()->GetObject(thePlane->GetStudyID(), thePlane->GetEntry());
if (aPlane.IsNull()) return aGEOMObject._retn();
-
+
//Perform the mirror
- Handle(GEOM_Object) anObject = GetOperations()->MirrorPlaneCopy(aBasicObject, aPlane);
+ Handle(GEOM_Object) anObject = GetOperations()->MirrorPlaneCopy(aBasicObject, aPlane);
if (!GetOperations()->IsDone() || anObject.IsNull())
return aGEOMObject._retn();
- return GetObject(anObject);
+ return GetObject(anObject);
}
//=============================================================================
/*!
* MirrorAxis
*/
-//=============================================================================
+//=============================================================================
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorAxis
(GEOM::GEOM_Object_ptr theObject,
GEOM::GEOM_Object_ptr theAxis)
GEOM::GEOM_Object_var aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject);
//Set a not done flag
- GetOperations()->SetNotDone();
+ GetOperations()->SetNotDone();
if (theObject == NULL || theAxis == NULL) return aGEOMObject._retn();
if (aAxis.IsNull()) return aGEOMObject._retn();
//Perform the mirror
- GetOperations()->MirrorAxis(anObject, aAxis);
+ GetOperations()->MirrorAxis(anObject, aAxis);
- return aGEOMObject._retn();
+ return aGEOMObject._retn();
}
-
+
//=============================================================================
/*!
* MirrorAxisCopy
*/
-//=============================================================================
+//=============================================================================
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorAxisCopy
(GEOM::GEOM_Object_ptr theObject,
GEOM::GEOM_Object_ptr theAxis)
GEOM::GEOM_Object_var aGEOMObject;
//Set a not done flag
- GetOperations()->SetNotDone();
+ GetOperations()->SetNotDone();
if (theObject == NULL || theAxis == NULL) return aGEOMObject._retn();
Handle(GEOM_Object) aAxis =
GetOperations()->GetEngine()->GetObject(theAxis->GetStudyID(), theAxis->GetEntry());
if (aAxis.IsNull()) return aGEOMObject._retn();
-
+
//Perform the mirror
- Handle(GEOM_Object) anObject = GetOperations()->MirrorAxisCopy(aBasicObject, aAxis);
+ Handle(GEOM_Object) anObject = GetOperations()->MirrorAxisCopy(aBasicObject, aAxis);
if (!GetOperations()->IsDone() || anObject.IsNull())
return aGEOMObject._retn();
- return GetObject(anObject);
+ return GetObject(anObject);
}
//=============================================================================
/*!
* MirrorPoint
*/
-//=============================================================================
+//=============================================================================
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPoint
(GEOM::GEOM_Object_ptr theObject,
GEOM::GEOM_Object_ptr thePoint)
GEOM::GEOM_Object_var aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject);
//Set a not done flag
- GetOperations()->SetNotDone();
+ GetOperations()->SetNotDone();
if (theObject == NULL || thePoint == NULL) return aGEOMObject._retn();
if (aPoint.IsNull()) return aGEOMObject._retn();
//Perform the mirror
- GetOperations()->MirrorPoint(anObject, aPoint);
+ GetOperations()->MirrorPoint(anObject, aPoint);
- return aGEOMObject._retn();
+ return aGEOMObject._retn();
}
-
+
//=============================================================================
/*!
* MirrorPointCopy
*/
-//=============================================================================
+//=============================================================================
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPointCopy
(GEOM::GEOM_Object_ptr theObject,
GEOM::GEOM_Object_ptr thePoint)
GEOM::GEOM_Object_var aGEOMObject;
//Set a not done flag
- GetOperations()->SetNotDone();
+ GetOperations()->SetNotDone();
if (theObject == NULL || thePoint == NULL) return aGEOMObject._retn();
Handle(GEOM_Object) aPoint =
GetOperations()->GetEngine()->GetObject(thePoint->GetStudyID(), thePoint->GetEntry());
if (aPoint.IsNull()) return aGEOMObject._retn();
-
+
//Perform the mirror
- Handle(GEOM_Object) anObject = GetOperations()->MirrorPointCopy(aBasicObject, aPoint);
+ Handle(GEOM_Object) anObject = GetOperations()->MirrorPointCopy(aBasicObject, aPoint);
if (!GetOperations()->IsDone() || anObject.IsNull())
return aGEOMObject._retn();
- return GetObject(anObject);
+ return GetObject(anObject);
}
/*!
* OffsetShape
*/
-//=============================================================================
+//=============================================================================
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::OffsetShape
(GEOM::GEOM_Object_ptr theObject,
CORBA::Double theOffset)
/*!
* OffsetShapeCopy
*/
-//=============================================================================
+//=============================================================================
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::OffsetShapeCopy
(GEOM::GEOM_Object_ptr theObject,
CORBA::Double theOffset)
/*!
* ScaleShape
*/
-//=============================================================================
+//=============================================================================
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::ScaleShape
(GEOM::GEOM_Object_ptr theObject,
GEOM::GEOM_Object_ptr thePoint,
/*!
* ScaleShapeCopy
*/
-//=============================================================================
+//=============================================================================
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::ScaleShapeCopy
(GEOM::GEOM_Object_ptr theObject,
GEOM::GEOM_Object_ptr thePoint,
/*!
* PositionShape
*/
-//=============================================================================
+//=============================================================================
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::PositionShape
(GEOM::GEOM_Object_ptr theObject,
GEOM::GEOM_Object_ptr theStartLCS,
//Set a not done flag
GetOperations()->SetNotDone();
- if (theObject == NULL || theStartLCS == NULL || theEndLCS == NULL)
+ if (theObject == NULL || theEndLCS == NULL)
return aGEOMObject._retn();
//check if the object is a subshape
GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry());
if (anObject.IsNull()) return aGEOMObject._retn();
- //Get the Start LCS
- Handle(GEOM_Object) aStartLCS =
- GetOperations()->GetEngine()->GetObject(theStartLCS->GetStudyID(), theStartLCS->GetEntry());
- if (aStartLCS.IsNull()) return aGEOMObject._retn();
+ //Get the Start LCS (may be NULL for positioning from global LCS)
+ Handle(GEOM_Object) aStartLCS = NULL;
+ if (theStartLCS != NULL && !CORBA::is_nil(theStartLCS)) {
+ aStartLCS = GetOperations()->GetEngine()->GetObject(theStartLCS->GetStudyID(), theStartLCS->GetEntry());
+ if (aStartLCS.IsNull()) return aGEOMObject._retn();
+ }
//Get the End LCS
Handle(GEOM_Object) aEndLCS =
/*!
* PositionShapeCopy
*/
-//=============================================================================
+//=============================================================================
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::PositionShapeCopy
(GEOM::GEOM_Object_ptr theObject,
GEOM::GEOM_Object_ptr theStartLCS,
//Set a not done flag
GetOperations()->SetNotDone();
- if (theObject == NULL || theStartLCS == NULL || theEndLCS == NULL)
+ if (theObject == NULL || theEndLCS == NULL)
return aGEOMObject._retn();
//Get the basic object
GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry());
if (aBasicObject.IsNull()) return aGEOMObject._retn();
- //Get the Start LCS
- Handle(GEOM_Object) aStartLCS =
- GetOperations()->GetEngine()->GetObject(theStartLCS->GetStudyID(), theStartLCS->GetEntry());
- if (aStartLCS.IsNull()) return aGEOMObject._retn();
+ //Get the Start LCS (may be NULL for positioning from global LCS)
+ Handle(GEOM_Object) aStartLCS = NULL;
+ if (theStartLCS != NULL && !CORBA::is_nil(theStartLCS)) {
+ aStartLCS = GetOperations()->GetEngine()->GetObject(theStartLCS->GetStudyID(), theStartLCS->GetEntry());
+ if (aStartLCS.IsNull()) return aGEOMObject._retn();
+ }
//Get the End LCS
Handle(GEOM_Object) aEndLCS =
/*!
* MultiTranslate1D
*/
-//=============================================================================
+//=============================================================================
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiTranslate1D
(GEOM::GEOM_Object_ptr theObject,
GEOM::GEOM_Object_ptr theVector,
CORBA::Double theStep, CORBA::Long theNbTimes)
{
//Set a not done flag
- GetOperations()->SetNotDone();
+ GetOperations()->SetNotDone();
GEOM::GEOM_Object_var aGEOMObject;
//Perform the translation
Handle(GEOM_Object) anObject =
- GetOperations()->Translate1D(aBasicObject, aVector, theStep, theNbTimes);
+ GetOperations()->Translate1D(aBasicObject, aVector, theStep, theNbTimes);
if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn();
- return GetObject(anObject);
+ return GetObject(anObject);
}
//=============================================================================
/*!
* MultiTranslate2D
*/
-//=============================================================================
-GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiTranslate2D (GEOM::GEOM_Object_ptr theObject,
- GEOM::GEOM_Object_ptr theVector1,
- CORBA::Double theStep1,
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiTranslate2D (GEOM::GEOM_Object_ptr theObject,
+ GEOM::GEOM_Object_ptr theVector1,
+ CORBA::Double theStep1,
CORBA::Long theNbTimes1,
- GEOM::GEOM_Object_ptr theVector2,
- CORBA::Double theStep2,
+ GEOM::GEOM_Object_ptr theVector2,
+ CORBA::Double theStep2,
CORBA::Long theNbTimes2)
{
//Set a not done flag
- GetOperations()->SetNotDone();
+ GetOperations()->SetNotDone();
GEOM::GEOM_Object_var aGEOMObject;
//Perform the translation
Handle(GEOM_Object) anObject = GetOperations()->Translate2D
- (aBasicObject, aVector1, theStep1, theNbTimes1, aVector2, theStep2, theNbTimes2);
+ (aBasicObject, aVector1, theStep1, theNbTimes1, aVector2, theStep2, theNbTimes2);
if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn();
- return GetObject(anObject);
+ return GetObject(anObject);
}
//=============================================================================
/*!
* MultiRotate1D
*/
-//=============================================================================
+//=============================================================================
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiRotate1D (GEOM::GEOM_Object_ptr theObject,
GEOM::GEOM_Object_ptr theVector,
CORBA::Long theNbTimes)
{
//Set a not done flag
- GetOperations()->SetNotDone();
+ GetOperations()->SetNotDone();
GEOM::GEOM_Object_var aGEOMObject;
if (aVector.IsNull()) return aGEOMObject._retn();
//Perform the rotation
- Handle(GEOM_Object) anObject = GetOperations()->Rotate1D(aBasicObject, aVector, theNbTimes);
+ Handle(GEOM_Object) anObject = GetOperations()->Rotate1D(aBasicObject, aVector, theNbTimes);
if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn();
- return GetObject(anObject);
+ return GetObject(anObject);
}
//=============================================================================
/*!
* MultiRotate2D
*/
-//=============================================================================
+//=============================================================================
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiRotate2D (GEOM::GEOM_Object_ptr theObject,
GEOM::GEOM_Object_ptr theVector,
- CORBA::Double theAngle,
- CORBA::Long theNbTimes1,
- CORBA::Double theStep,
+ CORBA::Double theAngle,
+ CORBA::Long theNbTimes1,
+ CORBA::Double theStep,
CORBA::Long theNbTimes2)
{
//Set a not done flag
- GetOperations()->SetNotDone();
+ GetOperations()->SetNotDone();
GEOM::GEOM_Object_var aGEOMObject;
//Perform the rotation
Handle(GEOM_Object) anObject = GetOperations()->Rotate2D
- (aBasicObject, aVector, theAngle, theNbTimes1, theStep, theNbTimes2);
+ (aBasicObject, aVector, theAngle, theNbTimes1, theStep, theNbTimes2);
if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn();
- return GetObject(anObject);
+ return GetObject(anObject);
}
GEOM_DumpPython.cc
# SALOME_Component.idl
-LIB_CLIENT_IDL = SALOMEDS.idl SALOMEDS_Attributes.idl SALOME_Component.idl SALOME_Exception.idl
+LIB_CLIENT_IDL = SALOMEDS.idl SALOMEDS_Attributes.idl SALOME_Component.idl SALOME_Exception.idl SALOME_GenericObj.idl
#SALOME_Exception.idl SALOME_GenericObj.idl
LIB_SERVER_IDL = GEOM_Gen.idl
if ( isNewStudy(myLastStudyID,myStudyID) ) {
if (CORBA::is_nil(myGeomEngine)) setGeomEngine();
- CORBA::String_var anEngine = _orb->object_to_string( myGeomEngine );
+ string anEngine = _orb->object_to_string( myGeomEngine );
CORBA::Object_var anObj = name_service->Resolve("/myStudyManager");
if ( !CORBA::is_nil(anObj) ) {
_PTR(SComponent) aSCO = aDSStudy->FindComponent(myGeomEngine->ComponentDataType());
if ( aSCO ) {
_PTR(StudyBuilder) aBuilder = aDSStudy->NewBuilder();
- if ( aBuilder ) aBuilder->LoadWith( aSCO, string( anEngine.in() ) );
+ if ( aBuilder ) aBuilder->LoadWith( aSCO, anEngine );
}
}
}
CORBA::Double theY,
CORBA::Double theZ)
{
+ beginService( " GEOM_Superv_i::MakePointXYZ" );
MESSAGE("GEOM_Superv_i::MakePointXYZ");
getBasicOp();
// make vertex and return
- return myBasicOp->MakePointXYZ(theX, theY, theZ);
+ GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointXYZ(theX, theY, theZ);
+ endService( " GEOM_Superv_i::MakePointXYZ" );
+ return anObj;
}
//=============================================================================
CORBA::Double theY,
CORBA::Double theZ)
{
+ beginService( " GEOM_Superv_i::MakePointWithReference" );
MESSAGE("GEOM_Superv_i::MakePointWithReference");
getBasicOp();
- return myBasicOp->MakePointWithReference(theReference, theX, theY, theZ);
+ GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointWithReference(theReference, theX, theY, theZ);
+ endService( " GEOM_Superv_i::MakePointWithReference" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnCurve (GEOM::GEOM_Object_ptr theRefCurve,
CORBA::Double theParameter)
{
+ beginService( " GEOM_Superv_i::MakePointOnCurve" );
MESSAGE("GEOM_Superv_i::MakePointOnCurve");
getBasicOp();
- return myBasicOp->MakePointOnCurve(theRefCurve, theParameter);
+ GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointOnCurve(theRefCurve, theParameter);
+ endService( " GEOM_Superv_i::MakePointOnCurve" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTangentOnCurve (GEOM::GEOM_Object_ptr theRefCurve,
CORBA::Double theParameter)
{
+ beginService( " GEOM_Superv_i::MakeTangentOnCurve" );
MESSAGE("GEOM_Superv_i::MakeTangentOnCurve");
getBasicOp();
- return myBasicOp->MakeTangentOnCurve(theRefCurve, theParameter);
+ GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeTangentOnCurve(theRefCurve, theParameter);
+ endService( " GEOM_Superv_i::MakeTangentOnCurve" );
+ return anObj;
}
//=============================================================================
CORBA::Double theDY,
CORBA::Double theDZ)
{
+ beginService( " GEOM_Superv_i::MakeVectorDXDYDZ" );
MESSAGE("GEOM_Superv_i::MakeVectorDXDYDZ");
getBasicOp();
- return myBasicOp->MakeVectorDXDYDZ(theDX, theDY, theDZ);
+ GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeVectorDXDYDZ(theDX, theDY, theDZ);
+ endService( " GEOM_Superv_i::MakeVectorDXDYDZ" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeVectorTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
GEOM::GEOM_Object_ptr thePnt2)
{
+ beginService( " GEOM_Superv_i::MakeVectorTwoPnt" );
MESSAGE("GEOM_Superv_i::MakeVector");
getBasicOp();
- return myBasicOp->MakeVectorTwoPnt(thePnt1, thePnt2);
+ GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeVectorTwoPnt(thePnt1, thePnt2);
+ endService( " GEOM_Superv_i::MakeVectorTwoPnt" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeLineTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
GEOM::GEOM_Object_ptr thePnt2)
{
+ beginService( " GEOM_Superv_i::MakeLineTwoPnt");
MESSAGE("GEOM_Superv_i::MakeLineTwoPnt");
getBasicOp();
- return myBasicOp->MakeLineTwoPnt(thePnt1, thePnt2);
+ GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeLineTwoPnt(thePnt1, thePnt2);
+ endService( " GEOM_Superv_i::MakeLineTwoPnt");
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr thePnt3,
CORBA::Double theTrimSize)
{
+ beginService( " GEOM_Superv_i::MakePlaneThreePnt");
MESSAGE("GEOM_Superv_i::MakePlaneThreePnt");
getBasicOp();
- return myBasicOp->MakePlaneThreePnt(thePnt1, thePnt2, thePnt3, theTrimSize);
+ GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlaneThreePnt(thePnt1, thePnt2, thePnt3, theTrimSize);
+ endService( " GEOM_Superv_i::MakePlaneThreePnt");
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlanePntVec (GEOM::GEOM_Object_ptr thePnt,
GEOM::GEOM_Object_ptr theVec,
CORBA::Double theTrimSize)
-{
+{
+ beginService( " GEOM_Superv_i::MakePlanePntVec" );
MESSAGE("GEOM_Superv_i::MakePlanePntVec");
getBasicOp();
- return myBasicOp->MakePlanePntVec(thePnt, theVec, theTrimSize);
+ GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlanePntVec(thePnt, theVec, theTrimSize);
+ endService( " GEOM_Superv_i::MakePlanePntVec" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlaneFace (GEOM::GEOM_Object_ptr theFace,
CORBA::Double theTrimSize)
{
+ beginService( " GEOM_Superv_i::MakePlaneFace" );
MESSAGE("GEOM_Superv_i::MakePlaneFace");
getBasicOp();
- return myBasicOp->MakePlaneFace(theFace, theTrimSize);
+ GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlaneFace(theFace, theTrimSize);
+ endService( " GEOM_Superv_i::MakePlaneFace" );
+ return anObj;
}
//=============================================================================
CORBA::Double theXDX, CORBA::Double theXDY, CORBA::Double theXDZ,
CORBA::Double theYDX, CORBA::Double theYDY, CORBA::Double theYDZ)
{
+ beginService( " GEOM_Superv_i::MakeMarker" );
MESSAGE("GEOM_Superv_i::MakeMarker");
getBasicOp();
- return myBasicOp->MakeMarker(theOX, theOY, theOZ, theXDX, theXDY, theXDZ, theYDX, theYDY, theYDZ);
+ GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeMarker(theOX, theOY, theOZ, theXDX, theXDY, theXDZ, theYDX, theYDY, theYDZ);
+ endService( " GEOM_Superv_i::MakeMarker" );
+ return anObj;
}
//=============================================================================
CORBA::Double theParameterV,
CORBA::Double theTrimSize)
{
+ beginService( " GEOM_Superv_i::MakeTangentPlaneOnFace" );
MESSAGE("GEOM_Superv_i::MakeTangentPlaneOnFace");
getBasicOp();
- return myBasicOp->MakeTangentPlaneOnFace(theFace, theParameterU,theParameterV,theTrimSize);
+ GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeTangentPlaneOnFace(theFace, theParameterU,theParameterV,theTrimSize);
+ endService( " GEOM_Superv_i::MakeTangentPlaneOnFace" );
+ return anObj;
}
//================= Primitives Construction : 3DPrimOperations ================
CORBA::Double theY2,
CORBA::Double theZ2)
{
+ beginService( " GEOM_Superv_i::MakeBox" );
MESSAGE("GEOM_Superv_i::MakeBox");
getBasicOp();
get3DPrimOp();
- return my3DPrimOp->MakeBoxTwoPnt(myBasicOp->MakePointXYZ(theX1, theY1, theZ1),
- myBasicOp->MakePointXYZ(theX2, theY2, theZ2));
+ GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeBoxTwoPnt(myBasicOp->MakePointXYZ(theX1, theY1, theZ1),
+ myBasicOp->MakePointXYZ(theX2, theY2, theZ2));
+ endService( " GEOM_Superv_i::MakeBox" );
+ return anObj;
}
//=============================================================================
CORBA::Double theDY,
CORBA::Double theDZ)
{
+ beginService( " GEOM_Superv_i::MakeBoxDXDYDZ" );
MESSAGE("GEOM_Superv_i::MakeBoxDXDYDZ");
get3DPrimOp();
- return my3DPrimOp->MakeBoxDXDYDZ(theDX, theDY, theDZ);
+ GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeBoxDXDYDZ(theDX, theDY, theDZ);
+ endService( " GEOM_Superv_i::MakeBoxDXDYDZ" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoxTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
GEOM::GEOM_Object_ptr thePnt2)
{
+ beginService( " GEOM_Superv_i::MakeBoxTwoPnt" );
MESSAGE("GEOM_Superv_i::MakeBoxTwoPnt");
get3DPrimOp();
- return my3DPrimOp->MakeBoxTwoPnt(thePnt1, thePnt2);
+ GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeBoxTwoPnt(thePnt1, thePnt2);
+ endService( " GEOM_Superv_i::MakeBoxTwoPnt" );
+ return anObj;
}
//=============================================================================
CORBA::Double theRadius,
CORBA::Double theHeight)
{
+ beginService( " GEOM_Superv_i::MakeCylinderPntVecRH" );
MESSAGE("GEOM_Superv_i::MakeCylinderPntVecRH");
get3DPrimOp();
- return my3DPrimOp->MakeCylinderPntVecRH(thePnt, theAxis, theRadius, theHeight);
+ GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderPntVecRH(thePnt, theAxis, theRadius, theHeight);
+ endService( " GEOM_Superv_i::MakeCylinderPntVecRH" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderRH (CORBA::Double theR,
CORBA::Double theH)
{
+ beginService( " GEOM_Superv_i::MakeCylinderRH" );
MESSAGE("GEOM_Superv_i::MakeCylinderRH");
get3DPrimOp();
- return my3DPrimOp->MakeCylinderRH(theR, theH);
+ GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderRH(theR, theH);
+ endService( " GEOM_Superv_i::MakeCylinderRH" );
+ return anObj;
}
//=============================================================================
CORBA::Double theZ,
CORBA::Double theRadius)
{
+ beginService( " GEOM_Superv_i::MakeSphepe" );
MESSAGE("GEOM_Superv_i::MakeSphepe");
getBasicOp();
get3DPrimOp();
- return my3DPrimOp->MakeSpherePntR(myBasicOp->MakePointXYZ(theX, theY, theZ), theRadius);
+ GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeSpherePntR(myBasicOp->MakePointXYZ(theX, theY, theZ), theRadius);
+ endService( " GEOM_Superv_i::MakeSphepe" );
+ return anObj;
}
//=============================================================================
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSphereR (CORBA::Double theR)
{
+ beginService( " GEOM_Superv_i::MakeSphereR" );
MESSAGE("GEOM_Superv_i::MakeSphereR");
get3DPrimOp();
- return my3DPrimOp->MakeSphereR(theR);
+ GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeSphereR(theR);
+ endService( " GEOM_Superv_i::MakeSphereR" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSpherePntR (GEOM::GEOM_Object_ptr thePnt,
CORBA::Double theR)
{
+ beginService( " GEOM_Superv_i::MakeSpherePntR" );
MESSAGE("GEOM_Superv_i::MakeSpherePntR");
get3DPrimOp();
- return my3DPrimOp->MakeSpherePntR(thePnt, theR);
+ GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeSpherePntR(thePnt, theR);
+ endService( " GEOM_Superv_i::MakeSpherePntR" );
+ return anObj;
}
//=============================================================================
CORBA::Double theRMajor,
CORBA::Double theRMinor)
{
+ beginService( " GEOM_Superv_i::MakeTorusPntVecRR" );
MESSAGE("GEOM_Superv_i::MakeTorusPntVecRR");
get3DPrimOp();
- return my3DPrimOp->MakeTorusPntVecRR(thePnt, theVec, theRMajor, theRMinor);
+ GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeTorusPntVecRR(thePnt, theVec, theRMajor, theRMinor);
+ endService( " GEOM_Superv_i::MakeTorusPntVecRR" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTorusRR (CORBA::Double theRMajor,
CORBA::Double theRMinor)
{
+ beginService( " GEOM_Superv_i::MakeTorusRR" );
MESSAGE("GEOM_Superv_i::MakeTorusRR");
get3DPrimOp();
- return my3DPrimOp->MakeTorusRR(theRMajor, theRMinor);
+ GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeTorusRR(theRMajor, theRMinor);
+ endService( " GEOM_Superv_i::MakeTorusRR" );
+ return anObj;
}
//=============================================================================
CORBA::Double theR2,
CORBA::Double theHeight)
{
+ beginService( " GEOM_Superv_i::MakeConePntVecR1R2H" );
MESSAGE("GEOM_Superv_i::MakeConePntVecR1R2H");
get3DPrimOp();
- return my3DPrimOp->MakeConePntVecR1R2H(thePnt, theAxis, theR1, theR2, theHeight);
+ GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeConePntVecR1R2H(thePnt, theAxis, theR1, theR2, theHeight);
+ endService( " GEOM_Superv_i::MakeConePntVecR1R2H" );
+ return anObj;
}
//=============================================================================
CORBA::Double theR2,
CORBA::Double theHeight)
{
+ beginService( " GEOM_Superv_i::MakeConeR1R2H" );
MESSAGE("GEOM_Superv_i::MakeConeR1R2H");
get3DPrimOp();
- return my3DPrimOp->MakeConeR1R2H(theR1, theR2, theHeight);
+ GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeConeR1R2H(theR1, theR2, theHeight);
+ endService( " GEOM_Superv_i::MakeConeR1R2H" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr theVec,
CORBA::Double theH)
{
+ beginService( " GEOM_Superv_i::MakePrismVecH" );
MESSAGE("GEOM_Superv_i::MakePrismVecH");
get3DPrimOp();
- return my3DPrimOp->MakePrismVecH(theBase, theVec, theH);
+ GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismVecH(theBase, theVec, theH);
+ endService( " GEOM_Superv_i::MakePrismVecH" );
+ return anObj;
}
GEOM::GEOM_Object_ptr thePoint1,
GEOM::GEOM_Object_ptr thePoint2)
{
+ beginService( " GEOM_Superv_i::MakePrismTwoPnt" );
MESSAGE("GEOM_Superv_i::MakePrismTwoPnt");
get3DPrimOp();
- return my3DPrimOp->MakePrismTwoPnt(theBase, thePoint1, thePoint2);
+ GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismTwoPnt(theBase, thePoint1, thePoint2);
+ endService( " GEOM_Superv_i::MakePrismTwoPnt" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipe (GEOM::GEOM_Object_ptr theBase,
GEOM::GEOM_Object_ptr thePath)
{
+ beginService( " GEOM_Superv_i::MakePipe" );
MESSAGE("GEOM_Superv_i::MakePipe");
get3DPrimOp();
- return my3DPrimOp->MakePipe(theBase, thePath);
+ GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePipe(theBase, thePath);
+ endService( " GEOM_Superv_i::MakePipe" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr theAxis,
CORBA::Double theAngle)
{
+ beginService( " GEOM_Superv_i::MakeRevolutionAxisAngle" );
MESSAGE("GEOM_Superv_i::MakeRevolutionAxisAngle");
get3DPrimOp();
- return my3DPrimOp->MakeRevolutionAxisAngle(theBase, theAxis, theAngle);
+ GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeRevolutionAxisAngle(theBase, theAxis, theAngle);
+ endService( " GEOM_Superv_i::MakeRevolutionAxisAngle" );
+ return anObj;
}
//=============================================================================
CORBA::Double theTol2D, CORBA::Double theTol3D,
CORBA::Long theNbIter)
{
+ beginService( " GEOM_Superv_i::MakeFilling" );
MESSAGE("GEOM_Superv_i::MakeFilling");
get3DPrimOp();
- return my3DPrimOp->MakeFilling(theShape, theMinDeg, theMaxDeg, theTol2D, theTol3D, theNbIter);
+ GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeFilling(theShape, theMinDeg, theMaxDeg, theTol2D, theTol3D, theNbIter);
+ endService( " GEOM_Superv_i::MakeFilling" );
+ return anObj;
}
//============================= BooleanOperations =============================
GEOM::GEOM_Object_ptr theShape2,
CORBA::Long theOperation)
{
+ beginService( " GEOM_Superv_i::MakeBoolean" );
// theOperation indicates the operation to be done:
// 1 - Common, 2 - Cut, 3 - Fuse, 4 - Section
MESSAGE("GEOM_Superv_i::MakeBoolean");
getBoolOp();
- return myBoolOp->MakeBoolean(theShape1, theShape2, theOperation);
+ GEOM::GEOM_Object_ptr anObj = myBoolOp->MakeBoolean(theShape1, theShape2, theOperation);
+ endService( " GEOM_Superv_i::MakeBoolean" );
+ return anObj;
}
//=============================================================================
CORBA::Double thePreci,
CORBA::Boolean theRuled)
{
+ beginService( " GEOM_Superv_i::MakeThruSections" );
MESSAGE("GEOM_Superv_i::MakeThruSections");
get3DPrimOp();
- return my3DPrimOp->MakeThruSections(theSeqSections, theModeSolid,thePreci,theRuled);
+ GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeThruSections(theSeqSections, theModeSolid,thePreci,theRuled);
+ endService( " GEOM_Superv_i::MakeThruSections" );
+ return anObj;
}
//=============================================================================
CORBA::Boolean theWithContact,
CORBA::Boolean theWithCorrections)
{
+ beginService( " GEOM_Superv_i::MakePipeWithDifferentSections" );
MESSAGE("GEOM_Superv_i::MakePipeWithDifferentSections");
get3DPrimOp();
- return my3DPrimOp->MakePipeWithDifferentSections(theBases,theLocations, thePath,theWithContact,theWithCorrections);
+ GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePipeWithDifferentSections(theBases,theLocations, thePath,theWithContact,theWithCorrections);
+ endService( " GEOM_Superv_i::MakePipeWithDifferentSections" );
+ return anObj;
}
//=============================================================================
// MakeFuse:
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFuse (GEOM::GEOM_Object_ptr theShape1,
GEOM::GEOM_Object_ptr theShape2)
{
+ beginService( " GEOM_Superv_i::MakeFuse" );
MESSAGE("GEOM_Superv_i::MakeFuse");
getBoolOp();
- return myBoolOp->MakeBoolean(theShape1, theShape2, 3);
+ GEOM::GEOM_Object_ptr anObj = myBoolOp->MakeBoolean(theShape1, theShape2, 3);
+ endService( " GEOM_Superv_i::MakeFuse" );
+ return anObj;
}
//=============================================================================
CORBA::Boolean theRemoveWebs,
GEOM::GEOM_List_ptr theMaterials)
{
+ beginService( " GEOM_Superv_i::MakePartition" );
MESSAGE("GEOM_Superv_i::MakePartition");
GEOM_List_i<GEOM::ListOfGO>* aListImplS =
dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShapes, myPOA).in());
dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theMaterials, myPOA).in());
if (aListImplS && aListImplT && aListImplKI && aListImplRI && aListImplM) {
getBoolOp();
- return myBoolOp->MakePartition(aListImplS->GetList(), aListImplT->GetList(),
- aListImplKI->GetList(), aListImplRI->GetList(),
- theLimit, theRemoveWebs, aListImplM->GetList());
+ GEOM::GEOM_Object_ptr anObj = myBoolOp->MakePartition(aListImplS->GetList(), aListImplT->GetList(),
+ aListImplKI->GetList(), aListImplRI->GetList(),
+ theLimit, theRemoveWebs, aListImplM->GetList());
+ endService( " GEOM_Superv_i::MakePartition" );
+ return anObj;
}
+ endService( " GEOM_Superv_i::MakePartition" );
return NULL;
}
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHalfPartition (GEOM::GEOM_Object_ptr theShape,
GEOM::GEOM_Object_ptr thePlane)
{
+ beginService( " GEOM_Superv_i::MakeHalfPartition" );
MESSAGE("GEOM_Superv_i::MakeHalfPartition");
getBoolOp();
- return myBoolOp->MakeHalfPartition(theShape, thePlane);
+ GEOM::GEOM_Object_ptr anObj = myBoolOp->MakeHalfPartition(theShape, thePlane);
+ endService( " GEOM_Superv_i::MakeHalfPartition" );
+ return anObj;
}
//============================== InsertOperations =============================
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCopy (GEOM::GEOM_Object_ptr theOriginal)
{
+ beginService( " GEOM_Superv_i::MakeCopy" );
MESSAGE("GEOM_Superv_i::MakeCopy");
getInsOp();
- return myInsOp->MakeCopy(theOriginal);
+ GEOM::GEOM_Object_ptr anObj = myInsOp->MakeCopy(theOriginal);
+ endService( " GEOM_Superv_i::MakeCopy" );
+ return anObj;
}
//=============================================================================
const char* theFileName,
const char* theFormatName)
{
+ beginService( " GEOM_Superv_i::Export" );
MESSAGE("GEOM_Superv_i::Export");
getInsOp();
myInsOp->Export(theObject, theFileName, theFormatName);
+ endService( " GEOM_Superv_i::Export" );
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::Import (const char* theFileName,
const char* theFormatName)
{
+ beginService( " GEOM_Superv_i::Import" );
MESSAGE("GEOM_Superv_i::Import");
getInsOp();
- return myInsOp->Import(theFileName, theFormatName);
+ GEOM::GEOM_Object_ptr anObj = myInsOp->Import(theFileName, theFormatName);
+ endService( " GEOM_Superv_i::Import" );
+ return anObj;
}
//=============================================================================
void GEOM_Superv_i::ImportTranslators (GEOM::string_array_out theFormats,
GEOM::string_array_out thePatterns)
{
+ beginService( " GEOM_Superv_i::ImportTranslators" );
MESSAGE("GEOM_Superv_i::ImportTranslators");
getInsOp();
myInsOp->ImportTranslators(theFormats, thePatterns);
+ endService( " GEOM_Superv_i::ImportTranslators" );
}
//=============================================================================
void GEOM_Superv_i::ExportTranslators (GEOM::string_array_out theFormats,
GEOM::string_array_out thePatterns)
{
+ beginService( " GEOM_Superv_i::ExportTranslators" );
MESSAGE("GEOM_Superv_i::ExportTranslators");
getInsOp();
myInsOp->ExportTranslators(theFormats, thePatterns);
+ endService( " GEOM_Superv_i::ExportTranslators" );
}
//============================= TransformOperations ===========================
GEOM::GEOM_Object_ptr thePoint1,
GEOM::GEOM_Object_ptr thePoint2)
{
+ beginService( " GEOM_Superv_i::TranslateTwoPoints" );
MESSAGE("GEOM_Superv_i::TranslateTwoPoints");
getTransfOp();
- return myTransfOp->TranslateTwoPoints(theObject, thePoint1, thePoint2);
+ GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateTwoPoints(theObject, thePoint1, thePoint2);
+ endService( " GEOM_Superv_i::TranslateTwoPoints" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr thePoint1,
GEOM::GEOM_Object_ptr thePoint2)
{
+ beginService( " GEOM_Superv_i::TranslateTwoPointsCopy" );
MESSAGE("GEOM_Superv_i::TranslateTwoPointsCopy");
getTransfOp();
- return myTransfOp->TranslateTwoPointsCopy(theObject, thePoint1, thePoint2);
+ GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateTwoPointsCopy(theObject, thePoint1, thePoint2);
+ endService( " GEOM_Superv_i::TranslateTwoPointsCopy" );
+ return anObj;
}
//=============================================================================
CORBA::Double theDY,
CORBA::Double theDZ)
{
+ beginService( " GEOM_Superv_i::TranslateDXDYDZ" );
MESSAGE("GEOM_Superv_i::TranslateDXDYDZ");
getTransfOp();
- return myTransfOp->TranslateDXDYDZ(theObject, theDX, theDY, theDZ);
+ GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateDXDYDZ(theObject, theDX, theDY, theDZ);
+ endService( " GEOM_Superv_i::TranslateDXDYDZ" );
+ return anObj;
}
//=============================================================================
CORBA::Double theDY,
CORBA::Double theDZ)
{
+ beginService( " GEOM_Superv_i::TranslateDXDYDZCopy" );
MESSAGE("GEOM_Superv_i::TranslateDXDYDZCopy");
getTransfOp();
- return myTransfOp->TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ);
+ GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ);
+ endService( " GEOM_Superv_i::TranslateDXDYDZCopy" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVector (GEOM::GEOM_Object_ptr theObject,
GEOM::GEOM_Object_ptr theVector)
{
+ beginService( " GEOM_Superv_i::TranslateVector" );
MESSAGE("GEOM_Superv_i::TranslateVector");
getTransfOp();
- return myTransfOp->TranslateVector(theObject, theVector);
+ GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVector(theObject, theVector);
+ endService( " GEOM_Superv_i::TranslateVector" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVectorCopy (GEOM::GEOM_Object_ptr theObject,
GEOM::GEOM_Object_ptr theVector)
{
+ beginService( " GEOM_Superv_i::TranslateVectorCopy" );
MESSAGE("GEOM_Superv_i::TranslateVectorCopy");
getTransfOp();
- return myTransfOp->TranslateVectorCopy(theObject, theVector);
+ GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVectorCopy(theObject, theVector);
+ endService( " GEOM_Superv_i::TranslateVectorCopy" );
+ return anObj;
}
//=============================================================================
CORBA::Double theStep,
CORBA::Long theNbTimes)
{
+ beginService( " GEOM_Superv_i::MultiTranslate1D" );
MESSAGE("GEOM_Superv_i::MultiTranslate1D");
getTransfOp();
- return myTransfOp->MultiTranslate1D(theObject, theVector, theStep, theNbTimes);
+ GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiTranslate1D(theObject, theVector, theStep, theNbTimes);
+ endService( " GEOM_Superv_i::MultiTranslate1D" );
+ return anObj;
}
//=============================================================================
CORBA::Double theStep2,
CORBA::Long theNbTimes2)
{
+ beginService( " GEOM_Superv_i::MultiTranslate2D" );
MESSAGE("GEOM_Superv_i::MultiTranslate2D");
getTransfOp();
- return myTransfOp->MultiTranslate2D(theObject, theVector1, theStep1, theNbTimes1,
- theVector2, theStep2, theNbTimes2);
+ GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiTranslate2D(theObject, theVector1, theStep1, theNbTimes1,
+ theVector2, theStep2, theNbTimes2);
+ endService( " GEOM_Superv_i::MultiTranslate2D" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr theAxis,
CORBA::Double theAngle)
{
+ beginService( " GEOM_Superv_i::Rotate" );
MESSAGE("GEOM_Superv_i::Rotate");
getTransfOp();
- return myTransfOp->Rotate(theObject, theAxis, theAngle);
+ GEOM::GEOM_Object_ptr anObj = myTransfOp->Rotate(theObject, theAxis, theAngle);
+ endService( " GEOM_Superv_i::Rotate" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr theAxis,
CORBA::Double theAngle)
{
+ beginService( " GEOM_Superv_i::RotateCopy" );
MESSAGE("GEOM_Superv_i::RotateCopy");
getTransfOp();
- return myTransfOp->RotateCopy(theObject, theAxis, theAngle);
+ GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateCopy(theObject, theAxis, theAngle);
+ endService( " GEOM_Superv_i::RotateCopy" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr theAxis,
CORBA::Long theNbTimes)
{
+ beginService( " GEOM_Superv_i::MultiRotate1D" );
MESSAGE("GEOM_Superv_i::MultiRotate1D");
getTransfOp();
- return myTransfOp->MultiRotate1D(theObject, theAxis, theNbTimes);
+ GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiRotate1D(theObject, theAxis, theNbTimes);
+ endService( " GEOM_Superv_i::MultiRotate1D" );
+ return anObj;
}
//=============================================================================
CORBA::Double theStep,
CORBA::Long theNbTimes2)
{
+ beginService( " GEOM_Superv_i::MultiRotate2D" );
MESSAGE("GEOM_Superv_i::MultiRotate2D");
getTransfOp();
- return myTransfOp->MultiRotate2D(theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2);
+ GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiRotate2D(theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2);
+ endService( " GEOM_Superv_i::MultiRotate2D" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPlane (GEOM::GEOM_Object_ptr theObject,
GEOM::GEOM_Object_ptr thePlane)
{
+ beginService( " GEOM_Superv_i::MirrorPlane" );
MESSAGE("GEOM_Superv_i::MirrorPlane");
getTransfOp();
- return myTransfOp->MirrorPlane(theObject, thePlane);
+ GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPlane(theObject, thePlane);
+ endService( " GEOM_Superv_i::MirrorPlane" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPlaneCopy (GEOM::GEOM_Object_ptr theObject,
GEOM::GEOM_Object_ptr thePlane)
{
+ beginService( " GEOM_Superv_i::MirrorPlaneCopy" );
MESSAGE("GEOM_Superv_i::MirrorPlaneCopy");
getTransfOp();
- return myTransfOp->MirrorPlaneCopy(theObject, thePlane);
+ GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPlaneCopy(theObject, thePlane);
+ endService( " GEOM_Superv_i::MirrorPlaneCopy" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorAxis (GEOM::GEOM_Object_ptr theObject,
GEOM::GEOM_Object_ptr theAxis)
{
+ beginService( " GEOM_Superv_i::MirrorAxis" );
MESSAGE("GEOM_Superv_i::MirrorAxis");
getTransfOp();
- return myTransfOp->MirrorAxis(theObject, theAxis);
+ GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorAxis(theObject, theAxis);
+ endService( " GEOM_Superv_i::MirrorAxis" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorAxisCopy (GEOM::GEOM_Object_ptr theObject,
GEOM::GEOM_Object_ptr theAxis)
{
+ beginService( " GEOM_Superv_i::MirrorAxisCopy" );
MESSAGE("GEOM_Superv_i::MirrorAxisCopy");
getTransfOp();
- return myTransfOp->MirrorAxisCopy(theObject, theAxis);
+ GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorAxisCopy(theObject, theAxis);
+ endService( " GEOM_Superv_i::MirrorAxisCopy" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPoint (GEOM::GEOM_Object_ptr theObject,
GEOM::GEOM_Object_ptr thePoint)
{
+ beginService( " GEOM_Superv_i::MirrorPoint" );
MESSAGE("GEOM_Superv_i::MirrorPoint");
getTransfOp();
- return myTransfOp->MirrorPoint(theObject, thePoint);
+ GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPoint(theObject, thePoint);
+ endService( " GEOM_Superv_i::MirrorPoint" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPointCopy (GEOM::GEOM_Object_ptr theObject,
GEOM::GEOM_Object_ptr thePoint)
{
+ beginService( " GEOM_Superv_i::MirrorPoint" );
MESSAGE("GEOM_Superv_i::MirrorPointCopy");
getTransfOp();
- return myTransfOp->MirrorPointCopy(theObject, thePoint);
+ GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPointCopy(theObject, thePoint);
+ endService( " GEOM_Superv_i::MirrorPoint" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::OffsetShape (GEOM::GEOM_Object_ptr theObject,
CORBA::Double theOffset)
{
+ beginService( " GEOM_Superv_i::OffsetShape" );
MESSAGE("GEOM_Superv_i::OffsetShape");
getTransfOp();
- return myTransfOp->OffsetShape(theObject, theOffset);
+ GEOM::GEOM_Object_ptr anObj = myTransfOp->OffsetShape(theObject, theOffset);
+ endService( " GEOM_Superv_i::OffsetShape" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::OffsetShapeCopy (GEOM::GEOM_Object_ptr theObject,
CORBA::Double theOffset)
{
+ beginService( " GEOM_Superv_i::OffsetShapeCopy" );
MESSAGE("GEOM_Superv_i::OffsetShapeCopy");
getTransfOp();
- return myTransfOp->OffsetShapeCopy(theObject, theOffset);
+ GEOM::GEOM_Object_ptr anObj = myTransfOp->OffsetShapeCopy(theObject, theOffset);
+ endService( " GEOM_Superv_i::OffsetShapeCopy" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr thePoint,
CORBA::Double theFactor)
{
+ beginService( " GEOM_Superv_i::ScaleShape" );
MESSAGE("GEOM_Superv_i::ScaleShape");
getTransfOp();
- return myTransfOp->ScaleShape(theObject, thePoint, theFactor);
+ GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShape(theObject, thePoint, theFactor);
+ endService( " GEOM_Superv_i::ScaleShape" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr thePoint,
CORBA::Double theFactor)
{
+ beginService( " GEOM_Superv_i::ScaleShapeCopy" );
MESSAGE("GEOM_Superv_i::ScaleShapeCopy");
getTransfOp();
- return myTransfOp->ScaleShapeCopy(theObject, thePoint, theFactor);
+ GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeCopy(theObject, thePoint, theFactor);
+ endService( " GEOM_Superv_i::ScaleShapeCopy" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr theStartLCS,
GEOM::GEOM_Object_ptr theEndLCS)
{
+ beginService( " GEOM_Superv_i::PositionShape" );
MESSAGE("GEOM_Superv_i::PositionShape");
getTransfOp();
- return myTransfOp->PositionShape(theObject, theStartLCS, theEndLCS);
+ GEOM::GEOM_Object_ptr anObj = myTransfOp->PositionShape(theObject, theStartLCS, theEndLCS);
+ endService( " GEOM_Superv_i::PositionShape" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr theStartLCS,
GEOM::GEOM_Object_ptr theEndLCS)
{
+ beginService( " GEOM_Superv_i::PositionShapeCopy" );
MESSAGE("GEOM_Superv_i::PositionShapeCopy");
getTransfOp();
- return myTransfOp->PositionShapeCopy(theObject, theStartLCS, theEndLCS);
+ GEOM::GEOM_Object_ptr anObj = myTransfOp->PositionShapeCopy(theObject, theStartLCS, theEndLCS);
+ endService( " GEOM_Superv_i::PositionShapeCopy" );
+ return anObj;
}
//=============================== ShapesOperations ============================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEdge (GEOM::GEOM_Object_ptr thePnt1,
GEOM::GEOM_Object_ptr thePnt2)
{
+ beginService( " GEOM_Superv_i::MakeEdge" );
MESSAGE("GEOM_Superv_i::MakeEdge");
getShapesOp();
- return myShapesOp->MakeEdge(thePnt1, thePnt2);
+ GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeEdge(thePnt1, thePnt2);
+ endService( " GEOM_Superv_i::MakeEdge" );
+ return anObj;
}
//=============================================================================
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeWire (GEOM::GEOM_List_ptr theEdgesAndWires)
{
+ beginService( " GEOM_Superv_i::MakeWire" );
MESSAGE("GEOM_Superv_i::MakeWire");
if (GEOM_List_i<GEOM::ListOfGO>* aListImplEW =
dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theEdgesAndWires, myPOA).in())) {
getShapesOp();
- return myShapesOp->MakeWire(aListImplEW->GetList());
+ GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeWire(aListImplEW->GetList());
+ endService( " GEOM_Superv_i::MakeWire" );
+ return anObj;
}
+ endService( " GEOM_Superv_i::MakeWire" );
return NULL;
}
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFace (GEOM::GEOM_Object_ptr theWire,
CORBA::Boolean isPlanarWanted)
{
+ beginService( " GEOM_Superv_i::MakeFace" );
MESSAGE("GEOM_Superv_i::MakeFace");
getShapesOp();
- return myShapesOp->MakeFace(theWire, isPlanarWanted);
+ GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeFace(theWire, isPlanarWanted);
+ endService( " GEOM_Superv_i::MakeFace" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceWires (GEOM::GEOM_List_ptr theWires,
CORBA::Boolean isPlanarWanted)
{
+ beginService( " GEOM_Superv_i::MakeFaceWires" );
MESSAGE("GEOM_Superv_i::MakeFaceWires");
if (GEOM_List_i<GEOM::ListOfGO>* aListImplW =
dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theWires, myPOA).in())) {
getShapesOp();
- return myShapesOp->MakeFaceWires(aListImplW->GetList(), isPlanarWanted);
+ GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeFaceWires(aListImplW->GetList(), isPlanarWanted);
+ endService( " GEOM_Superv_i::MakeFaceWires" );
+ return anObj;
}
+ endService( " GEOM_Superv_i::MakeFaceWires" );
return NULL;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeShell (GEOM::GEOM_List_ptr theFacesAndShells)
{
+ beginService( " GEOM_Superv_i::MakeShell" );
MESSAGE("GEOM_Superv_i::MakeShell");
if (GEOM_List_i<GEOM::ListOfGO>* aListImplFS =
dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theFacesAndShells, myPOA).in())) {
getShapesOp();
- return myShapesOp->MakeShell(aListImplFS->GetList());
+ GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeShell(aListImplFS->GetList());
+ endService( " GEOM_Superv_i::MakeShell" );
+ return anObj;
}
+ endService( " GEOM_Superv_i::MakeShell" );
return NULL;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidShell (GEOM::GEOM_Object_ptr theShell)
{
+ beginService( " GEOM_Superv_i::MakeSolidShell" );
MESSAGE("GEOM_Superv_i::MakeSolidShell");
getShapesOp();
- return myShapesOp->MakeSolidShell(theShell);
+ GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeSolidShell(theShell);
+ endService( " GEOM_Superv_i::MakeSolidShell" );
+ return anObj;
}
//=============================================================================
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidShells (GEOM::GEOM_List_ptr theShells)
{
+ beginService( " GEOM_Superv_i::MakeSolidShells" );
MESSAGE("GEOM_Superv_i::MakeSolidShells");
if (GEOM_List_i<GEOM::ListOfGO>* aListImplS =
dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShells, myPOA).in())) {
getShapesOp();
- return myShapesOp->MakeSolidShells(aListImplS->GetList());
+ GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeSolidShells(aListImplS->GetList());
+ endService( " GEOM_Superv_i::MakeSolidShells" );
+ return anObj;
}
+ endService( " GEOM_Superv_i::MakeSolidShells" );
return NULL;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCompound (GEOM::GEOM_List_ptr theShapes)
{
+ beginService( " GEOM_Superv_i::MakeCompound" );
MESSAGE("GEOM_Superv_i::MakeCompound");
if (GEOM_List_i<GEOM::ListOfGO>* aListImpl =
dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShapes, myPOA).in())) {
getShapesOp();
- return myShapesOp->MakeCompound(aListImpl->GetList());
+ GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeCompound(aListImpl->GetList());
+ endService( " GEOM_Superv_i::MakeCompound" );
+ return anObj;
}
+ endService( " GEOM_Superv_i::MakeCompound" );
return NULL;
}
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeGlueFaces (GEOM::GEOM_Object_ptr theShape,
CORBA::Double theTolerance)
{
+ beginService( " GEOM_Superv_i::MakeGlueFaces" );
MESSAGE("GEOM_Superv_i::MakeGlueFaces");
getShapesOp();
- return myShapesOp->MakeGlueFaces(theShape, theTolerance);
+ GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeGlueFaces(theShape, theTolerance);
+ endService( " GEOM_Superv_i::MakeGlueFaces" );
+ return anObj;
}
//=============================================================================
CORBA::Long theShapeType,
CORBA::Boolean isSorted)
{
+ beginService( " GEOM_Superv_i::MakeExplode" );
MESSAGE("GEOM_Superv_i::MakeExplode");
getShapesOp();
GEOM::ListOfGO* aList = myShapesOp->MakeExplode(theShape, theShapeType, isSorted);
GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
+ endService( " GEOM_Superv_i::MakeExplode" );
return aListPtr->_this();
}
//=============================================================================
CORBA::Long GEOM_Superv_i::NumberOfFaces (GEOM::GEOM_Object_ptr theShape)
{
+ beginService( " GEOM_Superv_i::NumberOfFaces" );
MESSAGE("GEOM_Superv_i::NumberOfFaces");
getShapesOp();
- return myShapesOp->NumberOfFaces(theShape);
+ CORBA::Long aRes = myShapesOp->NumberOfFaces(theShape);
+ endService( " GEOM_Superv_i::NumberOfFaces" );
+ return aRes;
}
//=============================================================================
//=============================================================================
CORBA::Long GEOM_Superv_i::NumberOfEdges (GEOM::GEOM_Object_ptr theShape)
{
+ beginService( " GEOM_Superv_i::NumberOfEdges" );
MESSAGE("GEOM_Superv_i::NumberOfEdges");
getShapesOp();
- return myShapesOp->NumberOfEdges(theShape);
+ CORBA::Long aRes = myShapesOp->NumberOfEdges(theShape);
+ endService( " GEOM_Superv_i::NumberOfEdges" );
+ return aRes;
}
//=============================================================================
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::ChangeOrientation (GEOM::GEOM_Object_ptr theShape)
{
+ beginService( " GEOM_Superv_i::ChangeOrientation" );
MESSAGE("GEOM_Superv_i::ChangeOrientation");
getShapesOp();
- return myShapesOp->ChangeOrientation(theShape);
+ GEOM::GEOM_Object_ptr anObj = myShapesOp->ChangeOrientation(theShape);
+ endService( " GEOM_Superv_i::ChangeOrientation" );
+ return anObj;
}
GEOM::GEOM_Object_ptr thePnt3,
GEOM::GEOM_Object_ptr thePnt4)
{
+ beginService( " GEOM_Superv_i::MakeQuad4Vertices" );
MESSAGE("GEOM_Superv_i::MakeQuad4Vertices");
getBlocksOp();
- return myBlocksOp->MakeQuad4Vertices(thePnt1, thePnt2, thePnt3, thePnt4);
+ GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad4Vertices(thePnt1, thePnt2, thePnt3, thePnt4);
+ endService( " GEOM_Superv_i::MakeQuad4Vertices" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr theEdge3,
GEOM::GEOM_Object_ptr theEdge4)
{
+ beginService( " GEOM_Superv_i::MakeQuad" );
MESSAGE("GEOM_Superv_i::MakeQuad");
getBlocksOp();
- return myBlocksOp->MakeQuad(theEdge1, theEdge2, theEdge3, theEdge4);
+ GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad(theEdge1, theEdge2, theEdge3, theEdge4);
+ endService( " GEOM_Superv_i::MakeQuad" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad2Edges (GEOM::GEOM_Object_ptr theEdge1,
GEOM::GEOM_Object_ptr theEdge2)
{
+ beginService( " GEOM_Superv_i::MakeQuad2Edges" );
MESSAGE("GEOM_Superv_i::MakeQuad2Edges");
getBlocksOp();
- return myBlocksOp->MakeQuad2Edges(theEdge1, theEdge2);
+ GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad2Edges(theEdge1, theEdge2);
+ endService( " GEOM_Superv_i::MakeQuad2Edges" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr theFace5,
GEOM::GEOM_Object_ptr theFace6)
{
+ beginService( " GEOM_Superv_i::MakeHexa" );
MESSAGE("GEOM_Superv_i::MakeHexa");
getBlocksOp();
- return myBlocksOp->MakeHexa(theFace1, theFace2, theFace3, theFace4, theFace5, theFace6);
+ GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeHexa(theFace1, theFace2, theFace3, theFace4, theFace5, theFace6);
+ endService( " GEOM_Superv_i::MakeHexa" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHexa2Faces (GEOM::GEOM_Object_ptr theFace1,
GEOM::GEOM_Object_ptr theFace2)
{
+ beginService( " GEOM_Superv_i::MakeHexa2Faces" );
MESSAGE("GEOM_Superv_i::MakeHexa2Faces");
getBlocksOp();
- return myBlocksOp->MakeHexa2Faces(theFace1, theFace2);
+ GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeHexa2Faces(theFace1, theFace2);
+ endService( " GEOM_Superv_i::MakeHexa2Faces" );
+ return anObj;
}
//=============================================================================
CORBA::Double theZ,
CORBA::Double theEpsilon)
{
+ beginService( " GEOM_Superv_i::GetPoint" );
MESSAGE("GEOM_Superv_i::GetPoint");
getBlocksOp();
- return myBlocksOp->GetPoint(theShape, theX, theY, theZ, theEpsilon);
+ GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetPoint(theShape, theX, theY, theZ, theEpsilon);
+ endService( " GEOM_Superv_i::GetPoint" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr thePoint1,
GEOM::GEOM_Object_ptr thePoint2)
{
+ beginService( " GEOM_Superv_i::GetEdge" );
MESSAGE("GEOM_Superv_i::GetEdge");
getBlocksOp();
- return myBlocksOp->GetEdge(theShape, thePoint1, thePoint2);
+ GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetEdge(theShape, thePoint1, thePoint2);
+ endService( " GEOM_Superv_i::GetEdge" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::GetEdgeNearPoint (GEOM::GEOM_Object_ptr theShape,
GEOM::GEOM_Object_ptr thePoint)
{
+ beginService( " GEOM_Superv_i::GetEdgeNearPoint" );
MESSAGE("GEOM_Superv_i::GetEdgeNearPoint");
getBlocksOp();
- return myBlocksOp->GetEdgeNearPoint(theShape, thePoint);
+ GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetEdgeNearPoint(theShape, thePoint);
+ endService( " GEOM_Superv_i::GetEdgeNearPoint" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr thePoint3,
GEOM::GEOM_Object_ptr thePoint4)
{
+ beginService( " GEOM_Superv_i::GetFaceByPoints" );
MESSAGE("GEOM_Superv_i::GetFaceByPoints");
getBlocksOp();
- return myBlocksOp->GetFaceByPoints(theShape, thePoint1, thePoint2, thePoint3, thePoint4);
+ GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByPoints(theShape, thePoint1, thePoint2, thePoint3, thePoint4);
+ endService( " GEOM_Superv_i::GetFaceByPoints" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr theEdge1,
GEOM::GEOM_Object_ptr theEdge2)
{
+ beginService( " GEOM_Superv_i::GetFaceByEdges" );
MESSAGE("GEOM_Superv_i::GetFaceByEdges");
getBlocksOp();
- return myBlocksOp->GetFaceByEdges(theShape, theEdge1, theEdge2);
+ GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByEdges(theShape, theEdge1, theEdge2);
+ endService( " GEOM_Superv_i::GetFaceByEdges" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::GetOppositeFace (GEOM::GEOM_Object_ptr theBlock,
GEOM::GEOM_Object_ptr theFace)
{
+ beginService( " GEOM_Superv_i::GetOppositeFace" );
MESSAGE("GEOM_Superv_i::GetOppositeFace");
getBlocksOp();
- return myBlocksOp->GetOppositeFace(theBlock, theFace);
+ GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetOppositeFace(theBlock, theFace);
+ endService( " GEOM_Superv_i::GetOppositeFace" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceNearPoint (GEOM::GEOM_Object_ptr theShape,
GEOM::GEOM_Object_ptr thePoint)
{
+ beginService( " GEOM_Superv_i::GetFaceNearPoint" );
MESSAGE("GEOM_Superv_i::GetFaceNearPoint");
getBlocksOp();
- return myBlocksOp->GetFaceNearPoint(theShape, thePoint);
+ GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceNearPoint(theShape, thePoint);
+ endService( " GEOM_Superv_i::GetFaceNearPoint" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByNormale (GEOM::GEOM_Object_ptr theBlock,
GEOM::GEOM_Object_ptr theVector)
{
+ beginService( " GEOM_Superv_i::GetFaceByNormale" );
MESSAGE("GEOM_Superv_i::GetFaceByNormale");
getBlocksOp();
- return myBlocksOp->GetFaceByNormale(theBlock, theVector);
+ GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByNormale(theBlock, theVector);
+ endService( " GEOM_Superv_i::GetFaceByNormale" );
+ return anObj;
}
//=============================================================================
CORBA::Long theMaxNbFaces,
CORBA::Long& theNbBlocks)
{
+ beginService( " GEOM_Superv_i::IsCompoundOfBlocks" );
MESSAGE("GEOM_Superv_i::IsCompoundOfBlocks");
getBlocksOp();
- return myBlocksOp->IsCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces, theNbBlocks);
+ CORBA::Boolean aRes = myBlocksOp->IsCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces, theNbBlocks);
+ endService( " GEOM_Superv_i::IsCompoundOfBlocks" );
+ return aRes;
}
//=============================================================================
(GEOM::GEOM_Object_ptr theCompound,
GEOM::GEOM_IBlocksOperations::BCErrors_out theErrors)
{
+ beginService( " GEOM_Superv_i::CheckCompoundOfBlocks" );
MESSAGE("GEOM_Superv_i::CheckCompoundOfBlocks");
getBlocksOp();
- return myBlocksOp->CheckCompoundOfBlocks(theCompound, theErrors);
+ CORBA::Boolean aRes = myBlocksOp->CheckCompoundOfBlocks(theCompound, theErrors);
+ endService( " GEOM_Superv_i::CheckCompoundOfBlocks" );
+ return aRes;
}
//=============================================================================
char* GEOM_Superv_i::PrintBCErrors (GEOM::GEOM_Object_ptr theCompound,
const GEOM::GEOM_IBlocksOperations::BCErrors& theErrors)
{
+ beginService( " GEOM_Superv_i::PrintBCErrors" );
MESSAGE("GEOM_Superv_i::PrintBCErrors");
getBlocksOp();
- return myBlocksOp->PrintBCErrors(theCompound, theErrors);
+ char* anErrors = myBlocksOp->PrintBCErrors(theCompound, theErrors);
+ endService( " GEOM_Superv_i::PrintBCErrors" );
+ return anErrors;
}
//=============================================================================
CORBA::Long theMinNbFaces,
CORBA::Long theMaxNbFaces)
{
+ beginService( " GEOM_Superv_i::ExplodeCompoundOfBlocks" );
MESSAGE("GEOM_Superv_i::ExplodeCompoundOfBlocks");
getBlocksOp();
GEOM::ListOfGO* aBlocks = myBlocksOp->ExplodeCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces);
GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aBlocks));
+ endService( " GEOM_Superv_i::ExplodeCompoundOfBlocks" );
return aListPtr->_this();
}
GEOM::GEOM_Object_ptr GEOM_Superv_i::GetBlockNearPoint (GEOM::GEOM_Object_ptr theCompound,
GEOM::GEOM_Object_ptr thePoint)
{
+ beginService( " GEOM_Superv_i::GetBlockNearPoint" );
MESSAGE("GEOM_Superv_i::GetBlockNearPoint");
getBlocksOp();
- return myBlocksOp->GetBlockNearPoint(theCompound, thePoint);
+ GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetBlockNearPoint(theCompound, thePoint);
+ endService( " GEOM_Superv_i::GetBlockNearPoint" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::GetBlockByParts (GEOM::GEOM_Object_ptr theCompound,
GEOM::GEOM_List_ptr theParts)
{
+ beginService( " GEOM_Superv_i::GetBlockByParts" );
MESSAGE("GEOM_Superv_i::GetBlockByParts");
if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theParts, myPOA).in())) {
getBlocksOp();
- return myBlocksOp->GetBlockByParts(theCompound, aListImplP->GetList());
+ GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetBlockByParts(theCompound, aListImplP->GetList());
+ endService( " GEOM_Superv_i::GetBlockByParts" );
+ return anObj;
}
+ endService( " GEOM_Superv_i::GetBlockByParts" );
return NULL;
}
GEOM::GEOM_List_ptr GEOM_Superv_i::GetBlocksByParts (GEOM::GEOM_Object_ptr theCompound,
GEOM::GEOM_List_ptr theParts)
{
+ beginService( " GEOM_Superv_i::GetBlocksByParts" );
MESSAGE("GEOM_Superv_i::GetBlocksByParts");
if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theParts, myPOA).in())) {
GEOM::ListOfGO* aBlocks = myBlocksOp->GetBlocksByParts(theCompound, aListImplP->GetList());
GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aBlocks));
+ endService( " GEOM_Superv_i::GetBlocksByParts" );
return aListPtr->_this();
}
+ endService( " GEOM_Superv_i::GetBlocksByParts" );
return NULL;
}
CORBA::Long theDirFace2,
CORBA::Long theNbTimes)
{
+ beginService( " GEOM_Superv_i::MakeMultiTransformation1D" );
MESSAGE("GEOM_Superv_i::MakeMultiTransformation1D");
getBlocksOp();
- return myBlocksOp->MakeMultiTransformation1D(theBlock, theDirFace1, theDirFace2, theNbTimes);
+ GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeMultiTransformation1D(theBlock, theDirFace1, theDirFace2, theNbTimes);
+ endService( " GEOM_Superv_i::MakeMultiTransformation1D" );
+ return anObj;
}
//=============================================================================
CORBA::Long theDirFace2V,
CORBA::Long theNbTimesV)
{
+ beginService( " GEOM_Superv_i::MakeMultiTransformation2D" );
MESSAGE("GEOM_Superv_i::MakeMultiTransformation2D");
getBlocksOp();
- return myBlocksOp->MakeMultiTransformation2D(theBlock,
- theDirFace1U, theDirFace2U, theNbTimesU,
- theDirFace1V, theDirFace2V, theNbTimesV);
+ GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeMultiTransformation2D(theBlock,
+ theDirFace1U, theDirFace2U, theNbTimesU,
+ theDirFace1V, theDirFace2V, theNbTimesV);
+ endService( " GEOM_Superv_i::MakeMultiTransformation2D" );
+ return anObj;
}
//=============================== CurvesOperations ============================
GEOM::GEOM_Object_ptr theVector,
CORBA::Double theR)
{
+ beginService( " GEOM_Superv_i::MakeCirclePntVecR" );
MESSAGE("GEOM_Superv_i::MakeCirclePntVecR");
getCurvesOp();
- return myCurvesOp->MakeCirclePntVecR(theCenter, theVector, theR);
+ GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCirclePntVecR(theCenter, theVector, theR);
+ endService( " GEOM_Superv_i::MakeCirclePntVecR" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr thePnt2,
GEOM::GEOM_Object_ptr thePnt3)
{
+ beginService( " GEOM_Superv_i::MakeCircleThreePnt" );
MESSAGE("GEOM_Superv_i::MakeCircleThreePnt");
getCurvesOp();
- return myCurvesOp->MakeCircleThreePnt(thePnt1, thePnt2, thePnt3);
+ GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCircleThreePnt(thePnt1, thePnt2, thePnt3);
+ endService( " GEOM_Superv_i::MakeCircleThreePnt" );
+ return anObj;
}
//=============================================================================
CORBA::Double theRMajor,
CORBA::Double theRMinor)
{
+ beginService( " GEOM_Superv_i::MakeEllipse" );
MESSAGE("GEOM_Superv_i::MakeEllipse");
getCurvesOp();
- return myCurvesOp->MakeEllipse(theCenter, theVector, theRMajor, theRMinor);
+ GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeEllipse(theCenter, theVector, theRMajor, theRMinor);
+ endService( " GEOM_Superv_i::MakeEllipse" );
+ return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr thePnt2,
GEOM::GEOM_Object_ptr thePnt3)
{
+ beginService( " GEOM_Superv_i::MakeArc" );
MESSAGE("GEOM_Superv_i::MakeArc");
getCurvesOp();
- return myCurvesOp->MakeArc(thePnt1, thePnt2, thePnt3);
+ GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeArc(thePnt1, thePnt2, thePnt3);
+ endService( " GEOM_Superv_i::MakeArc" );
+ return anObj;
}
//=============================================================================
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePolyline (GEOM::GEOM_List_ptr thePoints)
{
+ beginService( " GEOM_Superv_i::MakePolyline" );
MESSAGE("GEOM_Superv_i::MakePolyline");
if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
getCurvesOp();
- return myCurvesOp->MakePolyline(aListImplP->GetList());
+ GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakePolyline(aListImplP->GetList());
+ endService( " GEOM_Superv_i::MakePolyline" );
+ return anObj;
}
+ endService( " GEOM_Superv_i::MakePolyline" );
return NULL;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSplineBezier (GEOM::GEOM_List_ptr thePoints)
{
+ beginService( " GEOM_Superv_i::MakeSplineBezier" );
MESSAGE("GEOM_Superv_i::MakeSplineBezier");
if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
getCurvesOp();
- return myCurvesOp->MakeSplineBezier(aListImplP->GetList());
+ GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSplineBezier(aListImplP->GetList());
+ endService( " GEOM_Superv_i::MakeSplineBezier" );
+ return anObj;
}
+ endService( " GEOM_Superv_i::MakeSplineBezier" );
return NULL;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSplineInterpolation (GEOM::GEOM_List_ptr thePoints)
{
+ beginService( " GEOM_Superv_i::MakeSplineInterpolation" );
MESSAGE("GEOM_Superv_i::MakeSplineInterpolation");
if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
getCurvesOp();
- return myCurvesOp->MakeSplineInterpolation(aListImplP->GetList());
+ GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSplineInterpolation(aListImplP->GetList());
+ endService( " GEOM_Superv_i::MakeSplineInterpolation" );
+ return anObj;
}
+ endService( " GEOM_Superv_i::MakeSplineInterpolation" );
return NULL;
}
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSketcher (const char* theCommand,
GEOM::GEOM_List_ptr theWorkingPlane)
{
+ beginService( " GEOM_Superv_i::MakeSketcher" );
MESSAGE("GEOM_Superv_i::MakeSketcher");
if (GEOM_List_i<GEOM::ListOfDouble>* aListImplWP =
dynamic_cast<GEOM_List_i<GEOM::ListOfDouble>*>(GetServant(theWorkingPlane, myPOA).in())) {
getCurvesOp();
- return myCurvesOp->MakeSketcher(theCommand, aListImplWP->GetList());
+ GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSketcher(theCommand, aListImplWP->GetList());
+ endService( " GEOM_Superv_i::MakeSketcher" );
+ return anObj;
}
+ endService( " GEOM_Superv_i::MakeSketcher" );
return NULL;
}
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletAll (GEOM::GEOM_Object_ptr theShape,
CORBA::Double theR)
{
+ beginService( " GEOM_Superv_i::MakeFilletAll" );
MESSAGE("GEOM_Superv_i::MakeFilletAllMakeSketcher");
getLocalOp();
- return myLocalOp->MakeFilletAll(theShape, theR);
+ GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletAll(theShape, theR);
+ endService( " GEOM_Superv_i::MakeFilletAll" );
+ return anObj;
}
//=============================================================================
CORBA::Double theR,
GEOM::GEOM_List_ptr theEdges)
{
+ beginService( " GEOM_Superv_i::MakeFilletEdges" );
MESSAGE("GEOM_Superv_i::MakeFilletEdges");
if (GEOM_List_i<GEOM::ListOfLong>* aListImplE =
dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
getLocalOp();
- return myLocalOp->MakeFilletEdges(theShape, theR, aListImplE->GetList());
+ GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletEdges(theShape, theR, aListImplE->GetList());
+ endService( " GEOM_Superv_i::MakeFilletEdges" );
+ return anObj;
}
+ endService( " GEOM_Superv_i::MakeFilletEdges" );
return NULL;
}
CORBA::Double theR,
GEOM::GEOM_List_ptr theFaces)
{
+ beginService( " GEOM_Superv_i::MakeFilletFaces" );
MESSAGE("GEOM_Superv_i::MakeFilletFaces");
if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
getLocalOp();
- return myLocalOp->MakeFilletFaces(theShape, theR, aListImplF->GetList());
+ GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletFaces(theShape, theR, aListImplF->GetList());
+ endService( " GEOM_Superv_i::MakeFilletFaces" );
+ return anObj;
}
+ endService( " GEOM_Superv_i::MakeFilletFaces" );
return NULL;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferAll (GEOM::GEOM_Object_ptr theShape, CORBA::Double theD)
{
+ beginService( " GEOM_Superv_i::MakeChamferAll" );
MESSAGE("GEOM_Superv_i::MakeChamferAll");
getLocalOp();
- return myLocalOp->MakeChamferAll(theShape, theD);
+ GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferAll(theShape, theD);
+ endService( " GEOM_Superv_i::MakeChamferAll" );
+ return anObj;
}
//=============================================================================
CORBA::Double theD1, CORBA::Double theD2,
CORBA::Long theFace1, CORBA::Long theFace2)
{
+ beginService( " GEOM_Superv_i::MakeChamferEdge" );
MESSAGE("GEOM_Superv_i::MakeChamferEdge");
getLocalOp();
- return myLocalOp->MakeChamferEdge(theShape, theD1, theD2, theFace1, theFace2);
+ GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdge(theShape, theD1, theD2, theFace1, theFace2);
+ endService( " GEOM_Superv_i::MakeChamferEdge" );
+ return anObj;
}
//=============================================================================
CORBA::Double theD1, CORBA::Double theD2,
GEOM::GEOM_List_ptr theFaces)
{
+ beginService( " GEOM_Superv_i::MakeChamferFaces" );
MESSAGE("GEOM_Superv_i::MakeChamferFaces");
if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
getLocalOp();
- return myLocalOp->MakeChamferFaces(theShape, theD1, theD2, aListImplF->GetList());
+ GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferFaces(theShape, theD1, theD2, aListImplF->GetList());
+ endService( " GEOM_Superv_i::MakeChamferFaces" );
+ return anObj;
}
+ endService( " GEOM_Superv_i::MakeChamferFaces" );
return NULL;
}
CORBA::Double theWaterDensity,
CORBA::Double theMeshingDeflection)
{
+ beginService( " GEOM_Superv_i::MakeArchimede" );
MESSAGE("GEOM_Superv_i::MakeArchimede");
getLocalOp();
- return myLocalOp->MakeArchimede(theShape, theWeight, theWaterDensity, theMeshingDeflection);
+ GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeArchimede(theShape, theWeight, theWaterDensity, theMeshingDeflection);
+ endService( " GEOM_Superv_i::MakeArchimede" );
+ return anObj;
}
//=============================================================================
CORBA::Long GEOM_Superv_i::GetSubShapeIndex (GEOM::GEOM_Object_ptr theShape,
GEOM::GEOM_Object_ptr theSubShape)
{
+ beginService( " GEOM_Superv_i::GetSubShapeIndex" );
MESSAGE("GEOM_Superv_i::GetSubShapeIndexMakeArchimede");
getLocalOp();
- return myLocalOp->GetSubShapeIndex(theShape, theSubShape);
+ CORBA::Long aRes = myLocalOp->GetSubShapeIndex(theShape, theSubShape);
+ endService( " GEOM_Superv_i::GetSubShapeIndex" );
+ return aRes;
}
//=============================== GroupOperations =============================
GEOM::GEOM_Object_ptr GEOM_Superv_i::CreateGroup (GEOM::GEOM_Object_ptr theMainShape,
CORBA::Long theShapeType)
{
+ beginService( " GEOM_Superv_i::CreateGroup" );
MESSAGE("GEOM_Superv_i::CreateGroup");
getGroupOp();
- return myGroupOp->CreateGroup(theMainShape, theShapeType);
+ GEOM::GEOM_Object_ptr anObj = myGroupOp->CreateGroup(theMainShape, theShapeType);
+ endService( " GEOM_Superv_i::CreateGroup" );
+ return anObj;
}
//=============================================================================
void GEOM_Superv_i::AddObject (GEOM::GEOM_Object_ptr theGroup,
CORBA::Long theSubShapeId)
{
+ beginService( " GEOM_Superv_i::AddObject" );
MESSAGE("GEOM_Superv_i::AddObject");
getGroupOp();
myGroupOp->AddObject(theGroup, theSubShapeId);
+ endService( " GEOM_Superv_i::AddObject" );
}
//=============================================================================
void GEOM_Superv_i::RemoveObject (GEOM::GEOM_Object_ptr theGroup,
CORBA::Long theSubShapeId)
{
+ beginService( " GEOM_Superv_i::RemoveObject" );
MESSAGE("GEOM_Superv_i::RemoveObject");
getGroupOp();
myGroupOp->RemoveObject(theGroup, theSubShapeId);
+ endService( " GEOM_Superv_i::RemoveObject" );
}
//=============================================================================
//=============================================================================
CORBA::Long GEOM_Superv_i::GetType (GEOM::GEOM_Object_ptr theGroup)
{
+ beginService( " GEOM_Superv_i::GetType" );
MESSAGE("GEOM_Superv_i::GetType");
getGroupOp();
- return myGroupOp->GetType(theGroup);
+ CORBA::Long aResult = myGroupOp->GetType(theGroup);
+ endService( " GEOM_Superv_i::GetType" );
+ return aResult;
}
//=============================================================================
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::GetMainShape (GEOM::GEOM_Object_ptr theGroup)
{
+ beginService( " GEOM_Superv_i::GetMainShape" );
MESSAGE("GEOM_Superv_i::GetMainShape");
getGroupOp();
- return myGroupOp->GetMainShape(theGroup);
+ GEOM::GEOM_Object_ptr anObj = myGroupOp->GetMainShape(theGroup);
+ endService( " GEOM_Superv_i::GetMainShape" );
+ return anObj;
}
//=============================================================================
//=============================================================================
GEOM::GEOM_List_ptr GEOM_Superv_i::GetObjects (GEOM::GEOM_Object_ptr theGroup)
{
+ beginService( " GEOM_Superv_i::GetObjects" );
MESSAGE("GEOM_Superv_i::GetObjects");
getGroupOp();
GEOM::ListOfLong* aList = myGroupOp->GetObjects(theGroup);
GEOM_List_i<GEOM::ListOfLong>* aListPtr = new GEOM_List_i<GEOM::ListOfLong>(*(aList));
MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
+ endService( " GEOM_Superv_i::GetObjects" );
return aListPtr->_this();
}
#print " On Cube (", MinDist[4], ", ", MinDist[5], ", ", MinDist[6], ")"
print "\nMinimal distance between Box and Cube = ", MinDist
+
+ ####### Position (LCS) #######
+
+ Pos = geompy.GetPosition(box)
+ print "\nPosition(LCS) of box 10x30x70:"
+ print "Origin: (", Pos[0], ", ", Pos[1], ", ", Pos[2], ")"
+ print "Z axis: (", Pos[3], ", ", Pos[4], ", ", Pos[5], ")"
+ print "X axis: (", Pos[6], ", ", Pos[7], ", ", Pos[8], ")"
+
+ pass
v_n0p = geompy.MakeVectorDXDYDZ(-1, 0, 1)
v_pp0 = geompy.MakeVectorDXDYDZ( 1, 1, 0)
v_np0 = geompy.MakeVectorDXDYDZ(-1, 1, 0)
+ v_0n0 = geompy.MakeVectorDXDYDZ( 0, -1, 0)
pln_0pp = geompy.MakePlane(p0, v_0pp, 300)
pln_0np = geompy.MakePlane(p0, v_0np, 300)
geompy.UnionIDs(faces_above, faces_above_pln_ids)
geompy.addToStudy(faces_above, "Group of faces above Plane (N = (0, 1, 1))")
+ # GetShapesOnPlaneWithLocation
+ Loc = geompy.MakeVertex(0, -50, 0)
+ edges_on_pln = geompy.GetShapesOnPlaneWithLocation(blocksComp, geompy.ShapeType["EDGE"],
+ v_0n0, Loc, geompy.GEOM.ST_ON)
+ for edge_i in edges_on_pln:
+ geompy.addToStudy(edge_i, "Edge on Plane (N = (0, -1, 0) & Location = (0, -50, 0)")
+
+ # GetShapesOnPlaneWithLocationIDs
+ edges_on_pln_ids = geompy.GetShapesOnPlaneWithLocationIDs(blocksComp, geompy.ShapeType["EDGE"],
+ v_0n0, Loc, geompy.GEOM.ST_ON)
+ group_edges_on_pln = geompy.CreateGroup(blocksComp, geompy.ShapeType["EDGE"])
+ geompy.UnionIDs(group_edges_on_pln, edges_on_pln_ids)
+ geompy.addToStudy(group_edges_on_pln, "Group of edges on Plane (N = (0, -1, 0) & Location = (0, -50, 0))")
+
# GetShapesOnCylinder
edges_out_cyl = geompy.GetShapesOnCylinder(blocksComp, geompy.ShapeType["EDGE"],
vy, 55, geompy.GEOM.ST_OUT)
g=None
step = 0
-while step < 50 and g == None:
+sleeping_time = 0.01
+sleeping_time_max = 1.0
+while 1:
g = lcc.FindOrLoadComponent("FactoryServer", "GEOM")
+ if g is not None: break
step = step + 1
- time.sleep(4)
+ if step > 100: break
+ time.sleep(sleeping_time)
+ sleeping_time = max(sleeping_time_max, 2*sleeping_time)
+ pass
geom = g._narrow( GEOM.GEOM_Gen )
myBuilder = None
print "GetCentreOfMass : ", MeasuOp.GetErrorCode()
return anObj
-def CheckShape(aShape):
- (IsValid, Status) = MeasuOp.CheckShape(aShape)
+def CheckShape(theShape, theIsCheckGeom = 0):
+ if theIsCheckGeom:
+ (IsValid, Status) = MeasuOp.CheckShapeWithGeometry(theShape)
+ else:
+ (IsValid, Status) = MeasuOp.CheckShape(theShape)
+
if MeasuOp.IsDone() == 0:
print "CheckShape : ", MeasuOp.GetErrorCode()
else:
# Module : GEOM
# $Header$
+import salome
+salome.salome_init()
from salome import *
+
import GEOM
"""
return anObj
## Create a plane, similar to the existing one, but with another size of representing face.
-# @param theFace Referenced plane.
+# @param theFace Referenced plane or LCS(Marker).
# @param theTrimSize New half size of a side of quadrangle face, representing the plane.
# @return New GEOM_Object, containing the created plane.
#
# For format of the description string see the previous method.\n
# @param theCommand String, defining the sketcher in local
# coordinates of the working plane.
-# @param theWorkingPlane Planar Face of the working plane.
+# @param theWorkingPlane Planar Face or LCS(Marker) of the working plane.
# @return New GEOM_Object, containing the created wire.
def MakeSketcherOnPlane(theCommand, theWorkingPlane):
anObj = CurvesOp.MakeSketcherOnPlane(theCommand, theWorkingPlane)
return anObj
## Create a face on the given wire.
-# @param theWire Wire to build the face on.
+# @param theWire closed Wire or Edge to build the face on.
# @param isPlanarWanted If TRUE, only planar face will be built.
# If impossible, NULL object will be returned.
# @return New GEOM_Object, containing the created face.
return anObj
## Create a face on the given wires set.
-# @param theWires List of wires to build the face on.
+# @param theWires List of closed wires or edges to build the face on.
# @param isPlanarWanted If TRUE, only planar face will be built.
# If impossible, NULL object will be returned.
# @return New GEOM_Object, containing the created face.
print "GetShapesOnPlaneIDs : ", ShapesOp.GetErrorCode()
return aList
+## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
+# the specified plane by the certain way, defined through \a theState parameter.
+# @param theShape Shape to find sub-shapes of.
+# @param theShapeType Type of sub-shapes to be retrieved.
+# @param theAx1 Vector (or line, or linear edge), specifying normal
+# direction of the plane to find shapes on.
+# @param thePnt Point specifying location of the plane to find shapes on.
+# @param theState The state of the subshapes to find. It can be one of
+# ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN.
+# @return List of all found sub-shapes.
+#
+# Example: see GEOM_TestOthers.py
+def GetShapesOnPlaneWithLocation(theShape, theShapeType, theAx1, thePnt, theState):
+ aList = ShapesOp.GetShapesOnPlaneWithLocation(theShape, theShapeType, theAx1, thePnt, theState)
+ if ShapesOp.IsDone() == 0:
+ print "GetShapesOnPlaneWithLocation : ", ShapesOp.GetErrorCode()
+ return aList
+
+## Works like the above method, but returns list of sub-shapes indices
+#
+# Example: see GEOM_TestOthers.py
+def GetShapesOnPlaneWithLocationIDs(theShape, theShapeType, theAx1, thePnt, theState):
+ aList = ShapesOp.GetShapesOnPlaneWithLocationIDs(theShape, theShapeType, theAx1, thePnt, theState)
+ if ShapesOp.IsDone() == 0:
+ print "GetShapesOnPlaneWithLocationIDs : ", ShapesOp.GetErrorCode()
+ return aList
+
## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
# the specified cylinder by the certain way, defined through \a theState parameter.
# @param theShape Shape to find sub-shapes of.
# the specified quadrangle by the certain way, defined through \a theState parameter.
# @param theShape Shape to find sub-shapes of.
# @param theShapeType Type of sub-shapes to be retrieved.
-# @param theCenter Point, specifying center of the sphere to find shapes on.
-# @param theRadius Radius of the sphere to find shapes on.
+# @param theTopLeftPoint Point, specifying top left corner of a quadrangle
+# @param theTopRigthPoint Point, specifying top right corner of a quadrangle
+# @param theBottomLeftPoint Point, specifying bottom left corner of a quadrangle
+# @param theBottomRigthPoint Point, specifying bottom right corner of a quadrangle
# @param theState The state of the subshapes to find. It can be one of
# ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN.
# @return List of all found sub-shapes.
ListIDs = ShapesOp.SubShapeAllIDs(aShape,aType,1)
if ShapesOp.IsDone() == 0:
print "SubShapeAllSortedIDs : ", ShapesOp.GetErrorCode()
- return ListObj
+ return ListIDs
## Obtain a compound of sub-shapes of <aShape>,
# selected by they indices in list of all sub-shapes of type <aType>.
print "DivideEdge : ", HealOp.GetErrorCode()
return anObj
+## Change orientation of the given object.
+# @param theObject Shape to be processed.
+# @update given shape
+def ChangeOrientationShell(theObject):
+ theObject = HealOp.ChangeOrientation(theObject)
+ if HealOp.IsDone() == 0:
+ print "ChangeOrientation : ", HealOp.GetErrorCode()
+
+## Change orientation of the given object.
+# @param theObject Shape to be processed.
+# @return New GEOM_Object, containing processed shape.
+def ChangeOrientationShellCopy(theObject):
+ anObj = HealOp.ChangeOrientationCopy(theObject)
+ if HealOp.IsDone() == 0:
+ print "ChangeOrientation : ", HealOp.GetErrorCode()
+ return anObj
+
## Get a list of wires (wrapped in GEOM_Object-s),
# that constitute a free boundary of the given shape.
# @param theObject Shape to get free boundary of.
print "MirrorPointCopy : ", TrsfOp.GetErrorCode()
return anObj
-## Modify the Location of the given object by LCS
-# creating its copy before the setting
+## Modify the Location of the given object by LCS,
+# creating its copy before the setting.
+# @param theObject The object to be displaced.
+# @param theStartLCS Coordinate system to perform displacement from it.
+# If \a theStartLCS is NULL, displacement
+# will be performed from global CS.
+# If \a theObject itself is used as \a theStartLCS,
+# its location will be changed to \a theEndLCS.
+# @param theEndLCS Coordinate system to perform displacement to it.
+# @return New GEOM_Object, containing the displaced shape.
#
# Example: see GEOM_TestAll.py
def MakePosition(theObject, theStartLCS, theEndLCS):
## Check a topology of the given shape.
# @param theShape Shape to check validity of.
-# @return TRUE, if the shape "seems to be valid" from the topological point of view.
+# @param theIsCheckGeom If FALSE, only the shape's topology will be checked,
+# if TRUE, the shape's geometry will be checked also.
+# @return TRUE, if the shape "seems to be valid".
# If theShape is invalid, prints a description of problem.
#
# Example: see GEOM_TestMeasures.py
-def CheckShape(theShape):
- (IsValid, Status) = MeasuOp.CheckShape(theShape)
+def CheckShape(theShape, theIsCheckGeom = 0):
+ if theIsCheckGeom:
+ (IsValid, Status) = MeasuOp.CheckShapeWithGeometry(theShape)
+ else:
+ (IsValid, Status) = MeasuOp.CheckShape(theShape)
+
if MeasuOp.IsDone() == 0:
print "CheckShape : ", MeasuOp.GetErrorCode()
else:
print Status
return IsValid
+## Get position (LCS) of theShape.
+#
+# Origin of the LCS is situated at the shape's center of mass.
+# Axes of the LCS are obtained from shape's location or,
+# if the shape is a planar face, from position of its plane.
+#
+# @param theShape Shape to calculate position of.
+# @return [Ox,Oy,Oz, Zx,Zy,Zz, Xx,Xy,Xz].
+# Ox,Oy,Oz: Coordinates of shape's LCS origin.
+# Zx,Zy,Zz: Coordinates of shape's LCS normal(main) direction.
+# Xx,Xy,Xz: Coordinates of shape's LCS X direction.
+#
+# Example: see GEOM_TestMeasures.py
+def GetPosition(theShape):
+ aTuple = MeasuOp.GetPosition(theShape)
+ if MeasuOp.IsDone() == 0:
+ print "GetPosition : ", MeasuOp.GetErrorCode()
+ return aTuple
+
# -----------------------------------------------------------------------------
# Import/Export objects
# -----------------------------------------------------------------------------
return IsValid
## Remove all seam and degenerated edges from \a theShape.
-# Unite faces and edges, sharing one surface.
+# Unite faces and edges, sharing one surface. It means that
+# this faces must have references to one C++ surface object (handle).
# @param theShape The compound or single solid to remove irregular edges from.
# @return Improved shape.
#
// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
#include "SUIT_Session.h"
#include "SUIT_Desktop.h"
+#include "SalomeApp_Application.h"
+
#include "GenerationGUI_PrismDlg.h" // Method PRISM
#include "GenerationGUI_RevolDlg.h" // Method REVOL
#include "GenerationGUI_FillingDlg.h" // Method FILLING
using namespace std;
-GenerationGUI* GenerationGUI::myGUIObject = 0;
-
-//=======================================================================
-// function : GetGenerationGUI()
-// purpose : Get the only GenerationGUI object [ static ]
-//=======================================================================
-GenerationGUI* GenerationGUI::GetGenerationGUI(GeometryGUI* parent)
-{
- if ( myGUIObject == 0 )
- myGUIObject = new GenerationGUI(parent);
-
- return myGUIObject;
-}
-
//=======================================================================
// function : GenerationGUI()
// purpose : Constructor
{
}
-
//=======================================================================
// function : ~GenerationGUI()
// purpose : Destructor
//=======================================================================
bool GenerationGUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent )
{
+ SalomeApp_Application* app = getGeometryGUI()->getApp();
+ if ( !app ) return false;
+
getGeometryGUI()->EmitSignalDeactivateDialog();
-
+
QDialog* aDlg = NULL;
- switch ( theCommandID )
+ switch (theCommandID)
{
case 4031: aDlg = new GenerationGUI_PrismDlg ( getGeometryGUI(), parent, ""); break;
case 4032: aDlg = new GenerationGUI_RevolDlg ( getGeometryGUI(), parent, ""); break;
case 4033: aDlg = new GenerationGUI_FillingDlg ( getGeometryGUI(), parent, ""); break;
case 4034: aDlg = new GenerationGUI_PipeDlg ( getGeometryGUI(), parent, ""); break;
- default: SUIT_Session::session()->activeApplication()->putInfo( tr( "GEOM_PRP_COMMAND" ).arg( theCommandID ) ); break;
+ default: app->putInfo( tr( "GEOM_PRP_COMMAND" ).arg( theCommandID ) ); break;
}
- if ( aDlg != NULL )
+ if (aDlg != NULL)
aDlg->show();
-
+
return true;
}
GENERATIONGUI_EXPORT
GEOMGUI* GetLibGUI(GeometryGUI* parent)
{
- return GenerationGUI::GetGenerationGUI(parent);
+ return new GenerationGUI(parent);
}
}
// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
// File : GenerationGUI.h
// Author : Damien COQUERET
// Module : GEOM
-// $Header$
#ifndef GENERATIONGUI_H
#define GENERATIONGUI_H
#ifdef WNT
- #if defined GENERATIONGUI_EXPORTS
- #if defined WIN32
- #define GENERATIONGUI_EXPORT __declspec( dllexport )
- #else
- #define GENERATIONGUI_EXPORT
- #endif
- #else
- #if defined WIN32
- #define GENERATIONGUI_EXPORT __declspec( dllimport )
- #else
- #define GENERATIONGUI_EXPORT
- #endif
- #endif
+# if defined GENERATIONGUI_EXPORTS
+# define GENERATIONGUI_EXPORT __declspec( dllexport )
+# else
+# define GENERATIONGUI_EXPORT __declspec( dllimport )
+# endif
#else
- #define GENERATIONGUI_EXPORT
+# define GENERATIONGUI_EXPORT
#endif
#include "GEOMGUI.h"
//=================================================================================
class GENERATIONGUI_EXPORT GenerationGUI : public GEOMGUI
{
-protected:
- GenerationGUI(GeometryGUI* parent); // hide constructor to avoid direct creation
-
-public :
+public:
+ GenerationGUI(GeometryGUI* parent);
~GenerationGUI();
- // Get the only GenerationGUI object
- static GenerationGUI* GetGenerationGUI(GeometryGUI* parent);
-
bool OnGUIEvent( int theCommandID, SUIT_Desktop* parent );
-
-private:
- static GenerationGUI* myGUIObject; // the only GenerationGUI object
};
#endif
#include <TopoDS_Iterator.hxx>
#include <BRep_Tool.hxx>
#include <Precision.hxx>
-#include <Standard_ErrorHandler.hxx>
#include "GEOMImpl_Types.hxx"
#include <qlabel.h>
double SpecificStep1 = 1;
double SpecificStep2 = 0.0001;
/* min, max, step and decimals for spin boxes & initial values */
- GroupPoints->SpinBox_1->RangeStepAndValidator(2.0, 999.999, SpecificStep1, 3);
+ GroupPoints->SpinBox_1->RangeStepAndValidator(2.0, MAX_NUMBER, SpecificStep1, 3);
GroupPoints->SpinBox_2->RangeStepAndValidator(0.00001, 10000.0, SpecificStep2, 5);
- GroupPoints->SpinBox_3->RangeStepAndValidator(1.0, 999.999, SpecificStep1, 3);
- GroupPoints->SpinBox_4->RangeStepAndValidator(1.0, 999.999, SpecificStep1, 3);
+ GroupPoints->SpinBox_3->RangeStepAndValidator(1.0, MAX_NUMBER, SpecificStep1, 3);
+ GroupPoints->SpinBox_4->RangeStepAndValidator(1.0, MAX_NUMBER, SpecificStep1, 3);
GroupPoints->SpinBox_5->RangeStepAndValidator(0.00001, 10000.0, SpecificStep2, 5);
GroupPoints->SpinBox_1->SetValue(myMinDeg);
{
QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_PRISM")));
QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT")));
+ QPixmap image2(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_PRISM_2P")));
- setCaption(tr("GEOM_PRISM_TITLE"));
+ setCaption(tr("GEOM_EXTRUSION_TITLE"));
/***************************************************************/
- GroupConstructors->setTitle(tr("GEOM_PRISM"));
+ GroupConstructors->setTitle(tr("GEOM_EXTRUSION"));
RadioButton1->setPixmap(image0);
- RadioButton2->close(TRUE);
+ RadioButton2->setPixmap(image2);
+ //RadioButton2->close(TRUE);
RadioButton3->close(TRUE);
GroupPoints = new DlgRef_2Sel1Spin2Check(this, "GroupPoints");
GroupPoints->CheckButton1->hide();
- GroupPoints->GroupBox1->setTitle(tr("GEOM_PRISM_BSV"));
+ GroupPoints->GroupBox1->setTitle(tr("GEOM_EXTRUSION_BSV"));
GroupPoints->TextLabel1->setText(tr("GEOM_BASE"));
GroupPoints->TextLabel2->setText(tr("GEOM_VECTOR"));
GroupPoints->TextLabel3->setText(tr("GEOM_HEIGHT"));
GroupPoints->LineEdit2->setReadOnly( true );
GroupPoints->CheckButton2->setText(tr("GEOM_REVERSE"));
+ GroupPoints2 = new DlgRef_3Sel_QTD(this, "GroupPoints2");
+ GroupPoints2->GroupBox1->setTitle(tr("GEOM_EXTRUSION_BSV_2P"));
+ GroupPoints2->TextLabel1->setText(tr("GEOM_BASE"));
+ GroupPoints2->TextLabel2->setText(tr("GEOM_POINT_I").arg("1"));
+ GroupPoints2->TextLabel3->setText(tr("GEOM_POINT_I").arg("2"));
+ GroupPoints2->PushButton1->setPixmap(image1);
+ GroupPoints2->PushButton2->setPixmap(image1);
+ GroupPoints2->PushButton3->setPixmap(image1);
+
Layout1->addWidget(GroupPoints, 2, 0);
+ Layout1->addWidget(GroupPoints2, 2, 0);
/***************************************************************/
setHelpFileName("extrusion.htm");
GroupPoints->LineEdit1->setReadOnly( true );
GroupPoints->LineEdit2->setReadOnly( true );
- myOkBase = myOkVec = false;
+ GroupPoints2->LineEdit1->setReadOnly( true );
+ GroupPoints2->LineEdit2->setReadOnly( true );
+ GroupPoints2->LineEdit3->setReadOnly( true );
+
+ //myOkBase = myOkVec = false;
+ myOkBase = myOkVec = myOkPnt1 = myOkPnt2 = false;
/* Get setting of step value from file configuration */
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100);
/* min, max, step and decimals for spin boxes & initial values */
- GroupPoints->SpinBox_DX->RangeStepAndValidator(-999.999, +999.999, step, 3);
+ GroupPoints->SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
GroupPoints->SpinBox_DX->SetValue(100.0);
/* signals and slots connections */
connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk()));
connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply()));
+ connect(GroupConstructors, SIGNAL(clicked(int)), this, SLOT(ConstructorsClicked(int)));
+
connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
connect(GroupPoints->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
connect(GroupPoints->CheckButton2, SIGNAL(toggled(bool)), this, SLOT(onReverse()));
+
+ connect(GroupPoints2->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
+ connect(GroupPoints2->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
+ connect(GroupPoints2->PushButton3, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
+
+ connect(GroupPoints2->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
+ connect(GroupPoints2->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
+ connect(GroupPoints2->LineEdit3, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
+
+
connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ;
- initName(tr("GEOM_PRISM"));
+ initName(tr("GEOM_EXTRUSION"));
globalSelection( GEOM_ALLSHAPES );
+ ConstructorsClicked(0);
+}
+
+
+//=================================================================================
+// function : ConstructorsClicked()
+// purpose : Radio button management
+//=================================================================================
+void GenerationGUI_PrismDlg::ConstructorsClicked(int constructorId)
+{
+ disconnect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0);
+
+ switch (constructorId)
+ {
+ case 0:
+ {
+ globalSelection( GEOM_POINT );
+
+ GroupPoints2->hide();
+ resize(0, 0);
+ GroupPoints->show();
+
+ //GroupPoints->LineEdit1->setFocus();
+ //myEditCurrentArgument = GroupPoints->LineEdit1;
+ //displayPreview();
+
+ myEditCurrentArgument = GroupPoints->LineEdit1;
+ GroupPoints->LineEdit1->setText("");
+ GroupPoints->LineEdit2->setText("");
+ GroupPoints2->LineEdit1->setText("");
+ GroupPoints2->LineEdit2->setText("");
+ GroupPoints2->LineEdit3->setText("");
+ myPoint1 = myPoint2 = myBase = myVec = GEOM::GEOM_Object::_nil();
+ myOkBase = myOkVec = myOkPnt1 = myOkPnt2 = false;
+
+ break;
+ }
+ case 1:
+ {
+ GroupPoints->hide();
+ resize(0, 0);
+ GroupPoints2->show();
+
+ myEditCurrentArgument = GroupPoints2->LineEdit1;
+ GroupPoints2->LineEdit1->setText("");
+ GroupPoints2->LineEdit2->setText("");
+ GroupPoints2->LineEdit3->setText("");
+ myPoint1 = myPoint2 = myBase = myVec = GEOM::GEOM_Object::_nil();
+ myOkBase = myOkVec = myOkPnt1 = myOkPnt2 = false;
+ GroupPoints->LineEdit1->setText("");
+ GroupPoints->LineEdit2->setText("");
+
+ break;
+ }
+ }
+ displayPreview();
}
{
erasePreview();
myEditCurrentArgument->setText("");
-
- if (IObjectCount() != 1) {
- if (myEditCurrentArgument == GroupPoints->LineEdit1)
- myOkBase = false;
- else if (myEditCurrentArgument == GroupPoints->LineEdit2)
- myOkVec = false;
- return;
- }
- // nbSel == 1
- Standard_Boolean testResult = Standard_False;
- GEOM::GEOM_Object_ptr aSelectedObject =
- GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult );
+ if ( getConstructorId()==0 ) {
+
+ if (IObjectCount() != 1) {
+ if (myEditCurrentArgument == GroupPoints->LineEdit1)
+ myOkBase = false;
+ else if (myEditCurrentArgument == GroupPoints->LineEdit2)
+ myOkVec = false;
+ return;
+ }
- if (!testResult)
- return;
+ // nbSel == 1
+ Standard_Boolean testResult = Standard_False;
+ GEOM::GEOM_Object_ptr aSelectedObject =
+ GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult );
- if (myEditCurrentArgument == GroupPoints->LineEdit1) {
- myOkBase = false;
- TopoDS_Shape S;
-
- if (!GEOMBase::GetShape(aSelectedObject, S) ||
- S.ShapeType() <= 2)
+ if (!testResult)
return;
- myBase = aSelectedObject;
- myOkBase = true;
- } else if (myEditCurrentArgument == GroupPoints->LineEdit2) {
- myVec = aSelectedObject;
- myOkVec = true;
+ if (myEditCurrentArgument == GroupPoints->LineEdit1) {
+ myBase = aSelectedObject;
+ myOkBase = true;
+ }
+ else if (myEditCurrentArgument == GroupPoints->LineEdit2) {
+ myVec = aSelectedObject;
+ myOkVec = true;
+ }
+ myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
+
+ displayPreview();
}
- myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
- displayPreview();
+ else { // getConstructorId()==1 - extrusion using 2 points
+
+ if (IObjectCount() != 1) {
+ if (myEditCurrentArgument == GroupPoints2->LineEdit1)
+ myOkBase = false;
+ else if (myEditCurrentArgument == GroupPoints2->LineEdit2) {
+ myPoint1 = GEOM::GEOM_Object::_nil();
+ myOkPnt1 = false;
+ }
+ else if (myEditCurrentArgument == GroupPoints2->LineEdit3) {
+ myPoint2 = GEOM::GEOM_Object::_nil();
+ myOkPnt2 = false;
+ }
+ return;
+ }
+
+ // nbSel == 1
+ Standard_Boolean testResult = Standard_False;
+ GEOM::GEOM_Object_var aSelectedObject =
+ GEOMBase::ConvertIOinGEOMObject(firstIObject(), testResult );
+
+ if (!testResult || CORBA::is_nil( aSelectedObject ))
+ return;
+
+ if (myEditCurrentArgument == GroupPoints2->LineEdit1) {
+ myBase = aSelectedObject;
+ myOkBase = true;
+ }
+ else if (myEditCurrentArgument == GroupPoints2->LineEdit2) {
+ myPoint1 = aSelectedObject;
+ myOkPnt1 = true;
+ }
+ else if (myEditCurrentArgument == GroupPoints2->LineEdit3) {
+ myPoint2 = aSelectedObject;
+ myOkPnt2 = true;
+ }
+
+ myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
+
+ displayPreview();
+ }
}
myEditCurrentArgument = GroupPoints->LineEdit2;
globalSelection( GEOM_LINE );
}
+ else if(send == GroupPoints2->PushButton1) {
+ GroupPoints2->LineEdit1->setFocus();
+ myEditCurrentArgument = GroupPoints2->LineEdit1;
+ }
+ else if(send == GroupPoints2->PushButton2) {
+ GroupPoints2->LineEdit2->setFocus();
+ myEditCurrentArgument = GroupPoints2->LineEdit2;
+ globalSelection( GEOM_POINT );
+ }
+ else if(send == GroupPoints2->PushButton3) {
+ GroupPoints2->LineEdit3->setFocus();
+ myEditCurrentArgument = GroupPoints2->LineEdit3;
+ globalSelection( GEOM_POINT );
+ }
SelectionIntoArgument();
}
{
QLineEdit* send = (QLineEdit*)sender();
if(send == GroupPoints->LineEdit1 ||
- send == GroupPoints->LineEdit2)
+ send == GroupPoints->LineEdit2 ||
+ send == GroupPoints2->LineEdit1 ||
+ send == GroupPoints2->LineEdit2 ||
+ send == GroupPoints2->LineEdit3 )
{
myEditCurrentArgument = send;
GEOMBase_Skeleton::LineEditReturnPressed();
globalSelection( GEOM_ALLSHAPES );
connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
- GroupPoints->LineEdit1->setFocus();
- myEditCurrentArgument = GroupPoints->LineEdit1;
- displayPreview();
+ //GroupPoints->LineEdit1->setFocus();
+ //myEditCurrentArgument = GroupPoints->LineEdit1;
+ //displayPreview();
+ ConstructorsClicked( getConstructorId() );
}
//=================================================================================
bool GenerationGUI_PrismDlg::isValid( QString& )
{
- return myOkBase && myOkVec;
+ return myOkBase && ( myOkVec || (myOkPnt1 && myOkPnt2) );
}
//=================================================================================
{
GEOM::GEOM_Object_var anObj;
- anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())->
- MakePrismVecH(myBase, myVec, getHeight());
-
+ switch ( getConstructorId() )
+ {
+ case 0 :
+ {
+ anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())->
+ MakePrismVecH(myBase, myVec, getHeight());
+ break;
+ }
+ case 1 :
+ {
+ anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())->
+ MakePrismTwoPnt(myBase, myPoint1, myPoint2);
+ break;
+ }
+ }
if ( !anObj->_is_nil() )
objects.push_back( anObj._retn() );
#include "GEOMBase_Skeleton.h"
#include "DlgRef_2Sel1Spin2Check.h"
+#include "DlgRef_3Sel_QTD.h"
//=================================================================================
// class : GenerationGUI_PrismDlg
GEOM::GEOM_Object_var myBase; /* Base shape */
GEOM::GEOM_Object_var myVec; /* Vector, defining the direction */
-
+ GEOM::GEOM_Object_var myPoint1, myPoint2; /* Points for extrusion */
+
bool myOkBase;
bool myOkVec;
+ bool myOkPnt1;
+ bool myOkPnt2;
DlgRef_2Sel1Spin2Check* GroupPoints;
+ DlgRef_3Sel_QTD* GroupPoints2; // for second layout for extrusion using 2 points
private slots:
void ClickOnOk();
void LineEditReturnPressed();
void SelectionIntoArgument();
void SetEditCurrentArgument();
+ void ConstructorsClicked(int);
void ValueChangedInSpinBox();
void onReverse();
};
#include <BRepAdaptor_Curve.hxx>
#include <BRepPrimAPI_MakeRevol.hxx>
#include <TopExp_Explorer.hxx>
-#include <Standard_ErrorHandler.hxx>
#include "GEOMImpl_Types.hxx"
#include <qlabel.h>
double SpecificStep = 5;
/* min, max, step and decimals for spin boxes & initial values */
- GroupPoints->SpinBox_DX->RangeStepAndValidator(-999.999, 999.999, SpecificStep, 3);
+ GroupPoints->SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, SpecificStep, 3);
GroupPoints->SpinBox_DX->SetValue(45.0);
/* signals and slots connections */
// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
#include "SalomeApp_Study.h"
#include "LightApp_SelectionMgr.h"
-GroupGUI* GroupGUI::myGUIObject = 0;
-
-//=======================================================================
-// function : GetGroupGUI()
-// purpose : Get the only GroupGUI object [ static ]
-//=======================================================================
-GroupGUI* GroupGUI::GetGroupGUI(GeometryGUI* parent)
-{
- if ( myGUIObject == 0 )
- myGUIObject = new GroupGUI(parent);
-
- return myGUIObject;
-}
-
//=======================================================================
// function : GroupGUI()
// purpose : Constructor
//=======================================================================
bool GroupGUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent )
{
+ SalomeApp_Application* app = getGeometryGUI()->getApp();
+ if ( !app ) return false;
+
getGeometryGUI()->EmitSignalDeactivateDialog();
QDialog* aDlg = NULL;
- SUIT_Application* suitApp = SUIT_Session::session()->activeApplication();
- SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>(suitApp->activeStudy());
+ SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>(app->activeStudy());
if ( !appStudy ) return false;
_PTR(Study) aStudy = appStudy->studyDS();
SALOME_ListIO aList;
aList.Clear();
- SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>(suitApp);
- if (app) {
- LightApp_SelectionMgr* aSelMgr = app->selectionMgr();
- if (aSelMgr)
- aSelMgr->selectedObjects(aList);
- }
+ LightApp_SelectionMgr* aSelMgr = app->selectionMgr();
+ if (aSelMgr)
+ aSelMgr->selectedObjects(aList);
if (aList.Extent() == 1) {
Standard_Boolean aResult = Standard_False;
break;
}
default:
- suitApp->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID));
+ app->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID));
break;
}
#endif
GEOMGUI* GetLibGUI(GeometryGUI* p)
{
- return GroupGUI::GetGroupGUI(p);
+ return new GroupGUI(p);
}
}
// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
// File : GroupGUI.h
// Author : Sergey ANIKIN
// Module : GEOM
-// $Header$
#ifndef GROUPGUI_H
#define GROUPGUI_H
{
Q_OBJECT
-protected:
- GroupGUI(GeometryGUI* parent); // hide constructor to avoid direct creation
-
-public :
+public:
+ GroupGUI(GeometryGUI* parent);
~GroupGUI();
- // Get the only GroupGUI object
- static GroupGUI* GetGroupGUI(GeometryGUI* parent);
-
bool OnGUIEvent( int theCommandID, SUIT_Desktop* parent );
-
-private:
- static GroupGUI* myGUIObject; // the only GroupGUI object
};
#endif
initName();
myIdList->clear();
}
+ else
+ activateSelection();
return true;
}
// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
#include "SUIT_Session.h"
#include "SalomeApp_Tools.h"
+#include "SalomeApp_Application.h"
#include "MeasureGUI_PropertiesDlg.h" // Method PROPERTIES
#include "MeasureGUI_CenterMassDlg.h" // Method CENTER MASS
#include "MeasureGUI_CheckCompoundOfBlocksDlg.h" // Method CHECKCOMPOUND
#include "MeasureGUI_PointDlg.h" // Method POINTCOORDINATES
-MeasureGUI* MeasureGUI::myGUIObject = 0;
-
-//=======================================================================
-// function : GetMeasureGUI()
-// purpose : Get the only MeasureGUI object [ static ]
-//=======================================================================
-MeasureGUI* MeasureGUI::GetMeasureGUI( GeometryGUI* parent )
-{
- if ( myGUIObject == 0 ) {
- // init MeasureGUI only once
- myGUIObject = new MeasureGUI( parent );
- }
- return myGUIObject;
-}
-
//=======================================================================
// function : MeasureGUI()
// purpose : Constructor
{
}
-
//=======================================================================
// function : ~MeasureGUI()
// purpose : Destructor
//=======================================================================
bool MeasureGUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent )
{
- MeasureGUI* myMeasureGUI = GetMeasureGUI( getGeometryGUI() );
+ SalomeApp_Application* app = getGeometryGUI()->getApp();
+ if ( !app ) return false;
+
getGeometryGUI()->EmitSignalDeactivateDialog();
switch ( theCommandID )
case 708 : new MeasureGUI_PointDlg (getGeometryGUI(), parent); break; // POINT COORDINATES
default:
- SUIT_Session::session()->activeApplication()->putInfo( tr( "GEOM_PRP_COMMAND" ).arg( theCommandID ) );
+ app->putInfo( tr( "GEOM_PRP_COMMAND" ).arg( theCommandID ) );
break;
}
return true;
GEOM_MEASUREGUI_EXPORT
GEOMGUI* GetLibGUI( GeometryGUI* parent )
{
- return MeasureGUI::GetMeasureGUI( parent );
+ return new MeasureGUI( parent );
}
}
// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
// File : MeasureGUI.h
// Author : Damien COQUERET
// Module : GEOM
-// $Header$
#ifndef MEASUREGUI_H
#define MEASUREGUI_H
//=================================================================================
class GEOM_MEASUREGUI_EXPORT MeasureGUI : public GEOMGUI
{
-protected:
- MeasureGUI( GeometryGUI* parent );
+public:
+ MeasureGUI( GeometryGUI* parent );
+ ~MeasureGUI();
-public :
- ~MeasureGUI();
- static MeasureGUI* GetMeasureGUI( GeometryGUI* parent );
- bool OnGUIEvent( int , SUIT_Desktop* );
-
-private:
- static MeasureGUI* myGUIObject;
+ bool OnGUIEvent( int , SUIT_Desktop* );
};
#endif
// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
// $Header$
#include "MeasureGUI_CheckShapeDlg.h"
-#include "MeasureGUI_1Sel1TextView_QTD.h"
#include "utilities.h"
#include "SUIT_Session.h"
#include <qpushbutton.h>
#include <qradiobutton.h>
#include <qbuttongroup.h>
+#include <qcheckbox.h>
#define TEXTEDIT_FONT_FAMILY "Courier"
#define TEXTEDIT_FONT_SIZE 11
+MeasureGUI_1Sel1TextView1Check_QTD::MeasureGUI_1Sel1TextView1Check_QTD(QWidget* parent,
+ const char* name, WFlags fl)
+ : MeasureGUI_1Sel1TextView_QTD(parent, name, fl)
+{
+ CheckBoxGeom = new QCheckBox(GroupBox1, "CheckBoxGeom");
+ CheckBoxGeom->setText(tr("CHECK_SHAPE_GEOMETRY"));
+ Layout1->addMultiCellWidget(CheckBoxGeom, 2, 2, 0, 2);
+
+ CheckBoxGeom->setChecked(false);
+}
+
+MeasureGUI_1Sel1TextView1Check_QTD::~MeasureGUI_1Sel1TextView1Check_QTD()
+{
+ // no need to delete child widgets, Qt does it all for us
+}
+
//=================================================================================
// class : MeasureGUI_CheckShapeDlg()
// purpose : Constructs a MeasureGUI_CheckShapeDlg which is a child of 'parent', with the
GroupConstructors->setTitle( tr( "GEOM_CHECK_SHAPE" ) );
RadioButton1->setPixmap( image0 );
- myGrp = new MeasureGUI_1Sel1TextView_QTD( this, "myGrp" );
+ myGrp = new MeasureGUI_1Sel1TextView1Check_QTD( this, "myGrp" );
myGrp->GroupBox1->setTitle( tr( "GEOM_CHECK_INFOS" ) );
myGrp->TextLabel1->setText( tr( "GEOM_OBJECT" ) );
myGrp->TextEdit1->setReadOnly( TRUE );
-
+
QFont aFont( TEXTEDIT_FONT_FAMILY, TEXTEDIT_FONT_SIZE );
aFont.setStyleHint( QFont::TypeWriter, QFont::PreferAntialias );
myGrp->TextEdit1->setFont( aFont );
Init();
}
-
//=================================================================================
// function : ~MeasureGUI_CheckShapeDlg()
// purpose : Destroys the object and frees any allocated resources
mySelBtn = myGrp->PushButton1;
mySelEdit = myGrp->LineEdit1;
MeasureGUI_Skeleton::Init();
+
+ connect(myGrp->CheckBoxGeom, SIGNAL(toggled(bool)),
+ this, SLOT(SelectionIntoArgument()));
}
//=================================================================================
try
{
char* aMsg;
- theIsValid = GEOM::GEOM_IMeasureOperations::_narrow( getOperation() )->CheckShape( myObj, aMsg );
+ bool isCheckGeometry = myGrp->CheckBoxGeom->isChecked();
+ GEOM::GEOM_IMeasureOperations_ptr aMeasureOp =
+ GEOM::GEOM_IMeasureOperations::_narrow( getOperation() );
+ if (isCheckGeometry)
+ theIsValid = aMeasureOp->CheckShapeWithGeometry(myObj, aMsg);
+ else
+ theIsValid = aMeasureOp->CheckShape(myObj, aMsg);
theMsg = aMsg;
}
catch( const SALOME::SALOME_Exception& e )
// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
// File : MeasureGUI_CheckShapeDlg.h
// Author : Nicolas REJNERI
// Module : GEOM
-// $Header$
#ifndef DIALOGBOX_CHECKSHAPEDLG_H
#define DIALOGBOX_CHECKSHAPEDLG_H
#include "GEOM_MeasureGUI.hxx"
#include "MeasureGUI_Skeleton.h"
+#include "MeasureGUI_1Sel1TextView_QTD.h"
-class MeasureGUI_1Sel1TextView_QTD;
+class QCheckBox;
+
+//=================================================================================
+// class : MeasureGUI_1Sel1TextView1Check_QTD
+// purpose :
+//=================================================================================
+class MeasureGUI_1Sel1TextView1Check_QTD : public MeasureGUI_1Sel1TextView_QTD
+{
+ Q_OBJECT
+
+public:
+ MeasureGUI_1Sel1TextView1Check_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+ ~MeasureGUI_1Sel1TextView1Check_QTD();
+
+ QCheckBox* CheckBoxGeom;
+};
//=================================================================================
// class : MeasureGUI_CheckShapeDlg
Q_OBJECT
public:
- MeasureGUI_CheckShapeDlg( GeometryGUI* GUI,
- QWidget* parent );
- ~MeasureGUI_CheckShapeDlg();
-protected:
+ MeasureGUI_CheckShapeDlg(GeometryGUI* GUI, QWidget* parent);
+ ~MeasureGUI_CheckShapeDlg();
+protected:
// redefined from GEOMBase_Helper and MeasureGUI_Skeleton
- virtual void processObject();
+ virtual void processObject();
private:
-
- void Init();
- bool getParameters( bool& theIsValid,
- QString& theMsg);
+ void Init();
+ bool getParameters(bool& theIsValid, QString& theMsg);
private:
-
- MeasureGUI_1Sel1TextView_QTD* myGrp;
-
+ MeasureGUI_1Sel1TextView1Check_QTD* myGrp;
};
#endif // DIALOGBOX_CHECKSHAPEDLG_H
return getGeomEngine()->GetIMeasureOperations( getStudyId() );
}
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void MeasureGUI_Skeleton::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ ClickOnHelp();
+ }
+}
void enterEvent( QEvent* e );
void closeEvent( QCloseEvent* e );
+ void keyPressEvent( QKeyEvent* e );
void redisplayPreview();
GEOM_Displayer* getDisplayer();
return;
}
//
- if (!mySourceShapes.Extent()){
+ if (!mySourceShapes.Extent()) {
// No source shapes to treat
myErrorStatus=103;
return;
}
//
+ if (!aDSF.IsDone()) {
+ // NMTTools_DSFiller failed
+ myErrorStatus=104;
+ return;
+ }
+ //
NMTAlgo_Builder::ComputeWithFiller(aDSF);
//
myIsComputed=Standard_True;
// 101 - Null shape is not allowed here
// 102 - DS is not computed
// 103 - No source shapes to treat
+// 104 - NMTTools_DSFiller failed
aNb=myDS->NumberOfShapesOfTheObject();
//
for (i=1; i<=aNb; i++) {
- const TopoDS_Shape& aF=myDS->Shape(i);
+ const TopoDS_Shape aF=myDS->Shape(i);
if (aF.ShapeType()==TopAbs_FACE) {
TopExp::MapShapesAndAncestors (aF, TopAbs_EDGE, TopAbs_FACE, aMEF);
}
}
//
for (i=1; i<=aNb; i++) {
- const TopoDS_Shape& aS=myDS->Shape(i);
+ const TopoDS_Shape aS=myDS->Shape(i);
if (aS.ShapeType()==TopAbs_EDGE) {
const TopoDS_Edge& aE=TopoDS::Edge(aS);
// Clear aPaveSet, aSplitEdges
aPaveSet.ChangeSet().Clear();
//
- const TopoDS_Edge& aDE=TopoDS::Edge(myDS->Shape(nED));
- const TopoDS_Face& aDF=TopoDS::Face(myDS->Shape(nFD));
+ const TopoDS_Edge aDE=TopoDS::Edge(myDS->Shape(nED));
+ const TopoDS_Face aDF=TopoDS::Face(myDS->Shape(nFD));
//
// 2D Curve of degenerated edge on the face aDF
Handle(Geom2d_Curve) aC2DDE=BRep_Tool::CurveOnSurface(aDE, aDF, aTD1, aTD2);
for (; anIt.More(); anIt.Next()) {
const BOPTools_PaveBlock& aPB=anIt.Value();
nE=aPB.Edge();
- const TopoDS_Edge& aE=TopoDS::Edge(myDS->Shape(nE));
+ const TopoDS_Edge aE=TopoDS::Edge(myDS->Shape(nE));
Handle(Geom2d_Curve) aC2D=BRep_Tool::CurveOnSurface(aE, aDF, aT1, aT2);
//
TopoDS_Edge aE, aESplit;
TopoDS_Vertex aV1, aV2;
- const TopoDS_Edge& aDE=TopoDS::Edge(myDS->Shape(nED));
- const TopoDS_Face& aDF=TopoDS::Face(myDS->Shape(nFD));
+ const TopoDS_Edge aDE=TopoDS::Edge(myDS->Shape(nED));
+ const TopoDS_Face aDF=TopoDS::Face(myDS->Shape(nFD));
BOPTools_ListIteratorOfListOfPaveBlock aPBIt(aSplitEdges);
NMTTools_DEProcessor aDEP(*this);
aDEP.Do();
//
+ myIsDone = Standard_True;
}
catch (BOPTColStd_Failure& /*x*/) {
//QQ MESSAGE(x.Message() << flush);
+ myIsDone = Standard_False;
}
}
aWith=n2;
SortTypes(aWhat, aWith);
if (!bJustAddInterference) {
- const TopoDS_Shape& aS1=myDS->GetShape(aWhat);
- const TopoDS_Shape& aS2=myDS->GetShape(aWith);
+ const TopoDS_Shape aS1=myDS->GetShape(aWhat);
+ const TopoDS_Shape aS2=myDS->GetShape(aWith);
//
const TopoDS_Vertex& aV1=TopoDS::Vertex(aS1);
const TopoDS_Vertex& aV2=TopoDS::Vertex(aS2);
aNbV=aChain.Extent();
for (j=1; j<=aNbV; ++j) {
aIdV=aChain(j);
- const TopoDS_Shape& aV=myDS->Shape(aIdV);
+ const TopoDS_Shape aV=myDS->Shape(aIdV);
if (!aM.Contains(aV)) {
aM.Add(aV);
aLV.Append(aV);
continue;
}
//
- const TopoDS_Edge& aE1=TopoDS::Edge(myDS->Shape(nE1));
- const TopoDS_Edge& aE2=TopoDS::Edge(myDS->Shape(nE2));
+ const TopoDS_Edge aE1=TopoDS::Edge(myDS->Shape(nE1));
+ const TopoDS_Edge aE2=TopoDS::Edge(myDS->Shape(nE2));
//
if (BRep_Tool::Degenerated(aE1) || BRep_Tool::Degenerated(aE2)){
continue;
aNbEdges=aME.Extent();
for (j=1; j<=aNbEdges; ++j) {
nE=aME(j);
- const TopoDS_Edge& aE=TopoDS::Edge(myDS->Shape(nE));
+ const TopoDS_Edge aE=TopoDS::Edge(myDS->Shape(nE));
//
aFlag=myContext.ComputeVE (aNewVertex, aE, aT);
//
Standard_Real d1121, d1122, d1222, d1221, aTolSum, aCoeff=1.05;
gp_Pnt aP11, aP12, aP21, aP22;
- const TopoDS_Vertex& aV11=TopoDS::Vertex(myDS->Shape(aPB1.Pave1().Index()));
- const TopoDS_Vertex& aV12=TopoDS::Vertex(myDS->Shape(aPB1.Pave2().Index()));
- const TopoDS_Vertex& aV21=TopoDS::Vertex(myDS->Shape(aPB2.Pave1().Index()));
- const TopoDS_Vertex& aV22=TopoDS::Vertex(myDS->Shape(aPB2.Pave2().Index()));
+ const TopoDS_Vertex aV11=TopoDS::Vertex(myDS->Shape(aPB1.Pave1().Index()));
+ const TopoDS_Vertex aV12=TopoDS::Vertex(myDS->Shape(aPB1.Pave2().Index()));
+ const TopoDS_Vertex aV21=TopoDS::Vertex(myDS->Shape(aPB2.Pave1().Index()));
+ const TopoDS_Vertex aV22=TopoDS::Vertex(myDS->Shape(aPB2.Pave2().Index()));
aTolV11=BRep_Tool::Tolerance(aV11);
aTolV12=BRep_Tool::Tolerance(aV12);
continue;
}
// Edge
- const TopoDS_Edge& aE=TopoDS::Edge(myDS->GetShape(nE));
+ const TopoDS_Edge aE=TopoDS::Edge(myDS->GetShape(nE));
if (BRep_Tool::Degenerated(aE)){
continue;
}
aTolE=BRep_Tool::Tolerance(aE);
// Face
- const TopoDS_Face& aF=TopoDS::Face(myDS->GetShape(nF));
+ const TopoDS_Face aF=TopoDS::Face(myDS->GetShape(nF));
aTolF=BRep_Tool::Tolerance(aF);
const Bnd_Box& aBBF=myDS->GetBoundingBox(nF);
//
aNbEdges=aME.Extent();
for (j=1; j<=aNbEdges; ++j) {
nE=aME(j);
- const TopoDS_Edge& aE=TopoDS::Edge(myDS->Shape(nE));
+ const TopoDS_Edge aE=TopoDS::Edge(myDS->Shape(nE));
//
aFlag=myContext.ComputeVE (aNewVertex, aE, aT);
//
aNbV=aMVF.Extent();
for (i=1; i<=aNbV; ++i) {
nVF=aMVF(i);
- const TopoDS_Vertex& aVF=TopoDS::Vertex(myDS->Shape(nVF));
+ const TopoDS_Vertex aVF=TopoDS::Vertex(myDS->Shape(nVF));
iFlag=IntTools_Tools::ComputeVV(aNewVertex, aVF);
if (!iFlag) {
return nVF;
continue;
}
//
- const TopoDS_Face& aF1=TopoDS::Face(myDS->Shape(nF1));
- const TopoDS_Face& aF2=TopoDS::Face(myDS->Shape(nF2));
+ const TopoDS_Face aF1=TopoDS::Face(myDS->Shape(nF1));
+ const TopoDS_Face aF2=TopoDS::Face(myDS->Shape(nF2));
//
// FF
bToApproxC3d = mySectionAttribute.Approximation();
//
// Faces
aFFi.Indices(nF1, nF2);
- const TopoDS_Face& aF1=TopoDS::Face(myDS->Shape(nF1));
- const TopoDS_Face& aF2=TopoDS::Face(myDS->Shape(nF2));
+ const TopoDS_Face aF1=TopoDS::Face(myDS->Shape(nF1));
+ const TopoDS_Face aF2=TopoDS::Face(myDS->Shape(nF2));
//
BOPTools_ListOfPaveBlock aLPB, aLPBC;
//
// Make Section Edge
TopoDS_Edge aES;
//
- const TopoDS_Vertex& aV1=TopoDS::Vertex(myDS->Shape(nV1));
- const TopoDS_Vertex& aV2=TopoDS::Vertex(myDS->Shape(nV2));
+ const TopoDS_Vertex aV1=TopoDS::Vertex(myDS->Shape(nV1));
+ const TopoDS_Vertex aV2=TopoDS::Vertex(myDS->Shape(nV2));
//
BOPTools_Tools::MakeSectEdge (aIC, aV1, aT1, aV2, aT2, aES);
//
for (j=1; j<=aNbSE; ++j) {
const BOPTools_PaveBlock& aPBSE=aMEPB(j);
nV1=aPBSE.Pave1().Index();
- const TopoDS_Shape& aV1=myDS->Shape(nV1);
+ const TopoDS_Shape aV1=myDS->Shape(nV1);
if (aV1.IsSame(aV)) {
aMNewOld.Add(i, nV1);
break;
}
nV2=aPBSE.Pave2().Index();
- const TopoDS_Shape& aV2=myDS->Shape(nV2);
+ const TopoDS_Shape aV2=myDS->Shape(nV2);
if (aV2.IsSame(aV)) {
aMNewOld.Add(i, nV2);
break;
BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq;
//
nV1=aPBSE.Pave1().Index();
- const TopoDS_Shape& aV1=myDS->Shape(nV1);
+ const TopoDS_Shape aV1=myDS->Shape(nV1);
nV2=aPBSE.Pave2().Index();
- const TopoDS_Shape& aV2=myDS->Shape(nV2);
+ const TopoDS_Shape aV2=myDS->Shape(nV2);
//
anASSeq.SetNewSuccessor(nV1);
anASSeq.SetNewOrientation(aV1.Orientation());
BOPTools_PaveBlock aPB=aIt.Value();
//
////modified by NIZNHY-PKV Thu Jan 26 10:16:36 2006f
- const TopoDS_Face& aF1=TopoDS::Face(myDS->Shape(nF1));
- const TopoDS_Face& aF2=TopoDS::Face(myDS->Shape(nF2));
+ const TopoDS_Face aF1=TopoDS::Face(myDS->Shape(nF1));
+ const TopoDS_Face aF2=TopoDS::Face(myDS->Shape(nF2));
////modified by NIZNHY-PKV Thu Jan 26 10:16:39 2006t
//
if (aCBAPI.IsCommonBlock(aPB)) {
aT1=aPave1.Param();
mV1=aPave1.Index(); // index in tDS
nV1=aMNewOld.FindFromKey(mV1); // index in myDS
- const TopoDS_Shape& aV1=myDS->Shape(nV1);
+ const TopoDS_Shape aV1=myDS->Shape(nV1);
//
const BOPTools_Pave& aPave2=aPB.Pave2();
aT2=aPave2.Param();
mV2=aPave2.Index();
nV2=aMNewOld.FindFromKey(mV2);
- const TopoDS_Shape& aV2=myDS->Shape(nV2);
+ const TopoDS_Shape aV2=myDS->Shape(nV2);
//
if (!aMNewOld.Contains(mE)) {
// add new SE to the myDS
BOPTools_SSInterference& aFF=aFFs(i);
aFF.Indices(nF1, nF2);
//
- const TopoDS_Face& aF1=TopoDS::Face(myDS->Shape(nF1));
- const TopoDS_Face& aF2=TopoDS::Face(myDS->Shape(nF2));
+ const TopoDS_Face aF1=TopoDS::Face(myDS->Shape(nF1));
+ const TopoDS_Face aF2=TopoDS::Face(myDS->Shape(nF2));
//
aF1FWD=aF1;
aF1FWD.Orientation(TopAbs_FORWARD);
for (; anIt.More(); anIt.Next()) {
const BOPTools_PaveBlock& aPB=anIt.Value();
nE=aPB.Edge();
- const TopoDS_Edge& aE=TopoDS::Edge(myDS->Shape(nE));
+ const TopoDS_Edge aE=TopoDS::Edge(myDS->Shape(nE));
BOPTools_Tools2D::BuildPCurveForEdgeOnFace(aE, aF1FWD);
BOPTools_Tools2D::BuildPCurveForEdgeOnFace(aE, aF2FWD);
//
//Edge
nE2=aPBR.Edge();
- const TopoDS_Edge& aE2=TopoDS::Edge(myDS->GetShape(nE2));
+ const TopoDS_Edge aE2=TopoDS::Edge(myDS->GetShape(nE2));
// VE
iVM=myContext.ComputeVE(aVM, aE2, aTmp);
//
aFFi.Indices(nF1, nF2);
aTolR3D=aFFi.TolR3D();
//
- const TopoDS_Face& aF1=TopoDS::Face(myDS->GetShape(nF1));
- const TopoDS_Face& aF2=TopoDS::Face(myDS->GetShape(nF2));
+ const TopoDS_Face aF1=TopoDS::Face(myDS->GetShape(nF1));
+ const TopoDS_Face aF2=TopoDS::Face(myDS->GetShape(nF2));
//
bVF=myContext.IsValidPointForFaces (aP1, aF1, aF2, aTolR3D);
if (bVF) {
TColStd_ListOfInteger& aTVs=aBC.TechnoVertices();
aTVs.Append(nV);
}
-
if (bFound1 && !bFound2) {
nV=aPave1.Index();
aPave.SetIndex(nV);
aPave.SetParam(aT);
aFFiPS.Append(aPave);
//
- const TopoDS_Vertex& aV=TopoDS::Vertex(myDS->Shape(nV));
+ const TopoDS_Vertex aV=TopoDS::Vertex(myDS->Shape(nV));
BOPTools_Tools::UpdateVertex (aIC, aT, aV);
}
aPave.SetParam(aT);
aCPS.Append(aPave);
//
- const TopoDS_Vertex& aV=TopoDS::Vertex(myDS->Shape(nV));
+ const TopoDS_Vertex aV=TopoDS::Vertex(myDS->Shape(nV));
BOPTools_Tools::UpdateVertex (aIC, aT, aV);
}
}
for (; anIt.More(); anIt.Next()) {
const BOPTools_Pave& aPC=anIt.Value();
nV=aPC.Index();
- const TopoDS_Vertex& aV=TopoDS::Vertex(myDS->Shape(nV));
+ const TopoDS_Vertex aV=TopoDS::Vertex(myDS->Shape(nV));
bIsVertex=IntTools_Tools::IsVertex (aP, aTolPV, aV);
if (bIsVertex) {
aPave=aPC;
const BOPTools_Pave& aPave=anIt.Value();
//
nV=aPave.Index();
- const TopoDS_Vertex& aV=TopoDS::Vertex(myDS->Shape(nV));
+ const TopoDS_Vertex aV=TopoDS::Vertex(myDS->Shape(nV));
//
Bnd_Box aBBV;
BRepBndLib::Add(aV, aBBV);
for(i=1; i<=aNbF; ++i) {
nF=aMF(i);
iRankF=myDS->Rank(nF);
- const TopoDS_Shape& aF=myDS->Shape(nF);
+ const TopoDS_Shape aF=myDS->Shape(nF);
aExp.Init(aF, TopAbs_EDGE);
for(; aExp.More(); aExp.Next()) {
aE=TopoDS::Edge(aExp.Current());
-
\ No newline at end of file
+
#include "GEOM_AssemblyBuilder.h"
#include "GEOM_Actor.h"
+#include <SUIT_Session.h>
+
#include <vtkProperty.h>
// Open CASCADE Includes
FaceProp->SetDiffuseColor(0.780392, 0.568627, 0.113725);
FaceProp->SetSpecularColor(0.992157, 0.941176, 0.807843);
+ SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr();
+ QColor aColor;
+
// Wireframe for iso
+ aColor = aResMgr->colorValue( "Geometry", "isos_color", QColor( int(0.5*255), int(0.5*255), int(0.5*255) ) );
+ float red = aColor.red()/255.0;
+ float green = aColor.green()/255.0;
+ float blue = aColor.blue()/255.0;
IsoProp->SetRepresentationToWireframe();
- IsoProp->SetAmbientColor(0.5, 0.5, 0.5);
- IsoProp->SetDiffuseColor(0.5, 0.5, 0.5);
- IsoProp->SetSpecularColor(0.5, 0.5, 0.5);
-
+ IsoProp->SetAmbientColor(red, green, blue);
+ IsoProp->SetDiffuseColor(red, green, blue);
+ IsoProp->SetSpecularColor(red, green, blue);
+
// Wireframe for iso
IsoPVProp->SetRepresentationToWireframe();
IsoPVProp->SetAmbientColor(0, 1, 1);
IsoPVProp->SetSpecularColor(0, 1, 1);
// Wireframe for shared edge
+ aColor = aResMgr->colorValue( "Geometry", "wireframe_color", QColor( 255, 255, 0 ) );
+ red = aColor.red()/255.0;
+ green = aColor.green()/255.0;
+ blue = aColor.blue()/255.0;
EdgeSProp->SetRepresentationToWireframe();
- EdgeSProp->SetAmbientColor(1, 1, 0);
- EdgeSProp->SetDiffuseColor(1, 1, 0);
- EdgeSProp->SetSpecularColor(1, 1, 0);
-
+ EdgeSProp->SetAmbientColor(red, green, blue);
+ EdgeSProp->SetDiffuseColor(red, green, blue);
+ EdgeSProp->SetSpecularColor(red, green, blue);
+
// Wireframe for free edge
+ aColor = aResMgr->colorValue( "Geometry", "free_bound_color", QColor( 0, 255, 0 ) );
+ red = aColor.red()/255.0;
+ green = aColor.green()/255.0;
+ blue = aColor.blue()/255.0;
EdgeFProp->SetRepresentationToWireframe();
- EdgeFProp->SetAmbientColor(0, 1, 0);
- EdgeFProp->SetDiffuseColor(0, 1, 0);
- EdgeFProp->SetSpecularColor(0, 1, 0);
+ EdgeFProp->SetAmbientColor(red, green, blue);
+ EdgeFProp->SetDiffuseColor(red, green, blue);
+ EdgeFProp->SetSpecularColor(red, green, blue);
// Wireframe for isolated edge
+ aColor = aResMgr->colorValue( "Geometry", "line_color", QColor( 255, 0, 0 ) );
+ red = aColor.red()/255.0;
+ green = aColor.green()/255.0;
+ blue = aColor.blue()/255.0;
EdgeIProp->SetRepresentationToWireframe();
- EdgeIProp->SetAmbientColor(1, 0, 0);
- EdgeIProp->SetDiffuseColor(1, 0, 0);
- EdgeIProp->SetSpecularColor(1, 0, 0);
-
+ EdgeIProp->SetAmbientColor(red, green, blue);
+ EdgeIProp->SetDiffuseColor(red, green, blue);
+
// Wireframe for Preview edge
EdgePVProp->SetRepresentationToWireframe();
EdgePVProp->SetAmbientColor(1, 1, 0);
EdgePVProp->SetSpecularColor(1, 1, 0);
// Wireframe for vertex
+ aColor = aResMgr->colorValue( "Geometry", "point_color", QColor( 255, 255, 0 ) );
+ red = aColor.red()/255.0;
+ green = aColor.green()/255.0;
+ blue = aColor.blue()/255.0;
VertexProp->SetRepresentationToWireframe();
- VertexProp->SetAmbientColor(1, 1, 0);
- VertexProp->SetDiffuseColor(1, 1, 0);
- VertexProp->SetSpecularColor(1, 1, 0);
-
+ VertexProp->SetAmbientColor(red, green, blue);
+ VertexProp->SetDiffuseColor(red, green, blue);
+ VertexProp->SetSpecularColor(red, green, blue);
+
// Wireframe for vertex
VertexPVProp->SetRepresentationToWireframe();
VertexPVProp->SetAmbientColor(0, 1, 1);
GEOM_Actor* EdgeActor = GEOM_Actor::New();
EdgeActor->SubShapeOn();
EdgeActor->setInputShape(ex2.Current(),deflection,mode);
+
switch (nbf) {
case 0 : // isolated edge
EdgeActor->SetWireframeProperty(EdgeSProp);
}
}
+
EdgeActor->SetPreviewProperty(EdgePVProp);
AISActors->AddItem(EdgeActor);
}
double SpecificStep1 = 0.1;
double SpecificStep2 = 0.01;
/* min, max, myStep and decimals for spin boxes & initial values */
- GroupPoints->SpinBox_DX->RangeStepAndValidator(0.001, 999.999, myStep, 3);
- GroupPoints->SpinBox_DY->RangeStepAndValidator(0.001, 999.999, SpecificStep1, 3);
- GroupPoints->SpinBox_DZ->RangeStepAndValidator(0.001, 999.999, SpecificStep2, 3);
+ GroupPoints->SpinBox_DX->RangeStepAndValidator(0.001, COORD_MAX, myStep, 3);
+ GroupPoints->SpinBox_DY->RangeStepAndValidator(0.001, COORD_MAX, SpecificStep1, 3);
+ GroupPoints->SpinBox_DZ->RangeStepAndValidator(0.001, COORD_MAX, SpecificStep2, 3);
GroupPoints->SpinBox_DX->SetValue( 100.0 );
GroupPoints->SpinBox_DY->SetValue( 1.0 );
double SpecificStep = 10.0;
QMap< int, DlgRef_SpinBox* >::iterator anIter;
for ( anIter = mySpinBox.begin(); anIter != mySpinBox.end(); ++anIter )
- anIter.data()->RangeStepAndValidator( 0.001, 999.999, SpecificStep, 3 );
+ anIter.data()->RangeStepAndValidator( 0.001, COORD_MAX, SpecificStep, 3 );
+
+ setHelpFileName("chamfer.htm");
setHelpFileName("chamfer.htm");
Layout1->addWidget( GroupArguments, 2, 0 );
/* Initialisations */
- SpinBox_Near->RangeStepAndValidator( -999999.999, +999999.999, 10.0, 3 );
- SpinBox_Far->RangeStepAndValidator( -999999.999, +999999.999, 10.0, 3 );
+ SpinBox_Near->RangeStepAndValidator( COORD_MIN, COORD_MAX, 10.0, 3 );
+ SpinBox_Far->RangeStepAndValidator( COORD_MIN, COORD_MAX, 10.0, 3 );
/* signals and slots connections */
connect( buttonOk , SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) );
/***************************************************************/
double SpecificStep = 10.0;
- Group1->SpinBox_DX->RangeStepAndValidator(0.001, 999.999, SpecificStep, 3);
- Group2->SpinBox_DX->RangeStepAndValidator(0.001, 999.999, SpecificStep, 3);
- Group3->SpinBox_DX->RangeStepAndValidator(0.001, 999.999, SpecificStep, 3);
+ Group1->SpinBox_DX->RangeStepAndValidator(0.001, COORD_MAX, SpecificStep, 3);
+ Group2->SpinBox_DX->RangeStepAndValidator(0.001, COORD_MAX, SpecificStep, 3);
+ Group3->SpinBox_DX->RangeStepAndValidator(0.001, COORD_MAX, SpecificStep, 3);
+
+ setHelpFileName("fillet.htm");
setHelpFileName("fillet.htm");
Layout1->addWidget(GroupPoints, 1, 0);
/***************************************************************/
- setHelpFileName("none.htm");
+ setHelpFileName("partition.htm");
Init();
}
// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
#include "SUIT_Session.h"
#include "SUIT_Desktop.h"
+#include "SalomeApp_Application.h"
+
#include "PrimitiveGUI_BoxDlg.h" // Method BOX
#include "PrimitiveGUI_CylinderDlg.h" // Method CYLINDER
#include "PrimitiveGUI_SphereDlg.h" // Method SPHERE
#include "PrimitiveGUI_TorusDlg.h" // Method TORUS
#include "PrimitiveGUI_ConeDlg.h" // Method CONE
-using namespace std;
-PrimitiveGUI* PrimitiveGUI::myGUIObject = 0;
-//=======================================================================
-// function : GetPrimitiveGUI()
-// purpose : Get the only PrimitiveGUI object [ static ]
-//=======================================================================
-PrimitiveGUI* PrimitiveGUI::GetPrimitiveGUI( GeometryGUI* parent )
-{
- if ( myGUIObject == 0 ) {
- // init PrimitiveGUI only once
- myGUIObject = new PrimitiveGUI( parent );
- }
- return myGUIObject;
-}
+using namespace std;
//=======================================================================
// function : PrimitiveGUI()
{
}
-
//=======================================================================
// function : ~PrimitiveGUI
// purpose : Destructor
//=======================================================================
bool PrimitiveGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent)
{
+ SalomeApp_Application* app = getGeometryGUI()->getApp();
+ if (!app) return false;
+
getGeometryGUI()->EmitSignalDeactivateDialog();
-
+
QDialog* aDlg = NULL;
switch (theCommandID)
- {
+ {
case 4021: // BOX
- {
aDlg = new PrimitiveGUI_BoxDlg(getGeometryGUI(), parent, "");
break;
- }
case 4022: // CYLINDER
- {
aDlg = new PrimitiveGUI_CylinderDlg(getGeometryGUI(), parent, "");
break;
- }
case 4023: // SPHERE
- {
aDlg = new PrimitiveGUI_SphereDlg(getGeometryGUI(), parent, "");
break;
- }
case 4024: // TORUS
- {
aDlg = new PrimitiveGUI_TorusDlg(getGeometryGUI(), parent, "");
break;
- }
case 4025: // CONE
- {
aDlg = new PrimitiveGUI_ConeDlg(getGeometryGUI(), parent, "");
break;
- }
default:
- {
- SUIT_Session::session()->activeApplication()->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID));
+ app->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID));
break;
- }
}
- if ( aDlg != NULL )
+ if (aDlg != NULL)
aDlg->show();
-
+
return true;
}
#endif
GEOMGUI* GetLibGUI( GeometryGUI* parent )
{
- return PrimitiveGUI::GetPrimitiveGUI( parent );
+ return new PrimitiveGUI( parent );
}
}
// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
// File : PrimitiveGUI.h
// Author : Damien COQUERET
// Module : GEOM
-// $Header$
#ifndef PRIMITIVEGUI_H
#define PRIMITIVEGUI_H
//=================================================================================
class PrimitiveGUI : public GEOMGUI
{
-protected:
- PrimitiveGUI(GeometryGUI* parent); // hide constructor to avoid direct creation
-
-public :
+public:
+ PrimitiveGUI(GeometryGUI* parent);
~PrimitiveGUI();
- // Get the only PrimitiveGUI object
- static PrimitiveGUI* GetPrimitiveGUI(GeometryGUI* parent);
-
bool OnGUIEvent(int theCommandID, SUIT_Desktop* parent);
-
-private:
- static PrimitiveGUI* myGUIObject; // the only PrimitiveGUI object
};
#endif
double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100);
/* min, max, step and decimals for spin boxes */
- GroupDimensions->SpinBox_DX->RangeStepAndValidator(-999.999, 999.999, step, 3);
- GroupDimensions->SpinBox_DY->RangeStepAndValidator(-999.999, 999.999, step, 3);
- GroupDimensions->SpinBox_DZ->RangeStepAndValidator(-999.999, 999.999, step, 3);
+ GroupDimensions->SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ GroupDimensions->SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ GroupDimensions->SpinBox_DZ->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
double initValue = 200.0;
GroupDimensions->SpinBox_DX->SetValue(initValue);
double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100);
/* min, max, step and decimals for spin boxes & initial values */
- GroupPoints->SpinBox_DX->RangeStepAndValidator(0.000, 999.999, step, 3);
- GroupPoints->SpinBox_DY->RangeStepAndValidator(0.000, 999.999, step, 3);
- GroupPoints->SpinBox_DZ->RangeStepAndValidator(-999.999, 999.999, step, 3);
- GroupDimensions->SpinBox_DX->RangeStepAndValidator(0.000, 999.999, step, 3);
- GroupDimensions->SpinBox_DY->RangeStepAndValidator(0.000, 999.999, step, 3);
- GroupDimensions->SpinBox_DZ->RangeStepAndValidator(-999.999, 999.999, step, 3);
+ GroupPoints->SpinBox_DX->RangeStepAndValidator(0.000, COORD_MAX, step, 3);
+ GroupPoints->SpinBox_DY->RangeStepAndValidator(0.000, COORD_MAX, step, 3);
+ GroupPoints->SpinBox_DZ->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ GroupDimensions->SpinBox_DX->RangeStepAndValidator(0.000, COORD_MAX, step, 3);
+ GroupDimensions->SpinBox_DY->RangeStepAndValidator(0.000, COORD_MAX, step, 3);
+ GroupDimensions->SpinBox_DZ->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
double aRadius1(100.0), aRadius2(0.0), aHeight(300.0);
GroupPoints->SpinBox_DX->SetValue(aRadius1);
/* min, max, step and decimals for spin boxes & initial values */
/* First constructor : radius */
- GroupPoints->SpinBox_DX->RangeStepAndValidator(0.001, 999.999, step, 3);
+ GroupPoints->SpinBox_DX->RangeStepAndValidator(0.001, COORD_MAX, step, 3);
/* First constructor : algebric height */
- GroupPoints->SpinBox_DY->RangeStepAndValidator(-999.999, 999.999, step, 3);
+ GroupPoints->SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
/* Second constructor : radius */
- GroupDimensions->SpinBox_DX->RangeStepAndValidator(0.001, 999.999, step, 3);
+ GroupDimensions->SpinBox_DX->RangeStepAndValidator(0.001, COORD_MAX, step, 3);
/* Second constructor : algebric height */
- GroupDimensions->SpinBox_DY->RangeStepAndValidator(-999.999, 999.999, step, 3);
+ GroupDimensions->SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
GroupPoints->SpinBox_DX->SetValue(100.0);
GroupPoints->SpinBox_DY->SetValue(300.0);
double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100);
/* min, max, step and decimals for spin boxes */
- GroupPoints->SpinBox_DX->RangeStepAndValidator(0.001, 999.999, step, 3);
- GroupDimensions->SpinBox_DX->RangeStepAndValidator(0.001, 999.999, step, 3);
+ GroupPoints->SpinBox_DX->RangeStepAndValidator(0.001, COORD_MAX, step, 3);
+ GroupDimensions->SpinBox_DX->RangeStepAndValidator(0.001, COORD_MAX, step, 3);
GroupPoints->SpinBox_DX->SetValue(100.0);
GroupDimensions->SpinBox_DX->SetValue(100.0);
double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100);
/* min, max, step and decimals for spin boxes & initial values */
- GroupPoints->SpinBox_DX->RangeStepAndValidator(0.001, 999.999, step, 3);
- GroupPoints->SpinBox_DY->RangeStepAndValidator(0.001, 999.999, step, 3);
- GroupDimensions->SpinBox_DX->RangeStepAndValidator(0.001, 999.999, step, 3);
- GroupDimensions->SpinBox_DY->RangeStepAndValidator(0.001, 999.999, step, 3);
+ GroupPoints->SpinBox_DX->RangeStepAndValidator(0.001, COORD_MAX, step, 3);
+ GroupPoints->SpinBox_DY->RangeStepAndValidator(0.001, COORD_MAX, step, 3);
+ GroupDimensions->SpinBox_DX->RangeStepAndValidator(0.001, COORD_MAX, step, 3);
+ GroupDimensions->SpinBox_DY->RangeStepAndValidator(0.001, COORD_MAX, step, 3);
GroupPoints->SpinBox_DX->SetValue(300.0);
GroupPoints->SpinBox_DY->SetValue(100.0);
RepairGUI_DivideEdgeDlg.cxx \
RepairGUI_FreeBoundDlg.cxx \
RepairGUI_FreeFacesDlg.cxx \
+ RepairGUI_ChangeOrientationDlg.cxx \
RepairGUI_GlueDlg.cxx
LIB_MOC = \
RepairGUI_DivideEdgeDlg.h \
RepairGUI_FreeBoundDlg.h \
RepairGUI_FreeFacesDlg.h \
+ RepairGUI_ChangeOrientationDlg.h \
RepairGUI_GlueDlg.h
LIB_CLIENT_IDL = SALOME_Exception.idl SALOME_GenericObj.idl SALOME_Component.idl
// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
#include "SUIT_Desktop.h"
#include "SUIT_Session.h"
+#include "SalomeApp_Application.h"
+
#include "RepairGUI_SewingDlg.h" // Method SEWING
#include "RepairGUI_SuppressFacesDlg.h" // Method SUPPRESS FACES
#include "RepairGUI_RemoveHolesDlg.h" // Method SUPPRESS HOLE
#include "RepairGUI_FreeBoundDlg.h" // Method FREE BOUNDARIES
#include "RepairGUI_FreeFacesDlg.h" // Method FREE FACES
#include "RepairGUI_GlueDlg.h" // Method GLUE FACES
+#include "RepairGUI_ChangeOrientationDlg.h" // Method CHANGE ORIENTATION
#include "utilities.h"
using namespace std;
-RepairGUI* RepairGUI::myGUIObject = 0;
-
-//=======================================================================
-// function : GetRepairGUI()
-// purpose : Get the only RepairGUI object [ static ]
-//=======================================================================
-RepairGUI* RepairGUI::GetRepairGUI( GeometryGUI* parent )
-{
- if ( myGUIObject == 0 ) {
- // init RepairGUI only once
- myGUIObject = new RepairGUI( parent );
- }
- return myGUIObject;
-}
-
//=======================================================================
// function : RepairGUI()
// purpose : Constructor
{
}
-
//=======================================================================
// function : ~RepairGUI()
// purpose : Destructor
//=======================================================================
bool RepairGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent)
{
+ SalomeApp_Application* app = getGeometryGUI()->getApp();
+ if (!app) return false;
+
getGeometryGUI()->EmitSignalDeactivateDialog();
QDialog* aDlg = NULL;
case 606: aDlg = new RepairGUI_CloseContourDlg (getGeometryGUI(), parent, ""); break;
case 607: aDlg = new RepairGUI_RemoveIntWiresDlg(getGeometryGUI(), parent, ""); break;
case 608: aDlg = new RepairGUI_DivideEdgeDlg (getGeometryGUI(), parent, ""); break;
- case 609: aDlg = new RepairGUI_FreeBoundDlg (getGeometryGUI(), parent, ""); break;
- case 610: aDlg = new RepairGUI_FreeFacesDlg (getGeometryGUI(), parent, ""); break;
+ case 609: aDlg = new RepairGUI_FreeBoundDlg (getGeometryGUI(), parent, ""); break;
+ case 610: aDlg = new RepairGUI_FreeFacesDlg (getGeometryGUI(), parent, ""); break;
+ case 611: aDlg = new RepairGUI_ChangeOrientationDlg (getGeometryGUI(), parent, ""); break;
default:
- SUIT_Session::session()->activeApplication()->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID));
+ app->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID));
break;
}
#endif
GEOMGUI* GetLibGUI( GeometryGUI* parent )
{
- return RepairGUI::GetRepairGUI( parent );
+ return new RepairGUI( parent );
}
}
// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
// File : RepairGUI.h
// Author : Damien COQUERET
// Module : GEOM
-// $Header$
#ifndef REPAIRGUI_H
#define REPAIRGUI_H
//=================================================================================
class RepairGUI : public GEOMGUI
{
-protected:
- RepairGUI( GeometryGUI* parent ); // hide constructor to avoid direct creation
-
-public :
+public:
+ RepairGUI( GeometryGUI* parent );
~RepairGUI();
- // Get the only RepairGUI object
- static RepairGUI* GetRepairGUI( GeometryGUI* parent );
-
bool OnGUIEvent(int theCommandID, SUIT_Desktop* parent);
-
-private:
- static RepairGUI* myGUIObject; // the only RepairGUI object
-
};
#endif
--- /dev/null
+// GEOM GEOMGUI : GUI for Geometry component
+//
+// Copyright (C) 2003 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 : RepairGUI_ChangeOrientationDlg.cxx
+// Author : Sergey KUUL
+// Module : GEOM
+
+#include "RepairGUI_ChangeOrientationDlg.h"
+
+#include "SalomeApp_Application.h"
+#include "LightApp_SelectionMgr.h"
+#include "SUIT_Session.h"
+#include "SALOME_ListIteratorOfListIO.hxx"
+
+#include "GEOMImpl_Types.hxx"
+
+#include <TopAbs.hxx>
+
+#include <qlabel.h>
+
+using namespace std;
+
+//=================================================================================
+// class : RepairGUI_ChangeOrientationDlg()
+// purpose : Constructs a RepairGUI_ChangeOrientationDlg which is a child of 'parent',
+// with the name 'name' and widget flags set to 'f'.
+// The dialog will by default be modeless, unless you set 'modal' to
+// TRUE to construct a modal dialog.
+//=================================================================================
+RepairGUI_ChangeOrientationDlg::RepairGUI_ChangeOrientationDlg(GeometryGUI* theGeometryGUI,
+ QWidget* parent, const char* name,
+ bool modal, WFlags fl)
+ :GEOMBase_Skeleton(theGeometryGUI, parent, name, modal, WStyle_Customize |
+ WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu)
+{
+ //QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_SUPRESS_FACE")));
+ QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_CHANGE_ORIENTATION")));
+ QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT")));
+
+ setCaption(tr("GEOM_CHANGE_ORIENTATION_TITLE"));
+
+ /***************************************************************/
+ GroupConstructors->setTitle(tr("GEOM_CHANGE_ORIENTATION_TITLE"));
+ RadioButton1->setPixmap(image0);
+ RadioButton2->close(TRUE);
+ RadioButton3->close(TRUE);
+
+ GroupPoints = new DlgRef_1Sel1Check_QTD(this, "GroupPoints");
+ GroupPoints->GroupBox1->setTitle(tr("GEOM_CHANGE_ORIENTATION"));
+ GroupPoints->TextLabel1->setText(tr("GEOM_SELECTED_SHAPE"));
+ GroupPoints->CheckButton1->setText(tr("GEOM_CREATE_COPY"));
+ GroupPoints->PushButton1->setPixmap(image1);
+// GroupPoints->LineEdit1->setReadOnly( true );
+
+ Layout1->addWidget(GroupPoints, 2, 0);
+
+ setHelpFileName("change_orientation.htm");
+
+ Init();
+}
+
+
+//=================================================================================
+// function : ~RepairGUI_ChangeOrientationDlg()
+// purpose : Destroys the object and frees any allocated resources
+//=================================================================================
+RepairGUI_ChangeOrientationDlg::~RepairGUI_ChangeOrientationDlg()
+{
+}
+
+
+//=================================================================================
+// function : Init()
+// purpose :
+//=================================================================================
+void RepairGUI_ChangeOrientationDlg::Init()
+{
+ /* init variables */
+ myEditCurrentArgument = GroupPoints->LineEdit1;
+
+ GroupPoints->CheckButton1->setChecked(true);
+
+ myOkObject = false;
+
+ /* signals and slots connections */
+ connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk()));
+ connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply()));
+
+ connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
+ connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
+
+ connect(GroupPoints->CheckButton1, SIGNAL(toggled(bool)), this, SLOT(CreateCopyModeChanged(bool)));
+
+ connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
+ SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
+
+ initName( tr( "CHANGE_ORIENTATION_NEW_OBJ_NAME" ) );
+}
+
+
+//=================================================================================
+// function : ClickOnOk()
+// purpose : Same than click on apply but close this dialog.
+//=================================================================================
+void RepairGUI_ChangeOrientationDlg::ClickOnOk()
+{
+ if ( ClickOnApply() )
+ ClickOnCancel();
+}
+
+
+//=================================================================================
+// function : ClickOnApply()
+// purpose :
+//=================================================================================
+bool RepairGUI_ChangeOrientationDlg::ClickOnApply()
+{
+// if ( !onAccept() )
+ if ( !onAccept(GroupPoints->CheckButton1->isChecked()) )
+ return false;
+
+ initName();
+
+ myEditCurrentArgument->setText("");
+
+ return true;
+}
+
+
+//=================================================================================
+// function : SelectionIntoArgument()
+// purpose : Called when selection as changed or other case
+//=================================================================================
+void RepairGUI_ChangeOrientationDlg::SelectionIntoArgument()
+{
+ myEditCurrentArgument->setText("");
+ QString aName;
+
+ if(myEditCurrentArgument == GroupPoints->LineEdit1) {
+ if (IObjectCount() != 1) {
+ if (myEditCurrentArgument == GroupPoints->LineEdit1)
+ myOkObject = false;
+ return;
+ }
+ }
+
+ // nbSel == 1
+ Standard_Boolean testResult = Standard_False;
+ GEOM::GEOM_Object_ptr aSelectedObject =
+ GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult );
+
+ if (!testResult)
+ return;
+
+ if (myEditCurrentArgument == GroupPoints->LineEdit1) {
+ myObject = aSelectedObject;
+ myOkObject = true;
+ }
+
+ myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
+
+}
+
+
+//=================================================================================
+// function : SetEditCurrentArgument()
+// purpose :
+//=================================================================================
+void RepairGUI_ChangeOrientationDlg::SetEditCurrentArgument()
+{
+ QPushButton* send = (QPushButton*)sender();
+
+ if( send == GroupPoints->PushButton1 )
+ {
+ GroupPoints->LineEdit1->setFocus();
+ myEditCurrentArgument = GroupPoints->LineEdit1;
+ }
+ SelectionIntoArgument();
+}
+
+
+//=================================================================================
+// function : LineEditReturnPressed()
+// purpose :
+//=================================================================================
+void RepairGUI_ChangeOrientationDlg::LineEditReturnPressed()
+{
+ QLineEdit* send = (QLineEdit*)sender();
+ if( send == GroupPoints->LineEdit1 ) {
+ myEditCurrentArgument = GroupPoints->LineEdit1;
+ GEOMBase_Skeleton::LineEditReturnPressed();
+ }
+}
+
+
+//=================================================================================
+// function : ActivateThisDialog()
+// purpose :
+//=================================================================================
+void RepairGUI_ChangeOrientationDlg::ActivateThisDialog()
+{
+ GEOMBase_Skeleton::ActivateThisDialog();
+ connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
+ SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
+
+}
+
+
+//=================================================================================
+// function : enterEvent()
+// purpose : Mouse enter onto the dialog to activate it
+//=================================================================================
+void RepairGUI_ChangeOrientationDlg::enterEvent(QEvent* e)
+{
+ if ( !GroupConstructors->isEnabled() )
+ ActivateThisDialog();
+}
+
+
+//=================================================================================
+// function : closeEvent()
+// purpose :
+//=================================================================================
+void RepairGUI_ChangeOrientationDlg::closeEvent(QCloseEvent* e)
+{
+ //myGeomGUI->SetState( -1 );
+ GEOMBase_Skeleton::closeEvent( e );
+}
+
+
+//=================================================================================
+// function : createOperation
+// purpose :
+//=================================================================================
+GEOM::GEOM_IOperations_ptr RepairGUI_ChangeOrientationDlg::createOperation()
+{
+ return getGeomEngine()->GetIHealingOperations( getStudyId() );
+}
+
+
+//=================================================================================
+// function : isValid
+// purpose :
+//=================================================================================
+bool RepairGUI_ChangeOrientationDlg::isValid( QString& msg )
+{
+ return myOkObject;
+}
+
+
+//=================================================================================
+// function : execute
+// purpose :
+//=================================================================================
+bool RepairGUI_ChangeOrientationDlg::execute( ObjectList& objects )
+{
+ bool toCreateCopy = GroupPoints->CheckButton1->isChecked();
+
+ GEOM::GEOM_Object_var anObj;
+ if(toCreateCopy) {
+ anObj = GEOM::GEOM_IHealingOperations::_narrow(getOperation())->ChangeOrientationCopy(myObject);
+ }
+ else {
+ anObj = GEOM::GEOM_IHealingOperations::_narrow(getOperation())->ChangeOrientation(myObject);
+ }
+
+ if ( !anObj->_is_nil() )
+ objects.push_back( anObj._retn() );
+
+ return true;
+}
+
+
+//=================================================================================
+// function : CreateCopyModeChanged()
+// purpose :
+//=================================================================================
+void RepairGUI_ChangeOrientationDlg::CreateCopyModeChanged(bool isCreateCopy)
+{
+ GroupBoxName->setEnabled(isCreateCopy);
+}
--- /dev/null
+// GEOM GEOMGUI : GUI for Geometry component
+//
+// Copyright (C) 2003 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 : RepairGUI_ChangeOrientationDlg.h
+// Author : Sergey KUUL
+// Module : GEOM
+
+#ifndef DIALOGBOX_CHANGEORIENTATION_H
+#define DIALOGBOX_CHANGEORIENTATION_H
+
+#include "GEOMBase_Skeleton.h"
+#include "DlgRef_1Sel1Check_QTD.h"
+#include <qcheckbox.h>
+
+//#include <TColStd_IndexedMapOfInteger.hxx>
+
+//=================================================================================
+// class : RepairGUI_ChangeOrientationDlg
+// purpose :
+//=================================================================================
+class RepairGUI_ChangeOrientationDlg : public GEOMBase_Skeleton
+{
+ Q_OBJECT
+
+public:
+ RepairGUI_ChangeOrientationDlg(GeometryGUI* theGeometryGUI, QWidget* parent = 0,
+ const char* name = 0, bool modal = FALSE, WFlags fl = 0);
+ ~RepairGUI_ChangeOrientationDlg();
+
+protected:
+ // redefined from GEOMBase_Helper
+ virtual GEOM::GEOM_IOperations_ptr createOperation();
+ virtual bool isValid( QString& );
+ virtual bool execute( ObjectList& objects );
+
+private :
+ void Init();
+ void enterEvent(QEvent* e);
+ void closeEvent(QCloseEvent* e);
+
+ GEOM::GEOM_Object_var myObject;
+ bool myOkObject;
+
+ DlgRef_1Sel1Check_QTD* GroupPoints;
+
+
+private slots:
+ void ClickOnOk();
+ bool ClickOnApply();
+ void ActivateThisDialog();
+ void LineEditReturnPressed();
+ void SelectionIntoArgument();
+ void SetEditCurrentArgument();
+ void CreateCopyModeChanged(bool isCreateCopy);
+};
+
+#endif // DIALOGBOX_SUPPRESSFACES_H
return result;
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void RepairGUI_FreeBoundDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ onHelp();
+ }
+}
void Init();
void enterEvent( QEvent* e );
void closeEvent( QCloseEvent* e );
+ void keyPressEvent( QKeyEvent* e );
void activateSelection();
virtual GEOM::GEOM_IOperations_ptr createOperation();
onSelectionDone();
}
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void RepairGUI_FreeFacesDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ onHelp();
+ }
+}
void Init();
void enterEvent(QEvent* e);
void closeEvent(QCloseEvent* e);
+ void keyPressEvent(QKeyEvent* e);
void activateSelection();
GEOM_Displayer* getDisplayer();
#include <TopoDS_Compound.hxx>
#include <TopoDS_Shape.hxx>
+#include <Standard_Failure.hxx>
#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
#ifdef WNT
BRep_Builder B;
B.MakeCompound( compound );
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
IFSelect_ReturnStatus status = aReader.ReadFile(theFileName.ToCString());
if (status == IFSelect_RetDone) {
ShHealOper_ShapeProcess.cxx \
ShHealOper_SplitCurve2d.cxx \
ShHealOper_SplitCurve3d.cxx \
+ ShHealOper_ChangeOrientation.cxx \
ShHealOper_Tool.cxx \
LIB_CLIENT_IDL =
ShHealOper_SpiltCurve2d.hxx \
ShHealOper_SplitCurve2d.hxx \
ShHealOper_SplitCurve3d.hxx \
+ ShHealOper_ChangeOrientation.hxx \
ShHealOper_Tool.hxx
# idl files
--- /dev/null
+// 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: ShHealOper_ChangeOrientation.cxx
+// Created: 11.07.06 11:46:45
+// Author: Sergey KUUL
+
+
+#include <ShHealOper_ChangeOrientation.hxx>
+
+#include <BRep_Builder.hxx>
+#include <TopoDS_Iterator.hxx>
+
+//=======================================================================
+//function : ShHealOper_ChangeOrientation()
+//purpose : Constructor
+//=======================================================================
+
+ShHealOper_ChangeOrientation::ShHealOper_ChangeOrientation ( const TopoDS_Shape& theShape )
+{
+ Init(theShape);
+}
+
+//=======================================================================
+//function : Init
+//purpose :
+//=======================================================================
+
+void ShHealOper_ChangeOrientation::Init(const TopoDS_Shape& theShape)
+{
+ ShHealOper_Tool::Init(theShape);
+}
+
+//=======================================================================
+//function : Perform
+//purpose :
+//=======================================================================
+
+Standard_Boolean ShHealOper_ChangeOrientation::Perform()
+{
+ BRep_Builder B;
+ if (myInitShape.ShapeType() == TopAbs_SHELL) {
+ myResultShape = myInitShape.EmptyCopied();
+ TopoDS_Iterator itr(myInitShape);
+ while (itr.More()) {
+ B.Add(myResultShape,itr.Value().Reversed());
+ itr.Next();
+ }
+ }
+ else if (myInitShape.ShapeType() == TopAbs_FACE) {
+ myResultShape = myInitShape.EmptyCopied();
+ TopoDS_Iterator itr(myInitShape);
+ while (itr.More()) {
+ B.Add(myResultShape,itr.Value());
+ itr.Next();
+ }
+ myResultShape.Reverse();
+ }
+ else if (myInitShape.ShapeType() == TopAbs_WIRE) {
+ myResultShape = myInitShape.Reversed();
+ }
+ else if (myInitShape.ShapeType() == TopAbs_EDGE) {
+ myResultShape = myInitShape.Reversed();
+ }
+ else {
+ return false;
+ }
+
+ return true;
+
+}
--- /dev/null
+// 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: ShHealOper_ChangeOrientation.hxx
+// Created: 11.07.06 11:22:26
+// Author: Sergey KUUL
+
+
+#ifndef ShHealOper_ChangeOrientation_HeaderFile
+#define ShHealOper_ChangeOrientation_HeaderFile
+
+#include <MMgt_TShared.hxx>
+#include <ShHealOper_Tool.hxx>
+#include <TopoDS_Shape.hxx>
+
+/// Class ShHealOper_ChangeOrientation
+// Intended for change orientation of given shape
+// if shape is Shell - create empty copy and put to it
+// each face as Reversed()
+
+class ShHealOper_ChangeOrientation : public ShHealOper_Tool
+{
+ public:
+ // ---------- PUBLIC METHODS ----------
+
+ /// Empty constructor
+ Standard_EXPORT ShHealOper_ChangeOrientation () {}
+
+ /// Copy constructor
+ Standard_EXPORT ShHealOper_ChangeOrientation (const TopoDS_Shape& theShape);
+ //Method for initalization by whole shape.
+
+ Standard_EXPORT virtual void Init(const TopoDS_Shape& theShape);
+ //Method for initalization by whole shape.
+
+ Standard_EXPORT Standard_Boolean Perform();
+ //Change orientation
+
+
+ public:
+// Declaration of CASCADE RTTI
+//DEFINE_STANDARD_RTTI (ShHealOper_RemoveInternalWires)
+};
+
+// Definition of HANDLE object using Standard_DefineHandle.hxx
+//DEFINE_STANDARD_HANDLE (ShHealOper_RemoveInternalWires, )
+
+
+#endif
// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
#include "SUIT_Session.h"
#include "SUIT_Desktop.h"
+#include "SalomeApp_Application.h"
+
#include "TransformationGUI_MultiTranslationDlg.h" // Method MULTI TRANSLATION
#include "TransformationGUI_MultiRotationDlg.h" // Method MULTI ROTATION
#include "TransformationGUI_TranslationDlg.h" // Method TRANSLATION
using namespace std;
-TransformationGUI* TransformationGUI::myGUIObject = 0;
-
-//=======================================================================
-// function : GetTransformationGUI()
-// purpose : Get the only TransformationGUI object [ static ]
-//=======================================================================
-TransformationGUI* TransformationGUI::GetTransformationGUI( GeometryGUI* parent )
-{
- if ( myGUIObject == 0 ) {
- // init TransformationGUI only once
- myGUIObject = new TransformationGUI( parent );
- }
- return myGUIObject;
-}
-
//=======================================================================
// function : TransformationGUI()
// purpose : Constructor
{
}
-
//=======================================================================
// function : ~TransformationGUI()
// purpose : Destructor
//=======================================================================
bool TransformationGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent)
{
+ SalomeApp_Application* app = getGeometryGUI()->getApp();
+ if (!app) return false;
+
getGeometryGUI()->EmitSignalDeactivateDialog();
QDialog* aDlg = NULL;
aDlg = new TransformationGUI_MultiRotationDlg( getGeometryGUI(), parent, "" );
break;
default:
- SUIT_Session::session()->activeApplication()->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID));
+ app->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID));
break;
}
- if ( aDlg != NULL )
+ if (aDlg != NULL)
aDlg->show();
return true;
#endif
GEOMGUI* GetLibGUI( GeometryGUI* parent )
{
- return TransformationGUI::GetTransformationGUI( parent );
+ return new TransformationGUI( parent );
}
}
// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
// File : TransformationGUI.h
// Author : Damien COQUERET
// Module : GEOM
-// $Header$
#ifndef TRANSFORMATIONGUI_H
#define TRANSFORMATIONGUI_H
//=================================================================================
class TransformationGUI : public GEOMGUI
{
-protected:
- TransformationGUI( GeometryGUI* parent ); // hide constructor to avoid direct creation
-
-public :
+public:
+ TransformationGUI( GeometryGUI* parent );
~TransformationGUI();
- // Get the only TransformationGUI object
- static TransformationGUI* GetTransformationGUI( GeometryGUI* parent );
-
bool OnGUIEvent(int theCommandID, SUIT_Desktop* parent);
-
-private:
- static TransformationGUI* myGUIObject; // the only TransformationGUI object
};
#endif
double SpecificStep1 = 5;
double SpecificStep2 = 1;
/* min, max, step and decimals for spin boxes & initial values */
- GroupPoints->SpinBox_DX->RangeStepAndValidator(1.0, 999.999, SpecificStep2, 3);
+ GroupPoints->SpinBox_DX->RangeStepAndValidator(1.0, MAX_NUMBER, SpecificStep2, 3);
GroupPoints->SpinBox_DX->SetValue(myNbTimes1);
- GroupDimensions->SpinBox_DX1->RangeStepAndValidator(-999.999, 999.999, SpecificStep1, 3);
- GroupDimensions->SpinBox_DY1->RangeStepAndValidator(1.0, 999.999, SpecificStep2, 3);
- GroupDimensions->SpinBox_DX2->RangeStepAndValidator(-999.999, 999.999, step, 3);
- GroupDimensions->SpinBox_DY2->RangeStepAndValidator(1.0, 999.999, SpecificStep2, 3);
+ GroupDimensions->SpinBox_DX1->RangeStepAndValidator(COORD_MIN, COORD_MAX, SpecificStep1, 3);
+ GroupDimensions->SpinBox_DY1->RangeStepAndValidator(1.0, MAX_NUMBER, SpecificStep2, 3);
+ GroupDimensions->SpinBox_DX2->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ GroupDimensions->SpinBox_DY2->RangeStepAndValidator(1.0, MAX_NUMBER, SpecificStep2, 3);
GroupDimensions->SpinBox_DX1->SetValue(myAng);
GroupDimensions->SpinBox_DY1->SetValue(myNbTimes1);
GroupDimensions->SpinBox_DX2->SetValue(myStep);
double SpecificStep = 1;
/* min, max, step and decimals for spin boxes & initial values */
- GroupPoints->SpinBox_DX->RangeStepAndValidator(-999.999, 999.999, step, 3);
- GroupPoints->SpinBox_DY->RangeStepAndValidator(1.0, 999.999, SpecificStep, 3);
+ GroupPoints->SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ GroupPoints->SpinBox_DY->RangeStepAndValidator(1.0, MAX_NUMBER, SpecificStep, 3);
GroupPoints->SpinBox_DX->SetValue(myStepU);
GroupPoints->SpinBox_DY->SetValue(myNbTimesU);
- GroupDimensions->SpinBox_DX1->RangeStepAndValidator(-999.999, 999.999, step, 3);
- GroupDimensions->SpinBox_DY1->RangeStepAndValidator(1.0, 999.999, SpecificStep, 3);
- GroupDimensions->SpinBox_DX2->RangeStepAndValidator(-999.999, 999.999, step, 3);
- GroupDimensions->SpinBox_DY2->RangeStepAndValidator(1.0, 999.999, SpecificStep, 3);
+ GroupDimensions->SpinBox_DX1->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ GroupDimensions->SpinBox_DY1->RangeStepAndValidator(1.0, MAX_NUMBER, SpecificStep, 3);
+ GroupDimensions->SpinBox_DX2->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ GroupDimensions->SpinBox_DY2->RangeStepAndValidator(1.0, MAX_NUMBER, SpecificStep, 3);
GroupDimensions->SpinBox_DX1->SetValue(myStepU);
GroupDimensions->SpinBox_DY1->SetValue(myNbTimesU);
GroupDimensions->SpinBox_DX2->SetValue(myStepV);
double step = 1;
/* min, max, step and decimals for spin boxes & initial values */
- GroupPoints->SpinBox_DX->RangeStepAndValidator(-999.999, 999.999, step, 3);
+ GroupPoints->SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
GroupPoints->SpinBox_DX->setPrecision(5);
//@ GroupPoints->SpinBox_DX->setDblPrecision(1e-05);
GroupPoints->SpinBox_DX->SetValue(1e-05);
//=================================================================================
bool TransformationGUI_OffsetDlg::isValid( QString& msg )
{
- return !(myObjects.length() == 0);
+ //return !(myObjects.length() == 0);
+ if (myObjects.length() == 0) return false;
+
+ for (int i = 0; i < myObjects.length(); i++)
+ {
+ GEOM::shape_type aType = myObjects[i]->GetShapeType();
+ if( aType != GEOM::FACE && aType != GEOM::SHELL && aType != GEOM::SOLID ){
+ msg = tr("ERROR_SHAPE_TYPE");
+ return false;
+ }
+ }
+ return true;
}
if (GroupPoints->CheckButton1->isChecked() || IsPreview())
for (int i = 0; i < myObjects.length(); i++)
{
+
anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->OffsetShapeCopy( myObjects[i], GetOffset() );
if ( !anObj->_is_nil() )
objects.push_back( anObj._retn() );
double anAngle = 0;
double SpecificStep = 5;
/* min, max, step and decimals for spin boxes & initial values */
- GroupPoints->SpinBox_DX->RangeStepAndValidator(-999.999, 999.999, SpecificStep, 3);
+ GroupPoints->SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, SpecificStep, 3);
GroupPoints->SpinBox_DX->SetValue(anAngle);
// Activate Create a Copy mode
double aFactor = 2.0;
double SpecificStep = 0.5;
/* min, max, step and decimals for spin boxes & initial values */
- GroupPoints->SpinBox_DX->RangeStepAndValidator(-999.999, 999.999, SpecificStep, 3);
+ GroupPoints->SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, SpecificStep, 3);
GroupPoints->SpinBox_DX->SetValue(aFactor);
// Activate Create a Copy mode
double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100);
/* min, max, step and decimals for spin boxes & initial values */
- GroupPoints->SpinBox1->RangeStepAndValidator(-999.999, 999.999, step, 3);
- GroupPoints->SpinBox2->RangeStepAndValidator(-999.999, 999.999, step, 3);
- GroupPoints->SpinBox3->RangeStepAndValidator(-999.999, 999.999, step, 3);
+ GroupPoints->SpinBox1->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ GroupPoints->SpinBox2->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ GroupPoints->SpinBox3->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
GroupPoints->SpinBox1->SetValue(0.0);
GroupPoints->SpinBox2->SetValue(0.0);