MCPcopy Create free account
hub / github.com/FreeCAD/FreeCAD / getPointsTwoVerts

Method getPointsTwoVerts

src/Mod/TechDraw/App/DrawViewDimension.cpp:983–1018  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

981
982
983pointPair 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
1020pointPair DrawViewDimension::getPointsEdgeVert(ReferenceVector references)
1021{

Callers

nothing calls this directly

Calls 15

atMethod · 0.80
getProjVertexByIndexMethod · 0.80
getCurrentCentroidMethod · 0.80
VertexClass · 0.70
getObjectMethod · 0.45
frontMethod · 0.45
getSubNameMethod · 0.45
emptyMethod · 0.45
strMethod · 0.45
pointMethod · 0.45
getGeometryMethod · 0.45
IsNullMethod · 0.45

Tested by

no test coverage detected