+ } 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));
+ }
+}
+
+std::shared_ptr<GeomAPI_Shape> GeomAPI_AISObject::getShape() const
+{
+ std::shared_ptr<GeomAPI_Shape> aResult;
+
+ Handle(AIS_InteractiveObject) anAIS = impl<Handle(AIS_InteractiveObject)>();
+ if (!anAIS.IsNull()) {
+ Handle(AIS_Shape) aShapeAIS = Handle(AIS_Shape)::DownCast(anAIS);
+ if (aShapeAIS) {
+ std::shared_ptr<GeomAPI_Shape> aResult(new GeomAPI_Shape);
+ aResult->setImpl(new TopoDS_Shape(aShapeAIS->Shape()));
+ return aResult;
+ }
+ }
+ return std::shared_ptr<GeomAPI_Shape>();