{
std::shared_ptr<GeomAPI_Shape> aResult(new GeomAPI_Shape);
if (myShape.IsNull()) { // shape is not produced yet, create it
+ SessionPtr aMgr = ModelAPI_Session::get();
+ bool aToSendUpdate = aMgr->isOperation(); // inside of operation may send an update evnet
if (myTrsf.get()) { // get shape of the base result and apply the transformation
ResultPtr anOrigResult = baseRef();
std::shared_ptr<GeomAPI_Shape> anOrigShape = anOrigResult->shape();
aResult->setImpl(new TopoDS_Shape(aShape));
}
}
+ if (!myShape.IsNull() && aToSendUpdate) {
+ static const Events_ID anEvent = Events_Loop::eventByName(EVENT_OBJECT_UPDATED);
+ ModelAPI_EventCreator::get()->sendUpdated(data()->owner(), anEvent);
+ }
return aResult;
} else {
DocumentPtr aDoc = Model_ResultPart::partDoc();
}
}
}
+ if (!myShape.IsNull() && aToSendUpdate) {
+ static const Events_ID anEvent = Events_Loop::eventByName(EVENT_OBJECT_UPDATED);
+ ModelAPI_EventCreator::get()->sendUpdated(data()->owner(), anEvent);
+ }
}
- if (!myShape.IsNull())
+ if (!myShape.IsNull()) {
aResult->setImpl(new TopoDS_Shape(myShape));
+ }
return aResult;
}
return aResult;
}
+bool Model_ResultPart::combineGeometrical(const int theIndex, std::string& theNewName)
+{
+ std::shared_ptr<Model_Document> aDoc = std::dynamic_pointer_cast<Model_Document>(partDoc());
+ if (aDoc.get()) {
+ AttributeSelectionListPtr aSelAttr = aDoc->selectionInPartFeature();
+ AttributeSelectionPtr aThisAttr = aSelAttr->value(theIndex - 1);
+ if (aThisAttr.get()) {
+ aThisAttr->combineGeometrical();
+ if (aThisAttr->value().get()) {
+ int anIndex;
+ theNewName = nameInPart(aThisAttr->value(), anIndex);
+ return true;
+ }
+ }
+ }
+ return false; // something is wrong
+}
+
std::shared_ptr<GeomAPI_Shape> Model_ResultPart::shapeInPart(
const std::string& theName, const std::string& theType, int& theIndex)
{