PathGrpLayout->addWidget( SelectStartPointButton, 2, 1 );
PathGrpLayout->addWidget( StartPointLineEdit, 2, 2 );
+ // Controls for base point defining
+ BasePointCheck = new QCheckBox( tr( "SMESH_USE_BASE_POINT" ), ArgumentsGrp );
+
+ BasePointGrp = new QGroupBox( tr( "SMESH_BASE_POINT" ), ArgumentsGrp );
+ BasePointGrp->setColumnLayout( 0, Qt::Vertical );
+ BasePointGrp->layout()->setSpacing( 0 ); BasePointGrp->layout()->setMargin( 0 );
+ QGridLayout* BasePointGrpLayout = new QGridLayout( BasePointGrp->layout() );
+ BasePointGrpLayout->setAlignment( Qt::AlignTop );
+ BasePointGrpLayout->setSpacing( 6 ); BasePointGrpLayout->setMargin( 11 );
+
+ SelectBasePointButton = new QToolButton( BasePointGrp );
+ SelectBasePointButton->setPixmap( selectImage );
+
+ XLab = new QLabel( tr( "SMESH_X" ), BasePointGrp );
+ XSpin = new SMESHGUI_SpinBox( BasePointGrp );
+ YLab = new QLabel( tr( "SMESH_Y" ), BasePointGrp );
+ YSpin = new SMESHGUI_SpinBox( BasePointGrp );
+ ZLab = new QLabel( tr( "SMESH_Z" ), BasePointGrp );
+ ZSpin = new SMESHGUI_SpinBox( BasePointGrp );
+
+ // layouting
+ BasePointGrpLayout->addWidget( SelectBasePointButton, 0, 0 );
+ BasePointGrpLayout->addWidget( XLab, 0, 1 );
+ BasePointGrpLayout->addWidget( XSpin, 0, 2 );
+ BasePointGrpLayout->addWidget( YLab, 0, 3 );
+ BasePointGrpLayout->addWidget( YSpin, 0, 4 );
+ BasePointGrpLayout->addWidget( ZLab, 0, 5 );
+ BasePointGrpLayout->addWidget( ZSpin, 0, 6 );
+
// Controls for angles defining
AnglesCheck = new QCheckBox( tr( "SMESH_USE_ANGLES" ), ArgumentsGrp );
AnglesGrpLayout->addWidget( AngleSpin, 0, 2 );
AnglesGrpLayout->setRowStretch( 1, 10 );
- // Controls for base point defining
- BasePointCheck = new QCheckBox( tr( "SMESH_USE_BASE_POINT" ), ArgumentsGrp );
-
- BasePointGrp = new QGroupBox( tr( "SMESH_BASE_POINT" ), ArgumentsGrp );
- BasePointGrp->setColumnLayout( 0, Qt::Vertical );
- BasePointGrp->layout()->setSpacing( 0 ); BasePointGrp->layout()->setMargin( 0 );
- QGridLayout* BasePointGrpLayout = new QGridLayout( BasePointGrp->layout() );
- BasePointGrpLayout->setAlignment( Qt::AlignTop );
- BasePointGrpLayout->setSpacing( 6 ); BasePointGrpLayout->setMargin( 11 );
-
- SelectBasePointButton = new QToolButton( BasePointGrp );
- SelectBasePointButton->setPixmap( selectImage );
-
- XLab = new QLabel( tr( "SMESH_X" ), BasePointGrp );
- XSpin = new SMESHGUI_SpinBox( BasePointGrp );
- YLab = new QLabel( tr( "SMESH_Y" ), BasePointGrp );
- YSpin = new SMESHGUI_SpinBox( BasePointGrp );
- ZLab = new QLabel( tr( "SMESH_Z" ), BasePointGrp );
- ZSpin = new SMESHGUI_SpinBox( BasePointGrp );
-
- // layouting
- BasePointGrpLayout->addWidget( SelectBasePointButton, 0, 0 );
- BasePointGrpLayout->addWidget( XLab, 0, 1 );
- BasePointGrpLayout->addWidget( XSpin, 0, 2 );
- BasePointGrpLayout->addWidget( YLab, 0, 3 );
- BasePointGrpLayout->addWidget( YSpin, 0, 4 );
- BasePointGrpLayout->addWidget( ZLab, 0, 5 );
- BasePointGrpLayout->addWidget( ZSpin, 0, 6 );
-
// layouting
ArgumentsGrpLayout->addWidget( ElementsLab, 0, 0 );
ArgumentsGrpLayout->addWidget( SelectElementsButton, 0, 1 );
ArgumentsGrpLayout->addWidget( ElementsLineEdit, 0, 2 );
ArgumentsGrpLayout->addMultiCellWidget( MeshCheck, 1, 1, 0, 2 );
ArgumentsGrpLayout->addMultiCellWidget( PathGrp, 2, 2, 0, 2 );
- ArgumentsGrpLayout->addWidget( AnglesCheck, 3, 0 );
- ArgumentsGrpLayout->addMultiCellWidget( AnglesGrp, 3, 4, 1, 2 );
- ArgumentsGrpLayout->addWidget( BasePointCheck, 5, 0 );
- ArgumentsGrpLayout->addMultiCellWidget( BasePointGrp, 5, 6, 1, 2 );
- ArgumentsGrpLayout->setRowStretch( 4, 10 );
+ ArgumentsGrpLayout->addWidget( BasePointCheck, 3, 0 );
+ ArgumentsGrpLayout->addMultiCellWidget( BasePointGrp, 3, 4, 1, 2 );
+ ArgumentsGrpLayout->addWidget( AnglesCheck, 5, 0 );
+ ArgumentsGrpLayout->addMultiCellWidget( AnglesGrp, 5, 6, 1, 2 );
+ ArgumentsGrpLayout->setRowStretch( 6, 10 );
/***************************************************************/
// common buttons group box
/***************************************************************/
// Initialisations
- XSpin->RangeStepAndValidator( -999999.999, +999999.999, 10.0, 3 );
- YSpin->RangeStepAndValidator( -999999.999, +999999.999, 10.0, 3 );
- ZSpin->RangeStepAndValidator( -999999.999, +999999.999, 10.0, 3 );
- AngleSpin->RangeStepAndValidator( -999999.999, +999999.999, 5.0, 3 );
-
+ XSpin->RangeStepAndValidator( COORD_MIN, COORD_MAX, 10.0, 3 );
+ YSpin->RangeStepAndValidator( COORD_MIN, COORD_MAX, 10.0, 3 );
+ ZSpin->RangeStepAndValidator( COORD_MIN, COORD_MAX, 10.0, 3 );
+ AngleSpin->RangeStepAndValidator( COORD_MIN, COORD_MAX, 5.0, 3 );
+ //?? AngleSpin->RangeStepAndValidator( -360., +360., 5.0, 3 );
+
mySelection = Sel;
mySMESHGUI = SMESHGUI::GetSMESHGUI() ;
mySMESHGUI->SetActiveDialogBox( this ) ;
int j = 0;
bool bOk;
for ( int i = 0; i < AnglesList->count(); i++ ) {
- long angle = AnglesList->text( i ).toLong( &bOk );
+ double angle = AnglesList->text( i ).toDouble( &bOk );
if ( bOk )
- anAngles[ j++ ] = angle;
+ anAngles[ j++ ] = angle*PI/180;
}
anAngles->length( j );
}
try {
QAD_WaitCursor wc;
SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor();
- aMeshEditor->ExtrusionAlongPath( anElementsId.inout(), myPathMesh, myPathShape, aNodeStart,
- AnglesCheck->isChecked(), anAngles.inout(),
- BasePointCheck->isChecked(), aBasePoint );
+ SMESH::SMESH_MeshEditor::Extrusion_Error retVal =
+ aMeshEditor->ExtrusionAlongPath( anElementsId.inout(), myPathMesh, myPathShape, aNodeStart,
+ AnglesCheck->isChecked(), anAngles.inout(),
+ BasePointCheck->isChecked(), aBasePoint );
+
+ wc.stop();
+ switch ( retVal ) {
+ case SMESH::SMESH_MeshEditor::EXTR_NO_ELEMENTS:
+ QAD_MessageBox::warn1( QAD_Application::getDesktop(),
+ tr( "SMESH_ERROR" ),
+ tr( "NO_ELEMENTS_SELECTED" ),
+ tr( "SMESH_BUT_OK" ) );
+ return false; break;
+ case SMESH::SMESH_MeshEditor::EXTR_PATH_NOT_EDGE:
+ QAD_MessageBox::warn1( QAD_Application::getDesktop(),
+ tr( "SMESH_ERROR" ),
+ tr( "SELECTED_PATH_IS_NOT_EDGE" ),
+ tr( "SMESH_BUT_OK" ) );
+ return false; break;
+ case SMESH::SMESH_MeshEditor::EXTR_BAD_PATH_SHAPE:
+ QAD_MessageBox::warn1( QAD_Application::getDesktop(),
+ tr( "SMESH_ERROR" ),
+ tr( "BAD_SHAPE_TYPE" ),
+ tr( "SMESH_BUT_OK" ) );
+ return false; break;
+ case SMESH::SMESH_MeshEditor::EXTR_BAD_STARTING_NODE:
+ QAD_MessageBox::warn1( QAD_Application::getDesktop(),
+ tr( "SMESH_ERROR" ),
+ tr( "EXTR_BAD_STARTING_NODE" ),
+ tr( "SMESH_BUT_OK" ) );
+ return false; break;
+ case SMESH::SMESH_MeshEditor::EXTR_BAD_ANGLES_NUMBER:
+ QAD_MessageBox::warn1( QAD_Application::getDesktop(),
+ tr( "SMESH_ERROR" ),
+ tr( "WRONG_ANGLES_NUMBER" ),
+ tr( "SMESH_BUT_OK" ) );
+ return false; break;
+ case SMESH::SMESH_MeshEditor::EXTR_CANT_GET_TANGENT:
+ QAD_MessageBox::warn1( QAD_Application::getDesktop(),
+ tr( "SMESH_ERROR" ),
+ tr( "CANT_GET_TANGENT" ),
+ tr( "SMESH_BUT_OK" ) );
+ return false; break;
+ case SMESH::SMESH_MeshEditor::EXTR_OK:
+ break;
+ }
}
catch( ... ) {
return false;
QAD_Application::getDesktop()->SetSelectionMode( ActorSelection );
if ( !myPathMesh->_is_nil() ) {
- TColStd_MapOfInteger aTypes;
- aTypes.Add( TopAbs_EDGE );
- aTypes.Add( TopAbs_WIRE );
GEOM::GEOM_Object_var aMainShape = myPathMesh->GetShapeToMesh();
SMESH_Actor* aPathActor = SMESH::FindActorByObject( myPathMesh );
if ( !aMainShape->_is_nil() && aPathActor )
- mySelection->AddFilter( new SMESH_NumberFilter( "GEOM", TopAbs_SHAPE, -1, aTypes, aMainShape ) );
+ mySelection->AddFilter( new SMESH_NumberFilter( "GEOM", TopAbs_SHAPE, -1, TopAbs_EDGE, aMainShape ) );
//SMESH::SetPickable( aPathActor );
}
}