- Handle(AIS_Drawer) aDrawer = anAIS->Attributes();
- if (aDrawer->HasLineAspect())
- aDrawer->LineAspect()->SetTypeOfLine((Aspect_TypeOfLine)theStyle);
- if (aDrawer->HasWireAspect())
- aDrawer->WireAspect()->SetTypeOfLine((Aspect_TypeOfLine)theStyle);
+ Handle(Prs3d_Drawer) aDrawer = anAIS->Attributes();
+ Handle(Prs3d_LineAspect) aLineAspect;
+
+ Aspect_TypeOfLine aType = (Aspect_TypeOfLine)theStyle;
+ if (aDrawer->HasOwnLineAspect()) {
+ aLineAspect = aDrawer->LineAspect();
+ }
+ if (aDrawer->HasOwnWireAspect()) {
+ aLineAspect = aDrawer->WireAspect();
+ }
+ Quantity_Color aCurrentColor;
+ Aspect_TypeOfLine aCurrentType;
+ Standard_Real aCurrentWidth;
+ aLineAspect->Aspect()->Values(aCurrentColor, aCurrentType, aCurrentWidth);
+ isChanged = aType != aCurrentType;
+ if (isChanged) {
+ aLineAspect->SetTypeOfLine(aType);
+ }