+ return myID->Get().Length() == 0;
+}
+
+void Model_AttributeRefAttr::setAttr(boost::shared_ptr<ModelAPI_Attribute> theAttr)
+{
+ boost::shared_ptr<Model_Data> aData =
+ boost::dynamic_pointer_cast<Model_Data>(theAttr->owner()->data());
+ string anID = aData->id(theAttr);
+ if (myIsInitialized && feature() == theAttr->owner() && myID->Get().IsEqual(anID.c_str()))
+ return; // nothing is changed
+
+ myRef->Set(aData->label());
+ myID->Set(aData->id(theAttr).c_str());
+ owner()->data()->sendAttributeUpdated(this);
+}
+
+boost::shared_ptr<ModelAPI_Attribute> Model_AttributeRefAttr::attr()
+{
+ FeaturePtr aFeature = feature();
+ if (aFeature) {