From 7dde2fd90a181bab975bbc8375348b6924b6f93b Mon Sep 17 00:00:00 2001 From: dmv Date: Fri, 7 Nov 2008 12:20:55 +0000 Subject: [PATCH] 0018862: EDF 657 GEOM : to be able to create an arc of ellipse --- doc/salome/gui/GEOM/images/arc.png | Bin 19353 -> 18635 bytes doc/salome/gui/GEOM/images/arc2.png | Bin 20895 -> 19986 bytes doc/salome/gui/GEOM/images/arcofellipse1.png | Bin 0 -> 2429 bytes doc/salome/gui/GEOM/images/arcofellipse2.png | Bin 0 -> 18834 bytes doc/salome/gui/GEOM/input/creating_arc.doc | 17 +++ .../gui/GEOM/input/tui_basic_geom_objs.doc | 33 +++++ idl/GEOM_Gen.idl | 11 ++ idl/GEOM_Superv.idl | 3 + resources/GEOMCatalog.xml.in | 32 +++++ resources/Makefile.am | 3 +- resources/arcofellipse.png | Bin 0 -> 513 bytes src/BasicGUI/BasicGUI_ArcDlg.cxx | 136 ++++++++++++++++-- src/BasicGUI/BasicGUI_ArcDlg.h | 1 + src/GEOMGUI/GEOM_images.ts | 4 + src/GEOMImpl/GEOMImpl_ArcDriver.cxx | 32 ++++- src/GEOMImpl/GEOMImpl_ICurvesOperations.cxx | 61 ++++++++ src/GEOMImpl/GEOMImpl_ICurvesOperations.hxx | 4 + src/GEOMImpl/GEOMImpl_Types.hxx | 7 +- src/GEOM_I/GEOM_ICurvesOperations_i.cc | 37 +++++ src/GEOM_I/GEOM_ICurvesOperations_i.hh | 4 + src/GEOM_I_Superv/GEOM_Superv_i.cc | 15 ++ src/GEOM_I_Superv/GEOM_Superv_i.hh | 3 + src/GEOM_SWIG/GEOM_TestAll.py | 3 + src/GEOM_SWIG/geompyDC.py | 13 ++ 24 files changed, 403 insertions(+), 16 deletions(-) create mode 100644 doc/salome/gui/GEOM/images/arcofellipse1.png create mode 100644 doc/salome/gui/GEOM/images/arcofellipse2.png create mode 100755 resources/arcofellipse.png diff --git a/doc/salome/gui/GEOM/images/arc.png b/doc/salome/gui/GEOM/images/arc.png index 02f1ffcb1f149247ca2b188cbc7ee7f72742daeb..b7ef8777f019f01f4d5ae7489a0c12dde98a5cee 100755 GIT binary patch literal 18635 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 literal 19353 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 )SCMPd%il6*tK?y52 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 R1D^H9;OXk;vd$@?2>>b&D((OP literal 20895 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

tHYdT8UI)IV=!xqY^hE| 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 diff --git a/doc/salome/gui/GEOM/images/arcofellipse1.png b/doc/salome/gui/GEOM/images/arcofellipse1.png new file mode 100644 index 0000000000000000000000000000000000000000..cd50fff1c7273354590f1ecef43d0897aad0ff61 GIT binary patch literal 2429 zcmeHJ`Bzg(77pn|6P5ub+UzK;kc?4DAkZvE9)d_P@JJMhw(Nm6E-a30qCfyeM3j>! zkk~+k0Lg$r&}K&HAuVzSd2O3+2%DoaFam<4k+2Jad7L??PyaA8f54nMr|PS^U)8<$ ztEwOB-UR)940O$OQ7Dvw?=deH3Z)Z|^avapVa8`;f>0>Dm#-IaBIO(Po5QTJLDRoR zj7%l|GK3~)c8n2hiYa(K``u;7-(fssboPX9*;eL%@^iiKPdClow0PZ;J`uY9l_a>w z#YbsOAu!KLdm0rp@6kS8e_FEi=%^@eM~N-@=uVuj(HBII0x^p6Z;UzaT5ZacC)XCV zcFFC2xc!SsBO`anT(2psVwoU#%Pb+R9V`8}mMUjiA3+xJG zB66vKd>VCT4{`Nb-Ylk{wCD=?`-Cr`ft5wA>_cl^*Tigvu2fX({u>1jPDI0!+M*9A zGo$+;gl$5?{VMH+R6K3b=~|L|&*8yu=uP?0vYY3Q$Ig9L?EXHBwz(=4e|3m{pP3m5 z%wCGlx)5ZwD`whn#(?Az7Y@F4p(K=|>$qb&ksW|s=c#CK_UH(u{`E(($ zNu+<)S_v&@o#$yZ3tdY(<*(EJf?wDM*~~xk z9WH7om;D(u1UPT&?!Qd(>dZZbgFAlb;+#r50DER(xW1qHN2tA^9omkgwusE0ExC zt4LFa?eVI^jPI*^T%0L0-yvL6Y57PM}ufa?+TjC9tfNTy5Fk`!TRBRRF z3T7;dMJtN={iSgnjN{zIAQM8_vK9S9V_Uo*P< ztq3$(Q4Qf-A3~&^WeEGt5uz;W75bqgk=L`O>v1(F3RFobB35A^)|)Akka9zU5h6mw z;_uibYDu?F`+=(Hy^dT?9WGx~pI<|kYQ@rS-Lo*u%n%`pYsi&j2mzmk*F*;SqMy#f z)35ZAu@`conGk4M)sJ@)Xb}~=xlT+ZV#=+W7gc3qDSoCGGIiWepp6)bsNe47SK5Mk zQ`wca>G`|4tjk-ynI<0W8g>Gx!Z6t9KvfP!pJXhf5_ugdB5LlZ&F%Ftf*4cQC{H(E zWK>Jy^kKZ2;`GZ1mKN^bE9E0eRF(4xI@n7j1WQCpD}4W#UcO1_(h%aUOzWO$!C`bVQ3t9*<~2o3gf?Mzo-BbI1s)IkpHg zPwgV|JXb8L^c|9son}smYRoIAuuU&#HsUq)#cGABpJ&w{-8M!vk3Y2DQj{ZKM{DZp+H~ck$)E0)G!EE(@k>$i z`HMo!;5*781(z)lw5_JD3$0U#Z7ZjcPb@AYu)(S#>}BiA_9Od3FE+F_8edy4bCX_q zNG@Hl;_QjZaOxmXwf~yb+)J zNxj+|Gy5|kW%!y|=$mZ%TIq77dc9r@L zOq!TdDi0JUeva8UJFlG_ogQUdXDn}BVh+&{2}i<~vVfuCd8bcHB@Wq7!v%$dvf1dW zyKWbs!@VSeoz*NFSE;;^rX?|4HNwoKlRFBi3_CWB!z#M7FQYA z2&vag2h$X~_6pmXGC830e*Z?>?W~ypTBiKx0tQ)mk)eYMlO#=A-ad(xRVZI?f3F75 HaQ;65ylUoL literal 0 HcmV?d00001 diff --git a/doc/salome/gui/GEOM/images/arcofellipse2.png b/doc/salome/gui/GEOM/images/arcofellipse2.png new file mode 100644 index 0000000000000000000000000000000000000000..24172dfae940ab1d51a8c1a2d632915b4dbf81c8 GIT binary patch literal 18834 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 \image html arc2.png +Finally, it is possible to create an Arc of Ellipse, which is also done by three points: +the Arguments Point 1, Point 2 and the Center Point. The arc is built on the Ellipse that +lies in the plane defined by the three points, with the center in the Center point. +The major radius of the Ellipse is defined by the distance between the Center Point and +the most remote Argument point. The minor radius is defined by the shortest distance between the +other Argument point and the major radius. +\n TUI Command: geompy.MakeArcOfEllipse(Center Point, First Point, Second Point) +\n Arguments: Name + 3 vertices. + +\image html arcofellipse2.png + \n Examples: \image html arcsn.png @@ -40,4 +51,10 @@ Point, End Point, boolean Sense) \image html arcsn2.png

Reversed arc.
+\image html arcofellipse1.png +
Arc Of Ellipse.
+ +Our TUI Scripts provide you with useful examples of creation of +\ref tui_creation_arc "Basic Geometric Objects". */ + diff --git a/doc/salome/gui/GEOM/input/tui_basic_geom_objs.doc b/doc/salome/gui/GEOM/input/tui_basic_geom_objs.doc index d9c30a23b..89baf140d 100644 --- a/doc/salome/gui/GEOM/input/tui_basic_geom_objs.doc +++ b/doc/salome/gui/GEOM/input/tui_basic_geom_objs.doc @@ -132,6 +132,39 @@ id_ellipse = geompy.addToStudy(ellipse,"Ellipse") gg.createAndDisplayGO(id_vector) gg.createAndDisplayGO(id_ellipse) \endcode + +\anchor tui_creation_arc +

Creation of an Arc

+ +\code +import geompy +import salome +gg = salome.ImportComponentGUI("GEOM") + +# create vertices +p0 = geompy.MakeVertex(0., 0., 0.) +p1 = geompy.MakeVertex(100., 0., 0.) +p2 = geompy.MakeVertex(50., 0., 50.) + +# create an arc from a three points +arc1 = geompy.MakeArc(p0, p1, p2) + +# create an arc from a center point, a start point and end point +arc2 = geompy.MakeArcCenter(p0, p1, p2, 1) + +# create an arc from a center point, a major point and minor point +arc3 = geompy.MakeArcOfEllipse(p0, p1, p2) + +# add objects in the study +id_arc1 = geompy.addToStudy(arc1, "Arc 1") +id_arc2 = geompy.addToStudy(arc2, "Arc 2") +id_arc3 = geompy.addToStudy(arc3, "Arc 3") + +# display the arcs +gg.createAndDisplayGO(id_arc1) +gg.createAndDisplayGO(id_arc2) +gg.createAndDisplayGO(id_arc3) +\endcode \anchor tui_creation_curve

Creation of a Curve

diff --git a/idl/GEOM_Gen.idl b/idl/GEOM_Gen.idl index 4f9afd0df..fd153f760 100644 --- a/idl/GEOM_Gen.idl +++ b/idl/GEOM_Gen.idl @@ -2095,6 +2095,17 @@ module GEOM in GEOM_Object thePnt1, in GEOM_Object thePnt2, in boolean theSense); + + /*! + * Create an arc of ellipse of center C and two points P1 P2. + * \param theCenter Center point of the arc. + * \param thePnt1 Major radius is distance from center to Pnt1. + * \param thePnt2 define a plane and Minor radius as a shortest distance from Pnt2 to vector Center->Pnt1. + * \return New GEOM_Object, containing the created arc. + */ + GEOM_Object MakeArcOfEllipse (in GEOM_Object theCenter, + in GEOM_Object thePnt1, + in GEOM_Object thePnt2); /*! diff --git a/idl/GEOM_Superv.idl b/idl/GEOM_Superv.idl index 5ca45ef11..725d36075 100644 --- a/idl/GEOM_Superv.idl +++ b/idl/GEOM_Superv.idl @@ -480,6 +480,9 @@ module GEOM in GEOM_Object thePnt1, in GEOM_Object thePnt2, in boolean theSense) ; + GEOM_Object MakeArcOfEllipse (in GEOM_Object theCenter, + in GEOM_Object thePnt1, + in GEOM_Object thePnt2) ; GEOM_Object MakePolyline (in GEOM_List thePoints) ; GEOM_Object MakeSplineBezier (in GEOM_List thePoints) ; GEOM_Object MakeSplineInterpolation (in GEOM_List thePoints) ; diff --git a/resources/GEOMCatalog.xml.in b/resources/GEOMCatalog.xml.in index 2739da315..ebf49b2e1 100644 --- a/resources/GEOMCatalog.xml.in +++ b/resources/GEOMCatalog.xml.in @@ -4224,6 +4224,38 @@ + + MakeArcOfEllipse + + + unknown + 0 + + + thePnt1 + GEOM_Object + unknown + + + thePnt2 + GEOM_Object + unknown + + + thePnt3 + GEOM_Object + unknown + + + + + return + GEOM_Object + unknown + + + + MakePolyline diff --git a/resources/Makefile.am b/resources/Makefile.am index bce407e4a..9f8e9ecfd 100644 --- a/resources/Makefile.am +++ b/resources/Makefile.am @@ -38,6 +38,8 @@ ImportExport \ ShHealing \ angle.png \ arc.png \ +arccenter.png \ +arcofellipse.png \ archimede.png \ axisinertia.png \ basicproperties.png \ @@ -203,7 +205,6 @@ free_faces.png \ propagate.png \ redo.png \ undo.png \ -arccenter.png \ glue2.png \ remove_extra_edges.png \ coordsys.png \ diff --git a/resources/arcofellipse.png b/resources/arcofellipse.png new file mode 100755 index 0000000000000000000000000000000000000000..3f15b6ef9888199327ae6ad449f8cf09b432e87c GIT binary patch literal 513 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`j)5C}6~x?A@LD9DoT z=}1{rUgjp4pVqfx*x)K$3w);3_W*hXPwoTv}3+lBEp;QwQh#M7NE5 z4V-s&nhGd1eAqcbIxE6PAX+$E!+~MrgNcuSet#d&G{LOl(|d-G;ZAH!ECR|WT6=nW zB!u*HbN=1tj9S=n_s*T89w!_c7!GABTv>m1dKZ0zRuaNuQLIh}z+K}6hXawnHbcud1F6-RNUrPr;2*3QeBGLdJGx0B*w xUT-fTKhC1Sc`}#z&ZCOJ;0@Z%#lT^}AZ|5zY5VGeXTa!U@O1TaS?83{1OP}tsjC10 literal 0 HcmV?d00001 diff --git a/src/BasicGUI/BasicGUI_ArcDlg.cxx b/src/BasicGUI/BasicGUI_ArcDlg.cxx index f0f7056e9..3d3dee4e1 100644 --- a/src/BasicGUI/BasicGUI_ArcDlg.cxx +++ b/src/BasicGUI/BasicGUI_ArcDlg.cxx @@ -58,6 +58,7 @@ BasicGUI_ArcDlg::BasicGUI_ArcDlg( GeometryGUI* theGeometryGUI, QWidget* parent, QPixmap image0( aResMgr->loadPixmap( "GEOM", tr( "ICON_DLG_ARC" ) ) ); QPixmap image1( aResMgr->loadPixmap( "GEOM", tr( "ICON_DLG_ARC_CENTER" ) ) ); QPixmap image2( aResMgr->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) ); + QPixmap image3( aResMgr->loadPixmap( "GEOM", tr( "ICON_DLG_ARC_OF_ELLIPSE" ) ) ); setWindowTitle( tr( "GEOM_ARC_TITLE" ) ); @@ -65,8 +66,7 @@ BasicGUI_ArcDlg::BasicGUI_ArcDlg( GeometryGUI* theGeometryGUI, QWidget* parent, mainFrame()->GroupConstructors->setTitle( tr( "GEOM_ARC" ) ); mainFrame()->RadioButton1->setIcon( image0 ); mainFrame()->RadioButton2->setIcon( image1 ); - mainFrame()->RadioButton3->setAttribute( Qt::WA_DeleteOnClose ); - mainFrame()->RadioButton3->close(); + mainFrame()->RadioButton3->setIcon( image3 ); Group3Pnts = new DlgRef_3Sel( centralWidget() ); @@ -109,10 +109,30 @@ BasicGUI_ArcDlg::BasicGUI_ArcDlg( GeometryGUI* theGeometryGUI, QWidget* parent, Group3Pnts2->CheckButton1->setText( tr( "GEOM_REVERSE" ) ); + Group3Pnts3 = new DlgRef_3Sel( centralWidget() ); + + Group3Pnts3->GroupBox1->setTitle( tr( "GEOM_POINTS" ) ); + Group3Pnts3->TextLabel1->setText( tr( "GEOM_CENTER_POINT" ) ); + Group3Pnts3->TextLabel2->setText( tr( "GEOM_POINT_I" ).arg( 1 ) ); + Group3Pnts3->TextLabel3->setText( tr( "GEOM_POINT_I" ).arg( 2 ) ); + + Group3Pnts3->LineEdit1->setReadOnly( true ); + Group3Pnts3->LineEdit2->setReadOnly( true ); + Group3Pnts3->LineEdit3->setReadOnly( true ); + + Group3Pnts3->LineEdit1->setEnabled(true); + Group3Pnts3->LineEdit2->setEnabled(false); + Group3Pnts3->LineEdit3->setEnabled(false); + + Group3Pnts3->PushButton1->setIcon(image2); + Group3Pnts3->PushButton2->setIcon(image2); + Group3Pnts3->PushButton3->setIcon(image2); + QVBoxLayout* layout = new QVBoxLayout( centralWidget() ); layout->setMargin( 0 ); layout->setSpacing( 6 ); layout->addWidget( Group3Pnts ); layout->addWidget( Group3Pnts2 ); + layout->addWidget( Group3Pnts3 ); setHelpFileName( "create_arc_page.html" ); @@ -166,9 +186,17 @@ void BasicGUI_ArcDlg::Init() connect( Group3Pnts2->LineEdit1, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) ); connect( Group3Pnts2->LineEdit2, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) ); connect( Group3Pnts2->LineEdit3, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) ); - + connect( Group3Pnts2->CheckButton1, SIGNAL( toggled( bool ) ), this, SLOT( ReverseSense() ) ); + connect( Group3Pnts3->PushButton1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) ); + connect( Group3Pnts3->PushButton2, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) ); + connect( Group3Pnts3->PushButton3, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) ); + + connect( Group3Pnts3->LineEdit1, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) ); + connect( Group3Pnts3->LineEdit2, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) ); + connect( Group3Pnts3->LineEdit3, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) ); + connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) ); @@ -211,9 +239,6 @@ bool BasicGUI_ArcDlg::ClickOnApply() //================================================================================= void BasicGUI_ArcDlg::SelectionIntoArgument() { - if ( getConstructorId() != 0 && getConstructorId() != 1 ) - return; - myEditCurrentArgument->setText( "" ); LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); @@ -234,6 +259,12 @@ void BasicGUI_ArcDlg::SelectionIntoArgument() else if ( myEditCurrentArgument == Group3Pnts2->LineEdit3 ) myPoint3 = GEOM::GEOM_Object::_nil(); return; break; + case 2: + if ( myEditCurrentArgument == Group3Pnts3->LineEdit1 ) myPoint1 = GEOM::GEOM_Object::_nil(); + else if ( myEditCurrentArgument == Group3Pnts3->LineEdit2 ) myPoint2 = GEOM::GEOM_Object::_nil(); + else if ( myEditCurrentArgument == Group3Pnts3->LineEdit3 ) myPoint3 = GEOM::GEOM_Object::_nil(); + return; + break; } } // nbSel == 1 @@ -314,6 +345,23 @@ void BasicGUI_ArcDlg::SelectionIntoArgument() Group3Pnts2->PushButton1->click(); } break; + case 2: + if ( myEditCurrentArgument == Group3Pnts3->LineEdit1 ) { + myPoint1 = aSelectedObject; + if ( !myPoint1->_is_nil() && myPoint2->_is_nil() ) + Group3Pnts3->PushButton2->click(); + } + else if ( myEditCurrentArgument == Group3Pnts3->LineEdit2 ) { + myPoint2 = aSelectedObject; + if ( !myPoint2->_is_nil() && myPoint3->_is_nil() ) + Group3Pnts3->PushButton3->click(); + } + else if ( myEditCurrentArgument == Group3Pnts3->LineEdit3 ) { + myPoint3 = aSelectedObject; + if ( !myPoint3->_is_nil() && myPoint1->_is_nil() ) + Group3Pnts3->PushButton1->click(); + } + break; } } @@ -384,6 +432,32 @@ void BasicGUI_ArcDlg::SetEditCurrentArgument() Group3Pnts2->LineEdit3->setEnabled(true); } break; + case 2: + if ( send == Group3Pnts3->PushButton1 ) { + myEditCurrentArgument = Group3Pnts3->LineEdit1; + Group3Pnts3->PushButton2->setDown(false); + Group3Pnts3->PushButton3->setDown(false); + Group3Pnts3->LineEdit1->setEnabled(true); + Group3Pnts3->LineEdit2->setEnabled(false); + Group3Pnts3->LineEdit3->setEnabled(false); + } + else if ( send == Group3Pnts3->PushButton2 ) { + myEditCurrentArgument = Group3Pnts3->LineEdit2; + Group3Pnts3->PushButton1->setDown(false); + Group3Pnts3->PushButton3->setDown(false); + Group3Pnts3->LineEdit1->setEnabled(false); + Group3Pnts3->LineEdit2->setEnabled(true); + Group3Pnts3->LineEdit3->setEnabled(false); + } + else if ( send == Group3Pnts3->PushButton3 ) { + myEditCurrentArgument = Group3Pnts3->LineEdit3; + Group3Pnts3->PushButton1->setDown(false); + Group3Pnts3->PushButton2->setDown(false); + Group3Pnts3->LineEdit1->setEnabled(false); + Group3Pnts3->LineEdit2->setEnabled(false); + Group3Pnts3->LineEdit3->setEnabled(true); + } + break; } myEditCurrentArgument->setFocus(); // SelectionIntoArgument(); @@ -400,7 +474,8 @@ void BasicGUI_ArcDlg::LineEditReturnPressed() { QLineEdit* send = (QLineEdit*)sender(); if ( send == Group3Pnts->LineEdit1 || send == Group3Pnts->LineEdit2 || send == Group3Pnts->LineEdit3 || - send == Group3Pnts2->LineEdit1 || send == Group3Pnts2->LineEdit2 || send == Group3Pnts2->LineEdit3 ) { + send == Group3Pnts2->LineEdit1 || send == Group3Pnts2->LineEdit2 || send == Group3Pnts2->LineEdit3 || + send == Group3Pnts3->LineEdit1 || send == Group3Pnts3->LineEdit2 || send == Group3Pnts3->LineEdit3 ) { myEditCurrentArgument = send; GEOMBase_Skeleton::LineEditReturnPressed(); } @@ -474,6 +549,14 @@ bool BasicGUI_ArcDlg::isValid( QString& msg ) return false; break; } + case 2: + { + if (Group3Pnts3->LineEdit1->text().trimmed().isEmpty() || + Group3Pnts3->LineEdit2->text().trimmed().isEmpty() || + Group3Pnts3->LineEdit3->text().trimmed().isEmpty()) + return false; + break; + } } return !myPoint1->_is_nil() && !myPoint2->_is_nil() && !myPoint3->_is_nil() && !isEqual( myPoint1, myPoint2 ) && !isEqual( myPoint1, myPoint3 ) && !isEqual( myPoint2, myPoint3 ); @@ -506,6 +589,14 @@ bool BasicGUI_ArcDlg::execute( ObjectList& objects ) } break; } + case 2: + { + if ( !CORBA::is_nil( myPoint1 ) && !CORBA::is_nil( myPoint2 ) && !CORBA::is_nil( myPoint3 ) ) { + anObj = GEOM::GEOM_ICurvesOperations::_narrow( getOperation() )->MakeArcOfEllipse( myPoint1, myPoint2, myPoint3 ); + res = true; + } + break; + } } if ( !anObj->_is_nil() ) { objects.push_back( anObj._retn() ); @@ -527,8 +618,9 @@ void BasicGUI_ArcDlg::ConstructorsClicked( int constructorId ) globalSelection(); // close local contexts, if any localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX ); //Select Vertex on All Shapes - Group3Pnts2->hide(); Group3Pnts->show(); + Group3Pnts2->hide(); + Group3Pnts3->hide(); Group3Pnts->PushButton1->setDown(true); Group3Pnts->PushButton2->setDown(false); Group3Pnts->PushButton3->setDown(false); @@ -550,6 +642,7 @@ void BasicGUI_ArcDlg::ConstructorsClicked( int constructorId ) Group3Pnts->hide(); Group3Pnts2->show(); + Group3Pnts3->hide(); Group3Pnts2->PushButton1->setDown(true); Group3Pnts2->PushButton2->setDown(false); Group3Pnts2->PushButton3->setDown(false); @@ -564,6 +657,28 @@ void BasicGUI_ArcDlg::ConstructorsClicked( int constructorId ) myEditCurrentArgument = Group3Pnts2->LineEdit1; break; } + case 2: + { + globalSelection(); // close local contexts, if any + localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX ); //Select Vertex on All Shapes + + Group3Pnts->hide(); + Group3Pnts2->hide(); + Group3Pnts3->show(); + Group3Pnts3->PushButton1->setDown(true); + Group3Pnts3->PushButton2->setDown(false); + Group3Pnts3->PushButton3->setDown(false); + Group3Pnts3->LineEdit1->setText( "" ); + Group3Pnts3->LineEdit2->setText( "" ); + Group3Pnts3->LineEdit3->setText( "" ); + Group3Pnts3->LineEdit1->setEnabled(true); + Group3Pnts3->LineEdit2->setEnabled(false); + Group3Pnts3->LineEdit3->setEnabled(false); + myPoint1 = myPoint2 = myPoint3 = GEOM::GEOM_Object::_nil(); + + myEditCurrentArgument = Group3Pnts3->LineEdit1; + break; + } } qApp->processEvents(); @@ -608,6 +723,11 @@ void BasicGUI_ArcDlg::addSubshapesToStudy() objMap[Group3Pnts2->LineEdit2->text()] = myPoint2; objMap[Group3Pnts2->LineEdit3->text()] = myPoint3; break; + case 2: + objMap[Group3Pnts3->LineEdit1->text()] = myPoint1; + objMap[Group3Pnts3->LineEdit2->text()] = myPoint2; + objMap[Group3Pnts3->LineEdit3->text()] = myPoint3; + break; } addSubshapesToFather( objMap ); } diff --git a/src/BasicGUI/BasicGUI_ArcDlg.h b/src/BasicGUI/BasicGUI_ArcDlg.h index 577181324..6b1b740ac 100644 --- a/src/BasicGUI/BasicGUI_ArcDlg.h +++ b/src/BasicGUI/BasicGUI_ArcDlg.h @@ -59,6 +59,7 @@ private: DlgRef_3Sel* Group3Pnts; DlgRef_3Sel1Check* Group3Pnts2; + DlgRef_3Sel* Group3Pnts3; private slots: void ClickOnOk(); diff --git a/src/GEOMGUI/GEOM_images.ts b/src/GEOMGUI/GEOM_images.ts index ddeb05af5..c3f1d2083 100644 --- a/src/GEOMGUI/GEOM_images.ts +++ b/src/GEOMGUI/GEOM_images.ts @@ -18,6 +18,10 @@ ICON_DLG_ARC_CENTER arccenter.png + + ICON_DLG_ARC_OF_ELLIPSE + arcofellipse.png + ICON_DLG_BASICPROPERTIES basicproperties.png diff --git a/src/GEOMImpl/GEOMImpl_ArcDriver.cxx b/src/GEOMImpl/GEOMImpl_ArcDriver.cxx index d08ae24cc..fa9026bf4 100644 --- a/src/GEOMImpl/GEOMImpl_ArcDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_ArcDriver.cxx @@ -36,12 +36,16 @@ #include #include +#include +#include #include #include #include #include #include +#include #include +#include #include "utilities.h" @@ -77,7 +81,7 @@ Standard_Integer GEOMImpl_ArcDriver::Execute(TFunction_Logbook& log) const Standard_Integer aType = aFunction->GetType(); TopoDS_Shape aShape; - if ((aType == CIRC_ARC_THREE_PNT) || (aType == CIRC_ARC_CENTER)) + if ((aType == CIRC_ARC_THREE_PNT) || (aType == CIRC_ARC_CENTER) || (aType == ELLIPSE_ARC_CENTER_TWO_PNT)) { Handle(GEOM_Function) aRefPoint1 = aCI.GetPoint1(); Handle(GEOM_Function) aRefPoint2 = aCI.GetPoint2(); @@ -107,9 +111,7 @@ Standard_Integer GEOMImpl_ArcDriver::Execute(TFunction_Logbook& log) const { GC_MakeArcOfCircle arc (aP1, aP2, aP3); aShape = BRepBuilderAPI_MakeEdge(arc).Edge(); - } - else // CIRC_ARC_CENTER - { + } else if ( aType == CIRC_ARC_CENTER ) { // CIRC_ARC_CENTER Standard_Boolean sense = aCI.GetSense(); Standard_Real aRad = aP1.Distance(aP2); @@ -125,9 +127,29 @@ Standard_Integer GEOMImpl_ArcDriver::Execute(TFunction_Logbook& log) const GC_MakeArcOfCircle arc (aGeomCirc->Circ(), aP2, aP3, Standard_True); aShape = BRepBuilderAPI_MakeEdge(arc).Edge(); + } else if ( aType == ELLIPSE_ARC_CENTER_TWO_PNT ) { // ELLIPSE_ARC_CENTER_TWO_PNT + if ( aP1.Distance(aP2) <= aP1.Distance(aP3) ) { + // Standard_ConstructionError::Raise("Arc creation aborted: the distance from Center Point to Point 1 needs to be bigger than the distance from Center Point to Point 2"); + cout << "aP1.Distance(aP2) <= aP1.Distance(aP3)" << endl; + gp_Pnt aTmpP = aP2; + aP2 = aP3; + aP3 = aTmpP; + } + + GC_MakeEllipse ellipse (aP2, aP3, aP1); + Handle(Geom_Ellipse) aGeomEllipse = ellipse.Value(); + + gp_Vec aV1 (aP1, aP2); + gp_Vec aV2 (aP1, aP3); + + double alpha = fabs(aV1.Angle(aV2)); + + GC_MakeArcOfEllipse arc (aGeomEllipse->Elips(), aP2, aP3, Standard_True); + aShape = BRepBuilderAPI_MakeEdge(arc).Edge(); } } - } else { + } + else { } if (aShape.IsNull()) return 0; diff --git a/src/GEOMImpl/GEOMImpl_ICurvesOperations.cxx b/src/GEOMImpl/GEOMImpl_ICurvesOperations.cxx index 3bd246817..c9507c5fa 100644 --- a/src/GEOMImpl/GEOMImpl_ICurvesOperations.cxx +++ b/src/GEOMImpl/GEOMImpl_ICurvesOperations.cxx @@ -509,6 +509,67 @@ Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakeArcCenter (Handle(GEOM_Objec return anArc; } +//============================================================================= +/*! + * MakeArcOfEllipse + */ +//============================================================================= +Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakeArcOfEllipse (Handle(GEOM_Object) thePnt1, + Handle(GEOM_Object) thePnt2, + Handle(GEOM_Object) thePnt3) +{ + SetErrorCode(KO); + + if (thePnt1.IsNull() || thePnt2.IsNull() || thePnt3.IsNull()) return NULL; + + //Add a new Circle Arc object + Handle(GEOM_Object) anArc = GetEngine()->AddObject(GetDocID(), GEOM_ELLIPSE_ARC); + + //Add a new Circle Arc function + Handle(GEOM_Function) aFunction = + anArc->AddFunction(GEOMImpl_ArcDriver::GetID(), ELLIPSE_ARC_CENTER_TWO_PNT); + + if (aFunction.IsNull()) return NULL; + + //Check if the function is set correctly + if (aFunction->GetDriverGUID() != GEOMImpl_ArcDriver::GetID()) return NULL; + GEOMImpl_IArc aCI (aFunction); + + Handle(GEOM_Function) aRefPnt1 = thePnt1->GetLastFunction(); + Handle(GEOM_Function) aRefPnt2 = thePnt2->GetLastFunction(); + Handle(GEOM_Function) aRefPnt3 = thePnt3->GetLastFunction(); + + + if (aRefPnt1.IsNull() || aRefPnt2.IsNull() || aRefPnt3.IsNull()) return NULL; + + aCI.SetPoint1(aRefPnt1); + aCI.SetPoint2(aRefPnt2); + aCI.SetPoint3(aRefPnt3); + + //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; + } + } + catch (Standard_Failure) { + Handle(Standard_Failure) aFail = Standard_Failure::Caught(); + SetErrorCode(aFail->GetMessageString()); + return NULL; + } + + //Make a Python command + GEOM::TPythonDump(aFunction) << anArc << " = geompy.MakeArcOfEllipse(" + << thePnt1 << ", " << thePnt2 << ", " << thePnt3 << ")"; + + SetErrorCode(OK); + return anArc; +} + //============================================================================= /*! * MakeSplineBezier diff --git a/src/GEOMImpl/GEOMImpl_ICurvesOperations.hxx b/src/GEOMImpl/GEOMImpl_ICurvesOperations.hxx index ed6605d0d..60a1e56b8 100644 --- a/src/GEOMImpl/GEOMImpl_ICurvesOperations.hxx +++ b/src/GEOMImpl/GEOMImpl_ICurvesOperations.hxx @@ -60,6 +60,10 @@ class GEOMImpl_ICurvesOperations : public GEOM_IOperations { Handle(GEOM_Object) thePnt3, bool theSense); + Standard_EXPORT Handle(GEOM_Object) MakeArcOfEllipse (Handle(GEOM_Object) thePnt1, + Handle(GEOM_Object) thePnt2, + Handle(GEOM_Object) thePnt3); + Standard_EXPORT Handle(GEOM_Object) MakeSplineBezier (list thePoints); Standard_EXPORT Handle(GEOM_Object) MakeSplineInterpolation (list thePoints); diff --git a/src/GEOMImpl/GEOMImpl_Types.hxx b/src/GEOMImpl/GEOMImpl_Types.hxx index 56bdc81e4..d0cc19686 100755 --- a/src/GEOMImpl/GEOMImpl_Types.hxx +++ b/src/GEOMImpl/GEOMImpl_Types.hxx @@ -85,6 +85,8 @@ #define GEOM_SHAPES_ON_SHAPE 42 +#define GEOM_ELLIPSE_ARC 43 + //GEOM_Function types @@ -213,8 +215,9 @@ #define ELLIPSE_PNT_VEC_RR 1 -#define CIRC_ARC_THREE_PNT 1 -#define CIRC_ARC_CENTER 2 +#define CIRC_ARC_THREE_PNT 1 +#define CIRC_ARC_CENTER 2 +#define ELLIPSE_ARC_CENTER_TWO_PNT 3 #define FILLET_SHAPE_ALL 1 #define FILLET_SHAPE_EDGES 2 diff --git a/src/GEOM_I/GEOM_ICurvesOperations_i.cc b/src/GEOM_I/GEOM_ICurvesOperations_i.cc index 94d8a03f5..740385c37 100644 --- a/src/GEOM_I/GEOM_ICurvesOperations_i.cc +++ b/src/GEOM_I/GEOM_ICurvesOperations_i.cc @@ -273,6 +273,43 @@ GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeArcCenter return GetObject(anObject); } + +//============================================================================= +/*! + * MakeArc + */ +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeArcOfEllipse + (GEOM::GEOM_Object_ptr thePnt1, + GEOM::GEOM_Object_ptr thePnt2, + GEOM::GEOM_Object_ptr thePnt3) +{ + GEOM::GEOM_Object_var aGEOMObject; + + //Set a not done flag + GetOperations()->SetNotDone(); + + if (thePnt1 == NULL || thePnt2 == NULL || thePnt3 == NULL) return aGEOMObject._retn(); + + //Get the reference points + Handle(GEOM_Object) aPnt1 = GetOperations()->GetEngine()->GetObject + (thePnt1->GetStudyID(), thePnt1->GetEntry()); + Handle(GEOM_Object) aPnt2 = GetOperations()->GetEngine()->GetObject + (thePnt2->GetStudyID(), thePnt2->GetEntry()); + Handle(GEOM_Object) aPnt3 = GetOperations()->GetEngine()->GetObject + (thePnt3->GetStudyID(), thePnt3->GetEntry()); + + if (aPnt1.IsNull() || aPnt2.IsNull() || aPnt3.IsNull()) return aGEOMObject._retn(); + + // Make Arc + Handle(GEOM_Object) anObject = + GetOperations()->MakeArcOfEllipse(aPnt1, aPnt2, aPnt3); + if (!GetOperations()->IsDone() || anObject.IsNull()) + return aGEOMObject._retn(); + + return GetObject(anObject); +} + //============================================================================= /*! * MakePolyline diff --git a/src/GEOM_I/GEOM_ICurvesOperations_i.hh b/src/GEOM_I/GEOM_ICurvesOperations_i.hh index d341c4575..e719bf74d 100644 --- a/src/GEOM_I/GEOM_ICurvesOperations_i.hh +++ b/src/GEOM_I/GEOM_ICurvesOperations_i.hh @@ -64,6 +64,10 @@ class GEOM_I_EXPORT GEOM_ICurvesOperations_i : GEOM::GEOM_Object_ptr thePnt2, GEOM::GEOM_Object_ptr thePnt3, bool theSense); + + GEOM::GEOM_Object_ptr MakeArcOfEllipse (GEOM::GEOM_Object_ptr thePnt1, + GEOM::GEOM_Object_ptr thePnt2, + GEOM::GEOM_Object_ptr thePnt3); GEOM::GEOM_Object_ptr MakePolyline (const GEOM::ListOfGO& thePoints); diff --git a/src/GEOM_I_Superv/GEOM_Superv_i.cc b/src/GEOM_I_Superv/GEOM_Superv_i.cc index 910c380bd..7f4641c65 100644 --- a/src/GEOM_I_Superv/GEOM_Superv_i.cc +++ b/src/GEOM_I_Superv/GEOM_Superv_i.cc @@ -2545,6 +2545,21 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArcCenter (GEOM::GEOM_Object_ptr theCen return anObj; } +//============================================================================= +// MakeArcOfEllipse: +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArcOfEllipse (GEOM::GEOM_Object_ptr thePnt1, + GEOM::GEOM_Object_ptr thePnt2, + GEOM::GEOM_Object_ptr thePnt3) +{ + beginService( " GEOM_Superv_i::MakeArcOfEllipse" ); + MESSAGE("GEOM_Superv_i::MakeArcOfEllipse"); + getCurvesOp(); + GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeArcOfEllipse(thePnt1, thePnt2, thePnt3); + endService( " GEOM_Superv_i::MakeArcOfEllipse" ); + return anObj; +} + //============================================================================= // MakePolyline: //============================================================================= diff --git a/src/GEOM_I_Superv/GEOM_Superv_i.hh b/src/GEOM_I_Superv/GEOM_Superv_i.hh index e35bf641b..b081ff798 100644 --- a/src/GEOM_I_Superv/GEOM_Superv_i.hh +++ b/src/GEOM_I_Superv/GEOM_Superv_i.hh @@ -557,6 +557,9 @@ public: GEOM::GEOM_Object_ptr thePnt1, GEOM::GEOM_Object_ptr thePnt2, CORBA::Boolean theSense); + GEOM::GEOM_Object_ptr MakeArcOfEllipse (GEOM::GEOM_Object_ptr thePnt1, + GEOM::GEOM_Object_ptr thePnt2, + GEOM::GEOM_Object_ptr thePnt3); GEOM::GEOM_Object_ptr MakePolyline (GEOM::GEOM_List_ptr thePoints); GEOM::GEOM_Object_ptr MakeSplineBezier (GEOM::GEOM_List_ptr thePoints); GEOM::GEOM_Object_ptr MakeSplineInterpolation (GEOM::GEOM_List_ptr thePoints); diff --git a/src/GEOM_SWIG/GEOM_TestAll.py b/src/GEOM_SWIG/GEOM_TestAll.py index ca727edcb..d9a607048 100644 --- a/src/GEOM_SWIG/GEOM_TestAll.py +++ b/src/GEOM_SWIG/GEOM_TestAll.py @@ -92,6 +92,7 @@ def TestAll (geompy, math): Arc = geompy.MakeArc(py, pz, px) #(3 GEOM_Object_ptr)->GEOM_Object_ptr Arc2 = geompy.MakeArcCenter(py, pz, px,0) #(3 GEOM_Object_ptr,Boolean)->GEOM_Object_ptr + Arc3 = geompy.MakeArcOfEllipse(p0, px, pz) #(3 GEOM_Object_ptr,Boolean)->GEOM_Object_ptr Circle = geompy.MakeCircle(p0, vz, radius1) #(2 GEOM_Object_ptr, Double)->GEOM_Object_ptr Circle1 = geompy.MakeCircleThreePnt(p0, pxyz, px) #(3 GEOM_Object_ptr)->GEOM_Object_ptr Circle2 = geompy.MakeCircleCenter2Pnt(p0, pxyz, py) #(3 GEOM_Object_ptr)->GEOM_Object_ptr @@ -292,6 +293,8 @@ def TestAll (geompy, math): id_Plane1 = geompy.addToStudy(Plane1, "Plane by 3 points") id_Arc = geompy.addToStudy(Arc, "Arc") + id_Arc2 = geompy.addToStudy(Arc2, "Arc2") + id_Arc3 = geompy.addToStudy(Arc3, "Arc3") id_Circle = geompy.addToStudy(Circle, "Circle") id_Circle1 = geompy.addToStudy(Circle1, "Circle by 3 points") id_Circle2 = geompy.addToStudy(Circle2, "Circle by center and 2 points") diff --git a/src/GEOM_SWIG/geompyDC.py b/src/GEOM_SWIG/geompyDC.py index d3477a9a3..17baee494 100644 --- a/src/GEOM_SWIG/geompyDC.py +++ b/src/GEOM_SWIG/geompyDC.py @@ -492,6 +492,19 @@ class geompyDC(GEOM._objref_GEOM_Gen): anObj = self.CurvesOp.MakeArcCenter(thePnt1, thePnt2, thePnt3, theSense) RaiseIfFailed("MakeArcCenter", self.CurvesOp) return anObj + + ## Create an arc of ellipse, of center and two points. + # @param theCenter Center of the arc. + # @param thePnt1 defines major radius of the arc by distance from Pnt1 to Pnt2. + # @param thePnt2 defines plane of ellipse and minor radius as distance from Pnt3 to line from Pnt1 to Pnt2. + # @return New GEOM_Object, containing the created arc. + # + # @ref swig_MakeArc "Example" + def MakeArcOfEllipse(self,theCenter, thePnt1, thePnt2): + # Example: see GEOM_TestAll.py + anObj = self.CurvesOp.MakeArcOfEllipse(theCenter, thePnt1, thePnt2) + RaiseIfFailed("MakeArcOfEllipse", self.CurvesOp) + return anObj ## Create a circle with given center, normal vector and radius. # @param thePnt Circle center. -- 2.39.2