+ use a trick to improve edge dragging of arcs and circles (until we find a more proper solution)
git-svn-id: https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk@5149 e8eeb9e2-ec13-0410-a4a9-efa5cf37419d
This commit is contained in:
parent
aaea1b933c
commit
4d7a9435c1
|
@ -1497,7 +1497,9 @@ int Sketch::initMove(int geoId, PointPos pos)
|
|||
p1.y = &MoveParameters[3];
|
||||
*p1.x = *center.x;
|
||||
*p1.y = *center.y;
|
||||
GCSsys.addConstraintP2PCoincident(p1,center,-1);
|
||||
int i=GCSsys.addConstraintP2PCoincident(p1,center,-1);
|
||||
GCSsys.rescaleConstraint(i-1, 0.01);
|
||||
GCSsys.rescaleConstraint(i, 0.01);
|
||||
}
|
||||
} else if (Geoms[geoId].type == Arc) {
|
||||
GCS::Point ¢er = Points[Geoms[geoId].midPointId];
|
||||
|
@ -1531,7 +1533,9 @@ int Sketch::initMove(int geoId, PointPos pos)
|
|||
p1.y = &MoveParameters[3];
|
||||
*p1.x = *center.x;
|
||||
*p1.y = *center.y;
|
||||
GCSsys.addConstraintP2PCoincident(p1,center,-1);
|
||||
int i=GCSsys.addConstraintP2PCoincident(p1,center,-1);
|
||||
GCSsys.rescaleConstraint(i-1, 0.01);
|
||||
GCSsys.rescaleConstraint(i, 0.01);
|
||||
}
|
||||
}
|
||||
InitParameters = MoveParameters;
|
||||
|
|
|
@ -403,6 +403,14 @@ int System::addConstraintP2PSymmetric(Point &p1, Point &p2, Line &l, int tagId)
|
|||
return addConstraintMidpointOnLine(p1, p2, l.p1, l.p2, tagId);
|
||||
}
|
||||
|
||||
void System::rescaleConstraint(int id, double coeff)
|
||||
{
|
||||
if (id >= clist.size() || id < 0)
|
||||
return;
|
||||
if (clist[id])
|
||||
clist[id]->rescale(coeff);
|
||||
}
|
||||
|
||||
|
||||
void System::initSolution(VEC_pD ¶ms)
|
||||
{
|
||||
|
|
|
@ -74,7 +74,7 @@ namespace GCS
|
|||
System();
|
||||
System(std::vector<Constraint *> clist_);
|
||||
~System();
|
||||
|
||||
|
||||
void clear();
|
||||
void clearByTag(int tagId);
|
||||
|
||||
|
@ -124,6 +124,7 @@ namespace GCS
|
|||
int addConstraintEqualRadius(Circle &c1, Arc &a2, int tagId=0);
|
||||
int addConstraintEqualRadius(Arc &a1, Arc &a2, int tagId=0);
|
||||
int addConstraintP2PSymmetric(Point &p1, Point &p2, Line &l, int tagId=0);
|
||||
void rescaleConstraint(int id, double coeff);
|
||||
|
||||
void initSolution(VEC_pD ¶ms);
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user