]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
First stable version after merging with V3_2_2
authorabd <abd@opencascade.com>
Thu, 19 Oct 2006 06:49:48 +0000 (06:49 +0000)
committerabd <abd@opencascade.com>
Thu, 19 Oct 2006 06:49:48 +0000 (06:49 +0000)
201 files changed:
Makefile.in
adm_local/unix/make_commence.in
configure.in.base
doc/salome/gui/GEOM/blocks_operations.htm
doc/salome/gui/GEOM/box.htm
doc/salome/gui/GEOM/building_by_blocks.htm
doc/salome/gui/GEOM/change_orientation.htm [new file with mode: 0755]
doc/salome/gui/GEOM/extrusion.htm
doc/salome/gui/GEOM/files/salome2_sp3_booleangui_functions.htm
doc/salome/gui/GEOM/files/salome2_sp3_geomtoolsgui_functions.htm
doc/salome/gui/GEOM/files/salome2_sp3_measuregui_functions.htm
doc/salome/gui/GEOM/filling.htm
doc/salome/gui/GEOM/geom.log
doc/salome/gui/GEOM/geometrical_objects.htm
doc/salome/gui/GEOM/image38.gif [new file with mode: 0755]
doc/salome/gui/GEOM/image40.gif [new file with mode: 0755]
doc/salome/gui/GEOM/image43.gif [new file with mode: 0755]
doc/salome/gui/GEOM/local_coordinate_system.htm
doc/salome/gui/GEOM/measurement_tools.htm
doc/salome/gui/GEOM/pics/changeorientation.png [new file with mode: 0755]
doc/salome/gui/GEOM/pics/filling.png
doc/salome/gui/GEOM/pics/plane3.png
doc/salome/gui/GEOM/pics/workplane4.png
doc/salome/gui/GEOM/pipe_creation.htm
doc/salome/gui/GEOM/plane.htm
doc/salome/gui/GEOM/primitives.htm
doc/salome/gui/GEOM/revolution.htm
doc/salome/gui/GEOM/transformation_operations.htm
doc/salome/gui/GEOM/whcsh_home.htm
doc/salome/gui/GEOM/whdata/whftdata0.htm
doc/salome/gui/GEOM/whdata/whfts.htm
doc/salome/gui/GEOM/whdata/whfwdata0.htm
doc/salome/gui/GEOM/whdata/whtdata0.htm
doc/salome/gui/GEOM/whfform.htm
doc/salome/gui/GEOM/whgdata/whlstt14.htm
doc/salome/gui/GEOM/whiform.htm
doc/salome/gui/GEOM/whnjs.htm
doc/salome/gui/GEOM/whres.xml
doc/salome/gui/GEOM/whskin_info.htm
doc/salome/gui/GEOM/whskin_pickup.htm
doc/salome/gui/GEOM/whstart.js
doc/salome/gui/GEOM/whtdhtml.htm
doc/salome/gui/GEOM/whtopic.js
doc/salome/gui/GEOM/whxdata/whftdata0.xml
doc/salome/gui/GEOM/whxdata/whfwdata0.xml
doc/salome/gui/GEOM/whxdata/whtdata0.xml
doc/salome/gui/GEOM/working_plane.htm
idl/GEOM_Gen.idl
resources/SalomeApp.xml
resources/change_orientation.png [new file with mode: 0755]
resources/prism2.png [new file with mode: 0644]
src/BasicGUI/BasicGUI.cxx
src/BasicGUI/BasicGUI.h
src/BasicGUI/BasicGUI_CircleDlg.cxx
src/BasicGUI/BasicGUI_CircleDlg.h
src/BasicGUI/BasicGUI_EllipseDlg.cxx
src/BasicGUI/BasicGUI_MarkerDlg.cxx
src/BasicGUI/BasicGUI_PlaneDlg.cxx
src/BasicGUI/BasicGUI_PointDlg.cxx
src/BasicGUI/BasicGUI_VectorDlg.cxx
src/BasicGUI/BasicGUI_WorkingPlaneDlg.cxx
src/BlocksGUI/BlocksGUI.cxx
src/BlocksGUI/BlocksGUI.h
src/BlocksGUI/BlocksGUI_TrsfDlg.cxx
src/BooleanGUI/BooleanGUI.cxx
src/BooleanGUI/BooleanGUI.h
src/BuildGUI/BuildGUI.cxx
src/BuildGUI/BuildGUI.h
src/BuildGUI/BuildGUI_FaceDlg.cxx
src/DisplayGUI/DisplayGUI.cxx
src/DisplayGUI/DisplayGUI.h
src/DlgRef/DlgRef_SpinBox.cxx
src/DlgRef/DlgRef_SpinBox.h
src/EntityGUI/EntityGUI.cxx
src/EntityGUI/EntityGUI.h
src/EntityGUI/EntityGUI_SketcherDlg.cxx
src/EntityGUI/EntityGUI_SketcherDlg.h
src/GEOM/GEOM_Engine.cxx
src/GEOM/GEOM_Function.cxx
src/GEOM/GEOM_PythonDump.cxx
src/GEOMBase/GEOMBase_Skeleton.cxx
src/GEOMBase/GEOMBase_Skeleton.h
src/GEOMBase/Makefile.in
src/GEOMContext/GEOM_icons.po
src/GEOMContext/GEOM_msg_en.po
src/GEOMContext/GEOM_msg_fr.po
src/GEOMGUI/GEOMGUI_OCCSelector.cxx
src/GEOMGUI/GEOM_Displayer.cxx
src/GEOMGUI/GEOM_images.po
src/GEOMGUI/GEOM_msg_en.po
src/GEOMGUI/GEOM_msg_fr.po
src/GEOMGUI/GeometryGUI.cxx
src/GEOMGUI/GeometryGUI_Swig.cxx
src/GEOMGUI/GeometryGUI_Swig.hxx
src/GEOMGUI/GeometryGUI_Swig.i
src/GEOMImpl/GEOMImpl_BooleanDriver.cxx
src/GEOMImpl/GEOMImpl_ExportDriver.cxx
src/GEOMImpl/GEOMImpl_HealingDriver.cxx
src/GEOMImpl/GEOMImpl_HealingDriver.hxx
src/GEOMImpl/GEOMImpl_I3DPrimOperations.cxx
src/GEOMImpl/GEOMImpl_IBasicOperations.cxx
src/GEOMImpl/GEOMImpl_IBlocksOperations.cxx
src/GEOMImpl/GEOMImpl_IBooleanOperations.cxx
src/GEOMImpl/GEOMImpl_ICurvesOperations.cxx
src/GEOMImpl/GEOMImpl_IGroupOperations.cxx
src/GEOMImpl/GEOMImpl_IHealingOperations.cxx
src/GEOMImpl/GEOMImpl_IHealingOperations.hxx
src/GEOMImpl/GEOMImpl_IInsertOperations.cxx
src/GEOMImpl/GEOMImpl_ILocalOperations.cxx
src/GEOMImpl/GEOMImpl_IMeasureOperations.cxx
src/GEOMImpl/GEOMImpl_IMeasureOperations.hxx
src/GEOMImpl/GEOMImpl_IShapesOperations.cxx
src/GEOMImpl/GEOMImpl_IShapesOperations.hxx
src/GEOMImpl/GEOMImpl_ITransformOperations.cxx
src/GEOMImpl/GEOMImpl_ImportDriver.cxx
src/GEOMImpl/GEOMImpl_LineDriver.cxx
src/GEOMImpl/GEOMImpl_PlaneDriver.cxx
src/GEOMImpl/GEOMImpl_PositionDriver.cxx
src/GEOMImpl/GEOMImpl_ShapeDriver.cxx
src/GEOMImpl/GEOMImpl_SketcherDriver.cxx
src/GEOMImpl/GEOMImpl_Types.hxx
src/GEOMToolsGUI/GEOMToolsGUI.cxx
src/GEOMToolsGUI/GEOMToolsGUI.h
src/GEOMToolsGUI/GEOMToolsGUI_1.cxx
src/GEOMToolsGUI/GEOMToolsGUI_NbIsosDlg.cxx
src/GEOMToolsGUI/GEOMToolsGUI_NbIsosDlg.h
src/GEOMToolsGUI/GEOMToolsGUI_TransparencyDlg.cxx
src/GEOMToolsGUI/GEOMToolsGUI_TransparencyDlg.h
src/GEOM_I/GEOM_Gen_i.cc
src/GEOM_I/GEOM_IBooleanOperations_i.cc
src/GEOM_I/GEOM_IHealingOperations_i.cc
src/GEOM_I/GEOM_IHealingOperations_i.hh
src/GEOM_I/GEOM_IMeasureOperations_i.cc
src/GEOM_I/GEOM_IMeasureOperations_i.hh
src/GEOM_I/GEOM_IShapesOperations_i.cc
src/GEOM_I/GEOM_IShapesOperations_i.hh
src/GEOM_I/GEOM_ITransformOperations_i.cc
src/GEOM_I/Makefile.in
src/GEOM_I_Superv/GEOM_Superv_i.cc
src/GEOM_SWIG/GEOM_TestMeasures.py
src/GEOM_SWIG/GEOM_TestOthers.py
src/GEOM_SWIG/batchmode_geompy.py
src/GEOM_SWIG/geompy.py
src/GenerationGUI/GenerationGUI.cxx
src/GenerationGUI/GenerationGUI.h
src/GenerationGUI/GenerationGUI_FillingDlg.cxx
src/GenerationGUI/GenerationGUI_PrismDlg.cxx
src/GenerationGUI/GenerationGUI_PrismDlg.h
src/GenerationGUI/GenerationGUI_RevolDlg.cxx
src/GroupGUI/GroupGUI.cxx
src/GroupGUI/GroupGUI.h
src/GroupGUI/GroupGUI_GroupDlg.cxx
src/MeasureGUI/MeasureGUI.cxx
src/MeasureGUI/MeasureGUI.h
src/MeasureGUI/MeasureGUI_CheckShapeDlg.cxx
src/MeasureGUI/MeasureGUI_CheckShapeDlg.h
src/MeasureGUI/MeasureGUI_Skeleton.cxx
src/MeasureGUI/MeasureGUI_Skeleton.h
src/NMTAlgo/NMTAlgo_Splitter.cxx
src/NMTTools/NMTTools_DEProcessor.cxx
src/NMTTools/NMTTools_PaveFiller.cxx
src/NMTTools/NMTTools_PaveFiller_1.cxx
src/NMTTools/NMTTools_PaveFiller_4.cxx
src/NMTTools/NMTTools_PaveFiller_5.cxx
src/NMTTools/NMTTools_PaveFiller_6.cxx
src/NMTTools/NMTTools_PaveFiller_7.cxx
src/OBJECT/GEOM_AISTrihedron.cxx
src/OBJECT/GEOM_AssemblyBuilder.cxx
src/OperationGUI/OperationGUI_ArchimedeDlg.cxx
src/OperationGUI/OperationGUI_ChamferDlg.cxx
src/OperationGUI/OperationGUI_ClippingDlg.cxx
src/OperationGUI/OperationGUI_FilletDlg.cxx
src/OperationGUI/OperationGUI_MaterialDlg.cxx
src/PrimitiveGUI/PrimitiveGUI.cxx
src/PrimitiveGUI/PrimitiveGUI.h
src/PrimitiveGUI/PrimitiveGUI_BoxDlg.cxx
src/PrimitiveGUI/PrimitiveGUI_ConeDlg.cxx
src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.cxx
src/PrimitiveGUI/PrimitiveGUI_SphereDlg.cxx
src/PrimitiveGUI/PrimitiveGUI_TorusDlg.cxx
src/RepairGUI/Makefile.in
src/RepairGUI/RepairGUI.cxx
src/RepairGUI/RepairGUI.h
src/RepairGUI/RepairGUI_ChangeOrientationDlg.cxx [new file with mode: 0644]
src/RepairGUI/RepairGUI_ChangeOrientationDlg.h [new file with mode: 0644]
src/RepairGUI/RepairGUI_FreeBoundDlg.cxx
src/RepairGUI/RepairGUI_FreeBoundDlg.h
src/RepairGUI/RepairGUI_FreeFacesDlg.cxx
src/RepairGUI/RepairGUI_FreeFacesDlg.h
src/STEPImport/STEPImport.cxx
src/ShHealOper/Makefile.in
src/ShHealOper/ShHealOper_ChangeOrientation.cxx [new file with mode: 0644]
src/ShHealOper/ShHealOper_ChangeOrientation.hxx [new file with mode: 0644]
src/TransformationGUI/TransformationGUI.cxx
src/TransformationGUI/TransformationGUI.h
src/TransformationGUI/TransformationGUI_MultiRotationDlg.cxx
src/TransformationGUI/TransformationGUI_MultiTranslationDlg.cxx
src/TransformationGUI/TransformationGUI_OffsetDlg.cxx
src/TransformationGUI/TransformationGUI_RotationDlg.cxx
src/TransformationGUI/TransformationGUI_ScaleDlg.cxx
src/TransformationGUI/TransformationGUI_TranslationDlg.cxx

index 8c29352c376ccba494c462fc7c28de592468f2de..5329155914234b21be589f6ab0d847f9e5918516 100644 (file)
@@ -63,6 +63,7 @@ chamfer.png \
 chamferall.png \
 chamferedge.png \
 chamferface.png \
+change_orientation.png \
 check.png \
 circle.png \
 circlepointvector.png \
@@ -122,6 +123,7 @@ point2.png \
 pointonedge.png \
 polyline.png \
 prism.png \
+prism2.png \
 revol.png \
 rotate.png \
 scale.png \
index 8805b6d6d8d51b1f4d5fd00bbe1a34138f12d0d0..8a907ac9e004198c5ac89786a30537cfb797cd4b 100644 (file)
@@ -1,6 +1,8 @@
 # common directories to put headerfiles
 inc_builddir=$(top_builddir)/include/salome
 
+MODULE_NAME=@MODULE_NAME@
+
 @SET_MAKE@
 SHELL=/bin/sh
 
index 1a444a1041d14321316c45eb4ba3777d371395c2..b24a929ceca3bc9c5bbc1df5dd22287ab46e4962 100644 (file)
@@ -23,11 +23,15 @@ AC_CANONICAL_HOST
 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
@@ -325,7 +329,7 @@ else
 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
index 4b606d3af95fb5a8764f8ef9e24b023d9bb86bfd..f3068888d8130eb533e908934a614b28b345c810 100755 (executable)
@@ -15,6 +15,7 @@ if (navigator.appName !="Netscape")
 <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">
 <!--
@@ -79,15 +80,18 @@ if (window.writeIntopicBar)
 
 <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">&nbsp;</p>
+
 <p class="whs1">gg = salome.ImportComponentGUI(&quot;GEOM&quot;)</p>
 
-<p>&nbsp;</p>
+<p class="whs1">&nbsp;</p>
 
-<p># create vertices</p>
+<p class="whs2"># create vertices</p>
 
 <p class="whs1">p_25_25_50 = geompy.MakeVertex(25., 
  25., 50.)</p>
@@ -98,9 +102,13 @@ if (window.writeIntopicBar)
 <p class="whs1">p_25_50_25 = geompy.MakeVertex(25., 
  50., 25.)</p>
 
+<p class="whs1">&nbsp;</p>
+
 <p class="whs1">box = geompy.MakeBoxDXDYDZ(50, 
  50, 50)</p>
 
+<p class="whs1">&nbsp;</p>
+
 <p class="whs1">top_face = geompy.GetFaceNearPoint(box, 
  p_25_25_50)</p>
 
@@ -110,18 +118,21 @@ if (window.writeIntopicBar)
 <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">&nbsp;</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>&nbsp;</p>
+<p class="whs1">&nbsp;</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>
@@ -129,9 +140,10 @@ if (window.writeIntopicBar)
 <p class="whs1">box_tr2 = geompy.MakeMultiTransformation2D(box, 
  xz_face_ind, yz_face_ind, 3, top_face_ind, 0, 2)</p>
 
-<p>&nbsp;</p>
+<p class="whs1">&nbsp;</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, 
  &quot;Box&quot;)</p>
@@ -142,9 +154,9 @@ if (window.writeIntopicBar)
 <p class="whs1">id_box_tr2 = geompy.addToStudy(box_tr2, 
  &quot;Multi-transformed Block 2D&quot;)</p>
 
-<p>&nbsp;</p>
+<p class="whs1">&nbsp;</p>
 
-<p># display the results</p>
+<p class="whs2"># display the results</p>
 
 <p class="whs1">gg.createAndDisplayGO(id_box)</p>
 
@@ -152,10 +164,10 @@ if (window.writeIntopicBar)
 
 <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>&nbsp;</p>
+<p class="whs1">&nbsp;</p>
 
 <h3><a name=bookmark5>Explode on Blocks</a></h3>
 
@@ -163,11 +175,14 @@ if (window.writeIntopicBar)
 
 <p class="whs1">import salome</p>
 
+<p class="whs1">&nbsp;</p>
+
 <p class="whs1">gg = salome.ImportComponentGUI(&quot;GEOM&quot;)</p>
 
-<p>&nbsp;</p>
+<p class="whs1">&nbsp;</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>
@@ -176,31 +191,38 @@ if (window.writeIntopicBar)
 
 <p class="whs1">&nbsp;</p>
 
-<p># make a compound</p>
+<p class="whs2"># make a compound</p>
 
 <p class="whs1">compound = geompy.MakeCompound([box, 
  sphere])</p>
 
-<p>&nbsp;</p>
+<p class="whs2">&nbsp;</p>
+
+<p class="whs2"># get all the blocks 
+ of the given compound, by criteria: min_nb_faces &lt;= nb. of faces &lt;= 
+ 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>&nbsp;</p>
+<p class="whs1">&nbsp;</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, 
  &quot;Compound&quot;)</p>
 
 <p class="whs1">id_make_block_explode 
- = geompy.addToStudy(make_block_explode[0], &quot;MakeBlockExplode&quot;)</p>
+ = geompy.addToStudyInFather(compound, make_block_explode[0], &quot;MakeBlockExplode&quot;)</p>
 
-<p>&nbsp;</p>
+<p class="whs1">&nbsp;</p>
 
-<p># display the results</p>
+<p class="whs2"># display the results</p>
 
 <p class="whs1">gg.createAndDisplayGO(id_compound)</p>
 
@@ -217,42 +239,45 @@ if (window.writeIntopicBar)
 
 <p class="whs1">import salome</p>
 
-<p>&nbsp;</p>
+<p class="whs1">&nbsp;</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>&nbsp;</p>
-
-<p># check and improve</p>
-
-<p class="whs1">check_box = geompy.CheckAndImprove(box)</p>
-
-<p>&nbsp;&nbsp;</p>
+<p class="whs1">&nbsp;</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>&nbsp;</p>
+<p class="whs1">&nbsp;</p>
 
-<p># add objects in the study</p>
+<p class="whs2"># add objects in the 
+ study</p>
 
 <p class="whs1">geompy.addToStudy(check_box, 
  &quot;Box&quot;)</p>
 
+<p class="whs1">ii = 1</p>
+
 <p class="whs1">for chain in listChains:</p>
 
 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;geompy.addToStudyInFather(check_box, 
- chain, &quot;propagation chain&quot;)</p>
+ chain, &quot;propagation chain &quot; + `ii`)</p>
 
-<p><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
- </p>
+<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;ii 
+ = ii + 1</p>
+
+<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;pass</p>
 
 <p>&nbsp;</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)
index 18cf21730a770251faef31e14b2c45e20cfa6835..491c86028e342c1b18f88ad7d489ca3687092fc3 100755 (executable)
@@ -104,8 +104,9 @@ if (window.writeIntopicBar)
 <p>&nbsp;</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, 
index 724ce0cc422a1a23538765c26d33f41facb40e18..7a80374ee7ffd05bbe127c36218474b16b69ec04 100755 (executable)
@@ -15,6 +15,7 @@ if (navigator.appName !="Netscape")
 <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">
 <!--
@@ -200,8 +201,6 @@ if (window.writeIntopicBar)
 <p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_qface3,1)</span> 
  </p>
 
-<p>&nbsp;</p>
-
 <h3>Hexagonal Solid</h3>
 
 <p class="whs1">import geompy</p>
@@ -210,120 +209,141 @@ if (window.writeIntopicBar)
 
 <p class="whs1">gg = salome.ImportComponentGUI(&quot;GEOM&quot;)</p>
 
-<p>&nbsp;</p>
+<p class="whs1">&nbsp;</p>
 
-<p># create vertices</p>
+<p class="whs2"># create vertices</p>
 
-<p class="whs1">p1 = geompy.MakeVertex( 
- &nbsp;0., &nbsp;&nbsp;0., 
+<p class="whs1">p0 &nbsp;= 
+ geompy.MakeVertex( &nbsp;0., 
+ &nbsp;&nbsp;0., 
  &nbsp;&nbsp;0.)</p>
 
-<p class="whs1">p2 = geompy.MakeVertex(150., 
- &nbsp;30., &nbsp;&nbsp;0.)</p>
+<p class="whs1">p1 &nbsp;= 
+ geompy.MakeVertex( &nbsp;0., 
+ &nbsp;&nbsp;0., 
+ &nbsp;40.)</p>
 
-<p class="whs1">p3 = geompy.MakeVertex( 
- &nbsp;0., 120., 
- &nbsp;50.)</p>
+<p class="whs1">p2 &nbsp;= 
+ geompy.MakeVertex( 70., -15., &nbsp;&nbsp;0.)</p>
 
-<p class="whs1">p4 = geompy.MakeVertex( 
- &nbsp;0., &nbsp;40., 
- &nbsp;70.)</p>
+<p class="whs1">p3 &nbsp;= 
+ geompy.MakeVertex( 70., -15., &nbsp;70.)</p>
 
-<p class="whs1">p5 = geompy.MakeVertex(100., 
- &nbsp;20., &nbsp;45.)</p>
+<p class="whs1">&nbsp;</p>
 
-<p class="whs1">p6 = geompy.MakeVertex( 
&nbsp;0., 70., 
- &nbsp;40.)</p>
+<p class="whs1">p4 &nbsp;= 
geompy.MakeVertex( &nbsp;0., 
+ &nbsp;70., &nbsp;&nbsp;0.)</p>
 
-<p class="whs1">p7 = geompy.MakeVertex( 
- 70., 70., &nbsp;70.)</p>
+<p class="whs1">p5 &nbsp;= 
+ geompy.MakeVertex( &nbsp;0., 
+ &nbsp;70., &nbsp;40.)</p>
 
-<p class="whs1">p8 = geompy.MakeVertex( 
- 70.,-15., &nbsp;70.)</p>
+<p class="whs1">p6 &nbsp;= 
+ geompy.MakeVertex( 70., &nbsp;70., 
+ &nbsp;&nbsp;0.)</p>
 
-<p class="whs1">p9 = geompy.MakeVertex( 
- &nbsp;0., &nbsp;0., 
- &nbsp;40.)</p>
+<p class="whs1">p7 &nbsp;= 
+ geompy.MakeVertex( 70., &nbsp;70., 
+ &nbsp;70.)</p>
+
+<p class="whs1">&nbsp;</p>
+
+<p class="whs1">p8 &nbsp;= 
+ geompy.MakeVertex( &nbsp;0., 
+ -50., &nbsp;&nbsp;0.)</p>
+
+<p class="whs1">p9 &nbsp;= 
+ geompy.MakeVertex( &nbsp;0., 
+ -50., &nbsp;40.)</p>
 
 <p class="whs1">p10 = geompy.MakeVertex( 
- &nbsp;0., 70., 
- &nbsp;&nbsp;0.)</p>
+ 70., -35., &nbsp;&nbsp;0.)</p>
 
 <p class="whs1">p11 = geompy.MakeVertex( 
- 70., 70., &nbsp;&nbsp;0.)</p>
+ 70., -35., &nbsp;70.)</p>
 
-<p class="whs1">p12 = geompy.MakeVertex( 
- 70., -15., &nbsp;&nbsp;0.)</p>
+<p class="whs1">&nbsp;</p>
 
-<p class="whs1">p13 = geompy.MakeVertex( 
- &nbsp;0., &nbsp;0., 
- &nbsp;&nbsp;0.)</p>
+<p class="whs2"># create faces</p>
 
-<p>&nbsp;</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">&nbsp;</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">&nbsp;</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>&nbsp;</p>
+<p class="whs1">solid1 = geompy.MakeHexa2Faces(qface1, 
+ qface7)</p>
 
-<p># create a hexahedral solid between two given faces</p>
+<p class="whs1">&nbsp;</p>
 
-<p class="whs1">solid1 = geompy.MakeHexa2Faces(qface1, 
qface2)</p>
+<p class="whs2"># create a hexahedral 
solid, bounded by six given faces</p>
 
-<p>&nbsp;</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">&nbsp;</p>
 
-<p class="whs1">solid2 = geompy.MakeHexa(qface3, 
qface4, qface5, qface6, qface7, qface8)</p>
+<p class="whs2"># add objects in the 
study</p>
 
-<p>&nbsp;</p>
+<p class="whs1">geompy.addToStudy(qface1,&quot;qface1&quot;)</p>
 
-<p># add objects in the study</p>
+<p class="whs1">geompy.addToStudy(qface2,&quot;qface2&quot;)</p>
+
+<p class="whs1">geompy.addToStudy(qface3,&quot;qface3&quot;)</p>
+
+<p class="whs1">geompy.addToStudy(qface4,&quot;qface4&quot;)</p>
+
+<p class="whs1">geompy.addToStudy(qface5,&quot;qface5&quot;)</p>
+
+<p class="whs1">geompy.addToStudy(qface6,&quot;qface6&quot;)</p>
+
+<p class="whs1">geompy.addToStudy(qface7,&quot;qface7&quot;)</p>
+
+<p class="whs1">&nbsp;</p>
 
 <p class="whs1">id_solid1 = geompy.addToStudy(solid1,&quot;Solid1&quot;)</p>
 
 <p class="whs1">id_solid2 = geompy.addToStudy(solid2,&quot;Solid2&quot;)</p>
 
-<p>&nbsp;</p>
+<p class="whs1">&nbsp;</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>&nbsp;</p>
+<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_solid2, 
+ 1)</span> </p>
 
 <script type="text/javascript" language="javascript1.2">
 <!--
diff --git a/doc/salome/gui/GEOM/change_orientation.htm b/doc/salome/gui/GEOM/change_orientation.htm
new file mode 100755 (executable)
index 0000000..a6ae12d
--- /dev/null
@@ -0,0 +1,155 @@
+<!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 - &gt; 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">&nbsp;</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">&nbsp;</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">&nbsp;</p>\r
+\r
+<p class="whs2"><span style="font-weight: bold;"><B>Example:</B></span> \r
+ </p>\r
+\r
+<p class="whs2">&nbsp;</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">&nbsp;</p>\r
+\r
+<p class="whs2">&nbsp;</p>\r
+\r
+<p class="whs2">&nbsp;</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
index 5c0812908203c07c01738f2e6e91b3f58dbe26e1..70a8fbca280315358ee15378794eb766b8e9223c 100755 (executable)
@@ -17,11 +17,13 @@ if (navigator.appName !="Netscape")
 img_whs1 { width:20px; height:20px; border-style:none; }
 p.whs2 { font-size:12pt; }
 p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:312px; height: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">
 <!--
@@ -92,10 +94,13 @@ if (window.writeIntopicBar)
 
 <p class="whs2">&nbsp;</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. &nbsp;</p>
 
 <p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span> 
@@ -112,16 +117,12 @@ if (window.writeIntopicBar)
 
 <p>&nbsp;</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">&nbsp;</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;"> &nbsp;(in 
@@ -131,17 +132,23 @@ if (window.writeIntopicBar)
  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>&nbsp;</p>
 
-<p class="whs3">&nbsp;</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">&nbsp;</p>
 
 <p class="whs2"><b style="font-weight: bold;">Examples:</b></p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs6">Base Shape &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Prisms</p>
+<p class="whs8">Base Shape &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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"> &nbsp;</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"> &nbsp;</p>
 
 <p class="whs2">&nbsp;</p>
 
index 17ad1ddd58301701ebec729b3e2ffa45c36c5830..ff110b02cf8a365bc97b9bfd7218c674807e404c 100755 (executable)
@@ -3,7 +3,7 @@
 <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">
@@ -98,7 +98,7 @@ if (window.writeIntopicBar)
        writeIntopicBar(4);
 //-->
 </script>
-<h1 class="whs1">Using boolean operations</h1>
+<h1 class="whs1">Using Boolean Operations</h1>
 
 <p class="whs2">&nbsp;</p>
 
index 0f044a2a96c950a765cb7abc2a2f592323df3ca4..de5df125de4cfc010313f22e4ca04c05fd901ac6 100755 (executable)
@@ -3,7 +3,7 @@
 <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">
index d854bcf3cdab42497e59dc9ab3878ffaf5dcf316..acb24e68673c231bec91efcf152a29ad2a48db02 100755 (executable)
@@ -3,7 +3,7 @@
 <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">
@@ -38,7 +38,7 @@ img_whs16 { border:none; width:360px; height:328px; float:none; border-style:non
 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; }
@@ -174,16 +174,14 @@ if (window.writeIntopicBar)
 
 <p class="whs1">&nbsp;</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">&nbsp;</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">&nbsp;</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>
@@ -203,17 +201,14 @@ if (window.writeIntopicBar)
 
 <p class="whs9">&nbsp;</p>
 
-<p class="whs1"><b style="font-weight: bold;">Description:</b> 
- Return the properties (Length, Surface &amp; Volume) of a definite geometrical 
- object.</p>
+<p class="whs1">Returns the properties (Length, Surface &amp; 
+ Volume) for the selected geometrical object.</p>
 
 <p class="whs1">&nbsp;</p>
 
 <p class="whs1"><b style="font-weight: bold;">Result:</b> Display 
  Length, Surface &amp; Volume in the form of Python Tuple.</p>
 
-<p class="whs1">&nbsp;</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>
@@ -232,16 +227,14 @@ if (window.writeIntopicBar)
 
 <p class="whs9">&nbsp;</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">&nbsp;</p>
 
 <p class="whs1"><b style="font-weight: bold;">Result:</b> GEOM_Object 
  (vertex).</p>
 
-<p class="whs1">&nbsp;</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>
@@ -261,12 +254,12 @@ if (window.writeIntopicBar)
 
 <p class="whs7">&nbsp;</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">&nbsp;</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>
 
@@ -301,8 +294,8 @@ if (window.writeIntopicBar)
 
 <p class="whs7">&nbsp;</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">&nbsp;</p>
 
@@ -310,8 +303,6 @@ if (window.writeIntopicBar)
  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">&nbsp;</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>
@@ -330,13 +321,8 @@ if (window.writeIntopicBar)
 
 <p class="whs7">&nbsp;</p>
 
-<p class="whs1"><b style="font-weight: bold;">Description:</b> 
- Returns the min. distance between 2 geometrical objects.</p>
-
-<p class="whs1">&nbsp;</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">&nbsp;</p>
 
@@ -358,8 +344,8 @@ if (window.writeIntopicBar)
 
 <p class="whs9">&nbsp;</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">&nbsp;</p>
 
@@ -367,8 +353,6 @@ if (window.writeIntopicBar)
  the tolerance values (FaceMinTol, FaceMaxTol, EgdeMinTol, EgdeMaxTol, 
  VertexMinTol, VertexMaxTol).</p>
 
-<p class="whs1">&nbsp;</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>
@@ -387,13 +371,8 @@ if (window.writeIntopicBar)
 
 <p class="whs9">&nbsp;</p>
 
-<p class="whs1"><b style="font-weight: bold;">Description:</b> 
- Returns the type of a geometrical object.</p>
-
-<p class="whs1">&nbsp;</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">&nbsp;</p>
 
@@ -416,24 +395,21 @@ if (window.writeIntopicBar)
 
 <p class="whs7">&nbsp;</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">&nbsp;</p>
 
 <p class="whs1"><b style="font-weight: bold;">Result:</b> Boolean.</p>
 
-<p class="whs1">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</p>
 
@@ -444,9 +420,9 @@ if (window.writeIntopicBar)
 
 <p class="whs21">&nbsp;</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">
        
@@ -485,8 +461,6 @@ if (window.writeIntopicBar)
 <p class="whs1"><b style="font-weight: bold;">Result:</b> Boolean; 
  highlight in the viewer.</p>
 
-<p class="whs1">&nbsp;</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 
index a9eea44fd37dd7904effc8d8e1f6835dc3444524..0eff734691d3fe33a47ad94f6a00873dd945311a 100755 (executable)
@@ -17,7 +17,7 @@ if (navigator.appName !="Netscape")
 img_whs1 { width:20px; height:20px; border-style:none; }
 p.whs2 { font-size:12pt; }
 p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:312px; height: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">
@@ -80,7 +80,7 @@ if (window.writeIntopicBar)
 //-->
 </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"> &nbsp;</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 
@@ -91,9 +91,9 @@ if (window.writeIntopicBar)
 
 <p class="whs2">&nbsp;</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> 
&nbsp;<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>&nbsp;and 
@@ -115,7 +115,7 @@ if (window.writeIntopicBar)
 
 <p class="whs2">&nbsp;</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">&nbsp;</p>
 
index c5689070b36ca38ebffdab0d306dbaec0e754c95..d47ee1faa99f65b1e2bf8d911d15266a58b1a118 100755 (executable)
@@ -125,6 +125,7 @@ boolean_operations.htm
 box.htm
 building_by_blocks.htm
 chamfer.htm
+change_orientation.htm
 changing_display_parameters.htm
 check_free_boundaries.htm
 check_free_faces.htm
@@ -267,6 +268,7 @@ image37.gif
 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
@@ -330,13 +332,14 @@ image29.gif
 image160.jpg
 files\salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image133.gif
 files\salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image34.gif
+pics\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
@@ -364,6 +367,7 @@ pics\ellipse.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
@@ -383,6 +387,7 @@ pics\circle2.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
@@ -415,6 +420,7 @@ image61.gif
 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
@@ -473,6 +479,7 @@ image113.jpg
 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
@@ -499,7 +506,6 @@ pics\repair10.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
@@ -576,6 +582,7 @@ whgdata\whlstf10.htm
 whgdata\whlstf11.htm
 whgdata\whlstf12.htm
 whgdata\whlstf13.htm
+whgdata\whlstf14.htm
 whgdata\whlstg0.htm
 index.htm
 index_csh.htm
index 68c30331400e92aa99ada7b700abd16f221f816d..2ef298ee7b718cf2599bd6e51ae31084f4cbe0ad 100755 (executable)
@@ -491,88 +491,73 @@ if (window.writeIntopicBar)
 
 <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(&quot;GEOM&quot;)</p>
-
 <p class="whs1">&nbsp;</p>
 
-<p class="whs2">#create vertices</p>
-
-<p class="whs1">p0 = geompy.MakeVertex( 
- 0., &nbsp;0., 
- &nbsp;0.)</p>
-
-<p class="whs1">pz = geompy.MakeVertex( 
- 0., &nbsp;0., 
- 40.)</p>
+<p class="whs1">gg = salome.ImportComponentGUI(&quot;GEOM&quot;)</p>
 
 <p class="whs1">&nbsp;</p>
 
-<p class="whs2"># create sketchers</p>
+<p class="whs2"># create a vertex and 
+ a vector</p>
 
-<p class="whs1">sketcher = geompy.MakeSketcher(&quot;Sketcher:F 
- -50 -50:TT 100 -50:R 0:C 50 70:R 0:L 100:WW&quot;)</p>
+<p class="whs1">p1 = geompy.MakeVertex( 
+ &nbsp;-30., &nbsp;-30., 
+ &nbsp;50.)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs1">p2 = geompy.MakeVertex( 
+ &nbsp;-60., &nbsp;-60., 
+ &nbsp;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( 
+ &nbsp;-30., &nbsp;-30., 
+ &nbsp;10.)</p>
 
 <p class="whs1">&nbsp;</p>
 
-<p class="whs2"># create a prism</p>
-
-<p class="whs1">prism = geompy.MakePrism(face, 
- p0, pz)</p>
-
-<p class="whs1">&nbsp;</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[&quot;FACE&quot;])</p>
+<p class="whs1">ShapeListCompound 
= []</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs1">i = 0</p>
 
-<p class="whs2"># create a shell from 
- a set of faces</p>
+<p class="whs1">while i &lt;= 3 :</p>
 
-<p class="whs1">shell = geompy.MakeShell([prism_faces[0], 
prism_faces[1],</p>
+<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;S 
= geompy.MakeTranslation(arc, i * 50., 0., 0.)</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prism_faces[3], 
- prism_faces[4],</p>
+<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;ShapeListCompound.append(S)</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prism_faces[5], 
prism_faces[2]])</p>
+<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;i 
= i + 1</p>
 
 <p class="whs1">&nbsp;</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">&nbsp;</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,&quot;Solid&quot;)</p>
+<p class="whs1">id_compound = geompy.addToStudy(compound,&quot;Compound&quot;)</p>
 
 <p class="whs1">&nbsp;</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">
diff --git a/doc/salome/gui/GEOM/image38.gif b/doc/salome/gui/GEOM/image38.gif
new file mode 100755 (executable)
index 0000000..db1f51c
Binary files /dev/null and b/doc/salome/gui/GEOM/image38.gif differ
diff --git a/doc/salome/gui/GEOM/image40.gif b/doc/salome/gui/GEOM/image40.gif
new file mode 100755 (executable)
index 0000000..b24e58c
Binary files /dev/null and b/doc/salome/gui/GEOM/image40.gif differ
diff --git a/doc/salome/gui/GEOM/image43.gif b/doc/salome/gui/GEOM/image43.gif
new file mode 100755 (executable)
index 0000000..f1b0f9d
Binary files /dev/null and b/doc/salome/gui/GEOM/image43.gif differ
index f760763a2a48d0ecaac2e34145848927e8b2d72a..8e9387c94a6d65a4f14a0be61d4e146e87e2a935 100755 (executable)
@@ -132,10 +132,9 @@ if (window.writeIntopicBar)
 <p class="whs5">&nbsp;</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. &nbsp;</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>
@@ -146,9 +145,9 @@ if (window.writeIntopicBar)
 
 <p class="whs2">&nbsp;</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, 
index f364fbdfb7ee9ab7f303d2bdf53104bd01c3a114..122025fef42cff794907a2707b92361dbb68c683 100755 (executable)
@@ -80,32 +80,52 @@ if (window.writeIntopicBar)
 
 <h3>Point Coordinates</h3>
 
+<p class="whs1">import math</p>
+
 <p class="whs1">import geompy</p>
 
-<p>&nbsp;</p>
+<p class="whs1">&nbsp;</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>&nbsp;</p>
+<p class="whs1">&nbsp;</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">&nbsp;</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) &lt; tolerance)</p>
+
+<p class="whs1">&nbsp;</p>
+
+<p class="whs1">if IsEqual(coords[0], 
+ 15.) and IsEqual(coords[1], 23.) and IsEqual(coords[2], 80.):</p>
 
 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
- &quot;Coordinates of point must be (15, 23, 80), but returned (&quot;, 
- coords[0], &quot;, &quot;, coords[1], &quot;, &quot;, coords[2], &quot;)&quot;</p>
+ &quot;All values are OK.&quot;</p>
 
 <p class="whs1">else :</p>
 
-<p><span style="font-family: 'Lucida Console', monospace;">&nbsp;&nbsp;&nbsp;&nbsp;print 
- &quot;All values are OK.&quot;</span> </p>
+<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
+ &quot;Coordinates of point must be (15, 23, 80), but returned (&quot;,</p>
+
+<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
+ coords[0], &quot;, &quot;, coords[1], &quot;, &quot;, coords[2], &quot;)&quot;</p>
+
+<p><span style="font-family: 'Lucida Console', monospace;">&nbsp;&nbsp;&nbsp;&nbsp;pass</span> 
+ </p>
 
 <h3>Basic Properties</h3>
 
diff --git a/doc/salome/gui/GEOM/pics/changeorientation.png b/doc/salome/gui/GEOM/pics/changeorientation.png
new file mode 100755 (executable)
index 0000000..95322ed
Binary files /dev/null and b/doc/salome/gui/GEOM/pics/changeorientation.png differ
index 876f249c467f82d022a5fa1271abeb8aea647c5c..418c22431a22619f4dc692f96e22f5621d389b47 100755 (executable)
Binary files a/doc/salome/gui/GEOM/pics/filling.png and b/doc/salome/gui/GEOM/pics/filling.png differ
index bce5623509cc556e576caeee33d390245534dbc4..1727e3bb0ff215e038040c2f6eb240911b788304 100755 (executable)
Binary files a/doc/salome/gui/GEOM/pics/plane3.png and b/doc/salome/gui/GEOM/pics/plane3.png differ
index 1f9dab5fbecea5c2f80adc27c0d515869bd9c4c4..6e9ead8f93a981009ed2ea6cce8a1dea151b2987 100755 (executable)
Binary files a/doc/salome/gui/GEOM/pics/workplane4.png and b/doc/salome/gui/GEOM/pics/workplane4.png differ
index a996ddfc5c9e9c189a1342e8edf395121388f9d3..4d392fee0997fbe413c6a71263a27bdd9073b0e0 100755 (executable)
@@ -86,7 +86,7 @@ if (window.writeIntopicBar)
  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 - &gt; Generation &nbsp;- 
- &gt; Pipe</B></span></p>
+ &gt; Extrusion along a path</B></span></p>
 
 <p>&nbsp;</p>
 
index d858d3ec8d3d5dec897b260326a4abe12505ffc6..2bd45592afe2384ffaf969141a5620d9e338a85a 100755 (executable)
@@ -20,7 +20,7 @@ p.whs3 { font-size:12pt; margin-left:40px; }
 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%; }
@@ -100,7 +100,7 @@ if (window.writeIntopicBar)
 <p>&nbsp;</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 
@@ -130,7 +130,7 @@ if (window.writeIntopicBar)
 <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 
  &nbsp;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, 
@@ -146,19 +146,20 @@ if (window.writeIntopicBar)
 
 <p class="whs2">&nbsp;</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">&nbsp;</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">&nbsp;</p>
 
index 994a173375cdbfb7e6359e1fedd427449c0cd99f..3c1d4eb4e622484119500b7dac6872bb646ce4ff 100755 (executable)
@@ -143,50 +143,62 @@ if (window.writeIntopicBar)
 
 <p class="whs1">import salome</p>
 
+<p class="whs1">&nbsp;</p>
+
 <p class="whs1">gg = salome.ImportComponentGUI(&quot;GEOM&quot;)</p>
 
-<p>&nbsp;</p>
+<p class="whs1">&nbsp;</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>&nbsp;</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">&nbsp;</p>
+
+<p class="whs1">radius1 = 15</p>
+
+<p class="whs1">cylinder1 = geompy.MakeCylinder(p1, 
+ v, radius1, height)</p>
+
+<p class="whs1">&nbsp;</p>
+
+<p class="whs1">radius2 = 30</p>
+
+<p class="whs1">cylinder2 = geompy.MakeCylinderRH(radius2, 
+ height)</p>
 
 <p class="whs1">&nbsp;</p>
 
 <p># add objects in the study</p>
 
-<p class="whs1">id_cone1 = geompy.addToStudy(cone1,&quot;Cone1&quot;)</p>
+<p class="whs1">id_cylinder1 = geompy.addToStudy(cylinder1,&quot;Cylinder1&quot;)</p>
 
-<p class="whs1">id_cone2 = geompy.addToStudy(cone2,&quot;Cone2&quot;)</p>
+<p class="whs1">id_cylinder2 = geompy.addToStudy(cylinder2,&quot;Cylinder2&quot;)</p>
 
 <p>&nbsp;</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>&nbsp;</p>
index 3e0d2593dcd325e88b7e90625a5c017708c55390..316aed90fd9bb09b8a90f6e0fe3d4747e9106047 100755 (executable)
@@ -81,11 +81,13 @@ if (window.writeIntopicBar)
 </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 - &gt; Generation &nbsp;- 
- &gt; 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 - &gt; Generation &nbsp;- 
+ &gt; Revolution</B></span></b></p>
 
 <p class="whs2">&nbsp;</p>
 
index dd15a9910d481aebcf54da84efe87542e3fa49d4..a6db12164f6da656f2a2bd0d912cdb7f18c186b1 100755 (executable)
@@ -15,6 +15,7 @@ if (navigator.appName !="Netscape")
 <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">
 <!--
@@ -347,7 +348,7 @@ if (window.writeIntopicBar)
 
 <p>&nbsp;</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( 
@@ -367,7 +368,7 @@ if (window.writeIntopicBar)
 
 <p>&nbsp;</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( 
@@ -384,7 +385,7 @@ if (window.writeIntopicBar)
 
 <p>&nbsp;</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, 
@@ -450,18 +451,22 @@ if (window.writeIntopicBar)
 
 <p class="whs1">import salome</p>
 
+<p class="whs1">&nbsp;</p>
+
 <p class="whs1">gg = salome.ImportComponentGUI(&quot;GEOM&quot;)</p>
 
-<p>&nbsp;</p>
+<p class="whs1">&nbsp;</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>&nbsp;</p>
+<p class="whs1">&nbsp;</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>
@@ -471,9 +476,10 @@ if (window.writeIntopicBar)
 <p class="whs1">scale = geompy.MakeScaleTransform(box, 
  p0, factor)</p>
 
-<p>&nbsp;</p>
+<p class="whs1">&nbsp;</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, 
  &quot;Box&quot;)</p>
@@ -481,14 +487,16 @@ if (window.writeIntopicBar)
 <p class="whs1">id_scale = geompy.addToStudy(scale, 
  &quot;Scale&quot;)</p>
 
-<p>&nbsp;</p>
+<p class="whs1">&nbsp;</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> 
index ad8f8d4c02390617c920bfae6dadddd64339d984..bc99598c0fddb92b64ef712c044ba6afadc9d5ae 100755 (executable)
@@ -597,4 +597,4 @@ function window_OnLoad()
 }
 //-->
 </script>
-</html>
\ No newline at end of file
+</html>
index 08edd6a4114d01be6beaa77fb8545e44beea772b..acfb3af6b70acb677b6d12be66d4d53cad4692b5 100755 (executable)
@@ -22,6 +22,7 @@ aTE("Boolean Operations","boolean_operations.htm");
 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");
@@ -42,9 +43,9 @@ aTE("Explode on Blocks","explode_on_blocks.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");
index 47b9c26132032426efbdd1405c98e3cbd9cefa6e..292e30479f6d8cf1df9a1d7ea7066c2dda5d59b2 100755 (executable)
@@ -15,4 +15,4 @@ iTM(0,82,"whftdata0.htm");
 //-->
 </script>
 </body>
-</html>
\ No newline at end of file
+</html>
index 78d7054e29262f010bc85bc1e31a96762f97f111..f6c89c1ace3e57c60ed063158d3c1e04bdc50456 100755 (executable)
 </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);
@@ -1000,349 +1013,354 @@ aWE("qface4",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>
index 58b23cebb005427e99ecbad86fafd7b499e9fbc4..e4ae2b32424bdef4f282ada8135475af3797e983 100755 (executable)
@@ -8,7 +8,7 @@
 <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");
@@ -33,7 +33,7 @@
        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");
@@ -52,7 +52,7 @@
      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");
@@ -77,7 +77,7 @@
        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");
@@ -88,8 +88,9 @@
        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");
index e01bedde668f4d56f0d4f66ee82cba60a2f1aa27..0f8f90ab6c9ca2fd3f403b5115b73d98a33e1593 100755 (executable)
@@ -133,4 +133,4 @@ else
 //-->
 </script>
 </body>
-</html>
\ No newline at end of file
+</html>
index af1ba14e7d5db81cc1ea8d12423b70c1035724fa..90141801a0bc84f5d74849c770f7ad4801667920 100755 (executable)
@@ -49,7 +49,7 @@ img {vertial-align:middle;}
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<nobr><a href="../measurement_tools.htm"><img src="../whd_toc3.gif" border="0" align="absmiddle"> Measurement Tools</a></nobr><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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>
index ad8862182ecdbbc4fb8da13bd70e5546ad612c65..d412744b016710553c6d53f58264869efea3643e 100755 (executable)
@@ -88,4 +88,4 @@ else
 //-->
 </script>
 </body>
-</html>
\ No newline at end of file
+</html>
index 59a0a4b0980dfa9122cfc840f9a2e223ceb298d7..03659d0ba15b052e335a32e1f5ee524013c5bb88 100755 (executable)
@@ -22,4 +22,4 @@ window.onload=window_Onload;
 </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>
index b79fae0147f3f4568eb85b357d585dc79a3bebfb..1d279bbc323288249739142b9dca47807b4658e1 100755 (executable)
                        <indent attr="9pt" />
                </glossary>
        </paneskin>
-</resource>
\ No newline at end of file
+</resource>
index 66213ff184593c8f884a40ab8b39dacb1930fe3a..6a2b9e489fecb19bae6eec35aec888f7babc05bc 100755 (executable)
@@ -17,4 +17,4 @@
 <tr><td> Authoring Tool Name </td><td>RoboHelp X5</td></tr>
 <table>
 </body>
-</html>
\ No newline at end of file
+</html>
index d06481fca10bc9c5e6b2fffee449a57d94225c4d..c3469d79fe159d096c3c894a95721260e7994951 100755 (executable)
@@ -226,4 +226,4 @@ writeStyle();
 
 </body>
 
-</html>
\ No newline at end of file
+</html>
index 3858ab2fc13c52a0855f30f862fc419d78635eb8..88b813c13960386c84d1cf26ff3c205f9a355f8b 100755 (executable)
@@ -429,4 +429,4 @@ function isAPane(sPaneName)
                return true;
        else
                return false;
-}
\ No newline at end of file
+}
index 5c1b6d723a311019edd0e18f45f8c5a1bc6a93bf..e94f97f2567879f6ddab108b1e581fb1ab57d59d 100755 (executable)
@@ -46,4 +46,4 @@ TocInitPage();
 //-->
 </script>
 </body>
-</html>
\ No newline at end of file
+</html>
index e9d9cd19a9b006aa996f3632e48c43eedf17743d..52198a574fffc44772acb2e9c997750050824a67 100755 (executable)
@@ -722,4 +722,4 @@ setButtonFont("hide","","","","","","");
        gbWhTopic=true;
 }
 else
-       document.location.reload();
\ No newline at end of file
+       document.location.reload();
index 567a7c5350089a5ebc66454262bea75d29465a9d..0f5be19c95bc73beba0b4a8c0a4165968d455ca2 100755 (executable)
@@ -10,6 +10,7 @@
 <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" />
@@ -30,9 +31,9 @@
 <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" />
index d03042aed0ebb7f3b3dbe901ed8f6307dae89b92..b924603e18a9661ad5622ebbc714142fa3bb0d47 100755 (executable)
 <?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>  
index 346d9371bb7f62974e025daf53b8c4b254124008..7067bbd57d5a847cb34316c1a638a39fd4704dbc 100755 (executable)
@@ -27,7 +27,7 @@
       <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" >
index 2f5b6d645d4c55e5d1c8743ff245fbeb298ac921..0ee62e91091786eabf27d027a46e026cfdf2ff57 100755 (executable)
@@ -17,7 +17,7 @@ if (navigator.appName !="Netscape")
 img_whs1 { width:20px; height:20px; border-style:none; }
 p.whs2 { font-size:12pt; }
 p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:312px; height: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; }
 -->
@@ -93,14 +93,17 @@ if (window.writeIntopicBar)
 
 <p class="whs2">&nbsp;</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">&nbsp;</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">&nbsp;</p>
 
index d5d18f0fa41cc29c0593d5774605095ba57eae80..6094c841e69f3752316a248ce147be26a28f7810 100644 (file)
@@ -339,7 +339,7 @@ module GEOM
 
     /*!
      *  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.
      */
@@ -616,15 +616,31 @@ module GEOM
                                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,
@@ -868,7 +884,7 @@ module GEOM
 
     /*!
      *  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.
@@ -877,7 +893,7 @@ module GEOM
 
     /*!
      *  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.
@@ -1037,6 +1053,24 @@ module GEOM
                               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
@@ -1105,6 +1139,23 @@ module GEOM
                                    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
@@ -1667,7 +1718,7 @@ module GEOM
      *  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);
@@ -1894,6 +1945,15 @@ module GEOM
     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);
+
   };
 
   /*!
@@ -1952,6 +2012,22 @@ module GEOM
    */
   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.
@@ -2021,6 +2097,15 @@ module GEOM
     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.
index 6fa3c613db048a560c8017eaca3fca9f1d31a0a7..3c3b60aede752f181a8cf09f0d06c2e37941b750 100644 (file)
@@ -6,12 +6,17 @@
   </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>
diff --git a/resources/change_orientation.png b/resources/change_orientation.png
new file mode 100755 (executable)
index 0000000..a2ce2c9
Binary files /dev/null and b/resources/change_orientation.png differ
diff --git a/resources/prism2.png b/resources/prism2.png
new file mode 100644 (file)
index 0000000..fdbe72e
Binary files /dev/null and b/resources/prism2.png differ
index d285117065c62a838c280d14a9703dc9176616d6..41b484848580dcdc38986992e21545a7083d72d0 100644 (file)
 
 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
@@ -146,38 +137,41 @@ bool BasicGUI::OnMousePress( QMouseEvent* pe, SUIT_Desktop* parent, SUIT_ViewWin
   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;
 }
 
@@ -216,6 +210,6 @@ extern "C"
 GEOM_BASICGUI_EXPORT
   GEOMGUI* GetLibGUI( GeometryGUI* parent )
   {
-    return BasicGUI::GetBasicGUI( parent );
+    return new BasicGUI( parent );
   }
 }
index 0822236d635200c604987c4edc878ef66e83edb9..73a16e6bd77f69faf468f9a599b497c4c3aca3a6 100644 (file)
 //=================================================================================
 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);
 
index 5bd907f714b70207320afd0a1cbd57bfca737b22..ce76529d0e60780c6307c12e861413a55f6c8c56 100644 (file)
@@ -125,7 +125,7 @@ void BasicGUI_CircleDlg::Init()
   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 */
index 82b87f13710a820094da82e6476e0013d7771964..fb0f51315100ac5efbf3cef90095103b32a15fa6 100644 (file)
@@ -40,7 +40,7 @@
 // class    : BasicGUI_CircleDlg
 // purpose  :
 //=================================================================================
-class BasicGUI_CircleDlg : public GEOMBase_Skeleton
+class GEOM_BASICGUI_EXPORT BasicGUI_CircleDlg : public GEOMBase_Skeleton
 {
     Q_OBJECT
 
index 0aa2d0da740038e25d8ad1e39a7a1a727e51dd1f..ba6db7d30a171d68574b0a8b26cdedf6b12a6055 100644 (file)
@@ -114,8 +114,8 @@ void BasicGUI_EllipseDlg::Init()
   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 );
 
index 521d2a742fdd6a55e50f321c2b66f7fb89dfcec5..99e7ff9a54406434ed32179fefa0dbad00bcbf26 100644 (file)
@@ -1,23 +1,23 @@
 //  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()
@@ -114,13 +114,13 @@ BasicGUI_MarkerDlg::BasicGUI_MarkerDlg( GeometryGUI* theGeometryGUI, QWidget* th
   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();
 }
 
@@ -147,7 +147,7 @@ void BasicGUI_MarkerDlg::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()));
@@ -166,17 +166,17 @@ void BasicGUI_MarkerDlg::Init()
   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 ) ) );
   }
@@ -243,7 +243,7 @@ void BasicGUI_MarkerDlg::ConstructorsClicked( int constructorId )
       {
        Group2->hide();
        aMainGrp->hide();
-       resize(0, 0);
+       //PAL6669: resize(0, 0);
        Group1->show();
 
        globalSelection( GEOM_ALLGEOM );
@@ -255,7 +255,7 @@ void BasicGUI_MarkerDlg::ConstructorsClicked( int constructorId )
       {
        aMainGrp->hide();
        Group1->show();
-       resize(0, 0);
+       //PAL6669: resize(0, 0);
        Group2->show();
 
        globalSelection( GEOM_POINT );
@@ -267,7 +267,7 @@ void BasicGUI_MarkerDlg::ConstructorsClicked( int constructorId )
       }
     }
 
-  connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 
+  connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
          SIGNAL(currentSelectionChanged()), this, SLOT(onSelectionDone()));
   onSelectionDone();
 }
@@ -302,7 +302,7 @@ bool BasicGUI_MarkerDlg::onApply()
 
   initName();
   ConstructorsClicked( getConstructorId() );
-  
+
   return true;
 }
 
@@ -314,16 +314,18 @@ void BasicGUI_MarkerDlg::onSelectionDone0()
 {
   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 );
@@ -347,22 +349,21 @@ void BasicGUI_MarkerDlg::onSelectionDone0()
             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 )
           {
@@ -386,12 +387,10 @@ void BasicGUI_MarkerDlg::onSelectionDone0()
 //=================================================================================
 void BasicGUI_MarkerDlg::onSelectionDone()
 {
-  if ( getConstructorId() == 0 )
-  {
+  if ( getConstructorId() == 0 ) {
     onSelectionDone0();
     return;
   }
-    
 
   myEditCurrentArgument->setText("");
   QString aName;
@@ -403,82 +402,60 @@ void BasicGUI_MarkerDlg::onSelectionDone()
 
     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() );
@@ -497,7 +474,7 @@ void BasicGUI_MarkerDlg::onSelectionDone()
              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() );
@@ -514,7 +491,7 @@ void BasicGUI_MarkerDlg::onSelectionDone()
              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() );
@@ -535,11 +512,11 @@ void BasicGUI_MarkerDlg::onSelectionDone()
       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 );
@@ -560,9 +537,9 @@ void BasicGUI_MarkerDlg::onSelectionDone()
        myData[ DY2 ]->SetValue( 0 );
        myData[ DZ2 ]->SetValue( 0 );
       }
-    }    
+    }
   }
-  
+
   displayPreview();
 }
 
@@ -573,7 +550,7 @@ void BasicGUI_MarkerDlg::onSelectionDone()
 void BasicGUI_MarkerDlg::SetEditCurrentArgument()
 {
   QPushButton* send = (QPushButton*)sender();
-  
+
   if(send == Group1->PushButton1) {
     myEditCurrentArgument = Group1->LineEdit1;
     globalSelection( GEOM_ALLGEOM );
@@ -590,7 +567,7 @@ void BasicGUI_MarkerDlg::SetEditCurrentArgument()
     myEditCurrentArgument = Group2->LineEdit3;
     globalSelection( GEOM_LINE );
   }
-  
+
   myEditCurrentArgument->setFocus();
   onSelectionDone();
 }
@@ -614,7 +591,7 @@ void BasicGUI_MarkerDlg::LineEditReturnPressed()
 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() );
@@ -634,7 +611,7 @@ void BasicGUI_MarkerDlg::onDeactivate()
 // purpose  :
 //=================================================================================
 void BasicGUI_MarkerDlg::enterEvent(QEvent* e)
-{                       
+{
   if ( !GroupConstructors->isEnabled() )
     onActivate();
 }
@@ -674,8 +651,8 @@ bool BasicGUI_MarkerDlg::isValid( QString& msg )
     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;
@@ -734,17 +711,3 @@ void BasicGUI_MarkerDlg::displayPreview ( const bool   activate,
     }
   }
 }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
index 22975fe585d9c86d16fa40ac300d61c9d0796eda..a48162902d3307fbe105b1da8552bcfc92f6836c 100644 (file)
@@ -1,22 +1,22 @@
 //  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
 //
 //
@@ -33,6 +33,8 @@
 #include "SalomeApp_Application.h"
 #include "LightApp_SelectionMgr.h"
 
+#include <TColStd_MapOfInteger.hxx>
+
 #include <qlabel.h>
 
 #include "GEOMImpl_Types.hxx"
@@ -41,7 +43,7 @@ using namespace std;
 
 //=================================================================================
 // 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.
@@ -89,20 +91,20 @@ BasicGUI_PlaneDlg::BasicGUI_PlaneDlg(GeometryGUI* theGeometryGUI, QWidget* paren
   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();
 }
 
@@ -112,7 +114,7 @@ BasicGUI_PlaneDlg::BasicGUI_PlaneDlg(GeometryGUI* theGeometryGUI, QWidget* paren
 // purpose  : Destroys the object and frees any allocated resources
 //=================================================================================
 BasicGUI_PlaneDlg::~BasicGUI_PlaneDlg()
-{  
+{
 }
 
 
@@ -132,15 +134,15 @@ void BasicGUI_PlaneDlg::Init()
   /* 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 */
@@ -196,7 +198,7 @@ void BasicGUI_PlaneDlg::ConstructorsClicked(int constructorId)
   switch ( constructorId )
   {
     case 0: /* plane from a point and a direction (vector, edge...) */
-      {        
+      {
                                Group3Pnts->hide();
                                GroupFace->hide();
                                resize(0, 0);
@@ -225,7 +227,7 @@ void BasicGUI_PlaneDlg::ConstructorsClicked(int constructorId)
                                /* for the first argument */
                                globalSelection( GEOM_POINT );
                                break;
-      } 
+      }
     case 2: /* plane from a planar face selection */
       {
                                GroupPntDir->hide();
@@ -237,13 +239,17 @@ void BasicGUI_PlaneDlg::ConstructorsClicked(int constructorId)
                                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()));
 }
 
@@ -289,8 +295,8 @@ void BasicGUI_PlaneDlg::ClickOnCancel()
 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();
@@ -305,7 +311,7 @@ void BasicGUI_PlaneDlg::SelectionIntoArgument()
   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;
@@ -325,7 +331,7 @@ void BasicGUI_PlaneDlg::SelectionIntoArgument()
 //=================================================================================
 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;
@@ -335,14 +341,19 @@ void BasicGUI_PlaneDlg::SetEditCurrentArgument()
   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();
 }
 
@@ -374,7 +385,7 @@ void BasicGUI_PlaneDlg::LineEditReturnPressed()
 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 );
index a194408cc3a7de282ae1c07f29f8c5148145911d..16b642130b87f0c34d9dfe781022cc60dd178bf1 100644 (file)
@@ -157,16 +157,16 @@ void BasicGUI_PointDlg::Init()
   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);
index ab7a81556db0525a5b1acdee83378474207e235d..48fb526cda7259e7f481418c0c284f4ae153136c 100644 (file)
@@ -118,9 +118,9 @@ void BasicGUI_VectorDlg::Init()
   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 );
index 5fc54525777470519bddd9d7f26fe97e9e19dfd5..4522f191da3ed62b0b994ff3b1bf02c7d98f0fb4 100644 (file)
@@ -17,7 +17,7 @@
 //  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;
 
 //=================================================================================
@@ -158,7 +156,7 @@ void BasicGUI_WorkingPlaneDlg::Init()
 
   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" ) );
@@ -171,14 +169,19 @@ void BasicGUI_WorkingPlaneDlg::Init()
 //=================================================================================
 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();
@@ -189,8 +192,7 @@ void BasicGUI_WorkingPlaneDlg::ConstructorsClicked(int constructorId)
         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:
@@ -208,8 +210,7 @@ void BasicGUI_WorkingPlaneDlg::ConstructorsClicked(int constructorId)
         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:
@@ -221,7 +222,7 @@ void BasicGUI_WorkingPlaneDlg::ConstructorsClicked(int constructorId)
 
         Group3->RadioButton1->setChecked(true);
         aOriginType = 1;
-              break;
+        break;
       }
     }
   displayPreview();
@@ -256,87 +257,98 @@ bool BasicGUI_WorkingPlaneDlg::ClickOnApply()
   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;
 }
 
 //=================================================================================
@@ -425,7 +437,7 @@ void BasicGUI_WorkingPlaneDlg::LineEditReturnPressed()
 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() );
index 66ad69008034f5d03bd3a234c8049483b2ab05d4..2ab3c1db05770f6e54e796891ca0450b49c8ca72 100644 (file)
 
 #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
@@ -108,6 +94,6 @@ extern "C"
  GEOM_BLOCKSGUI_EXPORT
   GEOMGUI* GetLibGUI( GeometryGUI* parent )
   {
-    return BlocksGUI::GetBlocksGUI( parent );
+    return new BlocksGUI( parent );
   }
 }
index 21430bf2c36185fc692d05e88df91a1fe948a52d..9d546a29882ce8cd3a2a2ef67bc81b48f821354a 100644 (file)
@@ -23,7 +23,6 @@
 //  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
index bfc6d9d663cbe992c73ca296e6bc2dc8b0cde2e6..1a4c04a6492e1329a3e26e8bd8ea86931572bdde 100644 (file)
@@ -143,7 +143,8 @@ void BlocksGUI_TrsfDlg::Init()
   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
index 17702fe43721188c26e7b821c9aaacf9b5411d38..34ddff642428a62704e19d7cc437db18ba01dd46 100644 (file)
@@ -17,7 +17,7 @@
 //  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
@@ -59,7 +44,6 @@ BooleanGUI::BooleanGUI( GeometryGUI* parent ) : GEOMGUI( parent )
 {
 }
 
-
 //=======================================================================
 // function : ~BooleanGUI()
 // purpose  : Destructor
@@ -91,7 +75,7 @@ bool BooleanGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent)
 
   QDialog* aDlg = new BooleanGUI_Dialog( anOperation, getGeometryGUI(), parent, "");
   aDlg->show();
-   
+
   return true;
 }
 
@@ -103,6 +87,6 @@ extern "C"
 GEOM_BOOLEANGUI_EXPORT
   GEOMGUI* GetLibGUI( GeometryGUI* parent )
   {
-    return BooleanGUI::GetBooleanGUI( parent );
+    return new BooleanGUI( parent );
   }
 }
index 9592d6c44a0c0ac307f3567a71007625b7f03cd1..32d8f57e01c9661565e4f464cba88c88b2e50839 100644 (file)
 //  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
index 21f5f918866455655a66b8e81d0bc2476a33ae02..a9d44381764f1b9bf3b9e5658bdd94c81f4ae129 100644 (file)
@@ -17,7 +17,7 @@
 //  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
 //
 //
 //
@@ -31,6 +31,8 @@
 #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
@@ -63,7 +51,6 @@ BuildGUI::BuildGUI( GeometryGUI* parent )
 {
 }
 
-
 //=======================================================================
 // function : ~BuildGUI()
 // purpose  : Destructor
@@ -80,7 +67,7 @@ BuildGUI::~BuildGUI()
 bool BuildGUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent )
 {
   getGeometryGUI()->EmitSignalDeactivateDialog();
-  
+
   QDialog* aDlg = NULL;
 
   switch ( theCommandID )
@@ -91,15 +78,15 @@ bool BuildGUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent )
     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;
 }
 
@@ -111,6 +98,6 @@ extern "C"
  GEOM_BUILDGUI_EXPORT
   GEOMGUI* GetLibGUI( GeometryGUI* parent )
   {
-    return BuildGUI::GetBuildGUI( parent );
+    return new BuildGUI( parent );
   }
 }
index 6de75a9dd01dcb533c7e368a7aa75763c159cbad..60e57a347ae9f3a960fb513c9909ebd364311193 100644 (file)
 //  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
index 36d8605a98b90e8974001bb2054ac281f2620dd9..953c54f8f22e50e405b4a11ae012e8377af84676 100644 (file)
@@ -28,6 +28,7 @@
 
 #include "BuildGUI_FaceDlg.h"
 #include "GEOMImpl_Types.hxx"
+#include "TColStd_MapOfInteger.hxx"
 
 #include "SUIT_Session.h"
 #include "SalomeApp_Application.h"
@@ -64,7 +65,7 @@ BuildGUI_FaceDlg::BuildGUI_FaceDlg(GeometryGUI* theGeometryGUI, QWidget* parent,
 
   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);
 
@@ -100,7 +101,10 @@ void BuildGUI_FaceDlg::Init()
 
   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()));
@@ -160,7 +164,7 @@ void BuildGUI_FaceDlg::SelectionIntoArgument()
   if (!myWires.length())
     return;
   if(aNbSel != 1)
-    aName = tr("%1_wires").arg(aNbSel);
+    aName = tr("%1_objects").arg(aNbSel);
   
   myEditCurrentArgument->setText( aName );
   
@@ -178,7 +182,11 @@ void BuildGUI_FaceDlg::SetEditCurrentArgument()
   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();
@@ -195,7 +203,10 @@ void BuildGUI_FaceDlg::ActivateThisDialog()
   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 );
 }
 
 
index 1f26121e5c6d477a685f1ffd57e4c528990c0e66..7ce28c1842e6687a6b4a6a5bdd23c9645fb35c50 100644 (file)
@@ -17,7 +17,7 @@
 //  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
@@ -82,7 +67,6 @@ DisplayGUI::DisplayGUI( GeometryGUI* parent ) : GEOMGUI( parent )
 {
 }
 
-
 //=======================================================================
 // function : DisplayGUI::~DisplayGUI()
 // purpose  : Destructor
@@ -98,63 +82,64 @@ DisplayGUI::~DisplayGUI()
 //=======================================================================
 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;
     }
   }
@@ -168,7 +153,10 @@ bool DisplayGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent)
 //=====================================================================================
 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;
@@ -186,7 +174,9 @@ void DisplayGUI::DisplayAll()
     _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();
   }
@@ -201,7 +191,7 @@ void DisplayGUI::EraseAll()
 {
   SUIT_OverrideCursor();
 
-  SUIT_Application* app = SUIT_Session::session()->activeApplication();
+  SUIT_Application* app = getGeometryGUI()->getApp();
   if ( app ) {
     SUIT_ViewWindow* vw = app->desktop()->activeWindow();
     if ( vw ) {
@@ -232,28 +222,28 @@ void DisplayGUI::DisplayOnly()
 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();
@@ -263,8 +253,10 @@ void DisplayGUI::Display()
          _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;
@@ -289,27 +281,27 @@ void DisplayGUI::Erase()
 {
   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();
@@ -319,8 +311,10 @@ void DisplayGUI::Erase()
          _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;
@@ -334,7 +328,7 @@ void DisplayGUI::Erase()
     }
   }
   GEOM_Displayer(anActiveStudy).Erase( listIO, true );
-  ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr()->clearSelected();
+  getGeometryGUI()->getApp()->selectionMgr()->clearSelected();
 }
 
 //=====================================================================================
@@ -346,7 +340,7 @@ void DisplayGUI::SetDisplayMode( const int mode, SUIT_ViewWindow* viewWindow )
   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 );
@@ -360,7 +354,7 @@ void DisplayGUI::SetDisplayMode( const int mode, SUIT_ViewWindow* viewWindow )
     AIS_ListOfInteractive List1;
     ic->ObjectsInCollector( List1 );
     List.Append( List1 );
-    
+
     AIS_ListIteratorOfListOfInteractive ite( List );
     while( ite.More() ) {
       if( ite.Value()->IsInstance( STANDARD_TYPE(GEOM_AISShape) ) ) {
@@ -369,7 +363,7 @@ void DisplayGUI::SetDisplayMode( const int mode, SUIT_ViewWindow* viewWindow )
       }
       ite.Next();
     }
-    
+
     ic->SetDisplayMode( newmode, Standard_False );
   }
 }
@@ -382,7 +376,7 @@ int DisplayGUI::GetDisplayMode( SUIT_ViewWindow* viewWindow )
 {
   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();
@@ -413,19 +407,19 @@ void DisplayGUI::InvertDisplayMode( SUIT_ViewWindow* viewWindow )
 //=====================================================================================
 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();
@@ -435,7 +429,8 @@ void DisplayGUI::ChangeDisplayMode( const int mode, SUIT_ViewWindow* viewWindow
 
     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() );
@@ -478,6 +473,6 @@ extern "C"
  GEOM_DISPLAYGUI_EXPORT
   GEOMGUI* GetLibGUI( GeometryGUI* parent )
   {
-    return DisplayGUI::GetDisplayGUI( parent );
+    return new DisplayGUI( parent );
   }
 }
index bf69a32866e23afa8cb8cfded91c583d55832cb0..9e31f223c91686a9df8331ce7c60c4d12dc36c0f 100644 (file)
 //  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);
 
@@ -92,9 +79,6 @@ public :
   // 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
index af86865ab6aff131044d0f26d18fecccfbc741dd..8a7ad79314d1c3947c203ab76df5e8a568fd3a4e 100644 (file)
@@ -96,6 +96,8 @@ QString DlgRef_SpinBox::GetString()
 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);
index 1d7e4a0369019354a90ec2a910d578a09dd8be7e..d9675462be7194c6cd414b1b82fc7b8333f87639 100644 (file)
 
 #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
index 9fd2a63800e9524522aaca8082e42c5a19db05ba..8bdee4ae6c135be6223b465e3881cfcdf18abd1b 100644 (file)
@@ -17,7 +17,7 @@
 //  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
 //
 //
 //
@@ -37,6 +37,7 @@
 #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
@@ -84,6 +76,9 @@ EntityGUI::~EntityGUI()
 //=======================================================================
 bool EntityGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent)
 {
+  SalomeApp_Application* app = getGeometryGUI()->getApp();
+  if ( !app ) return false;
+
   getGeometryGUI()->EmitSignalDeactivateDialog();
   QDialog* aDlg = NULL;
 
@@ -97,7 +92,7 @@ bool EntityGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent)
       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 )
@@ -113,8 +108,10 @@ bool EntityGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent)
 //=====================================================================================
 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;
 
@@ -129,7 +126,7 @@ void EntityGUI::DisplaySimulationShape(const TopoDS_Shape& S1, const TopoDS_Shap
       mySimulationShape1 = new AIS_Shape(TopoDS_Shape());
       mySimulationShape1->Set(S1);
       mySimulationShape1->SetColor(Quantity_NOC_RED);
-    
+
       ic->Deactivate(mySimulationShape1);
       ic->Display(mySimulationShape1, Standard_False);
       mySimulationShape1->UnsetColor();
@@ -160,15 +157,18 @@ void EntityGUI::DisplaySimulationShape(const TopoDS_Shape& S1, const TopoDS_Shap
 //==================================================================================
 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();
@@ -188,9 +188,11 @@ void EntityGUI::EraseSimulationShape()
 //=====================================================================================
 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;
@@ -222,6 +224,6 @@ extern "C"
 GEOM_ENTITYGUI_EXPORT
   GEOMGUI* GetLibGUI( GeometryGUI* parent )
   {
-    return EntityGUI::GetEntityGUI( parent );
+    return new EntityGUI( parent );
   }
 }
index fbd7b78cbe968dd06279e54502d4e400644c3fe2..a4fd8c0014dd23835e8a4e54fb978b6afa16ff4f 100644 (file)
@@ -17,7 +17,7 @@
 //  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); 
index 3dc02c0c9e2198d165189a8cf4c572edcb89c8cc..dac57b966c4044168df7576bba0f25a759b60058 100644 (file)
@@ -1,30 +1,30 @@
 //  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"
@@ -58,7 +58,7 @@ using namespace std;
 
 //=================================================================================
 // 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.
@@ -80,7 +80,7 @@ EntityGUI_SketcherDlg::EntityGUI_SketcherDlg(GeometryGUI* GUI, QWidget* parent,
   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);
 
@@ -132,24 +132,42 @@ EntityGUI_SketcherDlg::EntityGUI_SketcherDlg(GeometryGUI* GUI, QWidget* parent,
   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);
@@ -217,7 +235,19 @@ EntityGUI_SketcherDlg::EntityGUI_SketcherDlg(GeometryGUI* GUI, QWidget* parent,
 
   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();
 }
 
@@ -228,7 +258,42 @@ EntityGUI_SketcherDlg::EntityGUI_SketcherDlg(GeometryGUI* GUI, QWidget* parent,
 //=================================================================================
 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);
 }
 
 
@@ -257,16 +322,16 @@ void EntityGUI_SketcherDlg::Init()
   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);
@@ -289,7 +354,7 @@ void EntityGUI_SketcherDlg::Init()
 //=================================================================================
 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();
@@ -359,13 +424,16 @@ void EntityGUI_SketcherDlg::PointClicked(int constructorId)
 {
   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;
@@ -380,8 +448,8 @@ void EntityGUI_SketcherDlg::PointClicked(int constructorId)
     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;
@@ -397,8 +465,8 @@ void EntityGUI_SketcherDlg::PointClicked(int constructorId)
     {  // 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();
@@ -428,6 +496,9 @@ void EntityGUI_SketcherDlg::Dir2Clicked(int constructorId)
   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;
@@ -435,8 +506,8 @@ void EntityGUI_SketcherDlg::Dir2Clicked(int constructorId)
     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();
@@ -460,7 +531,7 @@ void EntityGUI_SketcherDlg::Dir2Clicked(int constructorId)
                                Group2Spin->TextLabel2->setText(tr("GEOM_SKETCHER_Y3"));
                                Group2Spin->SpinBox_DY->SetValue(myY);
       }
-    }                   
+    }
     else if ( myConstructorDirId == 0 )
     {  // Perpendicular
       Group1Spin->show();
@@ -511,9 +582,9 @@ void EntityGUI_SketcherDlg::Dir2Clicked(int constructorId)
     }
     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;
@@ -550,9 +621,9 @@ void EntityGUI_SketcherDlg::Dir2Clicked(int constructorId)
       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"));
@@ -570,8 +641,8 @@ void EntityGUI_SketcherDlg::Dir2Clicked(int constructorId)
       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;
@@ -587,8 +658,8 @@ void EntityGUI_SketcherDlg::Dir2Clicked(int constructorId)
       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;
@@ -651,7 +722,7 @@ void EntityGUI_SketcherDlg::ClickOnEnd()
                               tr( "GEOM_ERROR_STATUS" ), tr( "CANNOT_CLOSE" ), tr( "BUT_OK" ) );
       return;
     }
-    
+
     QString Command = myCommand.join( "" ) + GetNewCommand();
     Sketcher_Profile aProfile (Command.ascii());
 
@@ -660,11 +731,11 @@ void EntityGUI_SketcherDlg::ClickOnEnd()
     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 )
@@ -680,7 +751,7 @@ void EntityGUI_SketcherDlg::ClickOnEnd()
 //=================================================================================
 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;
@@ -695,6 +766,24 @@ bool EntityGUI_SketcherDlg::ClickOnApply()
 
   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;
 }
 
@@ -705,7 +794,7 @@ bool EntityGUI_SketcherDlg::ClickOnApply()
 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;
@@ -733,7 +822,7 @@ void EntityGUI_SketcherDlg::ClickOnUndo()
 
   if(myCommand.count() == 1) {
     mySketchState = FIRST_POINT;
-    
+
     RadioButton1->setChecked(true);
     TypeClicked(0);
 
@@ -879,7 +968,7 @@ void EntityGUI_SketcherDlg::DeactivateActiveDialog()
 
   setEnabled( false );
   globalSelection();
-  disconnect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0);
+  disconnect(myGeometryGUI->getApp()->selectionMgr(), 0, this, 0);
   myGeometryGUI->SetActiveDialogBox(0);
 }
 
@@ -894,8 +983,8 @@ void EntityGUI_SketcherDlg::ActivateThisDialog()
   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 );
@@ -925,7 +1014,7 @@ void EntityGUI_SketcherDlg::enterEvent(QEvent* e)
 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 );
 }
 
@@ -1272,28 +1361,29 @@ bool EntityGUI_SketcherDlg::execute( ObjectList& objects )
   }
 
   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 {
@@ -1301,26 +1391,26 @@ bool EntityGUI_SketcherDlg::execute( ObjectList& objects )
 
     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);
@@ -1336,7 +1426,8 @@ bool EntityGUI_SketcherDlg::execute( ObjectList& objects )
   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() );
@@ -1433,9 +1524,19 @@ bool EntityGUI_SketcherDlg::createShapes( GEOM::GEOM_Object_ptr theObject,
   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();
+    }
+}
index b79bcc1e428f45738e4e63f5eb4eb04df1fa9d88..4f930f9bcdb229a06427cf75e44379183fb0dbd0 100644 (file)
@@ -1,23 +1,23 @@
 //  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
 //
 //
 //
@@ -68,6 +68,8 @@ public:
                          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();
@@ -75,6 +77,7 @@ protected:
     virtual bool execute( ObjectList& objects );
 
     void closeEvent( QCloseEvent* e );
+    void keyPressEvent( QKeyEvent* e );
 
 private :
     void Init();
index 8caa47da0cb71320bfbb7e2f93af107da0915de5..2475cce34c953459e64ac8556087ffd52a0e5f31 100644 (file)
@@ -55,6 +55,7 @@
 #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;
@@ -214,6 +215,9 @@ Handle(GEOM_Object) GEOM_Engine::AddSubShape(Handle(GEOM_Object) theMainShape,
   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");
index d79dd01a3fa0365eed2ed77cfa6ea89f01f3b21e..03cd586af255e3e3ea3f446d4348c0bde0b4480a 100644 (file)
@@ -54,6 +54,7 @@
 #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
@@ -165,7 +166,10 @@ TopoDS_Shape GEOM_Function::GetValue()
   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;
index d11673b2e21457017b18e4981c9f5bc323135a30..a3ff987bde2d2234fce5c3b84cf837c5f6a0dba1 100644 (file)
@@ -104,9 +104,13 @@ namespace GEOM
 
   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;
   }
 
index e9e1c5a37f01873f97a5daa983c0e8a5d910ba82..33a6fe5ac79534454f0ce18980ae13571ce535ad 100644 (file)
@@ -249,3 +249,20 @@ void GEOMBase_Skeleton::setHelpFileName(const QString& theName)
 {
     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();
+    }
+}
index 3223f6d4b151e1e054832ceb7ee4a6c7ba41ba1f..251c29436a6c9b3cd416d5bac9496ffd01b694cc 100644 (file)
@@ -58,6 +58,7 @@ private:
 
 protected:
     void closeEvent(QCloseEvent* e);
+    void keyPressEvent(QKeyEvent* e);
 
     /*! initialize "Name" field with a string "thePrefix_X" (Vertex_3)
      */
index b3c750a777f9c947bb93b2aa6b65f3b85d3cb7a9..4bdc8b6b1379af642c0b25c17da8986de9b90c8f 100644 (file)
@@ -58,6 +58,7 @@ LIB_CLIENT_IDL = SALOME_Exception.idl \
                 SALOMEDS.idl \
                 SALOMEDS_Attributes.idl \
                  SALOME_GenericObj.idl \
+                SALOME_Component.idl \
                 GEOM_Gen.idl
 
 LIB_SERVER_IDL = 
index 0bd0c46ee25139ec03701ea31036b89413f6c5e7..996122d66220d42e948f72ed3afc45310afc2c6c 100644 (file)
@@ -337,6 +337,10 @@ msgstr "supresshole.png"
 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"
index 03a616200560e84d26b948deea73cd8744e7704a..ae88996a29ce1e4133349822e88539af5f3f81c5 100644 (file)
@@ -992,6 +992,10 @@ msgstr "Prism Construction"
 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"
index 556d2d35fe434ea57f096914b237bd02b7c7f4af..45c9b0ead272283d77d9dbe74706459f848cf72f 100644 (file)
@@ -994,6 +994,10 @@ msgstr "Extruder une Shape de base"
 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"
index 3632a9f2830820de743b62669e89bd1240f9d57b..57b182233511ddf714edb5067f6046c9b68fca1c 100644 (file)
@@ -39,6 +39,9 @@
 #include <SelectMgr_IndexedMapOfOwner.hxx>
 #include <NCollection_DataMap.hxx>
 
+#include <SUIT_Session.h>
+#include <SalomeApp_Study.h>
+
 
 //================================================================
 // Function : GEOMGUI_OCCSelector
@@ -209,7 +212,10 @@ void GEOMGUI_OCCSelector::setSelection( const SUIT_DataOwnerPtrList& aList )
       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;
       }
     }
   }
index 68724bb38ce5fa14b868443be5d6d77c6bce86f5..4f3192b3ef3ff8024b52c63116ea1d58491f9f7e 100644 (file)
@@ -69,6 +69,7 @@
 // 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>
@@ -520,6 +521,19 @@ void GEOM_Displayer::Update( SALOME_OCCPrs* prs )
        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() );
@@ -530,6 +544,49 @@ void GEOM_Displayer::Update( SALOME_OCCPrs* prs )
             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() );
index 60c149fc17ac9e02f9e34fdf1f54e63c8d990ff4..e8132904a24960db31ec80034607aa42f9e8c99e 100644 (file)
@@ -307,6 +307,10 @@ msgstr "pointonedge.png"
 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"
@@ -315,6 +319,9 @@ 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"
@@ -698,6 +705,9 @@ msgstr "free_bound.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"
 
index 0c2e2dcab268ea10dae4e9d77bce5d1eb05b1226..6d538e649f514049e66d9e12bf453ac752c2eb51 100644 (file)
@@ -522,8 +522,8 @@ msgid "GEOM_MIRROR"
 msgstr "Mirror"
 
 #Prism
-msgid "GEOM_PRISM"
-msgstr "Prism"
+msgid "GEOM_EXTRUSION"
+msgstr "Extrusion"
 
 #Sub Shapes
 msgid "GEOM_SUB_SHAPE"
@@ -651,6 +651,10 @@ msgstr "Face"
 msgid "GEOM_FACES"
 msgstr "Faces"
 
+#Face or LCS
+msgid "GEOM_FACE_OR_LCS"
+msgstr "Face or LCS"
+
 #Line
 msgid "GEOM_LINE"
 msgstr "Line"
@@ -899,7 +903,7 @@ msgstr "Create A Face"
 
 #: 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"
@@ -907,7 +911,7 @@ msgstr "Try to create a planar face"
 
 #: 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"
@@ -927,7 +931,7 @@ msgstr "Tol. 2D :"
 
 #: GeometryGUI_FillingDlg.cxx:170
 msgid "GEOM_FILLING_COMPOUND"
-msgstr "Curves Comp."
+msgstr "Edges compound"
 
 #: GeometryGUI_FillingDlg.cxx:184
 msgid "GEOM_FILLING_TOL_3D"
@@ -1052,13 +1056,16 @@ msgid "GEOM_PLANE_PV"
 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"
@@ -1226,7 +1233,7 @@ msgstr "Working Plane Selection"
 
 #: 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"
@@ -1639,6 +1646,12 @@ msgstr "Free boundaries"
 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"
 
@@ -1711,6 +1724,9 @@ msgstr "Point Coordinates"
 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"
 
@@ -1982,6 +1998,9 @@ msgstr "ProcessShape"
 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."
 
@@ -2200,13 +2219,13 @@ msgid "STB_FILLING"
 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"
@@ -2607,6 +2626,15 @@ msgstr "Check free faces"
 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"
 
@@ -2907,6 +2935,21 @@ msgstr "General"
 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"
 
@@ -2915,3 +2958,9 @@ msgstr "Default display mode"
 
 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 "
index 0ccd32f9d89832599be5fd2431398d2818ea5e45..8d5b1b24dc4eaa5a47621bc073f92906cfddcb4c 100644 (file)
@@ -481,7 +481,7 @@ msgstr "Distance"
 
 #Filling
 msgid "GEOM_FILLING"
-msgstr "Surface Par Courbes"
+msgstr "Surface Par Edges"
 
 #Fuse
 msgid "GEOM_FUSE"
@@ -512,7 +512,7 @@ msgid "GEOM_MIRROR"
 msgstr "Miroir"
 
 #Prism
-msgid "GEOM_PRISM"
+msgid "GEOM_EXTRUSION"
 msgstr "Extrusion"
 
 #Sub Shapes
@@ -891,7 +891,7 @@ msgstr "Création d'une Face plane"
 
 #: GeometryGUI_FillingDlg.cxx:53
 msgid "GEOM_FILLING_TITLE"
-msgstr "Surface Par Courbes"
+msgstr "Surface Par Edges"
 
 #: GeometryGUI_FillingDlg.cxx:112
 msgid "GEOM_FILLING_ARG"
@@ -911,7 +911,7 @@ msgstr "Tol. 2D"
 
 #: 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"
@@ -1036,13 +1036,16 @@ msgid "GEOM_PLANE_PV"
 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"
index bbaf4214d5e0356189c472af193fcebadc390925..e78d469ebd7c9fb8ee77323397b7acacb687aead 100644 (file)
@@ -17,7 +17,7 @@
 //  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
 //
 //
 //
@@ -96,7 +96,7 @@ bool GeometryGUI::InitGeomGen()
 
 //=======================================================================
 // function : ClientSObjectToObject
-// purpose  : 
+// purpose  :
 //=======================================================================
 CORBA::Object_var GeometryGUI::ClientSObjectToObject (_PTR(SObject) theSObject)
 {
@@ -116,7 +116,7 @@ CORBA::Object_var GeometryGUI::ClientSObjectToObject (_PTR(SObject) theSObject)
 
 //=======================================================================
 // function : ClientStudyToStudy
-// purpose  : 
+// purpose  :
 //=======================================================================
 SALOMEDS::Study_var GeometryGUI::ClientStudyToStudy (_PTR(Study) theStudy)
 {
@@ -171,12 +171,12 @@ GeometryGUI::GeometryGUI() :
   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       = "";
@@ -350,7 +350,7 @@ void GeometryGUI::OnGUIEvent( int id )
   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;
 
@@ -486,7 +486,7 @@ void GeometryGUI::OnGUIEvent( int id )
   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" );
@@ -503,6 +503,7 @@ void GeometryGUI::OnGUIEvent( int id )
            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" );
@@ -548,9 +549,9 @@ void GeometryGUI::OnGUIEvent( int id )
   }
 
   // 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" ) );
 }
 
@@ -577,7 +578,7 @@ void GeometryGUI::OnKeyPress( SUIT_ViewWindow* win, QKeyEvent* pe )
 // 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 ) {
@@ -636,7 +637,7 @@ bool GeometryGUI::SetSettings()
 {
   QMenuBar*     Mb = parent->getMainMenuBar();
   SUIT_Study*   ActiveStudy = application()->activeStudy();
-    
+
 // Wireframe or Shading
   int DisplayMode = 0;
   SUIT_ViewWindow* window = application()->desktop()->activeWindow();
@@ -670,16 +671,16 @@ bool GeometryGUI::SetSettings()
   //  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) {
@@ -703,22 +704,22 @@ bool GeometryGUI::SetSettings()
   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  )
 {
@@ -726,7 +727,7 @@ void GeometryGUI::createGeomAction( const int id, const QString& po_id, const QS
   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 );
@@ -829,7 +830,8 @@ void GeometryGUI::initialize( CAM_Application* app )
   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" );
@@ -843,7 +845,7 @@ void GeometryGUI::initialize( CAM_Application* app )
   createGeomAction( 7072, "CHECK_COMPOUND" );
 
   createGeomAction( 5103, "CHECK_GEOMETRY" );
-  
+
   createGeomAction( 412, "SHADING_COLOR" );
   createGeomAction( 413, "ISOS" );
   createGeomAction( 414, "STEP_VALUE" );
@@ -894,124 +896,125 @@ void GeometryGUI::initialize( CAM_Application* app )
   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 );
 
 /*
@@ -1019,8 +1022,8 @@ void GeometryGUI::initialize( CAM_Application* app )
   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 );
 */
 
@@ -1039,59 +1042,63 @@ void GeometryGUI::initialize( CAM_Application* app )
   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) ",
@@ -1106,7 +1113,7 @@ void GeometryGUI::initialize( CAM_Application* app )
   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 );
@@ -1178,14 +1185,20 @@ bool GeometryGUI::deactivateModule( SUIT_Study* study )
   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
@@ -1279,7 +1292,7 @@ bool GeometryGUI::CustomPopup(QAD_Desktop* parent, QPopupMenu* popup, const QStr
   if( nbSel == 0 ) {
     ////// NOTHING SELECTED
     popup->clear();
-  } 
+  }
   else if ( nbSel == 1 ) {
     ////// SINGLE OBJECT SELECTION
     if ( parentComponent != parent->getActiveComponent() )  {
@@ -1506,7 +1519,7 @@ bool GeometryGUI::CustomPopup(QAD_Desktop* parent, QPopupMenu* popup, const QStr
 
 //=======================================================================
 // function : GeometryGUI::BuildPresentation()
-// purpose  : 
+// purpose  :
 //=======================================================================
 void GeometryGUI::BuildPresentation( const Handle(SALOME_InteractiveObject)& io, SUIT_ViewWindow* win )
 {
@@ -1524,7 +1537,7 @@ void GeometryGUI::onWindowActivated( 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
@@ -1645,34 +1658,60 @@ void GeometryGUI::createPreferences()
   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()
index 6eebe4a5d8790ed1729a298fb31f3ebc3b51a215..c94dfdb9f17e62ff9bc2951a79609bb41ff19624 100644 (file)
@@ -110,14 +110,16 @@ GEOM_Swig::~GEOM_Swig()
   // 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()
     {
@@ -179,7 +181,7 @@ void GEOM_Swig::createAndDisplayGO (const char* Entry)
                                         "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();
@@ -217,7 +219,7 @@ void GEOM_Swig::createAndDisplayGO (const char* Entry)
   };
 
   // MESSAGE("createAndDisplayGO");
-  ProcessVoidEvent(new TEvent (Entry));
+  ProcessVoidEvent(new TEvent (Entry, isUpdated));
 
   class TEventUpdateBrowser: public SALOME_Event
     {
@@ -234,7 +236,8 @@ void GEOM_Swig::createAndDisplayGO (const char* Entry)
         }
     };
 
-  ProcessVoidEvent(new TEventUpdateBrowser ());
+  if (isUpdated)
+    ProcessVoidEvent(new TEventUpdateBrowser ());
 }
 
 void GEOM_Swig::createAndDisplayFitAllGO (const char* Entry)
@@ -267,6 +270,25 @@ 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();
@@ -345,14 +367,15 @@ const char* GEOM_Swig::getShapeTypeIcon(const char* IOR)
   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();
@@ -364,29 +387,31 @@ void GEOM_Swig::setDisplayMode(const char* theEntry, int theMode)
       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();
@@ -399,7 +424,8 @@ void GEOM_Swig::setColor(const char* theEntry, int red, int green, int blue)
        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;
@@ -414,25 +440,27 @@ void GEOM_Swig::setColor(const char* theEntry, int red, int green, int blue)
            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();
@@ -444,16 +472,17 @@ void GEOM_Swig::setTransparency(const char* theEntry, float transp)
       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));
 }
 
 
index e441a6cdcfbb65db5575a5f3b0de038c89dd20f7..86fa64594779e4592093f2f37280a93571868625 100644 (file)
@@ -45,12 +45,13 @@ 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 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);
index 07a99e9acf3f4f3ded62f3f0971d82e33dbf208c..d562c0ffc99994f1a72cbfa6789ef871e4bfe732 100644 (file)
@@ -1,23 +1,23 @@
 //  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();
 };
index a0ae0bc0c9bed967b4a12661edac79dad8bccb1f..045ca5adefe439103554e748404f79a9f5cfd99d 100644 (file)
@@ -1,36 +1,42 @@
 // 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>
@@ -54,6 +60,30 @@ GEOMImpl_BooleanDriver::GEOMImpl_BooleanDriver()
 {
 }
 
+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  :
@@ -73,38 +103,200 @@ Standard_Integer GEOMImpl_BooleanDriver::Execute(TFunction_Logbook& log) const
   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);
index 045e2a7cd78bcac693ec8a01a8911be197ad9b37..e2d0629e4a69d7a19a6fb4838d826bdba9f619cf 100644 (file)
@@ -54,37 +54,6 @@ typedef int (*funcPoint)(const TopoDS_Shape&,
                          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  :
@@ -132,7 +101,7 @@ Standard_Integer GEOMImpl_ExportDriver::Execute(TFunction_Logbook& log) const
     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" );
index ffe05748ebe074dcf35834a56800ff4f5a13883f..d4921d6483da67d0f96adb11f2a521ca319f988b 100644 (file)
@@ -32,6 +32,7 @@
 #include <ShHealOper_FillHoles.hxx>
 #include <ShHealOper_Sewing.hxx>
 #include <ShHealOper_EdgeDivide.hxx>
+#include <ShHealOper_ChangeOrientation.hxx>
 
 #include <TopoDS.hxx>
 #include <TopExp.hxx>
@@ -115,6 +116,9 @@ Standard_Integer GEOMImpl_HealingDriver::Execute(TFunction_Logbook& log) const
   case DIVIDE_EDGE:
     AddPointOnEdge(&HI, anOriginalShape, aShape);
     break;
+  case CHANGE_ORIENTATION:
+    ChangeOrientation(&HI, anOriginalShape, aShape);
+    break;
   default:
     return 0;
   }
@@ -379,6 +383,27 @@ Standard_Boolean GEOMImpl_HealingDriver::AddPointOnEdge (GEOMImpl_IHealing* theH
 }
 
 
+//=======================================================================
+//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  :
index aa1086b514bfa1e16d20161ac5bf5ef68de182d8..3bc27c1a86663e71fee62ff65bf352c08ef7c4d2 100644 (file)
@@ -163,7 +163,7 @@ Standard_Boolean RemoveIntWires( GEOMImpl_IHealing*, const TopoDS_Shape&, TopoDS
 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;
 
 
 };
index 1fd9e6a5b33a714f5d515d5adb2a53f9d0fbc4c9..a4ed0e79e300eb53dc15ffde2290b6f6624f67b0 100644 (file)
@@ -60,6 +60,7 @@
 #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
 
 //=============================================================================
@@ -111,6 +112,9 @@ Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeBoxDXDYDZ (double theDX, dou
 
   //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;
@@ -165,6 +169,9 @@ Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeBoxTwoPnt (Handle(GEOM_Objec
 
   //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;
@@ -211,6 +218,9 @@ Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeCylinderRH (double theR, dou
 
   //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;
@@ -269,6 +279,9 @@ Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeCylinderPntVecRH (Handle(GEO
 
   //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;
@@ -318,6 +331,9 @@ Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeConeR1R2H (double theR1, dou
 
   //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;
@@ -378,6 +394,9 @@ Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeConePntVecR1R2H (Handle(GEOM
 
   //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;
@@ -423,6 +442,9 @@ Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeSphereR (double theR)
 
   //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;
@@ -475,6 +497,9 @@ Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeSpherePntR (Handle(GEOM_Obje
 
   //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;
@@ -523,6 +548,9 @@ Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeTorusRR
 
   //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;
@@ -580,6 +608,9 @@ Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeTorusPntVecRR
 
   //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;
@@ -637,8 +668,12 @@ Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakePrismVecH (Handle(GEOM_Objec
 
   //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;
     }
   }
@@ -694,8 +729,12 @@ Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakePrismTwoPnt
 
   //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;
     }
   }
@@ -749,6 +788,9 @@ Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakePipe (Handle(GEOM_Object) th
 
   //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;
@@ -806,6 +848,9 @@ Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeRevolutionAxisAngle (Handle(
 
   //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;
@@ -858,6 +903,9 @@ Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeSolidShell (Handle(GEOM_Obje
 
   //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;
@@ -914,6 +962,9 @@ Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeFilling
 
   //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;
@@ -1000,6 +1051,9 @@ Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeThruSections(
 
   //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;
@@ -1122,6 +1176,9 @@ Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakePipeWithDifferentSections(
   
   //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;
index 917ad2c250968014721df23083495a734249ec1f..6ed1de04e75fb247927505a244717e003029fc01 100644 (file)
@@ -47,6 +47,7 @@
 
 #include <GEOMImpl_Types.hxx>
 
+#include <Standard_Failure.hxx>
 #include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
 
 //=============================================================================
@@ -100,6 +101,9 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePointXYZ
 
   //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;
@@ -152,6 +156,9 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePointWithReference
 
   //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;
@@ -202,6 +209,9 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePointOnCurve
 
   //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;
@@ -252,6 +262,9 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakeTangentOnCurve
 
   //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;
@@ -300,6 +313,9 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakeVectorDXDYDZ
 
   //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;
@@ -352,6 +368,9 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakeVectorTwoPnt
 
   //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;
@@ -405,6 +424,9 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakeLine
 
   //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;
@@ -457,6 +479,9 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakeLineTwoPnt
 
   //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;
@@ -514,6 +539,9 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePlaneThreePnt
 
   //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;
@@ -568,6 +596,9 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePlanePntVec
 
   //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;
@@ -619,6 +650,9 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePlaneFace
 
   //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;
@@ -670,6 +704,9 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakeMarker
 
   //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;
@@ -728,6 +765,9 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakeTangentPlaneOnFace(const Hand
 
   //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;
index aac760183168f6de90fc0915a8a13170ac574ff9..252a39d7f963bf5f990e7d6890db520ad35b98ec 100644 (file)
@@ -94,6 +94,7 @@
 
 #include <Precision.hxx>
 
+#include <Standard_Failure.hxx>
 #include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
 
 //=============================================================================
@@ -161,6 +162,9 @@ Handle(GEOM_Object) GEOMImpl_IBlocksOperations::MakeQuad
 
   //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;
@@ -216,6 +220,9 @@ Handle(GEOM_Object) GEOMImpl_IBlocksOperations::MakeQuad2Edges
 
   //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;
@@ -278,6 +285,9 @@ Handle(GEOM_Object) GEOMImpl_IBlocksOperations::MakeQuad4Vertices
 
   //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;
@@ -347,6 +357,9 @@ Handle(GEOM_Object) GEOMImpl_IBlocksOperations::MakeHexa
 
   //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;
@@ -403,6 +416,9 @@ Handle(GEOM_Object) GEOMImpl_IBlocksOperations::MakeHexa2Faces
 
   //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;
@@ -456,6 +472,9 @@ Handle(GEOM_Object) GEOMImpl_IBlocksOperations::MakeBlockCompound
 
   //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;
@@ -585,6 +604,9 @@ Handle(GEOM_Object) GEOMImpl_IBlocksOperations::GetEdge
 
   //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);
@@ -688,6 +710,9 @@ Handle(GEOM_Object) GEOMImpl_IBlocksOperations::GetEdgeNearPoint
 
   //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);
@@ -817,6 +842,9 @@ Handle(GEOM_Object) GEOMImpl_IBlocksOperations::GetFaceByPoints
 
   //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;
@@ -934,12 +962,6 @@ Handle(GEOM_Object) GEOMImpl_IBlocksOperations::GetFaceByEdges
     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();
@@ -955,6 +977,9 @@ Handle(GEOM_Object) GEOMImpl_IBlocksOperations::GetFaceByEdges
 
   //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;
@@ -1077,6 +1102,9 @@ Handle(GEOM_Object) GEOMImpl_IBlocksOperations::GetOppositeFace
 
   //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;
@@ -1127,12 +1155,6 @@ Handle(GEOM_Object) GEOMImpl_IBlocksOperations::GetFaceNearPoint
     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()) {
@@ -1146,6 +1168,9 @@ Handle(GEOM_Object) GEOMImpl_IBlocksOperations::GetFaceNearPoint
 
   //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);
@@ -1322,12 +1347,6 @@ Handle(GEOM_Object) GEOMImpl_IBlocksOperations::GetFaceByNormale
     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()) {
@@ -1341,6 +1360,9 @@ Handle(GEOM_Object) GEOMImpl_IBlocksOperations::GetFaceByNormale
 
   //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);
@@ -1454,6 +1476,9 @@ Standard_Boolean GEOMImpl_IBlocksOperations::IsCompoundOfBlocks
   //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()) {
@@ -2306,6 +2331,9 @@ Handle(GEOM_Object) GEOMImpl_IBlocksOperations::RemoveExtraEdges
 
   //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;
@@ -2355,6 +2383,9 @@ Handle(GEOM_Object) GEOMImpl_IBlocksOperations::CheckAndImprove
 
   //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;
@@ -2404,6 +2435,9 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IBlocksOperations::ExplodeCompound
 
   // 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())) {
@@ -2496,6 +2530,9 @@ Handle(GEOM_Object) GEOMImpl_IBlocksOperations::GetBlockNearPoint
 
   //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);
@@ -2672,6 +2709,9 @@ Handle(GEOM_Object) GEOMImpl_IBlocksOperations::GetBlockByParts
 
   //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;
@@ -2788,6 +2828,9 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IBlocksOperations::GetBlocksByPart
 
   //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);
@@ -2908,6 +2951,9 @@ Handle(GEOM_Object) GEOMImpl_IBlocksOperations::MakeMultiTransformation1D
 
   //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;
@@ -2969,6 +3015,9 @@ Handle(GEOM_Object) GEOMImpl_IBlocksOperations::MakeMultiTransformation2D
 
   //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;
index 8c71c551c5df87635f2a432b7ff877495a4b722d..bedeef3df2c86afeddb529647e3d5e5205c2c075 100644 (file)
@@ -36,6 +36,7 @@
 
 #include "utilities.h"
 
+#include <Standard_Failure.hxx>
 #include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
 
 //=============================================================================
@@ -105,6 +106,9 @@ Handle(GEOM_Object) GEOMImpl_IBooleanOperations::MakeBoolean (Handle(GEOM_Object
 
   //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;
@@ -251,6 +255,7 @@ Handle(GEOM_Object) GEOMImpl_IBooleanOperations::MakePartition
     if (theMaterials.IsNull()) {
       Handle(TColStd_HArray1OfInteger) aMaterials =
         new TColStd_HArray1OfInteger (1, aShapesSeq->Length());
+      aMaterials->Init(0);
       aCI.SetMaterials(aMaterials);
     } else {
       aCI.SetMaterials(theMaterials);
@@ -259,6 +264,9 @@ Handle(GEOM_Object) GEOMImpl_IBooleanOperations::MakePartition
 
   //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;
@@ -329,6 +337,9 @@ Handle(GEOM_Object) GEOMImpl_IBooleanOperations::MakeHalfPartition
 
   //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;
index c498996ef3e0ec42f6e31f987895356c35aa0daa..a28543ca7154fca165f80842fa50db9b875f6837 100644 (file)
@@ -44,6 +44,7 @@
 
 #include <TDF_Tool.hxx>
 
+#include <Standard_Failure.hxx>
 #include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
 
 //=============================================================================
@@ -106,6 +107,9 @@ Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakePolyline (list<Handle(GEOM_O
 
   //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;
@@ -170,6 +174,9 @@ Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakeCircleThreePnt (Handle(GEOM_
 
   //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;
@@ -225,6 +232,9 @@ Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakeCirclePntVecR
 
   //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;
@@ -282,6 +292,9 @@ Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakeEllipse
 
   //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;
@@ -339,6 +352,9 @@ Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakeArc (Handle(GEOM_Object) the
 
   //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;
@@ -396,6 +412,9 @@ Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakeSplineBezier
 
   //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;
@@ -460,6 +479,9 @@ Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakeSplineInterpolation
 
   //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;
@@ -521,6 +543,9 @@ Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakeSketcher
 
   //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;
@@ -580,6 +605,9 @@ Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakeSketcherOnPlane
 
   //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;
index 2693d4c8a6b8413a2031a09030ca6c592428447c..6c904ca2df0c0fb88b0adf97efe14e231cf1009d 100644 (file)
@@ -38,6 +38,7 @@
 #include <TDataStd_Integer.hxx>
 
 #include <TopExp.hxx>
+#include <TopExp_Explorer.hxx>
 #include <TopTools_IndexedMapOfShape.hxx>
 
 #include <TColStd_HArray1OfInteger.hxx>
@@ -45,8 +46,6 @@
 #include <TColStd_ListOfInteger.hxx>
 #include <TColStd_ListIteratorOfListOfInteger.hxx>
 
-#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
-
 //=============================================================================
 /*!
  *   constructor:
@@ -195,20 +194,18 @@ void GEOMImpl_IGroupOperations::RemoveObject (Handle(GEOM_Object) theGroup, int
     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; 
       }
@@ -276,80 +273,68 @@ void GEOMImpl_IGroupOperations::UnionList (Handle(GEOM_Object) theGroup,
   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) {
@@ -431,78 +416,50 @@ void GEOMImpl_IGroupOperations::DifferenceList (Handle(GEOM_Object) theGroup,
   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;
       }
     }
   }
@@ -718,7 +675,7 @@ TopAbs_ShapeEnum GEOMImpl_IGroupOperations::GetType(Handle(GEOM_Object) theGroup
   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(); 
 }
index 1d3d9f4206f871f0bdafc5d54118b8089ff0498d..9e67bc310d05025e5521f3604dd7e19523f96e04 100644 (file)
@@ -49,6 +49,7 @@
 
 #include <TDF_Tool.hxx>
 
+#include <Standard_Failure.hxx>
 #include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
 
 
@@ -134,8 +135,10 @@ Handle(GEOM_Object) GEOMImpl_IHealingOperations::ShapeProcess (Handle(GEOM_Objec
   }
 
   //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");
@@ -341,8 +344,10 @@ Handle(GEOM_Object) GEOMImpl_IHealingOperations::SuppressFaces
   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");
@@ -410,8 +415,10 @@ Handle(GEOM_Object) GEOMImpl_IHealingOperations::CloseContour
   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");
@@ -477,8 +484,10 @@ Handle(GEOM_Object) GEOMImpl_IHealingOperations::RemoveIntWires
   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");
@@ -543,8 +552,10 @@ Handle(GEOM_Object) GEOMImpl_IHealingOperations::FillHoles (Handle(GEOM_Object)
   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");
@@ -609,8 +620,10 @@ Handle(GEOM_Object) GEOMImpl_IHealingOperations::Sew (Handle(GEOM_Object) theObj
   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");
@@ -670,8 +683,10 @@ Handle(GEOM_Object) GEOMImpl_IHealingOperations::DivideEdge (Handle(GEOM_Object)
   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");
@@ -773,3 +788,122 @@ bool GEOMImpl_IHealingOperations::GetFreeBoundary (Handle(GEOM_Object) theObject
   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;
+}
+
index 1a7359374bb26eba88c67be4dbf273e7e1b36301..3b36d040fb0bcf835e3cc18fc28eb9e3e0654cef 100644 (file)
@@ -81,6 +81,10 @@ class GEOMImpl_IHealingOperations : public GEOM_IOperations {
   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
index ec850804c61b38677365254dd31c7b21b0ab296c..094e2fbb73741806a3b6537a5a9faf9401862742 100644 (file)
@@ -42,6 +42,7 @@
 
 #include <GEOMImpl_Types.hxx>
 
+#include <Standard_Failure.hxx>
 #include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
 
 //=============================================================================
@@ -98,6 +99,9 @@ Handle(GEOM_Object) GEOMImpl_IInsertOperations::MakeCopy(Handle(GEOM_Object) the
 
   //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;
@@ -155,6 +159,9 @@ void GEOMImpl_IInsertOperations::Export
 
   //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;
@@ -210,6 +217,9 @@ Handle(GEOM_Object) GEOMImpl_IInsertOperations::Import
 
   //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;
@@ -388,9 +398,9 @@ Standard_Boolean GEOMImpl_IInsertOperations::InitResMgr()
     // 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;
index 96bb393b5c6eb273430a048512674d8a57b4a374..63e0126b02b48a997493bf77b341f9896ae5fcce 100644 (file)
@@ -51,6 +51,7 @@
 #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
 
 //=============================================================================
@@ -106,6 +107,9 @@ Handle(GEOM_Object) GEOMImpl_ILocalOperations::MakeFilletAll
 
   //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;
@@ -164,6 +168,9 @@ Handle(GEOM_Object) GEOMImpl_ILocalOperations::MakeFilletEdges
 
   //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;
@@ -230,6 +237,9 @@ Handle(GEOM_Object) GEOMImpl_ILocalOperations::MakeFilletFaces
 
   //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;
@@ -287,6 +297,9 @@ Handle(GEOM_Object) GEOMImpl_ILocalOperations::MakeChamferAll (Handle(GEOM_Objec
 
   //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;
@@ -341,6 +354,9 @@ Handle(GEOM_Object) GEOMImpl_ILocalOperations::MakeChamferEdge
 
   //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;
@@ -402,6 +418,9 @@ Handle(GEOM_Object) GEOMImpl_ILocalOperations::MakeChamferFaces
 
   //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;
@@ -463,6 +482,9 @@ Handle(GEOM_Object) GEOMImpl_ILocalOperations::MakeArchimede (Handle(GEOM_Object
 
   //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;
index 94ecb8458ea7d0709a8a754271f8b43733741fbf..33fc39a94299deecd0201890626fd1b34c05fb6b 100644 (file)
@@ -1,18 +1,18 @@
 // 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
@@ -32,6 +32,7 @@
 #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
 
 //=============================================================================
@@ -86,6 +92,106 @@ GEOMImpl_IMeasureOperations::~GEOMImpl_IMeasureOperations()
 }
 
 
+//=============================================================================
+/*! 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
@@ -118,6 +224,9 @@ Handle(GEOM_Object) GEOMImpl_IMeasureOperations::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;
@@ -162,6 +271,9 @@ void GEOMImpl_IMeasureOperations::GetBasicProperties (Handle(GEOM_Object) theSha
   //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();
 
@@ -215,6 +327,9 @@ void GEOMImpl_IMeasureOperations::GetInertia
   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) {
@@ -279,6 +394,9 @@ void GEOMImpl_IMeasureOperations::GetBoundingBox
   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);
   }
@@ -321,6 +439,9 @@ void GEOMImpl_IMeasureOperations::GetTolerance
   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);
@@ -361,6 +482,7 @@ void GEOMImpl_IMeasureOperations::GetTolerance
  */
 //=============================================================================
 bool GEOMImpl_IMeasureOperations::CheckShape (Handle(GEOM_Object)      theShape,
+                                              const Standard_Boolean   theIsCheckGeom,
                                               TCollection_AsciiString& theDump)
 {
   SetErrorCode(KO);
@@ -379,7 +501,10 @@ bool GEOMImpl_IMeasureOperations::CheckShape (Handle(GEOM_Object)      theShape,
   //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;
@@ -429,6 +554,9 @@ TCollection_AsciiString GEOMImpl_IMeasureOperations::WhatIs (Handle(GEOM_Object)
   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;
@@ -499,6 +627,9 @@ Standard_Real GEOMImpl_IMeasureOperations::GetMinDistance
 
   //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;
@@ -552,8 +683,10 @@ void GEOMImpl_IMeasureOperations::PointCoordinates( Handle(GEOM_Object) theShape
     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();
index d60ba91530e0ec07dcc2d28646be75a1404e5367..4a0cc980bfaf80fc32936319e487b33e3002a794 100644 (file)
 #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);
@@ -36,41 +38,51 @@ class GEOMImpl_IMeasureOperations : public GEOM_IOperations {
   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,
index ec50792fa6660f7f9fc7a6aa0ecd6bfdb579c7fd..67e8f436282b3354ed682780ec422987d3aa1114 100644 (file)
@@ -95,6 +95,7 @@
 
 #include <vector>
 
+#include <Standard_Failure.hxx>
 #include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
 
 //=============================================================================
@@ -152,6 +153,9 @@ Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeEdge
 
   //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;
@@ -216,6 +220,9 @@ Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeFace (Handle(GEOM_Object) th
 
   //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;
@@ -277,6 +284,9 @@ Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeFaceWires
 
   //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;
@@ -360,6 +370,9 @@ Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeSolidShell (Handle(GEOM_Obje
 
   //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;
@@ -432,6 +445,9 @@ Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeShape
 
   //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;
@@ -496,6 +512,9 @@ Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeGlueFaces
   //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;
@@ -947,6 +966,9 @@ Handle(GEOM_Object) GEOMImpl_IShapesOperations::ReverseShape(Handle(GEOM_Object)
 
   //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;
@@ -1395,6 +1417,80 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetShapesOnPlan
   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
@@ -1543,6 +1639,73 @@ Handle(TColStd_HSequenceOfInteger) GEOMImpl_IShapesOperations::GetShapesOnPlaneI
   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
index d18b35c12716a0eac26c393832c9ee5c969e4024..f24d1d03cd0190d769b58e235392b62e3cfa2b29 100644 (file)
@@ -97,6 +97,13 @@ class GEOMImpl_IShapesOperations : public GEOM_IOperations {
                                                          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,
@@ -114,6 +121,12 @@ class GEOMImpl_IShapesOperations : public GEOM_IOperations {
                                                           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,
index 270d78ff7dae62969e9df54e410076727666c4cc..27ba4cb29d7bdd5bb11892caa6269f7d01bced53 100644 (file)
@@ -1,18 +1,18 @@
 // 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
@@ -49,6 +49,7 @@
 
 #include <GEOMImpl_Types.hxx>
 
+#include <Standard_Failure.hxx>
 #include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
 
 //=============================================================================
@@ -109,6 +110,9 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::TranslateTwoPoints
 
   //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;
@@ -159,6 +163,9 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::TranslateDXDYDZ
 
   //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;
@@ -212,6 +219,9 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::TranslateTwoPointsCopy
 
   //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;
@@ -264,6 +274,9 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::TranslateDXDYDZCopy
 
   //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;
@@ -316,6 +329,9 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::TranslateVector
 
   //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;
@@ -367,6 +383,9 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::TranslateVectorCopy
 
   //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;
@@ -420,6 +439,9 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::Translate1D
 
   //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;
@@ -480,6 +502,9 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::Translate2D (Handle(GEOM_Obje
 
   //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;
@@ -533,6 +558,9 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::MirrorPlane
 
   //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;
@@ -583,6 +611,9 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::MirrorPlaneCopy
 
   //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;
@@ -634,6 +665,9 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::MirrorPoint
 
   //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;
@@ -684,6 +718,9 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::MirrorPointCopy
 
   //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;
@@ -735,6 +772,9 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::MirrorAxis
 
   //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;
@@ -785,6 +825,9 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::MirrorAxisCopy
 
   //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;
@@ -834,6 +877,9 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::OffsetShape
 
   //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;
@@ -885,6 +931,9 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::OffsetShapeCopy
 
   //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;
@@ -938,6 +987,9 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::ScaleShape
 
   //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;
@@ -990,6 +1042,9 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::ScaleShapeCopy
 
   //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;
@@ -1019,30 +1074,34 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::PositionShape
 {
   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;
@@ -1072,7 +1131,7 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::PositionShapeCopy
 {
   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
@@ -1081,8 +1140,11 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::PositionShapeCopy
   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
@@ -1090,11 +1152,15 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::PositionShapeCopy
 
   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;
@@ -1148,6 +1214,9 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::Rotate (Handle(GEOM_Object) t
 
   //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;
@@ -1198,6 +1267,9 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::RotateCopy (Handle(GEOM_Objec
 
   //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;
@@ -1250,6 +1322,9 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::Rotate1D (Handle(GEOM_Object)
 
   //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;
@@ -1308,6 +1383,9 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::Rotate2D (Handle(GEOM_Object)
 
   //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;
index 2231421b4213f3a337bcac7323c3a98982c8f566..90b01ace0589cc50fd70a2317365b0202d37bad0 100644 (file)
@@ -56,37 +56,6 @@ typedef TopoDS_Shape (*funcPoint)(const TCollection_AsciiString&,
                                   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  :
@@ -126,7 +95,7 @@ Standard_Integer GEOMImpl_ImportDriver::Execute(TFunction_Logbook& log) const
     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" );
index 8e27bcb3c5699545753ed9977fabe37bcd68429c..a7bf8d433b86970c5addbe27a797b562c6801b8c 100644 (file)
@@ -79,7 +79,9 @@ Standard_Integer GEOMImpl_LineDriver::Execute(TFunction_Logbook& log) const
     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");
     }
@@ -95,8 +97,12 @@ Standard_Integer GEOMImpl_LineDriver::Execute(TFunction_Logbook& log) const
     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");
     }
index bd5ccdee1abe0067eabc79138f049df65bdae34d..1f3e28c77ee873ecd2c5b7f8f9b34b57b6d3c67c 100644 (file)
@@ -1,18 +1,18 @@
 // 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
@@ -25,6 +25,9 @@
 #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);
@@ -124,13 +127,16 @@ Standard_Integer GEOMImpl_PlaneDriver::Execute(TFunction_Logbook& log) const
   } 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();
@@ -138,7 +144,7 @@ Standard_Integer GEOMImpl_PlaneDriver::Execute(TFunction_Logbook& log) const
     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;
@@ -154,7 +160,7 @@ Standard_Integer GEOMImpl_PlaneDriver::Execute(TFunction_Logbook& log) const
     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);
@@ -167,7 +173,6 @@ Standard_Integer GEOMImpl_PlaneDriver::Execute(TFunction_Logbook& log) const
     if(aTool.IsDone())
       aShape = aTool.Shape();
   }
-
   else {
   }
 
@@ -175,7 +180,7 @@ Standard_Integer GEOMImpl_PlaneDriver::Execute(TFunction_Logbook& log) const
 
   aFunction->SetValue(aShape);
 
-  log.SetTouched(Label()); 
+  log.SetTouched(Label());
 
   return 1;
 }
@@ -184,17 +189,17 @@ Standard_Integer GEOMImpl_PlaneDriver::Execute(TFunction_Logbook& log) const
 //=======================================================================
 //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",
@@ -209,7 +214,7 @@ Standard_EXPORT Handle_Standard_Type& GEOMImpl_PlaneDriver_Type_()
 //=======================================================================
 //function : DownCast
 //purpose  :
-//======================================================================= 
+//=======================================================================
 const Handle(GEOMImpl_PlaneDriver) Handle(GEOMImpl_PlaneDriver)::DownCast
        (const Handle(Standard_Transient)& AnObject)
 {
index 8e0fb508fcaa4914614e419b5fc4c1849c72a570..789575c793936553e7571ac78aeeaf8174ed8a83 100644 (file)
@@ -1,30 +1,33 @@
 // 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);
@@ -82,58 +85,48 @@ Standard_Integer GEOMImpl_PositionDriver::Execute(TFunction_Logbook& log) const
     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();
   }
@@ -144,26 +137,26 @@ Standard_Integer GEOMImpl_PositionDriver::Execute(TFunction_Logbook& log) const
 
   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",
@@ -178,7 +171,7 @@ Standard_EXPORT Handle_Standard_Type& GEOMImpl_PositionDriver_Type_()
 //=======================================================================
 //function : DownCast
 //purpose  :
-//======================================================================= 
+//=======================================================================
 const Handle(GEOMImpl_PositionDriver) Handle(GEOMImpl_PositionDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
 {
   Handle(GEOMImpl_PositionDriver) _anOtherObject;
index 5177a5081ec1655f7c8ac4b2bf3686e7a1f55b24..dc199ffee5d209d0580085ee477ae12220750d89 100644 (file)
@@ -48,6 +48,7 @@
 #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>
@@ -114,18 +115,26 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const
       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) {
@@ -146,48 +155,63 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const
       }
       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");
     }
@@ -209,11 +233,24 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const
         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();
@@ -233,7 +270,8 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const
         }
       }
     }
-  } else if (aType == SHELL_FACES) {
+  }
+  else if (aType == SHELL_FACES) {
     Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes();
     unsigned int ind, nbshapes = aShapes->Length();
 
@@ -250,17 +288,29 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const
 
     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) {
@@ -282,7 +332,8 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const
 
     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;
@@ -313,7 +364,8 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const
       return 0;
     }
 
-  } else if (aType == COMPOUND_SHAPES) {
+  }
+  else if (aType == COMPOUND_SHAPES) {
     Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes();
     unsigned int ind, nbshapes = aShapes->Length();
 
@@ -331,7 +383,8 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const
 
     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()) {
index b62081d4cdfd2f21e56d9b3c5259020e5251956a..2a6eb0a7bb7185c8cbdc2b3cac985604aaa68035 100644 (file)
@@ -25,6 +25,9 @@
 #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>
@@ -100,13 +103,14 @@ Standard_Integer GEOMImpl_SketcherDriver::Execute(TFunction_Logbook& log) const
   {
     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);
index 4f679dd1679f5bd84f2d4a0b059e93ec729ca1e2..cc0ebb563936dee8a5bee7f4463c0cafa0296668 100755 (executable)
 
 #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
 
index 9c96d277cd01bf4d4a8e28267e5eb70fcea7b865..330156a3479bf83addd0092410fb74fcf3274d69 100644 (file)
@@ -227,7 +227,8 @@ bool GEOMToolsGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent)
 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() );
@@ -287,6 +288,10 @@ void GEOMToolsGUI::OnEditDelete()
        _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() ) {
 
@@ -300,42 +305,30 @@ void GEOMToolsGUI::OnEditDelete()
          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 );
@@ -450,6 +443,17 @@ bool GEOMToolsGUI::Import()
 
   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;
 
@@ -638,6 +642,45 @@ QString GEOMToolsGUI::getParentComponent( _PTR( SObject ) obj )
   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
 //=====================================================================================
index 6cdd066f9bee4bf601c31e36d9781b9264bfdf64..512b5b90d98590c55113ecd482461203fad11abe 100644 (file)
 #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
@@ -74,6 +79,12 @@ private:
   // 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
index 55de2df9d20b19631ad7fd01f8836c0a1c0ad1b0..94c92abfc2b8f69d2ca66a6a52d4a3748b693f1d 100644 (file)
@@ -71,6 +71,8 @@
 #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>
@@ -260,6 +262,18 @@ void GEOMToolsGUI::OnColor()
              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 );
index b2c5f7f88ede71c6543cb1d294bced95853cd197..05c9d39ab13992d8f47758368c841cef06351df2 100644 (file)
@@ -183,3 +183,20 @@ void GEOMToolsGUI_NbIsosDlg::ClickOnHelp()
                           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();
+    }
+}
index 632e86473c0673bfb081088892a2b8fdaa1e9f0f..e93b1ded30a0d93e28b52cf0f33b159bbfb6c761 100644 (file)
@@ -54,7 +54,10 @@ public:
     void      setV( const int );
 
 private slots:
-    void ClickOnHelp();
+    void      ClickOnHelp();
+
+private:
+    void      keyPressEvent(QKeyEvent*);
 
 private:
     QSpinBox* SpinBoxU;
index 89e43471330a221c1cbd5e22db6692db1ece7759..7e7151a6cdccc70ecc34e3e09a591095501662a7 100644 (file)
@@ -285,3 +285,20 @@ void GEOMToolsGUI_TransparencyDlg::ValueHasChanged( int newValue )
     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();
+    }
+}
index 5153cfb4fc4d91d9afceb376c989bf73a719f1cd..0b7aa869cad534dd62afd45cbc9d19c3e717ea68 100644 (file)
@@ -48,6 +48,9 @@ public:
   GEOMToolsGUI_TransparencyDlg( QWidget* parent );    
   ~GEOMToolsGUI_TransparencyDlg();
 
+private:
+  void      keyPressEvent(QKeyEvent*);
+
 private :
   bool      myFirstInit ;   /* Inform for the first init  */
   QSlider*  mySlider; 
index ea5feedf4e2c9b2048cfc667063144d9cdf4a056..2ae6d0a596aa1a8ea1b4b33d1c79fea3033bd522 100644 (file)
@@ -1,18 +1,18 @@
 // 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
@@ -68,11 +68,25 @@ GEOM_Gen_i::GEOM_Gen_i(CORBA::ORB_ptr orb,
 
   _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
@@ -94,7 +108,7 @@ char* GEOM_Gen_i::IORToLocalPersistentID(SALOMEDS::SObject_ptr theSObject,
 {
   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;
 }
@@ -119,7 +133,7 @@ char* GEOM_Gen_i::LocalPersistentIDToIOR(SALOMEDS::SObject_ptr theSObject,
   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);
 }
 
 //============================================================================
@@ -173,8 +187,10 @@ SALOMEDS::SObject_ptr GEOM_Gen_i::PublishInStudy(SALOMEDS::Study_ptr theStudy,
   }
   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);
@@ -229,7 +245,7 @@ SALOMEDS::SObject_ptr GEOM_Gen_i::PublishInStudy(SALOMEDS::Study_ptr theStudy,
     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
@@ -247,7 +263,7 @@ SALOMEDS::SObject_ptr GEOM_Gen_i::PublishInStudy(SALOMEDS::Study_ptr theStudy,
     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());
@@ -339,7 +355,7 @@ CORBA::Boolean GEOM_Gen_i::Load(SALOMEDS::SComponent_ptr theComponent,
   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;
 }
@@ -454,6 +470,9 @@ SALOMEDS::SObject_ptr GEOM_Gen_i::PasteInto(const SALOMEDS::TMPFile& theStream,
   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);
@@ -470,7 +489,7 @@ SALOMEDS::SObject_ptr GEOM_Gen_i::PasteInto(const SALOMEDS::TMPFile& theStream,
 //============================================================================
 char* GEOM_Gen_i::ComponentDataType()
 {
-  return strdup("GEOM");
+  return CORBA::string_dup("GEOM");
 }
 
 //============================================================================
@@ -520,9 +539,8 @@ SALOMEDS::SObject_ptr GEOM_Gen_i::AddInStudy(SALOMEDS::Study_ptr theStudy, 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));
 }
 
 //============================================================================
index 0af96885cc6885aca9858037d998fb1ed590b547..56726b072f230ba5db61a3869bd19b577de20658 100644 (file)
@@ -154,10 +154,11 @@ GEOM::GEOM_Object_ptr GEOM_IBooleanOperations_i::MakePartition
 
   //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
index a3dc9b4aa491b3c69149e789ee0d36cc9382ab54..cdd3f1efec13f02368601a86dfef46afbaa98045 100644 (file)
@@ -454,3 +454,71 @@ CORBA::Boolean GEOM_IHealingOperations_i::GetFreeBoundary ( GEOM::GEOM_Object_pt
 
   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);
+}
+
index 53b9778cbd0b64cfae69eedc88e44dcb96cbe20f..1b3f451188829a97ee1be4d055b8aa08f17d5037 100644 (file)
@@ -62,6 +62,9 @@ class GEOM_I_EXPORT GEOM_IHealingOperations_i :
 
    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:
index c29bf81d28ca5c947e5cc86b8931156aee46def8..9b763dfaf53a0a967084d583a3742bddfc947236 100644 (file)
@@ -1,18 +1,18 @@
 // 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
@@ -51,6 +51,36 @@ GEOM_IMeasureOperations_i::~GEOM_IMeasureOperations_i()
 }
 
 
+//=============================================================================
+/*!
+ *  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
@@ -201,7 +231,40 @@ CORBA::Boolean GEOM_IMeasureOperations_i::CheckShape (GEOM::GEOM_Object_ptr theS
   //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;
@@ -219,7 +282,7 @@ CORBA::Boolean GEOM_IMeasureOperations_i::CheckShape (GEOM::GEOM_Object_ptr theS
 
   // 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;
index ff62a8bc9e9b91f29052a99086d1d9b2b31f1f3f..39c495774f02d726528e6510e43641e53615d31f 100644 (file)
@@ -40,6 +40,11 @@ class GEOM_I_EXPORT GEOM_IMeasureOperations_i :
                            ::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,
@@ -66,6 +71,9 @@ class GEOM_I_EXPORT GEOM_IMeasureOperations_i :
   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,
index e26bc84ce391858f574946e52c3c20ad14ab0ef5..23afcacbefdbcf71a2c68930cf489c43a4ec0f4f 100644 (file)
@@ -706,6 +706,49 @@ GEOM::ListOfGO* GEOM_IShapesOperations_i::GetShapesOnPlane
   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
@@ -889,6 +932,49 @@ GEOM::ListOfLong* GEOM_IShapesOperations_i::GetShapesOnPlaneIDs
   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
index 5a2cc0cde250b9702fd0a156064615b95c23285f..1d738ba468074c0b31bda5badc6d44abfe86e7ff 100644 (file)
@@ -98,6 +98,12 @@ class GEOM_I_EXPORT GEOM_IShapesOperations_i :
                                    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,
@@ -123,6 +129,12 @@ class GEOM_I_EXPORT GEOM_IShapesOperations_i :
                                         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,
index abc3b362cda9e5845be92628dd76d21db5caec94..e19197e805f5fdf3d5084fcc7103d4219c5d9918 100644 (file)
@@ -1,18 +1,18 @@
 // 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
@@ -63,7 +63,7 @@ GEOM_ITransformOperations_i::~GEOM_ITransformOperations_i()
 /*!
  *  TranslateTwoPoints
  */
-//============================================================================= 
+//=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateTwoPoints
                                              (GEOM::GEOM_Object_ptr theObject,
                                              GEOM::GEOM_Object_ptr thePoint1,
@@ -72,7 +72,7 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateTwoPoints
   //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
@@ -108,7 +108,7 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateTwoPoints
 /*!
  *  TranslateTwoPointsCopy
  */
-//============================================================================= 
+//=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateTwoPointsCopy
                                              (GEOM::GEOM_Object_ptr theObject,
                                              GEOM::GEOM_Object_ptr thePoint1,
@@ -149,12 +149,12 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateTwoPointsCopy
 /*!
  *  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();
@@ -183,7 +183,7 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateDXDYDZ (GEOM::GEOM_O
 /*!
  *  TranslateDXDYDZCopy
  */
-//============================================================================= 
+//=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateDXDYDZCopy
                                              (GEOM::GEOM_Object_ptr theObject, CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ)
 {
@@ -210,18 +210,18 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateDXDYDZCopy
   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();
@@ -243,18 +243,18 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateVector
   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)
@@ -262,7 +262,7 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateVectorCopy
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
-  GetOperations()->SetNotDone(); 
+  GetOperations()->SetNotDone();
 
   if (theObject == NULL || theVector == NULL) return aGEOMObject._retn();
 
@@ -275,13 +275,13 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateVectorCopy
   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);
 }
 
 
@@ -289,13 +289,13 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateVectorCopy
 /*!
  *  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();
@@ -316,18 +316,18 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::Rotate (GEOM::GEOM_Object_ptr
   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)
@@ -335,7 +335,7 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::RotateCopy (GEOM::GEOM_Object
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
-  GetOperations()->SetNotDone(); 
+  GetOperations()->SetNotDone();
 
   if (theObject == NULL || theAxis == NULL) return aGEOMObject._retn();
 
@@ -348,13 +348,13 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::RotateCopy (GEOM::GEOM_Object
   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);
 }
 
 
@@ -362,7 +362,7 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::RotateCopy (GEOM::GEOM_Object
 /*!
  *  MirrorPlane
  */
-//============================================================================= 
+//=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPlane
                                             (GEOM::GEOM_Object_ptr theObject,
                                             GEOM::GEOM_Object_ptr thePlane)
@@ -370,7 +370,7 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPlane
   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();
 
@@ -391,16 +391,16 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPlane
   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)
@@ -408,7 +408,7 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPlaneCopy
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
-  GetOperations()->SetNotDone(); 
+  GetOperations()->SetNotDone();
 
   if (theObject == NULL || thePlane == NULL) return aGEOMObject._retn();
 
@@ -421,20 +421,20 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPlaneCopy
   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)
@@ -442,7 +442,7 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorAxis
   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();
 
@@ -463,16 +463,16 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorAxis
   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)
@@ -480,7 +480,7 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorAxisCopy
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
-  GetOperations()->SetNotDone(); 
+  GetOperations()->SetNotDone();
 
   if (theObject == NULL || theAxis == NULL) return aGEOMObject._retn();
 
@@ -493,20 +493,20 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorAxisCopy
   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)
@@ -514,7 +514,7 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPoint
   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();
 
@@ -535,16 +535,16 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPoint
   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)
@@ -552,7 +552,7 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPointCopy
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
-  GetOperations()->SetNotDone(); 
+  GetOperations()->SetNotDone();
 
   if (theObject == NULL || thePoint == NULL) return aGEOMObject._retn();
 
@@ -565,13 +565,13 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPointCopy
   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);
 }
 
 
@@ -579,7 +579,7 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPointCopy
 /*!
  *  OffsetShape
  */
-//============================================================================= 
+//=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::OffsetShape
                                              (GEOM::GEOM_Object_ptr theObject,
                                              CORBA::Double theOffset)
@@ -613,7 +613,7 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::OffsetShape
 /*!
  *  OffsetShapeCopy
  */
-//============================================================================= 
+//=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::OffsetShapeCopy
                                              (GEOM::GEOM_Object_ptr theObject,
                                              CORBA::Double theOffset)
@@ -643,7 +643,7 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::OffsetShapeCopy
 /*!
  *  ScaleShape
  */
-//============================================================================= 
+//=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::ScaleShape
                                              (GEOM::GEOM_Object_ptr theObject,
                                              GEOM::GEOM_Object_ptr thePoint,
@@ -682,7 +682,7 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::ScaleShape
 /*!
  *  ScaleShapeCopy
  */
-//============================================================================= 
+//=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::ScaleShapeCopy
                                              (GEOM::GEOM_Object_ptr theObject,
                                              GEOM::GEOM_Object_ptr thePoint,
@@ -718,7 +718,7 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::ScaleShapeCopy
 /*!
  *  PositionShape
  */
-//============================================================================= 
+//=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::PositionShape
                                              (GEOM::GEOM_Object_ptr theObject,
                                              GEOM::GEOM_Object_ptr theStartLCS,
@@ -729,7 +729,7 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::PositionShape
   //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
@@ -743,10 +743,12 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::PositionShape
     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 =
@@ -763,7 +765,7 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::PositionShape
 /*!
  *  PositionShapeCopy
  */
-//============================================================================= 
+//=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::PositionShapeCopy
                                              (GEOM::GEOM_Object_ptr theObject,
                                              GEOM::GEOM_Object_ptr theStartLCS,
@@ -774,7 +776,7 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::PositionShapeCopy
   //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
@@ -782,10 +784,12 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::PositionShapeCopy
     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 =
@@ -805,14 +809,14 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::PositionShapeCopy
 /*!
  *  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;
 
@@ -830,27 +834,27 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiTranslate1D
 
   //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;
 
@@ -873,23 +877,23 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiTranslate2D (GEOM::GEOM_
 
   //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;
 
@@ -906,26 +910,26 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiRotate1D (GEOM::GEOM_Obj
   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;
 
@@ -943,8 +947,8 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiRotate2D (GEOM::GEOM_Obj
 
   //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);
 }
index ef367ca48c61b0b773072ff89f43512a95177780..abed346f7ef477d3a6a24e5fc9aef72cec6bb914 100644 (file)
@@ -55,7 +55,7 @@ LIB_SRC = \
        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
index 2f4d96bf1fd5a8ee092b860c0dcaece5789d513f..894e4f358745fdf0fb37262ab1234aa1b82db8a1 100644 (file)
@@ -119,7 +119,7 @@ void GEOM_Superv_i::SetStudyID( CORBA::Long theId )
   
   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) ) {
@@ -130,7 +130,7 @@ void GEOM_Superv_i::SetStudyID( CORBA::Long theId )
          _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 );
          }
        }
       }
@@ -506,10 +506,13 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointXYZ(CORBA::Double theX,
                                                  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;
 }
 
 //=============================================================================
@@ -520,9 +523,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointWithReference (GEOM::GEOM_Object_p
                                                             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;
 }
 
 //=============================================================================
@@ -531,9 +537,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointWithReference (GEOM::GEOM_Object_p
 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;
 }
 
 //=============================================================================
@@ -542,9 +551,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnCurve (GEOM::GEOM_Object_ptr the
 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;
 }
 
 //=============================================================================
@@ -554,9 +566,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeVectorDXDYDZ (CORBA::Double theDX,
                                                       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;
 }
 
 //=============================================================================
@@ -565,9 +580,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeVectorDXDYDZ (CORBA::Double theDX,
 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;
 }
 
 //=============================================================================
@@ -576,9 +594,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeVectorTwoPnt (GEOM::GEOM_Object_ptr the
 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;
 }
 
 //=============================================================================
@@ -589,9 +610,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlaneThreePnt (GEOM::GEOM_Object_ptr th
                                                        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;
 }
 
 //=============================================================================
@@ -600,10 +624,13 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlaneThreePnt (GEOM::GEOM_Object_ptr th
 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;
 }
 
 //=============================================================================
@@ -612,9 +639,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlanePntVec (GEOM::GEOM_Object_ptr theP
 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;
 }
 
 //=============================================================================
@@ -625,9 +655,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMarker
  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;
 }
 
 //=============================================================================
@@ -638,9 +671,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTangentPlaneOnFace (GEOM::GEOM_Object_p
                                                 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 ================
@@ -654,11 +690,14 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBox (CORBA::Double theX1,
                                              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;
 }
 
 //=============================================================================
@@ -668,9 +707,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoxDXDYDZ (CORBA::Double theDX,
                                                    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;
 }
 
 //=============================================================================
@@ -679,9 +721,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoxDXDYDZ (CORBA::Double theDX,
 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;
 }
 
 //=============================================================================
@@ -692,9 +737,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderPntVecRH (GEOM::GEOM_Object_ptr
                                                           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;
 }
 
 //=============================================================================
@@ -703,9 +751,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderPntVecRH (GEOM::GEOM_Object_ptr
 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; 
 }
 
 //=============================================================================
@@ -716,10 +767,13 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSphere  (CORBA::Double theX,
                                                  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;
 }
 
 //=============================================================================
@@ -727,9 +781,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSphere  (CORBA::Double theX,
 //=============================================================================
 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;
 }
 
 //=============================================================================
@@ -738,9 +795,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSphereR (CORBA::Double theR)
 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;
 }
 
 //=============================================================================
@@ -751,9 +811,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTorusPntVecRR (GEOM::GEOM_Object_ptr th
                                                        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;
 }
 
 //=============================================================================
@@ -762,9 +825,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTorusPntVecRR (GEOM::GEOM_Object_ptr th
 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;
 }
 
 //=============================================================================
@@ -776,9 +842,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeConePntVecR1R2H (GEOM::GEOM_Object_ptr
                                                          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;
 }
 
 //=============================================================================
@@ -788,9 +857,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeConeR1R2H (CORBA::Double theR1,
                                                    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;
 }
 
 //=============================================================================
@@ -800,9 +872,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismVecH (GEOM::GEOM_Object_ptr theBas
                                                    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;
 }
 
 
@@ -813,9 +888,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismTwoPnt (GEOM::GEOM_Object_ptr theB
                                                      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;
 }
 
 //=============================================================================
@@ -824,9 +902,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismTwoPnt (GEOM::GEOM_Object_ptr theB
 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;
 }
 
 //=============================================================================
@@ -836,9 +917,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeRevolutionAxisAngle (GEOM::GEOM_Object_
                                                              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;
 }
 
 //=============================================================================
@@ -849,9 +933,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilling (GEOM::GEOM_Object_ptr theShape
                                                  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 =============================
@@ -862,11 +949,14 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoolean (GEOM::GEOM_Object_ptr theShape
                                                  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;
 }
 
 //=============================================================================
@@ -877,9 +967,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeThruSections(const GEOM::ListOfGO& theS
                                         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;
 }
 
 //=============================================================================
@@ -891,9 +984,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeWithDifferentSections(const GEOM::L
                                                      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:
@@ -901,9 +997,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeWithDifferentSections(const GEOM::L
 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;
 }
 
 //=============================================================================
@@ -917,6 +1016,7 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePartition (GEOM::GEOM_List_ptr   theSha
                                                    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());
@@ -930,10 +1030,13 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePartition (GEOM::GEOM_List_ptr   theSha
     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;
 }
 
@@ -943,9 +1046,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePartition (GEOM::GEOM_List_ptr   theSha
 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 =============================
@@ -954,9 +1060,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHalfPartition (GEOM::GEOM_Object_ptr th
 //=============================================================================
 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;
 }
 
 //=============================================================================
@@ -966,9 +1075,11 @@ void GEOM_Superv_i::Export (GEOM::GEOM_Object_ptr theObject,
                            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" );
 }
 
 //=============================================================================
@@ -977,9 +1088,12 @@ void GEOM_Superv_i::Export (GEOM::GEOM_Object_ptr theObject,
 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;
 }
 
 //=============================================================================
@@ -988,9 +1102,11 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::Import (const char* theFileName,
 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" );
 }
 
 //=============================================================================
@@ -999,9 +1115,11 @@ void GEOM_Superv_i::ImportTranslators (GEOM::string_array_out theFormats,
 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 ===========================
@@ -1012,9 +1130,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateTwoPoints (GEOM::GEOM_Object_ptr t
                                                         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;
 }
 
 //=============================================================================
@@ -1024,9 +1145,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateTwoPointsCopy (GEOM::GEOM_Object_p
                                                             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;
 }
 
 //=============================================================================
@@ -1037,9 +1161,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateDXDYDZ (GEOM::GEOM_Object_ptr theO
                                                      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;
 }
 
 //=============================================================================
@@ -1050,9 +1177,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateDXDYDZCopy (GEOM::GEOM_Object_ptr
                                                          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;
 }
 
 //=============================================================================
@@ -1061,9 +1191,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateDXDYDZCopy (GEOM::GEOM_Object_ptr
 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;
 }
 
 //=============================================================================
@@ -1072,9 +1205,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVector (GEOM::GEOM_Object_ptr theO
 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;
 }
 
 //=============================================================================
@@ -1085,9 +1221,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiTranslate1D (GEOM::GEOM_Object_ptr the
                                                       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;
 }
 
 //=============================================================================
@@ -1101,10 +1240,13 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiTranslate2D (GEOM::GEOM_Object_ptr the
                                                       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;
 }
 
 //=============================================================================
@@ -1114,9 +1256,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::Rotate (GEOM::GEOM_Object_ptr theObject,
                                             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;
 }
 
 //=============================================================================
@@ -1126,9 +1271,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateCopy (GEOM::GEOM_Object_ptr theObject
                                                 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;
 }
 
 //=============================================================================
@@ -1138,9 +1286,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiRotate1D (GEOM::GEOM_Object_ptr theObj
                                                    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;
 }
 
 //=============================================================================
@@ -1153,9 +1304,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiRotate2D (GEOM::GEOM_Object_ptr theObj
                                                    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;
 }
 
 //=============================================================================
@@ -1164,9 +1318,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiRotate2D (GEOM::GEOM_Object_ptr theObj
 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;
 }
 
 //=============================================================================
@@ -1175,9 +1332,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPlane (GEOM::GEOM_Object_ptr theObjec
 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;
 }
 
 //=============================================================================
@@ -1186,9 +1346,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPlaneCopy (GEOM::GEOM_Object_ptr theO
 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;
 }
 
 //=============================================================================
@@ -1197,9 +1360,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorAxis (GEOM::GEOM_Object_ptr theObject
 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;
 }
 
 //=============================================================================
@@ -1208,9 +1374,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorAxisCopy (GEOM::GEOM_Object_ptr theOb
 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;
 }
 
 //=============================================================================
@@ -1219,9 +1388,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPoint (GEOM::GEOM_Object_ptr theObjec
 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;
 }
 
 //=============================================================================
@@ -1230,9 +1402,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPointCopy (GEOM::GEOM_Object_ptr theO
 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;
 }
 
 //=============================================================================
@@ -1241,9 +1416,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::OffsetShape (GEOM::GEOM_Object_ptr theObjec
 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;
 }
 
 //=============================================================================
@@ -1253,9 +1431,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShape (GEOM::GEOM_Object_ptr theObject
                                                 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;
 }
 
 //=============================================================================
@@ -1265,9 +1446,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeCopy (GEOM::GEOM_Object_ptr theOb
                                                     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;
 }
 
 //=============================================================================
@@ -1277,9 +1461,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionShape (GEOM::GEOM_Object_ptr theObj
                                                    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;
 }
 
 //=============================================================================
@@ -1289,9 +1476,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionShapeCopy (GEOM::GEOM_Object_ptr th
                                                        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 ============================
@@ -1301,9 +1491,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionShapeCopy (GEOM::GEOM_Object_ptr th
 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;
 }
 
 //=============================================================================
@@ -1311,12 +1504,16 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEdge (GEOM::GEOM_Object_ptr thePnt1,
 //=============================================================================
 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;
 }
 
@@ -1326,9 +1523,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeWire (GEOM::GEOM_List_ptr theEdgesAndWi
 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;
 }
 
 //=============================================================================
@@ -1337,12 +1537,16 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFace (GEOM::GEOM_Object_ptr theWire,
 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;
 }
 
@@ -1351,12 +1555,16 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceWires (GEOM::GEOM_List_ptr theWires
 //=============================================================================
 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;
 }
 
@@ -1365,9 +1573,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeShell (GEOM::GEOM_List_ptr theFacesAndS
 //=============================================================================
 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;
 }
 
 //=============================================================================
@@ -1375,12 +1586,16 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidShell (GEOM::GEOM_Object_ptr theSh
 //=============================================================================
 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;
 }
 
@@ -1389,12 +1604,16 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidShells (GEOM::GEOM_List_ptr theShe
 //=============================================================================
 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;
 }
 
@@ -1404,9 +1623,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCompound (GEOM::GEOM_List_ptr theShapes
 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;
 }
 
 //=============================================================================
@@ -1416,12 +1638,14 @@ GEOM::GEOM_List_ptr GEOM_Superv_i::MakeExplode (GEOM::GEOM_Object_ptr theShape,
                                                    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();
 }
 
@@ -1430,9 +1654,12 @@ GEOM::GEOM_List_ptr GEOM_Superv_i::MakeExplode (GEOM::GEOM_Object_ptr theShape,
 //=============================================================================
 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;
 }
 
 //=============================================================================
@@ -1440,9 +1667,12 @@ CORBA::Long GEOM_Superv_i::NumberOfFaces (GEOM::GEOM_Object_ptr theShape)
 //=============================================================================
 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;
 }
 
 //=============================================================================
@@ -1450,9 +1680,12 @@ CORBA::Long GEOM_Superv_i::NumberOfEdges (GEOM::GEOM_Object_ptr theShape)
 //=============================================================================
 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;
 }
 
 
@@ -1465,9 +1698,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad4Vertices (GEOM::GEOM_Object_ptr th
                                                        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;
 }
 
 //=============================================================================
@@ -1478,9 +1714,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad (GEOM::GEOM_Object_ptr theEdge1,
                                               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;
 }
 
 //=============================================================================
@@ -1489,9 +1728,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad (GEOM::GEOM_Object_ptr theEdge1,
 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;
 }
 
 //=============================================================================
@@ -1504,9 +1746,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHexa (GEOM::GEOM_Object_ptr theFace1,
                                               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;
 }
 
 //=============================================================================
@@ -1515,9 +1760,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHexa (GEOM::GEOM_Object_ptr theFace1,
 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;
 }
 
 //=============================================================================
@@ -1529,9 +1777,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::GetPoint (GEOM::GEOM_Object_ptr theShape,
                                               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;
 }
 
 //=============================================================================
@@ -1541,9 +1792,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::GetEdge (GEOM::GEOM_Object_ptr theShape,
                                              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;
 }
 
 //=============================================================================
@@ -1552,9 +1806,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::GetEdge (GEOM::GEOM_Object_ptr theShape,
 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;
 }
 
 //=============================================================================
@@ -1566,9 +1823,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByPoints (GEOM::GEOM_Object_ptr theS
                                                      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;
 }
 
 //=============================================================================
@@ -1578,9 +1838,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByEdges (GEOM::GEOM_Object_ptr theSh
                                                     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;
 }
 
 //=============================================================================
@@ -1589,9 +1852,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByEdges (GEOM::GEOM_Object_ptr theSh
 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;
 }
 
 //=============================================================================
@@ -1600,9 +1866,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::GetOppositeFace (GEOM::GEOM_Object_ptr theB
 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;
 }
 
 //=============================================================================
@@ -1611,9 +1880,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceNearPoint (GEOM::GEOM_Object_ptr the
 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;
 }
 
 //=============================================================================
@@ -1624,9 +1896,12 @@ CORBA::Boolean GEOM_Superv_i::IsCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompo
                                                  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;
 }
 
 //=============================================================================
@@ -1636,9 +1911,12 @@ CORBA::Boolean GEOM_Superv_i::CheckCompoundOfBlocks
 (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;
 }
 
 //=============================================================================
@@ -1647,9 +1925,12 @@ CORBA::Boolean GEOM_Superv_i::CheckCompoundOfBlocks
 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;
 }
 
 //=============================================================================
@@ -1659,10 +1940,12 @@ GEOM::GEOM_List_ptr GEOM_Superv_i::ExplodeCompoundOfBlocks (GEOM::GEOM_Object_pt
                                                                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();
 }
 
@@ -1672,9 +1955,12 @@ GEOM::GEOM_List_ptr GEOM_Superv_i::ExplodeCompoundOfBlocks (GEOM::GEOM_Object_pt
 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;
 }
 
 //=============================================================================
@@ -1683,12 +1969,16 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::GetBlockNearPoint (GEOM::GEOM_Object_ptr th
 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;
 }
 
@@ -1698,6 +1988,7 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::GetBlockByParts (GEOM::GEOM_Object_ptr theC
 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())) {
@@ -1705,8 +1996,10 @@ GEOM::GEOM_List_ptr GEOM_Superv_i::GetBlocksByParts (GEOM::GEOM_Object_ptr theCo
     
     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;
 }
 
@@ -1718,9 +2011,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMultiTransformation1D (GEOM::GEOM_Objec
                                                                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;
 }
 
 //=============================================================================
@@ -1735,11 +2031,14 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMultiTransformation2D
  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 ============================
@@ -1750,9 +2049,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCirclePntVecR (GEOM::GEOM_Object_ptr th
                                                        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;
 }
 
 //=============================================================================
@@ -1762,9 +2064,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCircleThreePnt (GEOM::GEOM_Object_ptr t
                                                         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;
 }
 
 //=============================================================================
@@ -1775,9 +2080,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEllipse (GEOM::GEOM_Object_ptr theCente
                                                  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;
 }
 
 //=============================================================================
@@ -1787,9 +2095,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArc (GEOM::GEOM_Object_ptr thePnt1,
                                              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;
 }
 
 //=============================================================================
@@ -1797,12 +2108,16 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArc (GEOM::GEOM_Object_ptr thePnt1,
 //=============================================================================
 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;
 }
 
@@ -1811,12 +2126,16 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePolyline (GEOM::GEOM_List_ptr thePoints
 //=============================================================================
 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;
 }
 
@@ -1825,12 +2144,16 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSplineBezier (GEOM::GEOM_List_ptr thePo
 //=============================================================================
 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;
 }
 
@@ -1840,12 +2163,16 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSplineInterpolation (GEOM::GEOM_List_pt
 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;
 }
 
@@ -1856,9 +2183,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSketcher (const char* theCommand,
 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;
 }
 
 //=============================================================================
@@ -1868,12 +2198,16 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletEdges (GEOM::GEOM_Object_ptr theS
                                                      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;
 }
 
@@ -1884,12 +2218,16 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletFaces (GEOM::GEOM_Object_ptr theS
                                                      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;
 }
 
@@ -1898,9 +2236,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletFaces (GEOM::GEOM_Object_ptr theS
 //=============================================================================
 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;
 }
   
 //=============================================================================
@@ -1910,9 +2251,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdge (GEOM::GEOM_Object_ptr theS
                                                      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;
 }
 
 //=============================================================================
@@ -1922,12 +2266,16 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferFaces (GEOM::GEOM_Object_ptr the
                                                       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;
 }
 
@@ -1939,9 +2287,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArchimede (GEOM::GEOM_Object_ptr theSha
                                                    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;
 }
 
 //=============================================================================
@@ -1950,9 +2301,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArchimede (GEOM::GEOM_Object_ptr theSha
 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 =============================
@@ -1962,9 +2316,12 @@ CORBA::Long GEOM_Superv_i::GetSubShapeIndex (GEOM::GEOM_Object_ptr theShape,
 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;
 }
 
 //=============================================================================
@@ -1973,9 +2330,11 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::CreateGroup (GEOM::GEOM_Object_ptr theMainS
 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" );
 }
 
 //=============================================================================
@@ -1984,9 +2343,11 @@ void GEOM_Superv_i::AddObject (GEOM::GEOM_Object_ptr theGroup,
 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" );
 }
 
 //=============================================================================
@@ -1994,9 +2355,12 @@ void GEOM_Superv_i::RemoveObject (GEOM::GEOM_Object_ptr theGroup,
 //=============================================================================
 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;
 }
 
 //=============================================================================
@@ -2004,9 +2368,12 @@ CORBA::Long GEOM_Superv_i::GetType (GEOM::GEOM_Object_ptr theGroup)
 //=============================================================================
 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;
 }
 
 //=============================================================================
@@ -2014,12 +2381,14 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::GetMainShape (GEOM::GEOM_Object_ptr theGrou
 //=============================================================================
 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();
 }
 
index fe10c1dad2ccc636fa6535194fc18792a23dcc26..740d1b2d85713bb00a43c19bd66daa737c965e51 100644 (file)
@@ -119,3 +119,13 @@ def TestMeasureOperations (geompy, math):
   #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
index 3b4f6f9439ed685ad7b721c5e91875ea8eb9f855..bc47bd830493e0e1bd00a1039d14c15bbd65d790 100644 (file)
@@ -307,6 +307,7 @@ def TestOtherOperations (geompy, math):
   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)
@@ -422,6 +423,20 @@ def TestOtherOperations (geompy, math):
   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)
index 6d280f1f8298f807b73d331296f1476c52f7a6dc..52ccbdfff6afc2b063b51e1d9d196b182c55e529 100644 (file)
@@ -31,10 +31,16 @@ import GEOM
 
 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
@@ -920,8 +926,12 @@ def MakeCDG(aShape):
       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:
index b3d72514e5fba832b522455ffa2569035278c5b9..2247928c1974fdf066f39fd6ae1d51a8ce2fca64 100644 (file)
 #  Module : GEOM
 #  $Header$
 
+import salome
+salome.salome_init()
 from salome import *
+
 import GEOM
 
 """
@@ -273,7 +276,7 @@ def MakePlaneThreePnt(thePnt1, thePnt2, thePnt3, theTrimSize):
     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.
 #
@@ -452,7 +455,7 @@ def MakeSketcher(theCommand, theWorkingPlane = [0,0,0, 0,0,1, 1,0,0]):
 #  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)
@@ -741,7 +744,7 @@ def MakeWire(theEdgesAndWires):
     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.
@@ -754,7 +757,7 @@ def MakeFace(theWire, isPlanarWanted):
     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.
@@ -897,6 +900,33 @@ def GetShapesOnPlaneIDs(theShape, theShapeType, theAx1, theState):
         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.
@@ -954,8 +984,10 @@ def GetShapesOnSphereIDs(theShape, theShapeType, theCenter, theRadius, theState)
 #  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.
@@ -1058,7 +1090,7 @@ def SubShapeAllSortedIDs(aShape, aType):
     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>.
@@ -1197,6 +1229,23 @@ def DivideEdge(theObject, theEdgeIndex, theValue, isByParameter):
       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.
@@ -1449,8 +1498,16 @@ def MakeMirrorByPoint(theObject, thePoint):
       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):
@@ -1775,12 +1832,18 @@ def MakeCDG(theShape):
 
 ## 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:
@@ -1788,6 +1851,25 @@ def CheckShape(theShape):
         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
 # -----------------------------------------------------------------------------
@@ -2039,7 +2121,8 @@ def CheckCompoundOfBlocks(theCompound):
     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.
 #
index 6b4bb06c012ba1d48527c6c854eb0b3534d8a15d..85832ed847ebfef0340beab530f101c56b51e7e2 100644 (file)
@@ -17,7 +17,7 @@
 //  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
 //
 //
 //
@@ -31,6 +31,8 @@
 #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
@@ -60,7 +48,6 @@ GenerationGUI::GenerationGUI(GeometryGUI* parent) : GEOMGUI(parent)
 {
 }
 
-
 //=======================================================================
 // function : ~GenerationGUI()
 // purpose  : Destructor
@@ -76,23 +63,26 @@ GenerationGUI::~GenerationGUI()
 //=======================================================================
 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;
 }
 
@@ -105,6 +95,6 @@ extern "C"
 GENERATIONGUI_EXPORT
   GEOMGUI* GetLibGUI(GeometryGUI* parent)
   {
-    return GenerationGUI::GetGenerationGUI(parent);
+    return new GenerationGUI(parent);
   }
 }
index c4c85c3c570359ff48722604ba277eb6c48f3421..a809bdcf73e24d2f612ebd4136a7a409049b20f4 100644 (file)
 //  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
index 5026f26b34cc77012477c0ea5602ee805244c58b..8939ae5b47ae74f9550cbbf77a1bc6c137803bdf 100644 (file)
@@ -43,7 +43,6 @@
 #include <TopoDS_Iterator.hxx>
 #include <BRep_Tool.hxx>
 #include <Precision.hxx>
-#include <Standard_ErrorHandler.hxx>
 #include "GEOMImpl_Types.hxx"
 
 #include <qlabel.h>
@@ -124,10 +123,10 @@ void GenerationGUI_FillingDlg::Init()
   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);
index a4464d5cc7934c28a910c899d7ea50127ff194d9..54e4ad76b53696db865ebf64de5fcad5be8216d6 100644 (file)
@@ -57,18 +57,20 @@ GenerationGUI_PrismDlg::GenerationGUI_PrismDlg(GeometryGUI* theGeometryGUI, QWid
 {
   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"));
@@ -78,7 +80,17 @@ GenerationGUI_PrismDlg::GenerationGUI_PrismDlg(GeometryGUI* theGeometryGUI, QWid
   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");
@@ -109,20 +121,27 @@ void GenerationGUI_PrismDlg::Init()
   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()));
 
@@ -134,12 +153,78 @@ void GenerationGUI_PrismDlg::Init()
 
   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();
 }
 
 
@@ -176,40 +261,79 @@ void GenerationGUI_PrismDlg::SelectionIntoArgument()
 {
   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();
+  }
 }
 
 
@@ -231,6 +355,20 @@ void GenerationGUI_PrismDlg::SetEditCurrentArgument()
     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();
 }
 
@@ -243,7 +381,10 @@ void GenerationGUI_PrismDlg::LineEditReturnPressed()
 {
   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();
@@ -271,9 +412,10 @@ void GenerationGUI_PrismDlg::ActivateThisDialog()
   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() );
 }
 
 
@@ -311,7 +453,7 @@ GEOM::GEOM_IOperations_ptr GenerationGUI_PrismDlg::createOperation()
 //=================================================================================
 bool GenerationGUI_PrismDlg::isValid( QString& )
 {
-  return myOkBase && myOkVec;
+  return myOkBase && ( myOkVec || (myOkPnt1 && myOkPnt2) );
 }
 
 //=================================================================================
@@ -322,9 +464,21 @@ bool GenerationGUI_PrismDlg::execute( ObjectList& objects )
 {
   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() );
 
index ce0cced89e2cf2de76507b2450933d5c719a65aa..2c106080c9f8dec7692272c993931d3b5d7e5228 100644 (file)
@@ -32,6 +32,7 @@
 
 #include "GEOMBase_Skeleton.h"
 #include "DlgRef_2Sel1Spin2Check.h"
+#include "DlgRef_3Sel_QTD.h"
 
 //=================================================================================
 // class    : GenerationGUI_PrismDlg
@@ -59,11 +60,15 @@ private :
     
     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();
@@ -72,6 +77,7 @@ private slots:
     void LineEditReturnPressed();
     void SelectionIntoArgument();
     void SetEditCurrentArgument();
+    void ConstructorsClicked(int);
     void ValueChangedInSpinBox();
     void onReverse();
 };
index 8ef0d44e6077c48dbedf3685b794d374c8662be0..e8a6608ad68efd99d95736a6ea6c4638cc72a357 100644 (file)
@@ -37,7 +37,6 @@
 #include <BRepAdaptor_Curve.hxx>
 #include <BRepPrimAPI_MakeRevol.hxx>
 #include <TopExp_Explorer.hxx>
-#include <Standard_ErrorHandler.hxx>
 #include "GEOMImpl_Types.hxx"
 
 #include <qlabel.h>
@@ -115,7 +114,7 @@ void GenerationGUI_RevolDlg::Init()
 
   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 */
index fc0ebafe353361e7bed24a64ea55c7a7c6fcb07e..e335605c6325fae08ffae8f37b88280921088392 100644 (file)
@@ -17,7 +17,7 @@
 //  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
@@ -76,12 +62,14 @@ GroupGUI::~GroupGUI()
 //=======================================================================
 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();
 
@@ -103,12 +91,9 @@ bool GroupGUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent )
       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;
@@ -124,7 +109,7 @@ bool GroupGUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent )
       break;
     }
   default: 
-    suitApp->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID)); 
+    app->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID)); 
     break;
   }
 
@@ -144,6 +129,6 @@ extern "C"
 #endif
   GEOMGUI* GetLibGUI(GeometryGUI* p)
   {
-    return GroupGUI::GetGroupGUI(p);
+    return new GroupGUI(p);
   }
 }
index a699547ff060b0665011c9fff8d4f1b26fc895ff..71bac9677968738b4e09ddafe7b0a72592bf71fd 100644 (file)
 //  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
@@ -39,19 +38,11 @@ class GroupGUI : public GEOMGUI
 {
   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
index cf55174ca16a43b4ab44244c092bd82b401cd28b..2016cbd342e29f53073f72e90231c506c6a48475 100644 (file)
@@ -217,6 +217,8 @@ bool GroupGUI_GroupDlg::ClickOnApply()
       initName();
       myIdList->clear();
     }
+  else
+    activateSelection();
   return true;
 }
 
index 7a07965d13e3a5070a487622b4c0235f55cd87fb..3458594d395e1863d7b89c4697cb0d65fd917111 100644 (file)
@@ -17,7 +17,7 @@
 //  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
 //
 //
 //
@@ -31,6 +31,7 @@
 #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
@@ -66,7 +52,6 @@ MeasureGUI::MeasureGUI( GeometryGUI* parent ) : GEOMGUI( parent )
 {
 }
 
-
 //=======================================================================
 // function : ~MeasureGUI()
 // purpose  : Destructor
@@ -82,7 +67,9 @@ MeasureGUI::~MeasureGUI()
 //=======================================================================
 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 )
@@ -99,7 +86,7 @@ bool MeasureGUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent )
     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;
@@ -114,6 +101,6 @@ extern "C"
 GEOM_MEASUREGUI_EXPORT
   GEOMGUI* GetLibGUI( GeometryGUI* parent )
   {
-    return MeasureGUI::GetMeasureGUI( parent );
+    return new MeasureGUI( parent );
   }
 }
index b312c9e91ee75566ff8af87b6642b513d1122047..295c3a742312b803d429e7a2fb574a0b12fc1611 100644 (file)
 //  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
index 848e9ff86ce8fda8473515fda44e9f76cbe72ffe..795107a57f971dd3fea88594c66efbc455d6fcaa 100644 (file)
@@ -17,7 +17,7 @@
 //  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
 //
 //
 //
@@ -27,7 +27,6 @@
 //  $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
@@ -66,11 +82,11 @@ MeasureGUI_CheckShapeDlg::MeasureGUI_CheckShapeDlg( GeometryGUI* GUI, QWidget* p
   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 );
@@ -87,7 +103,6 @@ MeasureGUI_CheckShapeDlg::MeasureGUI_CheckShapeDlg( GeometryGUI* GUI, QWidget* p
   Init();
 }
 
-
 //=================================================================================
 // function : ~MeasureGUI_CheckShapeDlg()
 // purpose  : Destroys the object and frees any allocated resources
@@ -106,6 +121,9 @@ void MeasureGUI_CheckShapeDlg::Init()
   mySelBtn = myGrp->PushButton1;
   mySelEdit = myGrp->LineEdit1;
   MeasureGUI_Skeleton::Init();
+
+  connect(myGrp->CheckBoxGeom, SIGNAL(toggled(bool)), 
+          this, SLOT(SelectionIntoArgument()));
 }
 
 //=================================================================================
@@ -121,7 +139,13 @@ bool MeasureGUI_CheckShapeDlg::getParameters ( bool& theIsValid, QString& theMsg
     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 )
index 6cba00c6454246ae9d15d57ecb5903c52eea6acd..ba89aff2b02e9166e0a61473525b3e1207aa6f0f 100644 (file)
 //  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
@@ -44,24 +59,19 @@ class GEOM_MEASUREGUI_EXPORT MeasureGUI_CheckShapeDlg : public MeasureGUI_Skelet
     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
index f2da1161d20f88a9e5a2aa422df174a5f2d251cf..ef4d92e8b5c8594c60bc4f73f79386889f5b95f2 100644 (file)
@@ -371,3 +371,19 @@ GEOM::GEOM_IOperations_ptr MeasureGUI_Skeleton::createOperation()
   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();
+    }
+}
index 77c5d18f59a0ab915d75330ccebbad5e1095b14e..79d5ade2166926092139a9453e6542ec86133efa 100644 (file)
@@ -68,6 +68,7 @@ protected:
 
     void                      enterEvent( QEvent* e );
     void                      closeEvent( QCloseEvent* e );
+    void                      keyPressEvent( QKeyEvent* e );
     void                      redisplayPreview();
     GEOM_Displayer*           getDisplayer();
 
index 268da634a0a96b1ba15b63b80acb275a4868c1a6..a922453462424076a201a51c19a574b0e8972418 100644 (file)
@@ -309,12 +309,18 @@ static
     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;
@@ -622,3 +628,4 @@ static
 // 101 - Null shape is not allowed here
 // 102 - DS is not computed
 // 103 - No source shapes to treat
+// 104 - NMTTools_DSFiller failed
index 6762a1dd3b7a417f84a6da8bc367ba0db2528b1d..b394de32857e3bf8800477f8be56d36ff22b850e 100644 (file)
   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);
 
index cfbd9d0f7d937f96e68b340d97de83439f3a9f61..c3a4f96954404f746dd8d139f7adb9ad3e0bb963 100644 (file)
     NMTTools_DEProcessor aDEP(*this);
     aDEP.Do();
     //
+    myIsDone = Standard_True;
   }
   catch (BOPTColStd_Failure& /*x*/) {
     //QQ MESSAGE(x.Message() << flush);
+    myIsDone = Standard_False;
   }
 }
index 57c923e775c3578e7dddb096da0e8ac56955a7d1..448804477dda9ef07045760c501ce028e924dc18 100644 (file)
@@ -78,8 +78,8 @@
       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);
index 33f178c92a537cea8700b8590e28ec68962d2b35..fb8123077439a7805bd4bdd0e58661efb9121bb1 100644 (file)
@@ -145,8 +145,8 @@ static
       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;
@@ -468,7 +468,7 @@ static
     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);
       //
@@ -775,10 +775,10 @@ static
   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);
index db8930c0001247221ce197795693225e41a19033..a29f760ab44a3b676003817c2eefed4daa5bdd4e 100644 (file)
@@ -138,13 +138,13 @@ static
       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); 
     //
@@ -492,7 +492,7 @@ static
     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);
       //
@@ -575,7 +575,7 @@ static
   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;
index 8c4852a4b076d57f130d07bf9aecc0b2b5554371..3ad988b627ddd42eb0614e5ee85aa4da8b50e0c2 100644 (file)
@@ -165,8 +165,8 @@ static
       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();
@@ -254,8 +254,8 @@ static
     // 
     // 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;
     //
@@ -377,8 +377,8 @@ static
        // 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);
        //
@@ -489,13 +489,13 @@ static
     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;
@@ -546,9 +546,9 @@ static
       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());
@@ -580,8 +580,8 @@ static
       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)) {
@@ -617,13 +617,13 @@ static
       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
@@ -684,8 +684,8 @@ static
     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);
@@ -699,7 +699,7 @@ static
     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);
@@ -768,7 +768,7 @@ static
   //
   //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); 
   //
@@ -799,8 +799,8 @@ static
   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) {
@@ -850,14 +850,13 @@ static
     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);
   }
   
@@ -867,7 +866,7 @@ static
     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);
   }
 }
@@ -888,7 +887,7 @@ static
   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;
@@ -974,7 +973,7 @@ static
     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);
index 50d899ad9c8c903e6e579b65182ce14711aa1728..3c9d4f7ac30a8f999ea3f06c4881ce2a4b33b072 100644 (file)
   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());
index 8df9e0ff99c42c308b59d39ff0168fec6ba1ad22..acf93656d4b2cb625801255bdd43b18819862c0c 100755 (executable)
@@ -69,4 +69,4 @@ void GEOM_AISTrihedron::setIO( const Handle(SALOME_InteractiveObject)& theIO )
 
 
 
-  
\ No newline at end of file
+  
index 603a071c901f4ba55259aacea5bf59216d909db8..b4d94c841d0f1a62d5522d6c98a1388099b3c2ff 100644 (file)
@@ -34,6 +34,8 @@
 #include "GEOM_AssemblyBuilder.h"
 #include "GEOM_Actor.h"
 
+#include <SUIT_Session.h>
+
 #include <vtkProperty.h>
 
 // Open CASCADE Includes
@@ -80,12 +82,19 @@ void GEOM_AssemblyBuilder::InitProperties(vtkProperty* IsoProp,
   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);
@@ -93,23 +102,34 @@ void GEOM_AssemblyBuilder::InitProperties(vtkProperty* IsoProp,
   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);
@@ -117,11 +137,15 @@ void GEOM_AssemblyBuilder::InitProperties(vtkProperty* IsoProp,
   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);
@@ -230,6 +254,7 @@ vtkActorCollection* GEOM_AssemblyBuilder::BuildActors(const TopoDS_Shape& myShap
        GEOM_Actor* EdgeActor = GEOM_Actor::New();
        EdgeActor->SubShapeOn();
        EdgeActor->setInputShape(ex2.Current(),deflection,mode);
+       
        switch (nbf) {
          
        case 0 : // isolated edge
@@ -252,6 +277,7 @@ vtkActorCollection* GEOM_AssemblyBuilder::BuildActors(const TopoDS_Shape& myShap
            EdgeActor->SetWireframeProperty(EdgeSProp);
          }
        }
+       
        EdgeActor->SetPreviewProperty(EdgePVProp);
        AISActors->AddItem(EdgeActor);
       }
index 149fdba759b929dfb16fa8573bd7f03e38fcff2a..886adba410627710f68e6f3aebb4d70540775470 100644 (file)
@@ -103,9 +103,9 @@ void OperationGUI_ArchimedeDlg::Init()
   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 );
index fc2b12e96538cd6c60b3faea8ae7654c55bb7857..fb6049f9f6c7f733c89d837b2c27ff5ab978757b 100644 (file)
@@ -146,7 +146,9 @@ OperationGUI_ChamferDlg::OperationGUI_ChamferDlg(GeometryGUI* theGeometryGUI, QW
   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");
 
index 221e1c0733c6540cd744010c4da5bdb1e45283ed..9e451629fe85e92f4d7a8b87c617bc6bf416c9fd 100644 (file)
@@ -109,8 +109,8 @@ OperationGUI_ClippingDlg::OperationGUI_ClippingDlg(GeometryGUI* theGeometryGUI,
   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() ) );
index d512a33b459940a2526355c8be61dc8407870cc8..25455e2a2f289965e8ad03ce72d047733722d86f 100644 (file)
@@ -105,9 +105,11 @@ OperationGUI_FilletDlg::OperationGUI_FilletDlg(GeometryGUI* theGeometryGUI, QWid
   /***************************************************************/
 
   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");
 
index 5f0c9a25e4266da978109a54a94632679b020eaf..7259bdcbd977d5582eebd55f2112862e76465985 100644 (file)
@@ -80,7 +80,7 @@ OperationGUI_MaterialDlg::OperationGUI_MaterialDlg (GeometryGUI* theGeometryGUI,
   Layout1->addWidget(GroupPoints, 1, 0);
   /***************************************************************/
 
-  setHelpFileName("none.htm"); 
+  setHelpFileName("partition.htm"); 
 
   Init();
 }
index 218c832e6998e5d631571aa0cdab4ec3ae695d36..45ca54db0855f9a1b8d2b8c51a07db43890bde0e 100644 (file)
@@ -17,7 +17,7 @@
 //  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()
@@ -62,7 +51,6 @@ PrimitiveGUI::PrimitiveGUI(GeometryGUI* parent) : GEOMGUI(parent)
 {
 }
 
-
 //=======================================================================
 // function : ~PrimitiveGUI
 // purpose  : Destructor
@@ -78,47 +66,38 @@ PrimitiveGUI::~PrimitiveGUI()
 //=======================================================================
 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;
 }
 
@@ -133,6 +112,6 @@ extern "C"
 #endif
   GEOMGUI* GetLibGUI( GeometryGUI* parent )
   {
-    return PrimitiveGUI::GetPrimitiveGUI( parent );
+    return new PrimitiveGUI( parent );
   }
 }
index 9bdef35085de5d664ce9bb6f9880f997950e21cd..ff2267323adbe769333a1029146b58dfd41326b7 100644 (file)
 //  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
index 28e59287c51fd402ae03d84eec4b877667ca1fed..23e9ce46a4137627fcf7dc4b05f60d4aa7faac18 100644 (file)
@@ -117,9 +117,9 @@ void PrimitiveGUI_BoxDlg::Init()
   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);
index cd250f83026f50cbb0a8d9fb349de14834200215..7de92356e6b29073c8c310083422bd4c45e6a6bc 100644 (file)
@@ -119,12 +119,12 @@ void PrimitiveGUI_ConeDlg::Init()
   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);
index 7a5f38236cfc7c7da4568409dca89f9b90d75a1e..503211cf2f394004b5b25256ec6df16bf2145c22 100644 (file)
@@ -118,13 +118,13 @@ void PrimitiveGUI_CylinderDlg::Init()
 
   /* 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);
index 3c4e8adeb89af10c8e7d7f1a44872e63b0ff659e..f52f0822a97e783c28ef24f28d4f4c72e3e89477 100644 (file)
@@ -112,8 +112,8 @@ void PrimitiveGUI_SphereDlg::Init()
   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);
   
index fe98d7cc7b4bf3df772ad0aadce933bd5847924e..7ab9ca4652d7b181ff52a11e30f394e30d01fb2a 100644 (file)
@@ -117,10 +117,10 @@ void PrimitiveGUI_TorusDlg::Init()
   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);
index 3c698b9190c10dfdc349e3ebc453e5353080e1a9..b5aec03e1116ae72e3ce16ad4401674c82cd1d16 100644 (file)
@@ -50,6 +50,7 @@ LIB_SRC =     RepairGUI.cxx \
                RepairGUI_DivideEdgeDlg.cxx \
                RepairGUI_FreeBoundDlg.cxx \
                RepairGUI_FreeFacesDlg.cxx \
+               RepairGUI_ChangeOrientationDlg.cxx \
                RepairGUI_GlueDlg.cxx
     
 LIB_MOC = \
@@ -62,6 +63,7 @@ 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
index 8e5f50a1e87d71d1a4b399612247890c6c1fc6c3..3631415bcf0beac917a5dab48bb9319c28e4472a 100644 (file)
@@ -17,7 +17,7 @@
 //  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
 //
 //
 //
@@ -31,6 +31,8 @@
 #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
@@ -69,7 +57,6 @@ RepairGUI::RepairGUI( GeometryGUI* parent ) : GEOMGUI( parent )
 {
 }
 
-
 //=======================================================================
 // function : ~RepairGUI()
 // purpose  : Destructor
@@ -85,6 +72,9 @@ RepairGUI::~RepairGUI()
 //=======================================================================
 bool RepairGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent)
 {
+  SalomeApp_Application* app = getGeometryGUI()->getApp();
+  if (!app) return false;
+
   getGeometryGUI()->EmitSignalDeactivateDialog();
 
   QDialog* aDlg = NULL;
@@ -97,10 +87,11 @@ bool RepairGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent)
     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;
   }
 
@@ -121,6 +112,6 @@ extern "C"
 #endif
   GEOMGUI* GetLibGUI( GeometryGUI* parent )
   {
-    return RepairGUI::GetRepairGUI( parent );
+    return new RepairGUI( parent );
   }
 }
index bbeadad2c8f804673d3536899842f54a66ea8c6a..a999162397493c10cc48b269aa9e82ead0723df9 100644 (file)
 //  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
diff --git a/src/RepairGUI/RepairGUI_ChangeOrientationDlg.cxx b/src/RepairGUI/RepairGUI_ChangeOrientationDlg.cxx
new file mode 100644 (file)
index 0000000..afb28f5
--- /dev/null
@@ -0,0 +1,301 @@
+//  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);
+}
diff --git a/src/RepairGUI/RepairGUI_ChangeOrientationDlg.h b/src/RepairGUI/RepairGUI_ChangeOrientationDlg.h
new file mode 100644 (file)
index 0000000..19f5be3
--- /dev/null
@@ -0,0 +1,77 @@
+//  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
index cc376d53fd76402798f0712aa4986ce76252fa3b..9b8f1e0854014522cf689852510c5aff075735ff 100644 (file)
@@ -304,3 +304,20 @@ bool RepairGUI_FreeBoundDlg::execute( ObjectList& objects )
 
   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();
+    }
+}
index 4189527f2a103ad7a04e68eed10e467e1d34c902..0594fe2d6bf148194427d79c7188b5ff9735e321 100644 (file)
@@ -60,6 +60,7 @@ private:
   void                                  Init();
   void                                  enterEvent( QEvent* e );
   void                                  closeEvent( QCloseEvent* e );
+  void                                  keyPressEvent( QKeyEvent* e );
   void                                  activateSelection();
   
   virtual GEOM::GEOM_IOperations_ptr    createOperation();
index 61c947f9378de9d97bad688ce5a5f5571dff91f7..61881b7c38b426e5f33d7b3a600a011ccdb356a0 100644 (file)
@@ -358,3 +358,19 @@ void RepairGUI_FreeFacesDlg::onSetEditCurrentArgument()
   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();
+    }
+}
index cafb9b1d67bce7c96ffb835b09882e8f9f65c26e..582179b4d380937b520fa25232a7d495aeee8116 100644 (file)
@@ -60,6 +60,7 @@ private:
     void Init();
     void enterEvent(QEvent* e);
     void closeEvent(QCloseEvent* e);
+    void keyPressEvent(QKeyEvent* e);
     void activateSelection();
     GEOM_Displayer* getDisplayer();
 
index 00cd419e4c91f6e44898b4c152aaa203671da44c..05f5b480c978ecf0cc57d7bc595ab11ca7d9919d 100644 (file)
@@ -34,6 +34,7 @@
 #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
@@ -76,6 +77,9 @@ STEPIMPORT_EXPORT
     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) {
index f164e12eb3a91694d23a23dbe2c1d4342dcd5fac..2497fc526648d97239c6f0d342ec576a1ef0f81c 100644 (file)
@@ -47,6 +47,7 @@ LIB_SRC = \
        ShHealOper_ShapeProcess.cxx \
        ShHealOper_SplitCurve2d.cxx \
        ShHealOper_SplitCurve3d.cxx \
+       ShHealOper_ChangeOrientation.cxx \
        ShHealOper_Tool.cxx \
 
 LIB_CLIENT_IDL = 
@@ -64,6 +65,7 @@ EXPORT_HEADERS = \
        ShHealOper_SpiltCurve2d.hxx \
        ShHealOper_SplitCurve2d.hxx \
        ShHealOper_SplitCurve3d.hxx \
+       ShHealOper_ChangeOrientation.hxx \
        ShHealOper_Tool.hxx
 
 # idl files
diff --git a/src/ShHealOper/ShHealOper_ChangeOrientation.cxx b/src/ShHealOper/ShHealOper_ChangeOrientation.cxx
new file mode 100644 (file)
index 0000000..92912fa
--- /dev/null
@@ -0,0 +1,88 @@
+// 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;
+
+}
diff --git a/src/ShHealOper/ShHealOper_ChangeOrientation.hxx b/src/ShHealOper/ShHealOper_ChangeOrientation.hxx
new file mode 100644 (file)
index 0000000..fe6ee94
--- /dev/null
@@ -0,0 +1,66 @@
+// 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
index cbeccad424a9632a384ed5b62cb0e80da3d8c216..eb69c9037a216077a410643b9c9ee1d3a2e6476b 100644 (file)
@@ -17,7 +17,7 @@
 //  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
 //
 //
 //
@@ -32,6 +32,8 @@
 #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
@@ -66,7 +53,6 @@ TransformationGUI::TransformationGUI(GeometryGUI* parent) : GEOMGUI(parent)
 {
 }
 
-
 //=======================================================================
 // function : ~TransformationGUI()
 // purpose  : Destructor
@@ -82,6 +68,9 @@ TransformationGUI::~TransformationGUI()
 //=======================================================================
 bool TransformationGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent)
 {
+  SalomeApp_Application* app = getGeometryGUI()->getApp();
+  if (!app) return false;
+
   getGeometryGUI()->EmitSignalDeactivateDialog();
   QDialog* aDlg = NULL;
 
@@ -112,11 +101,11 @@ bool TransformationGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent)
     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;
@@ -133,6 +122,6 @@ extern "C"
 #endif
   GEOMGUI* GetLibGUI( GeometryGUI* parent )
   {
-    return TransformationGUI::GetTransformationGUI( parent );
+    return new TransformationGUI( parent );
   }
 }
index 77ef5de5ff5fb29b4c126d2b34ff3d36210ccd7a..87ba9b55d8d2cb30adb0f8aab10c8f4f2b059755 100644 (file)
 //  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
index 01c8b24a006409e4de768d3ae39fb7b05b294b34..88535e435aa0f89e87c5cb67c10585f26bfc8bcc 100644 (file)
@@ -124,13 +124,13 @@ void TransformationGUI_MultiRotationDlg::Init()
   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);
index c1e7aed86cce1ebbe9ddeae7563999c056400bc7..75f3e4d3500d2cc942e389147cb55112ae12bba1 100644 (file)
@@ -130,15 +130,15 @@ void TransformationGUI_MultiTranslationDlg::Init()
   
   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);
index 6fe4f3bc41564ac3f83622bb190d1c71a3c141e7..6a33e47e837a62d7d2064f5dc8e3ae38f88a5a9c 100644 (file)
@@ -108,7 +108,7 @@ void TransformationGUI_OffsetDlg::Init()
   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);
@@ -270,7 +270,18 @@ GEOM::GEOM_IOperations_ptr TransformationGUI_OffsetDlg::createOperation()
 //=================================================================================
 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;
 }
 
 
@@ -288,6 +299,7 @@ bool TransformationGUI_OffsetDlg::execute( ObjectList& objects )
   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() );
index 6f07b1c73fc2fa2dd4450c0cb119107978e6baf4..c22db8006a0503b61ecc64ce572fd65f59d10cdd 100644 (file)
@@ -82,7 +82,7 @@ TransformationGUI_RotationDlg::TransformationGUI_RotationDlg
   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
index 259a1da2d8575df02059424c36d9a5c0061f24c8..40e6cc20aa2f78812369d0103b5210ca8ee17dd4 100644 (file)
@@ -85,7 +85,7 @@ TransformationGUI_ScaleDlg::TransformationGUI_ScaleDlg(GeometryGUI* theGeometryG
   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
index 0a02a62a69c69d14d60fc60fd6f5ec34a055fdcb..5e022bc8817c9a6972986ff9ade5b47cf9c87aa9 100644 (file)
@@ -124,9 +124,9 @@ void TransformationGUI_TranslationDlg::Init()
   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);