add proper 3mf units support
This commit is contained in:
parent
e814143153
commit
42c6743aaa
1 changed files with 15 additions and 3 deletions
|
|
@ -40,11 +40,23 @@
|
||||||
let model;
|
let model;
|
||||||
let faces;
|
let faces;
|
||||||
let units;
|
let units;
|
||||||
|
let scale = 1;
|
||||||
|
let scaleMap = {
|
||||||
|
"inch": (1 / 25.4),
|
||||||
|
"foot": (1 / 304.8),
|
||||||
|
"micron": (1 / 1000),
|
||||||
|
"meter": 1000,
|
||||||
|
"millimeter": 1,
|
||||||
|
"centimeter": (1 / 10)
|
||||||
|
};
|
||||||
|
|
||||||
query(doc, ["+model","resources","+object","+mesh"], (type, node) => {
|
query(doc, ["+model","resources","+object","+mesh"], (type, node) => {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case "model":
|
case "model":
|
||||||
units = node.getAttribute("unit");
|
units = node.getAttribute("unit");
|
||||||
|
if (units) {
|
||||||
|
scale = scaleMap[units] || 1;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case "object":
|
case "object":
|
||||||
emitModel(model, faces);
|
emitModel(model, faces);
|
||||||
|
|
@ -55,9 +67,9 @@
|
||||||
let vertices = [];
|
let vertices = [];
|
||||||
query(node, ["vertices","+vertex"], (type, vertex) => {
|
query(node, ["vertices","+vertex"], (type, vertex) => {
|
||||||
vertices.push([
|
vertices.push([
|
||||||
parseFloat(vertex.getAttribute("x")),
|
parseFloat(vertex.getAttribute("x")) * scale,
|
||||||
parseFloat(vertex.getAttribute("y")),
|
parseFloat(vertex.getAttribute("y")) * scale,
|
||||||
parseFloat(vertex.getAttribute("z"))
|
parseFloat(vertex.getAttribute("z")) * scale
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
query(node, ["triangles","+triangle"], (type, triangle) => {
|
query(node, ["triangles","+triangle"], (type, triangle) => {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue