7 Commits
1.4.4 ... 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": { "ansi-regex": {
"version": "2.1.1", "version": "2.1.1",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"aproba": { "aproba": {
"version": "1.2.0", "version": "1.2.0",
@@ -2720,7 +2721,8 @@
"safe-buffer": { "safe-buffer": {
"version": "5.1.1", "version": "5.1.1",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"safer-buffer": { "safer-buffer": {
"version": "2.1.2", "version": "2.1.2",
@@ -2776,6 +2778,7 @@
"version": "3.0.1", "version": "3.0.1",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"ansi-regex": "^2.0.0" "ansi-regex": "^2.0.0"
} }
@@ -2819,12 +2822,14 @@
"wrappy": { "wrappy": {
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"yallist": { "yallist": {
"version": "3.0.2", "version": "3.0.2",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
} }
} }
}, },
@@ -5690,9 +5695,9 @@
"dev": true "dev": true
}, },
"typescript": { "typescript": {
"version": "3.1.3", "version": "3.7.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.3.tgz", "resolved": "http://r.cnpmjs.org/typescript/download/typescript-3.7.5.tgz",
"integrity": "sha512-+81MUSyX+BaSo+u2RbozuQk/UWx6hfG0a5gHu4ANEM4sU96XbuIyAB+rWBW1u70c6a5QuZfuYICn3s2UjuHUpA==", "integrity": "sha1-BpLiH2X9QQi5MwI4qsEd0uF3oa4=",
"dev": true "dev": true
}, },
"uglify-js": { "uglify-js": {

View File

@@ -1,9 +1,8 @@
{ {
"name": "cadview", "name": "cadview",
"version": "1.1.9", "version": "1.2.0",
"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",
@@ -20,7 +19,6 @@
"devDependencies": { "devDependencies": {
"@types/hard-source-webpack-plugin": "^0.9.0", "@types/hard-source-webpack-plugin": "^0.9.0",
"@types/node": "^10.11.7", "@types/node": "^10.11.7",
"@types/three": "^0.92.25",
"@types/uglifyjs-webpack-plugin": "^1.1.0", "@types/uglifyjs-webpack-plugin": "^1.1.0",
"@types/webpack": "^4.4.16", "@types/webpack": "^4.4.16",
"@types/webpack-dev-server": "^3.1.1", "@types/webpack-dev-server": "^3.1.1",
@@ -32,7 +30,7 @@
"html-webpack-plugin": "^3.2.0", "html-webpack-plugin": "^3.2.0",
"ts-loader": "^5.2.1", "ts-loader": "^5.2.1",
"ts-node": "^7.0.1", "ts-node": "^7.0.1",
"typescript": "^3.1.3", "typescript": "^3.7.5",
"uglifyjs-webpack-plugin": "^2.0.1", "uglifyjs-webpack-plugin": "^2.0.1",
"webpack": "^4.20.2", "webpack": "^4.20.2",
"webpack-cli": "^3.1.2", "webpack-cli": "^3.1.2",
@@ -40,6 +38,7 @@
"webpack-merge": "^4.1.4" "webpack-merge": "^4.1.4"
}, },
"dependencies": { "dependencies": {
"@types/three": "^0.92.25",
"three": "^0.95.0", "three": "^0.95.0",
"wolfy87-eventemitter": "^5.2.5" "wolfy87-eventemitter": "^5.2.5"
} }

View File

@@ -1,9 +1,9 @@
import * as THREE from 'three'; 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); 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 { ColorMaterial } from "./ColorPalette";
import { MoveMatrix } from "./GeUtils"; import { MoveMatrix } from "./GeUtils";
@@ -30,7 +30,7 @@ export class DbText extends Mesh
{ {
let font = FontLoaderUtil.Load(); 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); let geometry = new ShapeGeometry(shapes);
geometry.computeBoundingBox(); geometry.computeBoundingBox();

View File

@@ -1,5 +1,5 @@
import { Object3D } from "three"; import { Object3D, Mesh } from "three";
import { createTemplateBoard, DrawDimension, Viewer } from "."; import { createTemplateBoard, DrawDimension, Viewer, selectMaterial } from ".";
function dispose(m: Object3D) function dispose(m: Object3D)
{ {
@@ -21,7 +21,8 @@ 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);
//加标注 //加标注
let dims = DrawDimension(meshs); let dims = DrawDimension(meshs);
@@ -32,4 +33,6 @@ export function LoadBoard(view: Viewer, data: any[], clear: boolean = true)
view.ViewToSwiso(); view.ViewToSwiso();
view.ZoomAll(); view.ZoomAll();
view.Zoom(1.1); view.Zoom(1.1);
return relations;
} }

View File

@@ -37,18 +37,9 @@ export class Viewer
this.OnSize(); this.OnSize();
}); });
let oldMesh: Mesh;
this.m_Render.domElement.addEventListener("mousemove", (e: MouseEvent) => this.m_Render.domElement.addEventListener("mousemove", (e: MouseEvent) =>
{ {
let mesh = PointPick(this, e.offsetX, e.offsetY); this.SelectByPoint(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;
}) })
} }
@@ -196,4 +187,40 @@ export class Viewer
this.m_Camera.LookAt(new Vector3(1, 1, -1)); this.m_Camera.LookAt(new Vector3(1, 1, -1));
this.m_bNeedUpdate = true; 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 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

File diff suppressed because one or more lines are too long