2018-07-02 12:07:16 +08:00
|
|
|
import { Object3D } from "three";
|
2020-04-01 14:15:29 +08:00
|
|
|
import { createTemplateBoard, DrawDimension, Viewer, selectMaterial } from ".";
|
2018-05-24 17:13:23 +08:00
|
|
|
|
2018-07-02 12:07:16 +08:00
|
|
|
function dispose(m: Object3D)
|
2018-05-24 17:13:23 +08:00
|
|
|
{
|
2018-07-02 12:07:16 +08:00
|
|
|
//@ts-ignore
|
|
|
|
if (m.geometry)
|
|
|
|
//@ts-ignore
|
|
|
|
m.geometry.dispose();
|
|
|
|
|
|
|
|
m.children.forEach(o => dispose(o));
|
|
|
|
}
|
|
|
|
|
2020-04-01 14:15:29 +08:00
|
|
|
|
|
|
|
let blockMeshs: THREE.Mesh[];
|
|
|
|
let dataRelations: {
|
|
|
|
blockMeshMap: Map<number, number>,
|
|
|
|
meshBlockMap: Map<number, number>
|
|
|
|
};
|
|
|
|
|
2018-07-02 12:07:16 +08:00
|
|
|
export function LoadBoard(view: Viewer, data: any[], clear: boolean = true)
|
|
|
|
{
|
|
|
|
if (clear)
|
2018-05-24 17:13:23 +08:00
|
|
|
{
|
2018-07-02 12:07:16 +08:00
|
|
|
dispose(view.m_Scene);
|
|
|
|
view.m_Scene.children.length = 0;
|
|
|
|
}
|
2018-05-24 17:13:23 +08:00
|
|
|
|
2018-07-02 12:07:16 +08:00
|
|
|
if (data.length === 0) return;
|
2018-05-24 17:13:23 +08:00
|
|
|
//加板
|
2020-04-01 14:15:29 +08:00
|
|
|
let { meshs, edgesa, relations } = createTemplateBoard(data);
|
|
|
|
|
|
|
|
blockMeshs = meshs;
|
|
|
|
dataRelations = relations;
|
|
|
|
|
2018-05-24 17:13:23 +08:00
|
|
|
//加标注
|
2018-05-25 11:09:15 +08:00
|
|
|
let dims = DrawDimension(meshs);
|
2018-05-24 17:13:23 +08:00
|
|
|
|
2018-05-25 11:09:15 +08:00
|
|
|
view.m_Scene.add(...meshs);
|
|
|
|
view.m_Scene.add(...edgesa);
|
2018-05-24 17:13:23 +08:00
|
|
|
view.m_Scene.add(...dims);
|
|
|
|
|
|
|
|
view.ViewToSwiso();
|
|
|
|
view.ZoomAll();
|
|
|
|
view.Zoom(1.1);
|
|
|
|
}
|
2020-04-01 14:15:29 +08:00
|
|
|
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|