void XGUI_Selection::getSelectedInViewer(QList<ModuleBase_ViewerPrsPtr>& thePresentations) const
{
Handle(AIS_InteractiveContext) aContext = myWorkshop->viewer()->AISContext();
- if (!aContext.IsNull() && aContext->HasOpenedContext()) {
+ if (!aContext.IsNull()) {
QList<long> aSelectedIds; // Remember of selected address in order to avoid duplicates
for (aContext->InitSelected(); aContext->MoreSelected(); aContext->NextSelected()) {
ModuleBase_ViewerPrsPtr aPrs(new ModuleBase_ViewerPrs());
Handle(SelectMgr_EntityOwner) anOwner = aContext->SelectedOwner();
- if (aSelectedIds.contains((long)anOwner.Access()))
+ if (aSelectedIds.contains((long)anOwner.get()))
continue;
- aSelectedIds.append((long)anOwner.Access());
+ aSelectedIds.append((long)anOwner.get());
fillPresentation(aPrs, anOwner);
const Handle(SelectMgr_EntityOwner)& theOwner) const
{
thePrs->setOwner(theOwner);
-
- Handle(AIS_InteractiveObject) anIO =
+ Handle(SelectMgr_SelectableObject) aSelectable = theOwner->Selectable();
+ Handle(AIS_InteractiveObject) anIO =
Handle(AIS_InteractiveObject)::DownCast(theOwner->Selectable());
thePrs->setInteractive(anIO);
// for one feature
Handle(StdSelect_BRepOwner) aBRO = Handle(StdSelect_BRepOwner)::DownCast(theOwner);
if( !aBRO.IsNull() && aBRO->HasShape() ) {
- // the located method is called in the context to obtain the shape by the SelectedShape() method,
- // so the shape is located by the same rules
+ // the located method is called in the context to obtain the shape by the SelectedShape()
+ // method, so the shape is located by the same rules
TopoDS_Shape aShape = aBRO->Shape().Located (aBRO->Location() * aBRO->Shape().Location());
#ifndef DEBUG_DELIVERY
if (aShape.IsNull())
aShape = findAxisShape(anIO);
#endif
if (!aShape.IsNull()) {
- std::shared_ptr<GeomAPI_Shape> aGeomShape = std::shared_ptr<GeomAPI_Shape>(new GeomAPI_Shape());
+ std::shared_ptr<GeomAPI_Shape> aGeomShape =
+ std::shared_ptr<GeomAPI_Shape>(new GeomAPI_Shape());
aGeomShape->setImpl(new TopoDS_Shape(aShape));
thePrs->setShape(aGeomShape);
}
gp_Lin aLine = aAxis->Component()->Lin();
gp_Dir aDir = aLine.Direction();
std::string aAxName;
- if (aDir.X() == 1.)
+ if (aDir.X() == 1.)
aAxName = "OX";
else if (aDir.Y() == 1.)
aAxName = "OY";
if (aAx.get()) {
thePrs->setObject(aAx);
thePrs->setShape(aAx->shape());
+ return;
}
}
} else {
if (aOrigin.get()) {
thePrs->setObject(aOrigin);
thePrs->setShape(aOrigin->shape());
+ return;
}
}
}
#endif
}
-
+
XGUI_Displayer* aDisplayer = myWorkshop->displayer();
ObjectPtr aFeature = aDisplayer->getObject(anIO);
QList<long> aSelectedIds; // Remember of selected address in order to avoid duplicates
XGUI_Displayer* aDisplayer = myWorkshop->displayer();
for (aContext->InitDetected(); aContext->MoreDetected(); aContext->NextDetected()) {
- ModuleBase_ViewerPrsPtr aPrs(new ModuleBase_ViewerPrs());
- Handle(AIS_InteractiveObject) anIO = aContext->DetectedInteractive();
- if (aSelectedIds.contains((long)anIO.Access()))
- continue;
-
- aSelectedIds.append((long)anIO.Access());
- aPrs->setInteractive(anIO);
-
- ObjectPtr aResult = aDisplayer->getObject(anIO);
- // we should not check the appearance of this feature because there can be some selected shapes
- // for one feature
- aPrs->setObject(aResult);
- if (aContext->HasOpenedContext()) {
- TopoDS_Shape aShape = aContext->DetectedShape();
- if (!aShape.IsNull()) {
- std::shared_ptr<GeomAPI_Shape> aGeomShape = std::shared_ptr<GeomAPI_Shape>(new GeomAPI_Shape());
- aGeomShape->setImpl(new TopoDS_Shape(aShape));
- aPrs->setShape(aGeomShape);
- }
+ Handle(SelectMgr_EntityOwner) anOwner = aContext->DetectedOwner();
+ if (!anOwner.IsNull()) {
+ if (aSelectedIds.contains((long)anOwner.get()))
+ continue;
+ aSelectedIds.append((long)anOwner.get());
+
+ ModuleBase_ViewerPrsPtr aPrs(new ModuleBase_ViewerPrs());
+ fillPresentation(aPrs, anOwner);
+ aPresentations.push_back(aPrs);
}
- aPresentations.push_back(aPrs);
}
return aPresentations;
}
QObjectPtrList XGUI_Selection::selectedObjects() const
{
- return myWorkshop->objectBrowser()->selectedObjects();
+ if (myWorkshop->objectBrowser())
+ return myWorkshop->objectBrowser()->selectedObjects();
+ return QObjectPtrList();
}
void XGUI_Selection::setSelectedObjects( const QObjectPtrList& theObjects ) const
Handle(SelectMgr_EntityOwner) aEO = theOwner;
if (!aEO.IsNull()) {
- Handle(AIS_InteractiveObject) anObj =
+ Handle(AIS_InteractiveObject) anObj =
Handle(AIS_InteractiveObject)::DownCast(aEO->Selectable());
anObject = myWorkshop->displayer()->getObject(anObj);
}
Handle(Prs3d_DatumAspect) DA = aAxis->Attributes()->DatumAspect();
Handle(Geom_TrimmedCurve) aTLine = new Geom_TrimmedCurve(aLine, 0, DA->FirstAxisLength());
- BRep_Builder aBuilder;
+ BRep_Builder aBuilder;
TopoDS_Edge aEdge;
aBuilder.MakeEdge(aEdge, aTLine, Precision::Confusion());
if (!aEdge.IsNull())