+ improve support for external geometries in sketcher constraints
git-svn-id: https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk@5348 e8eeb9e2-ec13-0410-a4a9-efa5cf37419d
This commit is contained in:
parent
6d35d55905
commit
d83e488394
|
@ -66,6 +66,17 @@ void updateDatumDistance(Gui::Document *doc, Constraint *constr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool checkBothExternal(int GeoId1, int GeoId2)
|
||||||
|
{
|
||||||
|
if (GeoId1 < 0 && GeoId2 < 0) {
|
||||||
|
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||||
|
QObject::tr("Cannot add a constraint between two external geometries!"));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
namespace SketcherGui {
|
namespace SketcherGui {
|
||||||
|
|
||||||
struct SketchSelection{
|
struct SketchSelection{
|
||||||
|
@ -217,6 +228,13 @@ void CmdSketcherConstrainHorizontal::activated(int iMsg)
|
||||||
ids.push_back(index);
|
ids.push_back(index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ids.empty()) {
|
||||||
|
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Impossible constraint"),
|
||||||
|
QObject::tr("The selected item(s) can't accept a horizontal constraint!"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// undo command open
|
// undo command open
|
||||||
openCommand("add horizontal constraint");
|
openCommand("add horizontal constraint");
|
||||||
for (std::vector<int>::iterator it=ids.begin(); it != ids.end(); it++) {
|
for (std::vector<int>::iterator it=ids.begin(); it != ids.end(); it++) {
|
||||||
|
@ -272,7 +290,6 @@ void CmdSketcherConstrainVertical::activated(int iMsg)
|
||||||
const std::vector< Sketcher::Constraint * > &vals = Obj->Constraints.getValues();
|
const std::vector< Sketcher::Constraint * > &vals = Obj->Constraints.getValues();
|
||||||
|
|
||||||
std::vector<int> ids;
|
std::vector<int> ids;
|
||||||
|
|
||||||
// go through the selected subelements
|
// go through the selected subelements
|
||||||
for (std::vector<std::string>::const_iterator it=SubNames.begin();it!=SubNames.end();++it) {
|
for (std::vector<std::string>::const_iterator it=SubNames.begin();it!=SubNames.end();++it) {
|
||||||
// only handle edges
|
// only handle edges
|
||||||
|
@ -304,6 +321,12 @@ void CmdSketcherConstrainVertical::activated(int iMsg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ids.empty()) {
|
||||||
|
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Impossible constraint"),
|
||||||
|
QObject::tr("The selected item(s) can't accept a vertical constraint!"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// undo command open
|
// undo command open
|
||||||
openCommand("add vertical constraint");
|
openCommand("add vertical constraint");
|
||||||
for (std::vector<int>::iterator it=ids.begin(); it != ids.end(); it++) {
|
for (std::vector<int>::iterator it=ids.begin(); it != ids.end(); it++) {
|
||||||
|
@ -500,13 +523,6 @@ CmdSketcherConstrainDistance::CmdSketcherConstrainDistance()
|
||||||
|
|
||||||
void CmdSketcherConstrainDistance::activated(int iMsg)
|
void CmdSketcherConstrainDistance::activated(int iMsg)
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
|
|
||||||
SketchSelection selection;
|
|
||||||
|
|
||||||
int num = selection.setUp();
|
|
||||||
|
|
||||||
#else
|
|
||||||
// get the selection
|
// get the selection
|
||||||
std::vector<Gui::SelectionObject> selection = getSelection().getSelectionEx();
|
std::vector<Gui::SelectionObject> selection = getSelection().getSelectionEx();
|
||||||
|
|
||||||
|
@ -568,8 +584,9 @@ void CmdSketcherConstrainDistance::activated(int iMsg)
|
||||||
getSelection().clearSelection();
|
getSelection().clearSelection();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if ((VtId1 >= 0 && GeoId2 >= 0) || (VtId2 >= 0 && GeoId1 >= 0)) { // point to line distance
|
else if ((VtId1 >= 0 && GeoId2 != Constraint::GeoUndef) ||
|
||||||
if (VtId2 >= 0 && GeoId1 >= 0) {
|
(VtId2 >= 0 && GeoId1 != Constraint::GeoUndef)) { // point to line distance
|
||||||
|
if (VtId2 >= 0 && GeoId1 != Constraint::GeoUndef) {
|
||||||
std::swap(VtId1,VtId2);
|
std::swap(VtId1,VtId2);
|
||||||
std::swap(GeoId1,GeoId2);
|
std::swap(GeoId1,GeoId2);
|
||||||
}
|
}
|
||||||
|
@ -602,7 +619,13 @@ void CmdSketcherConstrainDistance::activated(int iMsg)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (GeoId1 >= 0) { // line length
|
else if (GeoId1 != Constraint::GeoUndef) { // line length
|
||||||
|
if (GeoId1 < 0) {
|
||||||
|
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||||
|
QObject::tr("Cannot add a length constraint on an external geometry!"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const Part::Geometry *geom = Obj->getGeometry(GeoId1);
|
const Part::Geometry *geom = Obj->getGeometry(GeoId1);
|
||||||
if (geom->getTypeId() == Part::GeomLineSegment::getClassTypeId()) {
|
if (geom->getTypeId() == Part::GeomLineSegment::getClassTypeId()) {
|
||||||
const Part::GeomLineSegment *lineSeg;
|
const Part::GeomLineSegment *lineSeg;
|
||||||
|
@ -630,7 +653,6 @@ void CmdSketcherConstrainDistance::activated(int iMsg)
|
||||||
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||||
QObject::tr("Select exactly one line or one point and one line or two points from the sketch."));
|
QObject::tr("Select exactly one line or one point and one line or two points from the sketch."));
|
||||||
return;
|
return;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CmdSketcherConstrainDistance::isActive(void)
|
bool CmdSketcherConstrainDistance::isActive(void)
|
||||||
|
@ -696,8 +718,9 @@ void CmdSketcherConstrainPointOnObject::activated(int iMsg)
|
||||||
VtId2 = std::atoi(SubNames[1].substr(6,4000).c_str());
|
VtId2 = std::atoi(SubNames[1].substr(6,4000).c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((VtId1 >= 0 && GeoId2 != Constraint::GeoUndef) || (VtId2 >= 0 && GeoId1 != Constraint::GeoUndef)) {
|
if ((VtId1 >= 0 && GeoId2 != Constraint::GeoUndef) ||
|
||||||
if (VtId2 >= 0 && GeoId1 >= 0) {
|
(VtId2 >= 0 && GeoId1 != Constraint::GeoUndef)) {
|
||||||
|
if (VtId2 >= 0 && GeoId1 != Constraint::GeoUndef) {
|
||||||
std::swap(VtId1,VtId2);
|
std::swap(VtId1,VtId2);
|
||||||
std::swap(GeoId1,GeoId2);
|
std::swap(GeoId1,GeoId2);
|
||||||
}
|
}
|
||||||
|
@ -705,6 +728,9 @@ void CmdSketcherConstrainPointOnObject::activated(int iMsg)
|
||||||
Sketcher::PointPos PosId1;
|
Sketcher::PointPos PosId1;
|
||||||
Obj->getGeoVertexIndex(VtId1,GeoId1,PosId1);
|
Obj->getGeoVertexIndex(VtId1,GeoId1,PosId1);
|
||||||
|
|
||||||
|
if (checkBothExternal(GeoId1, GeoId2))
|
||||||
|
return;
|
||||||
|
|
||||||
const Part::Geometry *geom = Obj->getGeometry(GeoId2);
|
const Part::Geometry *geom = Obj->getGeometry(GeoId2);
|
||||||
|
|
||||||
// Currently only accepts line segments and circles
|
// Currently only accepts line segments and circles
|
||||||
|
@ -820,7 +846,15 @@ void CmdSketcherConstrainDistanceX::activated(int iMsg)
|
||||||
getSelection().clearSelection();
|
getSelection().clearSelection();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (GeoId1 >= 0 && GeoId2 == Constraint::GeoUndef && VtId2 < 0) { // horizontal length of a line
|
else if (GeoId1 != Constraint::GeoUndef &&
|
||||||
|
GeoId2 == Constraint::GeoUndef && VtId2 < 0) { // horizontal length of a line
|
||||||
|
|
||||||
|
if (GeoId1 < 0) {
|
||||||
|
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||||
|
QObject::tr("Cannot add a horizontal length constraint on an external geometry!"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const Part::Geometry *geom = Obj->getGeometry(GeoId1);
|
const Part::Geometry *geom = Obj->getGeometry(GeoId1);
|
||||||
if (geom->getTypeId() == Part::GeomLineSegment::getClassTypeId()) {
|
if (geom->getTypeId() == Part::GeomLineSegment::getClassTypeId()) {
|
||||||
const Part::GeomLineSegment *lineSeg;
|
const Part::GeomLineSegment *lineSeg;
|
||||||
|
@ -965,7 +999,15 @@ void CmdSketcherConstrainDistanceY::activated(int iMsg)
|
||||||
getSelection().clearSelection();
|
getSelection().clearSelection();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (GeoId1 >= 0 && GeoId2 == Constraint::GeoUndef && VtId2 < 0) { // horizontal length of a line
|
else if (GeoId1 != Constraint::GeoUndef &&
|
||||||
|
GeoId2 == Constraint::GeoUndef && VtId2 < 0) { // vertical length of a line
|
||||||
|
|
||||||
|
if (GeoId1 < 0) {
|
||||||
|
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||||
|
QObject::tr("Cannot add a vertical length constraint on an external geometry!"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const Part::Geometry *geom = Obj->getGeometry(GeoId1);
|
const Part::Geometry *geom = Obj->getGeometry(GeoId1);
|
||||||
if (geom->getTypeId() == Part::GeomLineSegment::getClassTypeId()) {
|
if (geom->getTypeId() == Part::GeomLineSegment::getClassTypeId()) {
|
||||||
const Part::GeomLineSegment *lineSeg;
|
const Part::GeomLineSegment *lineSeg;
|
||||||
|
@ -1149,6 +1191,8 @@ void CmdSketcherConstrainPerpendicular::activated(int iMsg)
|
||||||
int GeoId1,GeoId2;
|
int GeoId1,GeoId2;
|
||||||
if (SubNames[0].size() > 4 && SubNames[0].substr(0,4) == "Edge")
|
if (SubNames[0].size() > 4 && SubNames[0].substr(0,4) == "Edge")
|
||||||
GeoId1 = std::atoi(SubNames[0].substr(4,4000).c_str());
|
GeoId1 = std::atoi(SubNames[0].substr(4,4000).c_str());
|
||||||
|
else if (SubNames[0].size() > 12 && SubNames[0].substr(0,12) == "ExternalEdge")
|
||||||
|
GeoId1 = -3 - std::atoi(SubNames[0].substr(12,4000).c_str());
|
||||||
else {
|
else {
|
||||||
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||||
QObject::tr("Select exactly two lines from the sketch."));
|
QObject::tr("Select exactly two lines from the sketch."));
|
||||||
|
@ -1157,12 +1201,17 @@ void CmdSketcherConstrainPerpendicular::activated(int iMsg)
|
||||||
|
|
||||||
if (SubNames[1].size() > 4 && SubNames[1].substr(0,4) == "Edge")
|
if (SubNames[1].size() > 4 && SubNames[1].substr(0,4) == "Edge")
|
||||||
GeoId2 = std::atoi(SubNames[1].substr(4,4000).c_str());
|
GeoId2 = std::atoi(SubNames[1].substr(4,4000).c_str());
|
||||||
|
else if (SubNames[1].size() > 12 && SubNames[1].substr(0,12) == "ExternalEdge")
|
||||||
|
GeoId2 = -3 - std::atoi(SubNames[1].substr(12,4000).c_str());
|
||||||
else {
|
else {
|
||||||
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||||
QObject::tr("Select exactly two lines from the sketch."));
|
QObject::tr("Select exactly two lines from the sketch."));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (checkBothExternal(GeoId1, GeoId2))
|
||||||
|
return;
|
||||||
|
|
||||||
const Part::Geometry *geo1 = Obj->getGeometry(GeoId1);
|
const Part::Geometry *geo1 = Obj->getGeometry(GeoId1);
|
||||||
const Part::Geometry *geo2 = Obj->getGeometry(GeoId2);
|
const Part::Geometry *geo2 = Obj->getGeometry(GeoId2);
|
||||||
|
|
||||||
|
@ -1235,11 +1284,15 @@ void CmdSketcherConstrainTangent::activated(int iMsg)
|
||||||
int GeoId1=Constraint::GeoUndef, VtId1=-1, GeoId2=Constraint::GeoUndef, VtId2=-1;
|
int GeoId1=Constraint::GeoUndef, VtId1=-1, GeoId2=Constraint::GeoUndef, VtId2=-1;
|
||||||
if (SubNames[0].size() > 4 && SubNames[0].substr(0,4) == "Edge")
|
if (SubNames[0].size() > 4 && SubNames[0].substr(0,4) == "Edge")
|
||||||
GeoId1 = std::atoi(SubNames[0].substr(4,4000).c_str());
|
GeoId1 = std::atoi(SubNames[0].substr(4,4000).c_str());
|
||||||
|
else if (SubNames[0].size() > 12 && SubNames[0].substr(0,12) == "ExternalEdge")
|
||||||
|
GeoId1 = -3 - std::atoi(SubNames[0].substr(12,4000).c_str());
|
||||||
else if (SubNames[0].size() > 6 && SubNames[0].substr(0,6) == "Vertex")
|
else if (SubNames[0].size() > 6 && SubNames[0].substr(0,6) == "Vertex")
|
||||||
VtId1 = std::atoi(SubNames[0].substr(6,4000).c_str());
|
VtId1 = std::atoi(SubNames[0].substr(6,4000).c_str());
|
||||||
|
|
||||||
if (SubNames[1].size() > 4 && SubNames[1].substr(0,4) == "Edge")
|
if (SubNames[1].size() > 4 && SubNames[1].substr(0,4) == "Edge")
|
||||||
GeoId2 = std::atoi(SubNames[1].substr(4,4000).c_str());
|
GeoId2 = std::atoi(SubNames[1].substr(4,4000).c_str());
|
||||||
|
else if (SubNames[1].size() > 12 && SubNames[1].substr(0,12) == "ExternalEdge")
|
||||||
|
GeoId2 = -3 - std::atoi(SubNames[1].substr(12,4000).c_str());
|
||||||
else if (SubNames[1].size() > 6 && SubNames[1].substr(0,6) == "Vertex")
|
else if (SubNames[1].size() > 6 && SubNames[1].substr(0,6) == "Vertex")
|
||||||
VtId2 = std::atoi(SubNames[1].substr(6,4000).c_str());
|
VtId2 = std::atoi(SubNames[1].substr(6,4000).c_str());
|
||||||
|
|
||||||
|
@ -1247,6 +1300,10 @@ void CmdSketcherConstrainTangent::activated(int iMsg)
|
||||||
if (VtId1 >= 0 && VtId2 >= 0) { // tangency at common point
|
if (VtId1 >= 0 && VtId2 >= 0) { // tangency at common point
|
||||||
Obj->getGeoVertexIndex(VtId1,GeoId1,PosId1);
|
Obj->getGeoVertexIndex(VtId1,GeoId1,PosId1);
|
||||||
Obj->getGeoVertexIndex(VtId2,GeoId2,PosId2);
|
Obj->getGeoVertexIndex(VtId2,GeoId2,PosId2);
|
||||||
|
|
||||||
|
if (checkBothExternal(GeoId1, GeoId2))
|
||||||
|
return;
|
||||||
|
|
||||||
openCommand("add tangent constraint");
|
openCommand("add tangent constraint");
|
||||||
Gui::Command::doCommand(
|
Gui::Command::doCommand(
|
||||||
Doc,"App.ActiveDocument.%s.addConstraint(Sketcher.Constraint('Tangent',%d,%d,%d,%d)) ",
|
Doc,"App.ActiveDocument.%s.addConstraint(Sketcher.Constraint('Tangent',%d,%d,%d,%d)) ",
|
||||||
|
@ -1256,14 +1313,19 @@ void CmdSketcherConstrainTangent::activated(int iMsg)
|
||||||
getSelection().clearSelection();
|
getSelection().clearSelection();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if ((VtId1 >= 0 && GeoId2 >= 0) || (VtId2 >= 0 && GeoId1 >= 0)) { // VtId1 is a tangency point
|
else if ((VtId1 >= 0 && GeoId2 != Constraint::GeoUndef) ||
|
||||||
if (VtId2 >= 0 && GeoId1 >= 0) {
|
(VtId2 >= 0 && GeoId1 != Constraint::GeoUndef)) { // VtId1 is a tangency point
|
||||||
|
if (VtId2 >= 0 && GeoId1 != Constraint::GeoUndef) {
|
||||||
VtId1 = VtId2;
|
VtId1 = VtId2;
|
||||||
VtId2 = -1;
|
VtId2 = -1;
|
||||||
GeoId2 = GeoId1;
|
GeoId2 = GeoId1;
|
||||||
GeoId1 = -1;
|
GeoId1 = -1;
|
||||||
}
|
}
|
||||||
Obj->getGeoVertexIndex(VtId1,GeoId1,PosId1);
|
Obj->getGeoVertexIndex(VtId1,GeoId1,PosId1);
|
||||||
|
|
||||||
|
if (checkBothExternal(GeoId1, GeoId2))
|
||||||
|
return;
|
||||||
|
|
||||||
openCommand("add tangent constraint");
|
openCommand("add tangent constraint");
|
||||||
Gui::Command::doCommand(
|
Gui::Command::doCommand(
|
||||||
Doc,"App.ActiveDocument.%s.addConstraint(Sketcher.Constraint('Tangent',%d,%d,%d)) ",
|
Doc,"App.ActiveDocument.%s.addConstraint(Sketcher.Constraint('Tangent',%d,%d,%d)) ",
|
||||||
|
@ -1273,7 +1335,11 @@ void CmdSketcherConstrainTangent::activated(int iMsg)
|
||||||
getSelection().clearSelection();
|
getSelection().clearSelection();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (GeoId1 >= 0 && GeoId2 >= 0) { // simple tangency between GeoId1 and GeoId2
|
else if (GeoId1 != Constraint::GeoUndef && GeoId2 != Constraint::GeoUndef) { // simple tangency between GeoId1 and GeoId2
|
||||||
|
|
||||||
|
if (checkBothExternal(GeoId1, GeoId2))
|
||||||
|
return;
|
||||||
|
|
||||||
openCommand("add tangent constraint");
|
openCommand("add tangent constraint");
|
||||||
Gui::Command::doCommand(
|
Gui::Command::doCommand(
|
||||||
Doc,"App.ActiveDocument.%s.addConstraint(Sketcher.Constraint('Tangent',%d,%d)) ",
|
Doc,"App.ActiveDocument.%s.addConstraint(Sketcher.Constraint('Tangent',%d,%d)) ",
|
||||||
|
@ -1416,12 +1482,21 @@ void CmdSketcherConstrainAngle::activated(int iMsg)
|
||||||
int GeoId1=Constraint::GeoUndef, GeoId2=Constraint::GeoUndef;
|
int GeoId1=Constraint::GeoUndef, GeoId2=Constraint::GeoUndef;
|
||||||
if (SubNames[0].size() > 4 && SubNames[0].substr(0,4) == "Edge")
|
if (SubNames[0].size() > 4 && SubNames[0].substr(0,4) == "Edge")
|
||||||
GeoId1 = std::atoi(SubNames[0].substr(4,4000).c_str());
|
GeoId1 = std::atoi(SubNames[0].substr(4,4000).c_str());
|
||||||
|
else if (SubNames[0].size() > 12 && SubNames[0].substr(0,12) == "ExternalEdge")
|
||||||
|
GeoId1 = -3 - std::atoi(SubNames[0].substr(12,4000).c_str());
|
||||||
|
|
||||||
if (SubNames.size() == 2) {
|
if (SubNames.size() == 2) {
|
||||||
if (SubNames[1].size() > 4 && SubNames[1].substr(0,4) == "Edge")
|
if (SubNames[1].size() > 4 && SubNames[1].substr(0,4) == "Edge")
|
||||||
GeoId2 = std::atoi(SubNames[1].substr(4,4000).c_str());
|
GeoId2 = std::atoi(SubNames[1].substr(4,4000).c_str());
|
||||||
|
else if (SubNames[1].size() > 12 && SubNames[1].substr(0,12) == "ExternalEdge")
|
||||||
|
GeoId2 = -3 - std::atoi(SubNames[1].substr(12,4000).c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GeoId2 >= 0) { // line to line angle
|
if (GeoId2 != Constraint::GeoUndef) { // line to line angle
|
||||||
|
|
||||||
|
if (checkBothExternal(GeoId1, GeoId2))
|
||||||
|
return;
|
||||||
|
|
||||||
const Part::Geometry *geom1 = Obj->getGeometry(GeoId1);
|
const Part::Geometry *geom1 = Obj->getGeometry(GeoId1);
|
||||||
const Part::Geometry *geom2 = Obj->getGeometry(GeoId2);
|
const Part::Geometry *geom2 = Obj->getGeometry(GeoId2);
|
||||||
if (geom1->getTypeId() == Part::GeomLineSegment::getClassTypeId() &&
|
if (geom1->getTypeId() == Part::GeomLineSegment::getClassTypeId() &&
|
||||||
|
@ -1475,7 +1550,13 @@ void CmdSketcherConstrainAngle::activated(int iMsg)
|
||||||
getSelection().clearSelection();
|
getSelection().clearSelection();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else if (GeoId1 >= 0) { // line angle
|
} else if (GeoId1 != Constraint::GeoUndef) { // line angle
|
||||||
|
if (GeoId1 < 0) {
|
||||||
|
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||||
|
QObject::tr("Cannot add an angle constraint on an external geometry!"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const Part::Geometry *geom = Obj->getGeometry(GeoId1);
|
const Part::Geometry *geom = Obj->getGeometry(GeoId1);
|
||||||
if (geom->getTypeId() == Part::GeomLineSegment::getClassTypeId()) {
|
if (geom->getTypeId() == Part::GeomLineSegment::getClassTypeId()) {
|
||||||
const Part::GeomLineSegment *lineSeg;
|
const Part::GeomLineSegment *lineSeg;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user