From bfbde56b004c0aa84751fe9cfedb5258bbb2b503 Mon Sep 17 00:00:00 2001 From: Val Erastov Date: Tue, 1 May 2018 02:46:10 -0700 Subject: [PATCH] nurbs curve support for unmanaged objects --- .../scene/wrappers/unmanagedSceneObject.js | 25 +++++++++++++------ web/app/cad/sketch/sketchModel.js | 2 +- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/web/app/cad/scene/wrappers/unmanagedSceneObject.js b/web/app/cad/scene/wrappers/unmanagedSceneObject.js index c175dd42..b7283d6e 100644 --- a/web/app/cad/scene/wrappers/unmanagedSceneObject.js +++ b/web/app/cad/scene/wrappers/unmanagedSceneObject.js @@ -47,10 +47,12 @@ export class UnmanagedSceneSolid extends SceneSolid { tr = tr[0]; } tr.forEach(p => geom.vertices.push(vec(p))); - if (!normales && faceData.surface.TYPE === 'PLANE') { - normales = vec(faceData.surface.normal); - if (faceData.inverted) { - normales.negate(); + if (!normales) { + if (faceData.surface.normal) { + normales = vec(faceData.surface.normal); + if (faceData.inverted) { + normales.negate(); + } } } else { if (faceData.inverted) { @@ -61,12 +63,19 @@ export class UnmanagedSceneSolid extends SceneSolid { } } } - - let testNormal = Array.isArray(normales) ? normalizedSumOfTHREE(normales) : normales; let indices = [off, off + 1, off + 2]; let trNormal = normalOfCCWSeqTHREE(indices.map(i => geom.vertices[i])); - if (testNormal.dot(trNormal) < 0) { - indices.reverse(); + if (normales) { + let testNormal = Array.isArray(normales) ? normalizedSumOfTHREE(normales) : normales; + if (testNormal.dot(trNormal) < 0) { + indices.reverse(); + } + } else { + normales = trNormal; + if (faceData.inverted) { + normales.negate(); + indices.reverse(); + } } let [a, b, c] = indices; diff --git a/web/app/cad/sketch/sketchModel.js b/web/app/cad/sketch/sketchModel.js index 9fdb8284..fa4f3434 100644 --- a/web/app/cad/sketch/sketchModel.js +++ b/web/app/cad/sketch/sketchModel.js @@ -27,7 +27,7 @@ class SketchPrimitive { } isCurve() { - return this.constructor.name != 'Segment'; + return this.constructor.name !== 'Segment'; } toNurbs(plane) {