新增通过ID选中板材

This commit is contained in:
xiefan 2020-04-01 14:15:29 +08:00
parent d79d759091
commit fc4c46d280
3 changed files with 39 additions and 5 deletions

View File

@ -2,8 +2,7 @@
"name": "cadview", "name": "cadview",
"version": "1.1.9", "version": "1.1.9",
"description": "", "description": "",
"main": "dist/index.js", "main": "src/index.ts",
"types": "dist/index.d.ts",
"private": true, "private": true,
"scripts": { "scripts": {
"build": "tsc", "build": "tsc",

View File

@ -1,5 +1,5 @@
import { Object3D } from "three"; import { Object3D } from "three";
import { createTemplateBoard, DrawDimension, Viewer } from "."; import { createTemplateBoard, DrawDimension, Viewer, selectMaterial } from ".";
function dispose(m: Object3D) function dispose(m: Object3D)
{ {
@ -11,6 +11,13 @@ function dispose(m: Object3D)
m.children.forEach(o => dispose(o)); m.children.forEach(o => dispose(o));
} }
let blockMeshs: THREE.Mesh[];
let dataRelations: {
blockMeshMap: Map<number, number>,
meshBlockMap: Map<number, number>
};
export function LoadBoard(view: Viewer, data: any[], clear: boolean = true) export function LoadBoard(view: Viewer, data: any[], clear: boolean = true)
{ {
if (clear) if (clear)
@ -21,7 +28,11 @@ export function LoadBoard(view: Viewer, data: any[], clear: boolean = true)
if (data.length === 0) return; if (data.length === 0) return;
//加板 //加板
let { meshs, edgesa } = createTemplateBoard(data); let { meshs, edgesa, relations } = createTemplateBoard(data);
blockMeshs = meshs;
dataRelations = relations;
//加标注 //加标注
let dims = DrawDimension(meshs); let dims = DrawDimension(meshs);
@ -33,3 +44,16 @@ export function LoadBoard(view: Viewer, data: any[], clear: boolean = true)
view.ZoomAll(); view.ZoomAll();
view.Zoom(1.1); 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;
}
}
}

View File

@ -200,13 +200,24 @@ export function createTemplateBoard(brDataList: any[])
{ {
let meshs = []; let meshs = [];
let edgesa = []; let edgesa = [];
let relations = {
blockMeshMap: new Map<number, number>(),
meshBlockMap: new Map<number, number>()
};
for (let d of brDataList) for (let d of brDataList)
{ {
let { mesh, edges } = createBoard(d); let { mesh, edges } = createBoard(d);
meshs.push(mesh); meshs.push(mesh);
edgesa.push(...edges); 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 export function createEdge(geo: Geometry): LineSegments