Skip to content

Commit

Permalink
[TD]fix bad 3d dimensions
Browse files Browse the repository at this point in the history
- mapToPage was left in place when converting to using
  projectPoint instead of projectToPlane.
  • Loading branch information
WandererFan committed Mar 25, 2023
1 parent 5aeba7a commit 20e44eb
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 23 deletions.
18 changes: 13 additions & 5 deletions src/Mod/TechDraw/App/DimensionGeometry.cpp
Expand Up @@ -50,14 +50,16 @@ void pointPair::move(Base::Vector3d offset)
m_second = m_second - offset;
}

// project the points onto the dvp's paper plane. Points are still in R3 coords.
// project the points onto the dvp's paper plane.
void pointPair::project(DrawViewPart* dvp)
{
m_first = dvp->projectPoint(m_first) * dvp->getScale();
m_second = dvp->projectPoint(m_second) * dvp->getScale();
}

// map the points onto the dvp's XY coordinate system
// this routine is no longer needed since we now use the hlr projector instead
// of "projectToPlane" from Vector3d
void pointPair::mapToPage(DrawViewPart* dvp)
{
gp_Trsf xOXYZ;
Expand All @@ -70,13 +72,15 @@ void pointPair::mapToPage(DrawViewPart* dvp)
m_second = DU::toVector3d(gvSecond);
}

// this routine is no longer needed since we now use the dvp's projectPoint
// which performs Y inversion by default
void pointPair::invertY()
{
m_first = DU::invertY(m_first);
m_second = DU::invertY(m_second);
}

void pointPair::dump(std::string &text) const
void pointPair::dump(std::string text) const

Check warning on line 83 in src/Mod/TechDraw/App/DimensionGeometry.cpp

View workflow job for this annotation

GitHub Actions / Lint / Lint

the parameter 'text' is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
{
Base::Console().Message("pointPair - %s\n", text.c_str());
Base::Console().Message("pointPair - first: %s second: %s\n",
Expand Down Expand Up @@ -106,14 +110,15 @@ void anglePoints::move(Base::Vector3d offset)
m_vertex = m_vertex - offset;
}

// project the points onto the dvp's paper plane. Points are still in R3 coords.
// project the points onto the dvp's paper plane.
void anglePoints::project(DrawViewPart* dvp)
{
m_ends.project(dvp);
m_vertex = dvp->projectPoint(m_vertex) * dvp->getScale();
}

// map the points onto the dvp's XY coordinate system
// obsolete. see above.
void anglePoints::mapToPage(DrawViewPart* dvp)
{
m_ends.mapToPage(dvp);
Expand All @@ -126,13 +131,14 @@ void anglePoints::mapToPage(DrawViewPart* dvp)
}

// map the points onto the coordinate system used for drawing where -Y direction is "up"
// obsolete. see above
void anglePoints::invertY()
{
m_ends.invertY();
m_vertex = DU::invertY(m_vertex);
}

void anglePoints::dump(std::string &text) const
void anglePoints::dump(std::string text) const

Check warning on line 141 in src/Mod/TechDraw/App/DimensionGeometry.cpp

View workflow job for this annotation

GitHub Actions / Lint / Lint

the parameter 'text' is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
{
Base::Console().Message("anglePoints - %s\n", text.c_str());
Base::Console().Message("anglePoints - ends - first: %s second: %s\n",
Expand Down Expand Up @@ -186,6 +192,7 @@ void arcPoints::project(DrawViewPart* dvp)
midArc = dvp->projectPoint(midArc) * dvp->getScale();
}

// obsolete. see above
void arcPoints::mapToPage(DrawViewPart* dvp)
{
gp_Trsf xOXYZ;
Expand All @@ -206,6 +213,7 @@ void arcPoints::mapToPage(DrawViewPart* dvp)
midArc = DU::toVector3d(gvMidArc);
}

// obsolete. see above
void arcPoints::invertY()
{
center = DU::invertY(center);
Expand All @@ -214,7 +222,7 @@ void arcPoints::invertY()
midArc = DU::invertY(midArc);
}

void arcPoints::dump(std::string &text) const
void arcPoints::dump(std::string text) const

Check warning on line 225 in src/Mod/TechDraw/App/DimensionGeometry.cpp

View workflow job for this annotation

GitHub Actions / Lint / Lint

the parameter 'text' is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
{
Base::Console().Message("arcPoints - %s\n", text.c_str());
Base::Console().Message("arcPoints - radius: %.3f center: %s\n", radius,
Expand Down
6 changes: 3 additions & 3 deletions src/Mod/TechDraw/App/DimensionGeometry.h
Expand Up @@ -56,7 +56,7 @@ class TechDrawExport pointPair
void project(DrawViewPart* dvp);
void mapToPage(DrawViewPart* dvp);
void invertY();
void dump(std::string& text) const;
void dump(std::string text) const;

private:
Base::Vector3d m_first;
Expand Down Expand Up @@ -87,7 +87,7 @@ class TechDrawExport anglePoints
void project(DrawViewPart* dvp);
void mapToPage(DrawViewPart* dvp);
void invertY();
void dump(std::string& text) const;
void dump(std::string text) const;

private:
pointPair m_ends;
Expand All @@ -107,7 +107,7 @@ class TechDrawExport arcPoints
void project(DrawViewPart* dvp);
void mapToPage(DrawViewPart* dvp);
void invertY();
void dump(std::string& text) const;
void dump(std::string text) const;

//TODO: setters and getters
bool isArc;
Expand Down
23 changes: 8 additions & 15 deletions src/Mod/TechDraw/App/DrawViewDimension.cpp
Expand Up @@ -648,9 +648,8 @@ pointPair DrawViewDimension::getPointsOneEdge(ReferenceVector references)
gp_Pnt gEnd1 = BRep_Tool::Pnt(TopExp::LastVertex(edge));

pointPair pts(DrawUtil::toVector3d(gEnd0), DrawUtil::toVector3d(gEnd1));
pts.move(getViewPart()->getOriginalCentroid());
pts.move(getViewPart()->getCurrentCentroid());
pts.project(getViewPart());
pts.mapToPage(getViewPart());
return pts;
}

Expand Down Expand Up @@ -682,9 +681,8 @@ pointPair DrawViewDimension::getPointsTwoEdges(ReferenceVector references)
}

pointPair pts = closestPoints(geometry0, geometry1);
pts.move(getViewPart()->getOriginalCentroid());
pts.move(getViewPart()->getCurrentCentroid());
pts.project(getViewPart());
pts.mapToPage(getViewPart());
return pts;
}

Expand Down Expand Up @@ -721,9 +719,8 @@ pointPair DrawViewDimension::getPointsTwoVerts(ReferenceVector references)
gp_Pnt gPoint1 = BRep_Tool::Pnt(vertex1);

pointPair pts(DrawUtil::toVector3d(gPoint0), DrawUtil::toVector3d(gPoint1));
pts.move(getViewPart()->getOriginalCentroid());
pts.move(getViewPart()->getCurrentCentroid());
pts.project(getViewPart());
pts.mapToPage(getViewPart());
return pts;
}

Expand Down Expand Up @@ -761,9 +758,8 @@ pointPair DrawViewDimension::getPointsEdgeVert(ReferenceVector references)
}

pointPair pts = closestPoints(geometry0, geometry1);
pts.move(getViewPart()->getOriginalCentroid());
pts.move(getViewPart()->getCurrentCentroid());
pts.project(getViewPart());
pts.mapToPage(getViewPart());
return pts;
}

Expand Down Expand Up @@ -791,9 +787,8 @@ arcPoints DrawViewDimension::getArcParameters(ReferenceVector references)
}
const TopoDS_Edge& edge = TopoDS::Edge(geometry);
arcPoints pts = arcPointsFromEdge(edge);
pts.move(getViewPart()->getOriginalCentroid());
pts.move(getViewPart()->getCurrentCentroid());
pts.project(getViewPart());
pts.mapToPage(getViewPart());
return pts;
}

Expand Down Expand Up @@ -913,6 +908,7 @@ arcPoints DrawViewDimension::arcPointsFromEdge(TopoDS_Edge occEdge)
pts.arcEnds.second(DrawUtil::toVector3d(props.Value()));
props.SetParameter(pMid);
pts.onCurve.first(DrawUtil::toVector3d(props.Value()));
pts.onCurve.second(DrawUtil::toVector3d(props.Value()));
pts.midArc = DrawUtil::toVector3d(props.Value());

if (adapt.GetType() == GeomAbs_Circle) {
Expand Down Expand Up @@ -1117,9 +1113,8 @@ anglePoints DrawViewDimension::getAnglePointsTwoEdges(ReferenceVector references
}
anglePoints pts(DrawUtil::toVector3d(gApex), DrawUtil::toVector3d(gFar0),
DrawUtil::toVector3d(gFar1));
pts.move(getViewPart()->getOriginalCentroid());
pts.move(getViewPart()->getCurrentCentroid());
pts.project(getViewPart());
pts.mapToPage(getViewPart());
return pts;
}

Expand Down Expand Up @@ -1164,9 +1159,8 @@ anglePoints DrawViewDimension::getAnglePointsThreeVerts(ReferenceVector referenc
gp_Pnt point2 = BRep_Tool::Pnt(vertex2);
anglePoints pts(DrawUtil::toVector3d(point1), DrawUtil::toVector3d(point0),
DrawUtil::toVector3d(point2));
pts.move(getViewPart()->getOriginalCentroid());
pts.move(getViewPart()->getCurrentCentroid());
pts.project(getViewPart());
pts.mapToPage(getViewPart());
return pts;
}

Expand All @@ -1178,7 +1172,6 @@ DrawViewPart* DrawViewDimension::getViewPart() const
return dynamic_cast<TechDraw::DrawViewPart*>(References2D.getValues().at(0));
}


//return the references controlling this dimension. 3d references are used when available
//otherwise 2d references are returned. no checking is performed. Result is pairs of (object, subName)
ReferenceVector DrawViewDimension::getEffectiveReferences() const
Expand Down

0 comments on commit 20e44eb

Please sign in to comment.