新增通过ID选中板材
This commit is contained in:
		@@ -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",
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										28
									
								
								src/Utils.ts
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								src/Utils.ts
									
									
									
									
									
								
							@@ -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;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user