From 2c3b809cb74cbb115d7d399f22e8d07f0d67e85c Mon Sep 17 00:00:00 2001 From: eap Date: Tue, 14 Oct 2014 20:45:17 +0400 Subject: [PATCH] 0022746: [EDF] Improvement of Glue Faces and Glue Edges operations --- doc/salome/gui/GEOM/images/glue1.png | Bin 20568 -> 23042 bytes doc/salome/gui/GEOM/images/glue2.png | Bin 28580 -> 28642 bytes doc/salome/gui/GEOM/images/glue3.png | Bin 10539 -> 11316 bytes doc/salome/gui/GEOM/images/glue4.png | Bin 22828 -> 23123 bytes doc/salome/gui/GEOM/images/glue5.png | Bin 27161 -> 27323 bytes doc/salome/gui/GEOM/images/glue7.png | Bin 14659 -> 10585 bytes doc/salome/gui/GEOM/images/glue8.png | Bin 3463 -> 4155 bytes doc/salome/gui/GEOM/images/repair6.png | Bin 21267 -> 21624 bytes .../gui/GEOM/input/glue_edges_operation.doc | 27 +- .../gui/GEOM/input/glue_faces_operation.doc | 28 +- .../gui/GEOM/input/remove_webs_operation.doc | 9 +- .../gui/GEOM/input/repairing_operations.doc | 4 +- idl/GEOM_Gen.idl | 52 +-- .../AdvancedEngine_IOperations.cxx | 109 +++--- src/GEOM/GEOM_Object.cxx | 26 +- src/GEOM/GEOM_Object.hxx | 11 +- src/GEOM/GEOM_PythonDump.cxx | 5 + src/GEOMGUI/GEOM_msg_en.ts | 12 + src/GEOMImpl/GEOMImpl_GlueDriver.cxx | 49 ++- src/GEOMImpl/GEOMImpl_IGlue.hxx | 13 +- src/GEOMImpl/GEOMImpl_IHealingOperations.cxx | 17 +- src/GEOMImpl/GEOMImpl_IShapesOperations.cxx | 325 +++++++++--------- src/GEOMImpl/GEOMImpl_IShapesOperations.hxx | 21 +- src/GEOM_I/GEOM_IHealingOperations_i.cc | 26 +- src/GEOM_I/GEOM_IOperations_i.cc | 23 ++ src/GEOM_I/GEOM_IOperations_i.hh | 2 + src/GEOM_I/GEOM_IShapesOperations_i.cc | 121 ++++--- src/GEOM_I/GEOM_IShapesOperations_i.hh | 12 +- src/GEOM_SWIG/GEOM_TestHealing.py | 117 +++++++ src/GEOM_SWIG/geomBuilder.py | 92 +++-- src/RepairGUI/RepairGUI_GlueDlg.cxx | 53 +-- src/RepairGUI/RepairGUI_GlueDlg.h | 2 +- src/RepairGUI/RepairGUI_SewingDlg.cxx | 2 +- 33 files changed, 679 insertions(+), 479 deletions(-) diff --git a/doc/salome/gui/GEOM/images/glue1.png b/doc/salome/gui/GEOM/images/glue1.png index 48a40d6e12dba544f84f52456889c39a6ec60f70..33f8fad0e94b17ead54285148e5ffe2e881d17c8 100644 GIT binary patch literal 23042 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

v_nK1!Z`cNKvaQh^Oa)5WrC`qa#m*%% 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 diff --git a/doc/salome/gui/GEOM/images/glue2.png b/doc/salome/gui/GEOM/images/glue2.png index 2df8a68b4d57f1c4f99fa8d0eeb4c6bab818923c..001224ebfcf4361d7c727b2fbcfcd22124baff58 100644 GIT binary patch literal 28642 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 z z)s}>1fJB_vt>ZyBR>W0ROXxsBXfppD6PnyQ{&1>f1fgMOUGTp}$C!K8+mFv^1f^!= zW&)((s{7mQ6669%JM@1omKN};o^63(0B9!=1F|8-yia7~ZXy2z!s2Y5;K7Y6(!h80 zf*lO{`pOk1f9dk~5PgaouuqmB5wp$13qu#_erz8F_pwIkpv9tjk%tA|cCx2%zVr9G z&bbdfhS_LXDS$F$sDoN;NhEF{{OwzjpDHfFl0xG^QugBE=H^aLNkL=-TdMYa1B&$C zR9hVA8N*;p&aCyb6M;L}sVWx>7N3X>*Oy3z{cJrn>oG0StGg}Wu9fDZz z{quHv^O6$u;CKcq5|NpAH8-7p>bz;O z9s86dwzAX_hx=wb803LtiO^?0W?e7YtQrRK_|VYMOiP_0@ABG)pl>svY#^}%-3^%X z1({6=4QeO2kyQjfFQvFR7Fv1;?0;dxkIkYCpq=n!S3+tB^86w@*Lwn}?jSE~0Wj^0 z-p)1>h#_E{fKisV$vnLVkuwP80xreI7=jGhhQLAq|-NBD3-R|z0B8~)lH6JG=CR0B_RCzMP` z4h5AdqLKG6+XZ1U?(Xh@wP<%8`qsT@h4kQ=@eiCP`D(1*BK#qQq=W&r#b~ED49f9t zP7e%Roch)Dr^^>xM1jpy$e(_ce8zEQoChdt5Lpf_qRi8w!zy3+ssr>dtZ=Xk2U~d@ z_u4|DGKQ+ zrPsnTUC+4b$hK32%C0{hajyI0sSkj21v0FhCJtRL$)NYUZl3zU=6_Ep0znl*0m9^o zfYa+NMko@E1~$Cch8e*WKIn#j)lbK;D>r}!<=7L@F8Ti9HSih)D^8U^1+ze+>iPgT zlH)8Bm|j{M4{ri)#=4ro!%!4ZwDuW`YEeGKS{wyaI4U63a!t=!%C_kaEz3AEI+{;V z(RW=A9D4Yl%7C1J47edGs$V_5_4@7Gb-M(;e=#zO&ElD5=k>h|E$~~dPuGpT@VK;80r8PA z7)X>S2vLzkqt~_JoHwKsz#zH308IrIM@H5gbxNy=7_J*8LWT#Z$AM?u2l}|vjM@l%O!*OB#8Tm8G6uw)CtN z>|7d@_yq-J@YGs@$pu1!kBD!{HqIl!=>Iu8G8a$>=oO&E+e!18`z+oM_yq~Ws~XY+lWobM@lf-p)U`u`rMvS8=DO1vSqbq)CP zb!JD^MR82h9hs0BKNfJ^4S$AEY&E-7iLFmZ?3E)?e6nl$}vTeviF!YLIgYw?hI>A63VHlK@$nF;KDRU>#$8ie z)Zxq-kqQ^VQaPZeB0@(<^(TacwsWA0m;;mD6%8yldwn6vb{Hge-ahL%?EsxvWiMGM zB;Ko`SI>%x!JcTc%7S*!ZlOq#zt~C2ikX7(BoTIu`KVy8CxeKFAxiK*>B~J4w-PYs_Urech zd?BjU%TTYNe)@oJ^A#-EHEkPI*~=q_<4Yy&{-Nw82{6!$2bd24_(*i!nm{$i*y2Mz ztSj|D=)u3+nRQn~wN*-tZMsfXC?vOtYlckXi~4G@yHv`~j-=?F7JF1}ajeiN(M6~_ ztq{U(=*depGEJrnH0F`UW;bvdW^MVwsa80X|8niSNxQt=I{94x(wvX@X zFF75Dste0?R2`0uzIPCj1IaNn+tEZZH{yoWyiJfU$sVRQa(>k5l+x|8lveoZgaEi= zK=u9qhmw0aKv1w{W^U@C+EdVVpJ;U1c82_>q{Rj1w*5RMdVOUk1^0FHT~oIG@xO7U f?nPtlZR4jm56M=sI^o;*IJ7S7t7l)j^W;AO+_c{Y diff --git a/doc/salome/gui/GEOM/images/glue3.png b/doc/salome/gui/GEOM/images/glue3.png index de80520b99a01390078bacff525d76bc37212cb0..598fff5aa5b9e8ee98058adbeaeb1049e01ef676 100644 GIT binary patch literal 11316 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 literal 10539 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%0A3W8rXsjN`Fe}`;jXdK>U`0d%^%Q&fu9V1Pz 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

?f(_e@o(k}kp@hKXFTmnQT|!f6@L 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 V1xWIhI>R0($V)3rl}LR2@;^H!oS*;z literal 14659 zcmbumXEJcjJVYkH7O=$3PwgsNvwCd^@#N3MQZuU8iZ}EBIfdqf9pAVv+&6vH;g;( zKokbzjvhOmAuWnL2iTQT)s$QfCBxk4XfPOa7UQNr+)>`4Vhf?1qZuNaei`{RN zVHmTuFfy$c%q&9x_SB13$}PM+(dgS#KPTfNjgB^s5u2ut4mz@3kv|{3HBk%T$0NK~ zxHQ3qX(I$I#N}=d1B00 za=NJkF57#F!hwU-?76x4UX79EfxNJdB0&Qz}uS7&l=p&&QnM_ zuw)SVGpr`ZN+|qEadF0uEtaZPTcCfDks;4NpC&kdK}?2Mov=RsyaP(}MEA66DJE`R zmAeaf>g~+_bW`{nL)t*P~5VI6n9VM_b{o6Lpld!H4v0LP^49Rzb2Fp2)7f zwRORFOA#j_GwQchMC~Ee(T*4OVAAK88K~aUXm^w8Oumr4S4vuEZUxWghHC6z2j!E$ zUv$LO;8taeT64$RbH}UEC!Da_j-$Al+o}y7N}XOOtDUEl zw~i=rGlALvczsoGtWtWLN@b>f1kyWN$zKo}7kDJTr4k*PN^L&^n{XASG&@}5@9u(aa*)!8||wlA&G z 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 diff --git a/doc/salome/gui/GEOM/images/repair6.png b/doc/salome/gui/GEOM/images/repair6.png index 666ea870844f582a1add58e86a21ee18d2bd1a00..a2a0b50c28d2946fd062fa680ee630fb774e12c0 100644 GIT binary patch literal 21624 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: Name + Compound of shapes + Tolerance value. +\n Arguments: Name + Shapes + Tolerance value. \n Advanced option: \ref restore_presentation_parameters_page "Set presentation parameters and sub-shapes from arguments". \n The \b Result will be a \b GEOM_Object. @@ -16,10 +16,10 @@ given tolerance value. \image html glue4.png \n TUI Command: -\n geompy.MakeGlueEdges(theShape,theTolerance), -\n where \em theShape is a compound of shapes to be glued, and \em - theTolerance is a maximum distance between two faces/edges, which can - be considered as coincident. +

geompy.MakeGlueEdges( theShapes, theTolerance ), +\n where \em theShapes is either a list or compound of shapes to be +glued, and \em theTolerance is a maximum distance between two +edges, which can be considered as coincident. \n It is also possible to manually select the edges that will be glued - select the shape, specify the tolerance and press \b Detect button. @@ -36,23 +36,24 @@ possible to select the edges for gluing in the 3D viewer. The selected edges will be marked in white. \n TUI Command: -\n geompy.GetGlueEdges(theShape,theTolerance), -\n where \em theShape is a compound of shapes to be glued, \em +

geompy.GetGlueEdges( theShapes, theTolerance ), +\n where \em theShape is either a list or compound of shapes to be glued, \em theTolerance is a maximum distance between two edges, which can be considered as coincident. The \b Result will be a list of \b - GEOM_Objects, containing one sub-shape per each detected set of - coincident sub-shapes. + GEOM_Objects (edges), containing one sub-shape per each detected set of + coincident sub-shapes. For example if there are two coincident edges +in selected shapes, the result list contains one of the two coincident edges. -\n geompy.MakeGlueEdgesByList(theShape,theTolerance,theEdges), -\n where \em theShape is a compound of shapes to be glued, \em +geompy.MakeGlueEdgesByList( theShapes, theTolerance, theEdges ), +\n where \em theShape is either a list or compound of shapes to be glued, \em theTolerance is a maximum distance between two edges, which can be considered as coincident, \em theEdges is a list of - sub-shapes to be glued. + edges to be glued. \n Example: \image html glue8.png -

Box with an edge that can be glued
+
Two boxes with an edge that can be glued
Our TUI Scripts provide you with useful examples of the use of Repairing Operations \ref tui_glue_edges "Glue Edges". diff --git a/doc/salome/gui/GEOM/input/glue_faces_operation.doc b/doc/salome/gui/GEOM/input/glue_faces_operation.doc index 3775aa479..8f020115b 100644 --- a/doc/salome/gui/GEOM/input/glue_faces_operation.doc +++ b/doc/salome/gui/GEOM/input/glue_faces_operation.doc @@ -8,7 +8,7 @@ \n This operation glues faces that are coincident with respect to the given tolerance value. -\n Arguments: Name + Compound of shapes + Tolerance value. +\n Arguments: Name + Shapes + Tolerance value. \n Advanced option: \ref restore_presentation_parameters_page "Set presentation parameters and sub-shapes from arguments". \n The \b Result will be a \b GEOM_Object. @@ -17,8 +17,9 @@ given tolerance value. \n TUI Commands: -\n geompy.MakeGlueFaces(theShape,theTolerance,doKeepNonSolids), -\n where \em theShape is a compound of shapes to be glued, \em + +geompy.MakeGlueFaces( theShapes, theTolerance, doKeepNonSolids ), +\n where \em theShapes is either a list or compound of shapes to be glued, \em theTolerance is a maximum distance between two faces, which can be considered as coincident. The \em doKeepNonSolids flag allows to throw away non-solids from the result, if false. The \b Result will @@ -38,20 +39,23 @@ performed and displays a notification. possible to select the faces for gluing in the 3D viewer. The selected faces will be marked in white. -\n When the faces are glued their edges are glued as well. By default, other +When the faces are glued their edges are glued as well. By default, other edges are not glued. To force gluing of all edges, check Glue all coincident edges checkbox. \n TUI Commands: -\n geompy.GetGlueFaces(theShape,theTolerance), -\n where \em theShape is a compound of shapes to be glued, \em - theTolerance is a maximum distance between two faces, which can - be considered as coincident. The \b Result will be a list of \b - GEOM_Objects, containing one sub-shape per each detected set of - coincident sub-shapes. -\n geompy.MakeGlueFacesByList(theShape,theTolerance,theFaces,doKeepNonSolids,doGlueAllEdges), -\n where \em theShape is a compound of shapes to be glued, \em +geompy.GetGlueFaces( theShapes, theTolerance ), +\n where \em theShapes is either a list or compound of shapes to be glued, \em +theTolerance is a maximum distance between two faces, which can +be considered as coincident. The \b Result will be a list of \b +GEOM_Objects (faces), containing one sub-shape per each detected set of +coincident sub-shapes. For example if there are two coincident faces +in selected shapes, the result list contains one of the two coincident faces. + +geompy.MakeGlueFacesByList( theShapes, theTolerance, theFaces, + doKeepNonSolids, doGlueAllEdges ), +\n where \em theShapes is either a list or compound of shapes to be glued, \em theTolerance is a maximum distance between two faces, which can be considered as coincident, \em theFaces is a list of sub-shapes to be glued. The \em doKeepNonSolids flag allows to throw diff --git a/doc/salome/gui/GEOM/input/remove_webs_operation.doc b/doc/salome/gui/GEOM/input/remove_webs_operation.doc index 26ab2efb1..a2dc78026 100644 --- a/doc/salome/gui/GEOM/input/remove_webs_operation.doc +++ b/doc/salome/gui/GEOM/input/remove_webs_operation.doc @@ -5,7 +5,7 @@ \n To Remove internal faces in the Main Menu select Repair - > Remove internal faces. -\n This operation removes all shared faces from a compound to obtain +This operation removes all shared faces from a compound to obtain one or more bigger solids from a set of smaller solids. \image html remove_webs.png @@ -15,10 +15,11 @@ one or more bigger solids from a set of smaller solids. \ref restore_presentation_parameters_page "Set presentation parameters and sub-shapes from arguments". \note Only shared faces will be removed. Coincident but not shared -faces will stay as is, use Glue Faces or Partition before -Remove Internal Faces if you need to remove them. +faces will stay as is, use \ref glue_faces_operation_page or \ref partition_page before +Remove Internal Faces if you need to remove them. -\n TUI Command: geompy.RemoveInternalFaces(theCompound), +\n TUI Command:
+geompy.RemoveInternalFaces( theCompound ),
where theCompound is a compound of solids. \n Our TUI Scripts provide you with useful examples of the diff --git a/doc/salome/gui/GEOM/input/repairing_operations.doc b/doc/salome/gui/GEOM/input/repairing_operations.doc index d0559d764..28bf44819 100644 --- a/doc/salome/gui/GEOM/input/repairing_operations.doc +++ b/doc/salome/gui/GEOM/input/repairing_operations.doc @@ -16,9 +16,9 @@ open contour asnd miodifies the underlying face. holes with free boundaries on a selected face.
  • \subpage sewing_operation_page "Sewing" - sews faces or shells.
  • \subpage glue_faces_operation_page "Glue faces" - unites -coincident faces within the given tolerance.
  • +faces coincident within the given tolerance.
  • \subpage glue_edges_operation_page "Glue edges" - unites -coincident edges within the given tolerance.
  • +edges coincident within the given tolerance.
  • \subpage limit_tolerance_operation_page "Limit Tolerance" - tries to set new tolerance value for the given shape.
  • \subpage add_point_on_edge_operation_page "Add point on edge" - diff --git a/idl/GEOM_Gen.idl b/idl/GEOM_Gen.idl index 0f168018a..b9cfadd17 100644 --- a/idl/GEOM_Gen.idl +++ b/idl/GEOM_Gen.idl @@ -1941,64 +1941,64 @@ module GEOM GEOM_Object MakeCompound (in ListOfGO theShapes); /*! - * \brief Replace coincident faces in theShape by one face. - * \param theShape Initial shape. + * \brief Replace coincident faces in \a theShapes by one face. + * \param theShapes Initial shapes. * \param theTolerance Maximum distance between faces, which can be considered as coincident. * \param doKeepNonSolids If FALSE, only solids will present in the result, otherwise all initial shapes. - * \return New GEOM_Object, containing a copy of theShape without coincident faces. + * \return New GEOM_Object containing copies of theShapes without coincident faces. */ - GEOM_Object MakeGlueFaces (in GEOM_Object theShape, in double theTolerance, in boolean doKeepNonSolids); + GEOM_Object MakeGlueFaces (in ListOfGO theShapes, in double theTolerance, in boolean doKeepNonSolids); /*! - * Find coincident faces in theShape for possible gluing. - * \param theShape Initial shape. + * Find coincident faces in theShapes for possible gluing. + * \param theShapes Initial shapes. * \param theTolerance Maximum distance between faces, which can be considered as coincident. * \return ListOfGO */ - ListOfGO GetGlueFaces (in GEOM_Object theShape, in double theTolerance); + ListOfGO GetGlueFaces (in ListOfGO theShapes, in double theTolerance); /*! - * \brief Replace coincident faces in theShape by one face - * in compliance with given list of faces - * \param theShape Initial shape. + * \brief Replace coincident faces in \a theShapes by one face + * in compliance with given list of faces + * \param theShapes Initial shapes. * \param theTolerance Maximum distance between faces, which can be considered as coincident. * \param theFaces List of faces for gluing. * \param doKeepNonSolids If FALSE, only solids will present in the result, otherwise all initial shapes. * \param doGlueAllEdges If TRUE, all coincident edges of theShape * will be glued, otherwise only the edges, * belonging to theFaces. - * \return New GEOM_Object, containing a copy of theShape without some faces. + * \return New GEOM_Object containing copies of theShapes without coincident faces. */ - GEOM_Object MakeGlueFacesByList (in GEOM_Object theShape, in double theTolerance, - in ListOfGO theFaces, in boolean doKeepNonSolids, + GEOM_Object MakeGlueFacesByList (in ListOfGO theShapes, in double theTolerance, + in ListOfGO theFaces, in boolean doKeepNonSolids, in boolean doGlueAllEdges); /*! - * \brief Replace coincident edges in theShape by one edge. - * \param theShape Initial shape. + * \brief Replace coincident edges in \a theShapes by one edge. + * \param theShapes Initial shapes. * \param theTolerance Maximum distance between edges, which can be considered as coincident. - * \return New GEOM_Object, containing a copy of theShape without coincident edges. + * \return New GEOM_Object containing copies of theShapes without coincident edges. */ - GEOM_Object MakeGlueEdges (in GEOM_Object theShape, in double theTolerance); + GEOM_Object MakeGlueEdges (in ListOfGO theShapes, in double theTolerance); /*! - * Find coincident edges in theShape for possible gluing. - * \param theShape Initial shape. + * Find coincident edges in \a theShapes for possible gluing. + * \param theShapes Initial shapes. * \param theTolerance Maximum distance between edges, which can be considered as coincident. * \return ListOfGO */ - ListOfGO GetGlueEdges (in GEOM_Object theShape, in double theTolerance); + ListOfGO GetGlueEdges (in ListOfGO theShapes, in double theTolerance); /*! - * \brief Replace coincident edges in theShape by one edge - * in compliance with given list of edges - * \param theShape Initial shape. + * \brief Replace coincident edges in \a theShapes by one edge + * in compliance with given list of edges + * \param theShapes Initial shapes. * \param theTolerance Maximum distance between edges, which can be considered as coincident. * \param theEdges List of edges for gluing. - * \return New GEOM_Object, containing a copy of theShape without some edges. + * \return New GEOM_Object containing copies of theShapes without some edges. */ - GEOM_Object MakeGlueEdgesByList (in GEOM_Object theShape, - in double theTolerance, + GEOM_Object MakeGlueEdgesByList (in ListOfGO theShape, + in double theTolerance, in ListOfGO theEdges); /*! diff --git a/src/AdvancedEngine/AdvancedEngine_IOperations.cxx b/src/AdvancedEngine/AdvancedEngine_IOperations.cxx index e713e003a..234407a9e 100644 --- a/src/AdvancedEngine/AdvancedEngine_IOperations.cxx +++ b/src/AdvancedEngine/AdvancedEngine_IOperations.cxx @@ -154,9 +154,9 @@ AdvancedEngine_IOperations::~AdvancedEngine_IOperations() */ //============================================================================= gp_Trsf AdvancedEngine_IOperations::GetPositionTrsf(double theL1, double theL2, - Handle(GEOM_Object) theP1, - Handle(GEOM_Object) theP2, - Handle(GEOM_Object) theP3) + Handle(GEOM_Object) theP1, + Handle(GEOM_Object) theP2, + Handle(GEOM_Object) theP3) { // Old Local Coordinates System oldLCS gp_Pnt P0(0, 0, 0); @@ -195,10 +195,10 @@ gp_Trsf AdvancedEngine_IOperations::GetPositionTrsf(double theL1, double theL2, */ //============================================================================= bool AdvancedEngine_IOperations::CheckCompatiblePosition(double& theL1, double& theL2, - Handle(GEOM_Object) theP1, - Handle(GEOM_Object) theP2, - Handle(GEOM_Object) theP3, - double theTolerance) + Handle(GEOM_Object) theP1, + Handle(GEOM_Object) theP2, + Handle(GEOM_Object) theP3, + double theTolerance) { SetErrorCode(KO); gp_Pnt P1 = BRep_Tool::Pnt(TopoDS::Vertex(theP1->GetValue())); @@ -266,11 +266,11 @@ bool AdvancedEngine_IOperations::CheckCompatiblePosition(double& theL1, double& */ //============================================================================= bool AdvancedEngine_IOperations::MakeGroups(Handle(GEOM_Object) theShape, int shapeType, - double theR1, double theW1, double theL1, - double theR2, double theW2, double theL2, - double theH, double theW, double theRF, - Handle(TColStd_HSequenceOfTransient) theSeq, - gp_Trsf aTrsf) + double theR1, double theW1, double theL1, + double theR2, double theW2, double theL2, + double theH, double theW, double theRF, + Handle(TColStd_HSequenceOfTransient) theSeq, + gp_Trsf aTrsf) { SetErrorCode(KO); @@ -1132,10 +1132,10 @@ bool AdvancedEngine_IOperations::MakeInternalGroup } bool AdvancedEngine_IOperations::MakePipeTShapePartition(Handle(GEOM_Object) theShape, - double theR1, double theW1, double theL1, - double theR2, double theW2, double theL2, - double theH, double theW, - double theRF, bool isNormal) + double theR1, double theW1, double theL1, + double theR2, double theW2, double theL2, + double theH, double theW, + double theRF, bool isNormal) { SetErrorCode(KO); @@ -1203,12 +1203,12 @@ bool AdvancedEngine_IOperations::MakePipeTShapePartition(Handle(GEOM_Object) the if (Abs(aP.X()) <= Precision::Confusion()) { if (Abs(aP.Y()) < d1min) { vi1 = v; - d1min = Abs(aP.Y()); - } + d1min = Abs(aP.Y()); + } } else if (Abs(aP.Y()) <= Precision::Confusion()) { - if (Abs(aP.X()) < d2min) { - vi2 = v; - d2min = Abs(aP.X()); + if (Abs(aP.X()) < d2min) { + vi2 = v; + d2min = Abs(aP.X()); } } } @@ -1249,14 +1249,14 @@ bool AdvancedEngine_IOperations::MakePipeTShapePartition(Handle(GEOM_Object) the if (Abs(aP.X()) <= Precision::Confusion()) { if (Abs(aP.Y()) > d1max) { ve1 = v; - vertex1 = aVertex; - d1max = Abs(aP.Y()); + vertex1 = aVertex; + d1max = Abs(aP.Y()); } } else if (Abs(aP.Y()) <= Precision::Confusion()) { if (Abs(aP.X()) > d2max) { ve2 = v; - vertex2 = aVertex; - d2max = Abs(aP.X()); + vertex2 = aVertex; + d2max = Abs(aP.X()); } } } @@ -1281,12 +1281,12 @@ bool AdvancedEngine_IOperations::MakePipeTShapePartition(Handle(GEOM_Object) the for (int i=1; i<=edges_e->Length();i++) { Handle(GEOM_Object) anObj = Handle(GEOM_Object)::DownCast(edges_e->Value(i)); anObj->GetLastFunction()->SetDescription(""); - TopoDS_Edge anEdge = TopoDS::Edge(anObj->GetValue()); - if ( !anEdge.IsNull() && - (sae.FirstVertex(anEdge).IsSame(vertex1) || sae.LastVertex(anEdge).IsSame(vertex1)) && - (sae.FirstVertex(anEdge).IsSame(vertex2) || sae.LastVertex(anEdge).IsSame(vertex2))) { - arete_intersect_ext = anObj; - } + TopoDS_Edge anEdge = TopoDS::Edge(anObj->GetValue()); + if ( !anEdge.IsNull() && + (sae.FirstVertex(anEdge).IsSame(vertex1) || sae.LastVertex(anEdge).IsSame(vertex1)) && + (sae.FirstVertex(anEdge).IsSame(vertex2) || sae.LastVertex(anEdge).IsSame(vertex2))) { + arete_intersect_ext = anObj; + } } edge_e1 = myBasicOperations->MakeLineTwoPnt(ve1, vi1); @@ -1614,8 +1614,8 @@ bool AdvancedEngine_IOperations::MakePipeTShapePartition(Handle(GEOM_Object) the // Mirror and glue faces bool AdvancedEngine_IOperations::MakePipeTShapeMirrorAndGlue(Handle(GEOM_Object) theShape, - double theR1, double theW1, double theL1, - double theR2, double theW2, double theL2) + double theR1, double theW1, double theL1, + double theR2, double theW2, double theL2) { SetErrorCode(KO); @@ -1669,7 +1669,8 @@ bool AdvancedEngine_IOperations::MakePipeTShapeMirrorAndGlue(Handle(GEOM_Object) TColStd_IndexedDataMapOfTransientTransient aMapTShapes; TNaming_CopyShape::CopyTool(Te7->GetValue(), aMapTShapes, aShapeCopy); - Handle(GEOM_Object) Te8 = myShapesOperations->MakeGlueFaces(Te7, 1e-7, true); + std::list Te7list( 1, Te7 ); + Handle(GEOM_Object) Te8 = myShapesOperations->MakeGlueFaces(Te7list, 1e-7, true); if (Te8.IsNull()) { SetErrorCode("Impossible to glue faces of TShape"); return false; @@ -1694,7 +1695,7 @@ bool AdvancedEngine_IOperations::MakePipeTShapeMirrorAndGlue(Handle(GEOM_Object) // Perform gluing Te7->GetLastFunction()->SetValue(aShapeCopy); - Te8 = myShapesOperations->MakeGlueFaces(Te7, aTolMax, true); + Te8 = myShapesOperations->MakeGlueFaces(Te7list, aTolMax, true); if (Te8.IsNull()) { SetErrorCode("Impossible to glue faces of TShape"); @@ -1845,10 +1846,10 @@ TopoDS_Shape AdvancedEngine_IOperations::MakePipeTShapeThicknessReduction //purpose : Static method. Create one thickness reduction element. //======================================================================= TopoDS_Shape AdvancedEngine_IOperations::MakeThicknessReduction (gp_Ax2 theAxes, - const double R, const double W, - const double Rthin, const double Wthin, - const double Ltrans, const double Lthin, - bool fuse) + const double R, const double W, + const double Rthin, const double Wthin, + const double Ltrans, const double Lthin, + bool fuse) { double aTol = Precision::Confusion(); if (Rthin < aTol || Wthin < aTol || Ltrans < aTol) { @@ -1953,11 +1954,11 @@ TopoDS_Shape AdvancedEngine_IOperations::MakeThicknessReduction (gp_Ax2 theAxes, //============================================================================= Handle(TColStd_HSequenceOfTransient) AdvancedEngine_IOperations::MakePipeTShape(double theR1, double theW1, double theL1, - double theR2, double theW2, double theL2, - double theRL, double theWL, double theLtransL, double theLthinL, - double theRR, double theWR, double theLtransR, double theLthinR, - double theRI, double theWI, double theLtransI, double theLthinI, - bool theHexMesh) + double theR2, double theW2, double theL2, + double theRL, double theWL, double theLtransL, double theLthinL, + double theRR, double theWR, double theLtransR, double theLthinR, + double theRI, double theWI, double theLtransI, double theLthinI, + bool theHexMesh) { MESSAGE("AdvancedEngine_IOperations::MakePipeTShape"); SetErrorCode(KO); @@ -3215,7 +3216,7 @@ AdvancedEngine_IOperations::MakePipeTShapeFilletWithPosition */ //============================================================================= Handle(GEOM_Object) AdvancedEngine_IOperations::MakeDividedDisk (double theR, double theRatio, - int theOrientation, int thePattern) + int theOrientation, int thePattern) { SetErrorCode(KO); @@ -3287,10 +3288,10 @@ Handle(GEOM_Object) AdvancedEngine_IOperations::MakeDividedDisk (double theR, do */ //============================================================================= Handle(GEOM_Object) AdvancedEngine_IOperations::MakeDividedDiskPntVecR (Handle(GEOM_Object) thePnt, - Handle(GEOM_Object) theVec, - double theR, - double theRatio, - int thePattern) + Handle(GEOM_Object) theVec, + double theR, + double theRatio, + int thePattern) { SetErrorCode(KO); @@ -3362,8 +3363,8 @@ Handle(GEOM_Object) AdvancedEngine_IOperations::MakeDividedDiskPntVecR (Handle(G */ //============================================================================= Handle(GEOM_Object) AdvancedEngine_IOperations::MakeDividedCylinder (double theR, - double theH, - int thePattern) + double theH, + int thePattern) { SetErrorCode(KO); @@ -3409,9 +3410,9 @@ Handle(GEOM_Object) AdvancedEngine_IOperations::MakeDividedCylinder (double theR */ //============================================================================= Handle(GEOM_Object) AdvancedEngine_IOperations::MakeSmoothingSurface (std::list thelPoints, - int theNbMax, - int theDegMax, - double theDMax) + int theNbMax, + int theDegMax, + double theDMax) { SetErrorCode(KO); diff --git a/src/GEOM/GEOM_Object.cxx b/src/GEOM/GEOM_Object.cxx index fc8a1f326..289945409 100644 --- a/src/GEOM/GEOM_Object.cxx +++ b/src/GEOM/GEOM_Object.cxx @@ -46,7 +46,7 @@ */ //============================================================================= -Handle(GEOM_Object) GEOM_Object::GetObject(TDF_Label& theLabel) +Handle(GEOM_Object) GEOM_Object::GetObject(const TDF_Label& theLabel) { Handle(GEOM_BaseObject) base = GEOM_BaseObject::GetObject(theLabel); return Handle(GEOM_Object)::DownCast( base ); @@ -58,7 +58,7 @@ Handle(GEOM_Object) GEOM_Object::GetObject(TDF_Label& theLabel) */ //============================================================================= -Handle(GEOM_Object) GEOM_Object::GetReferencedObject(TDF_Label& theLabel) +Handle(GEOM_Object) GEOM_Object::GetReferencedObject(const TDF_Label& theLabel) { Handle(GEOM_BaseObject) base = GEOM_BaseObject::GetReferencedObject(theLabel); return Handle(GEOM_Object)::DownCast( base ); @@ -275,5 +275,27 @@ bool GEOM_Object::IsMainShape() return false; } +//================================================================================ +/*! + * \brief Returns GetLastFunction() of given objects + */ +//================================================================================ + +Handle(TColStd_HSequenceOfTransient) +GEOM_Object::GetLastFunctions( const std::list< Handle(GEOM_Object) >& theObjects ) +{ + Handle(TColStd_HSequenceOfTransient) funs = new TColStd_HSequenceOfTransient; + std::list::const_iterator it = theObjects.begin(); + for (; it != theObjects.end(); it++) + { + Handle(GEOM_Function) fun = (*it)->GetLastFunction(); + if ( fun.IsNull()) + return Handle(TColStd_HSequenceOfTransient)(); + funs->Append( fun ); + } + return funs; +} + IMPLEMENT_STANDARD_HANDLE (GEOM_Object, GEOM_BaseObject ); IMPLEMENT_STANDARD_RTTIEXT(GEOM_Object, GEOM_BaseObject ); + diff --git a/src/GEOM/GEOM_Object.hxx b/src/GEOM/GEOM_Object.hxx index 214ca30b9..9f1c907d3 100644 --- a/src/GEOM/GEOM_Object.hxx +++ b/src/GEOM/GEOM_Object.hxx @@ -27,9 +27,12 @@ #include #include +#include #include #include +#include + class GEOM_Object; class Handle(TFunction_Driver); class GEOM_Engine; @@ -58,10 +61,10 @@ class GEOM_Object : public GEOM_BaseObject Standard_EXPORT ~GEOM_Object(); //Finds a GEOM_Object on the label theLabel - Standard_EXPORT static Handle(GEOM_Object) GetObject(TDF_Label& theLabel); + Standard_EXPORT static Handle(GEOM_Object) GetObject(const TDF_Label& theLabel); //Finds a GEOM_Object by a reference, stored on the label theLabel - Standard_EXPORT static Handle(GEOM_Object) GetReferencedObject(TDF_Label& theLabel); + Standard_EXPORT static Handle(GEOM_Object) GetReferencedObject(const TDF_Label& theLabel); //########################################################### //Access to properties @@ -107,6 +110,10 @@ class GEOM_Object : public GEOM_BaseObject //Returns false if the object is a sub-shape of another object Standard_EXPORT bool IsMainShape(); + //Comfort method + Standard_EXPORT static Handle(TColStd_HSequenceOfTransient) + GetLastFunctions( const std::list< Handle(GEOM_Object) >& theObjects ); + public: DEFINE_STANDARD_RTTI( GEOM_Object ); }; diff --git a/src/GEOM/GEOM_PythonDump.cxx b/src/GEOM/GEOM_PythonDump.cxx index 2a2e498d8..07aaa0e33 100644 --- a/src/GEOM/GEOM_PythonDump.cxx +++ b/src/GEOM/GEOM_PythonDump.cxx @@ -201,6 +201,11 @@ namespace GEOM for (i = 1; i <= aLen; i++) { anObject = Handle(GEOM_Object)::DownCast(theObjects->Value(i)); + if ( anObject.IsNull() ) { + Handle(GEOM_Function) fun = Handle(GEOM_Function)::DownCast(theObjects->Value(i)); + if ( !fun.IsNull() ) + anObject = GEOM_Object::GetObject( fun->GetOwnerEntry() ); + } aLatest = GetCreatedLast(aLatest, anObject); } return aLatest; diff --git a/src/GEOMGUI/GEOM_msg_en.ts b/src/GEOMGUI/GEOM_msg_en.ts index cc359f60e..60757aabf 100644 --- a/src/GEOMGUI/GEOM_msg_en.ts +++ b/src/GEOMGUI/GEOM_msg_en.ts @@ -872,6 +872,14 @@ Please, select face, shell or solid and try again GEOM_GLUE_EDGES_TITLE Glue edges + + GEOM_GLUE_EDGES_DETECT_TITLE + Coincident edges detection + + + GEOM_GLUE_FACES_DETECT_TITLE + Coincident faces detection + GLUE_ERROR_STICKED_SHAPES The tolerance value is too big. Sticked shapes are detected. @@ -1660,6 +1668,10 @@ Please, select face, shell or solid and try again GEOM_SELECTED_SHAPE Selected shape + + GEOM_SELECTED_SHAPES + Selected shapes + GEOM_SELECTION Selection diff --git a/src/GEOMImpl/GEOMImpl_GlueDriver.cxx b/src/GEOMImpl/GEOMImpl_GlueDriver.cxx index 1f03275c5..4b3dfba96 100644 --- a/src/GEOMImpl/GEOMImpl_GlueDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_GlueDriver.cxx @@ -38,16 +38,15 @@ #include "utilities.h" +#include +#include #include - #include -#include #include #include -#include #include - -#include +#include +#include #include #include @@ -729,8 +728,36 @@ Standard_Integer GEOMImpl_GlueDriver::Execute(TFunction_Logbook& log) const TopoDS_Shape aShape; TCollection_AsciiString aWrn; - Handle(GEOM_Function) aRefBase = aCI.GetBase(); - TopoDS_Shape aShapeBase = aRefBase->GetValue(); + TopoDS_Shape aShapeBase; + Handle(TColStd_HSequenceOfTransient) aRefBases = aCI.GetBase(); + if ( aRefBases && !aRefBases->IsEmpty() ) + { + if ( aRefBases->Length() == 1 ) + { + Handle(GEOM_Function) aRefShape = Handle(GEOM_Function)::DownCast(aRefBases->Value(1)); + if ( !aRefShape.IsNull() ) + aShapeBase = aRefShape->GetValue(); + } + else + { + TopoDS_Compound compound; + BRep_Builder builder; + builder.MakeCompound( compound ); + int ind = 1; + for ( ; ind <= aRefBases->Length(); ind++) + { + Handle(GEOM_Function) aRefShape = Handle(GEOM_Function)::DownCast(aRefBases->Value(ind)); + if ( aRefShape.IsNull() ) break; + TopoDS_Shape aShape = aRefShape->GetValue(); + if (aShape.IsNull()) break; + builder.Add( compound, aShape ); + } + if ( ind > aRefBases->Length() ) + aShapeBase = compound; + else + aShapeBase.Nullify(); + } + } if (aShapeBase.IsNull()) { Standard_NullObject::Raise("Shape for gluing is null"); } @@ -803,18 +830,18 @@ GetCreationInformation(std::string& theOperationName, switch ( aType ) { case GLUE_FACES: theOperationName = "GLUE_FACES"; - AddParam( theParams, "Selected shape", aCI.GetBase() ); + AddParam( theParams, "Selected shapes", aCI.GetBase() ); AddParam( theParams, "Tolerance", aCI.GetTolerance() ); AddParam( theParams, "To keep non solids", aCI.GetKeepNonSolids() ); break; case GLUE_EDGES: theOperationName = "GLUE_EDGES"; - AddParam( theParams, "Selected shape", aCI.GetBase() ); + AddParam( theParams, "Selected shapes", aCI.GetBase() ); AddParam( theParams, "Tolerance", aCI.GetTolerance() ); break; case GLUE_FACES_BY_LIST: theOperationName = "GLUE_FACES"; - AddParam( theParams, "Selected shape", aCI.GetBase() ); + AddParam( theParams, "Selected shapes", aCI.GetBase() ); AddParam( theParams, "Tolerance", aCI.GetTolerance() ); AddParam( theParams, "Faces", aCI.GetFaces() ); AddParam( theParams, "To keep non solids", aCI.GetKeepNonSolids() ); @@ -822,7 +849,7 @@ GetCreationInformation(std::string& theOperationName, break; case GLUE_EDGES_BY_LIST: theOperationName = "GLUE_EDGES"; - AddParam( theParams, "Selected shape", aCI.GetBase() ); + AddParam( theParams, "Selected shapes", aCI.GetBase() ); AddParam( theParams, "Tolerance", aCI.GetTolerance() ); AddParam( theParams, "Edges", aCI.GetFaces() ); break; diff --git a/src/GEOMImpl/GEOMImpl_IGlue.hxx b/src/GEOMImpl/GEOMImpl_IGlue.hxx index b07654541..9e24e0fc1 100644 --- a/src/GEOMImpl/GEOMImpl_IGlue.hxx +++ b/src/GEOMImpl/GEOMImpl_IGlue.hxx @@ -26,9 +26,9 @@ #include -#define GLUE_ARG_BASE 1 -#define GLUE_ARG_TOLER 2 -#define GLUE_ARG_FACES 3 +#define GLUE_ARG_BASE 1 +#define GLUE_ARG_TOLER 2 +#define GLUE_ARG_FACES 3 #define GLUE_ARG_KEEPALL 4 #define GLUE_ARG_GLUEEDG 5 @@ -38,10 +38,11 @@ class GEOMImpl_IGlue GEOMImpl_IGlue(Handle(GEOM_Function) theFunction): _func(theFunction) {} - void SetBase(Handle(GEOM_Function) theRefBase) - { _func->SetReference(GLUE_ARG_BASE, theRefBase); } + void SetBase(const Handle(TColStd_HSequenceOfTransient)& theShapes) + { _func->SetReferenceList(GLUE_ARG_BASE, theShapes); } - Handle(GEOM_Function) GetBase() { return _func->GetReference(GLUE_ARG_BASE); } + Handle(TColStd_HSequenceOfTransient) GetBase() + { return _func->GetReferenceList(GLUE_ARG_BASE); } void SetTolerance(const Standard_Real theTolerance) { _func->SetReal(GLUE_ARG_TOLER, theTolerance); } diff --git a/src/GEOMImpl/GEOMImpl_IHealingOperations.cxx b/src/GEOMImpl/GEOMImpl_IHealingOperations.cxx index fb04fd1cb..9c5d71fff 100644 --- a/src/GEOMImpl/GEOMImpl_IHealingOperations.cxx +++ b/src/GEOMImpl/GEOMImpl_IHealingOperations.cxx @@ -592,16 +592,11 @@ GEOMImpl_IHealingOperations::Sew (std::list& theObjects, if (theObjects.empty()) return NULL; - Handle(TColStd_HSequenceOfTransient) objects = new TColStd_HSequenceOfTransient; - std::list::iterator it = theObjects.begin(); - for (; it != theObjects.end(); it++) - { - Handle(GEOM_Function) aRefSh = (*it)->GetLastFunction(); - if (aRefSh.IsNull()) { - SetErrorCode("NULL argument shape"); - return NULL; - } - objects->Append(aRefSh); + Handle(TColStd_HSequenceOfTransient) objects = + GEOM_Object::GetLastFunctions( theObjects ); + if ( objects.IsNull() || objects->IsEmpty() ) { + SetErrorCode("NULL argument shape"); + return NULL; } // Add a new object @@ -643,7 +638,7 @@ GEOMImpl_IHealingOperations::Sew (std::list& theObjects, pd << aNewObject << " = geompy.Sew(" << theObjects << ", " << theTolerance; if (isAllowNonManifold) { - pd << ", true"; + pd << ", True"; } pd << ")"; diff --git a/src/GEOMImpl/GEOMImpl_IShapesOperations.cxx b/src/GEOMImpl/GEOMImpl_IShapesOperations.cxx index 75a2b46d4..a2738417f 100644 --- a/src/GEOMImpl/GEOMImpl_IShapesOperations.cxx +++ b/src/GEOMImpl/GEOMImpl_IShapesOperations.cxx @@ -67,60 +67,61 @@ #include #include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include #include #include #include +#include +#include +#include +#include +#include +#include #include - +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include #include -#include -#include -#include -#include -#include -#include -#include -#include #include #include #include #include -#include #include - -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -133,15 +134,6 @@ #include #include // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC -// Includes added for GetInPlace algorithm improvement - -#include -#include -#include - -#include -#include -#include //============================================================================= /*! @@ -666,14 +658,18 @@ Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeShape * MakeGlueFaces */ //============================================================================= -Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeGlueFaces - (Handle(GEOM_Object) theShape, - const Standard_Real theTolerance, - const Standard_Boolean doKeepNonSolids) +Handle(GEOM_Object) +GEOMImpl_IShapesOperations::MakeGlueFaces (std::list< Handle(GEOM_Object) >& theShapes, + const Standard_Real theTolerance, + const Standard_Boolean doKeepNonSolids) { SetErrorCode(KO); - if (theShape.IsNull()) return NULL; + Handle(TColStd_HSequenceOfTransient) objects = GEOM_Object::GetLastFunctions( theShapes ); + if ( objects.IsNull() || objects->IsEmpty() ) { + SetErrorCode("NULL argument shape"); + return NULL; + } //Add a new Glued object Handle(GEOM_Object) aGlued = GetEngine()->AddObject(GetDocID(), GEOM_GLUED); @@ -688,10 +684,7 @@ Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeGlueFaces GEOMImpl_IGlue aCI (aFunction); - Handle(GEOM_Function) aRefShape = theShape->GetLastFunction(); - if (aRefShape.IsNull()) return NULL; - - aCI.SetBase(aRefShape); + aCI.SetBase( objects ); aCI.SetTolerance(theTolerance); aCI.SetKeepNonSolids(doKeepNonSolids); @@ -717,7 +710,7 @@ Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeGlueFaces //Make a Python command GEOM::TPythonDump(aFunction) << aGlued << " = geompy.MakeGlueFaces(" - << theShape << ", " << theTolerance << ")"; + << theShapes << ", " << theTolerance << ")"; // to provide warning if (!isWarning) SetErrorCode(OK); @@ -806,16 +799,25 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetGlueFaces * MakeGlueFacesByList */ //============================================================================= -Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeGlueFacesByList - (Handle(GEOM_Object) theShape, - const Standard_Real theTolerance, - std::list theFaces, - const Standard_Boolean doKeepNonSolids, - const Standard_Boolean doGlueAllEdges) +Handle(GEOM_Object) +GEOMImpl_IShapesOperations::MakeGlueFacesByList(std::list< Handle(GEOM_Object) >& theShapes, + const Standard_Real theTolerance, + std::list & theFaces, + const Standard_Boolean doKeepNonSolids, + const Standard_Boolean doGlueAllEdges) { SetErrorCode(KO); - if (theShape.IsNull()) return NULL; + Handle(TColStd_HSequenceOfTransient) objects = GEOM_Object::GetLastFunctions( theShapes ); + if ( objects.IsNull() || objects->IsEmpty() ) { + SetErrorCode("NULL argument shape"); + return NULL; + } + Handle(TColStd_HSequenceOfTransient) aFaces = GEOM_Object::GetLastFunctions( theFaces ); + if ( aFaces.IsNull() ) { + SetErrorCode("NULL argument shape for the shape construction"); + return NULL; + } //Add a new Glued object Handle(GEOM_Object) aGlued = GetEngine()->AddObject(GetDocID(), GEOM_GLUED); @@ -830,24 +832,10 @@ Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeGlueFacesByList GEOMImpl_IGlue aCI (aFunction); - Handle(GEOM_Function) aRefShape = theShape->GetLastFunction(); - if (aRefShape.IsNull()) return NULL; - - aCI.SetBase(aRefShape); + aCI.SetBase( objects ); aCI.SetTolerance(theTolerance); aCI.SetKeepNonSolids(doKeepNonSolids); aCI.SetGlueAllEdges(doGlueAllEdges); - - Handle(TColStd_HSequenceOfTransient) aFaces = new TColStd_HSequenceOfTransient; - std::list::iterator it = theFaces.begin(); - for (; it != theFaces.end(); it++) { - Handle(GEOM_Function) aRefSh = (*it)->GetLastFunction(); - if (aRefSh.IsNull()) { - SetErrorCode("NULL argument shape for the shape construction"); - return NULL; - } - aFaces->Append(aRefSh); - } aCI.SetFaces(aFaces); //Compute the sub-shape value @@ -874,16 +862,8 @@ Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeGlueFacesByList GEOM::TPythonDump pd(aFunction); pd << aGlued << " = geompy.MakeGlueFacesByList(" - << theShape << ", " << theTolerance << ", ["; - // Faces - it = theFaces.begin(); - if (it != theFaces.end()) { - pd << (*it++); - while (it != theFaces.end()) { - pd << ", " << (*it++); - } - } - pd << "], " << (bool)doKeepNonSolids << ", " << (bool)doGlueAllEdges << ")"; + << theShapes << ", " << theTolerance << ", " << theFaces << ", " + << (bool)doKeepNonSolids << ", " << (bool)doGlueAllEdges << ")"; // to provide warning if (!isWarning) SetErrorCode(OK); @@ -895,13 +875,17 @@ Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeGlueFacesByList * MakeGlueEdges */ //============================================================================= -Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeGlueEdges - (Handle(GEOM_Object) theShape, - const Standard_Real theTolerance) +Handle(GEOM_Object) +GEOMImpl_IShapesOperations::MakeGlueEdges (std::list< Handle(GEOM_Object) >& theShapes, + const Standard_Real theTolerance) { SetErrorCode(KO); - if (theShape.IsNull()) return NULL; + Handle(TColStd_HSequenceOfTransient) objects = GEOM_Object::GetLastFunctions( theShapes ); + if ( objects.IsNull() || objects->IsEmpty() ) { + SetErrorCode("NULL argument shape"); + return NULL; + } //Add a new Glued object Handle(GEOM_Object) aGlued = GetEngine()->AddObject(GetDocID(), GEOM_GLUED); @@ -916,10 +900,7 @@ Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeGlueEdges GEOMImpl_IGlue aCI (aFunction); - Handle(GEOM_Function) aRefShape = theShape->GetLastFunction(); - if (aRefShape.IsNull()) return NULL; - - aCI.SetBase(aRefShape); + aCI.SetBase( objects ); aCI.SetTolerance(theTolerance); aCI.SetKeepNonSolids(true); @@ -945,7 +926,7 @@ Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeGlueEdges //Make a Python command GEOM::TPythonDump(aFunction) << aGlued << " = geompy.MakeGlueEdges(" - << theShape << ", " << theTolerance << ")"; + << theShapes << ", " << theTolerance << ")"; // to provide warning if (!isWarning) SetErrorCode(OK); @@ -957,16 +938,36 @@ Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeGlueEdges * GetGlueShapes */ //============================================================================= -Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetGlueShapes - (Handle(GEOM_Object) theShape, - const Standard_Real theTolerance, - const TopAbs_ShapeEnum theType) +Handle(TColStd_HSequenceOfTransient) +GEOMImpl_IShapesOperations::GetGlueShapes (std::list< Handle(GEOM_Object) >& theShapes, + const Standard_Real theTolerance, + const TopAbs_ShapeEnum theType) { SetErrorCode(KO); - if (theShape.IsNull()) return NULL; - TopoDS_Shape aShape = theShape->GetValue(); - if (aShape.IsNull()) return NULL; + TopoDS_Shape aShape; + TopTools_SequenceOfShape shapes; + std::list< Handle(GEOM_Object) >::iterator s = theShapes.begin(); + Handle(GEOM_Object) lastCreatedGO; + for ( ; s != theShapes.end(); ++s ) + { + Handle(GEOM_Object) go = *s; + if ( go.IsNull() ) return NULL; + aShape = go->GetValue(); + if ( aShape.IsNull() ) return NULL; + shapes.Append( aShape ); + lastCreatedGO = GEOM::GetCreatedLast( lastCreatedGO, go ); + } + if ( shapes.Length() > 1 ) + { + TopoDS_Compound compound; + BRep_Builder builder; + builder.MakeCompound( compound ); + for ( int i = 1; i <= shapes.Length(); ++i ) + builder.Add( compound, shapes( i ) ); + + aShape = compound; + } Handle(TColStd_HSequenceOfTransient) aSeq = new TColStd_HSequenceOfTransient; @@ -977,9 +978,7 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetGlueShapes Standard_Integer iErr = aGluer.ErrorStatus(); if (iErr) return NULL; - TCollection_AsciiString anAsciiList, anEntry; - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(aShape, anIndices); + std::vector< TopTools_IndexedMapOfShape* > anIndices( shapes.Length(), NULL ); Handle(TColStd_HArray1OfInteger) anArray; Handle(GEOM_Object) anObj; @@ -1006,31 +1005,40 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetGlueShapes GEOMUtils::SortShapes(listOnePerSet, Standard_False); TopTools_ListIteratorOfListOfShape aListIt (listOnePerSet); - for (; aListIt.More(); aListIt.Next()) { + for (; aListIt.More(); aListIt.Next()) + { TopoDS_Shape aValue = aListIt.Value(); - anArray = new TColStd_HArray1OfInteger(1,1); - anArray->SetValue(1, anIndices.FindIndex(aValue)); - anObj = GetEngine()->AddSubShape(theShape, anArray); - if (!anObj.IsNull()) { - aSeq->Append(anObj); - - // for python command - TDF_Tool::Entry(anObj->GetEntry(), anEntry); - anAsciiList += anEntry; - anAsciiList += ","; + // find a shape to add aValue as a sub-shape + anObj.Nullify(); + s = theShapes.begin(); + for ( int i = 0; i < shapes.Length(); ++i, ++s ) + { + Handle(GEOM_Object) object = *s; + if ( !anIndices[i] ) { + anIndices[i] = new TopTools_IndexedMapOfShape; + TopExp::MapShapes( object->GetValue(), *anIndices[i]); + } + if (int index = anIndices[i]->FindIndex( aValue )) { + anArray = new TColStd_HArray1OfInteger(1,1); + anArray->SetValue(1, index); + anObj = GetEngine()->AddSubShape( object, anArray); + break; + } } + if (!anObj.IsNull()) + aSeq->Append(anObj); } + for ( size_t i = 0 ; i < anIndices.size(); ++i ) + delete anIndices[i]; // Make a Python command - if (anAsciiList.Length() > 0) { - anAsciiList.Trunc(anAsciiList.Length() - 1); - Handle(GEOM_Function) aFunction = theShape->GetLastFunction(); + if ( aSeq->Length() > 0) + { + Handle(GEOM_Function) aFunction = lastCreatedGO->GetLastFunction(); GEOM::TPythonDump pd (aFunction, /*append=*/true); - pd << "[" << anAsciiList.ToCString(); - if (theType == TopAbs_FACE) - pd << "] = geompy.GetGlueFaces(" << theShape << ", " << theTolerance << ")"; - else if (theType == TopAbs_EDGE) - pd << "] = geompy.GetGlueEdges(" << theShape << ", " << theTolerance << ")"; + pd << aSeq + << " = geompy." << (theType == TopAbs_FACE ? "GetGlueFaces" : "GetGlueEdges" ) + << "( " << theShapes << ", " << theTolerance << ")"; } SetErrorCode(OK); @@ -1043,15 +1051,23 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetGlueShapes * MakeGlueEdgesByList */ //============================================================================= -Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeGlueEdgesByList - (Handle(GEOM_Object) theShape, - const Standard_Real theTolerance, - std::list theEdges) +Handle(GEOM_Object) +GEOMImpl_IShapesOperations::MakeGlueEdgesByList (std::list< Handle(GEOM_Object) >& theShapes, + const Standard_Real theTolerance, + std::list& theEdges) { SetErrorCode(KO); - if (theShape.IsNull()) return NULL; - + Handle(TColStd_HSequenceOfTransient) objects = GEOM_Object::GetLastFunctions( theShapes ); + if ( objects.IsNull() || objects->IsEmpty() ) { + SetErrorCode("NULL argument shape"); + return NULL; + } + Handle(TColStd_HSequenceOfTransient) anEdges = GEOM_Object::GetLastFunctions( theEdges ); + if ( anEdges.IsNull() ) { + SetErrorCode("NULL argument shape for the shape construction"); + return NULL; + } //Add a new Glued object Handle(GEOM_Object) aGlued = GetEngine()->AddObject(GetDocID(), GEOM_GLUED); @@ -1065,23 +1081,9 @@ Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeGlueEdgesByList GEOMImpl_IGlue aCI (aFunction); - Handle(GEOM_Function) aRefShape = theShape->GetLastFunction(); - if (aRefShape.IsNull()) return NULL; - - aCI.SetBase(aRefShape); + aCI.SetBase( objects ); aCI.SetTolerance(theTolerance); aCI.SetKeepNonSolids(true); - - Handle(TColStd_HSequenceOfTransient) anEdges = new TColStd_HSequenceOfTransient; - std::list::iterator it = theEdges.begin(); - for (; it != theEdges.end(); it++) { - Handle(GEOM_Function) aRefSh = (*it)->GetLastFunction(); - if (aRefSh.IsNull()) { - SetErrorCode("NULL argument shape for the shape construction"); - return NULL; - } - anEdges->Append(aRefSh); - } aCI.SetFaces(anEdges); //Compute the sub-shape value @@ -1108,16 +1110,7 @@ Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeGlueEdgesByList GEOM::TPythonDump pd (aFunction); pd << aGlued << " = geompy.MakeGlueEdgesByList(" - << theShape << ", " << theTolerance << ", ["; - // Edges - it = theEdges.begin(); - if (it != theEdges.end()) { - pd << (*it++); - while (it != theEdges.end()) { - pd << ", " << (*it++); - } - } - pd << "])"; + << theShapes << ", " << theTolerance << ", " << theEdges << " )"; // to provide warning if (!isWarning) SetErrorCode(OK); @@ -1131,7 +1124,7 @@ Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeGlueEdgesByList //============================================================================= Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetExistingSubObjects(Handle(GEOM_Object) theShape, - const Standard_Boolean theGroupsOnly) + const Standard_Boolean theGroupsOnly) { // note: this method does not return fields @@ -1146,7 +1139,7 @@ GEOMImpl_IShapesOperations::GetExistingSubObjects(Handle(GEOM_Object) theShap Handle(GEOM_BaseObject) obj = Handle(GEOM_BaseObject)::DownCast( results->Value(i)); obj->GetEntryString(); if ( i < results->Length() ) - anAsciiList += ","; + anAsciiList += ","; } GEOM::TPythonDump pd (theShape->GetLastFunction(), /*append=*/true); @@ -1160,7 +1153,7 @@ GEOMImpl_IShapesOperations::GetExistingSubObjects(Handle(GEOM_Object) theShap Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetExistingSubObjects(Handle(GEOM_Object) theShape, - const Standard_Integer theTypes) + const Standard_Integer theTypes) { SetErrorCode(KO); @@ -1190,8 +1183,8 @@ GEOMImpl_IShapesOperations::GetExistingSubObjects(Handle(GEOM_Object) theShap bool isSubShape = anObj->IsKind(STANDARD_TYPE(GEOM_Object)) && anObj->GetType() != GEOM_GROUP; bool isField = anObj->IsKind(STANDARD_TYPE(GEOM_Field)); if (theTypes & Groups && isGroup || - theTypes & SubShapes && isSubShape || - theTypes & Fields && isField) { + theTypes & SubShapes && isSubShape || + theTypes & Fields && isField) { aSeq->Append(anObj); } } diff --git a/src/GEOMImpl/GEOMImpl_IShapesOperations.hxx b/src/GEOMImpl/GEOMImpl_IShapesOperations.hxx index d12642a36..a5b81b4d3 100644 --- a/src/GEOMImpl/GEOMImpl_IShapesOperations.hxx +++ b/src/GEOMImpl/GEOMImpl_IShapesOperations.hxx @@ -91,34 +91,31 @@ class GEOMImpl_IShapesOperations : public GEOM_IOperations Standard_EXPORT Handle(GEOM_Object) MakeCompound (std::list theShapes); - Standard_EXPORT Handle(GEOM_Object) MakeGlueFaces (Handle(GEOM_Object) theShape, + Standard_EXPORT Handle(GEOM_Object) MakeGlueFaces (std::list< Handle(GEOM_Object) >& theShapes, const Standard_Real theTolerance, const Standard_Boolean doKeepNonSolids); - //Standard_EXPORT Handle(TColStd_HSequenceOfTransient) GetGlueFaces (Handle(GEOM_Object) theShape, - // const Standard_Real theTolerance); - - Standard_EXPORT Handle(GEOM_Object) MakeGlueFacesByList (Handle(GEOM_Object) theShape, + Standard_EXPORT Handle(GEOM_Object) MakeGlueFacesByList (std::list< Handle(GEOM_Object) >& theShapes, const Standard_Real theTolerance, - std::list theFaces, + std::list& theFaces, const Standard_Boolean doKeepNonSolids, const Standard_Boolean doGlueAllEdges); - Standard_EXPORT Handle(GEOM_Object) MakeGlueEdges (Handle(GEOM_Object) theShape, + Standard_EXPORT Handle(GEOM_Object) MakeGlueEdges (std::list< Handle(GEOM_Object) >& theShapes, const Standard_Real theTolerance); - Standard_EXPORT Handle(TColStd_HSequenceOfTransient) GetGlueShapes (Handle(GEOM_Object) theShape, + Standard_EXPORT Handle(TColStd_HSequenceOfTransient) GetGlueShapes (std::list< Handle(GEOM_Object) >& theShapes, const Standard_Real theTolerance, const TopAbs_ShapeEnum theType); - Standard_EXPORT Handle(GEOM_Object) MakeGlueEdgesByList (Handle(GEOM_Object) theShape, + Standard_EXPORT Handle(GEOM_Object) MakeGlueEdgesByList (std::list< Handle(GEOM_Object) >& theShapes, const Standard_Real theTolerance, - std::list theEdges); + std::list & theEdges); Standard_EXPORT Handle(TColStd_HSequenceOfTransient) GetExistingSubObjects(Handle(GEOM_Object) theShape, - const Standard_Boolean theGroupsOnly); + const Standard_Boolean theGroupsOnly); Standard_EXPORT Handle(TColStd_HSequenceOfTransient) GetExistingSubObjects(Handle(GEOM_Object) theShape, - const Standard_Integer theTypes = All); + const Standard_Integer theTypes = All); enum ExplodeType { EXPLODE_OLD_INCLUDE_MAIN, diff --git a/src/GEOM_I/GEOM_IHealingOperations_i.cc b/src/GEOM_I/GEOM_IHealingOperations_i.cc index ffcb214ef..3876b8159 100644 --- a/src/GEOM_I/GEOM_IHealingOperations_i.cc +++ b/src/GEOM_I/GEOM_IHealingOperations_i.cc @@ -329,17 +329,12 @@ GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::Sew (const GEOM::ListOfGO& theO return aGEOMObject._retn(); //Get the shapes - std::list objects; - const int aLen = theObjects.length(); - for ( int ind = 0; ind < aLen; ind++) - { - Handle(GEOM_Object) aSh = GetObjectImpl(theObjects[ind]); - if (aSh.IsNull()) return aGEOMObject._retn(); - objects.push_back(aSh); - } + std::list< Handle(GEOM_Object) > aShapes; + if (! GetListOfObjectsImpl( theObjects, aShapes )) + return aGEOMObject._retn(); // Perform - Handle(GEOM_Object) aNewObject = GetOperations()->Sew( objects, theTolerance, false ); + Handle(GEOM_Object) aNewObject = GetOperations()->Sew( aShapes, theTolerance, false ); if (!GetOperations()->IsDone() || aNewObject.IsNull()) return aGEOMObject._retn(); @@ -365,17 +360,12 @@ GEOM_IHealingOperations_i::SewAllowNonManifold (const GEOM::ListOfGO& theObjects return aGEOMObject._retn(); //Get the shapes - std::list objects; - const int aLen = theObjects.length(); - for ( int ind = 0; ind < aLen; ind++) - { - Handle(GEOM_Object) aSh = GetObjectImpl(theObjects[ind]); - if (aSh.IsNull()) return aGEOMObject._retn(); - objects.push_back(aSh); - } + std::list< Handle(GEOM_Object) > aShapes; + if (! GetListOfObjectsImpl( theObjects, aShapes )) + return aGEOMObject._retn(); // Perform - Handle(GEOM_Object) aNewObject = GetOperations()->Sew( objects, theTolerance, true ); + Handle(GEOM_Object) aNewObject = GetOperations()->Sew( aShapes, theTolerance, true ); if (!GetOperations()->IsDone() || aNewObject.IsNull()) return aGEOMObject._retn(); diff --git a/src/GEOM_I/GEOM_IOperations_i.cc b/src/GEOM_I/GEOM_IOperations_i.cc index 9cb5b8469..bfc12f04d 100644 --- a/src/GEOM_I/GEOM_IOperations_i.cc +++ b/src/GEOM_I/GEOM_IOperations_i.cc @@ -209,6 +209,29 @@ Handle(TColStd_HSequenceOfTransient) GEOM_IOperations_i::GetListOfObjectsImpl return aResult; } +//======================================================================= +//function : GetListOfObjectsImpl +//purpose : +//======================================================================= + +bool GEOM_IOperations_i::GetListOfObjectsImpl(const GEOM::ListOfGO& theObjects, + std::list< Handle(GEOM_Object) >& theList) +{ + int i; + int aNbObj = theObjects.length(); + + for (i = 0; i < aNbObj; i++) { + Handle(GEOM_Object) anObj = GetObjectImpl(theObjects[i]); + + if (anObj.IsNull()) + return false; + + theList.push_back(anObj); + } + + return true; +} + //============================================================================= /*! * UpdateGUIForObject diff --git a/src/GEOM_I/GEOM_IOperations_i.hh b/src/GEOM_I/GEOM_IOperations_i.hh index b82b36c68..c9b88d090 100644 --- a/src/GEOM_I/GEOM_IOperations_i.hh +++ b/src/GEOM_I/GEOM_IOperations_i.hh @@ -67,6 +67,8 @@ protected: Handle(TColStd_HSequenceOfTransient) GetListOfObjectsImpl(const GEOM::ListOfGO& theObjects); + bool GetListOfObjectsImpl(const GEOM::ListOfGO& theObjects, + std::list< Handle(GEOM_Object) >& theList); Handle(TColStd_HArray1OfExtendedString) ConvertStringArray(const GEOM::string_array &theInArray); diff --git a/src/GEOM_I/GEOM_IShapesOperations_i.cc b/src/GEOM_I/GEOM_IShapesOperations_i.cc index e26497648..e109838e8 100644 --- a/src/GEOM_I/GEOM_IShapesOperations_i.cc +++ b/src/GEOM_I/GEOM_IShapesOperations_i.cc @@ -345,8 +345,8 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeSolidShells * MakeCompound */ //============================================================================= -GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeCompound - (const GEOM::ListOfGO& theShapes) +GEOM::GEOM_Object_ptr +GEOM_IShapesOperations_i::MakeCompound (const GEOM::ListOfGO& theShapes) { GEOM::GEOM_Object_var aGEOMObject; @@ -378,10 +378,10 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeCompound * MakeGlueFaces */ //============================================================================= -GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeGlueFaces - (GEOM::GEOM_Object_ptr theShape, - CORBA::Double theTolerance, - CORBA::Boolean doKeepNonSolids) +GEOM::GEOM_Object_ptr +GEOM_IShapesOperations_i::MakeGlueFaces (const GEOM::ListOfGO& theShapes, + CORBA::Double theTolerance, + CORBA::Boolean doKeepNonSolids) { GEOM::GEOM_Object_var aGEOMObject; @@ -389,12 +389,13 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeGlueFaces GetOperations()->SetNotDone(); //Get the reference objects - Handle(GEOM_Object) aShape = GetObjectImpl(theShape); - if (aShape.IsNull()) return aGEOMObject._retn(); + std::list< Handle(GEOM_Object) > aShapes; + if (! GetListOfObjectsImpl( theShapes, aShapes )) + return aGEOMObject._retn(); //Perform the gluing Handle(GEOM_Object) anObject = - GetOperations()->MakeGlueFaces(aShape, theTolerance, doKeepNonSolids); + GetOperations()->MakeGlueFaces(aShapes, theTolerance, doKeepNonSolids); //if (!GetOperations()->IsDone() || anObject.IsNull()) // to allow warning if (anObject.IsNull()) @@ -408,9 +409,9 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeGlueFaces * GetGlueFaces */ //============================================================================= -GEOM::ListOfGO* GEOM_IShapesOperations_i::GetGlueFaces - (GEOM::GEOM_Object_ptr theShape, - const CORBA::Double theTolerance) +GEOM::ListOfGO* +GEOM_IShapesOperations_i::GetGlueFaces (const GEOM::ListOfGO& theShapes, + const CORBA::Double theTolerance) { GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO; @@ -418,12 +419,12 @@ GEOM::ListOfGO* GEOM_IShapesOperations_i::GetGlueFaces GetOperations()->SetNotDone(); //Get the reference objects - Handle(GEOM_Object) aShape = GetObjectImpl(theShape); - if (aShape.IsNull()) return aSeq._retn(); + std::list< Handle(GEOM_Object) > aShapes; + if (! GetListOfObjectsImpl( theShapes, aShapes )) + return aSeq._retn(); Handle(TColStd_HSequenceOfTransient) aHSeq = - //GetOperations()->GetGlueFaces(aShape, theTolerance); - GetOperations()->GetGlueShapes(aShape, theTolerance, TopAbs_FACE); + GetOperations()->GetGlueShapes(aShapes, theTolerance, TopAbs_FACE); //if (!GetOperations()->IsDone() || aHSeq.IsNull()) // to allow warning @@ -443,12 +444,12 @@ GEOM::ListOfGO* GEOM_IShapesOperations_i::GetGlueFaces * MakeGlueFacesByList */ //============================================================================= -GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeGlueFacesByList - (GEOM::GEOM_Object_ptr theShape, - CORBA::Double theTolerance, - const GEOM::ListOfGO& theFaces, - CORBA::Boolean doKeepNonSolids, - CORBA::Boolean doGlueAllEdges) +GEOM::GEOM_Object_ptr +GEOM_IShapesOperations_i::MakeGlueFacesByList (const GEOM::ListOfGO& theShapes, + CORBA::Double theTolerance, + const GEOM::ListOfGO& theFaces, + CORBA::Boolean doKeepNonSolids, + CORBA::Boolean doGlueAllEdges) { GEOM::GEOM_Object_var aGEOMObject; @@ -456,22 +457,19 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeGlueFacesByList GetOperations()->SetNotDone(); //Get the reference objects - Handle(GEOM_Object) aShape = GetObjectImpl(theShape); - if (aShape.IsNull()) return aGEOMObject._retn(); + std::list< Handle(GEOM_Object) > aShapes; + if (! GetListOfObjectsImpl( theShapes, aShapes )) + return aGEOMObject._retn(); - int ind, aLen; - std::list aFaces; //Get the shapes - aLen = theFaces.length(); - for (ind = 0; ind < aLen; ind++) { - Handle(GEOM_Object) aSh = GetObjectImpl(theFaces[ind]); - if (aSh.IsNull()) return aGEOMObject._retn(); - aFaces.push_back(aSh); - } + std::list aFaces; + if (! GetListOfObjectsImpl( theFaces, aFaces )) + return aGEOMObject._retn(); //Perform the gluing Handle(GEOM_Object) anObject = - GetOperations()->MakeGlueFacesByList(aShape, theTolerance, aFaces, doKeepNonSolids, doGlueAllEdges); + GetOperations()->MakeGlueFacesByList(aShapes, theTolerance, aFaces, + doKeepNonSolids, doGlueAllEdges); //if (!GetOperations()->IsDone() || anObject.IsNull()) // to allow warning if (anObject.IsNull()) @@ -485,9 +483,9 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeGlueFacesByList * MakeGlueEdges */ //============================================================================= -GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeGlueEdges - (GEOM::GEOM_Object_ptr theShape, - CORBA::Double theTolerance) +GEOM::GEOM_Object_ptr +GEOM_IShapesOperations_i::MakeGlueEdges (const GEOM::ListOfGO& theShapes, + CORBA::Double theTolerance) { GEOM::GEOM_Object_var aGEOMObject; @@ -495,12 +493,13 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeGlueEdges GetOperations()->SetNotDone(); //Get the reference objects - Handle(GEOM_Object) aShape = GetObjectImpl(theShape); - if (aShape.IsNull()) return aGEOMObject._retn(); + std::list< Handle(GEOM_Object) > aShapes; + if (! GetListOfObjectsImpl( theShapes, aShapes )) + return aGEOMObject._retn(); //Perform the gluing Handle(GEOM_Object) anObject = - GetOperations()->MakeGlueEdges(aShape, theTolerance); + GetOperations()->MakeGlueEdges(aShapes, theTolerance); //if (!GetOperations()->IsDone() || anObject.IsNull()) // to allow warning if (anObject.IsNull()) @@ -514,9 +513,9 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeGlueEdges * GetGlueEdges */ //============================================================================= -GEOM::ListOfGO* GEOM_IShapesOperations_i::GetGlueEdges - (GEOM::GEOM_Object_ptr theShape, - const CORBA::Double theTolerance) +GEOM::ListOfGO* +GEOM_IShapesOperations_i::GetGlueEdges (const GEOM::ListOfGO& theShapes, + const CORBA::Double theTolerance) { GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO; @@ -524,11 +523,12 @@ GEOM::ListOfGO* GEOM_IShapesOperations_i::GetGlueEdges GetOperations()->SetNotDone(); //Get the reference objects - Handle(GEOM_Object) aShape = GetObjectImpl(theShape); - if (aShape.IsNull()) return aSeq._retn(); + std::list< Handle(GEOM_Object) > aShapes; + if (! GetListOfObjectsImpl( theShapes, aShapes )) + return aSeq._retn(); Handle(TColStd_HSequenceOfTransient) aHSeq = - GetOperations()->GetGlueShapes(aShape, theTolerance, TopAbs_EDGE); + GetOperations()->GetGlueShapes(aShapes, theTolerance, TopAbs_EDGE); //if (!GetOperations()->IsDone() || aHSeq.IsNull()) // to allow warning @@ -548,10 +548,10 @@ GEOM::ListOfGO* GEOM_IShapesOperations_i::GetGlueEdges * MakeGlueEdgesByList */ //============================================================================= -GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeGlueEdgesByList - (GEOM::GEOM_Object_ptr theShape, - CORBA::Double theTolerance, - const GEOM::ListOfGO& theEdges) +GEOM::GEOM_Object_ptr +GEOM_IShapesOperations_i::MakeGlueEdgesByList (const GEOM::ListOfGO& theShapes, + CORBA::Double theTolerance, + const GEOM::ListOfGO& theEdges) { GEOM::GEOM_Object_var aGEOMObject; @@ -559,22 +559,18 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeGlueEdgesByList GetOperations()->SetNotDone(); //Get the reference objects - Handle(GEOM_Object) aShape = GetObjectImpl(theShape); - if (aShape.IsNull()) return aGEOMObject._retn(); + std::list< Handle(GEOM_Object) > aShapes; + if (! GetListOfObjectsImpl( theShapes, aShapes )) + return aGEOMObject._retn(); - int ind, aLen; - std::list anEdges; //Get the shapes - aLen = theEdges.length(); - for (ind = 0; ind < aLen; ind++) { - Handle(GEOM_Object) aSh = GetObjectImpl(theEdges[ind]); - if (aSh.IsNull()) return aGEOMObject._retn(); - anEdges.push_back(aSh); - } + std::list anEdges; + if (! GetListOfObjectsImpl( theEdges, anEdges )) + return aGEOMObject._retn(); //Perform the gluing Handle(GEOM_Object) anObject = - GetOperations()->MakeGlueEdgesByList(aShape, theTolerance, anEdges); + GetOperations()->MakeGlueEdgesByList(aShapes, theTolerance, anEdges); //if (!GetOperations()->IsDone() || anObject.IsNull()) // to allow warning if (anObject.IsNull()) @@ -588,8 +584,9 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeGlueEdgesByList * GetExistingSubObjects */ //============================================================================= -GEOM::ListOfGO* GEOM_IShapesOperations_i::GetExistingSubObjects (GEOM::GEOM_Object_ptr theShape, - CORBA::Boolean theGroupsOnly) +GEOM::ListOfGO* +GEOM_IShapesOperations_i::GetExistingSubObjects (GEOM::GEOM_Object_ptr theShape, + CORBA::Boolean theGroupsOnly) { GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO; diff --git a/src/GEOM_I/GEOM_IShapesOperations_i.hh b/src/GEOM_I/GEOM_IShapesOperations_i.hh index 028d927e0..8b18fe9f2 100644 --- a/src/GEOM_I/GEOM_IShapesOperations_i.hh +++ b/src/GEOM_I/GEOM_IShapesOperations_i.hh @@ -72,26 +72,26 @@ class GEOM_I_EXPORT GEOM_IShapesOperations_i : GEOM::GEOM_Object_ptr MakeCompound (const GEOM::ListOfGO& theShapes); - GEOM::GEOM_Object_ptr MakeGlueFaces (GEOM::GEOM_Object_ptr theShape, + GEOM::GEOM_Object_ptr MakeGlueFaces (const GEOM::ListOfGO& theShape, CORBA::Double theTolerance, CORBA::Boolean doKeepNonSolids); - GEOM::ListOfGO* GetGlueFaces (GEOM::GEOM_Object_ptr theShape, + GEOM::ListOfGO* GetGlueFaces (const GEOM::ListOfGO& theShape, CORBA::Double theTolerance); - GEOM::GEOM_Object_ptr MakeGlueFacesByList (GEOM::GEOM_Object_ptr theShape, + GEOM::GEOM_Object_ptr MakeGlueFacesByList (const GEOM::ListOfGO& theShape, CORBA::Double theTolerance, const GEOM::ListOfGO& theFaces, CORBA::Boolean doKeepNonSolids, CORBA::Boolean doGlueAllEdges); - GEOM::GEOM_Object_ptr MakeGlueEdges (GEOM::GEOM_Object_ptr theShape, + GEOM::GEOM_Object_ptr MakeGlueEdges (const GEOM::ListOfGO& theShape, CORBA::Double theTolerance); - GEOM::ListOfGO* GetGlueEdges (GEOM::GEOM_Object_ptr theShape, + GEOM::ListOfGO* GetGlueEdges (const GEOM::ListOfGO& theShape, CORBA::Double theTolerance); - GEOM::GEOM_Object_ptr MakeGlueEdgesByList (GEOM::GEOM_Object_ptr theShape, + GEOM::GEOM_Object_ptr MakeGlueEdgesByList (const GEOM::ListOfGO& theShape, CORBA::Double theTolerance, const GEOM::ListOfGO& theEdges); diff --git a/src/GEOM_SWIG/GEOM_TestHealing.py b/src/GEOM_SWIG/GEOM_TestHealing.py index d3d7af966..72ad4927e 100644 --- a/src/GEOM_SWIG/GEOM_TestHealing.py +++ b/src/GEOM_SWIG/GEOM_TestHealing.py @@ -387,8 +387,125 @@ def TestRemoveWebs (geompy): Joined_1 = geompy.RemoveInternalFaces(Partition_1) geompy.addToStudy(Joined_1, 'Joined_1') +def TestSewGluing(geompy): + + import GEOM + box1 = geompy.MakeBox(0,0,0, 1,1,1) + box2 = geompy.MakeBox(1,0,0, 2,1,1) + comp = geompy.MakeCompound( [box1, box2] ) + + # no sewing with AllowNonManifold=False + sew1 = geompy.MakeSewing( [box1,box2], 1e-5, AllowNonManifold=False) + assert not sew1 + sew2 = geompy.MakeSewing( comp, 1e-5, AllowNonManifold=False) + assert not sew2 + sew3 = geompy.MakeSewing( [comp], 1e-5, AllowNonManifold=False) + assert not sew3 + sew1 = geompy.Sew( [box1,box2], 1e-5, AllowNonManifold=False) + assert not sew1 + sew2 = geompy.Sew( comp, 1e-5, AllowNonManifold=False) + assert not sew2 + sew3 = geompy.Sew( [comp], 1e-5, AllowNonManifold=False) + assert not sew3 + + # check MakeSewing() + sew1 = geompy.MakeSewing( [box1,box2], 1e-5, AllowNonManifold=True) + assert sew1.GetShapeType() == GEOM.SHELL + assert geompy.NumberOfFaces( sew1 ) == geompy.NumberOfFaces( comp ) + assert geompy.NumberOfEdges( sew1 ) == geompy.NumberOfEdges( comp ) - 4 + sew2 = geompy.MakeSewing( comp, 1e-5, AllowNonManifold=True) + assert sew2.GetShapeType() == GEOM.SHELL + assert geompy.NumberOfFaces( sew2 ) == geompy.NumberOfFaces( comp ) + assert geompy.NumberOfEdges( sew2 ) == geompy.NumberOfEdges( comp ) - 4 + sew3 = geompy.MakeSewing( [comp], 1e-5, AllowNonManifold=True) + assert sew3.GetShapeType() == GEOM.SHELL + assert geompy.NumberOfFaces( sew3 ) == geompy.NumberOfFaces( comp ) + assert geompy.NumberOfEdges( sew3 ) == geompy.NumberOfEdges( comp ) - 4 + # check Sew() + sew1 = geompy.Sew( [box1,box2], 1e-5, AllowNonManifold=True) + assert sew1.GetShapeType() == GEOM.SHELL + assert geompy.NumberOfFaces( sew1 ) == geompy.NumberOfFaces( comp ) + assert geompy.NumberOfEdges( sew1 ) == geompy.NumberOfEdges( comp ) - 4 + sew2 = geompy.Sew( comp, 1e-5, AllowNonManifold=True) + assert sew2.GetShapeType() == GEOM.SHELL + assert geompy.NumberOfFaces( sew2 ) == geompy.NumberOfFaces( comp ) + assert geompy.NumberOfEdges( sew2 ) == geompy.NumberOfEdges( comp ) - 4 + sew3 = geompy.Sew( [comp], 1e-5, AllowNonManifold=True) + assert sew3.GetShapeType() == GEOM.SHELL + assert geompy.NumberOfFaces( sew3 ) == geompy.NumberOfFaces( comp ) + assert geompy.NumberOfEdges( sew3 ) == geompy.NumberOfEdges( comp ) - 4 + + # check MakeGlueFaces() + glueF1 = geompy.MakeGlueFaces( [box1,box2], 1e-5) + assert glueF1.GetShapeType() == GEOM.COMPOUND + assert geompy.NumberOfFaces( glueF1 ) == geompy.NumberOfFaces( comp ) - 1 + assert geompy.NumberOfEdges( glueF1 ) == geompy.NumberOfEdges( comp ) - 4 + glueF2 = geompy.MakeGlueFaces( [comp], 1e-5) + assert glueF2.GetShapeType() == GEOM.COMPOUND + assert geompy.NumberOfFaces( glueF2 ) == geompy.NumberOfFaces( comp ) - 1 + assert geompy.NumberOfEdges( glueF2 ) == geompy.NumberOfEdges( comp ) - 4 + glueF3 = geompy.MakeGlueFaces( comp, 1e-5) + assert glueF3.GetShapeType() == GEOM.COMPOUND + assert geompy.NumberOfFaces( glueF3 ) == geompy.NumberOfFaces( comp ) - 1 + assert geompy.NumberOfEdges( glueF3 ) == geompy.NumberOfEdges( comp ) - 4 + + # check GetGlueFaces() + glueFF1 = geompy.GetGlueFaces( [box1,box2], 1e-5) + assert len( glueFF1 ) == 1 and glueFF1[0].GetShapeType() == GEOM.FACE + glueFF2 = geompy.GetGlueFaces( [comp], 1e-5) + assert len( glueFF2 ) == 1 and glueFF2[0].GetShapeType() == GEOM.FACE + glueFF3 = geompy.GetGlueFaces( comp, 1e-5) + assert len( glueFF3 ) == 1 and glueFF3[0].GetShapeType() == GEOM.FACE + + #check MakeGlueFacesByList() + glueF1 = geompy.MakeGlueFacesByList( [box1,box2], 1e-5, glueFF1) + assert glueF1.GetShapeType() == GEOM.COMPOUND + assert geompy.NumberOfFaces( glueF1 ) == geompy.NumberOfFaces( comp ) - 1 + assert geompy.NumberOfEdges( glueF1 ) == geompy.NumberOfEdges( comp ) - 4 + glueF2 = geompy.MakeGlueFacesByList( [comp], 1e-5, glueFF2) + assert glueF2.GetShapeType() == GEOM.COMPOUND + assert geompy.NumberOfFaces( glueF2 ) == geompy.NumberOfFaces( comp ) - 1 + assert geompy.NumberOfEdges( glueF2 ) == geompy.NumberOfEdges( comp ) - 4 + glueF3 = geompy.MakeGlueFacesByList( comp, 1e-5, glueFF3 ) + assert glueF3.GetShapeType() == GEOM.COMPOUND + assert geompy.NumberOfFaces( glueF3 ) == geompy.NumberOfFaces( comp ) - 1 + assert geompy.NumberOfEdges( glueF3 ) == geompy.NumberOfEdges( comp ) - 4 + + # check MakeGlueEdges() + glueE1 = geompy.MakeGlueEdges( [box1,box2], 1e-5) + assert glueE1.GetShapeType() == GEOM.COMPOUND + assert geompy.NumberOfEdges( glueE1 ) == geompy.NumberOfEdges( comp ) - 4 + glueE2 = geompy.MakeGlueEdges( [comp], 1e-5) + assert glueE2.GetShapeType() == GEOM.COMPOUND + assert geompy.NumberOfEdges( glueE2 ) == geompy.NumberOfEdges( comp ) - 4 + glueE3 = geompy.MakeGlueEdges( comp, 1e-5) + assert glueE3.GetShapeType() == GEOM.COMPOUND + assert geompy.NumberOfEdges( glueE3 ) == geompy.NumberOfEdges( comp ) - 4 + + # check GetGlueEdges() + glueEE1 = geompy.GetGlueEdges( [box1,box2], 1e-5) + assert len( glueEE1 ) == 4 and glueEE1[0].GetShapeType() == GEOM.EDGE + glueEE2 = geompy.GetGlueEdges( [comp], 1e-5) + assert len( glueEE2 ) == 4 and glueEE2[0].GetShapeType() == GEOM.EDGE + glueEE3 = geompy.GetGlueEdges( comp, 1e-5) + assert len( glueEE3 ) == 4 and glueEE3[0].GetShapeType() == GEOM.EDGE + + #check MakeGlueEdgesByList() + glueEL1 = geompy.MakeGlueEdgesByList( [box1,box2], 1e-5, glueEE1) + assert glueEL1.GetShapeType() == GEOM.COMPOUND + assert geompy.NumberOfEdges( glueEL1 ) == geompy.NumberOfEdges( comp ) - 4 + glueEL2 = geompy.MakeGlueEdgesByList( [comp], 1e-5, glueEE2) + assert glueEL2.GetShapeType() == GEOM.COMPOUND + assert geompy.NumberOfEdges( glueEL2 ) == geompy.NumberOfEdges( comp ) - 4 + glueEL3 = geompy.MakeGlueEdgesByList( comp, 1e-5, glueEE3 ) + assert glueEL3.GetShapeType() == GEOM.COMPOUND + assert geompy.NumberOfEdges( glueEL3 ) == geompy.NumberOfEdges( comp ) - 4 + + return + def TestHealingOperations (geompy, math): + TestSewGluing(geompy) TestMakeSewing(geompy, math) TestDivideEdge(geompy) TestSuppressHoles(geompy) diff --git a/src/GEOM_SWIG/geomBuilder.py b/src/GEOM_SWIG/geomBuilder.py index 0e5975d11..e20f6031e 100644 --- a/src/GEOM_SWIG/geomBuilder.py +++ b/src/GEOM_SWIG/geomBuilder.py @@ -6721,8 +6721,8 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): self._autoPublish(anObj[2], theName, "openWire") return anObj - ## Replace coincident faces in theShape by one face. - # @param theShape Initial shape. + ## Replace coincident faces in \a theShapes by one face. + # @param theShapes Initial shapes, either a list or compound of shapes. # @param theTolerance Maximum distance between faces, which can be considered as coincident. # @param doKeepNonSolids If FALSE, only solids will present in the result, # otherwise all initial shapes. @@ -6730,16 +6730,16 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): # for result publication in the study. Otherwise, if automatic # publication is switched on, default value is used for result name. # - # @return New GEOM.GEOM_Object, containing a copy of theShape without coincident faces. + # @return New GEOM.GEOM_Object, containing copies of theShapes without coincident faces. # # @ref tui_glue_faces "Example" @ManageTransactions("ShapesOp") - def MakeGlueFaces(self, theShape, theTolerance, doKeepNonSolids=True, theName=None): + def MakeGlueFaces(self, theShapes, theTolerance, doKeepNonSolids=True, theName=None): """ - Replace coincident faces in theShape by one face. + Replace coincident faces in theShapes by one face. Parameters: - theShape Initial shape. + theShapes Initial shapes, either a list or compound of shapes. theTolerance Maximum distance between faces, which can be considered as coincident. doKeepNonSolids If FALSE, only solids will present in the result, otherwise all initial shapes. @@ -6748,19 +6748,19 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): publication is switched on, default value is used for result name. Returns: - New GEOM.GEOM_Object, containing a copy of theShape without coincident faces. + New GEOM.GEOM_Object, containing copies of theShapes without coincident faces. """ # Example: see GEOM_Spanner.py theTolerance,Parameters = ParseParameters(theTolerance) - anObj = self.ShapesOp.MakeGlueFaces(theShape, theTolerance, doKeepNonSolids) + anObj = self.ShapesOp.MakeGlueFaces(ToList(theShapes), theTolerance, doKeepNonSolids) if anObj is None: raise RuntimeError, "MakeGlueFaces : " + self.ShapesOp.GetErrorCode() anObj.SetParameters(Parameters) self._autoPublish(anObj, theName, "glueFaces") return anObj - ## Find coincident faces in theShape for possible gluing. - # @param theShape Initial shape. + ## Find coincident faces in \a theShapes for possible gluing. + # @param theShapes Initial shapes, either a list or compound of shapes. # @param theTolerance Maximum distance between faces, # which can be considered as coincident. # @param theName Object name; when specified, this parameter is used @@ -6771,12 +6771,12 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): # # @ref tui_glue_faces "Example" @ManageTransactions("ShapesOp") - def GetGlueFaces(self, theShape, theTolerance, theName=None): + def GetGlueFaces(self, theShapes, theTolerance, theName=None): """ - Find coincident faces in theShape for possible gluing. + Find coincident faces in theShapes for possible gluing. Parameters: - theShape Initial shape. + theShapes Initial shapes, either a list or compound of shapes. theTolerance Maximum distance between faces, which can be considered as coincident. theName Object name; when specified, this parameter is used @@ -6786,14 +6786,14 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): Returns: GEOM.ListOfGO """ - anObj = self.ShapesOp.GetGlueFaces(theShape, theTolerance) + anObj = self.ShapesOp.GetGlueFaces(ToList(theShapes), theTolerance) RaiseIfFailed("GetGlueFaces", self.ShapesOp) self._autoPublish(anObj, theName, "facesToGlue") return anObj - ## Replace coincident faces in theShape by one face + ## Replace coincident faces in \a theShapes by one face # in compliance with given list of faces - # @param theShape Initial shape. + # @param theShapes Initial shapes, either a list or compound of shapes. # @param theTolerance Maximum distance between faces, # which can be considered as coincident. # @param theFaces List of faces for gluing. @@ -6806,19 +6806,18 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): # for result publication in the study. Otherwise, if automatic # publication is switched on, default value is used for result name. # - # @return New GEOM.GEOM_Object, containing a copy of theShape - # without some faces. + # @return New GEOM.GEOM_Object, containing copies of theShapes without coincident faces. # # @ref tui_glue_faces "Example" @ManageTransactions("ShapesOp") - def MakeGlueFacesByList(self, theShape, theTolerance, theFaces, + def MakeGlueFacesByList(self, theShapes, theTolerance, theFaces, doKeepNonSolids=True, doGlueAllEdges=True, theName=None): """ - Replace coincident faces in theShape by one face + Replace coincident faces in theShapes by one face in compliance with given list of faces Parameters: - theShape Initial shape. + theShapes theShapes Initial shapes, either a list or compound of shapes. theTolerance Maximum distance between faces, which can be considered as coincident. theFaces List of faces for gluing. @@ -6832,51 +6831,50 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): publication is switched on, default value is used for result name. Returns: - New GEOM.GEOM_Object, containing a copy of theShape - without some faces. + New GEOM.GEOM_Object, containing copies of theShapes without coincident faces. """ - anObj = self.ShapesOp.MakeGlueFacesByList(theShape, theTolerance, theFaces, + anObj = self.ShapesOp.MakeGlueFacesByList(ToList(theShapes), theTolerance, theFaces, doKeepNonSolids, doGlueAllEdges) if anObj is None: raise RuntimeError, "MakeGlueFacesByList : " + self.ShapesOp.GetErrorCode() self._autoPublish(anObj, theName, "glueFaces") return anObj - ## Replace coincident edges in theShape by one edge. - # @param theShape Initial shape. + ## Replace coincident edges in \a theShapes by one edge. + # @param theShapes Initial shapes, either a list or compound of shapes. # @param theTolerance Maximum distance between edges, which can be considered as coincident. # @param theName Object name; when specified, this parameter is used # for result publication in the study. Otherwise, if automatic # publication is switched on, default value is used for result name. # - # @return New GEOM.GEOM_Object, containing a copy of theShape without coincident edges. + # @return New GEOM.GEOM_Object, containing copies of theShapes without coincident edges. # # @ref tui_glue_edges "Example" @ManageTransactions("ShapesOp") - def MakeGlueEdges(self, theShape, theTolerance, theName=None): + def MakeGlueEdges(self, theShapes, theTolerance, theName=None): """ - Replace coincident edges in theShape by one edge. + Replace coincident edges in theShapes by one edge. Parameters: - theShape Initial shape. + theShapes Initial shapes, either a list or compound of shapes. theTolerance Maximum distance between edges, which can be considered as coincident. theName Object name; when specified, this parameter is used for result publication in the study. Otherwise, if automatic publication is switched on, default value is used for result name. Returns: - New GEOM.GEOM_Object, containing a copy of theShape without coincident edges. + New GEOM.GEOM_Object, containing copies of theShapes without coincident edges. """ theTolerance,Parameters = ParseParameters(theTolerance) - anObj = self.ShapesOp.MakeGlueEdges(theShape, theTolerance) + anObj = self.ShapesOp.MakeGlueEdges(ToList(theShapes), theTolerance) if anObj is None: raise RuntimeError, "MakeGlueEdges : " + self.ShapesOp.GetErrorCode() anObj.SetParameters(Parameters) self._autoPublish(anObj, theName, "glueEdges") return anObj - ## Find coincident edges in theShape for possible gluing. - # @param theShape Initial shape. + ## Find coincident edges in \a theShapes for possible gluing. + # @param theShapes Initial shapes, either a list or compound of shapes. # @param theTolerance Maximum distance between edges, # which can be considered as coincident. # @param theName Object name; when specified, this parameter is used @@ -6887,12 +6885,12 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): # # @ref tui_glue_edges "Example" @ManageTransactions("ShapesOp") - def GetGlueEdges(self, theShape, theTolerance, theName=None): + def GetGlueEdges(self, theShapes, theTolerance, theName=None): """ - Find coincident edges in theShape for possible gluing. + Find coincident edges in theShapes for possible gluing. Parameters: - theShape Initial shape. + theShapes Initial shapes, either a list or compound of shapes. theTolerance Maximum distance between edges, which can be considered as coincident. theName Object name; when specified, this parameter is used @@ -6902,14 +6900,14 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): Returns: GEOM.ListOfGO """ - anObj = self.ShapesOp.GetGlueEdges(theShape, theTolerance) + anObj = self.ShapesOp.GetGlueEdges(ToList(theShapes), theTolerance) RaiseIfFailed("GetGlueEdges", self.ShapesOp) self._autoPublish(anObj, theName, "edgesToGlue") return anObj - ## Replace coincident edges in theShape by one edge + ## Replace coincident edges in theShapes by one edge # in compliance with given list of edges. - # @param theShape Initial shape. + # @param theShapes Initial shapes, either a list or compound of shapes. # @param theTolerance Maximum distance between edges, # which can be considered as coincident. # @param theEdges List of edges for gluing. @@ -6917,18 +6915,17 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): # for result publication in the study. Otherwise, if automatic # publication is switched on, default value is used for result name. # - # @return New GEOM.GEOM_Object, containing a copy of theShape - # without some edges. + # @return New GEOM.GEOM_Object, containing copies of theShapes without coincident edges. # # @ref tui_glue_edges "Example" @ManageTransactions("ShapesOp") - def MakeGlueEdgesByList(self, theShape, theTolerance, theEdges, theName=None): + def MakeGlueEdgesByList(self, theShapes, theTolerance, theEdges, theName=None): """ - Replace coincident edges in theShape by one edge + Replace coincident edges in theShapes by one edge in compliance with given list of edges. Parameters: - theShape Initial shape. + theShapes Initial shapes, either a list or compound of shapes. theTolerance Maximum distance between edges, which can be considered as coincident. theEdges List of edges for gluing. @@ -6937,10 +6934,9 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): publication is switched on, default value is used for result name. Returns: - New GEOM.GEOM_Object, containing a copy of theShape - without some edges. + New GEOM.GEOM_Object, containing copies of theShapes without coincident edges. """ - anObj = self.ShapesOp.MakeGlueEdgesByList(theShape, theTolerance, theEdges) + anObj = self.ShapesOp.MakeGlueEdgesByList(ToList(theShapes), theTolerance, theEdges) if anObj is None: raise RuntimeError, "MakeGlueEdgesByList : " + self.ShapesOp.GetErrorCode() self._autoPublish(anObj, theName, "glueEdges") diff --git a/src/RepairGUI/RepairGUI_GlueDlg.cxx b/src/RepairGUI/RepairGUI_GlueDlg.cxx index 55a1bb27a..debad4f6a 100644 --- a/src/RepairGUI/RepairGUI_GlueDlg.cxx +++ b/src/RepairGUI/RepairGUI_GlueDlg.cxx @@ -91,7 +91,7 @@ RepairGUI_GlueDlg::RepairGUI_GlueDlg(GeometryGUI* theGeometryGUI, QWidget* paren GroupPoints = new DlgRef_1SelExt(centralWidget()); GroupPoints->GroupBox1->setTitle(tr("GEOM_GLUE")); - GroupPoints->TextLabel1->setText(tr("GEOM_SELECTED_SHAPE")); + GroupPoints->TextLabel1->setText(tr("GEOM_SELECTED_SHAPES")); GroupPoints->PushButton1->setIcon(image0); GroupPoints->LineEdit1->setReadOnly(true); @@ -108,7 +108,7 @@ RepairGUI_GlueDlg::RepairGUI_GlueDlg(GeometryGUI* theGeometryGUI, QWidget* paren GroupPoints2 = new DlgRef_1SelExt(centralWidget()); GroupPoints2->GroupBox1->setTitle(tr("GEOM_GLUE")); - GroupPoints2->TextLabel1->setText(tr("GEOM_SELECTED_SHAPE")); + GroupPoints2->TextLabel1->setText(tr("GEOM_SELECTED_SHAPES")); GroupPoints2->PushButton1->setIcon(image0); GroupPoints2->LineEdit1->setReadOnly(true); @@ -191,7 +191,7 @@ void RepairGUI_GlueDlg::Init() /* init variables */ myEditCurrentArgument = GroupPoints->LineEdit1; - myObject = GEOM::GEOM_Object::_nil(); + myObjects.clear(); //myGeomGUI->SetState(0); //globalSelection(GEOM_COMPOUND); @@ -330,17 +330,13 @@ void RepairGUI_GlueDlg::SelectionIntoArgument() erasePreview(); myEditCurrentArgument->setText(""); - myObject = GEOM::GEOM_Object::_nil(); + myObjects.clear(); - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); - SALOME_ListIO aSelList; - aSelMgr->selectedObjects(aSelList); + myObjects = getSelected( TopAbs_SHAPE, -1 ); - if (aSelList.Extent() == 1) { - Handle(SALOME_InteractiveObject) anIO = aSelList.First(); - myObject = GEOMBase::ConvertIOinGEOMObject(anIO); - if (!CORBA::is_nil(myObject)) - myEditCurrentArgument->setText(GEOMBase::GetName(myObject)); + if ( !myObjects.isEmpty() ) { + QString aName = myObjects.count() > 1 ? QString( "%1_objects").arg( myObjects.count() ) : GEOMBase::GetName( myObjects[0].get() ); + myEditCurrentArgument->setText( aName ); } updateButtonState(); } @@ -432,7 +428,7 @@ bool RepairGUI_GlueDlg::isValid(QString& msg) ok = myTolEdt2->isValid(msg, !IsPreview()); break; } - return !myObject->_is_nil() && (IsPreview() || v > 0.) && ok; + return !myObjects.isEmpty() && (IsPreview() || v > 0.) && ok; } //================================================================================= @@ -444,15 +440,20 @@ bool RepairGUI_GlueDlg::execute(ObjectList& objects) bool aResult = false; objects.clear(); + GEOM::ListOfGO_var objList = new GEOM::ListOfGO; + objList->length( myObjects.count() ); + for ( int i = 0; i < myObjects.count(); ++i ) + objList[i] = myObjects[i].copy(); + GEOM::GEOM_IShapesOperations_var anOper = GEOM::GEOM_IShapesOperations::_narrow(getOperation()); switch (getConstructorId()) { case 0: { GEOM::GEOM_Object_var anObj; if (myGlueMode == TopAbs_FACE) - anObj = anOper->MakeGlueFaces(myObject, myTolEdt->value(), true); + anObj = anOper->MakeGlueFaces( objList, myTolEdt->value(), true); else if (myGlueMode == TopAbs_EDGE) - anObj = anOper->MakeGlueEdges(myObject, myTolEdt->value()); + anObj = anOper->MakeGlueEdges( objList, myTolEdt->value()); aResult = !anObj->_is_nil(); if (aResult && !IsPreview()) @@ -506,11 +507,11 @@ bool RepairGUI_GlueDlg::execute(ObjectList& objects) GEOM::GEOM_Object_var anObj; if (myGlueMode == TopAbs_FACE) { bool doGlueAllEdges = myGlueAllEdgesChk->isChecked(); - anObj = anOper->MakeGlueFacesByList(myObject, myTolEdt2->value(), aListForGlue.in(), + anObj = anOper->MakeGlueFacesByList( objList, myTolEdt2->value(), aListForGlue.in(), true, doGlueAllEdges); } else if (myGlueMode == TopAbs_EDGE) - anObj = anOper->MakeGlueEdgesByList(myObject, myTolEdt2->value(), aListForGlue.in()); + anObj = anOper->MakeGlueEdgesByList( objList, myTolEdt2->value(), aListForGlue.in()); aResult = !anObj->_is_nil(); @@ -693,12 +694,17 @@ void RepairGUI_GlueDlg::onDetect() buttonApply()->setEnabled(false); globalSelection(GEOM_ALLSHAPES); + GEOM::ListOfGO_var objList = new GEOM::ListOfGO; + objList->length( myObjects.count() ); + for ( int i = 0; i < myObjects.count(); ++i ) + objList[i] = myObjects[i].copy(); + GEOM::GEOM_IShapesOperations_var anOper = GEOM::GEOM_IShapesOperations::_narrow(getOperation()); GEOM::ListOfGO_var aList; if (myGlueMode == TopAbs_FACE) - aList = anOper->GetGlueFaces(myObject.in(), myTolEdt2->value()); + aList = anOper->GetGlueFaces( objList, myTolEdt2->value()); else if (myGlueMode == TopAbs_EDGE) - aList = anOper->GetGlueEdges(myObject.in(), myTolEdt2->value()); + aList = anOper->GetGlueEdges( objList, myTolEdt2->value()); for (int i = 0, n = aList->length(); i < n; i++) myTmpObjs << GEOM::GeomObjPtr(aList[i].in()); @@ -719,7 +725,10 @@ void RepairGUI_GlueDlg::onDetect() connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - SUIT_MessageBox::information(this, tr("GEOM_FREE_BOUNDS_TLT"), msg, tr("Close")); + if ( myGlueMode == TopAbs_FACE ) + SUIT_MessageBox::information(this, tr("GEOM_GLUE_FACES_DETECT_TITLE"), msg, tr("Close")); + else + SUIT_MessageBox::information(this, tr("GEOM_GLUE_EDGES_DETECT_TITLE"), msg, tr("Close")); updateButtonState(); activateSelection(); } @@ -739,7 +748,7 @@ void RepairGUI_GlueDlg::activateSelection() this, SLOT(SelectionIntoArgument())); globalSelection(GEOM_ALLSHAPES); - if (myObject->_is_nil()) + if ( myObjects.isEmpty() ) SelectionIntoArgument(); connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()), @@ -768,7 +777,7 @@ void RepairGUI_GlueDlg::activateSelection() void RepairGUI_GlueDlg::updateButtonState() { int anId = getConstructorId(); - bool hasMainObj = !myObject->_is_nil(); + bool hasMainObj = !myObjects.isEmpty(); if (anId == 0) { buttonOk()->setEnabled(hasMainObj); buttonApply()->setEnabled(hasMainObj); diff --git a/src/RepairGUI/RepairGUI_GlueDlg.h b/src/RepairGUI/RepairGUI_GlueDlg.h index 4b6ccc3af..494c80716 100644 --- a/src/RepairGUI/RepairGUI_GlueDlg.h +++ b/src/RepairGUI/RepairGUI_GlueDlg.h @@ -73,7 +73,7 @@ private: void selectTmpInViewer(); private: - GEOM::GEOM_Object_var myObject; + QList myObjects; QList myTmpObjs; DlgRef_1SelExt* GroupPoints; diff --git a/src/RepairGUI/RepairGUI_SewingDlg.cxx b/src/RepairGUI/RepairGUI_SewingDlg.cxx index e26f26157..3f146c644 100644 --- a/src/RepairGUI/RepairGUI_SewingDlg.cxx +++ b/src/RepairGUI/RepairGUI_SewingDlg.cxx @@ -70,7 +70,7 @@ RepairGUI_SewingDlg::RepairGUI_SewingDlg( GeometryGUI* theGeometryGUI, QWidget* GroupPoints = new DlgRef_1SelExt( centralWidget() ); GroupPoints->GroupBox1->setTitle( tr( "GEOM_SEWING" ) ); - GroupPoints->TextLabel1->setText( tr( "GEOM_SELECTED_SHAPE" ) ); + GroupPoints->TextLabel1->setText( tr( "GEOM_SELECTED_SHAPES" ) ); GroupPoints->PushButton1->setIcon( image1 ); GroupPoints->LineEdit1->setReadOnly( true ); -- 2.39.2