mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2025-04-02 03:14:29 +05:00
Changes for bug NPAL15938.
This commit is contained in:
parent
b2eb7cce8a
commit
418e3b6999
@ -287,6 +287,18 @@ module GEOM
|
|||||||
GEOM_Object MakePointOnCurve (in GEOM_Object theRefCurve,
|
GEOM_Object MakePointOnCurve (in GEOM_Object theRefCurve,
|
||||||
in double theParameter);
|
in double theParameter);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Create a point, corresponding to the given parameters on the
|
||||||
|
* given surface.
|
||||||
|
* \param theRefSurf The referenced surface.
|
||||||
|
* \param theUParameter Value of U-parameter on the referenced surface.
|
||||||
|
* \param theVParameter Value of V-parameter on the referenced surface.
|
||||||
|
* \return New GEOM_Object, containing the created point.
|
||||||
|
*/
|
||||||
|
GEOM_Object MakePointOnSurface (in GEOM_Object theRefSurf,
|
||||||
|
in double theUParameter,
|
||||||
|
in double theVParameter);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Create a point, on two lines intersection.
|
* Create a point, on two lines intersection.
|
||||||
* \param theRefLine1, theRefLine2 The referenced lines.
|
* \param theRefLine1, theRefLine2 The referenced lines.
|
||||||
@ -2543,6 +2555,59 @@ module GEOM
|
|||||||
* Get point coordinates
|
* Get point coordinates
|
||||||
*/
|
*/
|
||||||
void PointCoordinates (in GEOM_Object theShape, out double X, out double Y, out double Z);
|
void PointCoordinates (in GEOM_Object theShape, out double X, out double Y, out double Z);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Get radius of curvature of curve in the point determinated by param
|
||||||
|
* \param theShape - curve.
|
||||||
|
* \param theParam - parameter on curve
|
||||||
|
* \return Value of curvature.
|
||||||
|
*/
|
||||||
|
double CurveCurvatureByParam (in GEOM_Object theShape, in double theParam);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Get radius of curvature of curve in the given point
|
||||||
|
* \param theShape - curve.
|
||||||
|
* \param thePoint - point
|
||||||
|
* \return Value of curvature.
|
||||||
|
*/
|
||||||
|
double CurveCurvatureByPoint (in GEOM_Object theShape, in GEOM_Object thePoint);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Get max radius of curvature of surface in the point determinated by params
|
||||||
|
* \param theShape - surface.
|
||||||
|
* \param theUParam - U-parameter on surface
|
||||||
|
* \param theVParam - V-parameter on surface
|
||||||
|
* \return Value of curvature.
|
||||||
|
*/
|
||||||
|
double MaxSurfaceCurvatureByParam (in GEOM_Object theShape, in double theUParam,
|
||||||
|
in double theVParam);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Get max radius of curvature of surface in the given point
|
||||||
|
* \param theShape - surface.
|
||||||
|
* \param thePoint - point
|
||||||
|
* \return Value of curvature.
|
||||||
|
*/
|
||||||
|
double MaxSurfaceCurvatureByPoint (in GEOM_Object theShape, in GEOM_Object thePoint);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Get min radius of curvature of surface in the point determinated by params
|
||||||
|
* \param theShape - surface.
|
||||||
|
* \param theUParam - U-parameter on surface
|
||||||
|
* \param theVParam - V-parameter on surface
|
||||||
|
* \return Value of curvature.
|
||||||
|
*/
|
||||||
|
double MinSurfaceCurvatureByParam (in GEOM_Object theShape, in double theUParam,
|
||||||
|
in double theVParam);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Get min radius of curvature of surface in the given point
|
||||||
|
* \param theShape - surface.
|
||||||
|
* \param thePoint - point
|
||||||
|
* \return Value of curvature.
|
||||||
|
*/
|
||||||
|
double MinSurfaceCurvatureByPoint (in GEOM_Object theShape, in GEOM_Object thePoint);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -118,6 +118,7 @@ planeworkingvector.png \
|
|||||||
planeworkingorigin.png \
|
planeworkingorigin.png \
|
||||||
point2.png \
|
point2.png \
|
||||||
pointonedge.png \
|
pointonedge.png \
|
||||||
|
pointonface.png \
|
||||||
point_line_intersection.png \
|
point_line_intersection.png \
|
||||||
polyline.png \
|
polyline.png \
|
||||||
prism.png \
|
prism.png \
|
||||||
|
BIN
resources/pointonface.png
Executable file
BIN
resources/pointonface.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 616 B |
@ -68,6 +68,7 @@ BasicGUI_PointDlg::BasicGUI_PointDlg(GeometryGUI* theGeometryGUI, QWidget* paren
|
|||||||
QPixmap image2(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT")));
|
QPixmap image2(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT")));
|
||||||
QPixmap image3(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_POINT_REF")));
|
QPixmap image3(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_POINT_REF")));
|
||||||
QPixmap image4(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_POINT_LINES")));
|
QPixmap image4(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_POINT_LINES")));
|
||||||
|
QPixmap image5(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_POINT_FACE")));
|
||||||
|
|
||||||
setCaption(tr("GEOM_POINT_TITLE"));
|
setCaption(tr("GEOM_POINT_TITLE"));
|
||||||
|
|
||||||
@ -82,6 +83,8 @@ BasicGUI_PointDlg::BasicGUI_PointDlg(GeometryGUI* theGeometryGUI, QWidget* paren
|
|||||||
RadioButton3->setPixmap(image1);
|
RadioButton3->setPixmap(image1);
|
||||||
RadioButton4->show();
|
RadioButton4->show();
|
||||||
RadioButton4->setPixmap(image4);
|
RadioButton4->setPixmap(image4);
|
||||||
|
RadioButton5->show();
|
||||||
|
RadioButton5->setPixmap(image5);
|
||||||
|
|
||||||
GroupXYZ = new DlgRef_3Spin( aFrame, "GroupXYZ" );
|
GroupXYZ = new DlgRef_3Spin( aFrame, "GroupXYZ" );
|
||||||
GroupXYZ->GroupBox1->setTitle(tr("GEOM_COORDINATES"));
|
GroupXYZ->GroupBox1->setTitle(tr("GEOM_COORDINATES"));
|
||||||
@ -95,6 +98,13 @@ BasicGUI_PointDlg::BasicGUI_PointDlg(GeometryGUI* theGeometryGUI, QWidget* paren
|
|||||||
GroupOnCurve->TextLabel2->setText(tr("GEOM_PARAMETER"));
|
GroupOnCurve->TextLabel2->setText(tr("GEOM_PARAMETER"));
|
||||||
GroupOnCurve->PushButton1->setPixmap(image2);
|
GroupOnCurve->PushButton1->setPixmap(image2);
|
||||||
|
|
||||||
|
GroupOnSurface = new DlgRef_1Sel2Spin( aFrame, "GroupOnSurface" );
|
||||||
|
GroupOnSurface->GroupBox1->setTitle(tr("GEOM_PARAM_POINT"));
|
||||||
|
GroupOnSurface->TextLabel1->setText(tr("GEOM_FACE"));
|
||||||
|
GroupOnSurface->TextLabel2->setText(tr("GEOM_UPARAMETER"));
|
||||||
|
GroupOnSurface->TextLabel3->setText(tr("GEOM_VPARAMETER"));
|
||||||
|
GroupOnSurface->PushButton1->setPixmap(image2);
|
||||||
|
|
||||||
GroupRefPoint = new DlgRef_1Sel3Spin( aFrame, "GoupRefPoint" );
|
GroupRefPoint = new DlgRef_1Sel3Spin( aFrame, "GoupRefPoint" );
|
||||||
GroupRefPoint->GroupBox1->setTitle(tr("GEOM_REF_POINT"));
|
GroupRefPoint->GroupBox1->setTitle(tr("GEOM_REF_POINT"));
|
||||||
GroupRefPoint->TextLabel1->setText(tr("GEOM_POINT"));
|
GroupRefPoint->TextLabel1->setText(tr("GEOM_POINT"));
|
||||||
@ -156,6 +166,7 @@ BasicGUI_PointDlg::~BasicGUI_PointDlg()
|
|||||||
void BasicGUI_PointDlg::Init()
|
void BasicGUI_PointDlg::Init()
|
||||||
{
|
{
|
||||||
GroupOnCurve->LineEdit1->setReadOnly( true );
|
GroupOnCurve->LineEdit1->setReadOnly( true );
|
||||||
|
GroupOnSurface->LineEdit1->setReadOnly( true );
|
||||||
GroupRefPoint->LineEdit1->setReadOnly( true );
|
GroupRefPoint->LineEdit1->setReadOnly( true );
|
||||||
GroupLineIntersection->LineEdit1->setReadOnly( true );
|
GroupLineIntersection->LineEdit1->setReadOnly( true );
|
||||||
GroupLineIntersection->LineEdit2->setReadOnly( true );
|
GroupLineIntersection->LineEdit2->setReadOnly( true );
|
||||||
@ -188,6 +199,11 @@ void BasicGUI_PointDlg::Init()
|
|||||||
GroupOnCurve->SpinBox_DX->RangeStepAndValidator(0., 1., step, DBL_DIGITS_DISPLAY);
|
GroupOnCurve->SpinBox_DX->RangeStepAndValidator(0., 1., step, DBL_DIGITS_DISPLAY);
|
||||||
GroupOnCurve->SpinBox_DX->SetValue( 0.5 );
|
GroupOnCurve->SpinBox_DX->SetValue( 0.5 );
|
||||||
|
|
||||||
|
GroupOnSurface->SpinBox_DX->RangeStepAndValidator(0., 1., step, DBL_DIGITS_DISPLAY);
|
||||||
|
GroupOnSurface->SpinBox_DX->SetValue( 0.5 );
|
||||||
|
GroupOnSurface->SpinBox_DY->RangeStepAndValidator(0., 1., step, DBL_DIGITS_DISPLAY);
|
||||||
|
GroupOnSurface->SpinBox_DY->SetValue( 0.5 );
|
||||||
|
|
||||||
/* signals and slots connections */
|
/* signals and slots connections */
|
||||||
connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel()));
|
connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel()));
|
||||||
connect(myGeomGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog()));
|
connect(myGeomGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog()));
|
||||||
@ -199,12 +215,16 @@ void BasicGUI_PointDlg::Init()
|
|||||||
|
|
||||||
connect(GroupOnCurve->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
|
connect(GroupOnCurve->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
|
||||||
connect(GroupOnCurve->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
|
connect(GroupOnCurve->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
|
||||||
|
connect(GroupOnSurface->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
|
||||||
|
connect(GroupOnSurface->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
|
||||||
connect(GroupLineIntersection->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
|
connect(GroupLineIntersection->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
|
||||||
connect(GroupLineIntersection->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
|
connect(GroupLineIntersection->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
|
||||||
connect(GroupLineIntersection->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
|
connect(GroupLineIntersection->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
|
||||||
connect(GroupLineIntersection->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
|
connect(GroupLineIntersection->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
|
||||||
|
|
||||||
connect(GroupOnCurve->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
|
connect(GroupOnCurve->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
|
||||||
|
connect(GroupOnSurface->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
|
||||||
|
connect(GroupOnSurface->SpinBox_DY, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
|
||||||
connect(GroupXYZ->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
|
connect(GroupXYZ->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
|
||||||
connect(GroupXYZ->SpinBox_DY, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
|
connect(GroupXYZ->SpinBox_DY, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
|
||||||
connect(GroupXYZ->SpinBox_DZ, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
|
connect(GroupXYZ->SpinBox_DZ, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
|
||||||
@ -214,6 +234,10 @@ void BasicGUI_PointDlg::Init()
|
|||||||
|
|
||||||
connect(myGeomGUI, SIGNAL(SignalDefaultStepValueChanged(double)),
|
connect(myGeomGUI, SIGNAL(SignalDefaultStepValueChanged(double)),
|
||||||
GroupOnCurve->SpinBox_DX, SLOT(SetStep(double)));
|
GroupOnCurve->SpinBox_DX, SLOT(SetStep(double)));
|
||||||
|
connect(myGeomGUI, SIGNAL(SignalDefaultStepValueChanged(double)),
|
||||||
|
GroupOnSurface->SpinBox_DX, SLOT(SetStep(double)));
|
||||||
|
connect(myGeomGUI, SIGNAL(SignalDefaultStepValueChanged(double)),
|
||||||
|
GroupOnSurface->SpinBox_DY, SLOT(SetStep(double)));
|
||||||
connect(myGeomGUI, SIGNAL(SignalDefaultStepValueChanged(double)),
|
connect(myGeomGUI, SIGNAL(SignalDefaultStepValueChanged(double)),
|
||||||
GroupXYZ->SpinBox_DX, SLOT(SetStep(double)));
|
GroupXYZ->SpinBox_DX, SLOT(SetStep(double)));
|
||||||
connect(myGeomGUI, SIGNAL(SignalDefaultStepValueChanged(double)),
|
connect(myGeomGUI, SIGNAL(SignalDefaultStepValueChanged(double)),
|
||||||
@ -253,6 +277,7 @@ void BasicGUI_PointDlg::ConstructorsClicked (int constructorId)
|
|||||||
GroupOnCurve->hide();
|
GroupOnCurve->hide();
|
||||||
GroupLineIntersection->hide();
|
GroupLineIntersection->hide();
|
||||||
GroupXYZ->show();
|
GroupXYZ->show();
|
||||||
|
GroupOnSurface->hide();
|
||||||
myCoordGrp->hide();
|
myCoordGrp->hide();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -268,6 +293,7 @@ void BasicGUI_PointDlg::ConstructorsClicked (int constructorId)
|
|||||||
GroupOnCurve->hide();
|
GroupOnCurve->hide();
|
||||||
GroupRefPoint->show();
|
GroupRefPoint->show();
|
||||||
GroupLineIntersection->hide();
|
GroupLineIntersection->hide();
|
||||||
|
GroupOnSurface->hide();
|
||||||
myCoordGrp->show();
|
myCoordGrp->show();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -283,6 +309,7 @@ void BasicGUI_PointDlg::ConstructorsClicked (int constructorId)
|
|||||||
GroupRefPoint->hide();
|
GroupRefPoint->hide();
|
||||||
GroupOnCurve->show();
|
GroupOnCurve->show();
|
||||||
GroupLineIntersection->hide();
|
GroupLineIntersection->hide();
|
||||||
|
GroupOnSurface->hide();
|
||||||
myCoordGrp->show();
|
myCoordGrp->show();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -300,9 +327,26 @@ void BasicGUI_PointDlg::ConstructorsClicked (int constructorId)
|
|||||||
GroupRefPoint->hide();
|
GroupRefPoint->hide();
|
||||||
GroupOnCurve->hide();
|
GroupOnCurve->hide();
|
||||||
GroupLineIntersection->show();
|
GroupLineIntersection->show();
|
||||||
|
GroupOnSurface->hide();
|
||||||
myCoordGrp->hide();
|
myCoordGrp->hide();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case 4:
|
||||||
|
{
|
||||||
|
myEditCurrentArgument = GroupOnSurface->LineEdit1;
|
||||||
|
myEditCurrentArgument->setText("");
|
||||||
|
myFace = GEOM::GEOM_Object::_nil();
|
||||||
|
|
||||||
|
localSelection(GEOM::GEOM_Object::_nil(), TopAbs_FACE);
|
||||||
|
|
||||||
|
GroupXYZ->hide();
|
||||||
|
GroupRefPoint->hide();
|
||||||
|
GroupOnCurve->hide();
|
||||||
|
GroupLineIntersection->hide();
|
||||||
|
GroupOnSurface->show();
|
||||||
|
myCoordGrp->show();
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
myX->setText( "" );
|
myX->setText( "" );
|
||||||
@ -357,13 +401,13 @@ void BasicGUI_PointDlg::SelectionIntoArgument()
|
|||||||
{
|
{
|
||||||
const int id = getConstructorId();
|
const int id = getConstructorId();
|
||||||
|
|
||||||
if ((id == 1 || id == 2) && myEditCurrentArgument != 0)
|
if ((id == 1 || id == 2 || id == 4 ) && myEditCurrentArgument != 0)
|
||||||
{
|
{
|
||||||
myEditCurrentArgument->setText("");
|
myEditCurrentArgument->setText("");
|
||||||
myX->setText( "" );
|
myX->setText( "" );
|
||||||
myY->setText( "" );
|
myY->setText( "" );
|
||||||
myZ->setText( "" );
|
myZ->setText( "" );
|
||||||
myRefPoint = myEdge = GEOM::GEOM_Object::_nil();
|
myRefPoint = myEdge = myFace = GEOM::GEOM_Object::_nil();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IObjectCount() == 1)
|
if (IObjectCount() == 1)
|
||||||
@ -381,6 +425,8 @@ void BasicGUI_PointDlg::SelectionIntoArgument()
|
|||||||
TopAbs_ShapeEnum aNeedType = TopAbs_VERTEX;
|
TopAbs_ShapeEnum aNeedType = TopAbs_VERTEX;
|
||||||
if (id == 2 || id == 3)
|
if (id == 2 || id == 3)
|
||||||
aNeedType = TopAbs_EDGE;
|
aNeedType = TopAbs_EDGE;
|
||||||
|
if(id == 4)
|
||||||
|
aNeedType = TopAbs_FACE;
|
||||||
|
|
||||||
LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
|
LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
|
||||||
TColStd_IndexedMapOfInteger aMap;
|
TColStd_IndexedMapOfInteger aMap;
|
||||||
@ -442,6 +488,11 @@ void BasicGUI_PointDlg::SelectionIntoArgument()
|
|||||||
myEditCurrentArgument->setText(aName);
|
myEditCurrentArgument->setText(aName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (id == 4)
|
||||||
|
{
|
||||||
|
myFace = aSelectedObject;
|
||||||
|
GroupOnSurface->LineEdit1->setText(aName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -488,6 +539,13 @@ void BasicGUI_PointDlg::SetEditCurrentArgument()
|
|||||||
|
|
||||||
localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
|
localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
|
||||||
}
|
}
|
||||||
|
else if ( send == GroupOnSurface->PushButton1 )
|
||||||
|
{
|
||||||
|
GroupOnSurface->LineEdit1->setFocus();
|
||||||
|
myEditCurrentArgument = GroupOnSurface->LineEdit1;
|
||||||
|
|
||||||
|
localSelection( GEOM::GEOM_Object::_nil(), TopAbs_FACE );
|
||||||
|
}
|
||||||
else if ( send == GroupLineIntersection->PushButton1 )
|
else if ( send == GroupLineIntersection->PushButton1 )
|
||||||
{
|
{
|
||||||
GroupLineIntersection->LineEdit1->setFocus();
|
GroupLineIntersection->LineEdit1->setFocus();
|
||||||
@ -553,6 +611,27 @@ double BasicGUI_PointDlg::getParameter() const
|
|||||||
return GroupOnCurve->SpinBox_DX->GetValue();
|
return GroupOnCurve->SpinBox_DX->GetValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// funcion : getUParameter()
|
||||||
|
// purpose :
|
||||||
|
//=================================================================================
|
||||||
|
double BasicGUI_PointDlg::getUParameter() const
|
||||||
|
{
|
||||||
|
return GroupOnSurface->SpinBox_DX->GetValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// funcion : getVParameter()
|
||||||
|
// purpose :
|
||||||
|
//=================================================================================
|
||||||
|
double BasicGUI_PointDlg::getVParameter() const
|
||||||
|
{
|
||||||
|
return GroupOnSurface->SpinBox_DY->GetValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
// function : OnPointSelected
|
// function : OnPointSelected
|
||||||
// purpose :
|
// purpose :
|
||||||
@ -593,6 +672,8 @@ bool BasicGUI_PointDlg::isValid( QString& msg )
|
|||||||
return !myEdge->_is_nil();
|
return !myEdge->_is_nil();
|
||||||
else if ( id == 3)
|
else if ( id == 3)
|
||||||
return ( !myLine1->_is_nil() && !myLine2->_is_nil() );
|
return ( !myLine1->_is_nil() && !myLine2->_is_nil() );
|
||||||
|
else if ( id == 4 )
|
||||||
|
return !myFace->_is_nil();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -639,6 +720,11 @@ bool BasicGUI_PointDlg::execute( ObjectList& objects )
|
|||||||
MakePointOnLinesIntersection( myLine1, myLine2 );
|
MakePointOnLinesIntersection( myLine1, myLine2 );
|
||||||
res = true;
|
res = true;
|
||||||
break;
|
break;
|
||||||
|
case 4 :
|
||||||
|
anObj = GEOM::GEOM_IBasicOperations::_narrow( getOperation() )->
|
||||||
|
MakePointOnSurface( myFace, getUParameter(), getVParameter() );
|
||||||
|
res = true;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( getConstructorId() == 1 || getConstructorId() == 2 )
|
if ( getConstructorId() == 1 || getConstructorId() == 2 )
|
||||||
@ -685,7 +771,7 @@ void BasicGUI_PointDlg::addSubshapesToStudy()
|
|||||||
{
|
{
|
||||||
QMap<QString, GEOM::GEOM_Object_var> objMap;
|
QMap<QString, GEOM::GEOM_Object_var> objMap;
|
||||||
|
|
||||||
switch (getConstructorId())
|
switch (getConstructorId())
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
break;
|
break;
|
||||||
@ -699,6 +785,9 @@ switch (getConstructorId())
|
|||||||
objMap[GroupLineIntersection->LineEdit1->text()] = myLine1;
|
objMap[GroupLineIntersection->LineEdit1->text()] = myLine1;
|
||||||
objMap[GroupLineIntersection->LineEdit2->text()] = myLine2;
|
objMap[GroupLineIntersection->LineEdit2->text()] = myLine2;
|
||||||
break;
|
break;
|
||||||
|
case 4:
|
||||||
|
objMap[GroupOnSurface->LineEdit1->text()] = myFace;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
addSubshapesToFather( objMap );
|
addSubshapesToFather( objMap );
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
#include "DlgRef_3Spin.h"
|
#include "DlgRef_3Spin.h"
|
||||||
#include "DlgRef_2Sel_QTD.h"
|
#include "DlgRef_2Sel_QTD.h"
|
||||||
#include "DlgRef_1Sel3Spin.h"
|
#include "DlgRef_1Sel3Spin.h"
|
||||||
|
#include "DlgRef_1Sel2Spin.h"
|
||||||
|
|
||||||
class QLineEdit;
|
class QLineEdit;
|
||||||
class QGroupBox;
|
class QGroupBox;
|
||||||
@ -68,8 +69,11 @@ private :
|
|||||||
void Init();
|
void Init();
|
||||||
void enterEvent(QEvent* e);
|
void enterEvent(QEvent* e);
|
||||||
double getParameter() const;
|
double getParameter() const;
|
||||||
|
double getUParameter() const;
|
||||||
|
double getVParameter() const;
|
||||||
|
|
||||||
GEOM::GEOM_Object_var myEdge;
|
GEOM::GEOM_Object_var myEdge;
|
||||||
|
GEOM::GEOM_Object_var myFace;
|
||||||
GEOM::GEOM_Object_var myRefPoint;
|
GEOM::GEOM_Object_var myRefPoint;
|
||||||
GEOM::GEOM_Object_var myLine1;
|
GEOM::GEOM_Object_var myLine1;
|
||||||
GEOM::GEOM_Object_var myLine2;
|
GEOM::GEOM_Object_var myLine2;
|
||||||
@ -78,6 +82,7 @@ private :
|
|||||||
DlgRef_1Sel3Spin* GroupRefPoint;
|
DlgRef_1Sel3Spin* GroupRefPoint;
|
||||||
DlgRef_1Sel1Spin* GroupOnCurve;
|
DlgRef_1Sel1Spin* GroupOnCurve;
|
||||||
DlgRef_2Sel_QTD* GroupLineIntersection;
|
DlgRef_2Sel_QTD* GroupLineIntersection;
|
||||||
|
DlgRef_1Sel2Spin* GroupOnSurface;
|
||||||
|
|
||||||
QGroupBox* myCoordGrp;
|
QGroupBox* myCoordGrp;
|
||||||
QLineEdit* myX;
|
QLineEdit* myX;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
** Form implementation generated from reading ui file 'DlgRef_Skeleton_QTD.ui'
|
** Form implementation generated from reading ui file 'DlgRef_Skeleton_QTD.ui'
|
||||||
**
|
**
|
||||||
** Created: Wed Mar 26 12:14:14 2008
|
** Created: Wed Apr 2 16:42:12 2008
|
||||||
** by: The User Interface Compiler ($Id$)
|
** by: The User Interface Compiler ($Id$)
|
||||||
**
|
**
|
||||||
** WARNING! All changes made in this file will be lost!
|
** WARNING! All changes made in this file will be lost!
|
||||||
@ -60,6 +60,9 @@ DlgRef_Skeleton_QTD::DlgRef_Skeleton_QTD( QWidget* parent, const char* name, boo
|
|||||||
|
|
||||||
RadioButton4 = new QRadioButton( GroupConstructors, "RadioButton4" );
|
RadioButton4 = new QRadioButton( GroupConstructors, "RadioButton4" );
|
||||||
Layout2->addWidget( RadioButton4 );
|
Layout2->addWidget( RadioButton4 );
|
||||||
|
|
||||||
|
RadioButton5 = new QRadioButton( GroupConstructors, "RadioButton5" );
|
||||||
|
Layout2->addWidget( RadioButton5 );
|
||||||
GroupConstructorsLayout->addLayout( Layout2 );
|
GroupConstructorsLayout->addLayout( Layout2 );
|
||||||
|
|
||||||
Layout1->addWidget( GroupConstructors, 0, 0 );
|
Layout1->addWidget( GroupConstructors, 0, 0 );
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
** Form interface generated from reading ui file 'DlgRef_Skeleton_QTD.ui'
|
** Form interface generated from reading ui file 'DlgRef_Skeleton_QTD.ui'
|
||||||
**
|
**
|
||||||
** Created: Wed Mar 26 12:14:12 2008
|
** Created: Wed Apr 2 16:42:12 2008
|
||||||
** by: The User Interface Compiler ($Id$)
|
** by: The User Interface Compiler ($Id$)
|
||||||
**
|
**
|
||||||
** WARNING! All changes made in this file will be lost!
|
** WARNING! All changes made in this file will be lost!
|
||||||
@ -38,6 +38,7 @@ public:
|
|||||||
QRadioButton* RadioButton2;
|
QRadioButton* RadioButton2;
|
||||||
QRadioButton* RadioButton3;
|
QRadioButton* RadioButton3;
|
||||||
QRadioButton* RadioButton4;
|
QRadioButton* RadioButton4;
|
||||||
|
QRadioButton* RadioButton5;
|
||||||
QGroupBox* GroupBoxName;
|
QGroupBox* GroupBoxName;
|
||||||
QLabel* NameLabel;
|
QLabel* NameLabel;
|
||||||
QLineEdit* ResultName;
|
QLineEdit* ResultName;
|
||||||
|
@ -103,6 +103,11 @@
|
|||||||
<cstring>RadioButton4</cstring>
|
<cstring>RadioButton4</cstring>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget class="QRadioButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>RadioButton5</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</hbox>
|
</hbox>
|
||||||
</widget>
|
</widget>
|
||||||
</hbox>
|
</hbox>
|
||||||
@ -145,6 +150,7 @@
|
|||||||
<cstring>ResultName</cstring>
|
<cstring>ResultName</cstring>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
||||||
</grid>
|
</grid>
|
||||||
</widget>
|
</widget>
|
||||||
</grid>
|
</grid>
|
||||||
|
@ -113,6 +113,7 @@ void GEOMBase_Skeleton::Init()
|
|||||||
/* displays Dialog */
|
/* displays Dialog */
|
||||||
RadioButton1->setChecked(TRUE);
|
RadioButton1->setChecked(TRUE);
|
||||||
RadioButton4->hide();
|
RadioButton4->hide();
|
||||||
|
RadioButton5->hide();
|
||||||
|
|
||||||
CheckBoxRestoreSS->setChecked(FALSE);
|
CheckBoxRestoreSS->setChecked(FALSE);
|
||||||
GroupBoxPublish->hide();
|
GroupBoxPublish->hide();
|
||||||
|
@ -185,6 +185,10 @@ msgstr "point3.png"
|
|||||||
msgid "ICON_DLG_POINT_EDGE"
|
msgid "ICON_DLG_POINT_EDGE"
|
||||||
msgstr "pointonedge.png"
|
msgstr "pointonedge.png"
|
||||||
|
|
||||||
|
#PointDlg
|
||||||
|
msgid "ICON_DLG_POINT_FACE"
|
||||||
|
msgstr "pointonface.png"
|
||||||
|
|
||||||
#PoinDlg
|
#PoinDlg
|
||||||
msgid "ICON_DLG_POINT_LINES"
|
msgid "ICON_DLG_POINT_LINES"
|
||||||
msgstr "point_line_intersection.png"
|
msgstr "point_line_intersection.png"
|
||||||
|
@ -790,6 +790,10 @@ msgstr "Imported_Shape"
|
|||||||
#Parameter
|
#Parameter
|
||||||
msgid "GEOM_PARAMETER"
|
msgid "GEOM_PARAMETER"
|
||||||
msgstr "Parameter :"
|
msgstr "Parameter :"
|
||||||
|
msgid "GEOM_UPARAMETER"
|
||||||
|
msgstr "U-parameter :"
|
||||||
|
msgid "GEOM_VPARAMETER"
|
||||||
|
msgstr "V-parameter :"
|
||||||
|
|
||||||
#
|
#
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
|
@ -722,6 +722,10 @@ msgstr "Wire(s)"
|
|||||||
#Parameter
|
#Parameter
|
||||||
msgid "GEOM_PARAMETER"
|
msgid "GEOM_PARAMETER"
|
||||||
msgstr "Paramètre :"
|
msgstr "Paramètre :"
|
||||||
|
msgid "GEOM_UPARAMETER"
|
||||||
|
msgstr "U-paramètre :"
|
||||||
|
msgid "GEOM_VPARAMETER"
|
||||||
|
msgstr "V-paramètre :"
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -231,6 +231,64 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePointOnCurve
|
|||||||
return aPoint;
|
return aPoint;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* MakePointOnSurface
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePointOnSurface
|
||||||
|
(Handle(GEOM_Object) theSurface, double theUParameter, double theVParameter)
|
||||||
|
{
|
||||||
|
SetErrorCode(KO);
|
||||||
|
|
||||||
|
if (theSurface.IsNull()) return NULL;
|
||||||
|
|
||||||
|
//Add a new Point object
|
||||||
|
Handle(GEOM_Object) aPoint = GetEngine()->AddObject(GetDocID(), GEOM_POINT);
|
||||||
|
|
||||||
|
//Add a new Point function for creation a point relativley another point
|
||||||
|
Handle(GEOM_Function) aFunction = aPoint->AddFunction(GEOMImpl_PointDriver::GetID(),
|
||||||
|
POINT_SURFACE_PAR);
|
||||||
|
|
||||||
|
//Check if the function is set correctly
|
||||||
|
if (aFunction->GetDriverGUID() != GEOMImpl_PointDriver::GetID()) return NULL;
|
||||||
|
|
||||||
|
GEOMImpl_IPoint aPI (aFunction);
|
||||||
|
|
||||||
|
Handle(GEOM_Function) aRefFunction = theSurface->GetLastFunction();
|
||||||
|
if (aRefFunction.IsNull()) return NULL;
|
||||||
|
|
||||||
|
aPI.SetSurface(aRefFunction);
|
||||||
|
aPI.SetParameter(theUParameter);
|
||||||
|
aPI.SetParameter2(theVParameter);
|
||||||
|
|
||||||
|
//Compute the point value
|
||||||
|
try {
|
||||||
|
#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
|
||||||
|
OCC_CATCH_SIGNALS;
|
||||||
|
#endif
|
||||||
|
if (!GetSolver()->ComputeFunction(aFunction)) {
|
||||||
|
SetErrorCode("Point driver failed");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Standard_Failure) {
|
||||||
|
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
|
||||||
|
SetErrorCode(aFail->GetMessageString());
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Make a Python command
|
||||||
|
GEOM::TPythonDump(aFunction) << aPoint << " = geompy.MakeVertexOnSurface("
|
||||||
|
<< theSurface << ", " << theUParameter
|
||||||
|
<< ", " << theVParameter << ")";
|
||||||
|
|
||||||
|
SetErrorCode(OK);
|
||||||
|
return aPoint;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
* MakePointOnLinesIntersection
|
* MakePointOnLinesIntersection
|
||||||
|
@ -44,6 +44,10 @@ class GEOMImpl_IBasicOperations : public GEOM_IOperations {
|
|||||||
Standard_EXPORT Handle(GEOM_Object) MakePointOnLinesIntersection
|
Standard_EXPORT Handle(GEOM_Object) MakePointOnLinesIntersection
|
||||||
(Handle(GEOM_Object) theLine1, Handle(GEOM_Object) theLine2);
|
(Handle(GEOM_Object) theLine1, Handle(GEOM_Object) theLine2);
|
||||||
|
|
||||||
|
Standard_EXPORT Handle(GEOM_Object) MakePointOnSurface (Handle(GEOM_Object) theSurface,
|
||||||
|
double theUParameter,
|
||||||
|
double theVParameter);
|
||||||
|
|
||||||
// Vector
|
// Vector
|
||||||
Standard_EXPORT Handle(GEOM_Object) MakeVectorDXDYDZ (double theDX, double theDY, double theDZ);
|
Standard_EXPORT Handle(GEOM_Object) MakeVectorDXDYDZ (double theDX, double theDY, double theDZ);
|
||||||
|
|
||||||
|
@ -87,6 +87,12 @@
|
|||||||
#include <gp_Pln.hxx>
|
#include <gp_Pln.hxx>
|
||||||
#include <gp_Lin.hxx>
|
#include <gp_Lin.hxx>
|
||||||
|
|
||||||
|
#include <GeomAPI_ProjectPointOnCurve.hxx>
|
||||||
|
#include <ShapeAnalysis.hxx>
|
||||||
|
#include <ShapeAnalysis_Surface.hxx>
|
||||||
|
#include <GeomLProp_CLProps.hxx>
|
||||||
|
#include <GeomLProp_SLProps.hxx>
|
||||||
|
|
||||||
#include <Standard_Failure.hxx>
|
#include <Standard_Failure.hxx>
|
||||||
#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
|
#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
|
||||||
|
|
||||||
@ -1467,6 +1473,317 @@ Standard_Real GEOMImpl_IMeasureOperations::GetAngle (Handle(GEOM_Object) theLine
|
|||||||
return anAngle;
|
return anAngle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* CurveCurvatureByParam
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
Standard_Real GEOMImpl_IMeasureOperations::CurveCurvatureByParam
|
||||||
|
(Handle(GEOM_Object) theCurve, Standard_Real& theParam)
|
||||||
|
{
|
||||||
|
SetErrorCode(KO);
|
||||||
|
Standard_Real aRes = -1.0;
|
||||||
|
|
||||||
|
if(theCurve.IsNull()) return aRes;
|
||||||
|
|
||||||
|
Handle(GEOM_Function) aRefShape = theCurve->GetLastFunction();
|
||||||
|
if(aRefShape.IsNull()) return aRes;
|
||||||
|
|
||||||
|
TopoDS_Shape aShape = aRefShape->GetValue();
|
||||||
|
if(aShape.IsNull()) {
|
||||||
|
SetErrorCode("One of Objects has NULL Shape");
|
||||||
|
return aRes;
|
||||||
|
}
|
||||||
|
|
||||||
|
Standard_Real aFP, aLP, aP;
|
||||||
|
Handle(Geom_Curve) aCurve = BRep_Tool::Curve(TopoDS::Edge(aShape), aFP, aLP);
|
||||||
|
aP = aFP + (aLP - aFP) * theParam;
|
||||||
|
|
||||||
|
if(aCurve.IsNull()) return aRes;
|
||||||
|
|
||||||
|
//Compute curvature
|
||||||
|
try {
|
||||||
|
#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
|
||||||
|
OCC_CATCH_SIGNALS;
|
||||||
|
#endif
|
||||||
|
GeomLProp_CLProps Prop = GeomLProp_CLProps
|
||||||
|
(aCurve, aP, 2, Precision::Confusion());
|
||||||
|
aRes = fabs(Prop.Curvature());
|
||||||
|
SetErrorCode(OK);
|
||||||
|
}
|
||||||
|
catch (Standard_Failure) {
|
||||||
|
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
|
||||||
|
SetErrorCode(aFail->GetMessageString());
|
||||||
|
return aRes;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( aRes > Precision::Confusion() )
|
||||||
|
aRes = 1/aRes;
|
||||||
|
else
|
||||||
|
aRes = RealLast();
|
||||||
|
|
||||||
|
return aRes;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* CurveCurvatureByPoint
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
Standard_Real GEOMImpl_IMeasureOperations::CurveCurvatureByPoint
|
||||||
|
(Handle(GEOM_Object) theCurve, Handle(GEOM_Object) thePoint)
|
||||||
|
{
|
||||||
|
SetErrorCode(KO);
|
||||||
|
Standard_Real aRes = -1.0;
|
||||||
|
|
||||||
|
if( theCurve.IsNull() || thePoint.IsNull() ) return aRes;
|
||||||
|
|
||||||
|
Handle(GEOM_Function) aRefCurve = theCurve->GetLastFunction();
|
||||||
|
Handle(GEOM_Function) aRefPoint = thePoint->GetLastFunction();
|
||||||
|
if( aRefCurve.IsNull() || aRefPoint.IsNull() ) return aRes;
|
||||||
|
|
||||||
|
TopoDS_Edge anEdge = TopoDS::Edge(aRefCurve->GetValue());
|
||||||
|
TopoDS_Vertex aPnt = TopoDS::Vertex(aRefPoint->GetValue());
|
||||||
|
if( anEdge.IsNull() || aPnt.IsNull() ) {
|
||||||
|
SetErrorCode("One of Objects has NULL Shape");
|
||||||
|
return aRes;
|
||||||
|
}
|
||||||
|
|
||||||
|
Standard_Real aFP, aLP;
|
||||||
|
Handle(Geom_Curve) aCurve = BRep_Tool::Curve(anEdge, aFP, aLP);
|
||||||
|
if(aCurve.IsNull()) return aRes;
|
||||||
|
gp_Pnt aPoint = BRep_Tool::Pnt(aPnt);
|
||||||
|
|
||||||
|
//Compute curvature
|
||||||
|
try {
|
||||||
|
#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
|
||||||
|
OCC_CATCH_SIGNALS;
|
||||||
|
#endif
|
||||||
|
GeomAPI_ProjectPointOnCurve PPC(aPoint, aCurve, aFP, aLP);
|
||||||
|
if(PPC.NbPoints()>0) {
|
||||||
|
GeomLProp_CLProps Prop = GeomLProp_CLProps
|
||||||
|
(aCurve, PPC.LowerDistanceParameter(), 2, Precision::Confusion());
|
||||||
|
aRes = fabs(Prop.Curvature());
|
||||||
|
SetErrorCode(OK);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Standard_Failure) {
|
||||||
|
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
|
||||||
|
SetErrorCode(aFail->GetMessageString());
|
||||||
|
return aRes;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( aRes > Precision::Confusion() )
|
||||||
|
aRes = 1/aRes;
|
||||||
|
else
|
||||||
|
aRes = RealLast();
|
||||||
|
|
||||||
|
return aRes;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* getSurfaceCurvatures
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
Standard_Real GEOMImpl_IMeasureOperations::getSurfaceCurvatures
|
||||||
|
(const Handle(Geom_Surface)& aSurf,
|
||||||
|
Standard_Real theUParam,
|
||||||
|
Standard_Real theVParam,
|
||||||
|
Standard_Boolean theNeedMaxCurv)
|
||||||
|
{
|
||||||
|
SetErrorCode(KO);
|
||||||
|
Standard_Real aRes = 1.0;
|
||||||
|
|
||||||
|
if (aSurf.IsNull()) return aRes;
|
||||||
|
|
||||||
|
try {
|
||||||
|
#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
|
||||||
|
OCC_CATCH_SIGNALS;
|
||||||
|
#endif
|
||||||
|
GeomLProp_SLProps Prop = GeomLProp_SLProps
|
||||||
|
(aSurf, theUParam, theVParam, 2, Precision::Confusion());
|
||||||
|
if(Prop.IsCurvatureDefined()) {
|
||||||
|
if(Prop.IsUmbilic()) {
|
||||||
|
//cout<<"is umbilic"<<endl;
|
||||||
|
aRes = fabs(Prop.MeanCurvature());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
//cout<<"is not umbilic"<<endl;
|
||||||
|
double c1 = fabs(Prop.MaxCurvature());
|
||||||
|
double c2 = fabs(Prop.MinCurvature());
|
||||||
|
if(theNeedMaxCurv)
|
||||||
|
aRes = Max(c1,c2);
|
||||||
|
else
|
||||||
|
aRes = Min(c1,c2);
|
||||||
|
}
|
||||||
|
SetErrorCode(OK);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Standard_Failure) {
|
||||||
|
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
|
||||||
|
SetErrorCode(aFail->GetMessageString());
|
||||||
|
return aRes;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( fabs(aRes) > Precision::Confusion() )
|
||||||
|
aRes = 1/aRes;
|
||||||
|
else
|
||||||
|
aRes = RealLast();
|
||||||
|
|
||||||
|
return aRes;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* MaxSurfaceCurvatureByParam
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
Standard_Real GEOMImpl_IMeasureOperations::MaxSurfaceCurvatureByParam
|
||||||
|
(Handle(GEOM_Object) theSurf,
|
||||||
|
Standard_Real& theUParam,
|
||||||
|
Standard_Real& theVParam)
|
||||||
|
{
|
||||||
|
SetErrorCode(KO);
|
||||||
|
Standard_Real aRes = -1.0;
|
||||||
|
|
||||||
|
if (theSurf.IsNull()) return aRes;
|
||||||
|
|
||||||
|
Handle(GEOM_Function) aRefShape = theSurf->GetLastFunction();
|
||||||
|
if(aRefShape.IsNull()) return aRes;
|
||||||
|
|
||||||
|
TopoDS_Shape aShape = aRefShape->GetValue();
|
||||||
|
if(aShape.IsNull()) {
|
||||||
|
SetErrorCode("One of Objects has NULL Shape");
|
||||||
|
return aRes;
|
||||||
|
}
|
||||||
|
|
||||||
|
TopoDS_Face F = TopoDS::Face(aShape);
|
||||||
|
Handle(Geom_Surface) aSurf = BRep_Tool::Surface(F);
|
||||||
|
|
||||||
|
//Compute the parameters
|
||||||
|
Standard_Real U1,U2,V1,V2;
|
||||||
|
ShapeAnalysis::GetFaceUVBounds(F,U1,U2,V1,V2);
|
||||||
|
Standard_Real U = U1 + (U2-U1)*theUParam;
|
||||||
|
Standard_Real V = V1 + (V2-V1)*theVParam;
|
||||||
|
|
||||||
|
return getSurfaceCurvatures(aSurf, U, V, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* MaxSurfaceCurvatureByPoint
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
Standard_Real GEOMImpl_IMeasureOperations::MaxSurfaceCurvatureByPoint
|
||||||
|
(Handle(GEOM_Object) theSurf, Handle(GEOM_Object) thePoint)
|
||||||
|
{
|
||||||
|
SetErrorCode(KO);
|
||||||
|
Standard_Real aRes = -1.0;
|
||||||
|
|
||||||
|
if( theSurf.IsNull() || thePoint.IsNull() ) return aRes;
|
||||||
|
|
||||||
|
Handle(GEOM_Function) aRefShape = theSurf->GetLastFunction();
|
||||||
|
Handle(GEOM_Function) aRefPoint = thePoint->GetLastFunction();
|
||||||
|
if( aRefShape.IsNull() || aRefPoint.IsNull() ) return aRes;
|
||||||
|
|
||||||
|
TopoDS_Face aFace = TopoDS::Face(aRefShape->GetValue());
|
||||||
|
TopoDS_Vertex aPnt = TopoDS::Vertex(aRefPoint->GetValue());
|
||||||
|
if( aFace.IsNull() || aPnt.IsNull() ) {
|
||||||
|
SetErrorCode("One of Objects has NULL Shape");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
Handle(Geom_Surface) aSurf = BRep_Tool::Surface(aFace);
|
||||||
|
if(aSurf.IsNull()) return aRes;
|
||||||
|
gp_Pnt aPoint = BRep_Tool::Pnt(aPnt);
|
||||||
|
|
||||||
|
//Compute the parameters
|
||||||
|
ShapeAnalysis_Surface sas(aSurf);
|
||||||
|
gp_Pnt2d UV = sas.ValueOfUV(aPoint,Precision::Confusion());
|
||||||
|
|
||||||
|
return getSurfaceCurvatures(aSurf, UV.X(), UV.Y(), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* MinSurfaceCurvatureByParam
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
Standard_Real GEOMImpl_IMeasureOperations::MinSurfaceCurvatureByParam
|
||||||
|
(Handle(GEOM_Object) theSurf,
|
||||||
|
Standard_Real& theUParam,
|
||||||
|
Standard_Real& theVParam)
|
||||||
|
{
|
||||||
|
SetErrorCode(KO);
|
||||||
|
Standard_Real aRes = -1.0;
|
||||||
|
|
||||||
|
if (theSurf.IsNull()) return aRes;
|
||||||
|
|
||||||
|
Handle(GEOM_Function) aRefShape = theSurf->GetLastFunction();
|
||||||
|
if(aRefShape.IsNull()) return aRes;
|
||||||
|
|
||||||
|
TopoDS_Shape aShape = aRefShape->GetValue();
|
||||||
|
if(aShape.IsNull()) {
|
||||||
|
SetErrorCode("One of Objects has NULL Shape");
|
||||||
|
return aRes;
|
||||||
|
}
|
||||||
|
|
||||||
|
TopoDS_Face F = TopoDS::Face(aShape);
|
||||||
|
Handle(Geom_Surface) aSurf = BRep_Tool::Surface(F);
|
||||||
|
|
||||||
|
//Compute the parameters
|
||||||
|
Standard_Real U1,U2,V1,V2;
|
||||||
|
ShapeAnalysis::GetFaceUVBounds(F,U1,U2,V1,V2);
|
||||||
|
Standard_Real U = U1 + (U2-U1)*theUParam;
|
||||||
|
Standard_Real V = V1 + (V2-V1)*theVParam;
|
||||||
|
|
||||||
|
return getSurfaceCurvatures(aSurf, U, V, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* MinSurfaceCurvatureByPoint
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
Standard_Real GEOMImpl_IMeasureOperations::MinSurfaceCurvatureByPoint
|
||||||
|
(Handle(GEOM_Object) theSurf, Handle(GEOM_Object) thePoint)
|
||||||
|
{
|
||||||
|
SetErrorCode(KO);
|
||||||
|
Standard_Real aRes = -1.0;
|
||||||
|
|
||||||
|
if( theSurf.IsNull() || thePoint.IsNull() ) return aRes;
|
||||||
|
|
||||||
|
Handle(GEOM_Function) aRefShape = theSurf->GetLastFunction();
|
||||||
|
Handle(GEOM_Function) aRefPoint = thePoint->GetLastFunction();
|
||||||
|
if( aRefShape.IsNull() || aRefPoint.IsNull() ) return aRes;
|
||||||
|
|
||||||
|
TopoDS_Face aFace = TopoDS::Face(aRefShape->GetValue());
|
||||||
|
TopoDS_Vertex aPnt = TopoDS::Vertex(aRefPoint->GetValue());
|
||||||
|
if( aFace.IsNull() || aPnt.IsNull() ) {
|
||||||
|
SetErrorCode("One of Objects has NULL Shape");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
Handle(Geom_Surface) aSurf = BRep_Tool::Surface(aFace);
|
||||||
|
if(aSurf.IsNull()) return aRes;
|
||||||
|
gp_Pnt aPoint = BRep_Tool::Pnt(aPnt);
|
||||||
|
|
||||||
|
//Compute the parameters
|
||||||
|
ShapeAnalysis_Surface sas(aSurf);
|
||||||
|
gp_Pnt2d UV = sas.ValueOfUV(aPoint,Precision::Confusion());
|
||||||
|
|
||||||
|
return getSurfaceCurvatures(aSurf, UV.X(), UV.Y(), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : StructuralDump
|
//function : StructuralDump
|
||||||
//purpose : Structural (data exchange) style of output.
|
//purpose : Structural (data exchange) style of output.
|
||||||
@ -1709,6 +2026,7 @@ void GEOMImpl_IMeasureOperations::StructuralDump (const BRepCheck_Analyzer& theA
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : GetProblemShapes
|
//function : GetProblemShapes
|
||||||
// purpose : for StructuralDump
|
// purpose : for StructuralDump
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
#include <TColStd_HSequenceOfInteger.hxx>
|
#include <TColStd_HSequenceOfInteger.hxx>
|
||||||
#include <TColStd_HSequenceOfReal.hxx>
|
#include <TColStd_HSequenceOfReal.hxx>
|
||||||
#include <gp_Ax3.hxx>
|
#include <gp_Ax3.hxx>
|
||||||
|
#include <Geom_Surface.hxx>
|
||||||
|
|
||||||
class GEOM_Engine;
|
class GEOM_Engine;
|
||||||
class Handle(GEOM_Object);
|
class Handle(GEOM_Object);
|
||||||
@ -130,6 +131,24 @@ class GEOMImpl_IMeasureOperations : public GEOM_IOperations {
|
|||||||
|
|
||||||
Standard_EXPORT Standard_Real GetAngle (Handle(GEOM_Object) theLine1, Handle(GEOM_Object) theLine2);
|
Standard_EXPORT Standard_Real GetAngle (Handle(GEOM_Object) theLine1, Handle(GEOM_Object) theLine2);
|
||||||
|
|
||||||
|
|
||||||
|
// Methods for recieving radiuses of curvature of curves and surfaces
|
||||||
|
// in the given point
|
||||||
|
Standard_EXPORT Standard_Real CurveCurvatureByParam (Handle(GEOM_Object) theCurve,
|
||||||
|
Standard_Real& theParam);
|
||||||
|
Standard_EXPORT Standard_Real CurveCurvatureByPoint (Handle(GEOM_Object) theCurve,
|
||||||
|
Handle(GEOM_Object) thePoint);
|
||||||
|
Standard_EXPORT Standard_Real MaxSurfaceCurvatureByParam (Handle(GEOM_Object) theSurf,
|
||||||
|
Standard_Real& theUParam,
|
||||||
|
Standard_Real& theVParam);
|
||||||
|
Standard_EXPORT Standard_Real MaxSurfaceCurvatureByPoint (Handle(GEOM_Object) theSurf,
|
||||||
|
Handle(GEOM_Object) thePoint);
|
||||||
|
Standard_EXPORT Standard_Real MinSurfaceCurvatureByParam (Handle(GEOM_Object) theSurf,
|
||||||
|
Standard_Real& theUParam,
|
||||||
|
Standard_Real& theVParam);
|
||||||
|
Standard_EXPORT Standard_Real MinSurfaceCurvatureByPoint (Handle(GEOM_Object) theSurf,
|
||||||
|
Handle(GEOM_Object) thePoint);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Standard_EXPORT static gp_Ax3 GetPosition (const TopoDS_Shape& theShape);
|
Standard_EXPORT static gp_Ax3 GetPosition (const TopoDS_Shape& theShape);
|
||||||
|
|
||||||
@ -150,6 +169,11 @@ class GEOMImpl_IMeasureOperations : public GEOM_IOperations {
|
|||||||
Handle(TColStd_HArray1OfInteger)& NbProblems,
|
Handle(TColStd_HArray1OfInteger)& NbProblems,
|
||||||
const TopAbs_ShapeEnum Subtype,
|
const TopAbs_ShapeEnum Subtype,
|
||||||
TopTools_DataMapOfShapeListOfShape& theMap);
|
TopTools_DataMapOfShapeListOfShape& theMap);
|
||||||
|
|
||||||
|
Standard_Real getSurfaceCurvatures (const Handle(Geom_Surface)& aSurf,
|
||||||
|
Standard_Real theUParam,
|
||||||
|
Standard_Real theVParam,
|
||||||
|
Standard_Boolean theNeedMaxCurv);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -33,6 +33,9 @@
|
|||||||
#define ARG_LINE1 7
|
#define ARG_LINE1 7
|
||||||
#define ARG_LINE2 8
|
#define ARG_LINE2 8
|
||||||
|
|
||||||
|
#define ARG_SURFACE 9
|
||||||
|
#define ARG_PARAM2 10
|
||||||
|
|
||||||
class GEOMImpl_IPoint
|
class GEOMImpl_IPoint
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -52,16 +55,20 @@ class GEOMImpl_IPoint
|
|||||||
Handle(GEOM_Function) GetRef() { return _func->GetReference(ARG_REF); }
|
Handle(GEOM_Function) GetRef() { return _func->GetReference(ARG_REF); }
|
||||||
|
|
||||||
void SetCurve(Handle(GEOM_Function) theRef) { _func->SetReference(ARG_CURVE, theRef); }
|
void SetCurve(Handle(GEOM_Function) theRef) { _func->SetReference(ARG_CURVE, theRef); }
|
||||||
|
void SetSurface(Handle(GEOM_Function) theRef) { _func->SetReference(ARG_SURFACE, theRef); }
|
||||||
void SetLine1(Handle(GEOM_Function) theRef) { _func->SetReference(ARG_LINE1, theRef); }
|
void SetLine1(Handle(GEOM_Function) theRef) { _func->SetReference(ARG_LINE1, theRef); }
|
||||||
void SetLine2(Handle(GEOM_Function) theRef) { _func->SetReference(ARG_LINE2, theRef); }
|
void SetLine2(Handle(GEOM_Function) theRef) { _func->SetReference(ARG_LINE2, theRef); }
|
||||||
|
|
||||||
Handle(GEOM_Function) GetCurve() { return _func->GetReference(ARG_CURVE); }
|
Handle(GEOM_Function) GetCurve() { return _func->GetReference(ARG_CURVE); }
|
||||||
|
Handle(GEOM_Function) GetSurface() { return _func->GetReference(ARG_SURFACE); }
|
||||||
Handle(GEOM_Function) GetLine1() { return _func->GetReference(ARG_LINE1); }
|
Handle(GEOM_Function) GetLine1() { return _func->GetReference(ARG_LINE1); }
|
||||||
Handle(GEOM_Function) GetLine2() { return _func->GetReference(ARG_LINE2); }
|
Handle(GEOM_Function) GetLine2() { return _func->GetReference(ARG_LINE2); }
|
||||||
|
|
||||||
void SetParameter(double theParam) { _func->SetReal(ARG_PARAM, theParam); }
|
void SetParameter(double theParam) { _func->SetReal(ARG_PARAM, theParam); }
|
||||||
|
void SetParameter2(double theParam) { _func->SetReal(ARG_PARAM2, theParam); }
|
||||||
|
|
||||||
double GetParameter() { return _func->GetReal(ARG_PARAM); }
|
double GetParameter() { return _func->GetReal(ARG_PARAM); }
|
||||||
|
double GetParameter2() { return _func->GetReal(ARG_PARAM2); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
@ -36,7 +36,11 @@
|
|||||||
#include <TopoDS_Vertex.hxx>
|
#include <TopoDS_Vertex.hxx>
|
||||||
|
|
||||||
#include <Geom_Curve.hxx>
|
#include <Geom_Curve.hxx>
|
||||||
|
#include <Geom_Surface.hxx>
|
||||||
#include <gp_Pnt.hxx>
|
#include <gp_Pnt.hxx>
|
||||||
|
#include <TopoDS_Face.hxx>
|
||||||
|
#include <ShapeAnalysis.hxx>
|
||||||
|
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : GetID
|
//function : GetID
|
||||||
@ -57,6 +61,7 @@ GEOMImpl_PointDriver::GEOMImpl_PointDriver()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : Execute
|
//function : Execute
|
||||||
//purpose :
|
//purpose :
|
||||||
@ -74,7 +79,8 @@ Standard_Integer GEOMImpl_PointDriver::Execute(TFunction_Logbook& log) const
|
|||||||
if (aType == POINT_XYZ) {
|
if (aType == POINT_XYZ) {
|
||||||
aPnt = gp_Pnt(aPI.GetX(), aPI.GetY(), aPI.GetZ());
|
aPnt = gp_Pnt(aPI.GetX(), aPI.GetY(), aPI.GetZ());
|
||||||
|
|
||||||
} else if (aType == POINT_XYZ_REF) {
|
}
|
||||||
|
else if (aType == POINT_XYZ_REF) {
|
||||||
|
|
||||||
Handle(GEOM_Function) aRefPoint = aPI.GetRef();
|
Handle(GEOM_Function) aRefPoint = aPI.GetRef();
|
||||||
TopoDS_Shape aRefShape = aRefPoint->GetValue();
|
TopoDS_Shape aRefShape = aRefPoint->GetValue();
|
||||||
@ -85,8 +91,8 @@ Standard_Integer GEOMImpl_PointDriver::Execute(TFunction_Logbook& log) const
|
|||||||
gp_Pnt P = BRep_Tool::Pnt(TopoDS::Vertex(aRefShape));
|
gp_Pnt P = BRep_Tool::Pnt(TopoDS::Vertex(aRefShape));
|
||||||
aPnt = gp_Pnt(P.X() + aPI.GetX(), P.Y() + aPI.GetY(), P.Z() + aPI.GetZ());
|
aPnt = gp_Pnt(P.X() + aPI.GetX(), P.Y() + aPI.GetY(), P.Z() + aPI.GetZ());
|
||||||
|
|
||||||
} else if (aType == POINT_CURVE_PAR) {
|
}
|
||||||
|
else if (aType == POINT_CURVE_PAR) {
|
||||||
Handle(GEOM_Function) aRefCurve = aPI.GetCurve();
|
Handle(GEOM_Function) aRefCurve = aPI.GetCurve();
|
||||||
TopoDS_Shape aRefShape = aRefCurve->GetValue();
|
TopoDS_Shape aRefShape = aRefCurve->GetValue();
|
||||||
if (aRefShape.ShapeType() != TopAbs_EDGE) {
|
if (aRefShape.ShapeType() != TopAbs_EDGE) {
|
||||||
@ -97,8 +103,24 @@ Standard_Integer GEOMImpl_PointDriver::Execute(TFunction_Logbook& log) const
|
|||||||
Handle(Geom_Curve) aCurve = BRep_Tool::Curve(TopoDS::Edge(aRefShape), aFP, aLP);
|
Handle(Geom_Curve) aCurve = BRep_Tool::Curve(TopoDS::Edge(aRefShape), aFP, aLP);
|
||||||
aP = aFP + (aLP - aFP) * aPI.GetParameter();
|
aP = aFP + (aLP - aFP) * aPI.GetParameter();
|
||||||
aPnt = aCurve->Value(aP);
|
aPnt = aCurve->Value(aP);
|
||||||
|
}
|
||||||
} else if (aType == POINT_LINES_INTERSECTION) {
|
else if (aType == POINT_SURFACE_PAR) {
|
||||||
|
Handle(GEOM_Function) aRefCurve = aPI.GetSurface();
|
||||||
|
TopoDS_Shape aRefShape = aRefCurve->GetValue();
|
||||||
|
if (aRefShape.ShapeType() != TopAbs_FACE) {
|
||||||
|
Standard_TypeMismatch::Raise
|
||||||
|
("Point On Surface creation aborted : surface shape is not a face");
|
||||||
|
}
|
||||||
|
TopoDS_Face F = TopoDS::Face(aRefShape);
|
||||||
|
Handle(Geom_Surface) aSurf = BRep_Tool::Surface(F);
|
||||||
|
Standard_Real U1,U2,V1,V2;
|
||||||
|
//aSurf->Bounds(U1,U2,V1,V2);
|
||||||
|
ShapeAnalysis::GetFaceUVBounds(F,U1,U2,V1,V2);
|
||||||
|
Standard_Real U = U1 + (U2-U1) * aPI.GetParameter();
|
||||||
|
Standard_Real V = V1 + (V2-V1) * aPI.GetParameter2();
|
||||||
|
aPnt = aSurf->Value(U,V);
|
||||||
|
}
|
||||||
|
else if (aType == POINT_LINES_INTERSECTION) {
|
||||||
Handle(GEOM_Function) aRef1 = aPI.GetLine1();
|
Handle(GEOM_Function) aRef1 = aPI.GetLine1();
|
||||||
Handle(GEOM_Function) aRef2 = aPI.GetLine2();
|
Handle(GEOM_Function) aRef2 = aPI.GetLine2();
|
||||||
|
|
||||||
|
@ -98,6 +98,7 @@
|
|||||||
#define POINT_XYZ_REF 2
|
#define POINT_XYZ_REF 2
|
||||||
#define POINT_CURVE_PAR 3
|
#define POINT_CURVE_PAR 3
|
||||||
#define POINT_LINES_INTERSECTION 4
|
#define POINT_LINES_INTERSECTION 4
|
||||||
|
#define POINT_SURFACE_PAR 5
|
||||||
//#define POINT_FACE_PAR 5
|
//#define POINT_FACE_PAR 5
|
||||||
|
|
||||||
#define VECTOR_TWO_PNT 1
|
#define VECTOR_TWO_PNT 1
|
||||||
|
@ -138,6 +138,7 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnLinesIntersection
|
|||||||
return GetObject(anObject);
|
return GetObject(anObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
* MakePointOnCurve
|
* MakePointOnCurve
|
||||||
@ -169,6 +170,39 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnCurve
|
|||||||
return GetObject(anObject);
|
return GetObject(anObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* MakePointOnSurface
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnSurface
|
||||||
|
(GEOM::GEOM_Object_ptr theSurface,
|
||||||
|
CORBA::Double theUParameter,
|
||||||
|
CORBA::Double theVParameter)
|
||||||
|
{
|
||||||
|
GEOM::GEOM_Object_var aGEOMObject;
|
||||||
|
|
||||||
|
//Set a not done flag
|
||||||
|
GetOperations()->SetNotDone();
|
||||||
|
|
||||||
|
if (theSurface == NULL) return aGEOMObject._retn();
|
||||||
|
|
||||||
|
//Get the reference surface
|
||||||
|
Handle(GEOM_Object) aRefernce = GetOperations()->GetEngine()->GetObject
|
||||||
|
(theSurface->GetStudyID(), theSurface->GetEntry());
|
||||||
|
if (aRefernce.IsNull()) return aGEOMObject._retn();
|
||||||
|
|
||||||
|
//Create the point
|
||||||
|
Handle(GEOM_Object) anObject =
|
||||||
|
GetOperations()->MakePointOnSurface(aRefernce, theUParameter, theVParameter);
|
||||||
|
if (!GetOperations()->IsDone() || anObject.IsNull())
|
||||||
|
return aGEOMObject._retn();
|
||||||
|
|
||||||
|
return GetObject(anObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
* MakeTangentOnCurve
|
* MakeTangentOnCurve
|
||||||
|
@ -53,6 +53,10 @@ class GEOM_I_EXPORT GEOM_IBasicOperations_i :
|
|||||||
GEOM::GEOM_Object_ptr MakePointOnCurve (GEOM::GEOM_Object_ptr theCurve,
|
GEOM::GEOM_Object_ptr MakePointOnCurve (GEOM::GEOM_Object_ptr theCurve,
|
||||||
CORBA::Double theParameter);
|
CORBA::Double theParameter);
|
||||||
|
|
||||||
|
GEOM::GEOM_Object_ptr MakePointOnSurface (GEOM::GEOM_Object_ptr theSurface,
|
||||||
|
CORBA::Double theUParameter,
|
||||||
|
CORBA::Double theVParameter);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr MakePointOnLinesIntersection (GEOM::GEOM_Object_ptr theLine1,
|
GEOM::GEOM_Object_ptr MakePointOnLinesIntersection (GEOM::GEOM_Object_ptr theLine1,
|
||||||
GEOM::GEOM_Object_ptr theLine2);
|
GEOM::GEOM_Object_ptr theLine2);
|
||||||
|
|
||||||
|
@ -473,3 +473,151 @@ CORBA::Double GEOM_IMeasureOperations_i::GetAngle (GEOM::GEOM_Object_ptr theShap
|
|||||||
// Get the angle
|
// Get the angle
|
||||||
return GetOperations()->GetAngle(aShape1, aShape2);
|
return GetOperations()->GetAngle(aShape1, aShape2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* CurveCurvatureByParam
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
CORBA::Double GEOM_IMeasureOperations_i::CurveCurvatureByParam
|
||||||
|
(GEOM::GEOM_Object_ptr theCurve, CORBA::Double theParam)
|
||||||
|
{
|
||||||
|
//Set a not done flag
|
||||||
|
GetOperations()->SetNotDone();
|
||||||
|
|
||||||
|
if(theCurve==NULL) return -1.0;
|
||||||
|
|
||||||
|
//Get the reference shape
|
||||||
|
Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
|
||||||
|
(theCurve->GetStudyID(), theCurve->GetEntry());
|
||||||
|
|
||||||
|
if(aShape.IsNull()) return -1.0;
|
||||||
|
|
||||||
|
return GetOperations()->CurveCurvatureByParam(aShape,theParam);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* CurveCurvatureByPoint
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
CORBA::Double GEOM_IMeasureOperations_i::CurveCurvatureByPoint
|
||||||
|
(GEOM::GEOM_Object_ptr theCurve, GEOM::GEOM_Object_ptr thePoint)
|
||||||
|
{
|
||||||
|
//Set a not done flag
|
||||||
|
GetOperations()->SetNotDone();
|
||||||
|
|
||||||
|
if( theCurve==NULL || thePoint==NULL ) return -1.0;
|
||||||
|
|
||||||
|
//Get the reference shape
|
||||||
|
Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
|
||||||
|
(theCurve->GetStudyID(), theCurve->GetEntry());
|
||||||
|
Handle(GEOM_Object) aPoint = GetOperations()->GetEngine()->GetObject
|
||||||
|
(thePoint->GetStudyID(), thePoint->GetEntry());
|
||||||
|
|
||||||
|
if( aShape.IsNull() || aPoint.IsNull() ) return -1.0;
|
||||||
|
|
||||||
|
return GetOperations()->CurveCurvatureByPoint(aShape,aPoint);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* MaxSurfaceCurvatureByParam
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
CORBA::Double GEOM_IMeasureOperations_i::MaxSurfaceCurvatureByParam
|
||||||
|
(GEOM::GEOM_Object_ptr theSurf,
|
||||||
|
CORBA::Double theUParam,
|
||||||
|
CORBA::Double theVParam)
|
||||||
|
{
|
||||||
|
//Set a not done flag
|
||||||
|
GetOperations()->SetNotDone();
|
||||||
|
|
||||||
|
if(theSurf==NULL) return -1.0;
|
||||||
|
|
||||||
|
//Get the reference shape
|
||||||
|
Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
|
||||||
|
(theSurf->GetStudyID(), theSurf->GetEntry());
|
||||||
|
|
||||||
|
if(aShape.IsNull()) return -1.0;
|
||||||
|
|
||||||
|
return GetOperations()->MaxSurfaceCurvatureByParam(aShape,theUParam,theVParam);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* MaxSurfaceCurvatureByPoint
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
CORBA::Double GEOM_IMeasureOperations_i::MaxSurfaceCurvatureByPoint
|
||||||
|
(GEOM::GEOM_Object_ptr theSurf, GEOM::GEOM_Object_ptr thePoint)
|
||||||
|
{
|
||||||
|
//Set a not done flag
|
||||||
|
GetOperations()->SetNotDone();
|
||||||
|
|
||||||
|
if( theSurf==NULL || thePoint==NULL ) return -1.0;
|
||||||
|
|
||||||
|
//Get the reference shape
|
||||||
|
Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
|
||||||
|
(theSurf->GetStudyID(), theSurf->GetEntry());
|
||||||
|
Handle(GEOM_Object) aPoint = GetOperations()->GetEngine()->GetObject
|
||||||
|
(thePoint->GetStudyID(), thePoint->GetEntry());
|
||||||
|
|
||||||
|
if( aShape.IsNull() || aPoint.IsNull() ) return -1.0;
|
||||||
|
|
||||||
|
return GetOperations()->MaxSurfaceCurvatureByPoint(aShape,aPoint);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* MinSurfaceCurvatureByParam
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
CORBA::Double GEOM_IMeasureOperations_i::MinSurfaceCurvatureByParam
|
||||||
|
(GEOM::GEOM_Object_ptr theSurf,
|
||||||
|
CORBA::Double theUParam,
|
||||||
|
CORBA::Double theVParam)
|
||||||
|
{
|
||||||
|
//Set a not done flag
|
||||||
|
GetOperations()->SetNotDone();
|
||||||
|
|
||||||
|
if(theSurf==NULL) return -1.0;
|
||||||
|
|
||||||
|
//Get the reference shape
|
||||||
|
Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
|
||||||
|
(theSurf->GetStudyID(), theSurf->GetEntry());
|
||||||
|
|
||||||
|
if(aShape.IsNull()) return -1.0;
|
||||||
|
|
||||||
|
return GetOperations()->MinSurfaceCurvatureByParam(aShape,theUParam,theVParam);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* MinSurfaceCurvatureByPoint
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
CORBA::Double GEOM_IMeasureOperations_i::MinSurfaceCurvatureByPoint
|
||||||
|
(GEOM::GEOM_Object_ptr theSurf, GEOM::GEOM_Object_ptr thePoint)
|
||||||
|
{
|
||||||
|
//Set a not done flag
|
||||||
|
GetOperations()->SetNotDone();
|
||||||
|
|
||||||
|
if( theSurf==NULL || thePoint==NULL ) return -1.0;
|
||||||
|
|
||||||
|
//Get the reference shape
|
||||||
|
Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
|
||||||
|
(theSurf->GetStudyID(), theSurf->GetEntry());
|
||||||
|
Handle(GEOM_Object) aPoint = GetOperations()->GetEngine()->GetObject
|
||||||
|
(thePoint->GetStudyID(), thePoint->GetEntry());
|
||||||
|
|
||||||
|
if( aShape.IsNull() || aPoint.IsNull() ) return -1.0;
|
||||||
|
|
||||||
|
return GetOperations()->MinSurfaceCurvatureByPoint(aShape,aPoint);
|
||||||
|
}
|
||||||
|
@ -94,6 +94,28 @@ class GEOM_I_EXPORT GEOM_IMeasureOperations_i :
|
|||||||
CORBA::Double GetAngle (GEOM::GEOM_Object_ptr theShape1,
|
CORBA::Double GetAngle (GEOM::GEOM_Object_ptr theShape1,
|
||||||
GEOM::GEOM_Object_ptr theShape2);
|
GEOM::GEOM_Object_ptr theShape2);
|
||||||
|
|
||||||
|
// Methods for recieving radiuses of curvature of curves and surfaces
|
||||||
|
// in the given point
|
||||||
|
CORBA::Double CurveCurvatureByParam (GEOM::GEOM_Object_ptr theCurve,
|
||||||
|
CORBA::Double theParam);
|
||||||
|
|
||||||
|
CORBA::Double CurveCurvatureByPoint (GEOM::GEOM_Object_ptr theCurve,
|
||||||
|
GEOM::GEOM_Object_ptr thePoint);
|
||||||
|
|
||||||
|
CORBA::Double MaxSurfaceCurvatureByParam (GEOM::GEOM_Object_ptr theSurf,
|
||||||
|
CORBA::Double theUParam,
|
||||||
|
CORBA::Double theVParam);
|
||||||
|
|
||||||
|
CORBA::Double MaxSurfaceCurvatureByPoint (GEOM::GEOM_Object_ptr theSurf,
|
||||||
|
GEOM::GEOM_Object_ptr thePoint);
|
||||||
|
|
||||||
|
CORBA::Double MinSurfaceCurvatureByParam (GEOM::GEOM_Object_ptr theSurf,
|
||||||
|
CORBA::Double theUParam,
|
||||||
|
CORBA::Double theVParam);
|
||||||
|
|
||||||
|
CORBA::Double MinSurfaceCurvatureByPoint (GEOM::GEOM_Object_ptr theSurf,
|
||||||
|
GEOM::GEOM_Object_ptr thePoint);
|
||||||
|
|
||||||
::GEOMImpl_IMeasureOperations* GetOperations()
|
::GEOMImpl_IMeasureOperations* GetOperations()
|
||||||
{ return (::GEOMImpl_IMeasureOperations*)GetImpl(); }
|
{ return (::GEOMImpl_IMeasureOperations*)GetImpl(); }
|
||||||
};
|
};
|
||||||
|
@ -215,6 +215,19 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
|||||||
RaiseIfFailed("MakePointOnCurve", self.BasicOp)
|
RaiseIfFailed("MakePointOnCurve", self.BasicOp)
|
||||||
return anObj
|
return anObj
|
||||||
|
|
||||||
|
## Create a point, corresponding to the given parameters on the
|
||||||
|
# given surface.
|
||||||
|
# @param theRefSurf The referenced surface.
|
||||||
|
# @param theUParameter Value of U-parameter on the referenced surface.
|
||||||
|
# @param theVParameter Value of V-parameter on the referenced surface.
|
||||||
|
# @return New GEOM_Object, containing the created point.
|
||||||
|
#
|
||||||
|
# Example: see GEOM_TestAll.py
|
||||||
|
def MakeVertexOnSurface(self,theRefSurf, theUParameter, theVParameter):
|
||||||
|
anObj = self.BasicOp.MakePointOnSurface(theRefSurf, theUParameter, theVParameter)
|
||||||
|
RaiseIfFailed("MakePointOnSurface", self.BasicOp)
|
||||||
|
return anObj
|
||||||
|
|
||||||
## Create a point on intersection of two lines.
|
## Create a point on intersection of two lines.
|
||||||
# @param theRefLine1, theRefLine2 The referenced lines.
|
# @param theRefLine1, theRefLine2 The referenced lines.
|
||||||
# @return New GEOM_Object, containing the created point.
|
# @return New GEOM_Object, containing the created point.
|
||||||
@ -2109,6 +2122,40 @@ class geompyDC(GEOM._objref_GEOM_Gen):
|
|||||||
RaiseIfFailed("GetAngle", self.MeasuOp)
|
RaiseIfFailed("GetAngle", self.MeasuOp)
|
||||||
return anAngle
|
return anAngle
|
||||||
|
|
||||||
|
## Methods for recieving radius of curvature of curves
|
||||||
|
# in the given point
|
||||||
|
#
|
||||||
|
# Example: see GEOM_TestMeasures.py
|
||||||
|
def CurveCurvatureByParam(self, theCurve, theParam):
|
||||||
|
aCurv = self.MeasuOp.CurveCurvatureByParam(theCurve,theParam)
|
||||||
|
RaiseIfFailed("CurveCurvatureByParam", self.MeasuOp)
|
||||||
|
return aCurv
|
||||||
|
def CurveCurvatureByPoint(self, theCurve, thePoint):
|
||||||
|
aCurv = self.MeasuOp.CurveCurvatureByPoint(theCurve,thePoint)
|
||||||
|
RaiseIfFailed("CurveCurvatureByPoint", self.MeasuOp)
|
||||||
|
return aCurv
|
||||||
|
|
||||||
|
## Methods for recieving max and min radius of curvature of surfaces
|
||||||
|
# in the given point
|
||||||
|
#
|
||||||
|
# Example: see GEOM_TestMeasures.py
|
||||||
|
def MaxSurfaceCurvatureByParam(self, theSurf, theUParam, theVParam):
|
||||||
|
aSurf = self.MeasuOp.MaxSurfaceCurvatureByParam(theSurf,theUParam,theVParam)
|
||||||
|
RaiseIfFailed("MaxSurfaceCurvatureByParam", self.MeasuOp)
|
||||||
|
return aSurf
|
||||||
|
def MaxSurfaceCurvatureByPoint(self, theSurf, thePoint):
|
||||||
|
aSurf = self.MeasuOp.MaxSurfaceCurvatureByPoint(theSurf,thePoint)
|
||||||
|
RaiseIfFailed("MaxSurfaceCurvatureByPoint", self.MeasuOp)
|
||||||
|
return aSurf
|
||||||
|
def MinSurfaceCurvatureByParam(self, theSurf, theUParam, theVParam):
|
||||||
|
aSurf = self.MeasuOp.MinSurfaceCurvatureByParam(theSurf,theUParam,theVParam)
|
||||||
|
RaiseIfFailed("MinSurfaceCurvatureByParam", self.MeasuOp)
|
||||||
|
return aSurf
|
||||||
|
def MinSurfaceCurvatureByPoint(self, theSurf, thePoint):
|
||||||
|
aSurf = self.MeasuOp.MinSurfaceCurvatureByPoint(theSurf,thePoint)
|
||||||
|
RaiseIfFailed("MinSurfaceCurvatureByPoint", self.MeasuOp)
|
||||||
|
return aSurf
|
||||||
|
|
||||||
## Get min and max tolerances of sub-shapes of theShape
|
## Get min and max tolerances of sub-shapes of theShape
|
||||||
# @param theShape Shape, to get tolerances of.
|
# @param theShape Shape, to get tolerances of.
|
||||||
# @return [FaceMin,FaceMax, EdgeMin,EdgeMax, VertMin,VertMax]
|
# @return [FaceMin,FaceMax, EdgeMin,EdgeMax, VertMin,VertMax]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user