Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
5bccd97ab1 | ||
![]() |
caa39923dd | ||
![]() |
35347e004e | ||
![]() |
2fd1b48d32 | ||
![]() |
a10bb71035 | ||
![]() |
1fbd3d6563 | ||
![]() |
fc4c46d280 |
19
package-lock.json
generated
19
package-lock.json
generated
@@ -2305,7 +2305,8 @@
|
||||
"ansi-regex": {
|
||||
"version": "2.1.1",
|
||||
"bundled": true,
|
||||
"dev": true
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"aproba": {
|
||||
"version": "1.2.0",
|
||||
@@ -2720,7 +2721,8 @@
|
||||
"safe-buffer": {
|
||||
"version": "5.1.1",
|
||||
"bundled": true,
|
||||
"dev": true
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"safer-buffer": {
|
||||
"version": "2.1.2",
|
||||
@@ -2776,6 +2778,7 @@
|
||||
"version": "3.0.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"ansi-regex": "^2.0.0"
|
||||
}
|
||||
@@ -2819,12 +2822,14 @@
|
||||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"bundled": true,
|
||||
"dev": true
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"yallist": {
|
||||
"version": "3.0.2",
|
||||
"bundled": true,
|
||||
"dev": true
|
||||
"dev": true,
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -5690,9 +5695,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"typescript": {
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.3.tgz",
|
||||
"integrity": "sha512-+81MUSyX+BaSo+u2RbozuQk/UWx6hfG0a5gHu4ANEM4sU96XbuIyAB+rWBW1u70c6a5QuZfuYICn3s2UjuHUpA==",
|
||||
"version": "3.7.5",
|
||||
"resolved": "http://r.cnpmjs.org/typescript/download/typescript-3.7.5.tgz",
|
||||
"integrity": "sha1-BpLiH2X9QQi5MwI4qsEd0uF3oa4=",
|
||||
"dev": true
|
||||
},
|
||||
"uglify-js": {
|
||||
|
@@ -1,9 +1,8 @@
|
||||
{
|
||||
"name": "cadview",
|
||||
"version": "1.1.9",
|
||||
"version": "1.2.0",
|
||||
"description": "",
|
||||
"main": "dist/index.js",
|
||||
"types": "dist/index.d.ts",
|
||||
"main": "src/index.ts",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "tsc",
|
||||
@@ -20,7 +19,6 @@
|
||||
"devDependencies": {
|
||||
"@types/hard-source-webpack-plugin": "^0.9.0",
|
||||
"@types/node": "^10.11.7",
|
||||
"@types/three": "^0.92.25",
|
||||
"@types/uglifyjs-webpack-plugin": "^1.1.0",
|
||||
"@types/webpack": "^4.4.16",
|
||||
"@types/webpack-dev-server": "^3.1.1",
|
||||
@@ -32,7 +30,7 @@
|
||||
"html-webpack-plugin": "^3.2.0",
|
||||
"ts-loader": "^5.2.1",
|
||||
"ts-node": "^7.0.1",
|
||||
"typescript": "^3.1.3",
|
||||
"typescript": "^3.7.5",
|
||||
"uglifyjs-webpack-plugin": "^2.0.1",
|
||||
"webpack": "^4.20.2",
|
||||
"webpack-cli": "^3.1.2",
|
||||
@@ -40,6 +38,7 @@
|
||||
"webpack-merge": "^4.1.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/three": "^0.92.25",
|
||||
"three": "^0.95.0",
|
||||
"wolfy87-eventemitter": "^5.2.5"
|
||||
}
|
||||
|
@@ -1,9 +1,9 @@
|
||||
import * as THREE from 'three';
|
||||
import { Vector3, Line3 } from "three";
|
||||
import { Vector3, Line3, Plane } from "three";
|
||||
|
||||
export class PlaneExt extends THREE.Plane
|
||||
export class PlaneExt extends Plane
|
||||
{
|
||||
constructor(normal?: THREE.Vector3, constant?: number)
|
||||
constructor(normal?: Vector3, constant?: number)
|
||||
{
|
||||
super(normal, constant);
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { Font, FontLoader, Mesh, ShapeGeometry, Vector3 } from "three";
|
||||
import { Font, FontLoader, Mesh, ShapeGeometry, Vector3, Shape } from "three";
|
||||
import { ColorMaterial } from "./ColorPalette";
|
||||
import { MoveMatrix } from "./GeUtils";
|
||||
|
||||
@@ -30,7 +30,7 @@ export class DbText extends Mesh
|
||||
{
|
||||
let font = FontLoaderUtil.Load();
|
||||
|
||||
let shapes: THREE.Shape[] = font.generateShapes(str, height, 0.1);
|
||||
let shapes: Shape[] = font.generateShapes(str, height, 0.1);
|
||||
let geometry = new ShapeGeometry(shapes);
|
||||
|
||||
geometry.computeBoundingBox();
|
||||
|
@@ -1,5 +1,5 @@
|
||||
import { Object3D } from "three";
|
||||
import { createTemplateBoard, DrawDimension, Viewer } from ".";
|
||||
import { Object3D, Mesh } from "three";
|
||||
import { createTemplateBoard, DrawDimension, Viewer, selectMaterial } from ".";
|
||||
|
||||
function dispose(m: Object3D)
|
||||
{
|
||||
@@ -21,7 +21,8 @@ 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);
|
||||
|
||||
//加标注
|
||||
let dims = DrawDimension(meshs);
|
||||
|
||||
@@ -32,4 +33,6 @@ export function LoadBoard(view: Viewer, data: any[], clear: boolean = true)
|
||||
view.ViewToSwiso();
|
||||
view.ZoomAll();
|
||||
view.Zoom(1.1);
|
||||
|
||||
return relations;
|
||||
}
|
||||
|
@@ -37,18 +37,9 @@ export class Viewer
|
||||
this.OnSize();
|
||||
});
|
||||
|
||||
let oldMesh: Mesh;
|
||||
this.m_Render.domElement.addEventListener("mousemove", (e: MouseEvent) =>
|
||||
{
|
||||
let mesh = PointPick(this, e.offsetX, e.offsetY);
|
||||
if (oldMesh)
|
||||
oldMesh.material = boardMaterial;
|
||||
if (mesh && mesh.material !== ColorMaterial.GetBasicMaterial(1))
|
||||
{
|
||||
oldMesh = mesh;
|
||||
mesh.material = selectMaterial;
|
||||
}
|
||||
this.m_bNeedUpdate = true;
|
||||
this.SelectByPoint(e.offsetX, e.offsetY);
|
||||
})
|
||||
}
|
||||
|
||||
@@ -196,4 +187,40 @@ export class Viewer
|
||||
this.m_Camera.LookAt(new Vector3(1, 1, -1));
|
||||
this.m_bNeedUpdate = true;
|
||||
}
|
||||
|
||||
oldMesh: Mesh;
|
||||
SelectByPoint(x: number, y: number)
|
||||
{
|
||||
let mesh = PointPick(this, x, y);
|
||||
if (this.oldMesh)
|
||||
this.oldMesh.material = boardMaterial;
|
||||
if (mesh && mesh.material !== ColorMaterial.GetBasicMaterial(1))
|
||||
{
|
||||
this.oldMesh = mesh;
|
||||
mesh.material = selectMaterial;
|
||||
}
|
||||
this.m_bNeedUpdate = true;
|
||||
}
|
||||
SelectBlock(blockMeshMap: Map<number, number>, dataID: number)
|
||||
{
|
||||
if (blockMeshMap.has(dataID))
|
||||
{
|
||||
let meshId = blockMeshMap.get(dataID);
|
||||
if (this.oldMesh)
|
||||
this.oldMesh.material = boardMaterial;
|
||||
this.m_Scene.children.forEach(obj =>
|
||||
{
|
||||
if (obj instanceof Mesh)
|
||||
{
|
||||
if (obj.id == meshId)
|
||||
{
|
||||
this.oldMesh = obj;
|
||||
obj.material = selectMaterial;
|
||||
this.m_bNeedUpdate = true;
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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
|
||||
|
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user