#include <ModelAPI_AttributeIntArray.h>
#include <ModelAPI_ResultBody.h>
#include <ModelAPI_ResultConstruction.h>
-#include <ModelAPI_ResultField.h>
#include <ModuleBase_BRepOwner.h>
#include <ModuleBase_IModule.h>
}
anAIS = aPrs->getAISObject(anAIS);
} else {
- ResultPtr aResult = std::dynamic_pointer_cast<ModelAPI_Result>(theObject);
- if (aResult.get() != NULL) {
- anAIS = createPresentation(aResult);
- isShading = true;
- }
- else {
- FieldStepPtr aStep =
- std::dynamic_pointer_cast<ModelAPI_ResultField::ModelAPI_FieldStep>(theObject);
- if (aStep) {
- GeomShapePtr aShapePtr = aStep->field()->shape();
+ Handle(AIS_InteractiveObject) anAISPrs =
+ myWorkshop->module()->createPresentation(theObject);
+ if (anAISPrs.IsNull()) {
+ ResultPtr aResult = std::dynamic_pointer_cast<ModelAPI_Result>(theObject);
+ if (aResult.get() != NULL) {
+ std::shared_ptr<GeomAPI_Shape> aShapePtr = ModelAPI_Tools::shape(aResult);
if (aShapePtr.get() != NULL) {
- Handle(AIS_InteractiveObject) anAISPrs = new ModuleBase_ResultPrs(aStep);
- anAIS = AISObjectPtr(new GeomAPI_AISObject());
- anAIS->setImpl(new Handle(AIS_InteractiveObject)(anAISPrs));
- isShading = true;
+ anAISPrs = new ModuleBase_ResultPrs(aResult);
}
}
}
+ Handle(AIS_Shape) aShapePrs = Handle(AIS_Shape)::DownCast(anAISPrs);
+ if (!aShapePrs.IsNull())
+ ModuleBase_Tools::setPointBallHighlighting((AIS_Shape*)aShapePrs.get());
+ anAIS = AISObjectPtr(new GeomAPI_AISObject());
+ anAIS->setImpl(new Handle(AIS_InteractiveObject)(anAISPrs));
+ isShading = true;
}
if (anAIS)
aDisplayed = display(theObject, anAIS, isShading, theUpdateViewer);
}
-//**************************************************************
-AISObjectPtr XGUI_Displayer::createPresentation(const ResultPtr& theResult) const
-{
- AISObjectPtr anAIS;
- if (theResult.get() != NULL) {
- std::shared_ptr<GeomAPI_Shape> aShapePtr = ModelAPI_Tools::shape(theResult);
- if (aShapePtr.get() != NULL) {
- anAIS = AISObjectPtr(new GeomAPI_AISObject());
- Handle(AIS_InteractiveObject) anAISPrs =
- myWorkshop->module()->createPresentation(theResult);
- if (anAISPrs.IsNull())
- anAISPrs = new ModuleBase_ResultPrs(theResult);
- else {
- Handle(AIS_Shape) aShapePrs = Handle(AIS_Shape)::DownCast(anAISPrs);
- if (!aShapePrs.IsNull())
- ModuleBase_Tools::setPointBallHighlighting((AIS_Shape*)aShapePrs.get());
- }
- anAIS->setImpl(new Handle(AIS_InteractiveObject)(anAISPrs));
- }
- }
- return anAIS;
-}
-
-
//**************************************************************
bool canBeShaded(Handle(AIS_InteractiveObject) theAIS, ModuleBase_IModule* theModule)
{
// redisplay objects visualized in the viewer
static Events_ID EVENT_DISP = Events_Loop::eventByName(EVENT_OBJECT_TO_REDISPLAY);
static const ModelAPI_EventCreator* aECreator = ModelAPI_EventCreator::get();
- QObjectPtrList aDisplayed = myWorkshop->displayer()->displayedObjects();
+ QObjectPtrList aDisplayed = displayedObjects();
QObjectPtrList::const_iterator anIt = aDisplayed.begin(), aLast = aDisplayed.end();
for (; anIt != aLast; anIt++) {
aECreator->sendUpdated(*anIt, EVENT_DISP);
}
+ XGUI_ViewerProxy* aViewer = myWorkshop->viewer();
+ if (aViewer->isColorScaleVisible()) {
+ aViewer->setupColorScale();
+ aViewer->setColorScaleShown(true);
+ }
Events_Loop::loop()->flush(EVENT_DISP);
}
return aWasEnabled;
}
-//**************************************************************
-bool XGUI_Displayer::isUpdateEnabled() const
-{
- return myViewerBlockedRecursiveCount == 0;
-}
-
//**************************************************************
void XGUI_Displayer::updateViewer() const
{
if (getCallBack()) getCallBack()->Remove(aTrihedron);
#endif
}
-
- updateViewer();
}
//**************************************************************
::Iterator aShapeIt(theShapesToBeSelected);
for (; aShapeIt.More(); aShapeIt.Next()) {
const TopoDS_Shape& aParameterShape = aShapeIt.Key();
- // isSame should be used here as it does not check orientation of shapes
- // despite on isEqual of shapes or IsBound for shape in QMap. Orientation is
- // different for Edges shapes in model shape and owner even if this is the same shape
- if (aParameterShape.IsSame(aShape)) {
+ // In case of compound we cannot rely on simple comparison method.
+ // If the compound is generated by Group feature then this compound is alwais new.
+ // So, we have to compare content of these compounds
+
+ // isSame should be used here as it does not check orientation of shapes
+ // despite on isEqual of shapes or IsBound for shape in QMap. Orientation is
+ // different for Edges shapes in model shape and owner even if this is the same shape
+ if (ModuleBase_Tools::isSameShape(aParameterShape, aShape)) {
Handle(AIS_InteractiveObject) anOwnerPresentation =
- Handle(AIS_InteractiveObject)::DownCast(anOwner->Selectable());
+ Handle(AIS_InteractiveObject)::DownCast(anOwner->Selectable());
NCollection_Map<Handle(AIS_InteractiveObject)> aPresentations =
- theShapesToBeSelected.Find(aParameterShape);
+ theShapesToBeSelected.Find(aParameterShape);
if (aPresentations.Contains(anOwnerPresentation)) {
theContext->AddOrRemoveSelected(anOwner, Standard_False);
- anOwner->SetSelected (Standard_True);
+ anOwner->SetSelected(Standard_True);
// collect selected presentations to do not select them if compsolid is selected
if (!aSelectedPresentations.Contains(anOwnerPresentation))
aSelectedPresentations.Add(anOwnerPresentation);