build-dxf 0.1.23 → 0.1.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.htaccess
ADDED
|
File without changes
|
package/nginx.htaccess
ADDED
|
File without changes
|
package/package.json
CHANGED
package/src/build.js
CHANGED
|
@@ -6097,31 +6097,46 @@ class Scenario {
|
|
|
6097
6097
|
}
|
|
6098
6098
|
// 绘制模型
|
|
6099
6099
|
drawTheModel(data, num, index2, wallHeight) {
|
|
6100
|
-
|
|
6101
|
-
|
|
6102
|
-
new THREE.Vector3(data[
|
|
6103
|
-
|
|
6104
|
-
|
|
6105
|
-
|
|
6106
|
-
|
|
6107
|
-
|
|
6108
|
-
|
|
6109
|
-
|
|
6100
|
+
let basePoints = [];
|
|
6101
|
+
for (const i in data) {
|
|
6102
|
+
basePoints.push(new THREE.Vector3(data[i].x, data[i].y, this.height ? this.height : 0));
|
|
6103
|
+
}
|
|
6104
|
+
if (basePoints.length === 4) {
|
|
6105
|
+
const spacing = basePoints[0].distanceTo(basePoints[3]);
|
|
6106
|
+
if (spacing < 5e-3) {
|
|
6107
|
+
return null;
|
|
6108
|
+
} else {
|
|
6109
|
+
const geometry = this.createParallelepipedFromBase(basePoints, wallHeight);
|
|
6110
|
+
const material = new THREE.MeshStandardMaterial({
|
|
6111
|
+
color: this.color,
|
|
6112
|
+
side: THREE.DoubleSide
|
|
6113
|
+
// roughness: this.numdu,
|
|
6114
|
+
// metalness: 0.0,
|
|
6115
|
+
// envMapRotation: new THREE.Euler(0, 0, 0),
|
|
6116
|
+
// polygonOffset: true,
|
|
6117
|
+
// polygonOffsetFactor: 10,
|
|
6118
|
+
// polygonOffsetUnits: 10,
|
|
6119
|
+
});
|
|
6120
|
+
const cube = new THREE.Mesh(geometry, material);
|
|
6121
|
+
const edges = new THREE.EdgesGeometry(geometry);
|
|
6122
|
+
new THREE.LineSegments(edges, new THREE.LineBasicMaterial({ color: 0 }));
|
|
6123
|
+
if (num === 0) {
|
|
6124
|
+
cube.name = `双线墙_${index2}`;
|
|
6125
|
+
cube.userData.category = "doubleWall";
|
|
6126
|
+
} else {
|
|
6127
|
+
cube.name = `单线墙_${index2}`;
|
|
6128
|
+
cube.userData.category = "wall";
|
|
6129
|
+
}
|
|
6130
|
+
return cube;
|
|
6131
|
+
}
|
|
6110
6132
|
} else {
|
|
6111
6133
|
const geometry = this.createParallelepipedFromBase(basePoints, wallHeight);
|
|
6112
6134
|
const material = new THREE.MeshStandardMaterial({
|
|
6113
6135
|
color: this.color,
|
|
6114
6136
|
side: THREE.DoubleSide
|
|
6115
|
-
// roughness: this.numdu,
|
|
6116
|
-
// metalness: 0.0,
|
|
6117
|
-
// envMapRotation: new THREE.Euler(0, 0, 0),
|
|
6118
|
-
// polygonOffset: true,
|
|
6119
|
-
// polygonOffsetFactor: 10,
|
|
6120
|
-
// polygonOffsetUnits: 10,
|
|
6121
6137
|
});
|
|
6122
6138
|
const cube = new THREE.Mesh(geometry, material);
|
|
6123
|
-
|
|
6124
|
-
new THREE.LineSegments(edges, new THREE.LineBasicMaterial({ color: 0 }));
|
|
6139
|
+
new THREE.EdgesGeometry(geometry);
|
|
6125
6140
|
if (num === 0) {
|
|
6126
6141
|
cube.name = `双线墙_${index2}`;
|
|
6127
6142
|
cube.userData.category = "doubleWall";
|
|
@@ -6512,7 +6527,6 @@ class Scenario {
|
|
|
6512
6527
|
menModel.name = `门_${index2}`;
|
|
6513
6528
|
menModel.userData.category = "door";
|
|
6514
6529
|
menModel.userData.uuid = doorList?.uuid;
|
|
6515
|
-
console.log(doorList);
|
|
6516
6530
|
menModel.userData.width = distance2;
|
|
6517
6531
|
menModel.userData.height = Height ? Height : this.doorHeight;
|
|
6518
6532
|
menModel.userData.groundHeight = groundHeight;
|
|
@@ -6555,9 +6569,11 @@ class Scenario {
|
|
|
6555
6569
|
createParallelepipedFromBase(points, height) {
|
|
6556
6570
|
const shape = new THREE.Shape();
|
|
6557
6571
|
shape.moveTo(points[0].x, points[0].y);
|
|
6558
|
-
|
|
6559
|
-
|
|
6560
|
-
|
|
6572
|
+
for (const i in points) {
|
|
6573
|
+
if (i !== "0") {
|
|
6574
|
+
shape.lineTo(points[i].x, points[i].y);
|
|
6575
|
+
}
|
|
6576
|
+
}
|
|
6561
6577
|
shape.lineTo(points[0].x, points[0].y);
|
|
6562
6578
|
const geometry = new THREE.ExtrudeGeometry(shape, {
|
|
6563
6579
|
depth: height,
|
|
@@ -14600,7 +14616,6 @@ class DoorFind {
|
|
|
14600
14616
|
dock = { dockLine: endList[0].userData, dockPoint: endList[0].point, point: line.end, pointType: "end" };
|
|
14601
14617
|
}
|
|
14602
14618
|
const point2 = this.adsorpt(dock, line);
|
|
14603
|
-
console.log(111);
|
|
14604
14619
|
line.userData.doorDirectConnection = true;
|
|
14605
14620
|
if (point2) {
|
|
14606
14621
|
line.userData.doorAutomaticFind = true;
|
|
@@ -14843,6 +14858,9 @@ const PRE_PROCESSOR = {
|
|
|
14843
14858
|
Clipping(lines) {
|
|
14844
14859
|
return lines = lineSegmentClipping(lines, 0);
|
|
14845
14860
|
},
|
|
14861
|
+
clipDoubleWall(lines) {
|
|
14862
|
+
return lines;
|
|
14863
|
+
},
|
|
14846
14864
|
RemoveShortLine(lines, option) {
|
|
14847
14865
|
return lines = lines.filter((line) => line.length() > (option.minWidth ?? 1e-5));
|
|
14848
14866
|
},
|
|
@@ -19040,7 +19058,8 @@ async function getFileAll(dxfSystem = gloabalDxfSystem) {
|
|
|
19040
19058
|
const obj = new File([await whiteModel.toOBJBlob()], "model.obj", { type: "application/octet-stream" });
|
|
19041
19059
|
const glb = new File([await whiteModel.toGltfBlob(true)], "model.glb", { type: "application/octet-stream" });
|
|
19042
19060
|
const gltf2 = new File([await whiteModel.toGltfBlob(false)], "model.gltf", { type: "application/json" });
|
|
19043
|
-
const
|
|
19061
|
+
const originalData = lineDataToOriginalData(dxfSystem.Dxf.getLineSegments());
|
|
19062
|
+
const json = new File([JSON.stringify(originalData)], "json.json", { type: "application/json" });
|
|
19044
19063
|
return {
|
|
19045
19064
|
dxf,
|
|
19046
19065
|
obj,
|
|
@@ -7,7 +7,7 @@ import { Dxf } from './Dxf';
|
|
|
7
7
|
*/
|
|
8
8
|
export declare class CorrectionDxf<TEventMap extends {} = {}> extends Dxf<{} & TEventMap> {
|
|
9
9
|
static name: string;
|
|
10
|
-
static readonly PRE_PROCESSOR: Record<"DoorFind" | "AxisAlignCorr" | "BoundExt" | "AngleCorr" | "ResetGeometricCenter" | "WallHeightHandle" | "Clipping" | "RemoveShortLine", (lines: import('../..').LineSegment[], option: SetDataOption, ...arg: any[]) => import('../..').LineSegment[]>;
|
|
10
|
+
static readonly PRE_PROCESSOR: Record<"DoorFind" | "clipDoubleWall" | "AxisAlignCorr" | "BoundExt" | "AngleCorr" | "ResetGeometricCenter" | "WallHeightHandle" | "Clipping" | "RemoveShortLine", (lines: import('../..').LineSegment[], option: SetDataOption, ...arg: any[]) => import('../..').LineSegment[]>;
|
|
11
11
|
rotateCorrCad?: CAD;
|
|
12
12
|
constructor();
|
|
13
13
|
onAddFromParent(parent: DxfSystem): void;
|
|
@@ -5,7 +5,7 @@ import { Quadtree } from '../../Quadtree';
|
|
|
5
5
|
import { SetDataOption, DataItem, LineUserData, OriginalDataItem, Unit } from '../type';
|
|
6
6
|
import { CAD } from '../utils/CAD';
|
|
7
7
|
type PreProcessor = (lines: LineSegment[], option: SetDataOption, ...arg: any[]) => LineSegment[];
|
|
8
|
-
export declare const PRE_PROCESSOR: Record<"DoorFind" | "AxisAlignCorr" | "BoundExt" | "AngleCorr" | "ResetGeometricCenter" | "WallHeightHandle" | "Clipping" | "RemoveShortLine", PreProcessor>;
|
|
8
|
+
export declare const PRE_PROCESSOR: Record<"DoorFind" | "clipDoubleWall" | "AxisAlignCorr" | "BoundExt" | "AngleCorr" | "ResetGeometricCenter" | "WallHeightHandle" | "Clipping" | "RemoveShortLine", PreProcessor>;
|
|
9
9
|
/**
|
|
10
10
|
* 将点云结构转换为DXF格式
|
|
11
11
|
*/
|
|
@@ -22,7 +22,7 @@ export declare class Dxf<TEventMap extends {} = {}> extends Component<{
|
|
|
22
22
|
};
|
|
23
23
|
} & TEventMap> {
|
|
24
24
|
static name: string;
|
|
25
|
-
static readonly PRE_PROCESSOR: Record<"DoorFind" | "AxisAlignCorr" | "BoundExt" | "AngleCorr" | "ResetGeometricCenter" | "WallHeightHandle" | "Clipping" | "RemoveShortLine", PreProcessor>;
|
|
25
|
+
static readonly PRE_PROCESSOR: Record<"DoorFind" | "clipDoubleWall" | "AxisAlignCorr" | "BoundExt" | "AngleCorr" | "ResetGeometricCenter" | "WallHeightHandle" | "Clipping" | "RemoveShortLine", PreProcessor>;
|
|
26
26
|
width: number;
|
|
27
27
|
originalData: OriginalDataItem[];
|
|
28
28
|
data: DataItem[];
|