From fc4c46d2806d4f24d223045f292afee9aba54319 Mon Sep 17 00:00:00 2001 From: xiefan <1789784602@qq.com> Date: Wed, 1 Apr 2020 14:15:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=80=9A=E8=BF=87ID=E9=80=89?= =?UTF-8?q?=E4=B8=AD=E6=9D=BF=E6=9D=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 3 +-- src/Utils.ts | 28 ++++++++++++++++++++++++++-- src/createBoard.ts | 13 ++++++++++++- 3 files changed, 39 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index e41084a..e560fc2 100644 --- a/package.json +++ b/package.json @@ -2,8 +2,7 @@ "name": "cadview", "version": "1.1.9", "description": "", - "main": "dist/index.js", - "types": "dist/index.d.ts", + "main": "src/index.ts", "private": true, "scripts": { "build": "tsc", diff --git a/src/Utils.ts b/src/Utils.ts index dec09e0..16cbfc8 100644 --- a/src/Utils.ts +++ b/src/Utils.ts @@ -1,5 +1,5 @@ import { Object3D } from "three"; -import { createTemplateBoard, DrawDimension, Viewer } from "."; +import { createTemplateBoard, DrawDimension, Viewer, selectMaterial } from "."; function dispose(m: Object3D) { @@ -11,6 +11,13 @@ function dispose(m: Object3D) m.children.forEach(o => dispose(o)); } + +let blockMeshs: THREE.Mesh[]; +let dataRelations: { + blockMeshMap: Map, + meshBlockMap: Map +}; + export function LoadBoard(view: Viewer, data: any[], clear: boolean = true) { if (clear) @@ -21,7 +28,11 @@ export function LoadBoard(view: Viewer, data: any[], clear: boolean = true) if (data.length === 0) return; //加板 - let { meshs, edgesa } = createTemplateBoard(data); + let { meshs, edgesa, relations } = createTemplateBoard(data); + + blockMeshs = meshs; + dataRelations = relations; + //加标注 let dims = DrawDimension(meshs); @@ -33,3 +44,16 @@ export function LoadBoard(view: Viewer, data: any[], clear: boolean = true) view.ZoomAll(); view.Zoom(1.1); } + +export function SelectBlock(dataID: number) +{ + if (dataRelations.blockMeshMap.has(dataID)) + { + let meshId = dataRelations.blockMeshMap.get(dataID); + let mesh = blockMeshs.find(i => i.id == meshId); + if (mesh) + { + mesh.material = selectMaterial; + } + } +} diff --git a/src/createBoard.ts b/src/createBoard.ts index 047706b..d559a62 100644 --- a/src/createBoard.ts +++ b/src/createBoard.ts @@ -200,13 +200,24 @@ export function createTemplateBoard(brDataList: any[]) { let meshs = []; let edgesa = []; + + let relations = { + blockMeshMap: new Map(), + meshBlockMap: new Map() + }; for (let d of brDataList) { let { mesh, edges } = createBoard(d); meshs.push(mesh); edgesa.push(...edges); + + if (d['DataID']) + { + relations.blockMeshMap.set(d['DataID'], mesh.id); + relations.meshBlockMap.set(mesh.id, d['DataID']); + } } - return { meshs, edgesa }; + return { meshs, edgesa, relations }; } export function createEdge(geo: Geometry): LineSegments