[TD]Py Cosmetic Vertex, Line, Circle Arc

This commit is contained in:
wandererfan
2019-06-10 15:48:56 -04:00
committed by WandererFan
parent 092aaf17e8
commit 5970e91ef2
48 changed files with 1529 additions and 840 deletions

View File

@@ -1158,18 +1158,18 @@ int _isValidSingleEdge(Gui::Command* cmd) {
if (SubNames.size() == 1) { //only 1 subshape selected
if (TechDraw::DrawUtil::getGeomTypeFromName(SubNames[0]) == "Edge") { //the Name starts with "Edge"
int GeoId( TechDraw::DrawUtil::getIndexFromName(SubNames[0]) );
TechDrawGeometry::BaseGeom* geom = objFeat->getProjEdgeByIndex(GeoId);
TechDraw::BaseGeom* geom = objFeat->getProjEdgeByIndex(GeoId);
if (!geom) {
Base::Console().Error("Logic Error: no geometry for GeoId: %d\n",GeoId);
return isInvalid;
}
if(geom->geomType == TechDrawGeometry::GENERIC) {
TechDrawGeometry::Generic* gen1 = static_cast<TechDrawGeometry::Generic *>(geom);
if(geom->geomType == TechDraw::GENERIC) {
TechDraw::Generic* gen1 = static_cast<TechDraw::Generic *>(geom);
if(gen1->points.size() > 2) { //the edge is a polyline
return isInvalid;
}
Base::Vector2d line = gen1->points.at(1) - gen1->points.at(0);
Base::Vector3d line = gen1->points.at(1) - gen1->points.at(0);
if(fabs(line.y) < FLT_EPSILON ) {
edgeType = isHorizontal;
} else if(fabs(line.x) < FLT_EPSILON) {
@@ -1177,14 +1177,14 @@ int _isValidSingleEdge(Gui::Command* cmd) {
} else {
edgeType = isDiagonal;
}
} else if (geom->geomType == TechDrawGeometry::CIRCLE ||
geom->geomType == TechDrawGeometry::ARCOFCIRCLE ) {
} else if (geom->geomType == TechDraw::CIRCLE ||
geom->geomType == TechDraw::ARCOFCIRCLE ) {
edgeType = isCircle;
} else if (geom->geomType == TechDrawGeometry::ELLIPSE ||
geom->geomType == TechDrawGeometry::ARCOFELLIPSE) {
} else if (geom->geomType == TechDraw::ELLIPSE ||
geom->geomType == TechDraw::ARCOFELLIPSE) {
edgeType = isEllipse;
} else if (geom->geomType == TechDrawGeometry::BSPLINE) {
TechDrawGeometry::BSpline* spline = static_cast<TechDrawGeometry::BSpline*>(geom);
} else if (geom->geomType == TechDraw::BSPLINE) {
TechDraw::BSpline* spline = static_cast<TechDraw::BSpline*>(geom);
if (spline->isCircle()) {
edgeType = isBSplineCircle;
} else {
@@ -1235,23 +1235,23 @@ int _isValidEdgeToEdge(Gui::Command* cmd) {
TechDraw::DrawUtil::getGeomTypeFromName(SubNames[1]) == "Edge") {
int GeoId0( TechDraw::DrawUtil::getIndexFromName(SubNames[0]) );
int GeoId1( TechDraw::DrawUtil::getIndexFromName(SubNames[1]) );
TechDrawGeometry::BaseGeom* geom0 = objFeat0->getProjEdgeByIndex(GeoId0);
TechDrawGeometry::BaseGeom* geom1 = objFeat0->getProjEdgeByIndex(GeoId1);
TechDraw::BaseGeom* geom0 = objFeat0->getProjEdgeByIndex(GeoId0);
TechDraw::BaseGeom* geom1 = objFeat0->getProjEdgeByIndex(GeoId1);
if ((!geom0) || (!geom1)) {
Base::Console().Error("Logic Error: no geometry for GeoId: %d or GeoId: %d\n",GeoId0,GeoId1);
return isInvalid;
}
if(geom0->geomType == TechDrawGeometry::GENERIC &&
geom1->geomType == TechDrawGeometry::GENERIC) {
TechDrawGeometry::Generic *gen0 = static_cast<TechDrawGeometry::Generic *>(geom0);
TechDrawGeometry::Generic *gen1 = static_cast<TechDrawGeometry::Generic *>(geom1);
if(geom0->geomType == TechDraw::GENERIC &&
geom1->geomType == TechDraw::GENERIC) {
TechDraw::Generic *gen0 = static_cast<TechDraw::Generic *>(geom0);
TechDraw::Generic *gen1 = static_cast<TechDraw::Generic *>(geom1);
if(gen0->points.size() > 2 ||
gen1->points.size() > 2) { //the edge is a polyline
return isInvalid;
}
Base::Vector2d line0 = gen0->points.at(1) - gen0->points.at(0);
Base::Vector2d line1 = gen1->points.at(1) - gen1->points.at(0);
Base::Vector3d line0 = gen0->points.at(1) - gen0->points.at(0);
Base::Vector3d line1 = gen1->points.at(1) - gen1->points.at(0);
double xprod = fabs(line0.x * line1.y - line0.y * line1.x);
if(xprod > FLT_EPSILON) { //edges are not parallel
return isAngle;
@@ -1280,8 +1280,8 @@ bool _isValidVertexToEdge(Gui::Command* cmd) {
const std::vector<std::string> SubNames = selection[0].getSubNames();
if(SubNames.size() == 2) { //there are 2
int eId,vId;
TechDrawGeometry::BaseGeom* e;
TechDrawGeometry::Vertex* v;
TechDraw::BaseGeom* e;
TechDraw::Vertex* v;
if (TechDraw::DrawUtil::getGeomTypeFromName(SubNames[0]) == "Edge" &&
TechDraw::DrawUtil::getGeomTypeFromName(SubNames[1]) == "Vertex") {
eId = TechDraw::DrawUtil::getIndexFromName(SubNames[0]);
@@ -1299,7 +1299,7 @@ bool _isValidVertexToEdge(Gui::Command* cmd) {
Base::Console().Error("Logic Error: no geometry for GeoId: %d or GeoId: %d\n",eId,vId);
return false;
}
if (e->geomType != TechDrawGeometry::GENERIC) { //only vertex-line for now.
if (e->geomType != TechDraw::GENERIC) { //only vertex-line for now.
return false;
}
result = true;