GeomAPI_AISObject::~GeomAPI_AISObject()
{
- if (myImpl) {
+ if (!empty()) {
// This is necessary for correct deletion of Handle entity.
// Without this Handle does not decremented counter to 0
- Handle(AIS_InteractiveObject) *anAIS = (Handle(AIS_InteractiveObject)*)myImpl;
+ Handle(AIS_InteractiveObject) *anAIS = implPtr<Handle(AIS_InteractiveObject)>();
anAIS->Nullify();
}
}
aShapeAIS->Set(aTDS);
aShapeAIS->Redisplay(Standard_True);
}
- } else
- setImpl(new Handle(AIS_InteractiveObject)(new AIS_Shape(aTDS)));
+ } else {
+ // Set default point as a '+' symbol
+ Handle(AIS_Shape) aShape = new AIS_Shape(aTDS);
+ Handle(Prs3d_Drawer) aDrawer = aShape->Attributes();
+ if (aDrawer->HasOwnPointAspect())
+ aDrawer->PointAspect()->SetTypeOfMarker(Aspect_TOM_PLUS);
+ else
+ aDrawer->SetPointAspect(new Prs3d_PointAspect(Aspect_TOM_PLUS, Quantity_NOC_YELLOW, 1.));
+ setImpl(new Handle(AIS_InteractiveObject)(aShape));
+ }
}
void GeomAPI_AISObject::createDistance(std::shared_ptr<GeomAPI_Pnt> theStartPoint,
if (anAIS.IsNull())
return;
Quantity_Color aColor((Quantity_NameOfColor) theColor);
- anAIS->SetColor(aColor);
Handle(AIS_Dimension) aDimAIS = Handle(AIS_Dimension)::DownCast(anAIS);
if (!aDimAIS.IsNull()) {
aDimAIS->DimensionAspect()->SetCommonColor(aColor);
if (aColor.IsEqual(aCurrentColor))
return false;
- anAIS->SetColor(aColor);
Handle(AIS_Dimension) aDimAIS = Handle(AIS_Dimension)::DownCast(anAIS);
if (!aDimAIS.IsNull()) {
aDimAIS->DimensionAspect()->SetCommonColor(aColor);
if (!anAIS.IsNull()) {
Handle(AIS_Shape) aAISShape = Handle(AIS_Shape)::DownCast(anAIS);
if (!aAISShape.IsNull()) {
- return aAISShape->Shape().ShapeType();
+ const TopoDS_Shape aShape = aAISShape->Shape();
+ if (!aShape.IsNull())
+ return aShape.ShapeType();
}
}
return -1;
return isChanged;
}
-bool GeomAPI_AISObject::setInfiniteState(const bool theState)
-{
- bool isChanged = false;
- Handle(AIS_InteractiveObject) anAIS = impl<Handle(AIS_InteractiveObject)>();
- if (!anAIS.IsNull() && anAIS->IsInfinite() != theState) {
- anAIS->SetInfiniteState(theState);
- isChanged = true;
-
- bool isInfinite = anAIS->IsInfinite();
- int aValue = 9;
- }
- return isChanged;
-}
-
-
bool GeomAPI_AISObject::setTransparensy(double theVal)
{
bool isChanged = false;
isChanged = aCurrentValue != theVal;
if (isChanged)
aContext->SetTransparency(anAIS, theVal, false);
+ } else {
+ anAIS->SetTransparency(theVal);
}
}
return isChanged;