| 981 | |
| 982 | |
| 983 | pointPair DrawViewDimension::getPointsTwoVerts(ReferenceVector references) |
| 984 | { |
| 985 | App::DocumentObject* refObject = references.front().getObject(); |
| 986 | int iSubelement0 = DrawUtil::getIndexFromName(references.at(0).getSubName()); |
| 987 | int iSubelement1 = DrawUtil::getIndexFromName(references.at(1).getSubName()); |
| 988 | if (refObject->isDerivedFrom<TechDraw::DrawViewPart>() |
| 989 | && !references.at(0).getSubName().empty()) { |
| 990 | // this is a 2d object (a DVP + subelements) |
| 991 | TechDraw::VertexPtr v0 = getViewPart()->getProjVertexByIndex(iSubelement0); |
| 992 | TechDraw::VertexPtr v1 = getViewPart()->getProjVertexByIndex(iSubelement1); |
| 993 | if (!v0 || !v1) { |
| 994 | std::stringstream ssMessage; |
| 995 | ssMessage << getNameInDocument() << " can not find geometry for 2d reference (3)"; |
| 996 | throw Base::RuntimeError(ssMessage.str()); |
| 997 | } |
| 998 | |
| 999 | return {v0->point(), v1->point()}; |
| 1000 | } |
| 1001 | |
| 1002 | // this is a 3d object |
| 1003 | TopoDS_Shape geometry0 = references.at(0).getGeometry(); |
| 1004 | TopoDS_Shape geometry1 = references.at(1).getGeometry(); |
| 1005 | if (geometry0.IsNull() || geometry1.IsNull() || geometry0.ShapeType() != TopAbs_VERTEX |
| 1006 | || geometry1.ShapeType() != TopAbs_VERTEX) { |
| 1007 | throw Base::RuntimeError("Geometry for dimension reference is null."); |
| 1008 | } |
| 1009 | const TopoDS_Vertex& vertex0 = TopoDS::Vertex(geometry0); |
| 1010 | const TopoDS_Vertex& vertex1 = TopoDS::Vertex(geometry1); |
| 1011 | gp_Pnt gPoint0 = BRep_Tool::Pnt(vertex0); |
| 1012 | gp_Pnt gPoint1 = BRep_Tool::Pnt(vertex1); |
| 1013 | |
| 1014 | pointPair pts(Base::convertTo<Base::Vector3d>(gPoint0), Base::convertTo<Base::Vector3d>(gPoint1)); |
| 1015 | pts.move(getViewPart()->getCurrentCentroid()); |
| 1016 | pts.project(getViewPart()); |
| 1017 | return pts; |
| 1018 | } |
| 1019 | |
| 1020 | pointPair DrawViewDimension::getPointsEdgeVert(ReferenceVector references) |
| 1021 | { |
nothing calls this directly
no test coverage detected