}
if (objDist < 5.0)
+ {
pl->hitObject = true;
+ pl->ptNum = i;
+ }
}
else
{
span -= TAU;
if (((fabs(length - a.radius[0]) * Global::zoom) < 2.5) && (fabs(span) < fabs(a.angle[1])))
+ {
pl->hitObject = true;
+ pl->ptNum = i;
+ }
}
}
case OTPolyline:
{
-#if 1
- // Do this for now...
- ((Polyline *)obj)->Translate(delta);
-// Polyline * pl = (Polyline *)obj;
-
-// for(long unsigned int i=0; i<pl->points.size(); i++)
-// pl->points[i] += delta;
-#else
Polyline * pl = (Polyline *)obj;
- for(long unsigned int i=0; i<(pl->points.size()-1); i++)
-#endif
+ if (!shiftDown)
+ pl->Translate(delta);
+ else
+ {
+ // Move selected point by itself (if hit)
+ if (pl->hitPoint[0])
+ {
+ point.b = pl->points[pl->ptNum].b;
+ pl->points[pl->ptNum] = point;
+ }
+ else if (pl->hitObject)
+ {
+ // move arc radius, or maybe move line segment? :-/
+ int ptNum = pl->ptNum;
+ Arc a = Geometry::FindArcForThreePoints(pl->points[ptNum], pl->points[ptNum + 1], point);
+ pl->points[ptNum].b = Geometry::Pack(&a);
+
+ // This doesn't quite get there... Maybe < 0.001?
+ if (fabs(pl->points[ptNum].b) < EPSILON)
+ pl->points[ptNum].b = 0;
+ }
+ }
break;
}
obj->p[1] = point;
else if (obj->hitObject)
{
- // Move measurement lines in/out
+ // Move extension lines in/out
if (shiftDown)
{
Dimension * d = (Dimension *)obj;