enum ToolState { TSNone, TSPoint1, TSPoint2, TSPoint3, TSPoint4, TSDone };
+enum BasicUnit { BUInch = 0, BUFoot, BUYard, BUMile, BUMM, BUCM, BUM, BUKM, BUCount };
+
const char objName[OTCount][16] = {
"None", "Line", "Circle", "Ellipse", "Arc", "Polygon", "Dimension",
"Spline", "Text", "Container"
"Circumferential", "Angular", "Leader"
};
+const char buShortName[BUCount][8] = {
+ "in", "ft", "yd", "mi", "mm", "cm", "m", "km"
+};
+
+const double buInInches[BUCount] = { 1.0, 12.0, 36.0, 1.0/25.4, 1.0/2.54, 1.0/0.0254, 1.0/0.0000254 };
+
#define OBJECT_COMMON \
int type; \
uint32_t id; \
Line(Vector pt1, Vector pt2, float th = 1.0, uint32_t c = 0, int l = LSSolid):
type(OTLine), id(Global::objectID++), layer(0), color(c), thickness(th),
style(l), selected(false), hovered(false), hitObject(false) { p[0] = pt1; p[1] = pt2; hitPoint[0] = hitPoint[1] = false; }
+ Vector Vect(void) { return Vector(p[0], p[1]); }
+ Vector Unit(void) { return Vector(p[0], p[1]).Unit(); }
+ double Length(void) { return Vector(p[0], p[1]).Magnitude(); }
};
struct Circle {