build-dxf 0.1.120 → 0.1.122
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/README.md +1 -169
- package/package.json +2 -2
- package/src/DomEventRegister.js +4 -0
- package/src/build.js +6738 -6584
- package/src/dxf-system/plugins/editor/Command/VerticalCorrContinue.d.ts +3 -3
- package/src/dxf-system/plugins/editor/RenderManager.d.ts +6 -2
- package/src/dxf-system/plugins/renderer/components/EventInput.d.ts +2 -2
- package/src/dxf-system/utils/BoundExt.d.ts +1 -1
- package/src/dxf-system/utils/WallGroupManager.d.ts +1 -1
- package/src/dxf-system/utils/WallHole.d.ts +17 -6
- package/src/dxf-system/utils/index.d.ts +0 -3
- package/src/dxf-system/utils/remove-dangline.d.ts +2 -2
- package/src/dxf-system/utils/tools.d.ts +55 -19
- package/src/index.css +0 -8
- package/src/index.js +10 -10
- package/src/index2.js +7 -7
- package/src/index3.js +35 -23
- package/src/utils/algorithms/LineSegment.d.ts +14 -8
- package/src/utils/algorithms/LineSegmentSpatialHash.d.ts +14 -0
- package/src/utils/algorithms/LineSegmentUtils.d.ts +2 -2
- package/src/utils/algorithms/Pipeline.d.ts +10 -6
- package/src/utils/algorithms/Point.d.ts +1 -1
- package/src/utils/algorithms/PointSpatialHash.d.ts +5 -8
- package/src/utils/algorithms/PointUtils.d.ts +4 -1
- package/src/utils/algorithms/Polygon.d.ts +1 -1
- package/src/utils/algorithms/UndirectedGraph.d.ts +8 -7
- package/src/utils/tools/clone-user-data.d.ts +1 -1
- package/src/dxf-system/utils/clipping-line-user-data.d.ts +0 -7
- package/src/dxf-system/utils/line-clipping.d.ts +0 -15
- package/src/dxf-system/utils/line-merge-chains.d.ts +0 -3
- package/src/dxf-system/utils/line-merge-user-data.d.ts +0 -7
- package/src/utils/algorithms/mergeUShapedPath.d.ts +0 -6
package/README.md
CHANGED
|
@@ -3,172 +3,4 @@
|
|
|
3
3
|
# 安装
|
|
4
4
|
```
|
|
5
5
|
npm i build-dxf
|
|
6
|
-
```
|
|
7
|
-
|
|
8
|
-
# node 使用示例
|
|
9
|
-
```typescript
|
|
10
|
-
import { DxfSystem, ModelDataPlugin, components, utils } from "build-dxf"
|
|
11
|
-
/**
|
|
12
|
-
* json 文件格式为{ start: {x: number, y: number}, end: {x: number, y: number } , insetionArr: {index: number}[] }[]
|
|
13
|
-
*/
|
|
14
|
-
const path = process.argv[2] ?? "./json/d10.json"
|
|
15
|
-
const dxfSystem = new DxfSystem()
|
|
16
|
-
|
|
17
|
-
// 使用模型数据生成插件
|
|
18
|
-
dxfSystem.usePlugin(ModelDataPlugin)
|
|
19
|
-
|
|
20
|
-
// 获取白模数据生成组件
|
|
21
|
-
const whiteModel = dxfSystem.findComponentByType(components.WhiteModel)
|
|
22
|
-
// 获取详情点数据生成组件
|
|
23
|
-
const detailsPoint = dxfSystem.findComponentByType(components.DetailsPoint)
|
|
24
|
-
const threeVJia = dxfSystem.findComponentByName("ThreeVJia")
|
|
25
|
-
|
|
26
|
-
dxfSystem.Dxf.set(path).then(()=> {
|
|
27
|
-
// 监听详情点数据处理完成
|
|
28
|
-
detailsPoint.addEventListener("handleSuccess", () => {
|
|
29
|
-
// 下载dxf文件
|
|
30
|
-
dxfSystem.Dxf.download("01.dxf")
|
|
31
|
-
// 下载白模,obj格式
|
|
32
|
-
whiteModel.downloadOBJ("001.obj")
|
|
33
|
-
// 下载白模,gltf或glb格式, 第二个参数为true时是glb,默认为true
|
|
34
|
-
whiteModel.downloadGltf("001.glb", true)
|
|
35
|
-
|
|
36
|
-
// 下载三维家 json
|
|
37
|
-
threeVJia.download("json.json")
|
|
38
|
-
|
|
39
|
-
// 下载为图片
|
|
40
|
-
dxfSystem.AngleCorrectionDxf.downloadImage("001.jpg")
|
|
41
|
-
|
|
42
|
-
// 下载新json
|
|
43
|
-
dxfSystem.Dxf.downloadOriginalData("data.json")
|
|
44
|
-
|
|
45
|
-
// desPoints 为射线点集合,根据需要使用
|
|
46
|
-
console.log("handleSuccess", detailsPoint.desPoints)
|
|
47
|
-
})
|
|
48
|
-
|
|
49
|
-
// trajectory222为轨迹文件数据
|
|
50
|
-
dxfSystem.Dxf.addEventListener("preprocessing", ({ setData, data }) => {
|
|
51
|
-
setData( utils.BoundExt.boundExtbyTraj(data, trajectory222 ) )
|
|
52
|
-
}, { once: true })
|
|
53
|
-
|
|
54
|
-
dxfSystem.Dxf.axisAlignCorr({ groupMethod: "cross", fittingMethod: "max", crossAxistThreshold: 0.08 })
|
|
55
|
-
dxfSystem.Dxf.lineOffset()
|
|
56
|
-
|
|
57
|
-
detailsPoint.set("./json/dp8.json")
|
|
58
|
-
|
|
59
|
-
// 获取外扩后的三维家json
|
|
60
|
-
const lines = utils.BoundExt.boundExtbyTraj({
|
|
61
|
-
lines: dxfSystem.Dxf.getLineSegments(),
|
|
62
|
-
trajectory: trajectoryJson // 轨迹json对象,
|
|
63
|
-
wallWidth: 0.12,
|
|
64
|
-
updateDoubleWallGroup: true
|
|
65
|
-
}).lines
|
|
66
|
-
|
|
67
|
-
// 三维家json
|
|
68
|
-
const json = utils.lineDataToThreeVJiaJson(lines, dxfSystem.AngleCorrectionDxf.angle).toJson("测试")
|
|
69
|
-
})
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
# 浏览器编辑功能使用示例
|
|
73
|
-
```html
|
|
74
|
-
|
|
75
|
-
<template>
|
|
76
|
-
<div class="w-[100vw] h-[100vh]" ref="dom"> </div>
|
|
77
|
-
</template>
|
|
78
|
-
|
|
79
|
-
<style scoped></style>
|
|
80
|
-
|
|
81
|
-
<script setup lang="ts">
|
|
82
|
-
import data from "../data/d9.json"
|
|
83
|
-
import { createEditor } from "build-dxf"
|
|
84
|
-
import { onMounted, ref } from "vue"
|
|
85
|
-
import * as THREE from "three"
|
|
86
|
-
import "build-dxf/index.css"
|
|
87
|
-
|
|
88
|
-
const dom = ref<HTMLDivElement>()
|
|
89
|
-
|
|
90
|
-
onMounted(async ()=>{
|
|
91
|
-
if(dom.value) {
|
|
92
|
-
const camera = new THREE.OrthographicCamera( -100, 100, 100, -100, 0.1, 1000 )
|
|
93
|
-
const { dxfSystem } = await createEditor( dom.value, camera )
|
|
94
|
-
dxfSystem.Dxf.set( (data as any) )
|
|
95
|
-
dxfSystem.Dxf.lineOffset()
|
|
96
|
-
}
|
|
97
|
-
})
|
|
98
|
-
</script>
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
# 浏览器 使用示例
|
|
104
|
-
```html
|
|
105
|
-
<template>
|
|
106
|
-
<div class="w-[100vw] h-[100vh]">
|
|
107
|
-
<Dxf3DView :lines="(data as any)" :details-point="dp8" />
|
|
108
|
-
</div>
|
|
109
|
-
</template>
|
|
110
|
-
|
|
111
|
-
<style scoped></style>
|
|
112
|
-
|
|
113
|
-
<script setup lang="ts">
|
|
114
|
-
import { Dxf3DView } from "build-dxf/RenderPlugin"
|
|
115
|
-
import "build-dxf/index.css"
|
|
116
|
-
import data from "../data/d4.json"
|
|
117
|
-
import dp8 from "../data/dp8.json"
|
|
118
|
-
</script>
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
# 内置类
|
|
122
|
-
### 1. 核心类
|
|
123
|
-
1. DxfSystem
|
|
124
|
-
|
|
125
|
-
### 核心组件类
|
|
126
|
-
1. Dxf
|
|
127
|
-
2. AngleCorrectionDxf
|
|
128
|
-
3. DoorsAnalysis
|
|
129
|
-
4. ThreeVJia
|
|
130
|
-
5. Variable
|
|
131
|
-
|
|
132
|
-
### 2. 渲染插件组件类
|
|
133
|
-
1. Renderer
|
|
134
|
-
2. DomContainer
|
|
135
|
-
3. DomEventRegister
|
|
136
|
-
4. EventInput
|
|
137
|
-
5. DetailsPointRender
|
|
138
|
-
6. ModelDataRender
|
|
139
|
-
7. OriginalLineRender
|
|
140
|
-
|
|
141
|
-
### 3. 模型数据提供插件组件类
|
|
142
|
-
1. DetailsPoint
|
|
143
|
-
2. DxfLineModel
|
|
144
|
-
3. WhiteModel
|
|
145
|
-
|
|
146
|
-
### 4. 编辑器插件组件类
|
|
147
|
-
|
|
148
|
-
##### 编辑器管理组件类
|
|
149
|
-
1. RenderManager
|
|
150
|
-
2. Editor
|
|
151
|
-
|
|
152
|
-
##### 命令流组件类
|
|
153
|
-
1. CommandFlowComponent
|
|
154
|
-
2. Default
|
|
155
|
-
3. ClippingLine
|
|
156
|
-
4. ConnectionLine
|
|
157
|
-
5. DeleteSelectLine
|
|
158
|
-
6. DeleteSelectWindow
|
|
159
|
-
7. DrawDoorLine
|
|
160
|
-
8. DrawLine
|
|
161
|
-
9. DrawWindow
|
|
162
|
-
10. IntersectionConnectionLine
|
|
163
|
-
11. MergeLine
|
|
164
|
-
12. PointDrag
|
|
165
|
-
13. SelectAll
|
|
166
|
-
14. VerticalCorrection
|
|
167
|
-
15. VerticalReferenceLine
|
|
168
|
-
16. ViewAngle
|
|
169
|
-
|
|
170
|
-
# 更改内容
|
|
171
|
-
1. 2026.02.17 修复手动测距bug
|
|
172
|
-
1. 2026.02.17 修复飘窗线拟合传染bug
|
|
173
|
-
1. 2026.02.17 修复三维家json数据异常(旋转、离地高、窗高、门高)
|
|
174
|
-
1. 2026.02.17 属性面板设置最大宽度
|
|
6
|
+
```
|
package/package.json
CHANGED
package/src/DomEventRegister.js
CHANGED
|
@@ -1254,6 +1254,7 @@ class DomEventRegister extends Component {
|
|
|
1254
1254
|
};
|
|
1255
1255
|
};
|
|
1256
1256
|
const pointerdown = (e) => {
|
|
1257
|
+
if (e.target !== domContainer.domElement) return;
|
|
1257
1258
|
const { offsetX, offsetY } = this.computedPosition(e, domContainer.rect);
|
|
1258
1259
|
const isMouseEnter = this.pointInDOMRect(offsetX, offsetY, domContainer.rect);
|
|
1259
1260
|
if (isMouseEnter) {
|
|
@@ -1269,6 +1270,7 @@ class DomEventRegister extends Component {
|
|
|
1269
1270
|
}
|
|
1270
1271
|
};
|
|
1271
1272
|
const pointermove = (e) => {
|
|
1273
|
+
if (e.target !== domContainer.domElement) return;
|
|
1272
1274
|
if (isMobileRef.value && !map.has(e.pointerId)) return;
|
|
1273
1275
|
const { offsetX, offsetY } = this.computedPosition(e, domContainer.rect);
|
|
1274
1276
|
if (!isMobileRef.value && !this.pointInDOMRect(offsetX, offsetY, domContainer.rect)) return;
|
|
@@ -1286,6 +1288,7 @@ class DomEventRegister extends Component {
|
|
|
1286
1288
|
});
|
|
1287
1289
|
};
|
|
1288
1290
|
const pointercancel = (e) => {
|
|
1291
|
+
if (e.target !== domContainer.domElement) return;
|
|
1289
1292
|
if (!map.has(e.pointerId)) return;
|
|
1290
1293
|
map.delete(e.pointerId);
|
|
1291
1294
|
const { offsetX, offsetY } = this.computedPosition(e, domContainer.rect);
|
|
@@ -1316,6 +1319,7 @@ class DomEventRegister extends Component {
|
|
|
1316
1319
|
*/
|
|
1317
1320
|
initMouseMoveEventProxy() {
|
|
1318
1321
|
const domContainer = this.parent?.findComponentByType(DomContainer), domElement = domContainer.domElement, variable = this.parent?.findComponentByType(Variable), globalMousemoveFun = (e) => {
|
|
1322
|
+
if (e.target !== domElement) return;
|
|
1319
1323
|
if (this._mouseMoveEventProxylock) return;
|
|
1320
1324
|
const rect = domElement.getBoundingClientRect(), offsetX = e.clientX - rect.left, offsetY = e.clientY - rect.top;
|
|
1321
1325
|
if (this.pointInDOMRect(offsetX, offsetY, rect)) {
|