mySectorGroup->SetTransformation(aTrsf);
}
+ // Change value of an angle if it should have different sign.
+ if (anAngle * myPrevState < 0 && Abs(anAngle) < M_PI_2)
+ {
+ Standard_Real aSign = myPrevState > 0 ? -1.0 : 1.0;
+ anAngle = aSign * (M_PI * 2 - anAngle);
+ }
+
gp_Trsf aNewTrsf;
aNewTrsf.SetRotation(aCurrAxis, anAngle);
theTrsf *= aNewTrsf;
return Standard_True;
}
case AIS_DragAction_Stop: {
- // at the end of transformation redisplay for updating sensitive areas
StopTransform(true);
if (mySkinMode == ManipulatorSkin_Flat)
{
mySectorGroup->Clear();
}
- if (aCtx->IsDisplayed(this))
+ else if (aCtx->IsDisplayed(this))
{
+ // at the end of transformation redisplay for updating sensitive areas
aCtx->Redisplay(this, true);
}
return Standard_True;
// define sensitivity by point
Handle(Select3D_SensitivePoint) aPnt =
new Select3D_SensitivePoint(anOwner, myAxes[anIt].ScalerCubePosition());
- aPnt->SetSensitivityFactor(15);
+ aPnt->SetSensitivityFactor(aHighSensitivity);
theSelection->Add(aPnt);
}
// enlarge sensitivity by triangulation
void SetIndent(const Standard_ShortReal theValue) { myIndent = theValue; }
- Standard_ShortReal Size() const
- {
- return myLength + myBoxSize + myDiskThickness + myIndent * 2.0f;
- }
+ Standard_ShortReal Size() const { return myInnerRadius + myDiskThickness + myIndent * 2; }
Standard_ShortReal InnerRadius() const { return myInnerRadius + myIndent * 2.0f; }
const OpenGl_Group* aGroup = aGroupIter.Value();
const gp_Trsf& aTrsf = aGroup->Transformation();
- applyTransformation(aCtx, aTrsf, Standard_True);
+ if (aTrsf.Form() != gp_Identity)
+ {
+ applyTransformation(aCtx, aTrsf, Standard_True);
+ }
const Handle(Graphic3d_TransformPers)& aTrsfPers = aGroup->TransformPersistence();
if (!aTrsfPers.IsNull())
aCtx->ApplyModelViewMatrix();
}
- applyTransformation(aCtx, aTrsf, Standard_False);
+ if (aTrsf.Form() != gp_Identity)
+ {
+ applyTransformation(aCtx, aTrsf, Standard_False);
+ }
}
}
vmanipulator m -attach b
#set mouse coordinates for actions
-set mouse_pick {205 155}
-set mouse_drag1 {205 55}
+set mouse_pick {206 155}
+set mouse_drag1 {206 55}
set mouse_pick2 {250 10}
set mouse_pick3 {250 200}