新增通过ID选中板材
This commit is contained in:
		@@ -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",
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										28
									
								
								src/Utils.ts
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								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<number, number>,
 | 
			
		||||
    meshBlockMap: Map<number, number>
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
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;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -200,13 +200,24 @@ export function createTemplateBoard(brDataList: any[])
 | 
			
		||||
{
 | 
			
		||||
    let meshs = [];
 | 
			
		||||
    let edgesa = [];
 | 
			
		||||
 | 
			
		||||
    let relations = {
 | 
			
		||||
        blockMeshMap: new Map<number, number>(),
 | 
			
		||||
        meshBlockMap: new Map<number, number>()
 | 
			
		||||
    };
 | 
			
		||||
    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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user