summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorclifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c>2010-01-23 09:15:20 (GMT)
committerclifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c>2010-01-23 09:15:20 (GMT)
commitb960e15983575c24853c35aaa277d7b191cbd1a3 (patch)
tree56f5744c7055564fea9a29693b145f7a3c0246ba
parentc3b8a8fcd93b74a8dd15a6f2284310cd519ec863 (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
-rw-r--r--dxfdata.cc36
1 files changed, 26 insertions, 10 deletions
diff --git a/dxfdata.cc b/dxfdata.cc
index 67e7957..90e3253 100644
--- a/dxfdata.cc
+++ b/dxfdata.cc
@@ -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);
}
}
contact: Jan Huwald // Impressum