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.
Files changed (32) hide show
  1. package/README.md +1 -169
  2. package/package.json +2 -2
  3. package/src/DomEventRegister.js +4 -0
  4. package/src/build.js +6738 -6584
  5. package/src/dxf-system/plugins/editor/Command/VerticalCorrContinue.d.ts +3 -3
  6. package/src/dxf-system/plugins/editor/RenderManager.d.ts +6 -2
  7. package/src/dxf-system/plugins/renderer/components/EventInput.d.ts +2 -2
  8. package/src/dxf-system/utils/BoundExt.d.ts +1 -1
  9. package/src/dxf-system/utils/WallGroupManager.d.ts +1 -1
  10. package/src/dxf-system/utils/WallHole.d.ts +17 -6
  11. package/src/dxf-system/utils/index.d.ts +0 -3
  12. package/src/dxf-system/utils/remove-dangline.d.ts +2 -2
  13. package/src/dxf-system/utils/tools.d.ts +55 -19
  14. package/src/index.css +0 -8
  15. package/src/index.js +10 -10
  16. package/src/index2.js +7 -7
  17. package/src/index3.js +35 -23
  18. package/src/utils/algorithms/LineSegment.d.ts +14 -8
  19. package/src/utils/algorithms/LineSegmentSpatialHash.d.ts +14 -0
  20. package/src/utils/algorithms/LineSegmentUtils.d.ts +2 -2
  21. package/src/utils/algorithms/Pipeline.d.ts +10 -6
  22. package/src/utils/algorithms/Point.d.ts +1 -1
  23. package/src/utils/algorithms/PointSpatialHash.d.ts +5 -8
  24. package/src/utils/algorithms/PointUtils.d.ts +4 -1
  25. package/src/utils/algorithms/Polygon.d.ts +1 -1
  26. package/src/utils/algorithms/UndirectedGraph.d.ts +8 -7
  27. package/src/utils/tools/clone-user-data.d.ts +1 -1
  28. package/src/dxf-system/utils/clipping-line-user-data.d.ts +0 -7
  29. package/src/dxf-system/utils/line-clipping.d.ts +0 -15
  30. package/src/dxf-system/utils/line-merge-chains.d.ts +0 -3
  31. package/src/dxf-system/utils/line-merge-user-data.d.ts +0 -7
  32. 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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "build-dxf",
3
- "version": "0.1.120",
4
- "description": "线段构建双线墙壁的dxf版本",
3
+ "version": "0.1.122",
4
+ "description": "",
5
5
  "main": "./src/index.js",
6
6
  "types": "./src/index.d.ts",
7
7
  "scripts": {
@@ -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)) {