1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-21 10:13:43 +03:00

0031909: Visualization, AIS_Trihedron - replace maps with arrays

Prs3d_DatumAspect, AIS_Trihedron - redundant maps have been replaced by explicitly sized arrays.

AIS_Trihedron::myHasOwnDatumAspect - removed unused class field.

Prs3d_DatumAttribute, Prs3d_DatumParts, Prs3d_DatumAxes - enumeration values
have been renamed to have full name prefix.

vzbufftrihedron - fixed no more necessary Quantity_Color -> Quantity_NameOfColor convertion.
This commit is contained in:
kgv 2020-11-05 12:30:46 +03:00 committed by bugmaster
parent 84d0342cef
commit 24f9d04c72
18 changed files with 477 additions and 479 deletions

View File

@ -82,9 +82,9 @@ myIsXYZAxis(Standard_True)
} }
DA->SetAxisLength(aLength,aLength,aLength); DA->SetAxisLength(aLength,aLength,aLength);
Quantity_Color col (Quantity_NOC_TURQUOISE); Quantity_Color col (Quantity_NOC_TURQUOISE);
DA->LineAspect(Prs3d_DP_XAxis)->SetColor(col); DA->LineAspect(Prs3d_DatumParts_XAxis)->SetColor(col);
DA->LineAspect(Prs3d_DP_YAxis)->SetColor(col); DA->LineAspect(Prs3d_DatumParts_YAxis)->SetColor(col);
DA->LineAspect(Prs3d_DP_ZAxis)->SetColor(col); DA->LineAspect(Prs3d_DatumParts_ZAxis)->SetColor(col);
myDrawer->SetDatumAspect(DA); myDrawer->SetDatumAspect(DA);
ComputeFields(); ComputeFields();
@ -207,9 +207,9 @@ void AIS_Axis::SetColor(const Quantity_Color &aCol)
myDrawer->LineAspect()->SetColor(aCol); myDrawer->LineAspect()->SetColor(aCol);
const Handle(Prs3d_DatumAspect)& DA = myDrawer->DatumAspect(); const Handle(Prs3d_DatumAspect)& DA = myDrawer->DatumAspect();
DA->LineAspect(Prs3d_DP_XAxis)->SetColor(aCol); DA->LineAspect(Prs3d_DatumParts_XAxis)->SetColor(aCol);
DA->LineAspect(Prs3d_DP_YAxis)->SetColor(aCol); DA->LineAspect(Prs3d_DatumParts_YAxis)->SetColor(aCol);
DA->LineAspect(Prs3d_DP_ZAxis)->SetColor(aCol); DA->LineAspect(Prs3d_DatumParts_ZAxis)->SetColor(aCol);
SynchronizeAspects(); SynchronizeAspects();
} }
@ -225,9 +225,9 @@ void AIS_Axis::SetWidth(const Standard_Real aValue)
myDrawer->LineAspect()->SetWidth(aValue); myDrawer->LineAspect()->SetWidth(aValue);
const Handle(Prs3d_DatumAspect)& DA = myDrawer->DatumAspect(); const Handle(Prs3d_DatumAspect)& DA = myDrawer->DatumAspect();
DA->LineAspect(Prs3d_DP_XAxis)->SetWidth(aValue); DA->LineAspect(Prs3d_DatumParts_XAxis)->SetWidth(aValue);
DA->LineAspect(Prs3d_DP_YAxis)->SetWidth(aValue); DA->LineAspect(Prs3d_DatumParts_YAxis)->SetWidth(aValue);
DA->LineAspect(Prs3d_DP_ZAxis)->SetWidth(aValue); DA->LineAspect(Prs3d_DatumParts_ZAxis)->SetWidth(aValue);
SynchronizeAspects(); SynchronizeAspects();
} }
@ -253,27 +253,27 @@ void AIS_Axis::ComputeFields()
case AIS_TOAX_XAxis: case AIS_TOAX_XAxis:
{ {
oX.Coord(x,y,z); oX.Coord(x,y,z);
myVal = DA->AxisLength(Prs3d_DP_XAxis); myVal = DA->AxisLength(Prs3d_DatumParts_XAxis);
myDir = oX; myDir = oX;
myLineAspect = DA->LineAspect(Prs3d_DP_XAxis); myLineAspect = DA->LineAspect(Prs3d_DatumParts_XAxis);
myText = Standard_CString ("X"); myText = Standard_CString ("X");
break; break;
} }
case AIS_TOAX_YAxis: case AIS_TOAX_YAxis:
{ {
oY.Coord(x,y,z); oY.Coord(x,y,z);
myVal = DA->AxisLength(Prs3d_DP_YAxis); myVal = DA->AxisLength(Prs3d_DatumParts_YAxis);
myDir = oY; myDir = oY;
myLineAspect = DA->LineAspect(Prs3d_DP_YAxis); myLineAspect = DA->LineAspect(Prs3d_DatumParts_YAxis);
myText = Standard_CString ("Y"); myText = Standard_CString ("Y");
break; break;
} }
case AIS_TOAX_ZAxis: case AIS_TOAX_ZAxis:
{ {
oZ.Coord(x,y,z); oZ.Coord(x,y,z);
myVal = DA->AxisLength(Prs3d_DP_ZAxis); myVal = DA->AxisLength(Prs3d_DatumParts_ZAxis);
myDir = oZ; myDir = oZ;
myLineAspect = DA->LineAspect(Prs3d_DP_ZAxis); myLineAspect = DA->LineAspect(Prs3d_DatumParts_ZAxis);
myText = Standard_CString ("Z"); myText = Standard_CString ("Z");
break; break;
} }
@ -306,9 +306,9 @@ void AIS_Axis::UnsetColor()
myDrawer->LineAspect()->SetColor(Quantity_NOC_RED); myDrawer->LineAspect()->SetColor(Quantity_NOC_RED);
hasOwnColor = Standard_False; hasOwnColor = Standard_False;
myDrawer->DatumAspect()->LineAspect(Prs3d_DP_XAxis)->SetColor(Quantity_NOC_TURQUOISE); myDrawer->DatumAspect()->LineAspect(Prs3d_DatumParts_XAxis)->SetColor(Quantity_NOC_TURQUOISE);
myDrawer->DatumAspect()->LineAspect(Prs3d_DP_YAxis)->SetColor(Quantity_NOC_TURQUOISE); myDrawer->DatumAspect()->LineAspect(Prs3d_DatumParts_YAxis)->SetColor(Quantity_NOC_TURQUOISE);
myDrawer->DatumAspect()->LineAspect(Prs3d_DP_ZAxis)->SetColor(Quantity_NOC_TURQUOISE); myDrawer->DatumAspect()->LineAspect(Prs3d_DatumParts_ZAxis)->SetColor(Quantity_NOC_TURQUOISE);
SynchronizeAspects(); SynchronizeAspects();
} }
//======================================================================= //=======================================================================
@ -320,8 +320,8 @@ void AIS_Axis::UnsetWidth()
{ {
myOwnWidth = 0.0f; myOwnWidth = 0.0f;
myDrawer->LineAspect()->SetWidth(1.); myDrawer->LineAspect()->SetWidth(1.);
myDrawer->DatumAspect()->LineAspect(Prs3d_DP_XAxis)->SetWidth(1.); myDrawer->DatumAspect()->LineAspect(Prs3d_DatumParts_XAxis)->SetWidth(1.);
myDrawer->DatumAspect()->LineAspect(Prs3d_DP_YAxis)->SetWidth(1.); myDrawer->DatumAspect()->LineAspect(Prs3d_DatumParts_YAxis)->SetWidth(1.);
myDrawer->DatumAspect()->LineAspect(Prs3d_DP_ZAxis)->SetWidth(1.); myDrawer->DatumAspect()->LineAspect(Prs3d_DatumParts_ZAxis)->SetWidth(1.);
SynchronizeAspects(); SynchronizeAspects();
} }

View File

@ -60,11 +60,11 @@ static Handle(Prs3d_LineAspect) GetLineAspect(const Handle(Prs3d_Drawer)& Dr,
case AIS_TOA_FaceBoundary: case AIS_TOA_FaceBoundary:
return Dr->FaceBoundaryAspect(); return Dr->FaceBoundaryAspect();
case AIS_TOA_FirstAxis: case AIS_TOA_FirstAxis:
return Dr->DatumAspect()->LineAspect(Prs3d_DP_XAxis); return Dr->DatumAspect()->LineAspect(Prs3d_DatumParts_XAxis);
case AIS_TOA_SecondAxis: case AIS_TOA_SecondAxis:
return Dr->DatumAspect()->LineAspect(Prs3d_DP_YAxis); return Dr->DatumAspect()->LineAspect(Prs3d_DatumParts_YAxis);
case AIS_TOA_ThirdAxis: case AIS_TOA_ThirdAxis:
return Dr->DatumAspect()->LineAspect(Prs3d_DP_ZAxis); return Dr->DatumAspect()->LineAspect(Prs3d_DatumParts_ZAxis);
} }
Handle(Prs3d_LineAspect) bid; Handle(Prs3d_LineAspect) bid;
return bid; return bid;

View File

@ -95,7 +95,7 @@ namespace
theDrawer->FreeBoundaryAspect()->SetColor (theColor); theDrawer->FreeBoundaryAspect()->SetColor (theColor);
theDrawer->UnFreeBoundaryAspect()->SetColor (theColor); theDrawer->UnFreeBoundaryAspect()->SetColor (theColor);
theDrawer->PointAspect()->SetColor (theColor); theDrawer->PointAspect()->SetColor (theColor);
for (Standard_Integer aPartIter = 0; aPartIter < Prs3d_DP_None; ++aPartIter) for (Standard_Integer aPartIter = 0; aPartIter < Prs3d_DatumParts_None; ++aPartIter)
{ {
if (Handle(Prs3d_LineAspect) aLineAsp = theDrawer->DatumAspect()->LineAspect ((Prs3d_DatumParts )aPartIter)) if (Handle(Prs3d_LineAspect) aLineAsp = theDrawer->DatumAspect()->LineAspect ((Prs3d_DatumParts )aPartIter))
{ {
@ -2197,9 +2197,9 @@ void AIS_InteractiveContext::InitAttributes()
const Standard_Real aLength = 100.0; const Standard_Real aLength = 100.0;
aTrihAspect->SetAxisLength (aLength, aLength, aLength); aTrihAspect->SetAxisLength (aLength, aLength, aLength);
const Quantity_Color aColor = Quantity_NOC_LIGHTSTEELBLUE4; const Quantity_Color aColor = Quantity_NOC_LIGHTSTEELBLUE4;
aTrihAspect->LineAspect(Prs3d_DP_XAxis)->SetColor (aColor); aTrihAspect->LineAspect(Prs3d_DatumParts_XAxis)->SetColor (aColor);
aTrihAspect->LineAspect(Prs3d_DP_YAxis)->SetColor (aColor); aTrihAspect->LineAspect(Prs3d_DatumParts_YAxis)->SetColor (aColor);
aTrihAspect->LineAspect(Prs3d_DP_ZAxis)->SetColor (aColor); aTrihAspect->LineAspect(Prs3d_DatumParts_ZAxis)->SetColor (aColor);
Handle(Prs3d_PlaneAspect) aPlaneAspect = myDefaultDrawer->PlaneAspect(); Handle(Prs3d_PlaneAspect) aPlaneAspect = myDefaultDrawer->PlaneAspect();
const Standard_Real aPlaneLength = 200.0; const Standard_Real aPlaneLength = 200.0;
@ -2213,7 +2213,7 @@ void AIS_InteractiveContext::InitAttributes()
//======================================================================= //=======================================================================
Standard_Real AIS_InteractiveContext::TrihedronSize() const Standard_Real AIS_InteractiveContext::TrihedronSize() const
{ {
return myDefaultDrawer->DatumAspect()->AxisLength(Prs3d_DP_XAxis); return myDefaultDrawer->DatumAspect()->AxisLength(Prs3d_DatumParts_XAxis);
} }
//======================================================================= //=======================================================================

View File

@ -405,9 +405,9 @@ void AIS_Plane::UnsetSize()
new Prs3d_DatumAspect(); new Prs3d_DatumAspect();
myDrawer->PlaneAspect()->SetPlaneLength(PA->PlaneXLength(),PA->PlaneYLength()); myDrawer->PlaneAspect()->SetPlaneLength(PA->PlaneXLength(),PA->PlaneYLength());
myDrawer->DatumAspect()->SetAxisLength(DA->AxisLength(Prs3d_DP_XAxis), myDrawer->DatumAspect()->SetAxisLength(DA->AxisLength(Prs3d_DatumParts_XAxis),
DA->AxisLength(Prs3d_DP_YAxis), DA->AxisLength(Prs3d_DatumParts_YAxis),
DA->AxisLength(Prs3d_DP_ZAxis)); DA->AxisLength(Prs3d_DatumParts_ZAxis));
} }
myHasOwnSize = Standard_False; myHasOwnSize = Standard_False;
@ -453,9 +453,9 @@ void AIS_Plane::SetColor(const Quantity_Color &aCol)
} }
PA->EdgesAspect()->SetColor(aCol); PA->EdgesAspect()->SetColor(aCol);
DA->LineAspect(Prs3d_DP_XAxis)->SetColor(aCol); DA->LineAspect(Prs3d_DatumParts_XAxis)->SetColor(aCol);
DA->LineAspect(Prs3d_DP_YAxis)->SetColor(aCol); DA->LineAspect(Prs3d_DatumParts_YAxis)->SetColor(aCol);
DA->LineAspect(Prs3d_DP_ZAxis)->SetColor(aCol); DA->LineAspect(Prs3d_DatumParts_ZAxis)->SetColor(aCol);
if(!yenavaitPA) if(!yenavaitPA)
myDrawer->SetPlaneAspect(PA); myDrawer->SetPlaneAspect(PA);
@ -485,9 +485,9 @@ void AIS_Plane::UnsetColor()
Quantity_Color Col = PA->EdgesAspect()->Aspect()->Color(); Quantity_Color Col = PA->EdgesAspect()->Aspect()->Color();
myDrawer->PlaneAspect()->EdgesAspect()->SetColor(Col); myDrawer->PlaneAspect()->EdgesAspect()->SetColor(Col);
myDrawer->DatumAspect()->LineAspect(Prs3d_DP_XAxis)->SetColor(Col); myDrawer->DatumAspect()->LineAspect(Prs3d_DatumParts_XAxis)->SetColor(Col);
myDrawer->DatumAspect()->LineAspect(Prs3d_DP_YAxis)->SetColor(Col); myDrawer->DatumAspect()->LineAspect(Prs3d_DatumParts_YAxis)->SetColor(Col);
myDrawer->DatumAspect()->LineAspect(Prs3d_DP_ZAxis)->SetColor(Col); myDrawer->DatumAspect()->LineAspect(Prs3d_DatumParts_ZAxis)->SetColor(Col);
} }
@ -542,9 +542,9 @@ void AIS_Plane::ComputeFields()
oX.Coord(x1,y1,z1); oX.Coord(x1,y1,z1);
oY.Coord(x2,y2,z2); oY.Coord(x2,y2,z2);
oZ.Coord(x3,y3,z3); oZ.Coord(x3,y3,z3);
Standard_Real DS1 = DA->AxisLength(Prs3d_DP_XAxis); Standard_Real DS1 = DA->AxisLength(Prs3d_DatumParts_XAxis);
Standard_Real DS2 = DA->AxisLength(Prs3d_DP_YAxis); Standard_Real DS2 = DA->AxisLength(Prs3d_DatumParts_YAxis);
Standard_Real DS3 = DA->AxisLength(Prs3d_DP_ZAxis); Standard_Real DS3 = DA->AxisLength(Prs3d_DatumParts_ZAxis);
// gp_Pnt aPt2,aPt3; // gp_Pnt aPt2,aPt3;
switch (myTypeOfPlane) { switch (myTypeOfPlane) {

View File

@ -67,9 +67,9 @@ AIS_PlaneTrihedron::AIS_PlaneTrihedron(const Handle(Geom_Plane)& aPlane)
Standard_Real aLength = UnitsAPI::AnyToLS (100. ,"mm"); Standard_Real aLength = UnitsAPI::AnyToLS (100. ,"mm");
DA->SetAxisLength(aLength,aLength,aLength); DA->SetAxisLength(aLength,aLength,aLength);
Quantity_Color col (Quantity_NOC_ROYALBLUE1); Quantity_Color col (Quantity_NOC_ROYALBLUE1);
DA->LineAspect(Prs3d_DP_XAxis)->SetColor(col); DA->LineAspect(Prs3d_DatumParts_XAxis)->SetColor(col);
DA->LineAspect(Prs3d_DP_YAxis)->SetColor(col); DA->LineAspect(Prs3d_DatumParts_YAxis)->SetColor(col);
DA->SetDrawDatumAxes(Prs3d_DA_XYAxis); DA->SetDrawDatumAxes(Prs3d_DatumAxes_XYAxes);
myDrawer->SetDatumAspect(DA); // odl - specific is created because it is modified myDrawer->SetDatumAspect(DA); // odl - specific is created because it is modified
myShapes[0] = Position(); myShapes[0] = Position();
myShapes[1] = XAxis(); myShapes[1] = XAxis();
@ -142,7 +142,7 @@ void AIS_PlaneTrihedron::SetLength(const Standard_Real theLength) {
} }
Standard_Real AIS_PlaneTrihedron::GetLength() const { Standard_Real AIS_PlaneTrihedron::GetLength() const {
return myDrawer->DatumAspect()->AxisLength(Prs3d_DP_XAxis); return myDrawer->DatumAspect()->AxisLength(Prs3d_DatumParts_XAxis);
} }
//======================================================================= //=======================================================================
@ -156,7 +156,7 @@ void AIS_PlaneTrihedron::Compute(const Handle(PrsMgr_PresentationManager3d)&,
aPresentation->SetDisplayPriority(5); aPresentation->SetDisplayPriority(5);
// drawing axis in X direction // drawing axis in X direction
gp_Pnt first, last; gp_Pnt first, last;
Standard_Real value = myDrawer->DatumAspect()->AxisLength(Prs3d_DP_XAxis); Standard_Real value = myDrawer->DatumAspect()->AxisLength(Prs3d_DatumParts_XAxis);
gp_Dir xDir = myPlane->Position().Ax2().XDirection(); gp_Dir xDir = myPlane->Position().Ax2().XDirection();
gp_Pnt orig = myPlane->Position().Ax2().Location(); gp_Pnt orig = myPlane->Position().Ax2().Location();
@ -166,15 +166,23 @@ void AIS_PlaneTrihedron::Compute(const Handle(PrsMgr_PresentationManager3d)&,
first.SetCoord( xo, yo, zo ); first.SetCoord( xo, yo, zo );
last.SetCoord( xo + x * value, yo + y * value, zo + z * value ); last.SetCoord( xo + x * value, yo + y * value, zo + z * value );
DsgPrs_XYZAxisPresentation::Add( aPresentation, myDrawer->DatumAspect()->LineAspect(Prs3d_DP_XAxis), myDrawer->ArrowAspect(), myDrawer->TextAspect(), xDir, value, myXLabel.ToCString(), first, last ); DsgPrs_XYZAxisPresentation::Add (aPresentation,
myDrawer->DatumAspect()->LineAspect(Prs3d_DatumParts_XAxis),
myDrawer->ArrowAspect(),
myDrawer->TextAspect(),
xDir, value, myXLabel.ToCString(), first, last);
// drawing axis in Y direction // drawing axis in Y direction
value = myDrawer->DatumAspect()->AxisLength(Prs3d_DP_YAxis); value = myDrawer->DatumAspect()->AxisLength(Prs3d_DatumParts_YAxis);
gp_Dir yDir = myPlane->Position().Ax2().YDirection(); gp_Dir yDir = myPlane->Position().Ax2().YDirection();
yDir.Coord( x, y, z ); yDir.Coord( x, y, z );
last.SetCoord( xo + x * value, yo + y * value, zo + z * value ); last.SetCoord( xo + x * value, yo + y * value, zo + z * value );
DsgPrs_XYZAxisPresentation::Add( aPresentation, myDrawer->DatumAspect()->LineAspect(Prs3d_DP_XAxis), myDrawer->ArrowAspect(), myDrawer->TextAspect(), yDir, value, myYLabel.ToCString(), first, last ); DsgPrs_XYZAxisPresentation::Add (aPresentation,
myDrawer->DatumAspect()->LineAspect(Prs3d_DatumParts_XAxis),
myDrawer->ArrowAspect(),
myDrawer->TextAspect(),
yDir, value, myYLabel.ToCString(), first, last);
aPresentation->SetInfiniteState (Standard_True); aPresentation->SetInfiniteState (Standard_True);
} }
@ -238,8 +246,8 @@ void AIS_PlaneTrihedron::SetColor(const Quantity_Color &aCol)
{ {
hasOwnColor=Standard_True; hasOwnColor=Standard_True;
myDrawer->SetColor (aCol); myDrawer->SetColor (aCol);
myDrawer->DatumAspect()->LineAspect(Prs3d_DP_XAxis)->SetColor(aCol); myDrawer->DatumAspect()->LineAspect(Prs3d_DatumParts_XAxis)->SetColor(aCol);
myDrawer->DatumAspect()->LineAspect(Prs3d_DP_YAxis)->SetColor(aCol); myDrawer->DatumAspect()->LineAspect(Prs3d_DatumParts_YAxis)->SetColor(aCol);
SynchronizeAspects(); SynchronizeAspects();
} }
@ -254,12 +262,12 @@ void ExtremityPoints(TColgp_Array1OfPnt& PP,const Handle(Geom_Plane)& myPlane,c
gp_Ax2 theax(myPlane->Position().Ax2()); gp_Ax2 theax(myPlane->Position().Ax2());
PP(1) = theax.Location(); PP(1) = theax.Location();
Standard_Real len = myDrawer->DatumAspect()->AxisLength(Prs3d_DP_XAxis); Standard_Real len = myDrawer->DatumAspect()->AxisLength(Prs3d_DatumParts_XAxis);
gp_Vec vec = theax.XDirection(); gp_Vec vec = theax.XDirection();
vec *= len; vec *= len;
PP(2) = PP(1).Translated(vec); PP(2) = PP(1).Translated(vec);
len = myDrawer->DatumAspect()->AxisLength(Prs3d_DP_YAxis); len = myDrawer->DatumAspect()->AxisLength(Prs3d_DatumParts_YAxis);
vec = theax.YDirection(); vec = theax.YDirection();
vec *= len; vec *= len;
PP(3) = PP(1).Translated(vec); PP(3) = PP(1).Translated(vec);

View File

@ -52,31 +52,32 @@ IMPLEMENT_STANDARD_RTTIEXT(AIS_Trihedron, AIS_InteractiveObject)
//purpose : //purpose :
//======================================================================= //=======================================================================
AIS_Trihedron::AIS_Trihedron (const Handle(Geom_Axis2Placement)& theComponent) AIS_Trihedron::AIS_Trihedron (const Handle(Geom_Axis2Placement)& theComponent)
: myHasOwnSize (Standard_False), : myComponent (theComponent),
myHasOwnTextColor (Standard_False),
myHasOwnArrowColor (Standard_False),
myTrihDispMode (Prs3d_DM_WireFrame), myTrihDispMode (Prs3d_DM_WireFrame),
myComponent (theComponent) myHasOwnSize (Standard_False),
myHasOwnTextColor (Standard_False),
myHasOwnArrowColor (Standard_False)
{ {
myAutoHilight = Standard_False; myAutoHilight = Standard_False;
// selection priorities // selection priorities
mySelectionPriority.Bind (Prs3d_DP_None, 5); // complete triedron: priority 5 (same as faces) memset (mySelectionPriority, 0, sizeof(mySelectionPriority));
mySelectionPriority.Bind (Prs3d_DP_Origin, 8); // origin: priority 8 mySelectionPriority[Prs3d_DatumParts_None] = 5; // complete trihedron: priority 5 (same as faces)
for (int aPartIter = Prs3d_DP_XAxis; aPartIter <= Prs3d_DP_ZAxis; ++aPartIter) mySelectionPriority[Prs3d_DatumParts_Origin] = 8; // origin: priority 8
for (int aPartIter = Prs3d_DatumParts_XAxis; aPartIter <= Prs3d_DatumParts_ZAxis; ++aPartIter)
{ {
mySelectionPriority.Bind ((Prs3d_DatumParts )aPartIter, 7); // axes: priority: 7 mySelectionPriority[aPartIter] = 7; // axes: priority: 7
} }
for (int aPartIter = Prs3d_DP_XOYAxis; aPartIter <= Prs3d_DP_XOZAxis; ++aPartIter) for (int aPartIter = Prs3d_DatumParts_XOYAxis; aPartIter <= Prs3d_DatumParts_XOZAxis; ++aPartIter)
{ {
mySelectionPriority.Bind ((Prs3d_DatumParts )aPartIter, 5); // planes: priority: 5 mySelectionPriority[aPartIter] = 5; // planes: priority: 5
} }
myHiddenLineAspect = new Graphic3d_AspectLine3d (Quantity_NOC_WHITE, Aspect_TOL_EMPTY, 1.0f); myHiddenLineAspect = new Graphic3d_AspectLine3d (Quantity_NOC_WHITE, Aspect_TOL_EMPTY, 1.0f);
// trihedron labels // trihedron labels
myLabel.Bind (Prs3d_DP_XAxis, "X"); myLabels[Prs3d_DatumParts_XAxis] = "X";
myLabel.Bind (Prs3d_DP_YAxis, "Y"); myLabels[Prs3d_DatumParts_YAxis] = "Y";
myLabel.Bind (Prs3d_DP_ZAxis, "Z"); myLabels[Prs3d_DatumParts_ZAxis] = "Z";
} }
//======================================================================= //=======================================================================
@ -96,32 +97,35 @@ void AIS_Trihedron::SetComponent (const Handle(Geom_Axis2Placement)& theComponen
void AIS_Trihedron::setOwnDatumAspect() void AIS_Trihedron::setOwnDatumAspect()
{ {
if (myDrawer->HasOwnDatumAspect()) if (myDrawer->HasOwnDatumAspect())
{
return; return;
}
Handle(Prs3d_DatumAspect) aNewAspect = new Prs3d_DatumAspect(); Handle(Prs3d_DatumAspect) aNewAspect = new Prs3d_DatumAspect();
myDrawer->SetDatumAspect (aNewAspect); myDrawer->SetDatumAspect (aNewAspect);
if (myDrawer->Link().IsNull()) if (myDrawer->Link().IsNull())
{
return; return;
}
myDrawer->DatumAspect()->SetDrawArrows (myDrawer->Link()->DatumAspect()->ToDrawArrows()); const Handle(Prs3d_DatumAspect)& aLinkAspect = myDrawer->Link()->DatumAspect();
myDrawer->DatumAspect()->SetDrawLabels (myDrawer->Link()->DatumAspect()->ToDrawLabels()); aNewAspect->SetDrawArrows (aLinkAspect->ToDrawArrows());
*myDrawer->DatumAspect()->TextAspect()->Aspect() = aNewAspect->SetDrawLabels (aLinkAspect->ToDrawLabels());
*myDrawer->Link()->DatumAspect()->TextAspect()->Aspect(); *aNewAspect->TextAspect()->Aspect() = *aLinkAspect->TextAspect()->Aspect();
*myDrawer->DatumAspect()->PointAspect()->Aspect() = *aNewAspect->PointAspect()->Aspect() = *aLinkAspect->PointAspect()->Aspect();
*myDrawer->Link()->DatumAspect()->PointAspect()->Aspect(); *aNewAspect->ArrowAspect()->Aspect() = *aLinkAspect->ArrowAspect()->Aspect();
*myDrawer->DatumAspect()->ArrowAspect()->Aspect() =
*myDrawer->Link()->DatumAspect()->ArrowAspect()->Aspect();
for (int aPartIter = Prs3d_DP_Origin; aPartIter <= Prs3d_DP_XOZAxis; ++aPartIter) for (int aPartIter = Prs3d_DatumParts_Origin; aPartIter <= Prs3d_DatumParts_XOZAxis; ++aPartIter)
{ {
const Prs3d_DatumParts aPart = (Prs3d_DatumParts )aPartIter; const Prs3d_DatumParts aPart = (Prs3d_DatumParts )aPartIter;
if (!aNewAspect->LineAspect (aPart).IsNull()) if (!aNewAspect->LineAspect (aPart).IsNull())
*myDrawer->DatumAspect()->LineAspect(aPart)->Aspect() = {
*myDrawer->Link()->DatumAspect()->LineAspect(aPart)->Aspect(); *aNewAspect->LineAspect (aPart)->Aspect() = *aLinkAspect->LineAspect (aPart)->Aspect();
}
if (!aNewAspect->ShadingAspect (aPart).IsNull()) if (!aNewAspect->ShadingAspect (aPart).IsNull())
*myDrawer->DatumAspect()->ShadingAspect(aPart)->Aspect() = {
*myDrawer->Link()->DatumAspect()->ShadingAspect(aPart)->Aspect(); *aNewAspect->ShadingAspect (aPart)->Aspect() = *aLinkAspect->ShadingAspect (aPart)->Aspect();
}
} }
} }
@ -129,12 +133,12 @@ void AIS_Trihedron::setOwnDatumAspect()
//function : SetSize //function : SetSize
//purpose : //purpose :
//======================================================================= //=======================================================================
void AIS_Trihedron::SetSize(const Standard_Real aValue) void AIS_Trihedron::SetSize(const Standard_Real theValue)
{ {
myHasOwnSize = Standard_True; myHasOwnSize = Standard_True;
setOwnDatumAspect(); setOwnDatumAspect();
myDrawer->DatumAspect()->SetAxisLength(aValue, aValue, aValue); myDrawer->DatumAspect()->SetAxisLength (theValue, theValue, theValue);
SetToUpdate(); SetToUpdate();
UpdateSelection(); UpdateSelection();
@ -157,9 +161,9 @@ void AIS_Trihedron::UnsetSize()
const Handle(Prs3d_DatumAspect) DA = myDrawer->HasLink() const Handle(Prs3d_DatumAspect) DA = myDrawer->HasLink()
? myDrawer->Link()->DatumAspect() ? myDrawer->Link()->DatumAspect()
: new Prs3d_DatumAspect(); : new Prs3d_DatumAspect();
myDrawer->DatumAspect()->SetAxisLength (DA->AxisLength (Prs3d_DP_XAxis), myDrawer->DatumAspect()->SetAxisLength (DA->AxisLength (Prs3d_DatumParts_XAxis),
DA->AxisLength (Prs3d_DP_YAxis), DA->AxisLength (Prs3d_DatumParts_YAxis),
DA->AxisLength (Prs3d_DP_ZAxis)); DA->AxisLength (Prs3d_DatumParts_ZAxis));
} }
else else
{ {
@ -174,7 +178,7 @@ void AIS_Trihedron::UnsetSize()
//======================================================================= //=======================================================================
Standard_Real AIS_Trihedron::Size() const Standard_Real AIS_Trihedron::Size() const
{ {
return myDrawer->DatumAspect()->AxisLength(Prs3d_DP_XAxis); return myDrawer->DatumAspect()->AxisLength(Prs3d_DatumParts_XAxis);
} }
//======================================================================= //=======================================================================
@ -210,10 +214,9 @@ void AIS_Trihedron::ComputeSelection (const Handle(SelectMgr_Selection)& theSele
{ {
case AIS_TrihedronSelectionMode_EntireObject: case AIS_TrihedronSelectionMode_EntireObject:
{ {
Handle(SelectMgr_EntityOwner) anOwner = new SelectMgr_EntityOwner ( Handle(SelectMgr_EntityOwner) anOwner = new SelectMgr_EntityOwner (this, mySelectionPriority[Prs3d_DatumParts_None]);
this, mySelectionPriority.Find (Prs3d_DP_None));
const bool isShadingMode = myTrihDispMode == Prs3d_DM_Shaded; const bool isShadingMode = myTrihDispMode == Prs3d_DM_Shaded;
for (int aPartIter = isShadingMode ? Prs3d_DP_Origin : Prs3d_DP_XAxis; aPartIter <= Prs3d_DP_ZAxis; for (int aPartIter = isShadingMode ? Prs3d_DatumParts_Origin : Prs3d_DatumParts_XAxis; aPartIter <= Prs3d_DatumParts_ZAxis;
++aPartIter) ++aPartIter)
{ {
const Prs3d_DatumParts aPart = (Prs3d_DatumParts )aPartIter; const Prs3d_DatumParts aPart = (Prs3d_DatumParts )aPartIter;
@ -227,11 +230,10 @@ void AIS_Trihedron::ComputeSelection (const Handle(SelectMgr_Selection)& theSele
} }
case AIS_TrihedronSelectionMode_Origin: case AIS_TrihedronSelectionMode_Origin:
{ {
const Prs3d_DatumParts aPart = Prs3d_DP_Origin; const Prs3d_DatumParts aPart = Prs3d_DatumParts_Origin;
if (anAspect->DrawDatumPart (aPart)) if (anAspect->DrawDatumPart (aPart))
{ {
Handle(SelectMgr_EntityOwner) anOwner = new AIS_TrihedronOwner (this, aPart, Handle(SelectMgr_EntityOwner) anOwner = new AIS_TrihedronOwner (this, aPart, mySelectionPriority[aPart]);
mySelectionPriority.Find (aPart));
Handle(Graphic3d_ArrayOfPrimitives) aPrimitives = arrayOfPrimitives(aPart); Handle(Graphic3d_ArrayOfPrimitives) aPrimitives = arrayOfPrimitives(aPart);
theSelection->Add (createSensitiveEntity (aPart, anOwner)); theSelection->Add (createSensitiveEntity (aPart, anOwner));
} }
@ -239,15 +241,14 @@ void AIS_Trihedron::ComputeSelection (const Handle(SelectMgr_Selection)& theSele
} }
case AIS_TrihedronSelectionMode_Axes: case AIS_TrihedronSelectionMode_Axes:
{ {
for (int aPartIter = Prs3d_DP_XAxis; aPartIter <= Prs3d_DP_ZAxis; ++aPartIter) for (int aPartIter = Prs3d_DatumParts_XAxis; aPartIter <= Prs3d_DatumParts_ZAxis; ++aPartIter)
{ {
const Prs3d_DatumParts aPart = (Prs3d_DatumParts )aPartIter; const Prs3d_DatumParts aPart = (Prs3d_DatumParts )aPartIter;
if (!anAspect->DrawDatumPart (aPart)) if (!anAspect->DrawDatumPart (aPart))
{ {
continue; continue;
} }
Handle(SelectMgr_EntityOwner) anOwner = new AIS_TrihedronOwner (this, aPart, Handle(SelectMgr_EntityOwner) anOwner = new AIS_TrihedronOwner (this, aPart, mySelectionPriority[aPart]);
mySelectionPriority.Find (aPart));
theSelection->Add (createSensitiveEntity (aPart, anOwner)); theSelection->Add (createSensitiveEntity (aPart, anOwner));
} }
break; break;
@ -256,15 +257,14 @@ void AIS_Trihedron::ComputeSelection (const Handle(SelectMgr_Selection)& theSele
{ {
// create owner for each trihedron plane // create owner for each trihedron plane
{ {
for (int aPartIter = Prs3d_DP_XOYAxis; aPartIter <= Prs3d_DP_XOZAxis; ++aPartIter) for (int aPartIter = Prs3d_DatumParts_XOYAxis; aPartIter <= Prs3d_DatumParts_XOZAxis; ++aPartIter)
{ {
const Prs3d_DatumParts aPart = (Prs3d_DatumParts )aPartIter; const Prs3d_DatumParts aPart = (Prs3d_DatumParts )aPartIter;
if (!anAspect->DrawDatumPart (aPart)) if (!anAspect->DrawDatumPart (aPart))
{ {
continue; continue;
} }
Handle(SelectMgr_EntityOwner) anOwner = new AIS_TrihedronOwner (this, aPart, Handle(SelectMgr_EntityOwner) anOwner = new AIS_TrihedronOwner (this, aPart, mySelectionPriority[aPart]);
mySelectionPriority.Find (aPart));
theSelection->Add (createSensitiveEntity (aPart, anOwner)); theSelection->Add (createSensitiveEntity (aPart, anOwner));
} }
} }
@ -284,7 +284,7 @@ void AIS_Trihedron::HilightOwnerWithColor (const Handle(PrsMgr_PresentationManag
Handle(AIS_TrihedronOwner) anOwner = Handle(AIS_TrihedronOwner)::DownCast (theOwner); Handle(AIS_TrihedronOwner) anOwner = Handle(AIS_TrihedronOwner)::DownCast (theOwner);
if (anOwner.IsNull()) if (anOwner.IsNull())
{ {
/// default 0 selection mode // default 0 selection mode
Standard_Integer aHiMode = HasHilightMode() ? HilightMode() : 0; Standard_Integer aHiMode = HasHilightMode() ? HilightMode() : 0;
thePM->Color (this, theStyle, aHiMode, NULL, Graphic3d_ZLayerId_Top); thePM->Color (this, theStyle, aHiMode, NULL, Graphic3d_ZLayerId_Top);
return; return;
@ -299,7 +299,7 @@ void AIS_Trihedron::HilightOwnerWithColor (const Handle(PrsMgr_PresentationManag
aPresentation->Clear(); aPresentation->Clear();
const Prs3d_DatumParts aPart = anOwner->DatumPart(); const Prs3d_DatumParts aPart = anOwner->DatumPart();
Handle(Graphic3d_Group) aGroup = aPresentation->CurrentGroup(); Handle(Graphic3d_Group) aGroup = aPresentation->CurrentGroup();
if (aPart >= Prs3d_DP_XOYAxis && aPart <= Prs3d_DP_XOZAxis) if (aPart >= Prs3d_DatumParts_XOYAxis && aPart <= Prs3d_DatumParts_XOZAxis)
{ {
// planes selection is equal in both shading and wireframe mode // planes selection is equal in both shading and wireframe mode
aGroup->SetGroupPrimitivesAspect (theStyle->LineAspect()->Aspect()); aGroup->SetGroupPrimitivesAspect (theStyle->LineAspect()->Aspect());
@ -312,7 +312,7 @@ void AIS_Trihedron::HilightOwnerWithColor (const Handle(PrsMgr_PresentationManag
} }
else else
{ {
if (aPart == Prs3d_DP_Origin) if (aPart == Prs3d_DatumParts_Origin)
{ {
aGroup->SetGroupPrimitivesAspect (theStyle->PointAspect()->Aspect()); aGroup->SetGroupPrimitivesAspect (theStyle->PointAspect()->Aspect());
} }
@ -360,14 +360,15 @@ void AIS_Trihedron::HilightSelected (const Handle(PrsMgr_PresentationManager3d)&
} }
const Prs3d_DatumParts aPart = aTrihedronOwner->DatumPart(); const Prs3d_DatumParts aPart = aTrihedronOwner->DatumPart();
Handle(Graphic3d_Group) aGroup; if (myPartToGroup[aPart].IsNull()
if (mySelectedParts.Contains (aPart) || !myPartToGroup.Find (aPart, aGroup)) || mySelectedParts.Contains (aPart))
{ {
continue; continue;
} }
if (aPart >= Prs3d_DP_XOYAxis const Handle(Graphic3d_Group)& aGroup = myPartToGroup[aPart];
&& aPart <= Prs3d_DP_XOZAxis) if (aPart >= Prs3d_DatumParts_XOYAxis
&& aPart <= Prs3d_DatumParts_XOZAxis)
{ {
aGroup->SetGroupPrimitivesAspect (anAspect->LineAspect()->Aspect()); aGroup->SetGroupPrimitivesAspect (anAspect->LineAspect()->Aspect());
} }
@ -379,7 +380,7 @@ void AIS_Trihedron::HilightSelected (const Handle(PrsMgr_PresentationManager3d)&
} }
else else
{ {
if (aPart == Prs3d_DP_Origin) if (aPart == Prs3d_DatumParts_Origin)
{ {
aGroup->SetGroupPrimitivesAspect (anAspect->PointAspect()->Aspect()); aGroup->SetGroupPrimitivesAspect (anAspect->PointAspect()->Aspect());
} }
@ -405,9 +406,9 @@ void AIS_Trihedron::ClearSelected()
anIterator.Next()) anIterator.Next())
{ {
const Prs3d_DatumParts aPart = anIterator.Value(); const Prs3d_DatumParts aPart = anIterator.Value();
Handle(Graphic3d_Group) aGroup = myPartToGroup.Find (aPart); const Handle(Graphic3d_Group)& aGroup = myPartToGroup[aPart];
if (aPart >= Prs3d_DP_XOYAxis if (aPart >= Prs3d_DatumParts_XOYAxis
&& aPart <= Prs3d_DP_XOZAxis) && aPart <= Prs3d_DatumParts_XOZAxis)
{ {
aGroup->SetGroupPrimitivesAspect (myHiddenLineAspect); aGroup->SetGroupPrimitivesAspect (myHiddenLineAspect);
} }
@ -417,7 +418,7 @@ void AIS_Trihedron::ClearSelected()
} }
else else
{ {
if (aPart == Prs3d_DP_Origin) if (aPart == Prs3d_DatumParts_Origin)
{ {
aGroup->SetGroupPrimitivesAspect (anAspect->PointAspect()->Aspect()); aGroup->SetGroupPrimitivesAspect (anAspect->PointAspect()->Aspect());
} }
@ -437,17 +438,21 @@ void AIS_Trihedron::ClearSelected()
void AIS_Trihedron::computePresentation (const Handle(PrsMgr_PresentationManager3d)& /*thePrsMgr*/, void AIS_Trihedron::computePresentation (const Handle(PrsMgr_PresentationManager3d)& /*thePrsMgr*/,
const Handle(Prs3d_Presentation)& thePrs) const Handle(Prs3d_Presentation)& thePrs)
{ {
myPartToGroup.Clear(); for (Standard_Integer aPartIter = 0; aPartIter < Prs3d_DatumParts_NB; ++aPartIter)
{
myPartToGroup[aPartIter].Nullify();
}
Handle(Prs3d_DatumAspect) anAspect = myDrawer->DatumAspect(); Handle(Prs3d_DatumAspect) anAspect = myDrawer->DatumAspect();
const bool isShadingMode = myTrihDispMode == Prs3d_DM_Shaded; const bool isShadingMode = myTrihDispMode == Prs3d_DM_Shaded;
// display origin // display origin
{ {
// Origin is visualized only in shading mode // Origin is visualized only in shading mode
Handle(Graphic3d_Group) aGroup = thePrs->NewGroup(); Handle(Graphic3d_Group) aGroup = thePrs->NewGroup();
const Prs3d_DatumParts aPart = Prs3d_DP_Origin; const Prs3d_DatumParts aPart = Prs3d_DatumParts_Origin;
if (anAspect->DrawDatumPart(aPart)) if (anAspect->DrawDatumPart(aPart))
{ {
myPartToGroup.Bind (aPart, aGroup); myPartToGroup[aPart] = aGroup;
if (isShadingMode) if (isShadingMode)
{ {
aGroup->SetGroupPrimitivesAspect (anAspect->ShadingAspect (aPart)->Aspect()); aGroup->SetGroupPrimitivesAspect (anAspect->ShadingAspect (aPart)->Aspect());
@ -462,7 +467,7 @@ void AIS_Trihedron::computePresentation (const Handle(PrsMgr_PresentationManager
// display axes // display axes
{ {
for (Standard_Integer anAxisIter = Prs3d_DP_XAxis; anAxisIter <= Prs3d_DP_ZAxis; ++anAxisIter) for (Standard_Integer anAxisIter = Prs3d_DatumParts_XAxis; anAxisIter <= Prs3d_DatumParts_ZAxis; ++anAxisIter)
{ {
Prs3d_DatumParts aPart = (Prs3d_DatumParts )anAxisIter; Prs3d_DatumParts aPart = (Prs3d_DatumParts )anAxisIter;
if (!anAspect->DrawDatumPart (aPart)) if (!anAspect->DrawDatumPart (aPart))
@ -471,7 +476,7 @@ void AIS_Trihedron::computePresentation (const Handle(PrsMgr_PresentationManager
} }
Handle(Graphic3d_Group) anAxisGroup = thePrs->NewGroup(); Handle(Graphic3d_Group) anAxisGroup = thePrs->NewGroup();
myPartToGroup.Bind (aPart, anAxisGroup); myPartToGroup[aPart] = anAxisGroup;
if (isShadingMode) if (isShadingMode)
{ {
anAxisGroup->SetGroupPrimitivesAspect (anAspect->ShadingAspect (aPart)->Aspect()); anAxisGroup->SetGroupPrimitivesAspect (anAspect->ShadingAspect (aPart)->Aspect());
@ -500,7 +505,7 @@ void AIS_Trihedron::computePresentation (const Handle(PrsMgr_PresentationManager
{ {
Handle(Geom_Axis2Placement) aComponent = myComponent; Handle(Geom_Axis2Placement) aComponent = myComponent;
const gp_Pnt anOrigin = aComponent->Location(); const gp_Pnt anOrigin = aComponent->Location();
for (Standard_Integer anAxisIter = Prs3d_DP_XAxis; anAxisIter <= Prs3d_DP_ZAxis; ++anAxisIter) for (Standard_Integer anAxisIter = Prs3d_DatumParts_XAxis; anAxisIter <= Prs3d_DatumParts_ZAxis; ++anAxisIter)
{ {
const Prs3d_DatumParts aPart = (Prs3d_DatumParts )anAxisIter; const Prs3d_DatumParts aPart = (Prs3d_DatumParts )anAxisIter;
if (!anAspect->DrawDatumPart (aPart)) if (!anAspect->DrawDatumPart (aPart))
@ -509,13 +514,13 @@ void AIS_Trihedron::computePresentation (const Handle(PrsMgr_PresentationManager
} }
const Standard_Real anAxisLength = anAspect->AxisLength (aPart); const Standard_Real anAxisLength = anAspect->AxisLength (aPart);
const TCollection_ExtendedString& aLabel = myLabel.Find (aPart); const TCollection_ExtendedString& aLabel = myLabels[aPart];
gp_Dir aDir; gp_Dir aDir;
switch (aPart) switch (aPart)
{ {
case Prs3d_DP_XAxis: aDir = aComponent->XDirection(); break; case Prs3d_DatumParts_XAxis: aDir = aComponent->XDirection(); break;
case Prs3d_DP_YAxis: aDir = aComponent->YDirection(); break; case Prs3d_DatumParts_YAxis: aDir = aComponent->YDirection(); break;
case Prs3d_DP_ZAxis: aDir = aComponent->Direction(); break; case Prs3d_DatumParts_ZAxis: aDir = aComponent->Direction(); break;
default: break; default: break;
} }
Handle(Graphic3d_Group) aLabelGroup = thePrs->NewGroup(); Handle(Graphic3d_Group) aLabelGroup = thePrs->NewGroup();
@ -525,7 +530,7 @@ void AIS_Trihedron::computePresentation (const Handle(PrsMgr_PresentationManager
} }
// planes invisible group for planes selection // planes invisible group for planes selection
for (Standard_Integer anAxisIter = Prs3d_DP_XOYAxis; anAxisIter <= Prs3d_DP_XOZAxis; ++anAxisIter) for (Standard_Integer anAxisIter = Prs3d_DatumParts_XOYAxis; anAxisIter <= Prs3d_DatumParts_XOZAxis; ++anAxisIter)
{ {
Prs3d_DatumParts aPart = (Prs3d_DatumParts)anAxisIter; Prs3d_DatumParts aPart = (Prs3d_DatumParts)anAxisIter;
if (!anAspect->DrawDatumPart(aPart)) if (!anAspect->DrawDatumPart(aPart))
@ -534,7 +539,7 @@ void AIS_Trihedron::computePresentation (const Handle(PrsMgr_PresentationManager
} }
Handle(Graphic3d_Group) aGroup = thePrs->NewGroup(); Handle(Graphic3d_Group) aGroup = thePrs->NewGroup();
myPartToGroup.Bind (aPart, aGroup); myPartToGroup[aPart] = aGroup;
aGroup->AddPrimitiveArray (arrayOfPrimitives (aPart)); aGroup->AddPrimitiveArray (arrayOfPrimitives (aPart));
aGroup->SetGroupPrimitivesAspect (myHiddenLineAspect); aGroup->SetGroupPrimitivesAspect (myHiddenLineAspect);
@ -551,7 +556,7 @@ void AIS_Trihedron::SetDatumPartColor (const Prs3d_DatumParts thePart,
setOwnDatumAspect(); setOwnDatumAspect();
myDrawer->DatumAspect()->ShadingAspect (thePart)->SetColor (theColor); myDrawer->DatumAspect()->ShadingAspect (thePart)->SetColor (theColor);
if (thePart != Prs3d_DP_Origin) if (thePart != Prs3d_DatumParts_Origin)
{ {
myDrawer->DatumAspect()->LineAspect (thePart)->SetColor (theColor); myDrawer->DatumAspect()->LineAspect (thePart)->SetColor (theColor);
} }
@ -591,7 +596,7 @@ void AIS_Trihedron::SetOriginColor (const Quantity_Color& theColor)
{ {
if (myTrihDispMode == Prs3d_DM_Shaded) if (myTrihDispMode == Prs3d_DM_Shaded)
{ {
SetDatumPartColor (Prs3d_DP_Origin, theColor); SetDatumPartColor (Prs3d_DatumParts_Origin, theColor);
} }
} }
@ -601,7 +606,7 @@ void AIS_Trihedron::SetOriginColor (const Quantity_Color& theColor)
//======================================================================= //=======================================================================
void AIS_Trihedron::SetXAxisColor (const Quantity_Color& theColor) void AIS_Trihedron::SetXAxisColor (const Quantity_Color& theColor)
{ {
SetDatumPartColor (Prs3d_DP_XAxis, theColor); SetDatumPartColor (Prs3d_DatumParts_XAxis, theColor);
} }
//======================================================================= //=======================================================================
@ -610,7 +615,7 @@ void AIS_Trihedron::SetXAxisColor (const Quantity_Color& theColor)
//======================================================================= //=======================================================================
void AIS_Trihedron::SetYAxisColor (const Quantity_Color& theColor) void AIS_Trihedron::SetYAxisColor (const Quantity_Color& theColor)
{ {
SetDatumPartColor (Prs3d_DP_YAxis, theColor); SetDatumPartColor (Prs3d_DatumParts_YAxis, theColor);
} }
//======================================================================= //=======================================================================
@ -619,7 +624,7 @@ void AIS_Trihedron::SetYAxisColor (const Quantity_Color& theColor)
//======================================================================= //=======================================================================
void AIS_Trihedron::SetAxisColor (const Quantity_Color& theColor) void AIS_Trihedron::SetAxisColor (const Quantity_Color& theColor)
{ {
SetDatumPartColor (Prs3d_DP_ZAxis, theColor); SetDatumPartColor (Prs3d_DatumParts_ZAxis, theColor);
} }
//======================================================================= //=======================================================================
@ -631,10 +636,10 @@ void AIS_Trihedron::SetColor (const Quantity_Color& theColor)
hasOwnColor = Standard_True; hasOwnColor = Standard_True;
myDrawer->SetColor (theColor); myDrawer->SetColor (theColor);
SetDatumPartColor (Prs3d_DP_Origin, theColor); SetDatumPartColor (Prs3d_DatumParts_Origin, theColor);
SetDatumPartColor (Prs3d_DP_XAxis, theColor); SetDatumPartColor (Prs3d_DatumParts_XAxis, theColor);
SetDatumPartColor (Prs3d_DP_YAxis, theColor); SetDatumPartColor (Prs3d_DatumParts_YAxis, theColor);
SetDatumPartColor (Prs3d_DP_ZAxis, theColor); SetDatumPartColor (Prs3d_DatumParts_ZAxis, theColor);
} }
//======================================================================= //=======================================================================
@ -721,8 +726,8 @@ Handle(Select3D_SensitiveEntity) AIS_Trihedron::createSensitiveEntity (const Prs
return Handle(Select3D_SensitiveEntity)(); return Handle(Select3D_SensitiveEntity)();
} }
if (thePart >= Prs3d_DP_XOYAxis if (thePart >= Prs3d_DatumParts_XOYAxis
&& thePart <= Prs3d_DP_XOZAxis) && thePart <= Prs3d_DatumParts_XOZAxis)
{ // plane { // plane
const gp_Pnt anXYZ1 = aPrimitives->Vertice (1); const gp_Pnt anXYZ1 = aPrimitives->Vertice (1);
const gp_Pnt anXYZ2 = aPrimitives->Vertice (2); const gp_Pnt anXYZ2 = aPrimitives->Vertice (2);
@ -751,18 +756,6 @@ Handle(Select3D_SensitiveEntity) AIS_Trihedron::createSensitiveEntity (const Prs
return Handle(Select3D_SensitiveEntity)(); return Handle(Select3D_SensitiveEntity)();
} }
// =======================================================================
// function : arrayOfPrimitives
// purpose :
// =======================================================================
Handle(Graphic3d_ArrayOfPrimitives) AIS_Trihedron::arrayOfPrimitives(
Prs3d_DatumParts theDatumPart) const
{
Handle(Graphic3d_ArrayOfPrimitives) anArray;
myPrimitives.Find(theDatumPart, anArray);
return anArray;
}
// ======================================================================= // =======================================================================
// function : updatePrimitives // function : updatePrimitives
// purpose : // purpose :
@ -774,16 +767,19 @@ void AIS_Trihedron::updatePrimitives(const Handle(Prs3d_DatumAspect)& theAspect,
const gp_Dir& theYDirection, const gp_Dir& theYDirection,
const gp_Dir& theZDirection) const gp_Dir& theZDirection)
{ {
myPrimitives.Clear(); for (Standard_Integer aPartIter = 0; aPartIter < Prs3d_DatumParts_NB; ++aPartIter)
{
myPrimitives[aPartIter].Nullify();
}
NCollection_DataMap<Prs3d_DatumParts, gp_Dir> anAxisDirs; NCollection_DataMap<Prs3d_DatumParts, gp_Dir> anAxisDirs;
anAxisDirs.Bind(Prs3d_DP_XAxis, theXDirection); anAxisDirs.Bind(Prs3d_DatumParts_XAxis, theXDirection);
anAxisDirs.Bind(Prs3d_DP_YAxis, theYDirection); anAxisDirs.Bind(Prs3d_DatumParts_YAxis, theYDirection);
anAxisDirs.Bind(Prs3d_DP_ZAxis, theZDirection); anAxisDirs.Bind(Prs3d_DatumParts_ZAxis, theZDirection);
NCollection_DataMap<Prs3d_DatumParts, gp_Pnt> anAxisPoints; NCollection_DataMap<Prs3d_DatumParts, gp_Pnt> anAxisPoints;
gp_XYZ anXYZOrigin = theOrigin.XYZ(); gp_XYZ anXYZOrigin = theOrigin.XYZ();
for (int anAxisIter = Prs3d_DP_XAxis; anAxisIter <= Prs3d_DP_ZAxis; ++anAxisIter) for (int anAxisIter = Prs3d_DatumParts_XAxis; anAxisIter <= Prs3d_DatumParts_ZAxis; ++anAxisIter)
{ {
Prs3d_DatumParts aPart = (Prs3d_DatumParts)anAxisIter; Prs3d_DatumParts aPart = (Prs3d_DatumParts)anAxisIter;
anAxisPoints.Bind(aPart, gp_Pnt(anXYZOrigin + anAxisDirs.Find(aPart).XYZ() * anAxisPoints.Bind(aPart, gp_Pnt(anXYZOrigin + anAxisDirs.Find(aPart).XYZ() *
@ -793,14 +789,14 @@ void AIS_Trihedron::updatePrimitives(const Handle(Prs3d_DatumAspect)& theAspect,
if (theMode == Prs3d_DM_WireFrame) if (theMode == Prs3d_DM_WireFrame)
{ {
// origin // origin
if (theAspect->DrawDatumPart(Prs3d_DP_Origin)) if (theAspect->DrawDatumPart(Prs3d_DatumParts_Origin))
{ {
Handle(Graphic3d_ArrayOfPrimitives) aPrims = new Graphic3d_ArrayOfPoints(1); Handle(Graphic3d_ArrayOfPrimitives) aPrims = new Graphic3d_ArrayOfPoints(1);
aPrims->AddVertex(theOrigin); aPrims->AddVertex(theOrigin);
myPrimitives.Bind(Prs3d_DP_Origin, aPrims); myPrimitives[Prs3d_DatumParts_Origin] = aPrims;
} }
// axes // axes
for (int aPartIter = Prs3d_DP_XAxis; aPartIter <= Prs3d_DP_ZAxis; ++aPartIter) for (int aPartIter = Prs3d_DatumParts_XAxis; aPartIter <= Prs3d_DatumParts_ZAxis; ++aPartIter)
{ {
const Prs3d_DatumParts aPart = (Prs3d_DatumParts)aPartIter; const Prs3d_DatumParts aPart = (Prs3d_DatumParts)aPartIter;
if (theAspect->DrawDatumPart(aPart)) if (theAspect->DrawDatumPart(aPart))
@ -808,17 +804,16 @@ void AIS_Trihedron::updatePrimitives(const Handle(Prs3d_DatumAspect)& theAspect,
Handle(Graphic3d_ArrayOfPrimitives) aPrims = new Graphic3d_ArrayOfSegments(2); Handle(Graphic3d_ArrayOfPrimitives) aPrims = new Graphic3d_ArrayOfSegments(2);
aPrims->AddVertex(theOrigin); aPrims->AddVertex(theOrigin);
aPrims->AddVertex(anAxisPoints.Find(aPart)); aPrims->AddVertex(anAxisPoints.Find(aPart));
myPrimitives.Bind(aPart, aPrims); myPrimitives[aPart] = aPrims;
} }
Prs3d_DatumParts anArrowPart = theAspect->ArrowPartForAxis(aPart); Prs3d_DatumParts anArrowPart = theAspect->ArrowPartForAxis(aPart);
if (theAspect->DrawDatumPart(anArrowPart)) if (theAspect->DrawDatumPart(anArrowPart))
{ {
myPrimitives.Bind(anArrowPart, myPrimitives[anArrowPart] = Prs3d_Arrow::DrawSegments (anAxisPoints.Find(aPart), anAxisDirs.Find(aPart),
Prs3d_Arrow::DrawSegments(anAxisPoints.Find(aPart), anAxisDirs.Find(aPart),
theAspect->ArrowAspect()->Angle(), theAspect->ArrowAspect()->Angle(),
theAspect->AxisLength(aPart) * theAspect->Attribute(Prs3d_DP_ShadingConeLengthPercent), theAspect->AxisLength(aPart) * theAspect->Attribute(Prs3d_DatumAttribute_ShadingConeLengthPercent),
(Standard_Integer) theAspect->Attribute(Prs3d_DP_ShadingNumberOfFacettes))); (Standard_Integer) theAspect->Attribute(Prs3d_DatumAttribute_ShadingNumberOfFacettes));
} }
} }
} }
@ -826,25 +821,24 @@ void AIS_Trihedron::updatePrimitives(const Handle(Prs3d_DatumAspect)& theAspect,
{ {
// shading mode // shading mode
// origin // origin
if (theAspect->DrawDatumPart(Prs3d_DP_Origin)) if (theAspect->DrawDatumPart(Prs3d_DatumParts_Origin))
{ {
const Standard_Real aSphereRadius = theAspect->AxisLength(Prs3d_DP_XAxis) * const Standard_Real aSphereRadius = theAspect->AxisLength(Prs3d_DatumParts_XAxis) *
theAspect->Attribute(Prs3d_DP_ShadingOriginRadiusPercent); theAspect->Attribute(Prs3d_DatumAttribute_ShadingOriginRadiusPercent);
const Standard_Integer aNbOfFacettes = const Standard_Integer aNbOfFacettes =
(Standard_Integer)theAspect->Attribute(Prs3d_DP_ShadingNumberOfFacettes); (Standard_Integer)theAspect->Attribute(Prs3d_DatumAttribute_ShadingNumberOfFacettes);
gp_Trsf aSphereTransform; gp_Trsf aSphereTransform;
aSphereTransform.SetTranslationPart(gp_Vec(gp::Origin(), theOrigin)); aSphereTransform.SetTranslationPart(gp_Vec(gp::Origin(), theOrigin));
myPrimitives.Bind(Prs3d_DP_Origin, Prs3d_ToolSphere::Create(aSphereRadius, aNbOfFacettes, myPrimitives[Prs3d_DatumParts_Origin] = Prs3d_ToolSphere::Create (aSphereRadius, aNbOfFacettes, aNbOfFacettes, aSphereTransform);
aNbOfFacettes, aSphereTransform));
} }
// axes // axes
{ {
const Standard_Integer aNbOfFacettes = const Standard_Integer aNbOfFacettes =
(Standard_Integer)theAspect->Attribute(Prs3d_DP_ShadingNumberOfFacettes); (Standard_Integer)theAspect->Attribute(Prs3d_DatumAttribute_ShadingNumberOfFacettes);
const Standard_Real aTubeRadiusPercent = theAspect->Attribute(Prs3d_DP_ShadingTubeRadiusPercent); const Standard_Real aTubeRadiusPercent = theAspect->Attribute(Prs3d_DatumAttribute_ShadingTubeRadiusPercent);
const Standard_Real aConeLengthPercent = theAspect->Attribute(Prs3d_DP_ShadingConeLengthPercent); const Standard_Real aConeLengthPercent = theAspect->Attribute(Prs3d_DatumAttribute_ShadingConeLengthPercent);
const Standard_Real aConeRadiusPercent = theAspect->Attribute(Prs3d_DP_ShadingConeRadiusPercent); const Standard_Real aConeRadiusPercent = theAspect->Attribute(Prs3d_DatumAttribute_ShadingConeRadiusPercent);
for (Standard_Integer anAxisIter = Prs3d_DP_XAxis; anAxisIter <= Prs3d_DP_ZAxis; ++anAxisIter) for (Standard_Integer anAxisIter = Prs3d_DatumParts_XAxis; anAxisIter <= Prs3d_DatumParts_ZAxis; ++anAxisIter)
{ {
const Prs3d_DatumParts aPart = (Prs3d_DatumParts)anAxisIter; const Prs3d_DatumParts aPart = (Prs3d_DatumParts)anAxisIter;
const Prs3d_DatumParts anArrowPart = theAspect->ArrowPartForAxis(aPart); const Prs3d_DatumParts anArrowPart = theAspect->ArrowPartForAxis(aPart);
@ -855,24 +849,23 @@ void AIS_Trihedron::updatePrimitives(const Handle(Prs3d_DatumAspect)& theAspect,
if (theAspect->DrawDatumPart(aPart)) if (theAspect->DrawDatumPart(aPart))
{ {
// draw cylinder // draw cylinder
myPrimitives.Bind(aPart, myPrimitives[aPart] = Prs3d_Arrow::DrawShaded (anAxis, anAxisLength * aTubeRadiusPercent,
Prs3d_Arrow::DrawShaded(anAxis, anAxisLength * aTubeRadiusPercent, aDrawArrow ? (anAxisLength - anAxisLength * aConeLengthPercent) : anAxisLength,
aDrawArrow ? anAxisLength - anAxisLength * aConeLengthPercent : anAxisLength, 0.0, 0.0, aNbOfFacettes);
0.0, 0.0, aNbOfFacettes));
} }
// draw arrow // draw arrow
if (aDrawArrow) if (aDrawArrow)
{ {
myPrimitives.Bind(anArrowPart, Prs3d_Arrow::DrawShaded(anAxis, 0.0, anAxisLength, myPrimitives[anArrowPart] = Prs3d_Arrow::DrawShaded (anAxis, 0.0, anAxisLength,
anAxisLength * aConeRadiusPercent, anAxisLength * aConeRadiusPercent,
anAxisLength * aConeLengthPercent, aNbOfFacettes)); anAxisLength * aConeLengthPercent, aNbOfFacettes);
} }
} }
} }
} }
// planes // planes
for (Standard_Integer aPlaneIter = Prs3d_DP_XOYAxis; aPlaneIter <= Prs3d_DP_XOZAxis; ++aPlaneIter) for (Standard_Integer aPlaneIter = Prs3d_DatumParts_XOYAxis; aPlaneIter <= Prs3d_DatumParts_XOZAxis; ++aPlaneIter)
{ {
const Prs3d_DatumParts aPart = (Prs3d_DatumParts)aPlaneIter; const Prs3d_DatumParts aPart = (Prs3d_DatumParts)aPlaneIter;
if (!theAspect->DrawDatumPart(aPart)) if (!theAspect->DrawDatumPart(aPart))
@ -883,25 +876,25 @@ void AIS_Trihedron::updatePrimitives(const Handle(Prs3d_DatumAspect)& theAspect,
Handle(Graphic3d_ArrayOfPrimitives) aPrims = new Graphic3d_ArrayOfPolylines(4); Handle(Graphic3d_ArrayOfPrimitives) aPrims = new Graphic3d_ArrayOfPolylines(4);
aPrims->AddVertex(theOrigin); aPrims->AddVertex(theOrigin);
Prs3d_DatumParts aPart1 = Prs3d_DP_XAxis, aPart2 = Prs3d_DP_XAxis; Prs3d_DatumParts aPart1 = Prs3d_DatumParts_XAxis, aPart2 = Prs3d_DatumParts_XAxis;
switch(aPart) switch(aPart)
{ {
case Prs3d_DP_XOYAxis: case Prs3d_DatumParts_XOYAxis:
{ {
aPart1 = Prs3d_DP_XAxis; aPart1 = Prs3d_DatumParts_XAxis;
aPart2 = Prs3d_DP_YAxis; aPart2 = Prs3d_DatumParts_YAxis;
break; break;
} }
case Prs3d_DP_YOZAxis: case Prs3d_DatumParts_YOZAxis:
{ {
aPart1 = Prs3d_DP_YAxis; aPart1 = Prs3d_DatumParts_YAxis;
aPart2 = Prs3d_DP_ZAxis; aPart2 = Prs3d_DatumParts_ZAxis;
break; break;
} }
case Prs3d_DP_XOZAxis: case Prs3d_DatumParts_XOZAxis:
{ {
aPart1 = Prs3d_DP_XAxis; aPart1 = Prs3d_DatumParts_XAxis;
aPart2 = Prs3d_DP_ZAxis; aPart2 = Prs3d_DatumParts_ZAxis;
break; break;
} }
default: break; default: break;
@ -910,7 +903,7 @@ void AIS_Trihedron::updatePrimitives(const Handle(Prs3d_DatumAspect)& theAspect,
aPrims->AddVertex(anAxisPoints.Find(aPart2)); aPrims->AddVertex(anAxisPoints.Find(aPart2));
aPrims->AddVertex(theOrigin); aPrims->AddVertex(theOrigin);
myPrimitives.Bind(aPart, aPrims); myPrimitives[aPart] = aPrims;
} }
} }
@ -927,6 +920,5 @@ void AIS_Trihedron::DumpJson (Standard_OStream& theOStream, Standard_Integer the
OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnSize) OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnSize)
OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnTextColor) OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnTextColor)
OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnArrowColor) OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnArrowColor)
OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnDatumAspect)
OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myTrihDispMode) OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myTrihDispMode)
} }

View File

@ -60,12 +60,12 @@ public:
//! Initializes a trihedron entity. //! Initializes a trihedron entity.
Standard_EXPORT AIS_Trihedron (const Handle(Geom_Axis2Placement)& theComponent); Standard_EXPORT AIS_Trihedron (const Handle(Geom_Axis2Placement)& theComponent);
//! Sets Shading or Wireframe display mode, triangle or segment graphic group is used relatively.
void SetDatumDisplayMode (Prs3d_DatumMode theMode) { myTrihDispMode = theMode; }
//! Returns datum display mode. //! Returns datum display mode.
Prs3d_DatumMode DatumDisplayMode() const { return myTrihDispMode; } Prs3d_DatumMode DatumDisplayMode() const { return myTrihDispMode; }
//! Sets Shading or Wireframe display mode, triangle or segment graphic group is used relatively.
void SetDatumDisplayMode (Prs3d_DatumMode theMode) { myTrihDispMode = theMode; }
//! Returns the right-handed coordinate system set in SetComponent. //! Returns the right-handed coordinate system set in SetComponent.
const Handle(Geom_Axis2Placement)& Component() const { return myComponent; } const Handle(Geom_Axis2Placement)& Component() const { return myComponent; }
@ -76,8 +76,10 @@ public:
//! than the default size of 100 mm. along each axis. //! than the default size of 100 mm. along each axis.
Standard_Boolean HasOwnSize() const { return myHasOwnSize; } Standard_Boolean HasOwnSize() const { return myHasOwnSize; }
//! Sets the size aValue for the trihedron object. //! Returns the size of trihedron object; 100.0 by DEFAULT.
//! The default value is 100 mm. Standard_EXPORT Standard_Real Size() const;
//! Sets the size of trihedron object.
Standard_EXPORT void SetSize (const Standard_Real theValue); Standard_EXPORT void SetSize (const Standard_Real theValue);
//! Removes any non-default settings for size of this trihedron object. //! Removes any non-default settings for size of this trihedron object.
@ -85,34 +87,14 @@ public:
//! drawer is reproduced, otherwise DatumAspect becomes null. //! drawer is reproduced, otherwise DatumAspect becomes null.
Standard_EXPORT void UnsetSize(); Standard_EXPORT void UnsetSize();
Standard_EXPORT Standard_Real Size() const;
//! Returns true if the display mode selected, aMode, is valid for trihedron datums.
virtual Standard_Boolean AcceptDisplayMode (const Standard_Integer theMode) const Standard_OVERRIDE
{
return theMode == 0;
}
//! Returns index 3, selection of the planes XOY, YOZ, XOZ.
virtual Standard_Integer Signature() const Standard_OVERRIDE { return 3; }
//! Indicates that the type of Interactive Object is datum.
virtual AIS_KindOfInteractive Type() const Standard_OVERRIDE { return AIS_KOI_Datum; }
//! Sets the color theColor for this trihedron object, it changes color of axes.
Standard_EXPORT void SetColor (const Quantity_Color& theColor) Standard_OVERRIDE;
//! Sets color of label of trihedron axes.
Standard_EXPORT void SetTextColor (const Quantity_Color& theColor);
//! Returns true if trihedron has own text color //! Returns true if trihedron has own text color
Standard_Boolean HasTextColor() const { return myHasOwnTextColor; } Standard_Boolean HasTextColor() const { return myHasOwnTextColor; }
//! Returns trihedron text color //! Returns trihedron text color
Standard_EXPORT Quantity_Color TextColor() const; Standard_EXPORT Quantity_Color TextColor() const;
//! Sets color of arrow of trihedron axes. Used only in wireframe mode //! Sets color of label of trihedron axes.
Standard_EXPORT void SetArrowColor (const Quantity_Color& theColor); Standard_EXPORT void SetTextColor (const Quantity_Color& theColor);
//! Returns true if trihedron has own arrow color //! Returns true if trihedron has own arrow color
Standard_Boolean HasArrowColor() const { return myHasOwnArrowColor; } Standard_Boolean HasArrowColor() const { return myHasOwnArrowColor; }
@ -120,17 +102,16 @@ public:
//! Returns trihedron arrow color //! Returns trihedron arrow color
Standard_EXPORT Quantity_Color ArrowColor() const; Standard_EXPORT Quantity_Color ArrowColor() const;
//! Removes the settings for color. //! Sets color of arrow of trihedron axes. Used only in wireframe mode
Standard_EXPORT virtual void UnsetColor() Standard_OVERRIDE; Standard_EXPORT void SetArrowColor (const Quantity_Color& theColor);
//! Returns color of datum part: origin or some of trihedron axes.
Standard_EXPORT Quantity_Color DatumPartColor (Prs3d_DatumParts thePart);
//! Sets color of datum part: origin or some of trihedron axes. //! Sets color of datum part: origin or some of trihedron axes.
//! If presentation is shading mode, this color is set for both sides of facing model //! If presentation is shading mode, this color is set for both sides of facing model
Standard_EXPORT void SetDatumPartColor (const Prs3d_DatumParts thePart, Standard_EXPORT void SetDatumPartColor (const Prs3d_DatumParts thePart,
const Quantity_Color& theColor); const Quantity_Color& theColor);
//! Returns color of datum part: origin or some of trihedron axes.
Standard_EXPORT Quantity_Color DatumPartColor (Prs3d_DatumParts thePart);
//! Sets color of origin. //! Sets color of origin.
//! Standard_DEPRECATED("This method is deprecated - SetColor() should be called instead") //! Standard_DEPRECATED("This method is deprecated - SetColor() should be called instead")
Standard_EXPORT void SetOriginColor (const Quantity_Color& theColor); Standard_EXPORT void SetOriginColor (const Quantity_Color& theColor);
@ -153,32 +134,46 @@ public:
//! Sets whether to draw the arrows in visualization //! Sets whether to draw the arrows in visualization
Standard_EXPORT void SetDrawArrows (const Standard_Boolean theToDraw); Standard_EXPORT void SetDrawArrows (const Standard_Boolean theToDraw);
//! Returns priority of selection for owner of the given type
Standard_Integer SelectionPriority (Prs3d_DatumParts thePart) { return mySelectionPriority[thePart]; }
//! Sets priority of selection for owner of the given type //! Sets priority of selection for owner of the given type
void SetSelectionPriority (Prs3d_DatumParts thePart, void SetSelectionPriority (Prs3d_DatumParts thePart,
Standard_Integer thePriority) Standard_Integer thePriority)
{ {
mySelectionPriority.Bind (thePart, thePriority); mySelectionPriority[thePart] = thePriority;
}
//! Sets priority of selection for owner of the given type
Standard_Integer SelectionPriority (Prs3d_DatumParts thePart)
{
return mySelectionPriority.Find (thePart);
}
//! Sets text label for trihedron axis. Parameter thePart should be XAxis, YAxis or ZAxis
void SetLabel (const Prs3d_DatumParts thePart,
const TCollection_ExtendedString& thePriority)
{
myLabel.Bind (thePart, thePriority);
} }
//! Returns text of axis. Parameter thePart should be XAxis, YAxis or ZAxis //! Returns text of axis. Parameter thePart should be XAxis, YAxis or ZAxis
const TCollection_ExtendedString& Label (Prs3d_DatumParts thePart) const TCollection_ExtendedString& Label (Prs3d_DatumParts thePart) { return myLabels[thePart]; }
//! Sets text label for trihedron axis. Parameter thePart should be XAxis, YAxis or ZAxis
void SetLabel (const Prs3d_DatumParts thePart,
const TCollection_ExtendedString& theName)
{ {
return myLabel.Find (thePart); myLabels[thePart] = theName;
} }
public:
//! Sets the color theColor for this trihedron object, it changes color of axes.
Standard_EXPORT virtual void SetColor (const Quantity_Color& theColor) Standard_OVERRIDE;
//! Returns true if the display mode selected, aMode, is valid for trihedron datums.
virtual Standard_Boolean AcceptDisplayMode (const Standard_Integer theMode) const Standard_OVERRIDE
{
return theMode == 0;
}
//! Returns index 3, selection of the planes XOY, YOZ, XOZ.
virtual Standard_Integer Signature() const Standard_OVERRIDE { return 3; }
//! Indicates that the type of Interactive Object is datum.
virtual AIS_KindOfInteractive Type() const Standard_OVERRIDE { return AIS_KOI_Datum; }
//! Removes the settings for color.
Standard_EXPORT virtual void UnsetColor() Standard_OVERRIDE;
public: public:
//! Method which clear all selected owners belonging //! Method which clear all selected owners belonging
@ -223,8 +218,7 @@ protected:
Standard_EXPORT void setOwnDatumAspect(); Standard_EXPORT void setOwnDatumAspect();
//! Returns primitives. //! Returns primitives.
Standard_EXPORT Handle(Graphic3d_ArrayOfPrimitives) arrayOfPrimitives( const Handle(Graphic3d_ArrayOfPrimitives)& arrayOfPrimitives (Prs3d_DatumParts thePart) const { return myPrimitives[thePart]; }
Prs3d_DatumParts thePart) const;
//! Updates graphic groups for the current datum mode //! Updates graphic groups for the current datum mode
//! Parameters of datum position and orientation //! Parameters of datum position and orientation
@ -236,22 +230,20 @@ protected:
const gp_Dir& theZDir); const gp_Dir& theZDir);
protected: protected:
Handle(Geom_Axis2Placement) myComponent;
Prs3d_DatumMode myTrihDispMode;
Standard_Boolean myHasOwnSize; Standard_Boolean myHasOwnSize;
Standard_Boolean myHasOwnTextColor; Standard_Boolean myHasOwnTextColor;
Standard_Boolean myHasOwnArrowColor; Standard_Boolean myHasOwnArrowColor;
Standard_Boolean myHasOwnDatumAspect;
Prs3d_DatumMode myTrihDispMode; TCollection_ExtendedString myLabels[Prs3d_DatumParts_NB];
Handle(Geom_Axis2Placement) myComponent; Standard_Integer mySelectionPriority[Prs3d_DatumParts_NB];
NCollection_DataMap<Prs3d_DatumParts, Standard_Integer> mySelectionPriority; Handle(Graphic3d_Group) myPartToGroup[Prs3d_DatumParts_NB];
NCollection_DataMap<Prs3d_DatumParts, TCollection_ExtendedString> myLabel;
NCollection_DataMap<Prs3d_DatumParts, Handle(Graphic3d_Group)> myPartToGroup;
NCollection_List<Prs3d_DatumParts> mySelectedParts; NCollection_List<Prs3d_DatumParts> mySelectedParts;
Handle(Graphic3d_AspectLine3d) myHiddenLineAspect; Handle(Graphic3d_AspectLine3d) myHiddenLineAspect;
NCollection_DataMap<Prs3d_DatumParts, Handle(Graphic3d_ArrayOfPrimitives)> myPrimitives; Handle(Graphic3d_ArrayOfPrimitives) myPrimitives[Prs3d_DatumParts_NB];
}; };
DEFINE_STANDARD_HANDLE(AIS_Trihedron, AIS_InteractiveObject) DEFINE_STANDARD_HANDLE(AIS_Trihedron, AIS_InteractiveObject)

View File

@ -177,9 +177,9 @@ AIS_ViewCube::AIS_ViewCube()
myBoxSideLabels.Bind (V3d_TypeOfOrientation_Zup_Left, "LEFT"); myBoxSideLabels.Bind (V3d_TypeOfOrientation_Zup_Left, "LEFT");
myBoxSideLabels.Bind (V3d_TypeOfOrientation_Zup_Right, "RIGHT"); myBoxSideLabels.Bind (V3d_TypeOfOrientation_Zup_Right, "RIGHT");
myAxesLabels.Bind (Prs3d_DP_XAxis, "X"); myAxesLabels.Bind (Prs3d_DatumParts_XAxis, "X");
myAxesLabels.Bind (Prs3d_DP_YAxis, "Y"); myAxesLabels.Bind (Prs3d_DatumParts_YAxis, "Y");
myAxesLabels.Bind (Prs3d_DP_ZAxis, "Z"); myAxesLabels.Bind (Prs3d_DatumParts_ZAxis, "Z");
// define default size // define default size
SetSize (70.0); SetSize (70.0);
@ -580,7 +580,7 @@ void AIS_ViewCube::Compute (const Handle(PrsMgr_PresentationManager3d)& ,
{ {
const Standard_Real anAxisSize = mySize + 2.0 * myBoxFacetExtension + myAxesPadding; const Standard_Real anAxisSize = mySize + 2.0 * myBoxFacetExtension + myAxesPadding;
const Handle(Prs3d_DatumAspect)& aDatumAspect = myDrawer->DatumAspect(); const Handle(Prs3d_DatumAspect)& aDatumAspect = myDrawer->DatumAspect();
for (Standard_Integer anAxisIter = Prs3d_DP_XAxis; anAxisIter <= Prs3d_DP_ZAxis; ++anAxisIter) for (Standard_Integer anAxisIter = Prs3d_DatumParts_XAxis; anAxisIter <= Prs3d_DatumParts_ZAxis; ++anAxisIter)
{ {
const Prs3d_DatumParts aPart = (Prs3d_DatumParts )anAxisIter; const Prs3d_DatumParts aPart = (Prs3d_DatumParts )anAxisIter;
if (!aDatumAspect->DrawDatumPart (aPart)) if (!aDatumAspect->DrawDatumPart (aPart))
@ -591,9 +591,9 @@ void AIS_ViewCube::Compute (const Handle(PrsMgr_PresentationManager3d)& ,
gp_Ax1 anAx1; gp_Ax1 anAx1;
switch (aPart) switch (aPart)
{ {
case Prs3d_DP_XAxis: anAx1 = gp_Ax1 (aLocation, gp::DX()); break; case Prs3d_DatumParts_XAxis: anAx1 = gp_Ax1 (aLocation, gp::DX()); break;
case Prs3d_DP_YAxis: anAx1 = gp_Ax1 (aLocation, gp::DY()); break; case Prs3d_DatumParts_YAxis: anAx1 = gp_Ax1 (aLocation, gp::DY()); break;
case Prs3d_DP_ZAxis: anAx1 = gp_Ax1 (aLocation, gp::DZ()); break; case Prs3d_DatumParts_ZAxis: anAx1 = gp_Ax1 (aLocation, gp::DZ()); break;
default: break; default: break;
} }

View File

@ -402,9 +402,9 @@ public: //! @name Style management API
const TCollection_AsciiString& theY, const TCollection_AsciiString& theY,
const TCollection_AsciiString& theZ) const TCollection_AsciiString& theZ)
{ {
myAxesLabels.Bind (Prs3d_DP_XAxis, theX); myAxesLabels.Bind (Prs3d_DatumParts_XAxis, theX);
myAxesLabels.Bind (Prs3d_DP_YAxis, theY); myAxesLabels.Bind (Prs3d_DatumParts_YAxis, theY);
myAxesLabels.Bind (Prs3d_DP_ZAxis, theZ); myAxesLabels.Bind (Prs3d_DatumParts_ZAxis, theZ);
SetToUpdate(); SetToUpdate();
} }

View File

@ -49,27 +49,27 @@ void DsgPrs_DatumPrs::Add (const Handle(Prs3d_Presentation)& thePresentation,
Handle(Prs3d_ArrowAspect) anArrowAspect = aDatumAspect->ArrowAspect(); Handle(Prs3d_ArrowAspect) anArrowAspect = aDatumAspect->ArrowAspect();
Handle(Prs3d_TextAspect) aTextAspect = theDrawer->TextAspect(); Handle(Prs3d_TextAspect) aTextAspect = theDrawer->TextAspect();
if ((anAxes & Prs3d_DA_XAxis) != 0) if ((anAxes & Prs3d_DatumAxes_XAxis) != 0)
{ {
anAxisLength = aDatumAspect->Attribute (Prs3d_DA_XAxisLength); anAxisLength = aDatumAspect->Attribute (Prs3d_DatumAttribute_XAxisLength);
const gp_Pnt aPoint1 (anOrigin.XYZ() + aXDir.XYZ()*anAxisLength); const gp_Pnt aPoint1 (anOrigin.XYZ() + aXDir.XYZ()*anAxisLength);
DsgPrs_XYZAxisPresentation::Add (thePresentation, aDatumAspect->LineAspect(Prs3d_DP_XAxis), anArrowAspect, DsgPrs_XYZAxisPresentation::Add (thePresentation, aDatumAspect->LineAspect(Prs3d_DatumParts_XAxis), anArrowAspect,
aTextAspect, aXDir, anAxisLength, toDrawLabels ? "X" : "", anOrigin, aPoint1); aTextAspect, aXDir, anAxisLength, toDrawLabels ? "X" : "", anOrigin, aPoint1);
} }
if ((anAxes & Prs3d_DA_YAxis) != 0) if ((anAxes & Prs3d_DatumAxes_YAxis) != 0)
{ {
anAxisLength = aDatumAspect->Attribute (Prs3d_DA_YAxisLength); anAxisLength = aDatumAspect->Attribute (Prs3d_DatumAttribute_YAxisLength);
const gp_Pnt aPoint2 (anOrigin.XYZ() + aYDir.XYZ()*anAxisLength); const gp_Pnt aPoint2 (anOrigin.XYZ() + aYDir.XYZ()*anAxisLength);
DsgPrs_XYZAxisPresentation::Add (thePresentation, aDatumAspect->LineAspect(Prs3d_DP_YAxis), anArrowAspect, DsgPrs_XYZAxisPresentation::Add (thePresentation, aDatumAspect->LineAspect(Prs3d_DatumParts_YAxis), anArrowAspect,
aTextAspect, aYDir, anAxisLength, toDrawLabels ? "Y" : "", anOrigin, aPoint2); aTextAspect, aYDir, anAxisLength, toDrawLabels ? "Y" : "", anOrigin, aPoint2);
} }
if ((anAxes & Prs3d_DA_ZAxis) != 0) if ((anAxes & Prs3d_DatumAxes_ZAxis) != 0)
{ {
anAxisLength = aDatumAspect->Attribute (Prs3d_DA_ZAxisLength); anAxisLength = aDatumAspect->Attribute (Prs3d_DatumAttribute_ZAxisLength);
const gp_Pnt aPoint3 (anOrigin.XYZ() + aZDir.XYZ()*anAxisLength); const gp_Pnt aPoint3 (anOrigin.XYZ() + aZDir.XYZ()*anAxisLength);
DsgPrs_XYZAxisPresentation::Add (thePresentation, aDatumAspect->LineAspect(Prs3d_DP_ZAxis), anArrowAspect, DsgPrs_XYZAxisPresentation::Add (thePresentation, aDatumAspect->LineAspect(Prs3d_DatumParts_ZAxis), anArrowAspect,
aTextAspect, aZDir, anAxisLength, toDrawLabels ? "Z" : "", anOrigin, aPoint3); aTextAspect, aZDir, anAxisLength, toDrawLabels ? "Z" : "", anOrigin, aPoint3);
} }
} }

View File

@ -23,63 +23,39 @@ IMPLEMENT_STANDARD_RTTIEXT(Prs3d_DatumAspect, Prs3d_BasicAspect)
// purpose : // purpose :
// ======================================================================= // =======================================================================
Prs3d_DatumAspect::Prs3d_DatumAspect() Prs3d_DatumAspect::Prs3d_DatumAspect()
: myAxes (Prs3d_DA_XYZAxis), : myAxes (Prs3d_DatumAxes_XYZAxes),
myToDrawLabels (Standard_True), myToDrawLabels (Standard_True),
myToDrawArrows (Standard_True) myToDrawArrows (Standard_True)
{ {
Standard_Real aDefaultLength = 100.0; // default axis length, the same as in context const Standard_Real aDefaultLength = 100.0; // default axis length, the same as in context
Quantity_Color aDefaultColor(Quantity_NOC_LIGHTSTEELBLUE4); // default axis color const Quantity_Color aDefaultColor (Quantity_NOC_LIGHTSTEELBLUE4); // default axis color
myAttributes.Bind (Prs3d_DA_XAxisLength, aDefaultLength); myAttributes[Prs3d_DatumAttribute_XAxisLength] = aDefaultLength;
myAttributes.Bind (Prs3d_DA_YAxisLength, aDefaultLength); myAttributes[Prs3d_DatumAttribute_YAxisLength] = aDefaultLength;
myAttributes.Bind (Prs3d_DA_ZAxisLength, aDefaultLength); myAttributes[Prs3d_DatumAttribute_ZAxisLength] = aDefaultLength;
myAttributes.Bind (Prs3d_DP_ShadingTubeRadiusPercent, 0.02); myAttributes[Prs3d_DatumAttribute_ShadingTubeRadiusPercent] = 0.02;
myAttributes.Bind (Prs3d_DP_ShadingConeRadiusPercent, 0.04); myAttributes[Prs3d_DatumAttribute_ShadingConeRadiusPercent] = 0.04;
myAttributes.Bind (Prs3d_DP_ShadingConeLengthPercent, 0.1); myAttributes[Prs3d_DatumAttribute_ShadingConeLengthPercent] = 0.1;
myAttributes.Bind (Prs3d_DP_ShadingOriginRadiusPercent, 0.015); myAttributes[Prs3d_DatumAttribute_ShadingOriginRadiusPercent] = 0.015;
myAttributes.Bind (Prs3d_DP_ShadingNumberOfFacettes, 12.0); myAttributes[Prs3d_DatumAttribute_ShadingNumberOfFacettes] = 12.0;
Aspect_TypeOfLine aLineType = Aspect_TOL_SOLID; for (int aPartIter = Prs3d_DatumParts_Origin; aPartIter <= Prs3d_DatumParts_XOZAxis; ++aPartIter)
Standard_Real aWidth = 1.0;
for (int aPartIter = Prs3d_DP_Origin; aPartIter <= Prs3d_DP_XOZAxis; ++aPartIter)
{ {
const Prs3d_DatumParts aPart = (Prs3d_DatumParts )aPartIter; const Prs3d_DatumParts aPart = (Prs3d_DatumParts )aPartIter;
if (aPart != Prs3d_DP_Origin) // origin point is used only in shading mode if (aPart != Prs3d_DatumParts_Origin) // origin point is used only in shading mode
{ {
myLineAspects.Bind (aPart, new Prs3d_LineAspect (aDefaultColor, aLineType, aWidth)); myLineAspects[aPart] = new Prs3d_LineAspect (aDefaultColor, Aspect_TOL_SOLID, 1.0);
} }
Handle(Prs3d_ShadingAspect) aShadingAspect = new Prs3d_ShadingAspect(); Handle(Prs3d_ShadingAspect) aShadingAspect = new Prs3d_ShadingAspect();
aShadingAspect->SetColor (aDefaultColor); aShadingAspect->SetColor (aDefaultColor);
myShadedAspects.Bind (aPart, aShadingAspect); myShadedAspects[aPart] = aShadingAspect;
} }
myTextAspect = new Prs3d_TextAspect(); myTextAspect = new Prs3d_TextAspect();
myPointAspect = new Prs3d_PointAspect (Aspect_TOM_EMPTY, aDefaultColor, 1.0); myPointAspect = new Prs3d_PointAspect (Aspect_TOM_EMPTY, aDefaultColor, 1.0);
myArrowAspect = new Prs3d_ArrowAspect(); myArrowAspect = new Prs3d_ArrowAspect();
} }
// =======================================================================
// function : LineAspect
// purpose :
// =======================================================================
Handle(Prs3d_LineAspect) Prs3d_DatumAspect::LineAspect (Prs3d_DatumParts thePart) const
{
Handle(Prs3d_LineAspect) aLineAspect;
myLineAspects.Find (thePart, aLineAspect);
return aLineAspect;
}
// =======================================================================
// function : ShadingAspect
// purpose :
// =======================================================================
Handle(Prs3d_ShadingAspect) Prs3d_DatumAspect::ShadingAspect (Prs3d_DatumParts thePart) const
{
Handle(Prs3d_ShadingAspect) aShadingAspect;
myShadedAspects.Find (thePart, aShadingAspect);
return aShadingAspect;
}
// ======================================================================= // =======================================================================
// function : SetDrawFirstAndSecondAxis // function : SetDrawFirstAndSecondAxis
// purpose : // purpose :
@ -88,11 +64,11 @@ void Prs3d_DatumAspect::SetDrawFirstAndSecondAxis (Standard_Boolean theToDraw)
{ {
if (theToDraw) if (theToDraw)
{ {
myAxes = ((myAxes & Prs3d_DA_ZAxis) != 0 ? Prs3d_DA_XYZAxis : Prs3d_DA_XYAxis); myAxes = ((myAxes & Prs3d_DatumAxes_ZAxis) != 0 ? Prs3d_DatumAxes_XYZAxes : Prs3d_DatumAxes_XYAxes);
} }
else else
{ {
myAxes = Prs3d_DA_ZAxis; myAxes = Prs3d_DatumAxes_ZAxis;
} }
} }
@ -104,11 +80,11 @@ void Prs3d_DatumAspect::SetDrawThirdAxis (Standard_Boolean theToDraw)
{ {
if (theToDraw) if (theToDraw)
{ {
myAxes = ((myAxes & Prs3d_DA_XYAxis) != 0 ? Prs3d_DA_XYZAxis : Prs3d_DA_ZAxis); myAxes = ((myAxes & Prs3d_DatumAxes_XYAxes) != 0 ? Prs3d_DatumAxes_XYZAxes : Prs3d_DatumAxes_ZAxis);
} }
else else
{ {
myAxes = Prs3d_DA_XYAxis; myAxes = Prs3d_DatumAxes_XYAxes;
} }
} }
@ -120,19 +96,19 @@ bool Prs3d_DatumAspect::DrawDatumPart (Prs3d_DatumParts thePart) const
{ {
switch (thePart) switch (thePart)
{ {
case Prs3d_DP_Origin: return true; case Prs3d_DatumParts_Origin: return true;
case Prs3d_DP_XAxis: return (myAxes & Prs3d_DA_XAxis) != 0; case Prs3d_DatumParts_XAxis: return (myAxes & Prs3d_DatumAxes_XAxis) != 0;
case Prs3d_DP_XArrow: return (myAxes & Prs3d_DA_XAxis) != 0 && myToDrawArrows; case Prs3d_DatumParts_XArrow: return (myAxes & Prs3d_DatumAxes_XAxis) != 0 && myToDrawArrows;
case Prs3d_DP_YAxis: return (myAxes & Prs3d_DA_YAxis) != 0; case Prs3d_DatumParts_YAxis: return (myAxes & Prs3d_DatumAxes_YAxis) != 0;
case Prs3d_DP_YArrow: return (myAxes & Prs3d_DA_YAxis) != 0 && myToDrawArrows; case Prs3d_DatumParts_YArrow: return (myAxes & Prs3d_DatumAxes_YAxis) != 0 && myToDrawArrows;
case Prs3d_DP_ZAxis: return (myAxes & Prs3d_DA_ZAxis) != 0; case Prs3d_DatumParts_ZAxis: return (myAxes & Prs3d_DatumAxes_ZAxis) != 0;
case Prs3d_DP_ZArrow: return (myAxes & Prs3d_DA_ZAxis) != 0 && myToDrawArrows; case Prs3d_DatumParts_ZArrow: return (myAxes & Prs3d_DatumAxes_ZAxis) != 0 && myToDrawArrows;
case Prs3d_DP_XOYAxis: return DrawDatumPart (Prs3d_DP_XAxis) case Prs3d_DatumParts_XOYAxis: return DrawDatumPart (Prs3d_DatumParts_XAxis)
&& DrawDatumPart (Prs3d_DP_YAxis); && DrawDatumPart (Prs3d_DatumParts_YAxis);
case Prs3d_DP_YOZAxis: return DrawDatumPart (Prs3d_DP_YAxis) case Prs3d_DatumParts_YOZAxis: return DrawDatumPart (Prs3d_DatumParts_YAxis)
&& DrawDatumPart (Prs3d_DP_ZAxis); && DrawDatumPart (Prs3d_DatumParts_ZAxis);
case Prs3d_DP_XOZAxis: return DrawDatumPart (Prs3d_DP_XAxis) case Prs3d_DatumParts_XOZAxis: return DrawDatumPart (Prs3d_DatumParts_XAxis)
&& DrawDatumPart (Prs3d_DP_ZAxis); && DrawDatumPart (Prs3d_DatumParts_ZAxis);
default: break; default: break;
} }
return false; return false;
@ -146,9 +122,9 @@ Standard_Real Prs3d_DatumAspect::AxisLength (Prs3d_DatumParts thePart) const
{ {
switch (thePart) switch (thePart)
{ {
case Prs3d_DP_XAxis: return myAttributes.Find (Prs3d_DA_XAxisLength); case Prs3d_DatumParts_XAxis: return myAttributes[Prs3d_DatumAttribute_XAxisLength];
case Prs3d_DP_YAxis: return myAttributes.Find (Prs3d_DA_YAxisLength); case Prs3d_DatumParts_YAxis: return myAttributes[Prs3d_DatumAttribute_YAxisLength];
case Prs3d_DP_ZAxis: return myAttributes.Find (Prs3d_DA_ZAxisLength); case Prs3d_DatumParts_ZAxis: return myAttributes[Prs3d_DatumAttribute_ZAxisLength];
default: break; default: break;
} }
return 0.0; return 0.0;
@ -162,12 +138,12 @@ Prs3d_DatumParts Prs3d_DatumAspect::ArrowPartForAxis (Prs3d_DatumParts thePart)
{ {
switch (thePart) switch (thePart)
{ {
case Prs3d_DP_XAxis: return Prs3d_DP_XArrow; case Prs3d_DatumParts_XAxis: return Prs3d_DatumParts_XArrow;
case Prs3d_DP_YAxis: return Prs3d_DP_YArrow; case Prs3d_DatumParts_YAxis: return Prs3d_DatumParts_YArrow;
case Prs3d_DP_ZAxis: return Prs3d_DP_ZArrow; case Prs3d_DatumParts_ZAxis: return Prs3d_DatumParts_ZArrow;
default: break; default: break;
} }
return Prs3d_DP_None; return Prs3d_DatumParts_None;
} }
// ======================================================================= // =======================================================================

View File

@ -34,14 +34,14 @@ class Prs3d_DatumAspect : public Prs3d_BasicAspect
DEFINE_STANDARD_RTTIEXT(Prs3d_DatumAspect, Prs3d_BasicAspect) DEFINE_STANDARD_RTTIEXT(Prs3d_DatumAspect, Prs3d_BasicAspect)
public: public:
//! An empty framework to define the display of datums. //! An empty constructor.
Standard_EXPORT Prs3d_DatumAspect(); Standard_EXPORT Prs3d_DatumAspect();
//! Returns the right-handed coordinate system set in SetComponent. //! Returns line aspect for specified part.
Standard_EXPORT Handle(Prs3d_LineAspect) LineAspect (Prs3d_DatumParts thePart) const; const Handle(Prs3d_LineAspect)& LineAspect (Prs3d_DatumParts thePart) const { return myLineAspects[thePart]; }
//! Returns the right-handed coordinate system set in SetComponent. //! Returns shading aspect for specified part.
Standard_EXPORT Handle(Prs3d_ShadingAspect) ShadingAspect (Prs3d_DatumParts thePart) const; const Handle(Prs3d_ShadingAspect)& ShadingAspect (Prs3d_DatumParts thePart) const { return myShadedAspects[thePart]; }
//! Returns the text attributes for rendering labels. //! Returns the text attributes for rendering labels.
const Handle(Prs3d_TextAspect)& TextAspect() const { return myTextAspect; } const Handle(Prs3d_TextAspect)& TextAspect() const { return myTextAspect; }
@ -61,38 +61,6 @@ public:
//! Sets the arrow aspect of presentation //! Sets the arrow aspect of presentation
void SetArrowAspect (const Handle(Prs3d_ArrowAspect)& theAspect) { myArrowAspect = theAspect; } void SetArrowAspect (const Handle(Prs3d_ArrowAspect)& theAspect) { myArrowAspect = theAspect; }
//! Returns the attributes for display of the first axis.
Standard_DEPRECATED("This method is deprecated - LineAspect() should be called instead")
const Handle(Prs3d_LineAspect)& FirstAxisAspect() const { return myLineAspects.Find (Prs3d_DP_XAxis); }
//! Returns the attributes for display of the second axis.
Standard_DEPRECATED("This method is deprecated - LineAspect() should be called instead")
const Handle(Prs3d_LineAspect)& SecondAxisAspect() const { return myLineAspects.Find (Prs3d_DP_YAxis); }
//! Returns the attributes for display of the third axis.
Standard_DEPRECATED("This method is deprecated - LineAspect() should be called instead")
const Handle(Prs3d_LineAspect)& ThirdAxisAspect() const { return myLineAspects.Find (Prs3d_DP_ZAxis); }
//! Sets the DrawFirstAndSecondAxis attributes to active.
Standard_DEPRECATED("This method is deprecated - SetDrawDatumAxes() should be called instead")
Standard_EXPORT void SetDrawFirstAndSecondAxis (Standard_Boolean theToDraw);
//! Returns true if the first and second axes can be drawn.
Standard_DEPRECATED("This method is deprecated - DatumAxes() should be called instead")
Standard_Boolean DrawFirstAndSecondAxis() const
{
return (myAxes & Prs3d_DA_XAxis) != 0
&& (myAxes & Prs3d_DA_YAxis) != 0;
}
//! Sets the DrawThirdAxis attributes to active.
Standard_DEPRECATED("This method is deprecated - SetDrawDatumAxes() should be called instead")
Standard_EXPORT void SetDrawThirdAxis (Standard_Boolean theToDraw);
//! Returns true if the third axis can be drawn.
Standard_DEPRECATED("This method is deprecated - DatumAxes() should be called instead")
Standard_Boolean DrawThirdAxis() const { return (myAxes & Prs3d_DA_ZAxis) != 0; }
//! Returns true if the given part is used in axes of aspect //! Returns true if the given part is used in axes of aspect
Standard_EXPORT Standard_Boolean DrawDatumPart (Prs3d_DatumParts thePart) const; Standard_EXPORT Standard_Boolean DrawDatumPart (Prs3d_DatumParts thePart) const;
@ -102,40 +70,22 @@ public:
//! Returns axes used in the datum aspect //! Returns axes used in the datum aspect
Prs3d_DatumAxes DatumAxes() const { return myAxes; } Prs3d_DatumAxes DatumAxes() const { return myAxes; }
//! Sets the attribute of the datum type
void SetAttribute (Prs3d_DatumAttribute theType, const Standard_Real& theValue)
{
myAttributes.Bind (theType, theValue);
}
//! Returns the attribute of the datum type //! Returns the attribute of the datum type
Standard_Real Attribute (Prs3d_DatumAttribute theType) const Standard_Real Attribute (Prs3d_DatumAttribute theType) const { return myAttributes[theType]; }
{
return myAttributes.Find (theType);
}
//! Sets the lengths of the three axes. //! Sets the attribute of the datum type
void SetAxisLength (Standard_Real theL1, Standard_Real theL2, Standard_Real theL3) void SetAttribute (Prs3d_DatumAttribute theType, const Standard_Real theValue) { myAttributes[theType] = theValue; }
{
myAttributes.Bind (Prs3d_DA_XAxisLength, theL1);
myAttributes.Bind (Prs3d_DA_YAxisLength, theL2);
myAttributes.Bind (Prs3d_DA_ZAxisLength, theL3);
}
//! Returns the length of the displayed first axis. //! Returns the length of the displayed first axis.
Standard_EXPORT Standard_Real AxisLength (Prs3d_DatumParts thePart) const; Standard_EXPORT Standard_Real AxisLength (Prs3d_DatumParts thePart) const;
//! Returns the length of the displayed first axis. //! Sets the lengths of the three axes.
Standard_DEPRECATED("This method is deprecated - AxisLength() should be called instead") void SetAxisLength (Standard_Real theL1, Standard_Real theL2, Standard_Real theL3)
Standard_Real FirstAxisLength() const { return myAttributes.Find (Prs3d_DA_XAxisLength); } {
myAttributes[Prs3d_DatumAttribute_XAxisLength] = theL1;
//! Returns the length of the displayed second axis. myAttributes[Prs3d_DatumAttribute_YAxisLength] = theL2;
Standard_DEPRECATED("This method is deprecated - AxisLength() should be called instead") myAttributes[Prs3d_DatumAttribute_ZAxisLength] = theL3;
Standard_Real SecondAxisLength() const { return myAttributes.Find (Prs3d_DA_YAxisLength); } }
//! Returns the length of the displayed third axis.
Standard_DEPRECATED("This method is deprecated - AxisLength() should be called instead")
Standard_Real ThirdAxisLength() const { return myAttributes.Find (Prs3d_DA_ZAxisLength); }
//! @return true if axes labels are drawn; TRUE by default. //! @return true if axes labels are drawn; TRUE by default.
Standard_Boolean ToDrawLabels() const { return myToDrawLabels; } Standard_Boolean ToDrawLabels() const { return myToDrawLabels; }
@ -156,18 +106,64 @@ public:
//! Dumps the content of me into the stream //! Dumps the content of me into the stream
Standard_EXPORT virtual void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const Standard_OVERRIDE; Standard_EXPORT virtual void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const Standard_OVERRIDE;
public:
//! Returns the attributes for display of the first axis.
Standard_DEPRECATED("This method is deprecated - LineAspect() should be called instead")
const Handle(Prs3d_LineAspect)& FirstAxisAspect() const { return myLineAspects[Prs3d_DatumParts_XAxis]; }
//! Returns the attributes for display of the second axis.
Standard_DEPRECATED("This method is deprecated - LineAspect() should be called instead")
const Handle(Prs3d_LineAspect)& SecondAxisAspect() const { return myLineAspects[Prs3d_DatumParts_YAxis]; }
//! Returns the attributes for display of the third axis.
Standard_DEPRECATED("This method is deprecated - LineAspect() should be called instead")
const Handle(Prs3d_LineAspect)& ThirdAxisAspect() const { return myLineAspects[Prs3d_DatumParts_ZAxis]; }
//! Sets the DrawFirstAndSecondAxis attributes to active.
Standard_DEPRECATED("This method is deprecated - SetDrawDatumAxes() should be called instead")
Standard_EXPORT void SetDrawFirstAndSecondAxis (Standard_Boolean theToDraw);
//! Returns true if the first and second axes can be drawn.
Standard_DEPRECATED("This method is deprecated - DatumAxes() should be called instead")
Standard_Boolean DrawFirstAndSecondAxis() const
{
return (myAxes & Prs3d_DatumAxes_XAxis) != 0
&& (myAxes & Prs3d_DatumAxes_YAxis) != 0;
}
//! Sets the DrawThirdAxis attributes to active.
Standard_DEPRECATED("This method is deprecated - SetDrawDatumAxes() should be called instead")
Standard_EXPORT void SetDrawThirdAxis (Standard_Boolean theToDraw);
//! Returns true if the third axis can be drawn.
Standard_DEPRECATED("This method is deprecated - DatumAxes() should be called instead")
Standard_Boolean DrawThirdAxis() const { return (myAxes & Prs3d_DatumAxes_ZAxis) != 0; }
//! Returns the length of the displayed first axis.
Standard_DEPRECATED("This method is deprecated - AxisLength() should be called instead")
Standard_Real FirstAxisLength() const { return myAttributes[Prs3d_DatumAttribute_XAxisLength]; }
//! Returns the length of the displayed second axis.
Standard_DEPRECATED("This method is deprecated - AxisLength() should be called instead")
Standard_Real SecondAxisLength() const { return myAttributes[Prs3d_DatumAttribute_YAxisLength]; }
//! Returns the length of the displayed third axis.
Standard_DEPRECATED("This method is deprecated - AxisLength() should be called instead")
Standard_Real ThirdAxisLength() const { return myAttributes[Prs3d_DatumAttribute_ZAxisLength]; }
private: private:
Prs3d_DatumAxes myAxes;
Standard_Boolean myToDrawLabels;
Standard_Boolean myToDrawArrows;
NCollection_DataMap<Prs3d_DatumAttribute, Standard_Real> myAttributes;
NCollection_DataMap<Prs3d_DatumParts, Handle(Prs3d_ShadingAspect)> myShadedAspects;
NCollection_DataMap<Prs3d_DatumParts, Handle(Prs3d_LineAspect)> myLineAspects;
Handle(Prs3d_ShadingAspect) myShadedAspects[Prs3d_DatumParts_NB];
Handle(Prs3d_LineAspect) myLineAspects[Prs3d_DatumParts_NB];
Handle(Prs3d_TextAspect) myTextAspect; Handle(Prs3d_TextAspect) myTextAspect;
Handle(Prs3d_PointAspect) myPointAspect; Handle(Prs3d_PointAspect) myPointAspect;
Handle(Prs3d_ArrowAspect) myArrowAspect; Handle(Prs3d_ArrowAspect) myArrowAspect;
Standard_Real myAttributes[Prs3d_DatumAttribute_NB];
Prs3d_DatumAxes myAxes;
Standard_Boolean myToDrawLabels;
Standard_Boolean myToDrawArrows;
}; };
DEFINE_STANDARD_HANDLE(Prs3d_DatumAspect, Prs3d_BasicAspect) DEFINE_STANDARD_HANDLE(Prs3d_DatumAspect, Prs3d_BasicAspect)

View File

@ -14,17 +14,28 @@
#ifndef _Prs3d_DatumAttribute_HeaderFile #ifndef _Prs3d_DatumAttribute_HeaderFile
#define _Prs3d_DatumAttribute_HeaderFile #define _Prs3d_DatumAttribute_HeaderFile
//! Enumeration defining a part of datum aspect, see Prs3d_Datum. //! Enumeration defining a datum attribute, see Prs3d_Datum.
enum Prs3d_DatumAttribute enum Prs3d_DatumAttribute
{ {
Prs3d_DA_XAxisLength = 0, Prs3d_DatumAttribute_XAxisLength = 0,
Prs3d_DA_YAxisLength, Prs3d_DatumAttribute_YAxisLength,
Prs3d_DA_ZAxisLength, Prs3d_DatumAttribute_ZAxisLength,
Prs3d_DP_ShadingTubeRadiusPercent, Prs3d_DatumAttribute_ShadingTubeRadiusPercent,
Prs3d_DP_ShadingConeRadiusPercent, Prs3d_DatumAttribute_ShadingConeRadiusPercent,
Prs3d_DP_ShadingConeLengthPercent, Prs3d_DatumAttribute_ShadingConeLengthPercent,
Prs3d_DP_ShadingOriginRadiusPercent, Prs3d_DatumAttribute_ShadingOriginRadiusPercent,
Prs3d_DP_ShadingNumberOfFacettes Prs3d_DatumAttribute_ShadingNumberOfFacettes,
// old aliases
Prs3d_DA_XAxisLength = Prs3d_DatumAttribute_XAxisLength,
Prs3d_DA_YAxisLength = Prs3d_DatumAttribute_YAxisLength,
Prs3d_DA_ZAxisLength = Prs3d_DatumAttribute_ZAxisLength,
Prs3d_DP_ShadingTubeRadiusPercent = Prs3d_DatumAttribute_ShadingTubeRadiusPercent,
Prs3d_DP_ShadingConeRadiusPercent = Prs3d_DatumAttribute_ShadingConeRadiusPercent,
Prs3d_DP_ShadingConeLengthPercent = Prs3d_DatumAttribute_ShadingConeLengthPercent,
Prs3d_DP_ShadingOriginRadiusPercent = Prs3d_DatumAttribute_ShadingOriginRadiusPercent,
Prs3d_DP_ShadingNumberOfFacettes = Prs3d_DatumAttribute_ShadingNumberOfFacettes
}; };
enum { Prs3d_DatumAttribute_NB = Prs3d_DatumAttribute_ShadingNumberOfFacettes + 1 };
#endif // _Prs3d_DatumAttribute_HeaderFile #endif // _Prs3d_DatumAttribute_HeaderFile

View File

@ -14,21 +14,30 @@
#ifndef _Prs3d_DatumAxes_HeaderFile #ifndef _Prs3d_DatumAxes_HeaderFile
#define _Prs3d_DatumAxes_HeaderFile #define _Prs3d_DatumAxes_HeaderFile
//! Enumeration defining an axes used in datum aspect, see Prs3d_Datum. //! Enumeration defining axes used in datum aspect, see Prs3d_Datum.
enum Prs3d_DatumAxes enum Prs3d_DatumAxes
{ {
Prs3d_DA_XAxis = 0x00000001, //!< X axis of the datum Prs3d_DatumAxes_XAxis = 0x01, //!< X axis of the datum
Prs3d_DA_YAxis = 0x00000002, //!< Y axis of the datum Prs3d_DatumAxes_YAxis = 0x02, //!< Y axis of the datum
Prs3d_DA_ZAxis = 0x00000004, //!< Z axis of the datum Prs3d_DatumAxes_ZAxis = 0x04, //!< Z axis of the datum
Prs3d_DA_XYAxis = Prs3d_DA_XAxis Prs3d_DatumAxes_XYAxes = Prs3d_DatumAxes_XAxis
| Prs3d_DA_YAxis, //!< XOY 2D axes | Prs3d_DatumAxes_YAxis, //!< XOY 2D axes
Prs3d_DA_YZAxis = Prs3d_DA_YAxis Prs3d_DatumAxes_YZAxes = Prs3d_DatumAxes_YAxis
| Prs3d_DA_ZAxis, //!< YOZ 2D axes | Prs3d_DatumAxes_ZAxis, //!< YOZ 2D axes
Prs3d_DA_XZAxis = Prs3d_DA_XAxis Prs3d_DatumAxes_XZAxes = Prs3d_DatumAxes_XAxis
| Prs3d_DA_ZAxis, //!< XOZ 2D axes | Prs3d_DatumAxes_ZAxis, //!< XOZ 2D axes
Prs3d_DA_XYZAxis = Prs3d_DA_XAxis Prs3d_DatumAxes_XYZAxes = Prs3d_DatumAxes_XAxis
| Prs3d_DA_YAxis | Prs3d_DatumAxes_YAxis
| Prs3d_DA_ZAxis //!< XYZ 3D axes | Prs3d_DatumAxes_ZAxis, //!< XYZ 3D axes
// old aliases
Prs3d_DA_XAxis = Prs3d_DatumAxes_XAxis,
Prs3d_DA_YAxis = Prs3d_DatumAxes_YAxis,
Prs3d_DA_ZAxis = Prs3d_DatumAxes_ZAxis,
Prs3d_DA_XYAxis = Prs3d_DatumAxes_XYAxes,
Prs3d_DA_YZAxis = Prs3d_DatumAxes_YZAxes,
Prs3d_DA_XZAxis = Prs3d_DatumAxes_XZAxes,
Prs3d_DA_XYZAxis = Prs3d_DatumAxes_XYZAxes
}; };
#endif // _Prs3d_DatumParts_HeaderFile #endif // _Prs3d_DatumParts_HeaderFile

View File

@ -17,17 +17,31 @@
//! Enumeration defining a part of datum aspect, see Prs3d_Datum. //! Enumeration defining a part of datum aspect, see Prs3d_Datum.
enum Prs3d_DatumParts enum Prs3d_DatumParts
{ {
Prs3d_DP_Origin = 0, Prs3d_DatumParts_Origin = 0,
Prs3d_DP_XAxis, Prs3d_DatumParts_XAxis,
Prs3d_DP_YAxis, Prs3d_DatumParts_YAxis,
Prs3d_DP_ZAxis, Prs3d_DatumParts_ZAxis,
Prs3d_DP_XArrow, Prs3d_DatumParts_XArrow,
Prs3d_DP_YArrow, Prs3d_DatumParts_YArrow,
Prs3d_DP_ZArrow, Prs3d_DatumParts_ZArrow,
Prs3d_DP_XOYAxis, Prs3d_DatumParts_XOYAxis,
Prs3d_DP_YOZAxis, Prs3d_DatumParts_YOZAxis,
Prs3d_DP_XOZAxis, Prs3d_DatumParts_XOZAxis,
Prs3d_DP_None Prs3d_DatumParts_None,
// old aliases
Prs3d_DP_Origin = Prs3d_DatumParts_Origin,
Prs3d_DP_XAxis = Prs3d_DatumParts_XAxis,
Prs3d_DP_YAxis = Prs3d_DatumParts_YAxis,
Prs3d_DP_ZAxis = Prs3d_DatumParts_ZAxis,
Prs3d_DP_XArrow = Prs3d_DatumParts_XArrow,
Prs3d_DP_YArrow = Prs3d_DatumParts_YArrow,
Prs3d_DP_ZArrow = Prs3d_DatumParts_ZArrow,
Prs3d_DP_XOYAxis = Prs3d_DatumParts_XOYAxis,
Prs3d_DP_YOZAxis = Prs3d_DatumParts_YOZAxis,
Prs3d_DP_XOZAxis = Prs3d_DatumParts_XOZAxis,
Prs3d_DP_None = Prs3d_DatumParts_None
}; };
enum { Prs3d_DatumParts_NB = Prs3d_DatumParts_None + 1 };
#endif // _Prs3d_DatumParts_HeaderFile #endif // _Prs3d_DatumParts_HeaderFile

View File

@ -1308,9 +1308,9 @@ bool Prs3d_Drawer::SetShaderProgram (const Handle(Graphic3d_ShaderProgram)& theP
} }
if (myHasOwnDatumAspect) if (myHasOwnDatumAspect)
{ {
setAspectProgram (theProgram, true, myDatumAspect->LineAspect(Prs3d_DP_XAxis)); setAspectProgram (theProgram, true, myDatumAspect->LineAspect(Prs3d_DatumParts_XAxis));
setAspectProgram (theProgram, true, myDatumAspect->LineAspect(Prs3d_DP_YAxis)); setAspectProgram (theProgram, true, myDatumAspect->LineAspect(Prs3d_DatumParts_YAxis));
setAspectProgram (theProgram, true, myDatumAspect->LineAspect(Prs3d_DP_ZAxis)); setAspectProgram (theProgram, true, myDatumAspect->LineAspect(Prs3d_DatumParts_ZAxis));
} }
setAspectProgram (theProgram, myHasOwnArrowAspect, myArrowAspect); setAspectProgram (theProgram, myHasOwnArrowAspect, myArrowAspect);
return isUpdateNeeded; return isUpdateNeeded;

View File

@ -181,17 +181,17 @@ namespace
{ {
TCollection_AsciiString aValue = theValue; TCollection_AsciiString aValue = theValue;
aValue.LowerCase(); aValue.LowerCase();
if (aValue == "origin") theDatumPart = Prs3d_DP_Origin; if (aValue == "origin") theDatumPart = Prs3d_DatumParts_Origin;
else if (aValue == "xaxis") theDatumPart = Prs3d_DP_XAxis; else if (aValue == "xaxis") theDatumPart = Prs3d_DatumParts_XAxis;
else if (aValue == "yaxis") theDatumPart = Prs3d_DP_YAxis; else if (aValue == "yaxis") theDatumPart = Prs3d_DatumParts_YAxis;
else if (aValue == "zaxis") theDatumPart = Prs3d_DP_ZAxis; else if (aValue == "zaxis") theDatumPart = Prs3d_DatumParts_ZAxis;
else if (aValue == "xarrow") theDatumPart = Prs3d_DP_XArrow; else if (aValue == "xarrow") theDatumPart = Prs3d_DatumParts_XArrow;
else if (aValue == "yarrow") theDatumPart = Prs3d_DP_YArrow; else if (aValue == "yarrow") theDatumPart = Prs3d_DatumParts_YArrow;
else if (aValue == "zarrow") theDatumPart = Prs3d_DP_ZArrow; else if (aValue == "zarrow") theDatumPart = Prs3d_DatumParts_ZArrow;
else if (aValue == "xoyaxis") theDatumPart = Prs3d_DP_XOYAxis; else if (aValue == "xoyaxis") theDatumPart = Prs3d_DatumParts_XOYAxis;
else if (aValue == "yozaxis") theDatumPart = Prs3d_DP_YOZAxis; else if (aValue == "yozaxis") theDatumPart = Prs3d_DatumParts_YOZAxis;
else if (aValue == "xozaxis") theDatumPart = Prs3d_DP_XOZAxis; else if (aValue == "xozaxis") theDatumPart = Prs3d_DatumParts_XOZAxis;
else if (aValue == "whole") theDatumPart = Prs3d_DP_None; else if (aValue == "whole") theDatumPart = Prs3d_DatumParts_None;
else else
{ {
return false; return false;
@ -204,7 +204,7 @@ namespace
{ {
TCollection_AsciiString aValue = theValue; TCollection_AsciiString aValue = theValue;
const Standard_Integer aSplitPos = theValue.Search ("|"); const Standard_Integer aSplitPos = theValue.Search ("|");
Prs3d_DatumParts aPart = Prs3d_DP_None; Prs3d_DatumParts aPart = Prs3d_DatumParts_None;
if (aSplitPos > 0) if (aSplitPos > 0)
{ {
convertToDatumParts (theValue.SubString (aSplitPos + 1, theValue.Length()), theParts); convertToDatumParts (theValue.SubString (aSplitPos + 1, theValue.Length()), theParts);
@ -225,14 +225,14 @@ namespace
{ {
TCollection_AsciiString aValue = theValue; TCollection_AsciiString aValue = theValue;
aValue.LowerCase(); aValue.LowerCase();
if (aValue == "xaxislength") theAttribute = Prs3d_DA_XAxisLength; if (aValue == "xaxislength") theAttribute = Prs3d_DatumAttribute_XAxisLength;
else if (aValue == "yaxislength") theAttribute = Prs3d_DA_YAxisLength; else if (aValue == "yaxislength") theAttribute = Prs3d_DatumAttribute_YAxisLength;
else if (aValue == "zaxislength") theAttribute = Prs3d_DA_ZAxisLength; else if (aValue == "zaxislength") theAttribute = Prs3d_DatumAttribute_ZAxisLength;
else if (aValue == "tuberadiuspercent") theAttribute = Prs3d_DP_ShadingTubeRadiusPercent; else if (aValue == "tuberadiuspercent") theAttribute = Prs3d_DatumAttribute_ShadingTubeRadiusPercent;
else if (aValue == "coneradiuspercent") theAttribute = Prs3d_DP_ShadingConeRadiusPercent; else if (aValue == "coneradiuspercent") theAttribute = Prs3d_DatumAttribute_ShadingConeRadiusPercent;
else if (aValue == "conelengthpercent") theAttribute = Prs3d_DP_ShadingConeLengthPercent; else if (aValue == "conelengthpercent") theAttribute = Prs3d_DatumAttribute_ShadingConeLengthPercent;
else if (aValue == "originradiuspercent") theAttribute = Prs3d_DP_ShadingOriginRadiusPercent; else if (aValue == "originradiuspercent") theAttribute = Prs3d_DatumAttribute_ShadingOriginRadiusPercent;
else if (aValue == "shadingnumberoffacettes") theAttribute = Prs3d_DP_ShadingNumberOfFacettes; else if (aValue == "shadingnumberoffacettes") theAttribute = Prs3d_DatumAttribute_ShadingNumberOfFacettes;
else else
return false; return false;
return true; return true;
@ -243,7 +243,7 @@ namespace
{ {
TCollection_AsciiString aValue = theValue; TCollection_AsciiString aValue = theValue;
const Standard_Integer aSplitPos = theValue.Search ("|"); const Standard_Integer aSplitPos = theValue.Search ("|");
Prs3d_DatumAttribute anAttribute = Prs3d_DA_XAxisLength; Prs3d_DatumAttribute anAttribute = Prs3d_DatumAttribute_XAxisLength;
if (aSplitPos > 0) if (aSplitPos > 0)
{ {
convertToDatumAttributes (theValue.SubString (aSplitPos + 1, theValue.Length()), theAttributes); convertToDatumAttributes (theValue.SubString (aSplitPos + 1, theValue.Length()), theAttributes);
@ -264,13 +264,13 @@ namespace
{ {
TCollection_AsciiString aValue = theValue; TCollection_AsciiString aValue = theValue;
aValue.LowerCase(); aValue.LowerCase();
if (aValue == "x") theDatumAxes = Prs3d_DA_XAxis; if (aValue == "x") theDatumAxes = Prs3d_DatumAxes_XAxis;
else if (aValue == "y") theDatumAxes = Prs3d_DA_YAxis; else if (aValue == "y") theDatumAxes = Prs3d_DatumAxes_YAxis;
else if (aValue == "z") theDatumAxes = Prs3d_DA_ZAxis; else if (aValue == "z") theDatumAxes = Prs3d_DatumAxes_ZAxis;
else if (aValue == "xy") theDatumAxes = Prs3d_DA_XYAxis; else if (aValue == "xy") theDatumAxes = Prs3d_DatumAxes_XYAxes;
else if (aValue == "zy") theDatumAxes = Prs3d_DA_YZAxis; else if (aValue == "zy") theDatumAxes = Prs3d_DatumAxes_YZAxes;
else if (aValue == "xz") theDatumAxes = Prs3d_DA_XZAxis; else if (aValue == "xz") theDatumAxes = Prs3d_DatumAxes_XZAxes;
else if (aValue == "xyz") theDatumAxes = Prs3d_DA_XYZAxis; else if (aValue == "xyz") theDatumAxes = Prs3d_DatumAxes_XYZAxes;
else else
{ {
return false; return false;
@ -413,7 +413,7 @@ namespace
for (NCollection_List<Prs3d_DatumParts>::Iterator anIterator (aParts); anIterator.More(); anIterator.Next()) for (NCollection_List<Prs3d_DatumParts>::Iterator anIterator (aParts); anIterator.More(); anIterator.Next())
{ {
Prs3d_DatumParts aDatumPart = anIterator.Value(); Prs3d_DatumParts aDatumPart = anIterator.Value();
if (aDatumPart == Prs3d_DP_None) if (aDatumPart == Prs3d_DatumParts_None)
{ {
theTrihedron->SetColor (aColor); theTrihedron->SetColor (aColor);
} }
@ -479,11 +479,11 @@ namespace
if (aMapOfArgs.Find ("labels", aValues) if (aMapOfArgs.Find ("labels", aValues)
|| aMapOfArgs.Find ("label", aValues)) || aMapOfArgs.Find ("label", aValues))
{ {
Prs3d_DatumParts aDatumPart = Prs3d_DP_None; Prs3d_DatumParts aDatumPart = Prs3d_DatumParts_None;
if (aValues->Size() >= 2 if (aValues->Size() >= 2
&& convertToDatumPart(aValues->Value(1), aDatumPart) && convertToDatumPart(aValues->Value(1), aDatumPart)
&& aDatumPart >= Prs3d_DP_XAxis && aDatumPart >= Prs3d_DatumParts_XAxis
&& aDatumPart <= Prs3d_DP_ZAxis) // labels are set to axes only && aDatumPart <= Prs3d_DatumParts_ZAxis) // labels are set to axes only
{ {
theTrihedron->SetLabel (aDatumPart, aValues->Value (2)); theTrihedron->SetLabel (aDatumPart, aValues->Value (2));
} }
@ -496,7 +496,7 @@ namespace
if (aMapOfArgs.Find ("drawaxes", aValues)) if (aMapOfArgs.Find ("drawaxes", aValues))
{ {
Prs3d_DatumAxes aDatumAxes = Prs3d_DA_XAxis; Prs3d_DatumAxes aDatumAxes = Prs3d_DatumAxes_XAxis;
if (aValues->Size() < 1 if (aValues->Size() < 1
|| !convertToDatumAxes (aValues->Value (1), aDatumAxes)) || !convertToDatumAxes (aValues->Value (1), aDatumAxes))
{ {

View File

@ -4187,9 +4187,9 @@ static int VZBuffTrihedron (Draw_Interpretor& /*theDI*/,
} }
} }
aView->ZBufferTriedronSetup (anArrowColorX.Name(), anArrowColorY.Name(), anArrowColorZ.Name(), aView->ZBufferTriedronSetup (anArrowColorX, anArrowColorY, anArrowColorZ,
aSizeRatio, anArrowDiam, aNbFacets); aSizeRatio, anArrowDiam, aNbFacets);
aView->TriedronDisplay (aPosition, aLabelsColor.Name(), aScale, aVisType); aView->TriedronDisplay (aPosition, aLabelsColor, aScale, aVisType);
aView->ZFitAll(); aView->ZFitAll();
return 0; return 0;
} }