import { Object3D } from "three"; import { createTemplateBoard, DrawDimension, Viewer, selectMaterial } from "."; function dispose(m: Object3D) { //@ts-ignore if (m.geometry) //@ts-ignore m.geometry.dispose(); 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) { dispose(view.m_Scene); view.m_Scene.children.length = 0; } if (data.length === 0) return; //加板 let { meshs, edgesa, relations } = createTemplateBoard(data); blockMeshs = meshs; dataRelations = relations; //加标注 let dims = DrawDimension(meshs); view.m_Scene.add(...meshs); view.m_Scene.add(...edgesa); view.m_Scene.add(...dims); view.ViewToSwiso(); 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; } } }