- else if ( getConstructorId() == 2 ) { // by point and two vectors
- TopoDS_Shape aShape;
- if ( GEOMBase::GetShape( aSelectedObj, aShape, TopAbs_SHAPE ) ) {
- TopAbs_ShapeEnum aNeedType = TopAbs_EDGE;
- if ( myEditCurrentArgument == Group2->LineEdit1 )
- aNeedType = TopAbs_VERTEX;
-
- TColStd_IndexedMapOfInteger aMap;
- aSelMgr->GetIndexes( anIO, aMap );
-
- if ( !aMap.IsEmpty() ) {
- int anIndex = aMap( 1 );
- if ( aNeedType == TopAbs_EDGE )
- aName += QString( "_edge_%1" ).arg( anIndex );
- else
- aName += QString( "_vertex_%1" ).arg( anIndex );
-
- TopTools_IndexedMapOfShape aShapes;
- TopExp::MapShapes( aShape, aShapes );
- aShape = aShapes.FindKey( anIndex );
- }
-
- if ( myEditCurrentArgument == Group2->LineEdit1 ) {
- if ( !aShape.IsNull() && aShape.ShapeType() == TopAbs_VERTEX ) {
- gp_Pnt aPnt = BRep_Tool::Pnt( TopoDS::Vertex( aShape ) );
- myData[ X ]->setValue( aPnt.X() );
- myData[ Y ]->setValue( aPnt.Y() );
- myData[ Z ]->setValue( aPnt.Z() );
- myEditCurrentArgument->setText( aName );
- if (Group2->LineEdit2->text() == "")
- Group2->PushButton2->click();
- }
- else {
- myData[ X ]->setValue( 0 );
- myData[ Y ]->setValue( 0 );
- myData[ Z ]->setValue( 0 );
- }
- }
- else if (myEditCurrentArgument == Group2->LineEdit2) {
- if ( !aShape.IsNull() && aShape.ShapeType() == TopAbs_EDGE ) {
- gp_Pnt aP1 = BRep_Tool::Pnt( TopExp::FirstVertex( TopoDS::Edge( aShape ) ) );
- gp_Pnt aP2 = BRep_Tool::Pnt( TopExp::LastVertex( TopoDS::Edge( aShape ) ) );
- gp_Dir aDir( gp_Vec( aP1, aP2 ) );
-
- myData[ DX1 ]->setValue( aDir.X() );
- myData[ DY1 ]->setValue( aDir.Y() );
- myData[ DZ1 ]->setValue( aDir.Z() );
- myEditCurrentArgument->setText( aName );
- if (Group2->LineEdit3->text() == "")
- Group2->PushButton3->click();
- }
- else {
- myData[ DX1 ]->setValue( 0 );
- myData[ DY1 ]->setValue( 0 );
- myData[ DZ1 ]->setValue( 0 );
- }
- }
- else if ( myEditCurrentArgument == Group2->LineEdit3 ) {
- if ( !aShape.IsNull() && aShape.ShapeType() == TopAbs_EDGE ) {
- gp_Pnt aP1 = BRep_Tool::Pnt( TopExp::FirstVertex( TopoDS::Edge( aShape ) ) );
- gp_Pnt aP2 = BRep_Tool::Pnt( TopExp::LastVertex( TopoDS::Edge( aShape ) ) );
- gp_Dir aDir(gp_Vec( aP1, aP2 ));
-
- myData[ DX2 ]->setValue( aDir.X() );
- myData[ DY2 ]->setValue( aDir.Y() );
- myData[ DZ2 ]->setValue( aDir.Z() );
- myEditCurrentArgument->setText( aName );
- if (Group2->LineEdit1->text() == "")
- Group2->PushButton1->click();
- }
- else {
- myData[ DX2 ]->setValue( 0 );
- myData[ DY2 ]->setValue( 0 );
- myData[ DZ2 ]->setValue( 0 );
- }
- }
- }