diff options
-rw-r--r-- | TODO.txt | 1 | ||||
-rw-r--r-- | dxfdata.cc | 70 | ||||
-rw-r--r-- | testdata/transform-insert.dxf | 2980 | ||||
-rw-r--r-- | testdata/transform-insert.scad | 1 |
4 files changed, 3025 insertions, 27 deletions
@@ -66,7 +66,6 @@ o DXF Import - Support for SPLINE entity - Support for LEADER entity - Support for MTEXT entity ? - - Test INSERT with rotation. code looks wrong - idea: DXF inline - convert from dxf to OpenSCAD syntax -> parametrize dxf content o Mesh optimization on STL export - Remove super small triangles (all sides are short) @@ -82,7 +82,9 @@ DxfData::DxfData(double fn, double fs, double fa, QString filename, QString laye double coords[7][2]; // Used by DIMENSION entities QVector<double> xverts; QVector<double> yverts; - double radius = 0, start_angle = 0, stop_angle = 0; + double radius = 0; + double arc_start_angle = 0, arc_stop_angle = 0; + double ellipse_start_angle = 0, ellipse_stop_angle = 0; for (int i = 0; i < 7; i++) for (int j = 0; j < 2; j++) @@ -155,21 +157,21 @@ DxfData::DxfData(double fn, double fs, double fa, QString filename, QString laye else if (mode == "ARC") { Point center(xverts[0], yverts[0]); int n = get_fragments_from_r(radius, fn, fs, fa); - while (start_angle > stop_angle) - stop_angle += 360.0; - n = (int)ceil(n * (stop_angle-start_angle) / 360); + while (arc_start_angle > arc_stop_angle) + arc_stop_angle += 360.0; + n = (int)ceil(n * (arc_stop_angle-arc_start_angle) / 360); for (int i = 0; i < n; i++) { - double a1 = ((stop_angle-start_angle)*i)/n; - double a2 = ((stop_angle-start_angle)*(i+1))/n; - a1 = (start_angle + a1) * M_PI / 180.0; - a2 = (start_angle + a2) * M_PI / 180.0; + double a1 = ((arc_stop_angle-arc_start_angle)*i)/n; + double a2 = ((arc_stop_angle-arc_start_angle)*(i+1))/n; + a1 = (arc_start_angle + a1) * M_PI / 180.0; + a2 = (arc_start_angle + a2) * M_PI / 180.0; ADD_LINE(cos(a1)*radius + center.x, sin(a1)*radius + center.y, cos(a2)*radius + center.x, sin(a2)*radius + center.y); } } else if (mode == "ELLIPSE") { // Commented code is meant as documentation of vector math - while (start_angle > stop_angle) stop_angle += 2 * M_PI; + while (ellipse_start_angle > ellipse_stop_angle) ellipse_stop_angle += 2 * M_PI; // Vector2d center(xverts[0], yverts[0]); Point center(xverts[0], yverts[0]); // Vector2d ce(xverts[1], yverts[1]); @@ -190,13 +192,13 @@ DxfData::DxfData(double fn, double fs, double fa, QString filename, QString laye // the ratio stored in 'radius; due to the parser code not checking entity type double r_minor = r_major * radius; - double sweep_angle = stop_angle-start_angle; + double sweep_angle = ellipse_stop_angle-ellipse_start_angle; int n = get_fragments_from_r(r_major, fn, fs, fa); n = (int)ceil(n * sweep_angle / (2 * M_PI)); // Vector2d p1; Point p1; for (int i=0;i<=n;i++) { - double a = (start_angle + sweep_angle*i/n); + double a = (ellipse_start_angle + sweep_angle*i/n); // Vector2d p2(cos(a)*r_major, sin(a)*r_minor); Point p2(cos(a)*r_major, sin(a)*r_minor); // p2.rotate(rot_angle); @@ -215,16 +217,18 @@ DxfData::DxfData(double fn, double fs, double fa, QString filename, QString laye } } else if (mode == "INSERT") { + // scale is stored in ellipse_start|stop_angle, rotation in arc_start_angle; + // due to the parser code not checking entity type int n = blockdata[iddata].size(); for (int i = 0; i < n; i++) { - double a = -start_angle * M_PI / 180.0; - double lx1 = blockdata[iddata][i].p[0]->x; - double ly1 = blockdata[iddata][i].p[0]->y; - double lx2 = blockdata[iddata][i].p[1]->x; - double ly2 = blockdata[iddata][i].p[1]->y; - double px1 = cos(a)*lx1 + sin(a)*ly1 + xverts[0]; + double a = arc_start_angle * M_PI / 180.0; + double lx1 = blockdata[iddata][i].p[0]->x * ellipse_start_angle; + double ly1 = blockdata[iddata][i].p[0]->y * ellipse_stop_angle; + double lx2 = blockdata[iddata][i].p[1]->x * ellipse_start_angle; + double ly2 = blockdata[iddata][i].p[1]->y * ellipse_stop_angle; + double px1 = cos(a)*lx1 - sin(a)*ly1 + xverts[0]; double py1 = sin(a)*lx1 + cos(a)*ly1 + yverts[0]; - double px2 = cos(a)*lx2 + sin(a)*ly2 + xverts[0]; + double px2 = cos(a)*lx2 - sin(a)*ly2 + xverts[0]; double py2 = sin(a)*lx2 + cos(a)*ly2 + yverts[0]; ADD_LINE(px1, py1, px2, py2); } @@ -236,7 +240,7 @@ DxfData::DxfData(double fn, double fs, double fa, QString filename, QString laye for (int i = 0; i < 7; i++) for (int j = 0; j < 2; j++) this->dims.last().coords[i][j] = coords[i][j]; - this->dims.last().angle = start_angle; + this->dims.last().angle = ellipse_start_angle; this->dims.last().length = radius; this->dims.last().name = name; } @@ -262,7 +266,11 @@ DxfData::DxfData(double fn, double fs, double fa, QString filename, QString laye coords[i][j] = 0; xverts.clear(); yverts.clear(); - radius = start_angle = stop_angle = 0; + radius = arc_start_angle = arc_stop_angle = 0; + ellipse_start_angle = ellipse_stop_angle = 0; + if (mode == "INSERT") { + ellipse_start_angle = ellipse_stop_angle = 1.0; // scale + } break; case 1: name = data; @@ -291,13 +299,23 @@ DxfData::DxfData(double fn, double fs, double fa, QString filename, QString laye // DIMENSION (radial, diameter): Leader length radius = data.toDouble() * scale; break; - case 41: // for ELLIPSE - case 50: // for ARC - start_angle = data.toDouble(); + case 41: + // ELLIPSE: start_angle + // INSERT: X scale + ellipse_start_angle = data.toDouble(); + break; + case 50: + // ARC: start_angle + // INSERT: rot angle + arc_start_angle = data.toDouble(); + break; + case 42: + // ELLIPSE: stop_angle + // INSERT: Y scale + ellipse_stop_angle = data.toDouble(); break; - case 42: // for ELLIPSE - case 51: // for ARC - stop_angle = data.toDouble(); + case 51: // ARC + arc_stop_angle = data.toDouble(); break; case 70: // LWPOLYLINE: polyline flag diff --git a/testdata/transform-insert.dxf b/testdata/transform-insert.dxf new file mode 100644 index 0000000..40064c2 --- /dev/null +++ b/testdata/transform-insert.dxf @@ -0,0 +1,2980 @@ +999 +dxflib 2.2.0.0 + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1015 + 9 +$HANDSEED + 5 +FFFF + 9 +$DIMASZ + 40 +2.5 + 9 +$PLIMMIN + 10 +0.0 + 20 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMGAP + 40 +0.625 + 9 +$PLIMMAX + 10 +210.0 + 20 +297.0 + 9 +$INSUNITS + 70 +4 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMTXT + 40 +2.5 + 9 +$CLAYER + 8 +0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +100 +AcDbSymbolTable + 70 +1 + 0 +VPORT + 5 +30 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 +0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +286.3055555555554861 + 22 +148.5 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +297.0 + 41 +1.92798353909465 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 +0 + 72 +100 + 73 +1 + 74 +3 + 75 +1 + 76 +1 + 77 +0 + 78 +0 +281 +0 + 65 +1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 +0 +146 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +100 +AcDbSymbolTable + 70 +21 + 0 +LTYPE + 5 +14 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 +0 + 3 + + 72 +65 + 73 +0 + 40 +0.0 + 0 +LTYPE + 5 +15 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 +0 + 3 + + 72 +65 + 73 +0 + 40 +0.0 + 0 +LTYPE + 5 +16 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +CONTINUOUS + 70 +0 + 3 +Solid line + 72 +65 + 73 +0 + 40 +0.0 + 0 +LTYPE + 5 +31 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DOT + 70 +0 + 3 +Dot . . . . . . . . . . . . . . . . . . . . . . + 72 +65 + 73 +2 + 40 +6.3499999999999996 + 49 +0.0 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 0 +LTYPE + 5 +32 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DOT2 + 70 +0 + 3 +Dot (.5x) ..................................... + 72 +65 + 73 +2 + 40 +3.1749999999999998 + 49 +0.0 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 0 +LTYPE + 5 +33 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DOTX2 + 70 +0 + 3 +Dot (2x) . . . . . . . . . . . . . + 72 +65 + 73 +2 + 40 +12.6999999999999993 + 49 +0.0 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 0 +LTYPE + 5 +34 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DASHED + 70 +0 + 3 +Dashed __ __ __ __ __ __ __ __ __ __ __ __ __ _ + 72 +65 + 73 +2 + 40 +19.0500000000000007 + 49 +12.6999999999999993 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 0 +LTYPE + 5 +35 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DASHED2 + 70 +0 + 3 +Dashed (.5x) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + 72 +65 + 73 +2 + 40 +9.5250000000000004 + 49 +6.3499999999999996 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 0 +LTYPE + 5 +36 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DASHEDX2 + 70 +0 + 3 +Dashed (2x) ____ ____ ____ ____ ____ ___ + 72 +65 + 73 +2 + 40 +38.1000000000000014 + 49 +25.3999999999999986 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 0 +LTYPE + 5 +37 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DASHDOT + 70 +0 + 3 +Dash dot __ . __ . __ . __ . __ . __ . __ . __ + 72 +65 + 73 +4 + 40 +25.3999999999999986 + 49 +12.6999999999999993 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 0 +LTYPE + 5 +38 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DASHDOT2 + 70 +0 + 3 +Dash dot (.5x) _._._._._._._._._._._._._._._. + 72 +65 + 73 +4 + 40 +12.6999999999999993 + 49 +6.3499999999999996 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 0 +LTYPE + 5 +39 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DASHDOTX2 + 70 +0 + 3 +Dash dot (2x) ____ . ____ . ____ . ___ + 72 +65 + 73 +4 + 40 +50.7999999999999972 + 49 +25.3999999999999986 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 0 +LTYPE + 5 +3A +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DIVIDE + 70 +0 + 3 +Divide ____ . . ____ . . ____ . . ____ . . ____ + 72 +65 + 73 +6 + 40 +31.75 + 49 +12.6999999999999993 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 0 +LTYPE + 5 +3B +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DIVIDE2 + 70 +0 + 3 +Divide (.5x) __..__..__..__..__..__..__..__.._ + 72 +65 + 73 +6 + 40 +15.875 + 49 +6.3499999999999996 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 0 +LTYPE + 5 +3C +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DIVIDEX2 + 70 +0 + 3 +Divide (2x) ________ . . ________ . . _ + 72 +65 + 73 +6 + 40 +63.5 + 49 +25.3999999999999986 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 0 +LTYPE + 5 +3D +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +CENTER + 70 +0 + 3 +Center ____ _ ____ _ ____ _ ____ _ ____ _ ____ + 72 +65 + 73 +4 + 40 +50.7999999999999972 + 49 +31.75 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 49 +6.3499999999999996 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 0 +LTYPE + 5 +3E +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +CENTER2 + 70 +0 + 3 +Center (.5x) ___ _ ___ _ ___ _ ___ _ ___ _ ___ + 72 +65 + 73 +4 + 40 +28.5749999999999993 + 49 +19.0500000000000007 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 49 +3.1749999999999998 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 0 +LTYPE + 5 +3F +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +CENTERX2 + 70 +0 + 3 +Center (2x) ________ __ ________ __ _____ + 72 +65 + 73 +4 + 40 +101.5999999999999943 + 49 +63.5 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 49 +12.6999999999999993 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 0 +LTYPE + 5 +40 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +BORDER + 70 +0 + 3 +Border __ __ . __ __ . __ __ . __ __ . __ __ . + 72 +65 + 73 +6 + 40 +44.4500000000000028 + 49 +12.6999999999999993 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 49 +12.6999999999999993 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 0 +LTYPE + 5 +41 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +BORDER2 + 70 +0 + 3 +Border (.5x) __.__.__.__.__.__.__.__.__.__.__. + 72 +65 + 73 +6 + 40 +22.2250000000000014 + 49 +6.3499999999999996 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 49 +6.3499999999999996 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 0 +LTYPE + 5 +42 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +BORDERX2 + 70 +0 + 3 +Border (2x) ____ ____ . ____ ____ . ___ + 72 +65 + 73 +6 + 40 +88.9000000000000057 + 49 +25.3999999999999986 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 49 +25.3999999999999986 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +100 +AcDbSymbolTable + 70 +1 + 0 +LAYER + 5 +10 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 +0 + 62 +7 +420 +0 + 6 +CONTINUOUS +370 +25 +390 +F + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +100 +AcDbSymbolTable + 70 +1 + 0 +STYLE + 5 +11 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 +0 + 40 +0.0 + 41 +0.75 + 50 +0.0 + 71 +0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +100 +AcDbSymbolTable + 70 +0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +100 +AcDbSymbolTable + 70 +0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +100 +AcDbSymbolTable + 70 +1 + 0 +APPID + 5 +12 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 +0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +100 +AcDbSymbolTable + 70 +1 +100 +AcDbDimStyleTable + 71 +0 + 0 +DIMSTYLE +105 +27 +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 70 +0 + 73 +0 + 74 +0 + 77 +1 + 78 +8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 +3 +172 +1 +271 +2 +272 +2 +274 +3 +278 +44 +283 +0 +284 +8 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +100 +AcDbSymbolTable + 70 +1 + 0 +BLOCK_RECORD + 5 +1F +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 0 +BLOCK_RECORD + 5 +1B +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 0 +BLOCK_RECORD + 5 +23 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 0 +BLOCK_RECORD + 5 +43 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +testblock +340 +0 + 0 +BLOCK_RECORD + 5 +44 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +testblock2 +340 +0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 +0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1C +100 +AcDbEntity + 67 +1 + 8 +0 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 +0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +1D +100 +AcDbEntity + 67 +1 + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +24 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 +0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +25 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +45 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +testblock + 70 +0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +testblock + 1 + + 0 +LINE + 5 +46 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +-1.0 + 20 +0.0 + 30 +0.0 + 11 +-1.0 + 21 +2.0 + 31 +0.0 + 0 +LINE + 5 +47 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +-1.0 + 20 +2.0 + 30 +0.0 + 11 +-3.0 + 21 +2.0 + 31 +0.0 + 0 +LINE + 5 +48 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +-3.0 + 20 +2.0 + 30 +0.0 + 11 +-3.0 + 21 +4.0 + 31 +0.0 + 0 +LINE + 5 +49 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +-3.0 + 20 +4.0 + 30 +0.0 + 11 +3.0 + 21 +4.0 + 31 +0.0 + 0 +LINE + 5 +4A +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +3.0 + 20 +4.0 + 30 +0.0 + 11 +3.0 + 21 +2.0 + 31 +0.0 + 0 +LINE + 5 +4B +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +3.0 + 20 +2.0 + 30 +0.0 + 11 +1.0 + 21 +2.0 + 31 +0.0 + 0 +LINE + 5 +4C +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +1.0 + 20 +2.0 + 30 +0.0 + 11 +1.0 + 21 +0.0 + 31 +0.0 + 0 +ENDBLK + 5 +4D +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +4E +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +testblock2 + 70 +0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +testblock2 + 1 + + 0 +LINE + 5 +4F +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +-1.0000000000000004 + 20 +6.0 + 30 +0.0 + 11 +-1.0 + 21 +8.0 + 31 +0.0 + 0 +LINE + 5 +50 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +-1.0 + 20 +8.0 + 30 +0.0 + 11 +-3.0 + 21 +8.0 + 31 +0.0 + 0 +LINE + 5 +51 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +-3.0 + 20 +8.0 + 30 +0.0 + 11 +-3.0 + 21 +10.0 + 31 +0.0 + 0 +LINE + 5 +52 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +-3.0 + 20 +10.0 + 30 +0.0 + 11 +3.0 + 21 +10.0 + 31 +0.0 + 0 +LINE + 5 +53 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +3.0 + 20 +10.0 + 30 +0.0 + 11 +3.0 + 21 +8.0 + 31 +0.0 + 0 +LINE + 5 +54 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +3.0 + 20 +8.0 + 30 +0.0 + 11 +1.0 + 21 +8.0 + 31 +0.0 + 0 +LINE + 5 +55 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +1.0 + 20 +8.0 + 30 +0.0 + 11 +0.9999999999999998 + 21 +6.0 + 31 +0.0 + 0 +ENDBLK + 5 +56 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LINE + 5 +57 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +10.0 + 20 +10.0 + 30 +0.0 + 11 +10.0 + 21 +-10.0 + 31 +0.0 + 0 +LINE + 5 +58 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +-10.0 + 20 +-10.0 + 30 +0.0 + 11 +-10.0 + 21 +10.0 + 31 +0.0 + 0 +LINE + 5 +59 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +-10.0 + 20 +10.0 + 30 +0.0 + 11 +-1.0 + 21 +10.0 + 31 +0.0 + 0 +LINE + 5 +5A +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +1.0 + 20 +10.0 + 30 +0.0 + 11 +10.0 + 21 +10.0 + 31 +0.0 + 0 +LINE + 5 +5B +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +10.0 + 20 +-10.0 + 30 +0.0 + 11 +1.0 + 21 +-10.0 + 31 +0.0 + 0 +LINE + 5 +5C +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +-1.0 + 20 +-10.0 + 30 +0.0 + 11 +-10.0 + 21 +-10.0 + 31 +0.0 + 0 +LINE + 5 +5D +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +40.0 + 20 +10.0 + 30 +0.0 + 11 +40.0 + 21 +-10.0 + 31 +0.0 + 0 +LINE + 5 +5E +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +20.0 + 20 +-10.0 + 30 +0.0 + 11 +20.0 + 21 +10.0 + 31 +0.0 + 0 +LINE + 5 +5F +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +20.0 + 20 +10.0 + 30 +0.0 + 11 +29.0 + 21 +10.0 + 31 +0.0 + 0 +LINE + 5 +60 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +31.0 + 20 +10.0 + 30 +0.0 + 11 +40.0 + 21 +10.0 + 31 +0.0 + 0 +LINE + 5 +61 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +40.0 + 20 +-10.0 + 30 +0.0 + 11 +31.0 + 21 +-10.0 + 31 +0.0 + 0 +LINE + 5 +62 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +29.0 + 20 +-10.0 + 30 +0.0 + 11 +20.0 + 21 +-10.0 + 31 +0.0 + 0 +INSERT + 5 +63 +100 +AcDbEntity +100 +AcDbBlockReference + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 2 +testblock2 + 10 +29.9999999999999964 + 20 +-4.0 + 30 +0.0 + 41 +1.0 + 42 +-1.0 + 43 +1.0 + 50 +360.0 + 44 +1.0 + 45 +1.0 + 0 +INSERT + 5 +64 +100 +AcDbEntity +100 +AcDbBlockReference + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 2 +testblock2 + 10 +30.0 + 20 +4.0 + 30 +0.0 + 44 +1.0 + 45 +1.0 + 0 +INSERT + 5 +65 +100 +AcDbEntity +100 +AcDbBlockReference + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 2 +testblock + 10 +0.0 + 20 +-10.0 + 30 +0.0 + 41 +1.0 + 42 +-1.0 + 43 +1.0 + 50 +360.0 + 44 +1.0 + 45 +1.0 + 0 +INSERT + 5 +66 +100 +AcDbEntity +100 +AcDbBlockReference + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 2 +testblock + 10 +0.0 + 20 +10.0 + 30 +0.0 + 44 +1.0 + 45 +1.0 + 0 +LINE + 5 +67 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +60.0 + 20 +7.0710678118654755 + 30 +0.0 + 11 +67.0710678118654755 + 21 +-0.0000000000000017 + 31 +0.0 + 0 +LINE + 5 +68 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +60.0 + 20 +-7.0710678118654755 + 30 +0.0 + 11 +52.9289321881345245 + 21 +0.0000000000000009 + 31 +0.0 + 0 +LINE + 5 +69 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +52.9289321881345245 + 20 +0.0000000000000009 + 30 +0.0 + 11 +56.1109127034739927 + 21 +3.1819805153394651 + 31 +0.0 + 0 +LINE + 5 +6A +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +56.8180194846605389 + 20 +3.8890872965260113 + 30 +0.0 + 11 +60.0 + 21 +7.0710678118654755 + 31 +0.0 + 0 +LINE + 5 +6B +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +67.0710678118654755 + 20 +-0.0000000000000017 + 30 +0.0 + 11 +63.8890872965260073 + 21 +-3.1819805153394651 + 31 +0.0 + 0 +LINE + 5 +6C +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +63.1819805153394611 + 20 +-3.8890872965260117 + 30 +0.0 + 11 +60.0 + 21 +-7.0710678118654755 + 31 +0.0 + 0 +INSERT + 5 +6D +100 +AcDbEntity +100 +AcDbBlockReference + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 2 +testblock2 + 10 +58.5857864376269077 + 20 +1.4142135623730963 + 30 +0.0 + 41 +0.5 + 42 +0.5 + 43 +1.0 + 50 +45.0 + 44 +1.0 + 45 +1.0 + 0 +INSERT + 5 +6E +100 +AcDbEntity +100 +AcDbBlockReference + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 2 +testblock2 + 10 +61.4142135623730923 + 20 +-1.4142135623730949 + 30 +0.0 + 41 +0.5 + 42 +0.5 + 43 +1.0 + 50 +-135.0 + 44 +1.0 + 45 +1.0 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +100 +AcDbDictionary +280 +0 +281 +1 + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +AcDbVariableDictionary +350 +6F + 0 +DICTIONARY + 5 +D +100 +AcDbDictionary +280 +0 +281 +1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +100 +AcDbDictionary +281 +1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +ACDBPLACEHOLDER + 5 +F + 0 +DICTIONARY + 5 +17 +100 +AcDbDictionary +280 +0 +281 +1 + 3 +Standard +350 +18 + 0 +MLINESTYLE + 5 +18 +100 +AcDbMlineStyle + 2 +STANDARD + 70 +0 + 3 + + 62 +256 + 51 +90.0 + 52 +90.0 + 71 +2 + 49 +0.5 + 62 +256 + 6 +BYLAYER + 49 +-0.5 + 62 +256 + 6 +BYLAYER + 0 +DICTIONARY + 5 +19 +100 +AcDbDictionary +280 +0 +281 +1 + 0 +DICTIONARY + 5 +1A +100 +AcDbDictionary +281 +1 + 3 +Layout1 +350 +1E + 3 +Layout2 +350 +26 + 3 +Model +350 +22 + 0 +LAYOUT + 5 +1E +100 +AcDbPlotSettings + 1 + + 2 +C:\Program Files\AutoCAD 2002\plotters\DWF ePlot (optimized for plotting).pc3 + 4 + + 6 + + 40 +0.0 + 41 +0.0 + 42 +0.0 + 43 +0.0 + 44 +0.0 + 45 +0.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 +688 + 72 +0 + 73 +0 + 74 +5 + 7 + + 75 +16 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +Layout1 + 70 +1 + 71 +1 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +100000000000000000000.0 + 24 +100000000000000000000.0 + 34 +100000000000000000000.0 + 15 +-100000000000000000000.0 + 25 +-100000000000000000000.0 + 35 +-100000000000000000000.0 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 +0 +330 +1B + 0 +LAYOUT + 5 +22 +100 +AcDbPlotSettings + 1 + + 2 +C:\Program Files\AutoCAD 2002\plotters\DWF ePlot (optimized for plotting).pc3 + 4 + + 6 + + 40 +0.0 + 41 +0.0 + 42 +0.0 + 43 +0.0 + 44 +0.0 + 45 +0.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 +1712 + 72 +0 + 73 +0 + 74 +0 + 7 + + 75 +0 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +Model + 70 +1 + 71 +0 + 10 +0.0 + 20 +0.0 + 11 +12.0 + 21 +9.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +0.0 + 24 +0.0 + 34 +0.0 + 15 +0.0 + 25 +0.0 + 35 +0.0 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 +0 +330 +1F + 0 +LAYOUT + 5 +26 +100 +AcDbPlotSettings + 1 + + 2 +C:\Program Files\AutoCAD 2002\plotters\DWF ePlot (optimized for plotting).pc3 + 4 + + 6 + + 40 +0.0 + 41 +0.0 + 42 +0.0 + 43 +0.0 + 44 +0.0 + 45 +0.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 +688 + 72 +0 + 73 +0 + 74 +5 + 7 + + 75 +16 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +Layout2 + 70 +1 + 71 +2 + 10 +0.0 + 20 +0.0 + 11 +12.0 + 21 +9.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +0.0 + 24 +0.0 + 34 +0.0 + 15 +0.0 + 25 +0.0 + 35 +0.0 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 +0 +330 +23 + 0 +DICTIONARY + 5 +6F +100 +AcDbDictionary +281 +1 + 3 +DIMASSOC +350 +71 + 3 +HIDETEXT +350 +70 + 0 +DICTIONARYVAR + 5 +70 +100 +DictionaryVariables +280 +0 + 1 +2 + 0 +DICTIONARYVAR + 5 +71 +100 +DictionaryVariables +280 +0 + 1 +1 + 0 +ENDSEC + 0 +EOF diff --git a/testdata/transform-insert.scad b/testdata/transform-insert.scad new file mode 100644 index 0000000..1237bb2 --- /dev/null +++ b/testdata/transform-insert.scad @@ -0,0 +1 @@ +import_dxf("transform-insert.dxf"); |