7 Commits
v2 ... 1.2.0

Author SHA1 Message Date
xiefan
5bccd97ab1 修复选择无法取消 2020-04-03 10:32:08 +08:00
xiefan
caa39923dd 调整选择板代码 2020-04-03 10:17:02 +08:00
xiefan
35347e004e 调整板材选择 2020-04-02 17:24:43 +08:00
xiefan
2fd1b48d32 调整包配置 2020-04-01 16:25:47 +08:00
xiefan
a10bb71035 调整threejs类型 2020-04-01 16:12:28 +08:00
xiefan
1fbd3d6563 更新package配置,移除弃用文件 2020-04-01 15:47:30 +08:00
xiefan
fc4c46d280 新增通过ID选中板材 2020-04-01 14:15:29 +08:00
8 changed files with 76 additions and 32 deletions

19
package-lock.json generated
View File

@@ -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": {

View File

@@ -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"
}

View File

@@ -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);
}

View File

@@ -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();

View File

@@ -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;
}

View File

@@ -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;
}
}
})
}
}
}

View File

@@ -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