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.", "

", "
", + " ", " ", " ", " ", @@ -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); } }
z height in mm
arc segments / mm
min arc segments
nest shapes