diff --git a/src/Mod/Measure/App/Measurement.cpp b/src/Mod/Measure/App/Measurement.cpp index 608f35dc0..169bd5660 100644 --- a/src/Mod/Measure/App/Measurement.cpp +++ b/src/Mod/Measure/App/Measurement.cpp @@ -80,12 +80,12 @@ void Measurement::clear() measureType = Invalid; } -bool Measurement::hasReferences() +bool Measurement::has3DReferences() { return (References3D.getSize() > 0); } -/// Convenience Methods for adding points +///add a 3D reference (obj+sub) to end of list int Measurement::addReference3D(App::DocumentObject *obj, const char* subName) { std::vector objects = References3D.getValues(); diff --git a/src/Mod/Measure/App/Measurement.h b/src/Mod/Measure/App/Measurement.h index b2419a37f..29f7f20c1 100644 --- a/src/Mod/Measure/App/Measurement.h +++ b/src/Mod/Measure/App/Measurement.h @@ -55,10 +55,10 @@ public: ~Measurement(); void clear(); - bool hasReferences(); + bool has3DReferences(); /// Add a reference - int addReference3D(App::DocumentObject *obj, const char *subName); + int addReference3D(App::DocumentObject* obj, const char *subName); MeasureType getType(); diff --git a/src/Mod/Measure/App/MeasurementPy.xml b/src/Mod/Measure/App/MeasurementPy.xml index dd9201080..4fa16fef3 100644 --- a/src/Mod/Measure/App/MeasurementPy.xml +++ b/src/Mod/Measure/App/MeasurementPy.xml @@ -19,6 +19,11 @@ add a geometric reference + + + does Measurement have links to 3D geometry + + measure the difference between references to obtain resultant vector diff --git a/src/Mod/Measure/App/MeasurementPyImp.cpp b/src/Mod/Measure/App/MeasurementPyImp.cpp index dd5538416..9970f395f 100644 --- a/src/Mod/Measure/App/MeasurementPyImp.cpp +++ b/src/Mod/Measure/App/MeasurementPyImp.cpp @@ -84,6 +84,19 @@ PyObject* MeasurementPy::addReference3D(PyObject *args) Py_Return; } +PyObject* MeasurementPy::has3DReferences(PyObject *args) +{ + PyObject *result=Py_False; + if (!PyArg_ParseTuple(args, "")) + return 0; + + if (getMeasurementPtr()->has3DReferences()) { + result = Py_True; + } + + return result; +} + PyObject* MeasurementPy::clear(PyObject *) { this->getMeasurementPtr()->clear(); diff --git a/src/Mod/TechDraw/App/DrawViewDimension.cpp b/src/Mod/TechDraw/App/DrawViewDimension.cpp index eadd0aab0..af6beed91 100644 --- a/src/Mod/TechDraw/App/DrawViewDimension.cpp +++ b/src/Mod/TechDraw/App/DrawViewDimension.cpp @@ -84,7 +84,8 @@ DrawViewDimension::DrawViewDimension(void) .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/TechDraw"); std::string fontName = hGrp->GetASCII("LabelFont", "osifont"); - ADD_PROPERTY_TYPE(References,(0,0),"Dimension",(App::PropertyType)(App::Prop_None),"Dimension Supporting References"); + ADD_PROPERTY_TYPE(References2D,(0,0),"Dimension",(App::PropertyType)(App::Prop_None),"Projected Geometry References"); + ADD_PROPERTY_TYPE(References3D,(0,0),"Dimension",(App::PropertyType)(App::Prop_None),"3D Geometry References"); ADD_PROPERTY_TYPE(Precision,(2) ,"Dimension",(App::PropertyType)(App::Prop_None),"Dimension Precision"); ADD_PROPERTY_TYPE(Font ,(fontName.c_str()),"Dimension",App::Prop_None, "The name of the font to use"); ADD_PROPERTY_TYPE(Fontsize,(4) ,"Dimension",(App::PropertyType)(App::Prop_None),"Dimension text size in mm"); @@ -99,22 +100,12 @@ DrawViewDimension::DrawViewDimension(void) ADD_PROPERTY(MeasureType, ((long)0)); //True or Projected measurement //hide the DrawView properties that don't apply to Dimensions - //App::PropertyType propType = static_cast(App::Prop_Hidden|App::Prop_Output); - //int bitReadOnly = 2; - //int bitHidden = 3; - //ScaleType.StatusBits.set(bitReadOnly, true); - //ScaleType.StatusBits.set(bitHidden, true); - //Scale.StatusBits.set(bitReadOnly, true); - //Scale.StatusBits.set(bitHidden,true); - //Rotation.StatusBits.set(bitReadOnly, true); - //Rotation.StatusBits.set(bitHidden, true); ScaleType.setStatus(App::Property::ReadOnly,true); ScaleType.setStatus(App::Property::Hidden,true); Scale.setStatus(App::Property::ReadOnly,true); Scale.setStatus(App::Property::Hidden,true); Rotation.setStatus(App::Property::ReadOnly,true); Rotation.setStatus(App::Property::Hidden,true); - //TODO: hide Dimension X,Y? measurement = new Measure::Measurement(); } @@ -128,7 +119,7 @@ DrawViewDimension::~DrawViewDimension() void DrawViewDimension::onChanged(const App::Property* prop) { if (!isRestoring()) { - if (prop == &References || + if (prop == &References2D || prop == &Precision || prop == &Font || prop == &Fontsize || @@ -142,7 +133,7 @@ void DrawViewDimension::onChanged(const App::Property* prop) } } if (prop == &MeasureType) { - if (MeasureType.isValue("True") && !measurement->hasReferences()) { + if (MeasureType.isValue("True") && !measurement->has3DReferences()) { Base::Console().Warning("Dimension %s missing Reference to 3D model. Must be Projected.\n", getNameInDocument()); MeasureType.setValue("Projected"); } @@ -153,14 +144,29 @@ void DrawViewDimension::onChanged(const App::Property* prop) catch (...) { } } + if (prop == &References3D) { //have to rebuild the Measurement object + clear3DMeasurements(); + set3DMeasurement(References3D.getValues().at(0),References3D.getSubValues()); + } + DrawView::onChanged(prop); } + } +void DrawViewDimension::onDocumentRestored() +{ + if (has3DReferences()) { + clear3DMeasurements(); + set3DMeasurement(References3D.getValues().at(0),References3D.getSubValues()); + } +} + + short DrawViewDimension::mustExecute() const { bool result = 0; - if (References.isTouched() || + if (References2D.isTouched() || Type.isTouched() || MeasureType.isTouched()) { result = 1; @@ -172,7 +178,7 @@ short DrawViewDimension::mustExecute() const App::DocumentObjectExecReturn *DrawViewDimension::execute(void) { - if (!hasReferences()) { //too soon + if (!has2DReferences()) { //too soon return App::DocumentObject::StdReturn; } @@ -214,7 +220,7 @@ std::string DrawViewDimension::getFormatedValue() const double DrawViewDimension::getDimValue() const { double result = 0.0; - if (!hasReferences()) { //happens during Dimension creation + if (!has2DReferences()) { //happens during Dimension creation Base::Console().Message("INFO - DVD::getDimValue - Dimension has no References\n"); return result; } @@ -226,7 +232,7 @@ double DrawViewDimension::getDimValue() const if (MeasureType.isValue("True")) { // True Values - if (!measurement->hasReferences()) { + if (!measurement->has3DReferences()) { return result; } if(Type.isValue("Distance")) { @@ -251,8 +257,8 @@ double DrawViewDimension::getDimValue() const } } else { // Projected Values - const std::vector &objects = References.getValues(); - const std::vector &subElements = References.getSubValues(); + const std::vector &objects = References2D.getValues(); + const std::vector &subElements = References2D.getSubValues(); if (Type.isValue("Distance") && getRefType() == oneEdge) { //TODO: Check for straight line Edge? int idx = DrawUtil::getIndexFromName(subElements[0]); @@ -397,13 +403,13 @@ DrawViewPart* DrawViewDimension::getViewPart() const { //TODO: range_check here if no References. valid situation during Dimension creation. what happens if return NULL?? //need checks everywhere? - return dynamic_cast(References.getValues().at(0)); + return dynamic_cast(References2D.getValues().at(0)); } int DrawViewDimension::getRefType() const { int refType = invalidRef; - const std::vector &subElements = References.getSubValues(); + const std::vector &subElements = References2D.getSubValues(); if ((subElements.size() == 1) && (DrawUtil::getGeomTypeFromName(subElements[0]) == "Edge")) { refType = oneEdge; @@ -421,9 +427,9 @@ int DrawViewDimension::getRefType() const } //!add 1 3D measurement Reference -void DrawViewDimension::setMeasurement(DocumentObject* obj, std::vector& subElements) const +void DrawViewDimension::set3DMeasurement(DocumentObject* const &obj, const std::vector& subElements) { - std::vector::iterator itSub = subElements.begin(); + std::vector::const_iterator itSub = subElements.begin(); for (; itSub != subElements.end(); itSub++) { //int rc = static_cast (measurement->addReference3D(obj,(*itSub).c_str())); @@ -431,28 +437,16 @@ void DrawViewDimension::setMeasurement(DocumentObject* obj, std::vectorclear(); } -int DrawViewDimension::get3DRef(int refIndex, std::string geomType) const -{ - int ref = -1; - if (geomType.compare("Edge") == 0) { - ref = getViewPart()->getEdgeRefByIndex(refIndex); - } else if (geomType.compare("Vertex") == 0) { - ref = getViewPart()->getVertexRefByIndex(refIndex); - } - return ref; -} - - -void DrawViewDimension::dumpRefs(char* text) const +void DrawViewDimension::dumpRefs2D(char* text) const { Base::Console().Message("DUMP - %s\n",text); - const std::vector &objects = References.getValues(); - const std::vector &subElements = References.getSubValues(); + const std::vector &objects = References2D.getValues(); + const std::vector &subElements = References2D.getSubValues(); std::vector::const_iterator objIt = objects.begin(); std::vector::const_iterator subIt = subElements.begin(); int i = 0; @@ -493,9 +487,14 @@ double DrawViewDimension::dist2Segs(Base::Vector2D s1, return minDist; } -bool DrawViewDimension::hasReferences(void) const +bool DrawViewDimension::has2DReferences(void) const { - return (References.getSize() > 0); + return (References2D.getSize() > 0); +} + +bool DrawViewDimension::has3DReferences(void) const +{ + return (References3D.getSize() > 0); } PyObject *DrawViewDimension::getPyObject(void) diff --git a/src/Mod/TechDraw/App/DrawViewDimension.h b/src/Mod/TechDraw/App/DrawViewDimension.h index e3738404c..d012ee462 100644 --- a/src/Mod/TechDraw/App/DrawViewDimension.h +++ b/src/Mod/TechDraw/App/DrawViewDimension.h @@ -47,7 +47,8 @@ public: App::PropertyEnumeration MeasureType; //True/Projected App::PropertyVector ProjDirection; //??why would dim have different projDir from View? - App::PropertyLinkSubList References; //Points to Projection SubFeatures + App::PropertyLinkSubList References2D; //Points to Projection SubFeatures + App::PropertyLinkSubList References3D; //Points to 3D Geometry SubFeatures App::PropertyEnumeration Type; //DistanceX,DistanceY,Diameter, etc App::PropertyVector XAxisDirection; //??always equal to View?? @@ -61,7 +62,8 @@ public: //TODO: do we need a property for the actual dimension value? how else to access from Py? short mustExecute() const; - bool hasReferences(void) const; + bool has2DReferences(void) const; + bool has3DReferences(void) const; /** @name methods overide Feature */ //@{ @@ -79,17 +81,17 @@ public: virtual std::string getFormatedValue() const; virtual double getDimValue() const; DrawViewPart* getViewPart() const; - void setMeasurement(DocumentObject* obj, std::vector& subElements) const; - void clearMeasurements(void); protected: void onChanged(const App::Property* prop); + virtual void onDocumentRestored(); int getIndexFromName(std::string geomName) const; int getRefType() const; //Vertex-Vertex, Edge, Edge-Edge - int get3DRef(int refIndex, std::string geomType) const; protected: Measure::Measurement *measurement; + void set3DMeasurement(DocumentObject* const &obj, const std::vector& subElements); + void clear3DMeasurements(void); double dist2Segs(Base::Vector2D s1, Base::Vector2D e1, Base::Vector2D s2, @@ -97,7 +99,7 @@ protected: private: static const char* TypeEnums[]; static const char* MeasureTypeEnums[]; - void dumpRefs(char* text) const; + void dumpRefs2D(char* text) const; }; } //namespace TechDraw diff --git a/src/Mod/TechDraw/Gui/CommandCreateDims.cpp b/src/Mod/TechDraw/Gui/CommandCreateDims.cpp index 4a3f4e947..f530e64e0 100644 --- a/src/Mod/TechDraw/Gui/CommandCreateDims.cpp +++ b/src/Mod/TechDraw/Gui/CommandCreateDims.cpp @@ -186,7 +186,7 @@ void CmdTechDrawNewDimension::activated(int iMsg) ,contentStr.c_str()); dim = dynamic_cast(getDocument()->getObject(FeatName.c_str())); - dim->References.setValues(objs, subs); + dim->References2D.setValues(objs, subs); doCommand(Doc,"App.activeDocument().%s.MeasureType = 'Projected'",FeatName.c_str()); @@ -272,7 +272,7 @@ void CmdTechDrawNewRadiusDimension::activated(int iMsg) doCommand(Doc, "App.activeDocument().%s.FormatSpec = 'r%%value%%'", FeatName.c_str()); dim = dynamic_cast(getDocument()->getObject(FeatName.c_str())); - dim->References.setValues(objs, subs); + dim->References2D.setValues(objs, subs); doCommand(Doc,"App.activeDocument().%s.MeasureType = 'Projected'",FeatName.c_str()); @@ -359,7 +359,7 @@ void CmdTechDrawNewDiameterDimension::activated(int iMsg) doCommand(Doc, "App.activeDocument().%s.FormatSpec = '\u00d8%%value%%'", FeatName.c_str()); // \u00d8 is Capital O with stroke dim = dynamic_cast(getDocument()->getObject(FeatName.c_str())); - dim->References.setValues(objs, subs); + dim->References2D.setValues(objs, subs); doCommand(Doc,"App.activeDocument().%s.MeasureType = 'Projected'",FeatName.c_str()); @@ -450,7 +450,7 @@ void CmdTechDrawNewLengthDimension::activated(int iMsg) doCommand(Doc,"App.activeDocument().%s.Type = '%s'", FeatName.c_str() , "Distance"); dim = dynamic_cast(getDocument()->getObject(FeatName.c_str())); - dim->References.setValues(objs, subs); + dim->References2D.setValues(objs, subs); doCommand(Doc, "App.activeDocument().%s.FormatSpec = '%%value%%'", FeatName.c_str()); @@ -541,7 +541,7 @@ void CmdTechDrawNewDistanceXDimension::activated(int iMsg) ,"DistanceX"); dim = dynamic_cast(getDocument()->getObject(FeatName.c_str())); - dim->References.setValues(objs, subs); + dim->References2D.setValues(objs, subs); doCommand(Doc, "App.activeDocument().%s.FormatSpec = '%%value%%'", FeatName.c_str()); @@ -631,7 +631,7 @@ void CmdTechDrawNewDistanceYDimension::activated(int iMsg) doCommand(Doc,"App.activeDocument().%s.Type = '%s'",FeatName.c_str() ,"DistanceY"); dim = dynamic_cast(getDocument()->getObject(FeatName.c_str())); - dim->References.setValues(objs, subs); + dim->References2D.setValues(objs, subs); doCommand(Doc, "App.activeDocument().%s.FormatSpec = '%%value%%'", FeatName.c_str()); @@ -713,7 +713,7 @@ void CmdTechDrawNewAngleDimension::activated(int iMsg) ,"%value%\u00b0"); // \u00b0 is degree sign dim = dynamic_cast(getDocument()->getObject(FeatName.c_str())); - dim->References.setValues(objs, subs); + dim->References2D.setValues(objs, subs); doCommand(Doc,"App.activeDocument().%s.MeasureType = 'Projected'",FeatName.c_str()); @@ -782,17 +782,14 @@ void CmdTechDrawLinkDimension::activated(int iMsg) if (!page || !obj3D) { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Incorrect Selection"), - QObject::tr("Can't link a dimension from this selection")); + QObject::tr("Can't link a dimension to this selection")); return; } // dialog to select the Dimension to link Gui::Control().showDialog(new TaskDlgLinkDim(obj3D,subs,page)); - //openCommand("Link Dimension"); - //commitCommand(); - page->getDocument()->recompute(); - + page->getDocument()->recompute(); //still need to recompute in Gui. why? } bool CmdTechDrawLinkDimension::isActive(void) diff --git a/src/Mod/TechDraw/Gui/QGIViewDimension.cpp b/src/Mod/TechDraw/Gui/QGIViewDimension.cpp index f36defb4f..f62bcc84d 100644 --- a/src/Mod/TechDraw/Gui/QGIViewDimension.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewDimension.cpp @@ -250,7 +250,7 @@ void QGIViewDimension::updateView(bool update) return; TechDraw::DrawViewDimension *dim = dynamic_cast(getViewObject()); - std::vector refs = dim->References.getValues(); + std::vector refs = dim->References2D.getValues(); QGIDatumLabel *dLabel = dynamic_cast(datumLabel); @@ -327,7 +327,7 @@ void QGIViewDimension::draw() TechDraw::DrawViewDimension *dim = dynamic_cast(getViewObject()); if((!dim) || //nothing to draw, don't try (!dim->isDerivedFrom(TechDraw::DrawViewDimension::getClassTypeId())) || - (!dim->hasReferences()) ) { + (!dim->has2DReferences()) ) { return; } @@ -351,8 +351,8 @@ void QGIViewDimension::draw() Base::Vector3d lblCenter(lbl->X(), lbl->Y(), 0); //we always draw based on Projected geometry. - //const std::vector &objects = dim->References.getValues(); - const std::vector &SubNames = dim->References.getSubValues(); + //const std::vector &objects = dim->References2D.getValues(); + const std::vector &SubNames = dim->References2D.getSubValues(); const char *dimType = dim->Type.getValueAsString(); @@ -360,7 +360,7 @@ void QGIViewDimension::draw() strcmp(dimType, "DistanceX") == 0 || strcmp(dimType, "DistanceY") == 0) { Base::Vector3d distStart, distEnd; - if((dim->References.getValues().size() == 1) && + if((dim->References2D.getValues().size() == 1) && (DrawUtil::getGeomTypeFromName(SubNames[0]) == "Edge")) { int idx = DrawUtil::getIndexFromName(SubNames[0]); TechDrawGeometry::BaseGeom* geom = refObj->getProjEdgeByIndex(idx); @@ -378,7 +378,7 @@ void QGIViewDimension::draw() } else { throw Base::Exception("FVD::draw - Original edge not found or is invalid type (1)"); } - } else if(dim->References.getValues().size() == 2 && + } else if(dim->References2D.getValues().size() == 2 && DrawUtil::getGeomTypeFromName(SubNames[0]) == "Vertex" && DrawUtil::getGeomTypeFromName(SubNames[1]) == "Vertex") { int idx0 = DrawUtil::getIndexFromName(SubNames[0]); @@ -393,7 +393,7 @@ void QGIViewDimension::draw() } distStart = Base::Vector3d (v0->pnt.fX, v0->pnt.fY, 0.); distEnd = Base::Vector3d (v1->pnt.fX, v1->pnt.fY, 0.); - } else if(dim->References.getValues().size() == 2 && + } else if(dim->References2D.getValues().size() == 2 && DrawUtil::getGeomTypeFromName(SubNames[0]) == "Edge" && DrawUtil::getGeomTypeFromName(SubNames[1]) == "Edge") { int idx0 = DrawUtil::getIndexFromName(SubNames[0]); @@ -599,7 +599,7 @@ void QGIViewDimension::draw() Base::Vector3d lblCenter(label->X(), label->Y(), 0); double radius; - if(dim->References.getValues().size() == 1 && + if(dim->References2D.getValues().size() == 1 && DrawUtil::getGeomTypeFromName(SubNames[0]) == "Edge") { int idx = DrawUtil::getIndexFromName(SubNames[0]); TechDrawGeometry::BaseGeom *geom = refObj->getProjEdgeByIndex(idx); @@ -864,7 +864,7 @@ void QGIViewDimension::draw() Base::Vector3d pointOnCurve,curveCenter; double radius; - if(dim->References.getValues().size() == 1 && + if(dim->References2D.getValues().size() == 1 && DrawUtil::getGeomTypeFromName(SubNames[0]) == "Edge") { int idx = DrawUtil::getIndexFromName(SubNames[0]); TechDrawGeometry::BaseGeom* geom = refObj->getProjEdgeByIndex(idx); @@ -974,7 +974,7 @@ void QGIViewDimension::draw() } else if(strcmp(dimType, "Angle") == 0) { // Only use two straight line edeges for angle - if(dim->References.getValues().size() == 2 && + if(dim->References2D.getValues().size() == 2 && DrawUtil::getGeomTypeFromName(SubNames[0]) == "Edge" && DrawUtil::getGeomTypeFromName(SubNames[1]) == "Edge") { int idx0 = DrawUtil::getIndexFromName(SubNames[0]); diff --git a/src/Mod/TechDraw/Gui/QGVPage.cpp b/src/Mod/TechDraw/Gui/QGVPage.cpp index 566c132f9..86a17add9 100644 --- a/src/Mod/TechDraw/Gui/QGVPage.cpp +++ b/src/Mod/TechDraw/Gui/QGVPage.cpp @@ -312,10 +312,10 @@ QGIView * QGVPage::findParent(QGIView *view) const dim = dynamic_cast(myView); if(dim) { - std::vector objs = dim->References.getValues(); + std::vector objs = dim->References2D.getValues(); if(objs.size() > 0) { - std::vector objs = dim->References.getValues(); + std::vector objs = dim->References2D.getValues(); // Attach the dimension to the first object's group for(std::vector::const_iterator it = qviews.begin(); it != qviews.end(); ++it) { TechDraw::DrawView *viewObj = (*it)->getViewObject(); diff --git a/src/Mod/TechDraw/Gui/TaskLinkDim.cpp b/src/Mod/TechDraw/Gui/TaskLinkDim.cpp index 8b22ebc7d..fb6e07333 100644 --- a/src/Mod/TechDraw/Gui/TaskLinkDim.cpp +++ b/src/Mod/TechDraw/Gui/TaskLinkDim.cpp @@ -94,7 +94,7 @@ void TaskLinkDim::loadAvailDims() for (; itView != pageViews.end(); itView++) { if ((*itView)->isDerivedFrom(TechDraw::DrawViewDimension::getClassTypeId())) { TechDraw::DrawViewDimension* dim = dynamic_cast((*itView)); - if (dim->References.getValues().size() == m_subs.size()) { + if (dim->References2D.getValues().size() == m_subs.size()) { QString label = QString::fromUtf8((*itView)->Label.getValue()); QString name = QString::fromUtf8((*itView)->getNameInDocument()); QString tooltip = label + QString::fromUtf8(" / ") + name; @@ -117,13 +117,17 @@ void TaskLinkDim::updateDims() if (count == 0) { return; } - for (int i=0; iselector->selectedTreeWidget()->topLevelItem(i); + for (int iDim=0; iDimselector->selectedTreeWidget()->topLevelItem(iDim); QString name = child->data(0, Qt::UserRole).toString(); App::DocumentObject* obj = m_page->getDocument()->getObject(name.toStdString().c_str()); TechDraw::DrawViewDimension* dim = dynamic_cast(obj); - dim->clearMeasurements(); - dim->setMeasurement(m_part,m_subs); + std::vector parts; + for (unsigned int iPart = 0; iPart < m_subs.size(); iPart++) { + parts.push_back(m_part); + } + dim->References3D.setValues(parts,m_subs); + //dim->setMeasurement(m_part,m_subs); dim->MeasureType.setValue("True"); } } diff --git a/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp b/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp index 7610afd35..30e86741a 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp @@ -94,7 +94,7 @@ std::vector ViewProviderViewPart::claimChildren(void) cons for(std::vector::const_iterator it = views.begin(); it != views.end(); ++it) { if((*it)->getTypeId().isDerivedFrom(TechDraw::DrawViewDimension::getClassTypeId())) { TechDraw::DrawViewDimension *dim = dynamic_cast(*it); - const std::vector &refs = dim->References.getValues(); + const std::vector &refs = dim->References2D.getValues(); for(std::vector::const_iterator it = refs.begin(); it != refs.end(); ++it) { if(strcmp(getViewPart()->getNameInDocument(), (*it)->getNameInDocument()) == 0) { //wf: isn't this test redundant? temp.push_back(dim); // if a dim is in the inlist,