diff --git a/dist/Material.d.ts b/dist/Material.d.ts index 39afb83..3ed908e 100644 --- a/dist/Material.d.ts +++ b/dist/Material.d.ts @@ -1,3 +1,4 @@ import { MeshBasicMaterial, LineBasicMaterial } from "three"; export declare let boardMaterial: MeshBasicMaterial; +export declare let selectMaterial: MeshBasicMaterial; export declare let edgeMaterial: LineBasicMaterial; diff --git a/dist/Material.js b/dist/Material.js index 8e06455..c3d7ebb 100644 --- a/dist/Material.js +++ b/dist/Material.js @@ -8,6 +8,12 @@ exports.boardMaterial = new three_1.MeshBasicMaterial({ polygonOffsetFactor: 1, polygonOffsetUnits: 1 }); +exports.selectMaterial = new three_1.MeshBasicMaterial({ + color: new three_1.Color(0.1, 0.5, 0.5), + polygonOffset: true, + polygonOffsetFactor: 1, + polygonOffsetUnits: 1 +}); //线框的材质 exports.edgeMaterial = new three_1.LineBasicMaterial({ linewidth: 2, color: new three_1.Color(0, 0, 0) }); //# sourceMappingURL=Material.js.map \ No newline at end of file diff --git a/dist/Material.js.map b/dist/Material.js.map index 4ba7f6c..dde979c 100644 --- a/dist/Material.js.map +++ b/dist/Material.js.map @@ -1 +1 @@ -{"version":3,"file":"Material.js","sourceRoot":"","sources":["../src/Material.ts"],"names":[],"mappings":";;AAAA,iCAAoE;AAEpE,uBAAuB;AACZ,QAAA,aAAa,GAAG,IAAI,yBAAiB,CAAC;IAC7C,KAAK,EAAE,IAAI,aAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAC/B,aAAa,EAAE,IAAI;IACnB,mBAAmB,EAAE,CAAC;IACtB,kBAAkB,EAAE,CAAC;CACxB,CAAC,CAAC;AAEH,OAAO;AACI,QAAA,YAAY,GAAG,IAAI,yBAAiB,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,aAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"Material.js","sourceRoot":"","sources":["../src/Material.ts"],"names":[],"mappings":";;AAAA,iCAAoE;AAEpE,uBAAuB;AACZ,QAAA,aAAa,GAAG,IAAI,yBAAiB,CAAC;IAC7C,KAAK,EAAE,IAAI,aAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAC/B,aAAa,EAAE,IAAI;IACnB,mBAAmB,EAAE,CAAC;IACtB,kBAAkB,EAAE,CAAC;CACxB,CAAC,CAAC;AAEQ,QAAA,cAAc,GAAG,IAAI,yBAAiB,CAAC;IAC9C,KAAK,EAAE,IAAI,aAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAC/B,aAAa,EAAE,IAAI;IACnB,mBAAmB,EAAE,CAAC;IACtB,kBAAkB,EAAE,CAAC;CACxB,CAAC,CAAC;AAEH,OAAO;AACI,QAAA,YAAY,GAAG,IAAI,yBAAiB,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,aAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC"} \ No newline at end of file diff --git a/dist/Viewer.js b/dist/Viewer.js index 5940540..1a8bcd6 100644 --- a/dist/Viewer.js +++ b/dist/Viewer.js @@ -5,7 +5,6 @@ const CameraUpdate_1 = require("./CameraUpdate"); const GeUtils_1 = require("./GeUtils"); const PlaneExt_1 = require("./PlaneExt"); const _1 = require("."); -const three_1 = require("three"); class Viewer { //构造 constructor(canvasContainer) { @@ -38,8 +37,6 @@ class Viewer { window.addEventListener("resize", () => { this.OnSize(); }); - //选中 - let selectMaterial = new three_1.MeshBasicMaterial({ color: new three_1.Color(0.1, 0.5, 0.5) }); let oldMesh; this.m_Render.domElement.addEventListener("mousemove", (e) => { let mesh = _1.PointPick(this, e.offsetX, e.offsetY); @@ -47,9 +44,9 @@ class Viewer { oldMesh.material = _1.boardMaterial; if (mesh) { oldMesh = mesh; - mesh.material = selectMaterial; - this.m_bNeedUpdate = true; + mesh.material = _1.selectMaterial; } + this.m_bNeedUpdate = true; }); } //初始化render diff --git a/dist/Viewer.js.map b/dist/Viewer.js.map index 92bb169..767f7ce 100644 --- a/dist/Viewer.js.map +++ b/dist/Viewer.js.map @@ -1 +1 @@ -{"version":3,"file":"Viewer.js","sourceRoot":"","sources":["../src/Viewer.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Viewer.js","sourceRoot":"","sources":["../src/Viewer.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/createBoard.js b/dist/createBoard.js index 195f8b9..3df1af6 100644 --- a/dist/createBoard.js +++ b/dist/createBoard.js @@ -109,13 +109,28 @@ function createBoard(boardData) { //外边. let edges = [createEdge(ext)]; //差集 - if (boardData["SubBoardLocal"].length > 0) { - let subBoardList = boardData["SubBoardLocal"].map(d => createBoard(d)); + if (checkObjectArray(boardData, "SubBoardLocal") + || checkObjectArray(boardData, "Drillings")) { let thisCsg = new ThreeCSG_1.ThreeBSP(ext); - for (let br of subBoardList) { - edges.push(...br.edges); - let subCsg = new ThreeCSG_1.ThreeBSP(br.mesh); - thisCsg = thisCsg.subtract(subCsg); + if (boardData["SubBoardLocal"]) { + let subBoardList = boardData["SubBoardLocal"].map(d => createBoard(d)); + for (let br of subBoardList) { + edges.push(...br.edges); + let subCsg = new ThreeCSG_1.ThreeBSP(br.mesh); + thisCsg = thisCsg.subtract(subCsg); + } + } + if (boardData["Drillings"]) { + let dris = boardData["Drillings"]; + for (let dri of dris) { + let geo = new three_1.CylinderGeometry(dri.r, dri.r, dri.h, 32); + geo.rotateX(Math.PI * 0.5); + geo.translate(dri.x, dri.y, 0); + geo.applyMatrix(boardMat); + edges.push(createEdge(geo)); + let subCsg = new ThreeCSG_1.ThreeBSP(geo); + thisCsg = thisCsg.subtract(subCsg); + } } ext = thisCsg.toGeometry(); } @@ -125,6 +140,9 @@ function createBoard(boardData) { return { mesh, edges }; } exports.createBoard = createBoard; +function checkObjectArray(obj, key) { + return obj[key] && obj[key].length > 0; +} function createTemplateBoard(brDataList) { let meshs = []; let edgesa = []; diff --git a/dist/createBoard.js.map b/dist/createBoard.js.map index e63b43b..3ce9dbb 100644 --- a/dist/createBoard.js.map +++ b/dist/createBoard.js.map @@ -1 +1 @@ -{"version":3,"file":"createBoard.js","sourceRoot":"","sources":["../src/createBoard.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"createBoard.js","sourceRoot":"","sources":["../src/createBoard.ts"],"names":[],"mappings":";;AAAA,+BAA+B;AAC/B,iCAAiF;AACjF,uCAAkC;AAClC,yCAAyD;AACzD,yCAAuC;AACvC,yCAAsC;AACtC,UAAU;AACV;IAQI,YAAY,EAAiB,EAAE,EAAiB,EAAE,GAAW;QAEzD,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;QAE7B,IAAI,GAAG,GAAkB,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QACvB,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;QACnC,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;QAEpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAElC,eAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QAEhC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;QACvD,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;QACrD,IAAI,GAAG,GAAG,CAAC,EACX;YACI,gBAAgB;YAChB,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC;SAC3B;IACL,CAAC;CACJ;AApCD,sBAoCC;AAED,kBAAkB;AAClB,oBAA2B,GAAc,EAAE,IAAc,EAAE,QAAgB;IAEvE,IAAI,KAAK,GAAG,QAAQ,IAAI,IAAI,aAAK,EAAE,CAAC;IACpC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,IAAI,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAErB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EACvC;QACI,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAChB;YACI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;SACnC;aAED;YACI,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI;YACJ,mDAAmD;YACnD,iEAAiE;YACjE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;YACxB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SACxF;KACJ;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AA1BD,gCA0BC;AACD,gBAAuB,IAAY;IAE/B,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,CAAC;AAHD,wBAGC;AAED,YAAY;AACZ,qBAA4B,SAAiB;IAEzC,IAAI,GAAG,GAAoB,IAAI,KAAK,EAAE,CAAC;IACvC,IAAI,IAAI,GAAa,IAAI,KAAK,EAAE,CAAC;IACjC,IAAI,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAElC,IAAI,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAEjC,IAAI,QAAQ,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;IACnC,IAAI,MAAM,GAAkB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;IAChD,cAAc;IACd;QACI,IAAI,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,IAAI,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,IAAI,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,IAAI,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;QAE3C,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/B,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;KACrC;IAED,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EACxC;YACI,IAAI,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS;gBAC3B,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC5B,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3B;SAEL;QACI,IAAI,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC5B,GAAG,CAAC,IAAI,CAAC,IAAI,eAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EACtB,IAAI,eAAO,CAAC,KAAK,EAAE,CAAC,CAAC,EACrB,IAAI,eAAO,CAAC,KAAK,EAAE,MAAM,CAAC,EAC1B,IAAI,eAAO,CAAC,CAAC,EAAE,MAAM,CAAC,EACtB,IAAI,eAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CACpB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAC5B;IAED,IAAI,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC/B,IAAI,eAAe,GAAG;QAClB,KAAK,EAAE,CAAC;QACR,YAAY,EAAE,KAAK;QACnB,MAAM,EAAE,WAAW;KACtB,CAAC;IAEF,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,eAAe,CAAC,EAAE,EAAE,eAAe,CAAa,CAAC;IACrE,GAAG,CAAC,qBAAqB,EAAE,CAAC;IAC5B,GAAG,CAAC,kBAAkB,EAAE,CAAC;IACzB,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAA;IACjC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAE1B,KAAK;IACL,IAAI,KAAK,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAG9B,IAAI;IACJ,IAAI,gBAAgB,CAAC,SAAS,EAAE,eAAe,CAAC;WACzC,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,EAC/C;QACI,IAAI,OAAO,GAAG,IAAI,mBAAQ,CAAC,GAAG,CAAC,CAAC;QAEhC,IAAI,SAAS,CAAC,eAAe,CAAC,EAC9B;YACI,IAAI,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,KAAK,IAAI,EAAE,IAAI,YAAY,EAC3B;gBACI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;gBACxB,IAAI,MAAM,GAAG,IAAI,mBAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;gBACnC,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aACtC;SACJ;QACD,IAAI,SAAS,CAAC,WAAW,CAAC,EAC1B;YACI,IAAI,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;YAClC,KAAK,IAAI,GAAG,IAAI,IAAI,EACpB;gBACI,IAAI,GAAG,GAAG,IAAI,wBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACxD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;gBAC3B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC/B,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAE1B,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;gBAE5B,IAAI,MAAM,GAAG,IAAI,mBAAQ,CAAC,GAAG,CAAC,CAAC;gBAC/B,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aACtC;SACJ;QACD,GAAG,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;KAC9B;IAED,IAAI,SAAS,CAAC,WAAW,CAAC,KAAK,KAAK;QAChC,oBAAS,CAAC,GAAG,CAAC,CAAC;IAEnB,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,wBAAa,CAAC,CAAC;IAC9C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC3B,CAAC;AAvGD,kCAuGC;AAED,0BAA0B,GAAQ,EAAE,GAAW;IAE3C,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED,6BAAoC,UAAiB;IAEjD,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,IAAI,UAAU,EACxB;QACI,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;KACzB;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC;AAXD,kDAWC;AAED,oBAA2B,GAAa;IAEpC,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC3C,OAAO,IAAI,oBAAY,CAAC,IAAI,EAAE,uBAAY,CAAC,CAAC;AAChD,CAAC;AAJD,gCAIC"} \ No newline at end of file diff --git a/src/Material.ts b/src/Material.ts index 53b5316..b30fff6 100644 --- a/src/Material.ts +++ b/src/Material.ts @@ -8,6 +8,13 @@ export let boardMaterial = new MeshBasicMaterial({ polygonOffsetUnits: 1 }); +export let selectMaterial = new MeshBasicMaterial({ + color: new Color(0.1, 0.5, 0.5), + polygonOffset: true, + polygonOffsetFactor: 1, // positive value pushes polygon further away + polygonOffsetUnits: 1 +}); + //线框的材质 export let edgeMaterial = new LineBasicMaterial({ linewidth: 2, color: new Color(0, 0, 0) }); diff --git a/src/Viewer.ts b/src/Viewer.ts index 3d736ad..ccadb95 100644 --- a/src/Viewer.ts +++ b/src/Viewer.ts @@ -3,7 +3,7 @@ import * as THREE from "three"; import { CameraUpdate } from "./CameraUpdate"; import { GetBox, GetBoxArr, cZeroVec } from "./GeUtils"; import { PlaneExt } from "./PlaneExt"; -import { PointPick, boardMaterial, CameraControls } from "."; +import { PointPick, boardMaterial, CameraControls, selectMaterial } from "."; import { MeshBasicMaterial, Color, Mesh } from "three"; export class Viewer @@ -32,9 +32,6 @@ export class Viewer this.OnSize(); }); - //选中 - let selectMaterial = new MeshBasicMaterial({ color: new Color(0.1, 0.5, 0.5) }); - let oldMesh: Mesh; this.m_Render.domElement.addEventListener("mousemove", (e: MouseEvent) => { @@ -45,8 +42,8 @@ export class Viewer { oldMesh = mesh; mesh.material = selectMaterial; - this.m_bNeedUpdate = true; } + this.m_bNeedUpdate = true; }) } diff --git a/src/createBoard.ts b/src/createBoard.ts index f962376..94d6e57 100644 --- a/src/createBoard.ts +++ b/src/createBoard.ts @@ -1,5 +1,5 @@ import * as THREE from 'three'; -import { Geometry, LineSegments, Shape, Vector2 } from 'three'; +import { Geometry, LineSegments, Shape, Vector2, CylinderGeometry } from 'three'; import { polar } from './GeUtils'; import { boardMaterial, edgeMaterial } from './Material'; import { RotateUVs } from './RotateUV'; @@ -90,7 +90,6 @@ export function createBoard(boardData: object) let matInv: THREE.Matrix4 = new THREE.Matrix4(); //InitBoardMat { - let xD = getVec(boardData["XVec"]); let yD = getVec(boardData["YVec"]); let ZD = getVec(boardData["ZVec"]); @@ -139,17 +138,39 @@ export function createBoard(boardData: object) //外边. let edges = [createEdge(ext)]; + + //差集 - if (boardData["SubBoardLocal"].length > 0) + if (checkObjectArray(boardData, "SubBoardLocal") + || checkObjectArray(boardData, "Drillings")) { - let subBoardList = boardData["SubBoardLocal"].map(d => createBoard(d)); let thisCsg = new ThreeBSP(ext); - for (let br of subBoardList) + if (boardData["SubBoardLocal"]) { - edges.push(...br.edges); - let subCsg = new ThreeBSP(br.mesh); - thisCsg = thisCsg.subtract(subCsg); + let subBoardList = boardData["SubBoardLocal"].map(d => createBoard(d)); + for (let br of subBoardList) + { + edges.push(...br.edges); + let subCsg = new ThreeBSP(br.mesh); + thisCsg = thisCsg.subtract(subCsg); + } + } + if (boardData["Drillings"]) + { + let dris = boardData["Drillings"]; + for (let dri of dris) + { + let geo = new CylinderGeometry(dri.r, dri.r, dri.h, 32); + geo.rotateX(Math.PI * 0.5); + geo.translate(dri.x, dri.y, 0); + geo.applyMatrix(boardMat); + + edges.push(createEdge(geo)); + + let subCsg = new ThreeBSP(geo); + thisCsg = thisCsg.subtract(subCsg); + } } ext = thisCsg.toGeometry(); } @@ -161,6 +182,11 @@ export function createBoard(boardData: object) return { mesh, edges }; } +function checkObjectArray(obj: any, key: string) +{ + return obj[key] && obj[key].length > 0; +} + export function createTemplateBoard(brDataList: any[]) { let meshs = [];