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