X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FOCCViewer%2FOCCViewer_ClippingDlg.cxx;h=59ea3461e8a91e7d5807138e789afc36cda59b9d;hb=41aded95c12ed86b77866d9dfe5212fa66869ab2;hp=d6359071f567dd7c73a164d6ceb3023f18a825f3;hpb=8c3bcb06c1f514ec44fe9373e7edc80067e62dce;p=modules%2Fgui.git diff --git a/src/OCCViewer/OCCViewer_ClippingDlg.cxx b/src/OCCViewer/OCCViewer_ClippingDlg.cxx index d6359071f..59ea3461e 100644 --- a/src/OCCViewer/OCCViewer_ClippingDlg.cxx +++ b/src/OCCViewer/OCCViewer_ClippingDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2016 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 @@ -37,16 +37,15 @@ #include "OCCViewer_ViewManager.h" #include "OCCViewer_ClipPlaneInteractor.h" -#include - #include -#include #include #include +#include #include #include #include #include +#include #include #include #include @@ -94,17 +93,13 @@ void getMinMaxFromContext( Handle(AIS_InteractiveContext) ic, if ( !aPrs->IsEmpty() && !aPrs->IsInfinite() ) { isFound = true; double xmin, ymin, zmin, xmax, ymax, zmax; -#if OCC_VERSION_LARGE > 0x06070100 Bnd_Box aBox = aPrs->MinMaxValues(); - xmin = aBox.CornerMin().X(); - ymin = aBox.CornerMin().Y(); - zmin = aBox.CornerMin().Z(); - xmax = aBox.CornerMax().X(); - ymax = aBox.CornerMax().Y(); - zmax = aBox.CornerMax().Z(); -#else - aPrs->MinMaxValues( xmin, ymin, zmin, xmax, ymax, zmax ); -#endif + xmin = aBox.IsVoid() ? RealFirst() : aBox.CornerMin().X(); + ymin = aBox.IsVoid() ? RealFirst() : aBox.CornerMin().Y(); + zmin = aBox.IsVoid() ? RealFirst() : aBox.CornerMin().Z(); + xmax = aBox.IsVoid() ? RealLast() : aBox.CornerMax().X(); + ymax = aBox.IsVoid() ? RealLast() : aBox.CornerMax().Y(); + zmax = aBox.IsVoid() ? RealLast() : aBox.CornerMax().Z(); aXMin = qMin( aXMin, xmin ); aXMax = qMax( aXMax, xmax ); aYMin = qMin( aYMin, ymin ); aYMax = qMax( aYMax, ymax ); aZMin = qMin( aZMin, zmin ); aZMax = qMax( aZMax, zmax ); @@ -519,7 +514,7 @@ OCCViewer_ClippingDlg::OCCViewer_ClippingDlg(OCCViewer_ViewWindow* parent , OCCV QFont fnt = SpinSliderDistance->font(); fnt.setBold( true ); SpinSliderDistance->setFont( fnt ); GroupParametersLayout->addWidget( SpinSliderDistance, 1, 1 ); - QString aUnitRot = "\xB0"; + QString aUnitRot = QString(QChar(0xB0)); TextLabelRotation1 = new QLabel( tr("ROTATION_AROUND_X_Y2Z"), GroupParameters ); TextLabelRotation1->setObjectName( "TextLabelRotation1" ); @@ -564,15 +559,15 @@ OCCViewer_ClippingDlg::OCCViewer_ClippingDlg(OCCViewer_ViewWindow* parent , OCCV buttonOk = new QPushButton( GroupButtons ); buttonOk->setObjectName( "buttonOk" ); buttonOk->setText( tr( "BUT_APPLY_AND_CLOSE" ) ); - buttonOk->setAutoDefault( TRUE ); - buttonOk->setDefault( TRUE ); + buttonOk->setAutoDefault( true ); + buttonOk->setDefault( true ); GroupButtonsLayout->addWidget( buttonOk ); buttonApply = new QPushButton( GroupButtons ); buttonApply->setObjectName( "buttonApply" ); buttonApply->setText( tr( "BUT_APPLY" ) ); - buttonApply->setAutoDefault( TRUE ); - buttonApply->setDefault( TRUE ); + buttonApply->setAutoDefault( true ); + buttonApply->setDefault( true ); GroupButtonsLayout->addWidget( buttonApply ); GroupButtonsLayout->addStretch(); @@ -580,11 +575,11 @@ OCCViewer_ClippingDlg::OCCViewer_ClippingDlg(OCCViewer_ViewWindow* parent , OCCV buttonClose = new QPushButton( GroupButtons ); buttonClose->setObjectName( "buttonClose" ); buttonClose->setText( tr( "BUT_CLOSE" ) ); - buttonClose->setAutoDefault( TRUE ); + buttonClose->setAutoDefault( true ); GroupButtonsLayout->addWidget( buttonClose ); QPushButton* buttonHelp = new QPushButton( tr( "HELP" ), GroupButtons ); - buttonHelp->setAutoDefault( TRUE ); + buttonHelp->setAutoDefault( true ); GroupButtonsLayout->addWidget( buttonHelp ); /***************************************************************/ @@ -641,8 +636,10 @@ OCCViewer_ClippingDlg::OCCViewer_ClippingDlg(OCCViewer_ViewWindow* parent , OCCV OCCViewer_ViewManager* aViewMgr = (OCCViewer_ViewManager*) myModel->getViewManager(); myInteractor = new OCCViewer_ClipPlaneInteractor( aViewMgr, this ); - connect( myInteractor, SIGNAL( planeClicked( const Handle_AIS_Plane& ) ), SLOT( onPlaneClicked( const Handle_AIS_Plane& ) ) ); - connect( myInteractor, SIGNAL( planeDragged( const Handle_AIS_Plane& ) ), SLOT( onPlaneDragged( const Handle_AIS_Plane& ) ) ); + connect( myInteractor, SIGNAL( planeClicked( const Handle_AIS_Plane& ) ), + SLOT( onPlaneClicked( const Handle_AIS_Plane& ) ) ); + connect( myInteractor, SIGNAL( planeDragged( const Handle_AIS_Plane& ) ), + SLOT( onPlaneDragged( const Handle_AIS_Plane& ) ) ); myLocalPlanes = myModel->getClipPlanes(); synchronize(); @@ -744,6 +741,7 @@ void OCCViewer_ClippingDlg::setPlaneParam( OCCViewer_ClipPlane& thePlane ) thePlane.AbsoluteOrientation.Dx = SpinBox_Dx->value(); thePlane.AbsoluteOrientation.Dy = SpinBox_Dy->value(); thePlane.AbsoluteOrientation.Dz = SpinBox_Dz->value(); + thePlane.AbsoluteOrientation.IsInvert = false; } else { @@ -857,7 +855,9 @@ void OCCViewer_ClippingDlg::displayPreview() clipPlaneParams(aClipPlane, ic, aSize, aBasePnt, aNormal, myModel->trihedronSize()); myPreviewPlane = new AIS_Plane( new Geom_Plane( aBasePnt, aNormal ), aBasePnt ); myPreviewPlane->SetTypeOfSensitivity( Select3D_TOS_INTERIOR ); - myPreviewPlane->SetSize( aSize, aSize ); + Handle(Prs3d_PlaneAspect) aPlaneAspect = new Prs3d_PlaneAspect(); + aPlaneAspect->SetPlaneLength( aSize, aSize ); + myPreviewPlane->Attributes()->SetPlaneAspect( aPlaneAspect ); ic->SetWidth( myPreviewPlane, 10, false ); ic->SetMaterial( myPreviewPlane, Graphic3d_NOM_PLASTIC, false ); ic->SetTransparency( myPreviewPlane, 0.5, false ); @@ -913,7 +913,9 @@ void OCCViewer_ClippingDlg::updatePreview() { //Plane was not created myPreviewPlane = new AIS_Plane( new Geom_Plane( aBasePnt, aNormal ), aBasePnt ); myPreviewPlane->SetTypeOfSensitivity( Select3D_TOS_INTERIOR ); - myPreviewPlane->SetSize( aSize, aSize ); + Handle(Prs3d_PlaneAspect) aPlaneAspect = new Prs3d_PlaneAspect(); + aPlaneAspect->SetPlaneLength( aSize, aSize ); + myPreviewPlane->Attributes()->SetPlaneAspect( aPlaneAspect ); ic->Display( myPreviewPlane, 1, 0, false ); ic->SetWidth( myPreviewPlane, 10, false ); ic->SetMaterial( myPreviewPlane, Graphic3d_NOM_PLASTIC, false ); @@ -1167,7 +1169,7 @@ void OCCViewer_ClippingDlg::ClickOnHelp() { SUIT_Application* app = SUIT_Session::session()->activeApplication(); if ( app ) - app->onHelpContextModule( "GUI", "occ_3d_viewer_page.html", "clipping_planes" ); + app->onHelpContextModule( "GUI", "occ_3d_viewer.html", "clipping-planes" ); } /*! @@ -1261,6 +1263,7 @@ void OCCViewer_ClippingDlg::onReset() SpinBox_Z->setValue(0); myBusy = false; + SetCurrentPlaneParam(); updateClipping(); } @@ -1311,47 +1314,50 @@ void OCCViewer_ClippingDlg::onOrientationAbsoluteChanged( int mode ) SpinBox_Dy->setEnabled( isUserMode ); SpinBox_Dz->setEnabled( isUserMode ); - if ( !isUserMode ) { - - double aDx = 0, aDy = 0, aDz = 0; + int aCurPlaneIndex = ComboBoxPlanes->currentIndex(); + OCCViewer_ClipPlane& aPlane = getClipPlane( aCurPlaneIndex ); + double aDx = 0, aDy = 0, aDz = 0; - if ( mode == 1 ) - { - aDz = 1; - TextLabelZ->setEnabled( true ); - SpinBox_Z->setEnabled( true ); - SpinBox_Z->setFocus(); - } - else if ( mode == 2 ) - { - aDx = 1; - TextLabelX->setEnabled( true ); - SpinBox_X->setEnabled( true ); - SpinBox_X->setFocus(); - } - else if ( mode == 3 ) - { - aDy = 1; - TextLabelY->setEnabled( true ); - SpinBox_Y->setEnabled( true ); - SpinBox_Y->setFocus(); - } - - int aCurPlaneIndex = ComboBoxPlanes->currentIndex(); - OCCViewer_ClipPlane& aPlane = getClipPlane( aCurPlaneIndex ); - if ( aPlane.AbsoluteOrientation.IsInvert == true ) - { - aDx = -aDx; - aDy = -aDy; - aDz = -aDz; - } + if ( mode == 0 ) + { + aDx = aPlane.AbsoluteOrientation.Dx; + aDy = aPlane.AbsoluteOrientation.Dy; + aDz = aPlane.AbsoluteOrientation.Dz; + } + else if ( mode == 1 ) + { + aDz = 1; + TextLabelZ->setEnabled( true ); + SpinBox_Z->setEnabled( true ); + SpinBox_Z->setFocus(); + } + else if ( mode == 2 ) + { + aDx = 1; + TextLabelX->setEnabled( true ); + SpinBox_X->setEnabled( true ); + SpinBox_X->setFocus(); + } + else if ( mode == 3 ) + { + aDy = 1; + TextLabelY->setEnabled( true ); + SpinBox_Y->setEnabled( true ); + SpinBox_Y->setFocus(); + } - myBusy = true; - SpinBox_Dx->setValue( aDx ); - SpinBox_Dy->setValue( aDy ); - SpinBox_Dz->setValue( aDz ); - myBusy = false; + if ( aPlane.AbsoluteOrientation.IsInvert == true ) + { + aDx = -aDx; + aDy = -aDy; + aDz = -aDz; } + + myBusy = true; + SpinBox_Dx->setValue( aDx ); + SpinBox_Dy->setValue( aDy ); + SpinBox_Dz->setValue( aDz ); + myBusy = false; if ( !myIsUpdatingControls ) { @@ -1478,9 +1484,10 @@ void OCCViewer_ClippingDlg::onPlaneDragged( const Handle(AIS_Plane)& thePlane ) { if ( aClipPlane.OrientationType == OCCViewer_ClipPlane::AbsoluteCustom ) { - aClipPlane.AbsoluteOrientation.Dx = aPlaneN.X(); - aClipPlane.AbsoluteOrientation.Dy = aPlaneN.Y(); - aClipPlane.AbsoluteOrientation.Dz = aPlaneN.Z(); + int anInvertCoeff = aClipPlane.AbsoluteOrientation.IsInvert ? 1 : -1; + aClipPlane.AbsoluteOrientation.Dx = anInvertCoeff * aPlaneN.X(); + aClipPlane.AbsoluteOrientation.Dy = anInvertCoeff * aPlaneN.Y(); + aClipPlane.AbsoluteOrientation.Dz = anInvertCoeff * aPlaneN.Z(); } } else