diff options
author | clifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c> | 2010-01-23 09:15:20 (GMT) |
---|---|---|
committer | clifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c> | 2010-01-23 09:15:20 (GMT) |
commit | b960e15983575c24853c35aaa277d7b191cbd1a3 (patch) | |
tree | 56f5744c7055564fea9a29693b145f7a3c0246ba /dxfdata.cc | |
parent | c3b8a8fcd93b74a8dd15a6f2284310cd519ec863 (diff) |
Clifford Wolf:
Fixed dxf import scale/origin with blocks
git-svn-id: http://svn.clifford.at/openscad/trunk@344 b57f626f-c46c-0410-a088-ec61d464b74c
Diffstat (limited to 'dxfdata.cc')
-rw-r--r-- | dxfdata.cc | 36 |
1 files changed, 26 insertions, 10 deletions
@@ -110,14 +110,18 @@ DxfData::DxfData(double fn, double fs, double fa, QString filename, QString laye } if (id >= 10 && id <= 16) { - if (id == 11 || id == 12 || id == 16) + if (in_blocks_section) + coords[id-10][0] = data.toDouble(); + else if (id == 11 || id == 12 || id == 16) coords[id-10][0] = data.toDouble() * scale; else coords[id-10][0] = (data.toDouble() - xorigin) * scale; } if (id >= 20 && id <= 26) { - if (id == 21 || id == 22 || id == 26) + if (in_blocks_section) + coords[id-20][1] = data.toDouble(); + else if (id == 21 || id == 22 || id == 26) coords[id-20][1] = data.toDouble() * scale; else coords[id-20][1] = (data.toDouble() - yorigin) * scale; @@ -253,8 +257,8 @@ DxfData::DxfData(double fn, double fs, double fa, QString filename, QString laye else if (mode == "ENDSEC") { } else if (in_blocks_section || (in_entities_section && - (layername.isNull() || layername == layer))) { - unsupported_entities_list[mode]++; + (layername.isNull() || layername == layer))) { + unsupported_entities_list[mode]++; } mode = data; layer = QString(); @@ -282,16 +286,28 @@ DxfData::DxfData(double fn, double fs, double fa, QString filename, QString laye layer = data; break; case 10: - xverts.append((data.toDouble() - xorigin) * scale); + if (in_blocks_section) + xverts.append((data.toDouble())); + else + xverts.append((data.toDouble() - xorigin) * scale); break; case 11: - xverts.append((data.toDouble() - xorigin) * scale); + if (in_blocks_section) + xverts.append((data.toDouble())); + else + xverts.append((data.toDouble() - xorigin) * scale); break; case 20: - yverts.append((data.toDouble() - yorigin) * scale); + if (in_blocks_section) + yverts.append((data.toDouble())); + else + yverts.append((data.toDouble() - yorigin) * scale); break; case 21: - yverts.append((data.toDouble() - yorigin) * scale); + if (in_blocks_section) + yverts.append((data.toDouble())); + else + yverts.append((data.toDouble() - yorigin) * scale); break; case 40: // CIRCLE, ARC: radius @@ -330,10 +346,10 @@ DxfData::DxfData(double fn, double fs, double fa, QString filename, QString laye i.next(); if (layername.isNull()) { PRINTA("WARNING: Unsupported DXF Entity `%1' (%2x) in `%3'.", - i.key(), QString::number(i.value()), filename); + i.key(), QString::number(i.value()), filename); } else { PRINTA("WARNING: Unsupported DXF Entity `%1' (%2x) in layer `%3' of `%4'.", - i.key(), QString::number(i.value()), layername, filename); + i.key(), QString::number(i.value()), layername, filename); } } |