To create an \b Ellipse in the <b>Main Menu</b> select <b>New Entity - > Basic - > Ellipse</b>
-\n You can define an \b Ellipse by its <b>Center Point</b>, a \b
-Vector giving its normal, and its <b>Major & Minor Radiuses</b>.
+\n You can define an \b Ellipse by its <b>Center</b> point, a \b
+Vector giving its normal, another vector specifying the direction of
+ellipse's <b>Major Axis</b> (optionally) and its <b>Major</b> & <b>Minor Radiuses</b>.
\n The \b Result of the operation will be a GEOM_Object (edge).
-\n <b>TUI Command:</b> <em>geompy.MakeEllipse(Point, Vector, RadiusMajor, RadiusMinor)</em>
+\note The parameter <b>Major Axis</b> is optional. It is calculated
+automatically basing on the direction of the normal vector (by default
+it corresponds to the OX axis of the global coordinate system).
+
+\note Actual direction of the major axis vector is defined as
+<EM> Vmaj' = (Vn * Vmaj) * Vn</em> where \em Vn is a normal vector and
+\em Vmaj is an original vector of the major axis.
+
+\n <b>TUI Command (no major axis):</b> <em>geompy.MakeEllipse(Point, Vector, RadiusMajor, RadiusMinor)</em>
\n <b>Arguments:</b> Name + 1 vertex (for the center) + 1 edge (for
the direction) + 1 X Radius + 1 Y Radius.
+\n <b>TUI Command (use major axis):</b> <em>geompy.MakeEllipseVec(Point, Vector, RadiusMajor, RadiusMinor, VectorMajor)</em>
+\n <b>Arguments:</b> Name + 1 vertex (for the center) + 1 edge (for
+the normal direction) + 1 X Radius + 1 Y Radius + 1 edge (for the
+major axis direction)
+
\image html ellipse.png
<b>Example:</b>
Our <b>TUI Scripts</b> provide you with useful examples of creation of
\ref tui_creation_ellipse "Basic Geometric Objects".
-*/
\ No newline at end of file
+*/
# create vertices
p0 = geompy.MakeVertex(0., 0., 0.)
-p50 = geompy.MakeVertex(50., 50., 50.)
+p1 = geompy.MakeVertex(50., 50., 50.)
+p2 = geompy.MakeVertex(0., 50., 0.)
-# create a vector from two points
-vector = geompy.MakeVector(p0, p50)
+# create a normal vector from two points
+normal = geompy.MakeVector(p0, p1)
+
+# create a major axis vector from two points
+major = geompy.MakeVector(p0, p2)
# create an ellipse from a point, a vector and radiuses
-ellipse = geompy.MakeEllipse(p50, vector, 50, 25)
+ellipse1 = geompy.MakeEllipse(p1, normal, 50, 25)
+
+# create an ellipse from a point, a normal vector, radiuses and a major axis vector
+ellipse2 = geompy.MakeEllipse(p1, normal, 50, 25, major)
# add objects in the study
-id_vector = geompy.addToStudy(vector, "Vector")
-id_ellipse = geompy.addToStudy(ellipse,"Ellipse")
+id_normal = geompy.addToStudy(normal, "Normal")
+id_major = geompy.addToStudy(major, "Major Axis")
+id_ellipse1 = geompy.addToStudy(ellipse1, "Ellipse 1")
+id_ellipse2 = geompy.addToStudy(ellipse2, "Ellipse 2")
# display the ellipse and its normal vector
-gg.createAndDisplayGO(id_vector)
-gg.createAndDisplayGO(id_ellipse)
+gg.createAndDisplayGO(id_normal)
+gg.createAndDisplayGO(id_major)
+gg.createAndDisplayGO(id_ellipse1)
+gg.createAndDisplayGO(id_ellipse2)
\endcode
\anchor tui_creation_curve
gg.setTransparency(id_plane3,0.5)
\endcode
-*/
\ No newline at end of file
+*/
in double theRMajor,
in double theRMinor);
+ /*!
+ * Create an ellipse with given center, normal vector, main axis vector and radiuses.
+ * \param thePnt Ellipse center.
+ * \param theVec Vector, normal to the plane of the ellipse.
+ * \param theRMajor Major ellipse radius.
+ * \param theRMinor Minor ellipse radius.
+ * \param theVecMaj Vector, direction of the ellipse's main axis.
+ * \return New GEOM_Object, containing the created ellipse.
+ */
+ GEOM_Object MakeEllipseVec (in GEOM_Object thePnt,
+ in GEOM_Object theVec,
+ in double theRMajor,
+ in double theRMinor,
+ in GEOM_Object theVecMaj);
+
/*!
* Create an arc of circle, passing through three given points.
* \param thePnt1 Start point of the arc.
in GEOM_Object theVec,
in double theRMajor,
in double theRMinor) ;
+ GEOM_Object MakeEllipseVec (in GEOM_Object thePnt,
+ in GEOM_Object theVec,
+ in double theRMajor,
+ in double theRMinor,
+ in GEOM_Object theVecMaj) ;
GEOM_Object MakeArc (in GEOM_Object thePnt1,
in GEOM_Object thePnt2,
in GEOM_Object thePnt3) ;
RadioButton2->close(TRUE);
RadioButton3->close(TRUE);
- GroupPoints = new DlgRef_2Sel2Spin(this, "GroupPoints");
+ GroupPoints = new DlgRef_3Sel2Spin(this, "GroupPoints");
GroupPoints->GroupBox1->setTitle(tr("GEOM_ARGUMENTS"));
GroupPoints->TextLabel1->setText(tr("GEOM_CENTER"));
GroupPoints->TextLabel2->setText(tr("GEOM_VECTOR"));
- GroupPoints->TextLabel3->setText(tr("GEOM_RADIUS_MAJOR"));
- GroupPoints->TextLabel4->setText(tr("GEOM_RADIUS_MINOR"));
+ GroupPoints->TextLabel3->setText(tr("%1 (%2)").arg(tr("GEOM_VECTOR_MAJOR")).arg(tr("GEOM_OPTIONAL")));
+ GroupPoints->TextLabel4->setText(tr("GEOM_RADIUS_MAJOR"));
+ GroupPoints->TextLabel5->setText(tr("GEOM_RADIUS_MINOR"));
GroupPoints->PushButton1->setPixmap(image1);
GroupPoints->PushButton2->setPixmap(image1);
+ GroupPoints->PushButton3->setPixmap(image1);
GroupPoints->LineEdit1->setReadOnly( true );
GroupPoints->LineEdit2->setReadOnly( true );
+ GroupPoints->LineEdit3->setReadOnly( true );
Layout1->addWidget(GroupPoints, 2, 0);
/***************************************************************/
globalSelection(); // close local contexts, if any
localSelection(GEOM::GEOM_Object::_nil(), TopAbs_VERTEX);
- myPoint = myDir = GEOM::GEOM_Object::_nil();
+ myPoint = myDir = myMajor = GEOM::GEOM_Object::_nil();
/* Get setting of step value from file configuration */
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
connect(GroupPoints->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
+ connect(GroupPoints->PushButton3, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
connect(GroupPoints->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
+ connect(GroupPoints->LineEdit3, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
connect(GroupPoints->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
connect(GroupPoints->SpinBox_DY, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
initName();
// reset
- myPoint = myDir = GEOM::GEOM_Object::_nil();
+ myPoint = myDir = myMajor = GEOM::GEOM_Object::_nil();
GroupPoints->LineEdit1->setText( "" );
GroupPoints->LineEdit2->setText( "" );
+ GroupPoints->LineEdit3->setText( "" );
myEditCurrentArgument = GroupPoints->LineEdit1;
//globalSelection(GEOM_POINT);
globalSelection(); // close local contexts, if any
{
if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myPoint = GEOM::GEOM_Object::_nil();
else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) myDir = GEOM::GEOM_Object::_nil();
+ else if ( myEditCurrentArgument == GroupPoints->LineEdit3 ) myMajor = GEOM::GEOM_Object::_nil();
return;
}
if (GEOMBase::GetShape(aSelectedObject, aShape, TopAbs_SHAPE) && !aShape.IsNull())
{
TopAbs_ShapeEnum aNeedType = TopAbs_VERTEX;
- if (myEditCurrentArgument == GroupPoints->LineEdit2)
+ if (myEditCurrentArgument == GroupPoints->LineEdit2 || myEditCurrentArgument == GroupPoints->LineEdit3)
aNeedType = TopAbs_EDGE;
LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myPoint = aSelectedObject;
else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) myDir = aSelectedObject;
+ else if ( myEditCurrentArgument == GroupPoints->LineEdit3 ) myMajor = aSelectedObject;
}
displayPreview();
if ( send == GroupPoints->PushButton1 ) myEditCurrentArgument = GroupPoints->LineEdit1;
else if ( send == GroupPoints->PushButton2 ) myEditCurrentArgument = GroupPoints->LineEdit2;
+ else if ( send == GroupPoints->PushButton3 ) myEditCurrentArgument = GroupPoints->LineEdit3;
myEditCurrentArgument->setFocus();
globalSelection(); // close local contexts, if any
- if ( myEditCurrentArgument == GroupPoints->LineEdit2 )
+ if ( myEditCurrentArgument == GroupPoints->LineEdit2 || myEditCurrentArgument == GroupPoints->LineEdit3 )
localSelection(GEOM::GEOM_Object::_nil(), TopAbs_EDGE);
else
localSelection(GEOM::GEOM_Object::_nil(), TopAbs_VERTEX);
{
QLineEdit* send = (QLineEdit*)sender();
if ( send == GroupPoints->LineEdit1 ||
- send == GroupPoints->LineEdit2 )
+ send == GroupPoints->LineEdit2 ||
+ send == GroupPoints->LineEdit3 )
{
myEditCurrentArgument = send;
GEOMBase_Skeleton::LineEditReturnPressed();
GroupPoints->LineEdit1->setText( "" );
GroupPoints->LineEdit2->setText( "" );
+ GroupPoints->LineEdit3->setText( "" );
myPoint = myDir = GEOM::GEOM_Object::_nil();
//globalSelection( GEOM_POINT );
{
double aMajorR = GroupPoints->SpinBox_DX->GetValue();
double aMinorR = GroupPoints->SpinBox_DY->GetValue();
- GEOM::GEOM_Object_var anObj = GEOM::GEOM_ICurvesOperations::_narrow( getOperation() )->MakeEllipse( myPoint, myDir, aMajorR, aMinorR );
+
+ GEOM::GEOM_Object_var anObj = myMajor->_is_nil() ?
+ GEOM::GEOM_ICurvesOperations::_narrow( getOperation() )->MakeEllipse ( myPoint, myDir, aMajorR, aMinorR ) :
+ GEOM::GEOM_ICurvesOperations::_narrow( getOperation() )->MakeEllipseVec( myPoint, myDir, aMajorR, aMinorR, myMajor );
if ( !anObj->_is_nil() )
objects.push_back( anObj._retn() );
objMap[GroupPoints->LineEdit1->text()] = myPoint;
objMap[GroupPoints->LineEdit2->text()] = myDir;
+ if (!CORBA::is_nil(myMajor))
+ objMap[GroupPoints->LineEdit3->text()] = myMajor;
addSubshapesToFather( objMap );
}
#include "GEOM_BasicGUI.hxx"
#include "GEOMBase_Skeleton.h"
-#include "DlgRef_2Sel2Spin.h"
+#include "DlgRef_3Sel2Spin.h"
#include "BasicGUI.h"
void Init();
void enterEvent(QEvent* e);
- GEOM::GEOM_Object_var myPoint, myDir;
+ GEOM::GEOM_Object_var myPoint, myDir, myMajor;
- DlgRef_2Sel2Spin* GroupPoints;
+ DlgRef_3Sel2Spin* GroupPoints;
private slots:
void ClickOnOk();
--- /dev/null
+// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// GEOM GEOMGUI : GUI for Geometry component
+// File : DlgRef_3Sel2Spin.cxx
+// Author : Damien COQUERET
+// Module : GEOM
+// $Header:
+//
+#include "DlgRef_3Sel2Spin.h"
+
+#include <qlayout.h>
+#include <qspinbox.h>
+#include <qgroupbox.h>
+
+/*
+ * Constructs a DlgRef_3Sel1Spin which is a child of 'parent', with the
+ * name 'name' and widget flags set to 'f'
+ */
+DlgRef_3Sel2Spin::DlgRef_3Sel2Spin(QWidget* parent, const char* name, WFlags fl)
+ :DlgRef_3Sel2Spin_QTD(parent, name, fl)
+{
+ SpinBox1->close(TRUE);
+ SpinBox2->close(TRUE);
+ SpinBox_DX = new DlgRef_SpinBox(GroupBox1, "SpinBox_DX");
+ Layout2->addWidget(SpinBox_DX, 0, 1);
+ SpinBox_DY = new DlgRef_SpinBox(GroupBox1, "SpinBox_DY");
+ Layout2->addWidget(SpinBox_DY, 1, 1);
+}
+
+
+/*
+ * Destroys the object and frees any allocated resources
+ */
+DlgRef_3Sel2Spin::~DlgRef_3Sel2Spin()
+{
+ // no need to delete child widgets, Qt does it all for us
+}
--- /dev/null
+// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// GEOM GEOMGUI : GUI for Geometry component
+// File : DlgRef_3Sel2Spin.h
+// Author : Damien COQUERET
+// Module : GEOM
+// $Header:
+//
+#ifndef DLGREF_3SEL2SPIN_H
+#define DLGREF_3SEL2SPIN_H
+
+#include "GEOM_DlgRef.hxx"
+
+#include "DlgRef_3Sel2Spin_QTD.h"
+#include "DlgRef_SpinBox.h"
+
+class GEOM_DLGREF_EXPORT DlgRef_3Sel2Spin : public DlgRef_3Sel2Spin_QTD
+{
+ Q_OBJECT
+
+public:
+ DlgRef_3Sel2Spin(QWidget* parent = 0, const char* name = 0, WFlags fl = 0);
+ ~DlgRef_3Sel2Spin();
+
+ DlgRef_SpinBox* SpinBox_DX;
+ DlgRef_SpinBox* SpinBox_DY;
+
+};
+
+#endif // DLGREF_3SEL2SPIN_H
--- /dev/null
+/****************************************************************************
+** Form implementation generated from reading ui file 'DlgRef_3Sel2Spin_QTD.ui'
+**
+** Created: Mon Apr 13 11:59:12 2009
+** by: The User Interface Compiler ($Id$)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "DlgRef_3Sel2Spin_QTD.h"
+
+#include <qvariant.h>
+#include <qpushbutton.h>
+#include <qgroupbox.h>
+#include <qlineedit.h>
+#include <qlabel.h>
+#include <qspinbox.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+
+/*
+ * Constructs a DlgRef_3Sel2Spin_QTD as a child of 'parent', with the
+ * name 'name' and widget flags set to 'f'.
+ */
+DlgRef_3Sel2Spin_QTD::DlgRef_3Sel2Spin_QTD( QWidget* parent, const char* name, WFlags fl )
+ : QWidget( parent, name, fl )
+{
+ if ( !name )
+ setName( "DlgRef_3Sel2Spin_QTD" );
+ DlgRef_3Sel2Spin_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_3Sel2Spin_QTDLayout");
+
+ GroupBox1 = new QGroupBox( this, "GroupBox1" );
+ GroupBox1->setColumnLayout(0, Qt::Vertical );
+ GroupBox1->layout()->setSpacing( 6 );
+ GroupBox1->layout()->setMargin( 11 );
+ GroupBox1Layout = new QGridLayout( GroupBox1->layout() );
+ GroupBox1Layout->setAlignment( Qt::AlignTop );
+
+ LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" );
+
+ GroupBox1Layout->addWidget( LineEdit1, 0, 2 );
+
+ TextLabel1 = new QLabel( GroupBox1, "TextLabel1" );
+ TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) );
+
+ GroupBox1Layout->addWidget( TextLabel1, 0, 0 );
+
+ PushButton1 = new QPushButton( GroupBox1, "PushButton1" );
+ PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) );
+
+ GroupBox1Layout->addWidget( PushButton1, 0, 1 );
+
+ TextLabel2 = new QLabel( GroupBox1, "TextLabel2" );
+ TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) );
+
+ GroupBox1Layout->addWidget( TextLabel2, 1, 0 );
+
+ LineEdit2 = new QLineEdit( GroupBox1, "LineEdit2" );
+
+ GroupBox1Layout->addWidget( LineEdit2, 1, 2 );
+
+ PushButton2 = new QPushButton( GroupBox1, "PushButton2" );
+ PushButton2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton2->sizePolicy().hasHeightForWidth() ) );
+
+ GroupBox1Layout->addWidget( PushButton2, 1, 1 );
+
+ TextLabel3 = new QLabel( GroupBox1, "TextLabel3" );
+ TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) );
+
+ GroupBox1Layout->addWidget( TextLabel3, 2, 0 );
+
+ PushButton3 = new QPushButton( GroupBox1, "PushButton3" );
+ PushButton3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton3->sizePolicy().hasHeightForWidth() ) );
+
+ GroupBox1Layout->addWidget( PushButton3, 2, 1 );
+
+ LineEdit3 = new QLineEdit( GroupBox1, "LineEdit3" );
+
+ GroupBox1Layout->addWidget( LineEdit3, 2, 2 );
+
+ Layout2 = new QGridLayout( 0, 1, 1, 0, 6, "Layout2");
+
+ SpinBox2 = new QSpinBox( GroupBox1, "SpinBox2" );
+ SpinBox2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox2->sizePolicy().hasHeightForWidth() ) );
+
+ Layout2->addWidget( SpinBox2, 1, 1 );
+
+ TextLabel5 = new QLabel( GroupBox1, "TextLabel5" );
+ TextLabel5->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel5->sizePolicy().hasHeightForWidth() ) );
+
+ Layout2->addWidget( TextLabel5, 1, 0 );
+
+ TextLabel4 = new QLabel( GroupBox1, "TextLabel4" );
+ TextLabel4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel4->sizePolicy().hasHeightForWidth() ) );
+
+ Layout2->addWidget( TextLabel4, 0, 0 );
+
+ SpinBox1 = new QSpinBox( GroupBox1, "SpinBox1" );
+ SpinBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox1->sizePolicy().hasHeightForWidth() ) );
+
+ Layout2->addWidget( SpinBox1, 0, 1 );
+
+ GroupBox1Layout->addMultiCellLayout( Layout2, 3, 3, 0, 2 );
+ Spacer5 = new QSpacerItem( 16, 16, QSizePolicy::Minimum, QSizePolicy::Expanding );
+ GroupBox1Layout->addItem( Spacer5, 4, 1 );
+
+ DlgRef_3Sel2Spin_QTDLayout->addWidget( GroupBox1, 0, 0 );
+ languageChange();
+ resize( QSize(124, 201).expandedTo(minimumSizeHint()) );
+ clearWState( WState_Polished );
+
+ // tab order
+ setTabOrder( PushButton1, LineEdit1 );
+ setTabOrder( LineEdit1, PushButton2 );
+ setTabOrder( PushButton2, LineEdit2 );
+ setTabOrder( LineEdit2, PushButton3 );
+ setTabOrder( PushButton3, LineEdit3 );
+ setTabOrder( LineEdit3, SpinBox1 );
+ setTabOrder( SpinBox1, SpinBox2 );
+}
+
+/*
+ * Destroys the object and frees any allocated resources
+ */
+DlgRef_3Sel2Spin_QTD::~DlgRef_3Sel2Spin_QTD()
+{
+ // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ * Sets the strings of the subwidgets using the current
+ * language.
+ */
+void DlgRef_3Sel2Spin_QTD::languageChange()
+{
+ setCaption( tr( "DlgRef_2Sel2Spin_QTD" ) );
+ GroupBox1->setTitle( QString::null );
+ TextLabel1->setText( tr( "TL1" ) );
+ PushButton1->setText( QString::null );
+ TextLabel2->setText( tr( "TL2" ) );
+ PushButton2->setText( QString::null );
+ TextLabel3->setText( tr( "TL3" ) );
+ PushButton3->setText( QString::null );
+ TextLabel5->setText( tr( "TL5" ) );
+ TextLabel4->setText( tr( "TL4" ) );
+}
+
--- /dev/null
+/****************************************************************************
+** Form interface generated from reading ui file 'DlgRef_3Sel2Spin_QTD.ui'
+**
+** Created: Mon Apr 13 11:59:11 2009
+** by: The User Interface Compiler ($Id$)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef DLGREF_3SEL2SPIN_QTD_H
+#define DLGREF_3SEL2SPIN_QTD_H
+
+#include <qvariant.h>
+#include <qwidget.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class QGroupBox;
+class QLineEdit;
+class QLabel;
+class QPushButton;
+class QSpinBox;
+
+class DlgRef_3Sel2Spin_QTD : public QWidget
+{
+ Q_OBJECT
+
+public:
+ DlgRef_3Sel2Spin_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+ ~DlgRef_3Sel2Spin_QTD();
+
+ QGroupBox* GroupBox1;
+ QLineEdit* LineEdit1;
+ QLabel* TextLabel1;
+ QPushButton* PushButton1;
+ QLabel* TextLabel2;
+ QLineEdit* LineEdit2;
+ QPushButton* PushButton2;
+ QLabel* TextLabel3;
+ QPushButton* PushButton3;
+ QLineEdit* LineEdit3;
+ QSpinBox* SpinBox2;
+ QLabel* TextLabel5;
+ QLabel* TextLabel4;
+ QSpinBox* SpinBox1;
+
+protected:
+ QGridLayout* DlgRef_3Sel2Spin_QTDLayout;
+ QGridLayout* GroupBox1Layout;
+ QSpacerItem* Spacer5;
+ QGridLayout* Layout2;
+
+protected slots:
+ virtual void languageChange();
+
+};
+
+#endif // DLGREF_3SEL2SPIN_QTD_H
DlgRef_2Sel1Spin_QTD.cxx \
DlgRef_2Sel2Spin_QTD.cxx \
DlgRef_2Sel3Spin_QTD.cxx \
+ DlgRef_3Sel2Spin_QTD.cxx \
DlgRef_1Sel1Spin1Check_QTD.cxx \
DlgRef_2Sel1Spin2Check_QTD.cxx \
DlgRef_2Sel2Spin1Check_QTD.cxx \
DlgRef_2Sel1Spin.cxx \
DlgRef_2Sel2Spin.cxx \
DlgRef_2Sel3Spin.cxx \
+ DlgRef_3Sel2Spin.cxx \
DlgRef_1Sel1Spin1Check.cxx \
DlgRef_2Sel1Spin2Check.cxx \
DlgRef_2Sel2Spin1Check.cxx \
DlgRef_2Sel1Spin_QTD_moc.cxx \
DlgRef_2Sel2Spin_QTD_moc.cxx \
DlgRef_2Sel3Spin_QTD_moc.cxx \
+ DlgRef_3Sel2Spin_QTD_moc.cxx \
DlgRef_2Sel3Spin2Rb_QTD_moc.cxx \
DlgRef_2Sel3Spin2Rb_moc.cxx \
DlgRef_1Sel1Spin1Check_QTD_moc.cxx \
DlgRef_2Sel1Spin_moc.cxx \
DlgRef_2Sel2Spin_moc.cxx \
DlgRef_2Sel3Spin_moc.cxx \
+ DlgRef_3Sel2Spin_moc.cxx \
DlgRef_1Sel1Spin1Check_moc.cxx \
DlgRef_2Sel1Spin2Check_moc.cxx \
DlgRef_2Sel2Spin1Check_moc.cxx \
DlgRef_2Sel1Spin_QTD.h \
DlgRef_2Sel2Spin_QTD.h \
DlgRef_2Sel3Spin_QTD.h \
+ DlgRef_3Sel2Spin_QTD.h \
DlgRef_1Sel1Spin1Check_QTD.h \
DlgRef_2Sel1Spin2Check_QTD.h \
DlgRef_2Sel2Spin1Check_QTD.h \
DlgRef_2Sel1Spin.h \
DlgRef_2Sel2Spin.h \
DlgRef_2Sel3Spin.h \
+ DlgRef_3Sel2Spin.h \
DlgRef_1Sel1Spin1Check.h \
DlgRef_2Sel1Spin2Check.h \
DlgRef_2Sel2Spin1Check.h \
--- /dev/null
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>DlgRef_3Sel2Spin_QTD</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>DlgRef_3Sel2Spin_QTD</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>124</width>
+ <height>201</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>DlgRef_2Sel2Spin_QTD</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QGroupBox" row="0" column="0">
+ <property name="name">
+ <cstring>GroupBox1</cstring>
+ </property>
+ <property name="title">
+ <string></string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLineEdit" row="0" column="2">
+ <property name="name">
+ <cstring>LineEdit1</cstring>
+ </property>
+ </widget>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>TextLabel1</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>TL1</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" row="0" column="1">
+ <property name="name">
+ <cstring>PushButton1</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="1" column="0">
+ <property name="name">
+ <cstring>TextLabel2</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>TL2</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" row="1" column="2">
+ <property name="name">
+ <cstring>LineEdit2</cstring>
+ </property>
+ </widget>
+ <widget class="QPushButton" row="1" column="1">
+ <property name="name">
+ <cstring>PushButton2</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="2" column="0">
+ <property name="name">
+ <cstring>TextLabel3</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>TL3</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" row="2" column="1">
+ <property name="name">
+ <cstring>PushButton3</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" row="2" column="2">
+ <property name="name">
+ <cstring>LineEdit3</cstring>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget" row="3" column="0" rowspan="1" colspan="3">
+ <property name="name">
+ <cstring>Layout2</cstring>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QSpinBox" row="1" column="1">
+ <property name="name">
+ <cstring>SpinBox2</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="QLabel" row="1" column="0">
+ <property name="name">
+ <cstring>TextLabel5</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>TL5</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>TextLabel4</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>TL4</string>
+ </property>
+ </widget>
+ <widget class="QSpinBox" row="0" column="1">
+ <property name="name">
+ <cstring>SpinBox1</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <spacer row="4" column="1">
+ <property name="name">
+ <cstring>Spacer5</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>16</width>
+ <height>16</height>
+ </size>
+ </property>
+ </spacer>
+ </grid>
+ </widget>
+ </grid>
+</widget>
+<tabstops>
+ <tabstop>PushButton1</tabstop>
+ <tabstop>LineEdit1</tabstop>
+ <tabstop>PushButton2</tabstop>
+ <tabstop>LineEdit2</tabstop>
+ <tabstop>PushButton3</tabstop>
+ <tabstop>LineEdit3</tabstop>
+ <tabstop>SpinBox1</tabstop>
+ <tabstop>SpinBox2</tabstop>
+</tabstops>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
#uic -o DlgRef_3Sel1Check_QTD.h DlgRef_3Sel3Spin2Check_QTD.ui
#uic -o DlgRef_3Sel1Check_QTD.cxx -impl DlgRef_3Sel1Check_QTD.h DlgRef_3Sel1Check_QTD.ui>>>>>>> 1.6.2.3
-uic -o DlgRef_3Sel3Spin2Check_QTD.h DlgRef_3Sel3Spin2Check_QTD.ui
-uic -o DlgRef_3Sel3Spin2Check_QTD.cxx -impl DlgRef_3Sel3Spin2Check_QTD.h DlgRef_3Sel3Spin2Check_QTD.ui
\ No newline at end of file
+#uic -o DlgRef_3Sel3Spin2Check_QTD.h DlgRef_3Sel3Spin2Check_QTD.ui
+#uic -o DlgRef_3Sel3Spin2Check_QTD.cxx -impl DlgRef_3Sel3Spin2Check_QTD.h DlgRef_3Sel3Spin2Check_QTD.ui
+
+uic -o DlgRef_3Sel2Spin_QTD.h DlgRef_3Sel2Spin_QTD.ui
+uic -o DlgRef_3Sel2Spin_QTD.cxx -impl DlgRef_3Sel2Spin_QTD.h DlgRef_3Sel2Spin_QTD.ui
msgid "GEOM_RADIUS_MINOR"
msgstr "Minor radius :"
+#Major axis
+msgid "GEOM_VECTOR_MAJOR"
+msgstr "Major Axis"
+
+#Optional tag
+msgid "GEOM_OPTIONAL"
+msgstr "optional"
+
#Compound
msgid "GEOM_COMPOUND"
msgstr "Compound"
TopoDS_Shape aShape;
if (aType == ELLIPSE_PNT_VEC_RR) {
+ // Center
Handle(GEOM_Function) aRefPoint = aCI.GetCenter();
- Handle(GEOM_Function) aRefVector = aCI.GetVector();
TopoDS_Shape aShapePnt = aRefPoint->GetValue();
+ if (aShapePnt.ShapeType() != TopAbs_VERTEX) {
+ Standard_ConstructionError::Raise
+ ("Ellipse creation aborted: invalid center argument, must be a point");
+ }
+ gp_Pnt aP = BRep_Tool::Pnt(TopoDS::Vertex(aShapePnt));
+ // Normal
+ Handle(GEOM_Function) aRefVector = aCI.GetVector();
TopoDS_Shape aShapeVec = aRefVector->GetValue();
- if (aShapePnt.ShapeType() == TopAbs_VERTEX &&
- aShapeVec.ShapeType() == TopAbs_EDGE) {
- gp_Pnt aP = BRep_Tool::Pnt(TopoDS::Vertex(aShapePnt));
+ if (aShapeVec.ShapeType() != TopAbs_EDGE) {
+ Standard_ConstructionError::Raise
+ ("Ellipse creation aborted: invalid normal vector argument, must be a vector or an edge");
+ }
+ TopoDS_Edge anE = TopoDS::Edge(aShapeVec);
+ TopoDS_Vertex V1, V2;
+ TopExp::Vertices(anE, V1, V2, Standard_True);
+ if (V1.IsNull() || V2.IsNull()) {
+ Standard_ConstructionError::Raise
+ ("Ellipse creation aborted: invalid normal vector argument: cannot retrieve vertices");
+ }
+ gp_Vec aV (BRep_Tool::Pnt(V1), BRep_Tool::Pnt(V2));
+ if (aV.Magnitude() < gp::Resolution()) {
+ Standard_ConstructionError::Raise
+ ("Ellipse creation aborted: normal vector of zero length is given");
+ }
+
+ // Axes
+ gp_Ax2 anAxes (aP, aV);
+
+ // Main Axis vector (optional)
+ Handle(GEOM_Function) aRefVectorMaj = aCI.GetVectorMajor();
+ if (!aRefVectorMaj.IsNull()) {
+ TopoDS_Shape aShapeVec = aRefVectorMaj->GetValue();
+ if (aShapeVec.ShapeType() != TopAbs_EDGE) {
+ Standard_ConstructionError::Raise
+ ("Ellipse creation aborted: invalid major axis vector argument, must be a vector or an edge");
+ }
TopoDS_Edge anE = TopoDS::Edge(aShapeVec);
TopoDS_Vertex V1, V2;
TopExp::Vertices(anE, V1, V2, Standard_True);
- if (!V1.IsNull() && !V2.IsNull()) {
- gp_Vec aV (BRep_Tool::Pnt(V1), BRep_Tool::Pnt(V2));
- gp_Ax2 anAxes (aP, aV);
- gp_Elips anEll (anAxes, aCI.GetRMajor(), aCI.GetRMinor());
- aShape = BRepBuilderAPI_MakeEdge(anEll).Edge();
+ if (V1.IsNull() || V2.IsNull()) {
+ Standard_ConstructionError::Raise
+ ("Ellipse creation aborted: invalid major axis vector argument: cannot retrieve vertices");
}
+ gp_Vec aVM (BRep_Tool::Pnt(V1), BRep_Tool::Pnt(V2));
+ if (aVM.Magnitude() < gp::Resolution()) {
+ Standard_ConstructionError::Raise
+ ("Ellipse creation aborted: major axis vector of zero length is given");
+ }
+ if (aV.IsParallel(aVM, Precision::Angular())) {
+ Standard_ConstructionError::Raise
+ ("Ellipse creation aborted: normal and major axis vectors are parallel");
+ }
+ // Axes defined with main axis vector
+ anAxes = gp_Ax2 (aP, aV, aVM);
}
+
+ // Ellipse
+ gp_Elips anEll (anAxes, aCI.GetRMajor(), aCI.GetRMinor());
+ aShape = BRepBuilderAPI_MakeEdge(anEll).Edge();
} else {
}
//=============================================================================
Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakeEllipse
(Handle(GEOM_Object) thePnt, Handle(GEOM_Object) theVec,
- double theRMajor, double theRMinor)
+ double theRMajor, double theRMinor,
+ Handle(GEOM_Object) theVecMaj)
{
SetErrorCode(KO);
aCI.SetRMajor(theRMajor);
aCI.SetRMinor(theRMinor);
+ // vector of major axis is optional parameter
+ if (!theVecMaj.IsNull()) {
+ Handle(GEOM_Function) aRefVecMaj = theVecMaj->GetLastFunction();
+ if (aRefVecMaj.IsNull()) return NULL;
+ aCI.SetVectorMajor(aRefVecMaj);
+ }
+
//Compute the Ellipse value
try {
#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
}
//Make a Python command
- GEOM::TPythonDump(aFunction) << anEll << " = geompy.MakeEllipse("
- << thePnt << ", " << theVec << ", " << theRMajor << ", " << theRMinor << ")";
+ //Make a Python command
+ if (!theVecMaj.IsNull()) {
+ GEOM::TPythonDump(aFunction) << anEll << " = geompy.MakeEllipse("
+ << thePnt << ", " << theVec << ", " << theRMajor << ", " << theRMinor
+ << ", " << theVecMaj << ")";
+ }
+ else {
+ GEOM::TPythonDump(aFunction) << anEll << " = geompy.MakeEllipse("
+ << thePnt << ", " << theVec << ", " << theRMajor << ", " << theRMinor << ")";
+ }
SetErrorCode(OK);
return anEll;
Standard_EXPORT Handle(GEOM_Object) MakeEllipse (Handle(GEOM_Object) thePnt,
Handle(GEOM_Object) theVec,
- double theRMajor, double theRMinor);
+ double theRMajor, double theRMinor,
+ Handle(GEOM_Object) theVecMaj);
Standard_EXPORT Handle(GEOM_Object) MakeArc (Handle(GEOM_Object) thePnt1,
Handle(GEOM_Object) thePnt2,
//
#include "GEOM_Function.hxx"
-#define ELLIPS_ARG_CC 1
-#define ELLIPS_ARG_VV 2
-#define ELLIPS_ARG_RMAJ 3
-#define ELLIPS_ARG_RMIN 4
+#define ELLIPS_ARG_CC 1
+#define ELLIPS_ARG_VV 2
+#define ELLIPS_ARG_RMAJ 3
+#define ELLIPS_ARG_RMIN 4
+#define ELLIPS_ARG_VVMAJ 5
class GEOMImpl_IEllipse
{
void SetRMajor(double theR) { _func->SetReal(ELLIPS_ARG_RMAJ, theR); }
void SetRMinor(double theR) { _func->SetReal(ELLIPS_ARG_RMIN, theR); }
+ void SetVectorMajor(Handle(GEOM_Function) theV) { _func->SetReference(ELLIPS_ARG_VVMAJ, theV); }
+
Handle(GEOM_Function) GetCenter() { return _func->GetReference(ELLIPS_ARG_CC); }
Handle(GEOM_Function) GetVector() { return _func->GetReference(ELLIPS_ARG_VV); }
double GetRMajor() { return _func->GetReal(ELLIPS_ARG_RMAJ); }
double GetRMinor() { return _func->GetReal(ELLIPS_ARG_RMIN); }
+ Handle(GEOM_Function) GetVectorMajor() { return _func->GetReference(ELLIPS_ARG_VVMAJ); }
+
private:
Handle(GEOM_Function) _func;
if (thePnt == NULL || theVec == NULL) return aGEOMObject._retn();
- //Get the reference points
+ //Get the arguments
Handle(GEOM_Object) aPnt = GetOperations()->GetEngine()->GetObject
(thePnt->GetStudyID(), thePnt->GetEntry());
Handle(GEOM_Object) aVec = GetOperations()->GetEngine()->GetObject
(theVec->GetStudyID(), theVec->GetEntry());
+ Handle(GEOM_Object) aVecMaj;
if (aPnt.IsNull() || aVec.IsNull()) return aGEOMObject._retn();
// Make Ellipse
Handle(GEOM_Object) anObject =
- GetOperations()->MakeEllipse(aPnt, aVec, theRMajor, theRMinor);
+ GetOperations()->MakeEllipse(aPnt, aVec, theRMajor, theRMinor, aVecMaj);
+ if (!GetOperations()->IsDone() || anObject.IsNull())
+ return aGEOMObject._retn();
+
+ return GetObject(anObject);
+}
+
+//=============================================================================
+/*!
+ * MakeEllipseVec
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeEllipseVec
+ (GEOM::GEOM_Object_ptr thePnt, GEOM::GEOM_Object_ptr theVec,
+ CORBA::Double theRMajor, double theRMinor,
+ GEOM::GEOM_Object_ptr theVecMaj)
+{
+ GEOM::GEOM_Object_var aGEOMObject;
+
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+
+ //Get the arguments
+ Handle(GEOM_Object) aPnt = GetOperations()->GetEngine()->GetObject
+ (thePnt->GetStudyID(), thePnt->GetEntry());
+ Handle(GEOM_Object) aVec = GetOperations()->GetEngine()->GetObject
+ (theVec->GetStudyID(), theVec->GetEntry());
+ Handle(GEOM_Object) aVecMaj;
+ if (!CORBA::is_nil(theVecMaj)) {
+ aVecMaj = GetOperations()->GetEngine()->GetObject
+ (theVecMaj->GetStudyID(), theVecMaj->GetEntry());
+ if (aVecMaj.IsNull()) return aGEOMObject._retn();
+ }
+
+ // Make Ellipse
+ Handle(GEOM_Object) anObject =
+ GetOperations()->MakeEllipse(aPnt, aVec, theRMajor, theRMinor, aVecMaj);
if (!GetOperations()->IsDone() || anObject.IsNull())
return aGEOMObject._retn();
GEOM::GEOM_Object_ptr theVector,
double theRMajor, double theRMinor);
+ GEOM::GEOM_Object_ptr MakeEllipseVec (GEOM::GEOM_Object_ptr theCenter,
+ GEOM::GEOM_Object_ptr theVector,
+ double theRMajor, double theRMinor,
+ GEOM::GEOM_Object_ptr theVectorMajor);
+
GEOM::GEOM_Object_ptr MakeArc (GEOM::GEOM_Object_ptr thePnt1,
GEOM::GEOM_Object_ptr thePnt2,
GEOM::GEOM_Object_ptr thePnt3);
return anObj;
}
+//=============================================================================
+// MakeEllipseVec:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEllipseVec (GEOM::GEOM_Object_ptr theCenter,
+ GEOM::GEOM_Object_ptr theVector,
+ CORBA::Double theRMajor,
+ CORBA::Double theRMinor,
+ GEOM::GEOM_Object_ptr theVectorMajor)
+{
+ beginService( " GEOM_Superv_i::MakeEllipseVec" );
+ MESSAGE("GEOM_Superv_i::MakeEllipseVec");
+ getCurvesOp();
+ GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeEllipseVec(theCenter, theVector, theRMajor, theRMinor, theVectorMajor);
+ endService( " GEOM_Superv_i::MakeEllipseVec" );
+ return anObj;
+}
+
//=============================================================================
// MakeArc:
//=============================================================================
GEOM::GEOM_Object_ptr MakeEllipse (GEOM::GEOM_Object_ptr theCenter,
GEOM::GEOM_Object_ptr theVector,
CORBA::Double theRMajor, CORBA::Double theRMinor);
+ GEOM::GEOM_Object_ptr MakeEllipseVec (GEOM::GEOM_Object_ptr theCenter,
+ GEOM::GEOM_Object_ptr theVector,
+ CORBA::Double theRMajor, CORBA::Double theRMinor,
+ GEOM::GEOM_Object_ptr theVectorMajor);
GEOM::GEOM_Object_ptr MakeArc (GEOM::GEOM_Object_ptr thePnt1,
GEOM::GEOM_Object_ptr thePnt2,
GEOM::GEOM_Object_ptr thePnt3);
# @param theVec Vector, normal to the plane of the ellipse.
# @param theRMajor Major ellipse radius.
# @param theRMinor Minor ellipse radius.
+ # @param theVecMaj Vector, direction of the ellipse's main axis.
# @return New GEOM_Object, containing the created ellipse.
#
# @ref tui_creation_ellipse "Example"
- def MakeEllipse(self,thePnt, theVec, theRMajor, theRMinor):
+ def MakeEllipse(self,thePnt, theVec, theRMajor, theRMinor, theVecMaj=None):
# Example: see GEOM_TestAll.py
- anObj = self.CurvesOp.MakeEllipse(thePnt, theVec, theRMajor, theRMinor)
+ if theVecMaj is not None:
+ anObj = self.CurvesOp.MakeEllipseVec(thePnt, theVec, theRMajor, theRMinor, theVecMaj)
+ else:
+ anObj = self.CurvesOp.MakeEllipse(thePnt, theVec, theRMajor, theRMinor)
+ pass
RaiseIfFailed("MakeEllipse", self.CurvesOp)
return anObj