[TD]getters and setters for geometry

- make attributes private (or protected) and use
  getters and setters instead of accessing attributes
  directly.
This commit is contained in:
wandererfan
2023-02-11 17:51:05 -05:00
committed by WandererFan
parent c6c3c54b74
commit 01641433c1
20 changed files with 249 additions and 211 deletions

View File

@@ -598,8 +598,8 @@ private:
std::vector<TechDraw::BaseGeomPtr> geoms = dvp->getEdgeGeometry();
std::vector<TopoDS_Edge> cosmeticEdges;
for (auto& g : geoms) {
if (g->hlrVisible && g->cosmetic) {
cosmeticEdges.push_back(g->occEdge);
if (g->getHlrVisible() && g->getCosmetic()) {
cosmeticEdges.push_back(g->getOCCEdge());
}
}
if (!cosmeticEdges.empty()) {

View File

@@ -365,8 +365,8 @@ CosmeticEdge::CosmeticEdge(TechDraw::BaseGeomPtr g)
//we assume input edge is already in Yinverted coordinates
permaStart = m_geometry->getStartPoint();
permaEnd = m_geometry->getEndPoint();
if ((g->geomType == TechDraw::GeomType::CIRCLE) ||
(g->geomType == TechDraw::GeomType::ARCOFCIRCLE)) {
if ((g->getGeomType() == TechDraw::GeomType::CIRCLE) ||
(g->getGeomType() == TechDraw::GeomType::ARCOFCIRCLE)) {
TechDraw::CirclePtr circ = std::static_pointer_cast<TechDraw::Circle>(g);
permaStart = circ->center;
permaEnd = circ->center;
@@ -382,9 +382,9 @@ CosmeticEdge::~CosmeticEdge()
void CosmeticEdge::initialize()
{
m_geometry->classOfEdge = ecHARD;
m_geometry->hlrVisible = true;
m_geometry->cosmetic = true;
m_geometry->setClassOfEdge(ecHARD);
m_geometry->setHlrVisible( true);
m_geometry->setCosmetic(true);
m_geometry->source(COSMETICEDGE);
createNewTag();
@@ -404,13 +404,13 @@ TopoDS_Edge CosmeticEdge::TopoDS_EdgeFromVectors(Base::Vector3d pt1, Base::Vecto
TechDraw::BaseGeomPtr CosmeticEdge::scaledGeometry(double scale)
{
TopoDS_Edge e = m_geometry->occEdge;
TopoDS_Edge e = m_geometry->getOCCEdge();
TopoDS_Shape s = TechDraw::scaleShape(e, scale);
TopoDS_Edge newEdge = TopoDS::Edge(s);
TechDraw::BaseGeomPtr newGeom = TechDraw::BaseGeom::baseFactory(newEdge);
newGeom->classOfEdge = ecHARD;
newGeom->hlrVisible = true;
newGeom->cosmetic = true;
newGeom->setClassOfEdge(ecHARD);
newGeom->setHlrVisible( true);
newGeom->setCosmetic(true);
newGeom->source(COSMETICEDGE);
newGeom->setCosmeticTag(getTagAsString());
return newGeom;
@@ -421,7 +421,7 @@ std::string CosmeticEdge::toString() const
std::stringstream ss;
ss << getTagAsString() << ", $$$, ";
if (m_geometry) {
ss << m_geometry->geomType <<
ss << m_geometry->getGeomType() <<
", $$$, " <<
m_geometry->toString() <<
", $$$, " <<
@@ -450,18 +450,18 @@ void CosmeticEdge::Save(Base::Writer &writer) const
const char v = m_format.m_visible?'1':'0';
writer.Stream() << writer.ind() << "<Visible value=\"" << v << "\"/>" << endl;
writer.Stream() << writer.ind() << "<GeometryType value=\"" << m_geometry->geomType <<"\"/>" << endl;
if (m_geometry->geomType == TechDraw::GeomType::GENERIC) {
writer.Stream() << writer.ind() << "<GeometryType value=\"" << m_geometry->getGeomType() <<"\"/>" << endl;
if (m_geometry->getGeomType() == TechDraw::GeomType::GENERIC) {
GenericPtr gen = std::static_pointer_cast<Generic>(m_geometry);
gen->Save(writer);
} else if (m_geometry->geomType == TechDraw::GeomType::CIRCLE) {
} else if (m_geometry->getGeomType() == TechDraw::GeomType::CIRCLE) {
TechDraw::CirclePtr circ = std::static_pointer_cast<TechDraw::Circle>(m_geometry);
circ->Save(writer);
} else if (m_geometry->geomType == TechDraw::GeomType::ARCOFCIRCLE) {
} else if (m_geometry->getGeomType() == TechDraw::GeomType::ARCOFCIRCLE) {
TechDraw::AOCPtr aoc = std::static_pointer_cast<TechDraw::AOC>(m_geometry);
aoc->Save(writer);
} else {
Base::Console().Warning("CE::Save - unimplemented geomType: %d\n", m_geometry->geomType);
Base::Console().Warning("CE::Save - unimplemented geomType: %d\n", m_geometry->getGeomType());
}
}
@@ -486,14 +486,14 @@ void CosmeticEdge::Restore(Base::XMLReader &reader)
if (gType == TechDraw::GeomType::GENERIC) {
TechDraw::GenericPtr gen = std::make_shared<TechDraw::Generic> ();
gen->Restore(reader);
gen->occEdge = GeometryUtils::edgeFromGeneric(gen);
gen->setOCCEdge(GeometryUtils::edgeFromGeneric(gen));
m_geometry = gen;
permaStart = gen->getStartPoint();
permaEnd = gen->getEndPoint();
} else if (gType == TechDraw::GeomType::CIRCLE) {
TechDraw::CirclePtr circ = std::make_shared<TechDraw::Circle> ();
circ->Restore(reader);
circ->occEdge = GeometryUtils::edgeFromCircle(circ);
circ->setOCCEdge(GeometryUtils::edgeFromCircle(circ));
m_geometry = circ;
permaRadius = circ->radius;
permaStart = circ->center;
@@ -501,7 +501,7 @@ void CosmeticEdge::Restore(Base::XMLReader &reader)
} else if (gType == TechDraw::GeomType::ARCOFCIRCLE) {
TechDraw::AOCPtr aoc = std::make_shared<TechDraw::AOC> ();
aoc->Restore(reader);
aoc->occEdge = GeometryUtils::edgeFromCircleArc(aoc);
aoc->setOCCEdge(GeometryUtils::edgeFromCircleArc(aoc));
m_geometry = aoc;
permaStart = aoc->startPnt;
permaEnd = aoc->endPnt;
@@ -648,9 +648,9 @@ CenterLine::~CenterLine()
void CenterLine::initialize()
{
m_geometry->classOfEdge = ecHARD;
m_geometry->hlrVisible = true;
m_geometry->cosmetic = true;
m_geometry->setClassOfEdge(ecHARD);
m_geometry->setHlrVisible( true);
m_geometry->setCosmetic(true);
m_geometry->source(CENTERLINE);
createNewTag();
@@ -777,9 +777,9 @@ TechDraw::BaseGeomPtr CenterLine::scaledGeometry(TechDraw::DrawViewPart* partFea
TopoDS_Shape s = TechDraw::scaleShape(e, scale);
TopoDS_Edge newEdge = TopoDS::Edge(s);
TechDraw::BaseGeomPtr newGeom = TechDraw::BaseGeom::baseFactory(newEdge);
newGeom->classOfEdge = ecHARD;
newGeom->hlrVisible = true;
newGeom->cosmetic = true;
newGeom->setClassOfEdge(ecHARD);
newGeom->setHlrVisible( true);
newGeom->setCosmetic(true);
newGeom->source(CENTERLINE);
newGeom->setCosmeticTag(getTagAsString());
@@ -911,8 +911,8 @@ std::pair<Base::Vector3d, Base::Vector3d> CenterLine::calcEndPoints(DrawViewPart
partFeat->getFaceEdgesByIndex(idx);
if (!faceEdges.empty()) {
for (auto& fe: faceEdges) {
if (!fe->cosmetic) {
BRepBndLib::AddOptimal(fe->occEdge, faceBox);
if (!fe->getCosmetic()) {
BRepBndLib::AddOptimal(fe->getOCCEdge(), faceBox);
}
}
}
@@ -1251,18 +1251,18 @@ void CenterLine::Save(Base::Writer &writer) const
return Base::Console().Error("CL::Save - m_geometry is null\n");
}
writer.Stream() << writer.ind() << "<GeometryType value=\"" << m_geometry->geomType <<"\"/>" << endl;
if (m_geometry->geomType == TechDraw::GeomType::GENERIC) {
writer.Stream() << writer.ind() << "<GeometryType value=\"" << m_geometry->getGeomType() <<"\"/>" << endl;
if (m_geometry->getGeomType() == TechDraw::GeomType::GENERIC) {
GenericPtr gen = std::static_pointer_cast<Generic>(m_geometry);
gen->Save(writer);
} else if (m_geometry->geomType == TechDraw::GeomType::CIRCLE) {
} else if (m_geometry->getGeomType() == TechDraw::GeomType::CIRCLE) {
TechDraw::CirclePtr circ = std::static_pointer_cast<TechDraw::Circle>(m_geometry);
circ->Save(writer);
} else if (m_geometry->geomType == TechDraw::GeomType::ARCOFCIRCLE) {
} else if (m_geometry->getGeomType() == TechDraw::GeomType::ARCOFCIRCLE) {
TechDraw::AOCPtr aoc = std::static_pointer_cast<TechDraw::AOC>(m_geometry);
aoc->Save(writer);
} else {
Base::Console().Message("CL::Save - unimplemented geomType: %d\n", m_geometry->geomType);
Base::Console().Message("CL::Save - unimplemented geomType: %d\n", m_geometry->getGeomType());
}
}
@@ -1349,17 +1349,17 @@ void CenterLine::Restore(Base::XMLReader &reader)
if (gType == TechDraw::GeomType::GENERIC) {
TechDraw::GenericPtr gen = std::make_shared<TechDraw::Generic> ();
gen->Restore(reader);
gen->occEdge = GeometryUtils::edgeFromGeneric(gen);
gen->setOCCEdge(GeometryUtils::edgeFromGeneric(gen));
m_geometry = gen;
} else if (gType == TechDraw::GeomType::CIRCLE) {
TechDraw::CirclePtr circ = std::make_shared<TechDraw::Circle> ();
circ->Restore(reader);
circ->occEdge = GeometryUtils::edgeFromCircle(circ);
circ->setOCCEdge(GeometryUtils::edgeFromCircle(circ));
m_geometry = circ;
} else if (gType == TechDraw::GeomType::ARCOFCIRCLE) {
TechDraw::AOCPtr aoc = std::make_shared<TechDraw::AOC> ();
aoc->Restore(reader);
aoc->occEdge = GeometryUtils::edgeFromCircleArc(aoc);
aoc->setOCCEdge(GeometryUtils::edgeFromCircleArc(aoc));
m_geometry = aoc;
} else {
Base::Console().Warning("CL::Restore - unimplemented geomType: %d\n", gType);

View File

@@ -229,7 +229,7 @@ void CosmeticEdgePy::setEnd(Py::Vector arg)
Py::Float CosmeticEdgePy::getRadius() const
{
TechDraw::GeomType gt = getCosmeticEdgePtr()->m_geometry->geomType;
TechDraw::GeomType gt = getCosmeticEdgePtr()->m_geometry->getGeomType();
if ( (gt != TechDraw::GeomType::CIRCLE) &&
(gt != TechDraw::GeomType::ARCOFCIRCLE) ) {
throw Py::TypeError("Not a circle. Can not get radius");
@@ -240,7 +240,7 @@ Py::Float CosmeticEdgePy::getRadius() const
void CosmeticEdgePy::setRadius(Py::Float arg)
{
TechDraw::GeomType gt = getCosmeticEdgePtr()->m_geometry->geomType;
TechDraw::GeomType gt = getCosmeticEdgePtr()->m_geometry->getGeomType();
if ( (gt != TechDraw::GeomType::CIRCLE) &&
(gt != TechDraw::GeomType::ARCOFCIRCLE) ) {
throw Py::TypeError("Not a circle. Can not set radius");
@@ -256,7 +256,7 @@ void CosmeticEdgePy::setRadius(Py::Float arg)
Py::Vector CosmeticEdgePy::getCenter() const
{
TechDraw::GeomType gt = getCosmeticEdgePtr()->m_geometry->geomType;
TechDraw::GeomType gt = getCosmeticEdgePtr()->m_geometry->getGeomType();
if ( (gt != TechDraw::GeomType::CIRCLE) &&
(gt != TechDraw::GeomType::ARCOFCIRCLE) ) {
throw Py::TypeError("Not a circle. Can not get center");
@@ -268,7 +268,7 @@ Py::Vector CosmeticEdgePy::getCenter() const
void CosmeticEdgePy::setCenter(Py::Vector arg)
{
TechDraw::GeomType gt = getCosmeticEdgePtr()->m_geometry->geomType;
TechDraw::GeomType gt = getCosmeticEdgePtr()->m_geometry->getGeomType();
// PyObject* p = arg.ptr();
if ( (gt != TechDraw::GeomType::CIRCLE) &&
(gt != TechDraw::GeomType::ARCOFCIRCLE) ) {

View File

@@ -110,8 +110,8 @@ TechDraw::CosmeticVertex* CosmeticExtension::getCosmeticVertexBySelection(std::s
TechDraw::VertexPtr v = dvp->getProjVertexByIndex(idx);
if (!v)
return result;
if (!v->cosmeticTag.empty())
result = getCosmeticVertex(v->cosmeticTag);
if (!v->getCosmeticTag().empty())
result = getCosmeticVertex(v->getCosmeticTag());
return result;
}

View File

@@ -42,10 +42,10 @@ TopoDS_Shape ReferenceEntry::getGeometry() const
std::string gType = geomType();
if (gType == "Vertex") {
auto vgeom = dvp->getVertex(getSubName());
return vgeom->occVertex;
return vgeom->getOCCVertex();
} else if (gType == "Edge") {
auto egeom = dvp->getEdge(getSubName());
return egeom->occEdge;
return egeom->getOCCEdge();
} else if (gType == "Face") {
auto fgeom = dvp->getFace(getSubName());
return fgeom->toOccFace();

View File

@@ -207,8 +207,8 @@ DrawDimHelper::minMax(DrawViewPart* dvp, std::vector<std::string> edgeNames, int
std::vector<TopoDS_Edge> inEdges;
for (auto& bg : edgeGeomList) {
inEdges.push_back(bg->occEdge);
BRepBndLib::Add(bg->occEdge, edgeBbx);
inEdges.push_back(bg->getOCCEdge());
BRepBndLib::Add(bg->getOCCEdge(), edgeBbx);
}
double minX, minY, minZ, maxX, maxY, maxZ;
@@ -323,8 +323,8 @@ DrawDimHelper::minMax3d(DrawViewPart* dvp, ReferenceVector references, int direc
std::vector<TopoDS_Edge> inEdges;
for (auto& bg : edges) {
inEdges.push_back(bg->occEdge);
BRepBndLib::Add(bg->occEdge, shapeBbx);
inEdges.push_back(bg->getOCCEdge());
BRepBndLib::Add(bg->getOCCEdge(), shapeBbx);
}
//from here on this is the same as 2d method

View File

@@ -88,7 +88,7 @@ std::vector<TopoDS_Edge> DrawProjectSplit::getEdgesForWalker(TopoDS_Shape shape,
TechDraw::GeometryObjectPtr go = buildGeometryObject(scaledShape, viewAxis);
const std::vector<TechDraw::BaseGeomPtr>& goEdges = go->getVisibleFaceEdges(false, false);
for (auto& e: goEdges){
edgesIn.push_back(e->occEdge);
edgesIn.push_back(e->getOCCEdge());
}
std::vector<TopoDS_Edge> nonZero;
@@ -126,7 +126,7 @@ std::vector<TopoDS_Edge> DrawProjectSplit::getEdges(TechDraw::GeometryObject* ge
std::vector<TechDraw::BaseGeomPtr>::const_iterator itEdge = goEdges.begin();
std::vector<TopoDS_Edge> origEdges;
for (;itEdge != goEdges.end(); itEdge++) {
origEdges.push_back((*itEdge)->occEdge);
origEdges.push_back((*itEdge)->getOCCEdge());
}
std::vector<TopoDS_Edge> faceEdges;
@@ -499,8 +499,8 @@ std::vector<TopoDS_Edge> DrawProjectSplit::scrubEdges(const std::vector<TechDraw
bool copyGeometry = true;
bool copyMesh = false;
for (const auto& tdEdge: origEdges) {
if (!DrawUtil::isZeroEdge(tdEdge->occEdge, 2.0 * EWTOLERANCE)) {
BRepBuilderAPI_Copy copier(tdEdge->occEdge, copyGeometry, copyMesh);
if (!DrawUtil::isZeroEdge(tdEdge->getOCCEdge(), 2.0 * EWTOLERANCE)) {
BRepBuilderAPI_Copy copier(tdEdge->getOCCEdge(), copyGeometry, copyMesh);
copyEdges.push_back(TopoDS::Edge(copier.Shape()));
}
}

View File

@@ -591,7 +591,7 @@ pointPair DrawViewDimension::getPointsOneEdge(ReferenceVector references)
ssMessage << getNameInDocument() << " can not find geometry for 2d reference (1)";
throw Base::RuntimeError(ssMessage.str());
}
if (geom->geomType != TechDraw::GeomType::GENERIC) {
if (geom->getGeomType() != TechDraw::GeomType::GENERIC) {
std::stringstream ssMessage;
ssMessage << getNameInDocument() << " 2d reference is a " << geom->geomTypeName();
throw Base::RuntimeError(ssMessage.str());
@@ -635,7 +635,7 @@ pointPair DrawViewDimension::getPointsTwoEdges(ReferenceVector references)
ssMessage << getNameInDocument() << " can not find geometry for 2d reference (2)";
throw Base::RuntimeError(ssMessage.str());
}
return closestPoints(geom0->occEdge, geom1->occEdge);
return closestPoints(geom0->getOCCEdge(), geom1->getOCCEdge());
}
//this is a 3d object
@@ -671,7 +671,7 @@ pointPair DrawViewDimension::getPointsTwoVerts(ReferenceVector references)
throw Base::RuntimeError(ssMessage.str());
}
return {v0->pnt, v1->pnt};
return {v0->point(), v1->point()};
}
//this is a 3d object
@@ -716,7 +716,7 @@ pointPair DrawViewDimension::getPointsEdgeVert(ReferenceVector references)
if (!vertex || !edge) {
throw Base::RuntimeError("Missing geometry for dimension (4)");
}
return closestPoints(edge->occEdge, vertex->occVertex);
return closestPoints(edge->getOCCEdge(), vertex->getOCCVertex());
}
//this is a 3d object
@@ -772,12 +772,12 @@ arcPoints DrawViewDimension::arcPointsFromBaseGeom(TechDraw::BaseGeomPtr base)
arcPoints pts;
pts.center = Base::Vector3d(0.0, 0.0, 0.0);
pts.radius = 0.0;
if ((base && base->geomType == TechDraw::GeomType::CIRCLE)
|| (base && base->geomType == TechDraw::GeomType::ARCOFCIRCLE)) {
if ((base && base->getGeomType() == TechDraw::GeomType::CIRCLE)
|| (base && base->getGeomType() == TechDraw::GeomType::ARCOFCIRCLE)) {
circle = std::static_pointer_cast<TechDraw::Circle>(base);
pts.center = Base::Vector3d(circle->center.x, circle->center.y, 0.0);
pts.radius = circle->radius;
if (base->geomType == TechDraw::GeomType::ARCOFCIRCLE) {
if (base->getGeomType() == TechDraw::GeomType::ARCOFCIRCLE) {
TechDraw::AOCPtr aoc = std::static_pointer_cast<TechDraw::AOC>(circle);
pts.isArc = true;
pts.onCurve.first(Base::Vector3d(aoc->midPnt.x, aoc->midPnt.y, 0.0));
@@ -794,8 +794,8 @@ arcPoints DrawViewDimension::arcPointsFromBaseGeom(TechDraw::BaseGeomPtr base)
pts.center + Base::Vector3d(-1, 0, 0) * circle->radius);//arbitrary point on edge
}
}
else if ((base && base->geomType == TechDraw::GeomType::ELLIPSE)
|| (base && base->geomType == TechDraw::GeomType::ARCOFELLIPSE)) {
else if ((base && base->getGeomType() == TechDraw::GeomType::ELLIPSE)
|| (base && base->getGeomType() == TechDraw::GeomType::ARCOFELLIPSE)) {
TechDraw::EllipsePtr ellipse = std::static_pointer_cast<TechDraw::Ellipse>(base);
if (ellipse->closed()) {
double r1 = ellipse->minor;
@@ -826,14 +826,14 @@ arcPoints DrawViewDimension::arcPointsFromBaseGeom(TechDraw::BaseGeomPtr base)
+ Base::Vector3d(-1, 0, 0) * rAvg);//arbitrary point on edge
}
}
else if (base && base->geomType == TechDraw::GeomType::BSPLINE) {
else if (base && base->getGeomType() == TechDraw::GeomType::BSPLINE) {
TechDraw::BSplinePtr spline = std::static_pointer_cast<TechDraw::BSpline>(base);
if (spline->isCircle()) {
bool arc;
double rad;
Base::Vector3d center;
//bool circ =
GeometryUtils::getCircleParms(spline->occEdge, rad, center, arc);
GeometryUtils::getCircleParms(spline->getOCCEdge(), rad, center, arc);
pts.center = Base::Vector3d(center.x, center.y, 0.0);
pts.radius = rad;
pts.arcEnds.first(Base::Vector3d(spline->startPnt.x, spline->startPnt.y, 0.0));
@@ -980,13 +980,13 @@ anglePoints DrawViewDimension::getAnglePointsTwoEdges(ReferenceVector references
ssMessage << getNameInDocument() << " can not find geometry for 2d reference (5)";
throw Base::RuntimeError(ssMessage.str());
}
if (geom0->geomType != TechDraw::GeomType::GENERIC) {
if (geom0->getGeomType() != TechDraw::GeomType::GENERIC) {
std::stringstream ssMessage;
ssMessage << getNameInDocument() << " first 2d reference is a "
<< geom0->geomTypeName();
throw Base::RuntimeError(ssMessage.str());
}
if (geom1->geomType != TechDraw::GeomType::GENERIC) {
if (geom1->getGeomType() != TechDraw::GeomType::GENERIC) {
std::stringstream ssMessage;
ssMessage << getNameInDocument() << " second 2d reference is a "
<< geom0->geomTypeName();
@@ -1436,13 +1436,13 @@ bool DrawViewDimension::leaderIntersectsArc(Base::Vector3d s, Base::Vector3d poi
const std::vector<std::string>& subElements = References2D.getSubValues();
int idx = DrawUtil::getIndexFromName(subElements[0]);
TechDraw::BaseGeomPtr base = getViewPart()->getGeomByIndex(idx);
if (base && base->geomType == TechDraw::GeomType::ARCOFCIRCLE) {
if (base && base->getGeomType() == TechDraw::GeomType::ARCOFCIRCLE) {
TechDraw::AOCPtr aoc = std::static_pointer_cast<TechDraw::AOC>(base);
if (aoc->intersectsArc(s, pointOnCircle)) {
result = true;
}
}
else if (base && base->geomType == TechDraw::GeomType::BSPLINE) {
else if (base && base->getGeomType() == TechDraw::GeomType::BSPLINE) {
TechDraw::BSplinePtr spline = std::static_pointer_cast<TechDraw::BSpline>(base);
if (spline->isCircle()) {
if (spline->intersectsArc(s, pointOnCircle)) {

View File

@@ -569,7 +569,7 @@ void DrawViewPart::extractFaces()
bool copyGeometry = true;
bool copyMesh = false;
for (const auto& e : goEdges) {
BRepBuilderAPI_Copy copier(e->occEdge, copyGeometry, copyMesh);
BRepBuilderAPI_Copy copier(e->getOCCEdge(), copyGeometry, copyMesh);
copyEdges.push_back(TopoDS::Edge(copier.Shape()));
}
std::vector<TopoDS_Edge> nonZero;
@@ -865,7 +865,7 @@ TechDraw::VertexPtr DrawViewPart::getProjVertexByCosTag(std::string cosTag)
}
for (auto& gv : gVerts) {
if (gv->cosmeticTag == cosTag) {
if (gv->getCosmeticTag() == cosTag) {
result = gv;
break;
}
@@ -883,7 +883,7 @@ std::vector<TechDraw::BaseGeomPtr> DrawViewPart::getFaceEdgesByIndex(int idx) co
TechDraw::FacePtr projFace = faces.at(idx);
for (auto& w : projFace->wires) {
for (auto& g : w->geoms) {
if (g->cosmetic) {
if (g->getCosmetic()) {
//if g is cosmetic, we should skip it
continue;
}
@@ -904,10 +904,8 @@ std::vector<TopoDS_Wire> DrawViewPart::getWireForFace(int idx) const
TechDraw::FacePtr ourFace = faces.at(idx);
for (auto& w : ourFace->wires) {
edges.clear();
int i = 0;
for (auto& g : w->geoms) {
edges.push_back(g->occEdge);
i++;
edges.push_back(g->getOCCEdge());
}
TopoDS_Wire occwire = EdgeWalker::makeCleanWire(edges);
result.push_back(occwire);
@@ -1279,9 +1277,6 @@ bool DrawViewPart::checkXDirection() const
// Base::Console().Message("DVP::checkXDirection()\n");
Base::Vector3d xDir = XDirection.getValue();
if (DrawUtil::fpCompare(xDir.Length(), 0.0)) {
Base::Vector3d dir = Direction.getValue();
Base::Vector3d origin(0.0, 0.0, 0.0);
xDir = getLegacyX(origin, dir);
return false;
}
return true;
@@ -1326,7 +1321,7 @@ void DrawViewPart::updateReferenceVert(std::string tag, Base::Vector3d loc2d)
{
for (auto& v : m_referenceVerts) {
if (v->getTagAsString() == tag) {
v->pnt = loc2d;
v->point(loc2d);
break;
}
}
@@ -1351,7 +1346,7 @@ std::string DrawViewPart::addReferenceVertex(Base::Vector3d v)
// TechDraw::Vertex* ref = new TechDraw::Vertex(scaledV);
Base::Vector3d scaledV = v;
TechDraw::VertexPtr ref(std::make_shared<TechDraw::Vertex>(scaledV));
ref->reference = true;
ref->isReference(true);
refTag = ref->getTagAsString();
m_referenceVerts.push_back(ref);
return refTag;
@@ -1379,7 +1374,7 @@ void DrawViewPart::removeAllReferencesFromGeom()
std::vector<TechDraw::VertexPtr> gVerts = getVertexGeometry();
std::vector<TechDraw::VertexPtr> newVerts;
for (auto& gv : gVerts) {
if (!gv->reference) {
if (!gv->isReference()) {
newVerts.push_back(gv);
}
}
@@ -1436,7 +1431,7 @@ void DrawViewPart::refreshCVGeoms()
std::vector<TechDraw::VertexPtr> gVerts = getVertexGeometry();
std::vector<TechDraw::VertexPtr> newGVerts;
for (auto& gv : gVerts) {
if (gv->cosmeticTag.empty()) {//keep only non-cv vertices
if (gv->getCosmeticTag().empty()) {//keep only non-cv vertices
newGVerts.push_back(gv);
}
}
@@ -1455,7 +1450,7 @@ int DrawViewPart::getCVIndex(std::string tag)
int i = 0;
bool found = false;
for (auto& gv : gVerts) {
if (gv->cosmeticTag == tag) {
if (gv->getCosmeticTag() == tag) {
result = i;
found = true;
break;

View File

@@ -69,8 +69,8 @@ PyObject* DrawViewPartPy::getVisibleEdges(PyObject *args)
Py::List pEdgeList;
std::vector<TechDraw::BaseGeomPtr> geoms = dvp->getEdgeGeometry();
for (auto& g: geoms) {
if (g->hlrVisible) {
PyObject* pEdge = new Part::TopoShapeEdgePy(new Part::TopoShape(g->occEdge));
if (g->getHlrVisible()) {
PyObject* pEdge = new Part::TopoShapeEdgePy(new Part::TopoShape(g->getOCCEdge()));
pEdgeList.append(Py::asObject(pEdge));
}
}
@@ -88,8 +88,8 @@ PyObject* DrawViewPartPy::getHiddenEdges(PyObject *args)
Py::List pEdgeList;
std::vector<TechDraw::BaseGeomPtr> geoms = dvp->getEdgeGeometry();
for (auto& g: geoms) {
if (!g->hlrVisible) {
PyObject* pEdge = new Part::TopoShapeEdgePy(new Part::TopoShape(g->occEdge));
if (!g->getHlrVisible()) {
PyObject* pEdge = new Part::TopoShapeEdgePy(new Part::TopoShape(g->getOCCEdge()));
pEdgeList.append(Py::asObject(pEdge));
}
}
@@ -657,7 +657,7 @@ PyObject* DrawViewPartPy::getEdgeByIndex(PyObject *args)
return nullptr;
}
TopoDS_Shape temp = TechDraw::mirrorShapeVec(geom->occEdge,
TopoDS_Shape temp = TechDraw::mirrorShapeVec(geom->getOCCEdge(),
Base::Vector3d(0.0, 0.0, 0.0),
1.0 / dvp->getScale());
@@ -711,7 +711,7 @@ PyObject* DrawViewPartPy::getEdgeBySelection(PyObject *args)
return nullptr;
}
TopoDS_Shape temp = TechDraw::mirrorShapeVec(geom->occEdge,
TopoDS_Shape temp = TechDraw::mirrorShapeVec(geom->getOCCEdge(),
Base::Vector3d(0.0, 0.0, 0.0),
1.0 / dvp->getScale());

View File

@@ -75,6 +75,7 @@
#include <Base/Writer.h>
#include "Geometry.h"
#include "GeometryObject.h"
#include "DrawUtil.h"
@@ -116,7 +117,7 @@ TopoDS_Wire Wire::toOccWire() const
{
BRepBuilderAPI_MakeWire mkWire;
for (auto& g: geoms) {
TopoDS_Edge e = g->occEdge;
TopoDS_Edge e = g->getOCCEdge();
mkWire.Add(e);
}
if (mkWire.IsDone()) {
@@ -187,7 +188,7 @@ BaseGeomPtr BaseGeom::copy()
result->extractType = extractType;
result->classOfEdge = classOfEdge;
result->hlrVisible = hlrVisible;
result->setHlrVisible( hlrVisible);
result->reversed = reversed;
result->ref3D = ref3D;
result->cosmetic = cosmetic;
@@ -367,7 +368,7 @@ double BaseGeom::minDist(Base::Vector3d p)
//!find point on me nearest to p
Base::Vector3d BaseGeom::nearPoint(const BaseGeomPtr p)
{
TopoDS_Edge pEdge = p->occEdge;
TopoDS_Edge pEdge = p->getOCCEdge();
BRepExtrema_DistShapeShape extss(occEdge, pEdge);
if (!extss.IsDone() || extss.NbSolution() == 0) {
return Base::Vector3d(0.0, 0.0, 0.0);
@@ -413,6 +414,15 @@ bool BaseGeom::closed()
return false;
}
// return a BaseGeom similar to this, but inverted with respect to Y axis
BaseGeomPtr BaseGeom::inverted()
{
Base::Console().Message("BG::inverted()\n");
TopoDS_Shape invertedShape = GeometryObject::invertGeometry(occEdge);
TopoDS_Edge invertedEdge = TopoDS::Edge(invertedShape);
return baseFactory(invertedEdge);
}
//keep this in sync with enum GeomType
std::string BaseGeom::geomTypeName()
{
@@ -539,15 +549,15 @@ std::vector<Base::Vector3d> BaseGeom::intersection(TechDraw::BaseGeomPtr geom2)
# define isArcOrCircle 2
// we check the type of the two objects
int edge1(unknown), edge2(unknown);
if (this->geomType == TechDraw::CIRCLE ||
this->geomType == TechDraw::ARCOFCIRCLE)
if (this->getGeomType() == TechDraw::CIRCLE ||
this->getGeomType() == TechDraw::ARCOFCIRCLE)
edge1 = isArcOrCircle;
else if (this->geomType == TechDraw::GENERIC)
else if (this->getGeomType() == TechDraw::GENERIC)
edge1 = isGeneric;
if (geom2->geomType == TechDraw::CIRCLE ||
geom2->geomType == TechDraw::ARCOFCIRCLE)
if (geom2->getGeomType() == TechDraw::CIRCLE ||
geom2->getGeomType() == TechDraw::ARCOFCIRCLE)
edge2 = isArcOrCircle;
else if (geom2->geomType == TechDraw::GENERIC)
else if (geom2->getGeomType() == TechDraw::GENERIC)
edge2 = isGeneric;
// we calculate the intersections
std::vector<Base::Vector3d> interPoints;
@@ -1334,28 +1344,28 @@ Vertex::Vertex()
extractType = ExtractionType::Plain; //obs?
hlrVisible = false;
ref3D = -1; //obs. never used.
isCenter = false;
m_center = false;
BRepBuilderAPI_MakeVertex mkVert(gp_Pnt(0.0, 0.0, 0.0));
occVertex = mkVert.Vertex();
cosmetic = false;
cosmeticLink = -1;
cosmeticTag = std::string();
reference = false;
m_reference = false;
createNewTag();
}
Vertex::Vertex(const Vertex* v)
{
pnt = v->pnt;
pnt = v->point();
extractType = v->extractType; //obs?
hlrVisible = v->hlrVisible;
ref3D = v->ref3D; //obs. never used.
isCenter = v->isCenter;
m_center = v->m_center;
occVertex = v->occVertex;
cosmetic = v->cosmetic;
cosmeticLink = v->cosmeticLink;
cosmeticTag = v->cosmeticTag;
reference = false;
m_reference = false;
createNewTag();
}
@@ -1365,13 +1375,13 @@ Vertex::Vertex(double x, double y)
extractType = ExtractionType::Plain; //obs?
hlrVisible = false;
ref3D = -1; //obs. never used.
isCenter = false;
m_center = false;
BRepBuilderAPI_MakeVertex mkVert(gp_Pnt(x, y, 0.0));
occVertex = mkVert.Vertex();
cosmetic = false;
cosmeticLink = -1;
cosmeticTag = std::string();
reference = false;
m_reference = false;
createNewTag();
}
@@ -1400,10 +1410,10 @@ void Vertex::Save(Base::Writer &writer) const
"\"/>" << endl;
writer.Stream() << writer.ind() << "<Extract value=\"" << extractType << "\"/>" << endl;
const char v = hlrVisible?'1':'0';
const char v = hlrVisible ? '1':'0';
writer.Stream() << writer.ind() << "<HLRVisible value=\"" << v << "\"/>" << endl;
writer.Stream() << writer.ind() << "<Ref3D value=\"" << ref3D << "\"/>" << endl;
const char c = isCenter?'1':'0';
const char c = m_center ?'1':'0';
writer.Stream() << writer.ind() << "<IsCenter value=\"" << c << "\"/>" << endl;
const char c2 = cosmetic?'1':'0';
writer.Stream() << writer.ind() << "<Cosmetic value=\"" << c2 << "\"/>" << endl;
@@ -1441,7 +1451,7 @@ void Vertex::Restore(Base::XMLReader &reader)
//will restore read to eof looking for "Reference" in old docs?? YES!!
// reader.readElement("Reference");
// reference = (bool)reader.getAttributeAsInteger("value")==0?false:true;
// m_reference = (bool)reader.getAttributeAsInteger("value")==0?false:true;
reader.readElement("VertexTag");
std::string temp = reader.getAttribute("value");
@@ -1510,7 +1520,7 @@ BaseGeomPtrVector GeometryUtils::chainGeoms(BaseGeomPtrVector geoms)
if (next.index) { //found an unused edge with vertex == atPoint
BaseGeomPtr nextEdge = geoms.at(next.index);
used[next.index] = true;
nextEdge->reversed = next.reversed;
nextEdge->setReversed(next.reversed);
result.push_back(nextEdge);
if (next.reversed) {
atPoint = nextEdge->getStartPoint();

View File

@@ -95,25 +95,9 @@ class TechDrawExport BaseGeom : public std::enable_shared_from_this<BaseGeom>
//BaseGeom(BaseGeomPtr bg); //do we need a copy constructor too?
virtual ~BaseGeom() = default;
public:
GeomType geomType;
ExtractionType extractType; //obs
edgeClass classOfEdge;
bool hlrVisible;
bool reversed;
int ref3D; //obs?
TopoDS_Edge occEdge; //projected Edge
bool cosmetic;
int source() { return m_source; }
void source(int s) { m_source = s; }
int sourceIndex() { return m_sourceIndex; }
void sourceIndex(int si) { m_sourceIndex = si; }
std::string getCosmeticTag() { return cosmeticTag; }
void setCosmeticTag(std::string t) { cosmeticTag = t; }
virtual std::string toString() const;
virtual void Save(Base::Writer& w) const;
virtual void Restore(Base::XMLReader& r);
std::vector<Base::Vector3d> findEndPoints();
Base::Vector3d getStartPoint();
Base::Vector3d getEndPoint();
@@ -127,6 +111,7 @@ class TechDrawExport BaseGeom : public std::enable_shared_from_this<BaseGeom>
bool closed();
BaseGeomPtr copy();
std::string dump();
virtual std::string toString() const;
std::vector<Base::Vector3d> intersection(TechDraw::BaseGeomPtr geom2);
//Uniqueness
@@ -134,8 +119,33 @@ class TechDrawExport BaseGeom : public std::enable_shared_from_this<BaseGeom>
virtual std::string getTagAsString() const;
std::string geomTypeName();
BaseGeomPtr inverted();
// attribute setters and getters
GeomType getGeomType() { return geomType; }
void setGeomType(GeomType type) { geomType = type; }
edgeClass getClassOfEdge() { return classOfEdge; }
void setClassOfEdge(edgeClass newClass) { classOfEdge = newClass; }
bool getHlrVisible() { return hlrVisible; }
void setHlrVisible(bool state) { hlrVisible = state; }
bool getReversed() { return reversed; }
void setReversed(bool state) { reversed = state; }
int getRef3d() { return ref3D; }
void setRef3d(int ref) { ref3D = ref; }
TopoDS_Edge getOCCEdge() { return occEdge; }
void setOCCEdge(TopoDS_Edge newEdge) { occEdge = newEdge; }
bool getCosmetic() { return cosmetic; }
void setCosmetic (bool state) { cosmetic = state; }
int source() { return m_source; }
void source(int s) { m_source = s; }
int sourceIndex() { return m_sourceIndex; }
void sourceIndex(int si) { m_sourceIndex = si; }
std::string getCosmeticTag() { return cosmeticTag; }
void setCosmeticTag(std::string t) { cosmeticTag = t; }
protected:
void createNewTag();
private:
void intersectionLL(TechDraw::BaseGeomPtr geom1,
TechDraw::BaseGeomPtr geom2,
std::vector<Base::Vector3d>& interPoints);
@@ -146,14 +156,20 @@ private:
TechDraw::BaseGeomPtr geom2,
std::vector<Base::Vector3d>& interPoints);
protected:
GeomType geomType;
ExtractionType extractType; //obs
edgeClass classOfEdge;
bool hlrVisible;
bool reversed;
int ref3D; //obs?
TopoDS_Edge occEdge; //projected Edge
bool cosmetic;
//TODO: all these attributes should be private
int m_source; //0 - geom, 1 - cosmetic edge, 2 - centerline
int m_sourceIndex;
std::string cosmeticTag;
void createNewTag();
boost::uuids::uuid tag;
};
using BaseGeomPtrVector = std::vector<BaseGeomPtr>; //new style
@@ -335,19 +351,9 @@ class TechDrawExport Vertex
virtual void Restore(Base::XMLReader &/*reader*/);
virtual void dump(const char* title = "");
Base::Vector3d pnt;
ExtractionType extractType; //obs?
bool hlrVisible; //visible according to HLR
int ref3D; //obs. never used.
bool isCenter;
TopoDS_Vertex occVertex;
bool isEqual(const Vertex& v, double tol);
Base::Vector3d point() const { return Base::Vector3d(pnt.x, pnt.y, 0.0); }
void point(Base::Vector3d v){ pnt = Base::Vector3d(v.x, v.y); }
bool cosmetic;
int cosmeticLink; //deprec. use cosmeticTag
std::string cosmeticTag;
bool reference; //reference vertex (ex robust dimension)
double x() {return pnt.x;}
double y() {return pnt.y;}
@@ -355,11 +361,38 @@ class TechDrawExport Vertex
boost::uuids::uuid getTag() const;
virtual std::string getTagAsString() const;
// attribute setters and getters
bool getHlrVisible() { return hlrVisible; }
void setHlrVisible(bool state) { hlrVisible = state; }
int getRef3d() { return ref3D; }
void setRef3d(int ref) { ref3D = ref; }
TopoDS_Vertex getOCCVertex() { return occVertex; }
void setOCCVertex(TopoDS_Vertex newVertex) { occVertex = newVertex; }
bool getCosmetic() { return cosmetic; }
void setCosmetic (bool state) { cosmetic = state; }
std::string getCosmeticTag() { return cosmeticTag; }
void setCosmeticTag(std::string t) { cosmeticTag = t; }
bool isCenter() {return m_center;}
void isCenter(bool state) { m_center = state; }
bool isReference() { return m_reference; }
void isReference(bool state) { m_reference = state; }
protected:
//Uniqueness
void createNewTag();
void assignTag(const TechDraw::Vertex* v);
Base::Vector3d pnt;
ExtractionType extractType; //obs?
bool hlrVisible; //visible according to HLR
int ref3D; //obs. never used.
bool m_center;
TopoDS_Vertex occVertex;
bool cosmetic;
int cosmeticLink; //deprec. use cosmeticTag
std::string cosmeticTag;
bool m_reference; //reference vertex (ex robust dimension)
boost::uuids::uuid tag;
};
using VertexPtr = std::shared_ptr<Vertex>;

View File

@@ -98,8 +98,8 @@ const BaseGeomPtrVector GeometryObject::getVisibleFaceEdges(const bool smooth,
bool seamOK = seam;
for (auto& e : edgeGeom) {
if (e->hlrVisible) {
switch (e->classOfEdge) {
if (e->getHlrVisible()) {
switch (e->getClassOfEdge()) {
case ecHARD:
case ecOUTLINE:
result.push_back(e);
@@ -124,7 +124,7 @@ const BaseGeomPtrVector GeometryObject::getVisibleFaceEdges(const bool smooth,
// TopoDS_Compound comp;
// builder.MakeCompound(comp);
// for (auto& r: result) {
// builder.Add(comp, r->occEdge);
// builder.Add(comp, r->getOCCEdge());
// }
// BRepTools::Write(comp, "GOVizFaceEdges.brep"); //debug
@@ -562,8 +562,8 @@ void GeometryObject::addGeomFromCompound(TopoDS_Shape edgeCompound, edgeClass ca
base->source(0);//object geometry
base->sourceIndex(i - 1);
base->classOfEdge = category;
base->hlrVisible = hlrVisible;
base->setClassOfEdge(category);
base->setHlrVisible(hlrVisible);
edgeGeom.push_back(base);
//add vertices of new edge if not already in list
@@ -577,8 +577,8 @@ void GeometryObject::addGeomFromCompound(TopoDS_Shape edgeCompound, edgeClass ca
TechDraw::VertexPtr c1;
if (circle) {
c1 = std::make_shared<TechDraw::Vertex>(circle->center);
c1->isCenter = true;
c1->hlrVisible = true;
c1->isCenter(true);
c1->setHlrVisible(true);
}
std::vector<VertexPtr>::iterator itVertex = vertexGeom.begin();
@@ -597,14 +597,14 @@ void GeometryObject::addGeomFromCompound(TopoDS_Shape edgeCompound, edgeClass ca
}
if (v1Add) {
vertexGeom.push_back(v1);
v1->hlrVisible = true;
v1->setHlrVisible( true);
}
else {
// delete v1;
}
if (v2Add) {
vertexGeom.push_back(v2);
v2->hlrVisible = true;
v2->setHlrVisible( true);
}
else {
// delete v2;
@@ -613,7 +613,7 @@ void GeometryObject::addGeomFromCompound(TopoDS_Shape edgeCompound, edgeClass ca
if (circle) {
if (c1Add) {
vertexGeom.push_back(c1);
c1->hlrVisible = true;
c1->setHlrVisible( true);
}
else {
// delete c1;
@@ -638,10 +638,10 @@ int GeometryObject::addCosmeticVertex(CosmeticVertex* cv)
double scale = m_parent->getScale();
Base::Vector3d pos = cv->scaled(scale);
TechDraw::VertexPtr v(std::make_shared<TechDraw::Vertex>(pos.x, pos.y));
v->cosmetic = true;
v->cosmeticLink = -1;//obs??
v->cosmeticTag = cv->getTagAsString();
v->hlrVisible = true;
v->setCosmetic(true);
// v->setCosmeticLink = -1;//obs??
v->setCosmeticTag(cv->getTagAsString());
v->setHlrVisible(true);
int idx = vertexGeom.size();
vertexGeom.push_back(v);
return idx;
@@ -653,9 +653,9 @@ int GeometryObject::addCosmeticVertex(Base::Vector3d pos)
{
Base::Console().Message("GO::addCosmeticVertex() 1 - deprec?\n");
TechDraw::VertexPtr v(std::make_shared<TechDraw::Vertex>(pos.x, pos.y));
v->cosmetic = true;
v->cosmeticTag = "tbi";//not connected to CV
v->hlrVisible = true;
v->setCosmetic(true);
v->setCosmeticTag("tbi");//not connected to CV
v->setHlrVisible(true);
int idx = vertexGeom.size();
vertexGeom.push_back(v);
return idx;
@@ -665,9 +665,9 @@ int GeometryObject::addCosmeticVertex(Base::Vector3d pos, std::string tagString)
{
// Base::Console().Message("GO::addCosmeticVertex() 2\n");
TechDraw::VertexPtr v(std::make_shared<TechDraw::Vertex>(pos.x, pos.y));
v->cosmetic = true;
v->cosmeticTag = tagString;//connected to CV
v->hlrVisible = true;
v->setCosmetic(true);
v->setCosmeticTag(tagString);//connected to CV
v->setHlrVisible(true);
int idx = vertexGeom.size();
vertexGeom.push_back(v);
return idx;
@@ -683,9 +683,9 @@ int GeometryObject::addCosmeticEdge(CosmeticEdge* ce)
// Base::Console().Message("GO::addCosmeticEdge(%X) 0\n", ce);
double scale = m_parent->getScale();
TechDraw::BaseGeomPtr e = ce->scaledGeometry(scale);
e->cosmetic = true;
e->setCosmetic(true);
e->setCosmeticTag(ce->getTagAsString());
e->hlrVisible = true;
e->setHlrVisible(true);
int idx = edgeGeom.size();
edgeGeom.push_back(e);
return idx;
@@ -700,10 +700,10 @@ int GeometryObject::addCosmeticEdge(Base::Vector3d start, Base::Vector3d end)
gp_Pnt gp2(end.x, end.y, end.z);
TopoDS_Edge occEdge = BRepBuilderAPI_MakeEdge(gp1, gp2);
TechDraw::BaseGeomPtr e = BaseGeom::baseFactory(occEdge);
e->cosmetic = true;
e->setCosmetic(true);
// e->cosmeticLink = link;
e->setCosmeticTag("tbi");
e->hlrVisible = true;
e->setHlrVisible(true);
int idx = edgeGeom.size();
edgeGeom.push_back(e);
return idx;
@@ -716,10 +716,10 @@ int GeometryObject::addCosmeticEdge(Base::Vector3d start, Base::Vector3d end, st
gp_Pnt gp2(end.x, end.y, end.z);
TopoDS_Edge occEdge = BRepBuilderAPI_MakeEdge(gp1, gp2);
TechDraw::BaseGeomPtr base = BaseGeom::baseFactory(occEdge);
base->cosmetic = true;
base->setCosmetic(true);
base->setCosmeticTag(tagString);
base->source(1);//1-CosmeticEdge, 2-CenterLine
base->hlrVisible = true;
base->setHlrVisible(true);
int idx = edgeGeom.size();
edgeGeom.push_back(base);
return idx;
@@ -728,8 +728,8 @@ int GeometryObject::addCosmeticEdge(Base::Vector3d start, Base::Vector3d end, st
int GeometryObject::addCosmeticEdge(TechDraw::BaseGeomPtr base, std::string tagString)
{
// Base::Console().Message("GO::addCosmeticEdge(%X, %s) 3\n", base, tagString.c_str());
base->cosmetic = true;
base->hlrVisible = true;
base->setCosmetic(true);
base->setHlrVisible(true);
base->source(1);//1-CosmeticEdge, 2-CenterLine
base->setCosmeticTag(tagString);
base->sourceIndex(-1);
@@ -742,7 +742,7 @@ int GeometryObject::addCenterLine(TechDraw::BaseGeomPtr base, std::string tag)
// int s, int si)
{
// Base::Console().Message("GO::addCenterLine()\n");
base->cosmetic = true;
base->setCosmetic(true);
base->setCosmeticTag(tag);
base->source(2);
// base->sourceIndex(si); //index into source;
@@ -819,7 +819,7 @@ Base::BoundBox3d GeometryObject::calcBoundingBox() const
testBox.SetGap(0.0);
if (!edgeGeom.empty()) {
for (BaseGeomPtrVector::const_iterator it(edgeGeom.begin()); it != edgeGeom.end(); ++it) {
BRepBndLib::AddOptimal((*it)->occEdge, testBox);
BRepBndLib::AddOptimal((*it)->getOCCEdge(), testBox);
}
}
@@ -854,7 +854,7 @@ bool GeometryObject::findVertex(Base::Vector3d v)
bool found = false;
std::vector<VertexPtr>::iterator it = vertexGeom.begin();
for (; it != vertexGeom.end(); it++) {
double dist = (v - (*it)->pnt).Length();
double dist = (v - (*it)->point()).Length();
if (dist < Precision::Confusion()) {
found = true;
break;

View File

@@ -1080,7 +1080,7 @@ void execLine2Points(Gui::Command* cmd)
int idx = DrawUtil::getIndexFromName(v2d);
TechDraw::VertexPtr v = baseFeat->getProjVertexByIndex(idx);
if (v) {
Base::Vector3d p = DrawUtil::invertY(v->pnt);
Base::Vector3d p = DrawUtil::invertY(v->point());
points.push_back(p / scale);
is3d.push_back(false);
}
@@ -1182,7 +1182,7 @@ void CmdTechDrawCosmeticEraser::activated(int iMsg)
std::string geomType = TechDraw::DrawUtil::getGeomTypeFromName(s);
if (geomType == "Edge") {
TechDraw::BaseGeomPtr bg = objFeat->getGeomByIndex(idx);
if (bg && bg->cosmetic) {
if (bg && bg->getCosmetic()) {
int source = bg->source();
std::string tag = bg->getCosmeticTag();
if (source == COSMETICEDGE) {
@@ -1199,7 +1199,7 @@ void CmdTechDrawCosmeticEraser::activated(int iMsg)
if (!tdv)
Base::Console().Message("CMD::eraser - geom: %d not found!\n", idx);
std::string delTag = tdv->cosmeticTag;
std::string delTag = tdv->getCosmeticTag();
if (delTag.empty())
Base::Console().Warning("Vertex%d is not cosmetic! Can not erase.\n", idx);
cv2Delete.push_back(delTag);

View File

@@ -2149,7 +2149,7 @@ void CmdTechDrawExtensionCreateLengthArc::activated(int iMsg) {
int geoId = TechDraw::DrawUtil::getIndexFromName(subNames[0]);
TechDraw::BaseGeomPtr geom = objFeat->getGeomByIndex(geoId);
std::string geoType = TechDraw::DrawUtil::getGeomTypeFromName(subNames[0]);
if (geoType == "Edge" && geom->geomType == TechDraw::ARCOFCIRCLE) {
if (geoType == "Edge" && geom->getGeomType() == TechDraw::ARCOFCIRCLE) {
TechDraw::AOCPtr arcTag = std::static_pointer_cast<TechDraw::AOC>(geom);
float radius = arcTag->radius;
Base::Vector3d centerPt = arcTag->center;

View File

@@ -102,7 +102,7 @@ void execHoleCircle(Gui::Command* cmd)
std::string GeoType = TechDraw::DrawUtil::getGeomTypeFromName(Name);
TechDraw::BaseGeomPtr geom = objFeat->getGeomByIndex(GeoId);
if (GeoType == "Edge") {
if (geom->geomType == TechDraw::CIRCLE || geom->geomType == TechDraw::ARCOFCIRCLE) {
if (geom->getGeomType() == TechDraw::CIRCLE || geom->getGeomType() == TechDraw::ARCOFCIRCLE) {
TechDraw::CirclePtr cgen = std::static_pointer_cast<TechDraw::Circle>(geom);
Circles.push_back(cgen);
}
@@ -192,7 +192,7 @@ void execCircleCenterLines(Gui::Command* cmd)
TechDraw::BaseGeomPtr geom = objFeat->getGeomByIndex(GeoId);
std::string GeoType = TechDraw::DrawUtil::getGeomTypeFromName(Name);
if (GeoType == "Edge") {
if (geom->geomType == TechDraw::CIRCLE || geom->geomType == TechDraw::ARCOFCIRCLE) {
if (geom->getGeomType() == TechDraw::CIRCLE || geom->getGeomType() == TechDraw::ARCOFCIRCLE) {
TechDraw::CirclePtr cgen = std::static_pointer_cast<TechDraw::Circle>(geom);
Base::Vector3d center = cgen->center;
center.y = -center.y;
@@ -769,7 +769,7 @@ void CmdTechDrawExtensionChangeLineAttributes::activated(int iMsg)
int num = DrawUtil::getIndexFromName(name);
BaseGeomPtr baseGeo = objFeat->getGeomByIndex(num);
if (baseGeo) {
if (baseGeo->cosmetic) {
if (baseGeo->getCosmetic()) {
if (baseGeo->source() == 1) {
TechDraw::CosmeticEdge* cosEdgeTag = objFeat->getCosmeticEdgeBySelection(name);
_setLineAttributes(cosEdgeTag);
@@ -1525,14 +1525,14 @@ void execExtendShortenLine(Gui::Command* cmd, bool extend)
if (geoType == "Edge") {
TechDraw::BaseGeomPtr baseGeo = objFeat->getGeomByIndex(num);
if (baseGeo) {
if (baseGeo->geomType == TechDraw::GENERIC) {
if (baseGeo->getGeomType() == TechDraw::GENERIC) {
TechDraw::GenericPtr genLine =
std::static_pointer_cast<TechDraw::Generic>(baseGeo);
Base::Vector3d P0 = genLine->points.at(0);
Base::Vector3d P1 = genLine->points.at(1);
bool isCenterLine = false;
TechDraw::CenterLine* centerEdge = nullptr;
if (baseGeo->cosmetic) {
if (baseGeo->getCosmetic()) {
std::string uniTag = baseGeo->getCosmeticTag();
int oldStyle = 1;
float oldWeight = 1.0f;
@@ -1789,7 +1789,7 @@ void CmdTechDrawExtensionAreaAnnotation::activated(int iMsg)
std::vector<TechDraw::BaseGeomPtr> faceEdges = objFeat->getFaceEdgesByIndex(idx);
// We filter arcs, circles etc. which are not allowed.
for (const TechDraw::BaseGeomPtr& geoPtr : faceEdges)
if (geoPtr->geomType != TechDraw::GENERIC)
if (geoPtr->getGeomType() != TechDraw::GENERIC)
throw Base::TypeError(
"CmdTechDrawAreaAnnotation - forbidden border element found\n");
// We create a list of all points along the boundary of the face.
@@ -1990,7 +1990,7 @@ void _createThreadCircle(std::string Name, TechDraw::DrawViewPart* objFeat, floa
TechDraw::BaseGeomPtr geom = objFeat->getGeomByIndex(GeoId);
std::string GeoType = TechDraw::DrawUtil::getGeomTypeFromName(Name);
if (GeoType == "Edge" && geom->geomType == TechDraw::CIRCLE) {
if (GeoType == "Edge" && geom->getGeomType() == TechDraw::CIRCLE) {
TechDraw::CirclePtr cgen = std::static_pointer_cast<TechDraw::Circle>(geom);
Base::Vector3d center = cgen->center;
float radius = cgen->radius;
@@ -2014,7 +2014,7 @@ void _createThreadLines(std::vector<std::string> SubNames, TechDraw::DrawViewPar
int GeoId1 = TechDraw::DrawUtil::getIndexFromName(SubNames[1]);
TechDraw::BaseGeomPtr geom0 = objFeat->getGeomByIndex(GeoId0);
TechDraw::BaseGeomPtr geom1 = objFeat->getGeomByIndex(GeoId1);
if (geom0->geomType != TechDraw::GENERIC || geom1->geomType != TechDraw::GENERIC) {
if (geom0->getGeomType() != TechDraw::GENERIC || geom1->getGeomType() != TechDraw::GENERIC) {
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("TechDraw Thread Hole Side"),
QObject::tr("Please select two straight lines"));
return;

View File

@@ -383,7 +383,7 @@ DimensionGeometryType TechDraw::isValidSingleEdge(ReferenceEntry ref)
return isInvalid;
}
if (geom->geomType == TechDraw::GENERIC) {
if (geom->getGeomType() == TechDraw::GENERIC) {
TechDraw::GenericPtr gen1 = std::static_pointer_cast<TechDraw::Generic>(geom);
if (gen1->points.size() < 2) {
return isInvalid;
@@ -396,11 +396,11 @@ DimensionGeometryType TechDraw::isValidSingleEdge(ReferenceEntry ref)
} else {
return TechDraw::isDiagonal;
}
} else if (geom->geomType == TechDraw::CIRCLE || geom->geomType == TechDraw::ARCOFCIRCLE) {
} else if (geom->getGeomType() == TechDraw::CIRCLE || geom->getGeomType() == TechDraw::ARCOFCIRCLE) {
return isCircle;
} else if (geom->geomType == TechDraw::ELLIPSE || geom->geomType == TechDraw::ARCOFELLIPSE) {
} else if (geom->getGeomType() == TechDraw::ELLIPSE || geom->getGeomType() == TechDraw::ARCOFELLIPSE) {
return isEllipse;
} else if (geom->geomType == TechDraw::BSPLINE) {
} else if (geom->getGeomType() == TechDraw::BSPLINE) {
TechDraw::BSplinePtr spline = std::static_pointer_cast<TechDraw::BSpline>(geom);
if (spline->isCircle()) {
return isBSplineCircle;
@@ -493,7 +493,7 @@ DimensionGeometryType TechDraw::isValidMultiEdge(ReferenceVector refs)
TechDraw::BaseGeomPtr geom0 = objFeat0->getGeomByIndex(GeoId0);
TechDraw::BaseGeomPtr geom1 = objFeat0->getGeomByIndex(GeoId1);
if (geom0->geomType == TechDraw::GENERIC && geom1->geomType == TechDraw::GENERIC) {
if (geom0->getGeomType() == TechDraw::GENERIC && geom1->getGeomType() == TechDraw::GENERIC) {
TechDraw::GenericPtr gen0 = std::static_pointer_cast<TechDraw::Generic>(geom0);
TechDraw::GenericPtr gen1 = std::static_pointer_cast<TechDraw::Generic>(geom1);
if (gen0->points.size() > 2 || gen1->points.size() > 2) {//the edge is a polyline

View File

@@ -86,7 +86,7 @@ void QGIDrawingTemplate::draw()
// Draw Edges
// iterate through all the geometries
for(; it != geoms.end(); ++it) {
switch((*it)->geomType) {
switch((*it)->getGeomType()) {
case TechDraw::GENERIC: {
TechDraw::GenericPtr geom = std::static_pointer_cast<TechDraw::Generic>(*it);

View File

@@ -132,7 +132,7 @@ QPainterPath QGIViewPart::geomToPainterPath(BaseGeomPtr baseGeom, double rot)
if (!baseGeom)
return path;
switch (baseGeom->geomType) {
switch (baseGeom->getGeomType()) {
case CIRCLE: {
TechDraw::CirclePtr geom = std::static_pointer_cast<TechDraw::Circle>(baseGeom);
@@ -144,7 +144,7 @@ QPainterPath QGIViewPart::geomToPainterPath(BaseGeomPtr baseGeom, double rot)
} break;
case ARCOFCIRCLE: {
TechDraw::AOCPtr geom = std::static_pointer_cast<TechDraw::AOC>(baseGeom);
if (baseGeom->reversed) {
if (baseGeom->getReversed()) {
path.moveTo(Rez::guiX(geom->endPnt.x), Rez::guiX(geom->endPnt.y));
pathArc(path, Rez::guiX(geom->radius), Rez::guiX(geom->radius), 0., geom->largeArc,
!geom->cw, Rez::guiX(geom->startPnt.x), Rez::guiX(geom->startPnt.y),
@@ -174,7 +174,7 @@ QPainterPath QGIViewPart::geomToPainterPath(BaseGeomPtr baseGeom, double rot)
} break;
case TechDraw::ARCOFELLIPSE: {
TechDraw::AOEPtr geom = std::static_pointer_cast<TechDraw::AOE>(baseGeom);
if (baseGeom->reversed) {
if (baseGeom->getReversed()) {
path.moveTo(Rez::guiX(geom->endPnt.x), Rez::guiX(geom->endPnt.y));
pathArc(path, Rez::guiX(geom->major), Rez::guiX(geom->minor), geom->angle,
geom->largeArc, !geom->cw, Rez::guiX(geom->startPnt.x),
@@ -192,7 +192,7 @@ QPainterPath QGIViewPart::geomToPainterPath(BaseGeomPtr baseGeom, double rot)
case TechDraw::BEZIER: {
TechDraw::BezierSegmentPtr geom =
std::static_pointer_cast<TechDraw::BezierSegment>(baseGeom);
if (baseGeom->reversed) {
if (baseGeom->getReversed()) {
if (!geom->pnts.empty()) {
Base::Vector3d rStart = geom->pnts.back();
path.moveTo(Rez::guiX(rStart.x), Rez::guiX(rStart.y));
@@ -248,7 +248,7 @@ QPainterPath QGIViewPart::geomToPainterPath(BaseGeomPtr baseGeom, double rot)
} break;
case TechDraw::BSPLINE: {
TechDraw::BSplinePtr geom = std::static_pointer_cast<TechDraw::BSpline>(baseGeom);
if (baseGeom->reversed) {
if (baseGeom->getReversed()) {
// Move painter to the end of our last segment
std::vector<TechDraw::BezierSegment>::const_reverse_iterator it =
geom->segments.rbegin();
@@ -311,7 +311,7 @@ QPainterPath QGIViewPart::geomToPainterPath(BaseGeomPtr baseGeom, double rot)
} break;
case TechDraw::GENERIC: {
TechDraw::GenericPtr geom = std::static_pointer_cast<TechDraw::Generic>(baseGeom);
if (baseGeom->reversed) {
if (baseGeom->getReversed()) {
if (!geom->points.empty()) {
Base::Vector3d rStart = geom->points.back();
path.moveTo(Rez::guiX(rStart.x), Rez::guiX(rStart.y));
@@ -331,7 +331,7 @@ QPainterPath QGIViewPart::geomToPainterPath(BaseGeomPtr baseGeom, double rot)
} break;
default: {
Base::Console().Error("Error - geomToPainterPath - UNKNOWN geomType: %d\n",
baseGeom->geomType);
baseGeom->getGeomType());
} break;
}//sb end of switch
@@ -488,20 +488,20 @@ void QGIViewPart::drawViewPart()
QGIEdge* item;
for (int i = 0; itGeom != geoms.end(); itGeom++, i++) {
bool showEdge = false;
if ((*itGeom)->hlrVisible) {
if (((*itGeom)->classOfEdge == ecHARD) || ((*itGeom)->classOfEdge == ecOUTLINE)
|| (((*itGeom)->classOfEdge == ecSMOOTH) && viewPart->SmoothVisible.getValue())
|| (((*itGeom)->classOfEdge == ecSEAM) && viewPart->SeamVisible.getValue())
|| (((*itGeom)->classOfEdge == ecUVISO) && viewPart->IsoVisible.getValue())) {
if ((*itGeom)->getHlrVisible()) {
if (((*itGeom)->getClassOfEdge() == ecHARD) || ((*itGeom)->getClassOfEdge() == ecOUTLINE)
|| (((*itGeom)->getClassOfEdge() == ecSMOOTH) && viewPart->SmoothVisible.getValue())
|| (((*itGeom)->getClassOfEdge() == ecSEAM) && viewPart->SeamVisible.getValue())
|| (((*itGeom)->getClassOfEdge() == ecUVISO) && viewPart->IsoVisible.getValue())) {
showEdge = true;
}
}
else {
if ((((*itGeom)->classOfEdge == ecHARD) && (viewPart->HardHidden.getValue()))
|| (((*itGeom)->classOfEdge == ecOUTLINE) && (viewPart->HardHidden.getValue()))
|| (((*itGeom)->classOfEdge == ecSMOOTH) && (viewPart->SmoothHidden.getValue()))
|| (((*itGeom)->classOfEdge == ecSEAM) && (viewPart->SeamHidden.getValue()))
|| (((*itGeom)->classOfEdge == ecUVISO) && (viewPart->IsoHidden.getValue()))) {
if ((((*itGeom)->getClassOfEdge() == ecHARD) && (viewPart->HardHidden.getValue()))
|| (((*itGeom)->getClassOfEdge() == ecOUTLINE) && (viewPart->HardHidden.getValue()))
|| (((*itGeom)->getClassOfEdge() == ecSMOOTH) && (viewPart->SmoothHidden.getValue()))
|| (((*itGeom)->getClassOfEdge() == ecSEAM) && (viewPart->SeamHidden.getValue()))
|| (((*itGeom)->getClassOfEdge() == ecUVISO) && (viewPart->IsoHidden.getValue()))) {
showEdge = true;
}
}
@@ -511,7 +511,7 @@ void QGIViewPart::drawViewPart()
item->setWidth(lineWidth);
item->setNormalColor(edgeColor);
item->setStyle(Qt::SolidLine);
if ((*itGeom)->cosmetic) {
if ((*itGeom)->getCosmetic()) {
int source = (*itGeom)->source();
if (source == COSMETICEDGE) {
std::string cTag = (*itGeom)->getCosmeticTag();
@@ -541,12 +541,12 @@ void QGIViewPart::drawViewPart()
item->setPos(0.0, 0.0);//now at group(0, 0)
item->setPath(drawPainterPath(*itGeom));
item->setZValue(ZVALUE::EDGE);
if (!(*itGeom)->hlrVisible) {
if (!(*itGeom)->getHlrVisible()) {
item->setWidth(lineWidthHid);
item->setHiddenEdge(true);
item->setZValue(ZVALUE::HIDEDGE);
}
if ((*itGeom)->classOfEdge == ecUVISO) {
if ((*itGeom)->getClassOfEdge() == ecUVISO) {
item->setWidth(lineWidthIso);
}
item->setPrettyNormal();
@@ -597,7 +597,7 @@ void QGIViewPart::drawViewPart()
double cAdjust = vp->CenterScale.getValue();
for (int i = 0; vert != verts.end(); ++vert, i++) {
if ((*vert)->isCenter) {
if ((*vert)->isCenter()) {
if (showCenterMarks) {
QGICMark* cmItem = new QGICMark(i);
addToGroup(cmItem);

View File

@@ -106,7 +106,7 @@ void TaskLineDecor::getDefaults()
int num = DrawUtil::getIndexFromName(m_edges.front());
BaseGeomPtr bg = m_partFeat->getGeomByIndex(num);
if (bg) {
if (bg->cosmetic) {
if (bg->getCosmetic()) {
if (bg->source() == 1) {
TechDraw::CosmeticEdge* ce = m_partFeat->getCosmeticEdgeBySelection(m_edges.front());
m_style = ce->m_format.m_style;
@@ -178,7 +178,7 @@ void TaskLineDecor::applyDecorations()
int num = DrawUtil::getIndexFromName(e);
BaseGeomPtr bg = m_partFeat->getGeomByIndex(num);
if (bg) {
if (bg->cosmetic) {
if (bg->getCosmetic()) {
if (bg->source() == 1) {
TechDraw::CosmeticEdge* ce = m_partFeat->getCosmeticEdgeBySelection(e);
ce->m_format.m_style = m_style;