From 2aa1a2c663c9ce0f60c308b44f9e8b1a9657af0b Mon Sep 17 00:00:00 2001
From: Stewart Allen
Date: Tue, 10 Sep 2024 14:03:02 -0400
Subject: [PATCH] add z depth svg import option
---
src/kiri/platform.js | 4 +++-
src/load/svg.js | 10 ++++------
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/kiri/platform.js b/src/kiri/platform.js
index 34c749aa..372b6555 100644
--- a/src/kiri/platform.js
+++ b/src/kiri/platform.js
@@ -883,6 +883,7 @@ function loadSVGDialog(doit) {
" Finer angle settings produce much larger models.",
"
",
" ",
+ " | z height in mm | |
",
" | arc segments / mm | |
",
" | min arc segments | |
",
" | nest shapes | |
",
@@ -890,10 +891,11 @@ function loadSVGDialog(doit) {
""
]};
api.uc.confirm(undefined, {convert:true, cancel:false}, undefined, opt).then((ok) => {
+ let depth = Math.max(0.1, parseFloat($('svg-depth').value));
let arcs = Math.max(0.01, parseFloat($('svg-arcs').value));
let marc = Math.max(1, parseInt($('svg-marc').value));
let soup = $('svg-nest').checked;
- ok && doit({ soup, resolution: arcs, segmin: marc });
+ ok && doit({ soup, resolution: arcs, segmin: marc, depth });
});
}
diff --git a/src/load/svg.js b/src/load/svg.js
index d25a3b3e..be3f977c 100644
--- a/src/load/svg.js
+++ b/src/load/svg.js
@@ -27,9 +27,9 @@ function parse(text, opt = { }) {
const xmlat = data.xml.attributes;
const polys = fromSoup ? [] : undefined;
const scale = xmlat.width?.value.endsWith('in') ? 25.4 : 1;
- const depth = opt.depth || xmlat['data-km-extrude']?.value
+ const depth = parseFloat(opt.depth || xmlat['data-km-extrude']?.value
|| xmlat['extrude']?.value
- || {value: 5};
+ || 5);
for (let i = 0; i < paths.length; i++) {
let path = paths[i];
@@ -39,7 +39,6 @@ function parse(text, opt = { }) {
let miter = path.userData?.style?.strokeMiterLimit;
if (fromSoup) {
for (let sub of path.subPaths) {
- let length = sub.getLength();
let points = sub.curves.map(curve => {
let length = curve.getLength();
let segs = curve.type === 'LineCurve' ?
@@ -65,8 +64,8 @@ function parse(text, opt = { }) {
continue;
}
let geom = new THREE.ExtrudeGeometry(shapes, {
+ depth,
steps: 1,
- depth: parseFloat(depth.value),
bevelEnabled: false
});
let array = geom.attributes.position.array;
@@ -101,9 +100,8 @@ function parse(text, opt = { }) {
return nest;
}
- let z = parseFloat(depth.value);
for (let poly of nest) {
- let obj = poly.extrude(z);
+ let obj = poly.extrude(depth);
objs.push(obj);
}
}