rm-build-dxf 0.1.186

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 (195) hide show
  1. package/README.md +6 -0
  2. package/package.json +50 -0
  3. package/src/App.vue.d.ts +2 -0
  4. package/src/DomEventRegister.js +1 -0
  5. package/src/api/getSocket.d.ts +1 -0
  6. package/src/api/index.d.ts +27 -0
  7. package/src/api/type.d.ts +46 -0
  8. package/src/build.js +1 -0
  9. package/src/components/DragContainer.vue.d.ts +48 -0
  10. package/src/components/NumberEditor.vue.d.ts +33 -0
  11. package/src/constants.d.ts +11 -0
  12. package/src/demo.d.ts +1 -0
  13. package/src/dxf-system/DxfSystem.d.ts +26 -0
  14. package/src/dxf-system/build.d.ts +94 -0
  15. package/src/dxf-system/components/CorrectionDxf.d.ts +44 -0
  16. package/src/dxf-system/components/Dxf.d.ts +96 -0
  17. package/src/dxf-system/components/ThreeVJia.d.ts +33 -0
  18. package/src/dxf-system/components/Variable.d.ts +41 -0
  19. package/src/dxf-system/index.d.ts +2 -0
  20. package/src/dxf-system/plugins/editor/Command/ClippingLine.d.ts +30 -0
  21. package/src/dxf-system/plugins/editor/Command/Command.d.ts +346 -0
  22. package/src/dxf-system/plugins/editor/Command/DefaultCommand.d.ts +56 -0
  23. package/src/dxf-system/plugins/editor/Command/DeleteSelectLine.d.ts +25 -0
  24. package/src/dxf-system/plugins/editor/Command/DrawBalconyRailing.d.ts +12 -0
  25. package/src/dxf-system/plugins/editor/Command/DrawBeam.d.ts +12 -0
  26. package/src/dxf-system/plugins/editor/Command/DrawDoorLine.d.ts +9 -0
  27. package/src/dxf-system/plugins/editor/Command/DrawHole.d.ts +67 -0
  28. package/src/dxf-system/plugins/editor/Command/DrawLine.d.ts +41 -0
  29. package/src/dxf-system/plugins/editor/Command/DrawPillar.d.ts +12 -0
  30. package/src/dxf-system/plugins/editor/Command/DrawWindow.d.ts +12 -0
  31. package/src/dxf-system/plugins/editor/Command/ManualDistance.d.ts +23 -0
  32. package/src/dxf-system/plugins/editor/Command/MergeLine.d.ts +33 -0
  33. package/src/dxf-system/plugins/editor/Command/PointDrag/index.d.ts +38 -0
  34. package/src/dxf-system/plugins/editor/Command/PointDrag/modifyDoor.d.ts +40 -0
  35. package/src/dxf-system/plugins/editor/Command/PointDrag/modifyLine.d.ts +34 -0
  36. package/src/dxf-system/plugins/editor/Command/PointDrag/modifyWindow.d.ts +25 -0
  37. package/src/dxf-system/plugins/editor/Command/PropertiesPanel.d.ts +33 -0
  38. package/src/dxf-system/plugins/editor/Command/RayDistance.d.ts +23 -0
  39. package/src/dxf-system/plugins/editor/Command/SelectAll.d.ts +30 -0
  40. package/src/dxf-system/plugins/editor/Command/TwoLineConnectionLine.d.ts +33 -0
  41. package/src/dxf-system/plugins/editor/Command/TwoPointConnection.d.ts +33 -0
  42. package/src/dxf-system/plugins/editor/Command/VerticalCorr.d.ts +66 -0
  43. package/src/dxf-system/plugins/editor/Command/VerticalCorrContinue.d.ts +35 -0
  44. package/src/dxf-system/plugins/editor/Command/ViewAngle.d.ts +21 -0
  45. package/src/dxf-system/plugins/editor/Editor.d.ts +56 -0
  46. package/src/dxf-system/plugins/editor/RenderManager.d.ts +101 -0
  47. package/src/dxf-system/plugins/editor/index.d.ts +9 -0
  48. package/src/dxf-system/plugins/editor/pages/EditorTool/EditorTool.vue.d.ts +7 -0
  49. package/src/dxf-system/plugins/editor/pages/EditorTool/EditorToolContent.vue.d.ts +7 -0
  50. package/src/dxf-system/plugins/editor/pages/PropertiesPanel.vue.d.ts +18 -0
  51. package/src/dxf-system/plugins/editor/pages/components/Button.vue.d.ts +17 -0
  52. package/src/dxf-system/plugins/editor/pages/components/Input.vue.d.ts +13 -0
  53. package/src/dxf-system/plugins/editor/pages/components/ToolToggle.vue.d.ts +20 -0
  54. package/src/dxf-system/plugins/editor/type.d.ts +11 -0
  55. package/src/dxf-system/plugins/editor/us-service/DragControlPoint.d.ts +48 -0
  56. package/src/dxf-system/plugins/editor/us-service/LineSelector.d.ts +44 -0
  57. package/src/dxf-system/plugins/editor/us-service/PointerFollowMove.d.ts +86 -0
  58. package/src/dxf-system/plugins/editor/us-service/SnapController.d.ts +32 -0
  59. package/src/dxf-system/plugins/editor/utils/Wall2D.d.ts +10 -0
  60. package/src/dxf-system/plugins/model3d/components/DxfLineModel.d.ts +14 -0
  61. package/src/dxf-system/plugins/model3d/components/WhiteModel.d.ts +61 -0
  62. package/src/dxf-system/plugins/model3d/components/index.d.ts +2 -0
  63. package/src/dxf-system/plugins/model3d/index.d.ts +11 -0
  64. package/src/dxf-system/plugins/renderer/components/DomContainer.d.ts +13 -0
  65. package/src/dxf-system/plugins/renderer/components/DomEventRegister.d.ts +116 -0
  66. package/src/dxf-system/plugins/renderer/components/EventInput.d.ts +74 -0
  67. package/src/dxf-system/plugins/renderer/components/ModelDataRender.d.ts +13 -0
  68. package/src/dxf-system/plugins/renderer/components/Renderer.d.ts +100 -0
  69. package/src/dxf-system/plugins/renderer/components/index.d.ts +5 -0
  70. package/src/dxf-system/plugins/renderer/index.d.ts +13 -0
  71. package/src/dxf-system/type.d.ts +218 -0
  72. package/src/dxf-system/utils/BayWindowHelper.d.ts +58 -0
  73. package/src/dxf-system/utils/BoundExt.d.ts +51 -0
  74. package/src/dxf-system/utils/DoorFind.d.ts +44 -0
  75. package/src/dxf-system/utils/DoubleWallFinder.d.ts +24 -0
  76. package/src/dxf-system/utils/HeightQuery.d.ts +12 -0
  77. package/src/dxf-system/utils/LineGroupType.d.ts +125 -0
  78. package/src/dxf-system/utils/LoadModel.d.ts +7 -0
  79. package/src/dxf-system/utils/RunJianPipeline.d.ts +92 -0
  80. package/src/dxf-system/utils/SceneAutoGenerat.d.ts +42 -0
  81. package/src/dxf-system/utils/ThreeVJiaPipeline.d.ts +154 -0
  82. package/src/dxf-system/utils/WallGroupManager.d.ts +27 -0
  83. package/src/dxf-system/utils/WallHole.d.ts +134 -0
  84. package/src/dxf-system/utils/WallHoleDrawData.d.ts +31 -0
  85. package/src/dxf-system/utils/ZHouseMockData.d.ts +127 -0
  86. package/src/dxf-system/utils/cad/DxfDataPlugin.d.ts +20 -0
  87. package/src/dxf-system/utils/cad/DxfDrawPlugin.d.ts +13 -0
  88. package/src/dxf-system/utils/cad/draw-data.d.ts +43 -0
  89. package/src/dxf-system/utils/cad/draw-dxf-image.d.ts +2 -0
  90. package/src/dxf-system/utils/cad/draw-dxf-string.d.ts +3 -0
  91. package/src/dxf-system/utils/cad/index.d.ts +143 -0
  92. package/src/dxf-system/utils/clipping-double-wall.d.ts +7 -0
  93. package/src/dxf-system/utils/draw-helper.d.ts +6 -0
  94. package/src/dxf-system/utils/find-discrete.d.ts +26 -0
  95. package/src/dxf-system/utils/find-rooms.d.ts +16 -0
  96. package/src/dxf-system/utils/get-win-draw-data.d.ts +18 -0
  97. package/src/dxf-system/utils/index.d.ts +8 -0
  98. package/src/dxf-system/utils/line-pipeline/builtin/axis-align-corr.d.ts +16 -0
  99. package/src/dxf-system/utils/line-pipeline/builtin/beam-support-line.d.ts +3 -0
  100. package/src/dxf-system/utils/line-pipeline/builtin/bound-ext.d.ts +8 -0
  101. package/src/dxf-system/utils/line-pipeline/builtin/build-group/bay-window.d.ts +7 -0
  102. package/src/dxf-system/utils/line-pipeline/builtin/build-group/double-wall.d.ts +6 -0
  103. package/src/dxf-system/utils/line-pipeline/builtin/build-group/index.d.ts +7 -0
  104. package/src/dxf-system/utils/line-pipeline/builtin/door-space-handle.d.ts +5 -0
  105. package/src/dxf-system/utils/line-pipeline/builtin/door-to-hole.d.ts +9 -0
  106. package/src/dxf-system/utils/line-pipeline/builtin/double-wall-alignment.d.ts +7 -0
  107. package/src/dxf-system/utils/line-pipeline/builtin/index.d.ts +39 -0
  108. package/src/dxf-system/utils/line-pipeline/builtin/init.d.ts +8 -0
  109. package/src/dxf-system/utils/line-pipeline/builtin/remove-room-sundries.d.ts +3 -0
  110. package/src/dxf-system/utils/line-pipeline/builtin/remove-short-double-wall.d.ts +6 -0
  111. package/src/dxf-system/utils/line-pipeline/builtin/wall-height-handle.d.ts +8 -0
  112. package/src/dxf-system/utils/line-pipeline/index.d.ts +22 -0
  113. package/src/dxf-system/utils/remove-dangline.d.ts +7 -0
  114. package/src/dxf-system/utils/tools.d.ts +91 -0
  115. package/src/index.css +1 -0
  116. package/src/index.js +1 -0
  117. package/src/index2.js +1 -0
  118. package/src/index3.js +1 -0
  119. package/src/main.d.ts +0 -0
  120. package/src/pages/CubeView.vue.d.ts +4 -0
  121. package/src/pages/DxfPreview.vue.d.ts +9 -0
  122. package/src/pages/Editor.vue.d.ts +8 -0
  123. package/src/pages/ExportGLB.vue.d.ts +2 -0
  124. package/src/pages/ImagePreview.vue.d.ts +9 -0
  125. package/src/pages/ModelView.vue.d.ts +11 -0
  126. package/src/pages/Setting.vue.d.ts +6 -0
  127. package/src/pages/Todo.vue.d.ts +2 -0
  128. package/src/pages/WallView.vue.d.ts +9 -0
  129. package/src/pages/WindowManager.vue.d.ts +2 -0
  130. package/src/pages/buildJson.vue.d.ts +4 -0
  131. package/src/pages/modelCarrier/index.vue.d.ts +4 -0
  132. package/src/router/index.d.ts +2 -0
  133. package/src/utils/EventDispatcher.d.ts +18 -0
  134. package/src/utils/algorithms/AlignToParallelSegments.d.ts +25 -0
  135. package/src/utils/algorithms/AxisAlignCorr.d.ts +38 -0
  136. package/src/utils/algorithms/Box2.d.ts +96 -0
  137. package/src/utils/algorithms/CheckPointCloudContinuity.d.ts +63 -0
  138. package/src/utils/algorithms/ConstraintSystem.d.ts +17 -0
  139. package/src/utils/algorithms/ConvexHullGraham.d.ts +16 -0
  140. package/src/utils/algorithms/Debouncing.d.ts +10 -0
  141. package/src/utils/algorithms/LineIndexGenerator.d.ts +12 -0
  142. package/src/utils/algorithms/LineQueryer.d.ts +42 -0
  143. package/src/utils/algorithms/LineSegment.d.ts +258 -0
  144. package/src/utils/algorithms/LineSegmentSpatialHash.d.ts +86 -0
  145. package/src/utils/algorithms/LineSegmentUtils.d.ts +185 -0
  146. package/src/utils/algorithms/Map.d.ts +38 -0
  147. package/src/utils/algorithms/MaxiCircles.d.ts +15 -0
  148. package/src/utils/algorithms/MiniCircles.d.ts +57 -0
  149. package/src/utils/algorithms/OBB.d.ts +30 -0
  150. package/src/utils/algorithms/PCSparseOctree.d.ts +56 -0
  151. package/src/utils/algorithms/Pipeline.d.ts +20 -0
  152. package/src/utils/algorithms/Point.d.ts +271 -0
  153. package/src/utils/algorithms/PointSpatialHash.d.ts +149 -0
  154. package/src/utils/algorithms/PointUtils.d.ts +47 -0
  155. package/src/utils/algorithms/Polygon.d.ts +164 -0
  156. package/src/utils/algorithms/PolygonUtils.d.ts +9 -0
  157. package/src/utils/algorithms/Quadtree.d.ts +89 -0
  158. package/src/utils/algorithms/Rectangle.d.ts +62 -0
  159. package/src/utils/algorithms/UndirectedGraph.d.ts +124 -0
  160. package/src/utils/algorithms/UnionFindSet.d.ts +12 -0
  161. package/src/utils/algorithms/ccw.d.ts +2 -0
  162. package/src/utils/algorithms/lazy.d.ts +14 -0
  163. package/src/utils/algorithms/precision.d.ts +3 -0
  164. package/src/utils/algorithms/stepElimination.d.ts +6 -0
  165. package/src/utils/algorithms/uuid.d.ts +1 -0
  166. package/src/utils/command/CommandFlow.d.ts +45 -0
  167. package/src/utils/command/CommandSystem.d.ts +96 -0
  168. package/src/utils/command/index.d.ts +2 -0
  169. package/src/utils/decorators/measure-time.d.ts +5 -0
  170. package/src/utils/ecs/Component.d.ts +18 -0
  171. package/src/utils/ecs/Container.d.ts +47 -0
  172. package/src/utils/ecs/index.d.ts +4 -0
  173. package/src/utils/geometry-manager/GeometryManager.d.ts +2 -0
  174. package/src/utils/index.d.ts +25 -0
  175. package/src/utils/modelScenario/bayWindow.d.ts +35 -0
  176. package/src/utils/modelScenario/scenario.d.ts +92 -0
  177. package/src/utils/three-object-3d/ExtrudeMesh.d.ts +11 -0
  178. package/src/utils/three-object-3d/LineAlignmentGuide.d.ts +20 -0
  179. package/src/utils/three-object-3d/Lines.d.ts +25 -0
  180. package/src/utils/three-object-3d/Lines2.d.ts +22 -0
  181. package/src/utils/three-object-3d/Shape2D.d.ts +61 -0
  182. package/src/utils/tools/GCHandle.d.ts +12 -0
  183. package/src/utils/tools/Gltf.d.ts +7 -0
  184. package/src/utils/tools/SnapLine.d.ts +19 -0
  185. package/src/utils/tools/StorageHelper.d.ts +8 -0
  186. package/src/utils/tools/clone-user-data.d.ts +7 -0
  187. package/src/utils/tools/create-html.d.ts +9 -0
  188. package/src/utils/tools/create-promise.d.ts +5 -0
  189. package/src/utils/tools/createVueApp.d.ts +1 -0
  190. package/src/utils/tools/download.d.ts +1 -0
  191. package/src/utils/tools/get-json.d.ts +5 -0
  192. package/src/utils/tools/include.d.ts +1 -0
  193. package/src/utils/tools/is-mobile.d.ts +2 -0
  194. package/src/utils/tools/repetitive-task.d.ts +1 -0
  195. package/src/utils/tools/selectLocal-file.d.ts +7 -0
@@ -0,0 +1,20 @@
1
+ type __VLS_Props = {
2
+ titleColor?: string;
3
+ titleSize?: string;
4
+ icon?: string;
5
+ iconSize?: string;
6
+ title?: string;
7
+ };
8
+ type __VLS_PublicProps = {
9
+ modelValue?: boolean;
10
+ } & __VLS_Props;
11
+ declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
12
+ "update:modelValue": (value: boolean) => any;
13
+ }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
14
+ "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
15
+ }>, {
16
+ titleColor: string;
17
+ titleSize: string;
18
+ iconSize: string;
19
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
20
+ export default _default;
@@ -0,0 +1,11 @@
1
+ import { ComputedRef, Ref } from 'vue';
2
+ export interface ICommandFlowData {
3
+ /**
4
+ * 命令提示,可以在屏幕上显示提示消息
5
+ */
6
+ prompt?: string;
7
+ /**
8
+ * 是否显示确认按钮, 确认按钮会模拟按下 Enter 按键
9
+ */
10
+ showConfirm?: boolean | Ref<boolean> | ComputedRef<boolean>;
11
+ }
@@ -0,0 +1,48 @@
1
+ import { Point } from '../../../../utils/algorithms/Point';
2
+ import { Editor } from '../Editor';
3
+ import { Properties } from 'csstype';
4
+ import { Vector3 } from 'three';
5
+ import { CSS2DObject } from 'three/examples/jsm/renderers/CSS2DRenderer.js';
6
+ type Option = {
7
+ auxiliaryLine?: boolean;
8
+ style?: Properties;
9
+ size?: number;
10
+ };
11
+ export declare class DragControlPoint {
12
+ editor: Editor;
13
+ /** 存储事件注销函数的数组 */
14
+ eventCancels: any[];
15
+ onChange?: (p: Point) => void;
16
+ onStart?: (p: Point) => void;
17
+ onEnd?: (p: Point) => void;
18
+ onEnter?: () => void;
19
+ onLeave?: () => void;
20
+ onClick?: () => void;
21
+ onDblClick?: () => void;
22
+ onLongTouch?: () => void;
23
+ private point;
24
+ opt: Option;
25
+ constructor(point: Point, editor: Editor, opt?: Option);
26
+ object3D?: CSS2DObject;
27
+ /**
28
+ * 创建拖拽点
29
+ */
30
+ init(): void;
31
+ /** 设置
32
+ * @param point
33
+ */
34
+ setPoint(point: Vector3 | Point): void;
35
+ /** 创建视图
36
+ * @returns
37
+ */
38
+ createView(): {
39
+ object3D: CSS2DObject;
40
+ defaultWidth: string;
41
+ background: string;
42
+ };
43
+ /**
44
+ * 销毁, 注销所有事件监听,标记为已结束,释放资源
45
+ */
46
+ destroy(): void;
47
+ }
48
+ export {};
@@ -0,0 +1,44 @@
1
+ import { LineSegment } from '../../../../utils/algorithms/LineSegment';
2
+ import { Editor } from '../Editor';
3
+ import { Point } from '../../../../utils/algorithms/Point';
4
+ import { PointerFollowMove, MobileTrigger } from './PointerFollowMove';
5
+ import { Quadtree } from '../../../../utils';
6
+ /**
7
+ * 线段选择器
8
+ * 通过鼠标吸附交互,让用户从场景中选取一条符合类型要求的线段(墙线、洞口、门窗等)
9
+ * 支持异步等待选择结果,且可被暂停、销毁
10
+ */
11
+ export declare class LineSelector extends PointerFollowMove {
12
+ resolve_: any;
13
+ onMiss?: () => void;
14
+ /**
15
+ * @param editor
16
+ * @param point 移动端默认点位置
17
+ * @param mobileTrigger 移动端触发方式
18
+ * @param quadtree
19
+ */
20
+ constructor(editor: Editor, point?: Point, mobileTrigger?: MobileTrigger, quadtree?: Quadtree);
21
+ setEmptySpace(_: boolean): this;
22
+ /**
23
+ * 异步获取一条符合当前类型筛选的线段
24
+ * @param type 要选择的线段类型,若不传则使用实例当前的 type
25
+ * @returns Promise,解析为用户点击选中的线段,若未选中则返回 null
26
+ */
27
+ getLines(): Promise<LineSegment<Record<string, any>> | null>;
28
+ /**
29
+ * 实现异步迭代器协议,允许使用 for-await-of 循环逐个获取选中的线段
30
+ * 注意:每次迭代都会调用 getLines 等待用户点击,直至选择器被销毁
31
+ */
32
+ [Symbol.asyncIterator](): this;
33
+ /**
34
+ * 异步迭代器的 next 方法
35
+ * @returns 若选择器未结束且能获取到线段,则返回 { value, done: false };否则返回 { done: true }
36
+ */
37
+ next(): Promise<{
38
+ value: LineSegment<Record<string, any>>;
39
+ done: boolean;
40
+ } | {
41
+ value: undefined;
42
+ done: boolean;
43
+ }>;
44
+ }
@@ -0,0 +1,86 @@
1
+ import { LineSegment } from '../../../../utils/algorithms/LineSegment';
2
+ import { Editor } from '../Editor';
3
+ import { Point } from '../../../../utils/algorithms/Point';
4
+ import { DragControlPoint } from './DragControlPoint';
5
+ import { SnapController } from './SnapController';
6
+ import { Quadtree } from '../../../../utils';
7
+ /** 吸附线段类型:全部 / 墙体 / 洞口 / 通道入口 / 门 / 窗 */
8
+ export type LineType = ("wall" | "balconyRailing" | "hole" | "passageEntrance" | "door" | "window")[] | "all" | "none";
9
+ export type MobileTrigger = "dragControlPoint" | "pointerdown";
10
+ export declare class PointerFollowMove {
11
+ snapController: SnapController;
12
+ protected editor: Editor;
13
+ protected currentSelectLine: LineSegment | null;
14
+ protected pos: Point | null;
15
+ private snapType;
16
+ private snapRadius;
17
+ private emptySpace;
18
+ protected ended: boolean;
19
+ private _paused;
20
+ mobileTrigger: MobileTrigger;
21
+ /** 存储事件注销函数的数组 */
22
+ eventCancels: any[];
23
+ /** 是否暂停 */
24
+ get paused(): boolean;
25
+ /** 鼠标移动时的回调,参数为当前吸附到的线段(可能为 null)以及完整的吸附结果 */
26
+ onPointerMove?: (point: Point | null, line: LineSegment | null) => void;
27
+ onMobileStart?: (point: Point) => void;
28
+ onMobileEnd?: (point: Point) => void;
29
+ constructor(editor: Editor, point?: Point, mobileTrigger?: MobileTrigger, quadtree?: Quadtree);
30
+ dragControlPoint?: DragControlPoint;
31
+ /**
32
+ * 初始化:监听编辑器的鼠标位置变化事件
33
+ */
34
+ private init;
35
+ /**
36
+ * 尝试从给定线段上获取一个洞口(或门洞/窗洞等开洞元素)
37
+ * @param line 基础线段(墙体)
38
+ * @param point 鼠标吸附的坐标点
39
+ * @returns 如果该点位于某个符合条件的洞口内,则返回表示该洞口的线段对象;否则返回 null
40
+ */
41
+ private getHole;
42
+ /**
43
+ * 判断一条线段是否为门
44
+ * @param line 线段
45
+ * @returns 如果线段的 userData.isDoor 为真,则返回该线段本身;否则返回 null
46
+ */
47
+ private getDoor;
48
+ /**
49
+ * 判断一条线段是否为栏杆
50
+ * @param line 线段
51
+ * @returns 如果线段的 userData.isDoor 为真,则返回该线段本身;否则返回 null
52
+ */
53
+ private getBalconyRailing;
54
+ hasSnapType(keys: string[]): boolean;
55
+ /**
56
+ * 鼠标位置变化时的处理函数
57
+ * 根据吸附结果和当前类型筛选,更新 currentSelectLine,并触发 onPointerMove 回调
58
+ */
59
+ private pointerPositionChange;
60
+ /**
61
+ * 设置要筛选的线段类型
62
+ * @param type 线段类型
63
+ * @returns this,支持链式调用
64
+ */
65
+ setEmptySpace(emptySpace: boolean): this;
66
+ /**
67
+ * 设置要筛选的线段类型
68
+ * @param type 线段类型
69
+ * @returns this,支持链式调用
70
+ */
71
+ setType(snapType: LineType): this;
72
+ /**
73
+ * 设置吸附半径
74
+ * @param adsorptRadius 半径(世界单位)
75
+ * @returns this,支持链式调用
76
+ */
77
+ setSnapRadius(adsorptRadius: number): this;
78
+ /** 暂停吸附响应(鼠标移动时将不再更新选中状态) */
79
+ pause(): void;
80
+ /** 恢复吸附响应 */
81
+ resume(): void;
82
+ /**
83
+ * 销毁选择器:注销所有事件监听,标记为已结束,释放资源
84
+ */
85
+ destroy(): void;
86
+ }
@@ -0,0 +1,32 @@
1
+ import { LineSegment, Point, Quadtree } from '../../../../utils';
2
+ import { Editor } from '../Editor';
3
+ export type SnapResult = {
4
+ point: Point;
5
+ find: boolean;
6
+ mode: string;
7
+ line: LineSegment<Record<string, any>>;
8
+ } | {
9
+ point: Point;
10
+ find: boolean;
11
+ line: undefined;
12
+ mode: undefined;
13
+ };
14
+ /**
15
+ * 实现吸附类
16
+ */
17
+ export declare class SnapController {
18
+ editor: Editor;
19
+ lineSnap: boolean;
20
+ pointSnap: boolean;
21
+ quadtree: Quadtree;
22
+ radius: number;
23
+ outQuadtree: boolean;
24
+ constructor(editor: Editor, lines: LineSegment[] | Quadtree, radius?: number);
25
+ addLine(line: LineSegment): void;
26
+ removeLine(line: LineSegment): void;
27
+ snap(point: Point, radius?: number): SnapResult;
28
+ /**
29
+ * 释放资源
30
+ */
31
+ destroy(): void;
32
+ }
@@ -0,0 +1,10 @@
1
+ import { Rectangle, LineSegment } from '../../../../utils';
2
+ import { Shape2D } from '../../../../utils/three-object-3d/Shape2D';
3
+ export declare class Wall2D extends Shape2D {
4
+ line: LineSegment;
5
+ rectangle: Rectangle;
6
+ width: number;
7
+ constructor(line: LineSegment, width?: number);
8
+ setLine(line: LineSegment): void;
9
+ dispose(): void;
10
+ }
@@ -0,0 +1,14 @@
1
+ import { Component, ComponentContainer } from '../../../../utils/ecs';
2
+ import * as THREE from "three";
3
+ export declare class DxfLineModel extends Component<{
4
+ modelUpdate: {
5
+ model: THREE.Group;
6
+ };
7
+ }> {
8
+ static name: string;
9
+ dxfLineModel: THREE.LineSegments<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>;
10
+ dxfDoorsLineModel: THREE.LineSegments<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>;
11
+ dxfModelGroup: THREE.Group<THREE.Object3DEventMap>;
12
+ onAddFromParent(parent: ComponentContainer): void;
13
+ updateMode(): void;
14
+ }
@@ -0,0 +1,61 @@
1
+ import { Component, ComponentContainer } from '../../../../utils/ecs';
2
+ import { Dxf } from '../../../components/Dxf';
3
+ import { Variable } from '../../../components/Variable';
4
+ import * as THREE from "three";
5
+ export declare class WhiteModel extends Component<{
6
+ updateModel: {
7
+ whiteModelGroup: THREE.Group;
8
+ };
9
+ }> {
10
+ static name: string;
11
+ Dxf: Dxf | null;
12
+ Variable: Variable | null;
13
+ whiteModelGroup: THREE.Group<THREE.Object3DEventMap>;
14
+ whiteModelLineGroup: THREE.Group<THREE.Object3DEventMap>;
15
+ buildGround: boolean;
16
+ itemList: any[];
17
+ promise?: Promise<THREE.Group>;
18
+ /** 设置物品列表
19
+ * @param itemList
20
+ */
21
+ setItemList(itemList: any): void;
22
+ onAddFromParent(parent: ComponentContainer): void;
23
+ /**
24
+ * 重新生成模型
25
+ */
26
+ regenerateModel(): void;
27
+ private updateModel;
28
+ /**
29
+ * 转为obj
30
+ * @returns
31
+ */
32
+ toOBJ(): Promise<string>;
33
+ /**
34
+ * 转为 glb
35
+ * @param binary
36
+ * @returns
37
+ */
38
+ toGltf(binary?: boolean): Promise<string | ArrayBuffer | undefined>;
39
+ /**
40
+ * 转为 OBJBlob
41
+ * @returns
42
+ */
43
+ toOBJBlob(): Promise<Blob | undefined>;
44
+ /**
45
+ * 转为 GltfBlob
46
+ * @returns
47
+ */
48
+ toGltfBlob(binary?: boolean): Promise<Blob | undefined>;
49
+ /**
50
+ * 下载 OBJ
51
+ * @param filename
52
+ * @returns
53
+ */
54
+ downloadOBJ(filename: string): Promise<void>;
55
+ /**
56
+ * 下载 Gltf
57
+ * @param filename
58
+ * @returns
59
+ */
60
+ downloadGltf(filename: string, binary?: boolean): Promise<void>;
61
+ }
@@ -0,0 +1,2 @@
1
+ export * from './WhiteModel';
2
+ export * from './DxfLineModel';
@@ -0,0 +1,11 @@
1
+ import { DxfSystem } from '../../DxfSystem';
2
+ import * as components from "./components";
3
+ type Option = {
4
+ whiteModel?: boolean;
5
+ dxfLineModel?: boolean;
6
+ };
7
+ declare function Model3dPlugin_(dxfSystem: DxfSystem, option?: Option): void;
8
+ declare const ModelDataPlugin: typeof Model3dPlugin_ & {
9
+ create(option?: Option): (dxfSystem: DxfSystem) => void;
10
+ };
11
+ export { components, ModelDataPlugin };
@@ -0,0 +1,13 @@
1
+ import { Component } from '../../../../utils/ecs';
2
+ export declare class DomContainer extends Component {
3
+ static name: string;
4
+ container: HTMLDivElement;
5
+ domElement: HTMLDivElement;
6
+ canvas: HTMLCanvasElement;
7
+ html2DRenderer: HTMLDivElement;
8
+ html3DRenderer: HTMLDivElement;
9
+ dialogLayer: HTMLDivElement;
10
+ style: HTMLStyleElement;
11
+ rect: DOMRect;
12
+ constructor();
13
+ }
@@ -0,0 +1,116 @@
1
+ import { Vector2 } from 'three';
2
+ import { Component } from '../../../../utils/ecs';
3
+ export declare class DomEventRegister extends Component<{
4
+ mousemove: {
5
+ x: number;
6
+ y: number;
7
+ moveX: number;
8
+ moveY: number;
9
+ };
10
+ mousedown: {
11
+ x: number;
12
+ y: number;
13
+ };
14
+ pointerdown: {
15
+ x: number;
16
+ y: number;
17
+ pointerId: number;
18
+ pointerCount: number;
19
+ };
20
+ pointermove: {
21
+ x: number;
22
+ y: number;
23
+ movementX: number;
24
+ movementY: number;
25
+ pointerId: number;
26
+ pointerCount: number;
27
+ };
28
+ pointerup: {
29
+ x: number;
30
+ y: number;
31
+ pointerId: number;
32
+ pointerCount: number;
33
+ };
34
+ click: {
35
+ x: number;
36
+ y: number;
37
+ };
38
+ }> {
39
+ static name: string;
40
+ cancelDefaultBehaviorList: ((e: KeyboardEvent) => boolean)[];
41
+ pointer: Vector2;
42
+ pointers: Vector2[];
43
+ isMouseEnters: boolean[];
44
+ private _isMouseEnter;
45
+ set isMouseEnter(isMouseEnter: boolean);
46
+ get isMouseEnter(): boolean;
47
+ private _mouseMoveEventProxylock;
48
+ set mouseMoveEventProxylock(lock: boolean);
49
+ get mouseMoveEventProxylock(): boolean;
50
+ /**
51
+ * 组件被添加到父组件上时调用
52
+ */
53
+ onAddFromParent(): void;
54
+ /** 判断点是否在 DOMRect 里, 以rect的目标元素为坐标系
55
+ * @param x
56
+ * @param y
57
+ * @param rect
58
+ * @returns
59
+ */
60
+ pointInDOMRect(x: number, y: number, rect: DOMRect): boolean;
61
+ /** 计算当前偏移
62
+ * @param touch
63
+ * @param rect
64
+ * @returns
65
+ */
66
+ computedPosition(touch: PointerEvent | Touch, rect: DOMRect): {
67
+ offsetX: number;
68
+ offsetY: number;
69
+ };
70
+ /** 更新鼠标
71
+ * @param e
72
+ */
73
+ updatePointer(e: PointerEvent | TouchEvent): void;
74
+ /**
75
+ * 初始化基础事件代理
76
+ */
77
+ initBaseEventProxy(): void;
78
+ /** 指针事件代理
79
+ */
80
+ initPointerEventProxy(): void;
81
+ /**
82
+ * 初始化鼠标事件代理(判断鼠标是否在domElement上)
83
+ */
84
+ initMouseMoveEventProxy(): void;
85
+ /**
86
+ * 初始化键盘事件
87
+ */
88
+ initKeyEvent(): void;
89
+ /**
90
+ * 初始化滚轮事件
91
+ */
92
+ initWheelEvent(): void;
93
+ /**
94
+ * 根据domElement的cursor自动设置body的cursor
95
+ */
96
+ autoBodyCursor(): void;
97
+ /**
98
+ * @param callBack
99
+ */
100
+ addCancelDefaultBehavior(callBack: (e: KeyboardEvent) => boolean): this;
101
+ destroy(): void;
102
+ /**
103
+ *
104
+ * @param el
105
+ * @param callBack
106
+ * @param offset
107
+ * @param condition
108
+ */
109
+ static dragMoveHelper(el: HTMLElement, callBack: (offset: {
110
+ x: number;
111
+ y: number;
112
+ }, mx: number, my: number) => void, offset?: {
113
+ x: number;
114
+ y: number;
115
+ }, condition?: () => boolean): () => void;
116
+ }
@@ -0,0 +1,74 @@
1
+ import { Component, ComponentContainer } from '../../../../utils/ecs';
2
+ export declare class EventInput extends Component<{
3
+ codeChange: {
4
+ code: string;
5
+ mode: "up" | "down";
6
+ };
7
+ }> {
8
+ static name: string;
9
+ keyList: Set<string>;
10
+ mouseList: Set<string>;
11
+ private keyCombinationMap;
12
+ currentKeyCombinationMap: Map<string, number>;
13
+ get activeCodeCount(): number;
14
+ /**
15
+ *
16
+ * @param parent
17
+ */
18
+ onAddFromParent(parent: ComponentContainer): void;
19
+ /** 添加取消浏览器默认行为规则
20
+ * @param callBack
21
+ */
22
+ addCancelDefaultBehavior(callBack: (input: EventInput) => boolean): void;
23
+ /**
24
+ * 计算组合按键
25
+ */
26
+ private _computeKeyCombinations;
27
+ /**
28
+ * 添加组合按键
29
+ * @param name
30
+ * @param keys
31
+ * @param count
32
+ */
33
+ addKeyCombination(name: string, keys: string[], count?: number): void;
34
+ /**
35
+ * 移除组合按键
36
+ * @param name
37
+ */
38
+ removeKeyCombination(name: string): void;
39
+ /**
40
+ * 是否按下按键
41
+ * @param key
42
+ * @returns
43
+ */
44
+ isKeyDown(key: string): boolean;
45
+ /**
46
+ * 是否按下按键组
47
+ * @param keys
48
+ * @returns
49
+ */
50
+ isKeyDowns(keys: string[]): boolean;
51
+ /**
52
+ * 是否按下按键组中部分
53
+ * @param keys
54
+ * @returns
55
+ */
56
+ isSomeKeyDowns(keys: string[]): boolean;
57
+ /**
58
+ * 是否按下按键组中所有,并且只按下按键组中的按键
59
+ * @param keys
60
+ * @returns
61
+ */
62
+ isOnlyKeyDowns(keys: string[]): boolean;
63
+ /**
64
+ *
65
+ * @param keys
66
+ * @returns
67
+ */
68
+ isOnlyKeyDown(key: string): boolean;
69
+ /**
70
+ *
71
+ * @param name
72
+ */
73
+ isKeyCombination(name: string): boolean;
74
+ }
@@ -0,0 +1,13 @@
1
+ import { Component, ComponentContainer } from '../../../../utils/ecs';
2
+ import { Point } from '../../../../utils/algorithms/Point';
3
+ export interface PointGroup {
4
+ points: Point[];
5
+ indices: number[];
6
+ rectIndices: number[];
7
+ }
8
+ export declare class ModelDataRender extends Component {
9
+ static name: string;
10
+ onAddFromParent(parent: ComponentContainer): void;
11
+ dxf(parent: ComponentContainer): void;
12
+ whiteModel(parent: ComponentContainer): void;
13
+ }
@@ -0,0 +1,100 @@
1
+ import { CSS3DRenderer, CSS3DObject, CSS3DSprite } from 'three/addons/renderers/CSS3DRenderer.js';
2
+ import { CSS2DRenderer, CSS2DObject } from 'three/addons/renderers/CSS2DRenderer.js';
3
+ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
4
+ import { Component } from '../../../../utils/ecs';
5
+ import { Point } from '../../../../utils/algorithms/Point';
6
+ import { LineSegment } from '../../../../utils/algorithms/LineSegment';
7
+ import * as THREE from "three";
8
+ import type * as CSS from "csstype";
9
+ export interface RendererDescription {
10
+ canvas: HTMLCanvasElement;
11
+ orbitControls?: {
12
+ enableDamping?: boolean;
13
+ dampingFactor?: number;
14
+ domElement: HTMLElement;
15
+ };
16
+ htmlRenderer?: {
17
+ '2d'?: HTMLElement;
18
+ '3d'?: HTMLElement;
19
+ };
20
+ resizeObserver?: HTMLElement | null;
21
+ scene?: THREE.Scene;
22
+ camera?: THREE.PerspectiveCamera | THREE.OrthographicCamera | THREE.Camera;
23
+ }
24
+ export declare class Renderer extends Component<{
25
+ resize: {
26
+ width: number;
27
+ height: number;
28
+ };
29
+ }> {
30
+ static name: string;
31
+ static CSS2DObject: typeof CSS2DObject;
32
+ static CSS3DObject: typeof CSS3DObject;
33
+ static CSS3DSprite: typeof CSS3DSprite;
34
+ static Group: typeof THREE.Group;
35
+ static Object3D: typeof THREE.Object3D;
36
+ static Mesh: typeof THREE.Mesh;
37
+ static Line: typeof THREE.Line;
38
+ static LineSegments: typeof THREE.LineSegments;
39
+ static Points: typeof THREE.Points;
40
+ scene: THREE.Scene;
41
+ camera: THREE.PerspectiveCamera | THREE.OrthographicCamera;
42
+ renderer: THREE.WebGLRenderer;
43
+ orbitControls?: OrbitControls;
44
+ private resizeObserver?;
45
+ description: RendererDescription;
46
+ html2DRenderer?: CSS2DRenderer;
47
+ html3DRenderer?: CSS3DRenderer;
48
+ container: THREE.Group<THREE.Object3DEventMap>;
49
+ container2: THREE.Group<THREE.Object3DEventMap>;
50
+ onUpdate?: () => void;
51
+ onResize?: (width: number, height: number) => void;
52
+ width: number;
53
+ height: number;
54
+ private tweenTaskList;
55
+ constructor(description: RendererDescription);
56
+ render(): void;
57
+ /**
58
+ * 世界坐标转屏幕坐标
59
+ * @param worldPosition
60
+ * @param camera
61
+ * @param renderer
62
+ * @returns
63
+ */
64
+ worldToScreenPosition(worldPosition: THREE.Vector3): THREE.Vector2;
65
+ cameraPositionRecord: [THREE.Vector3, THREE.Quaternion][];
66
+ /**
67
+ * 相机
68
+ * @param position
69
+ * @param lookAt
70
+ * @param onEnd
71
+ */
72
+ cameraTo(position: THREE.Vector3, lookAt: THREE.Vector3, onEnd?: any): void;
73
+ cameraBack(): void;
74
+ /**
75
+ * 创建点
76
+ * @param pos
77
+ */
78
+ createPointMesh(pos?: Point | THREE.Vector3, size?: number, parameters?: THREE.MeshBasicMaterialParameters, parent?: THREE.Object3D): THREE.Mesh<THREE.SphereGeometry, THREE.MeshBasicMaterial, THREE.Object3DEventMap>;
79
+ /**
80
+ * 创建文本
81
+ * @param text
82
+ * @param pos
83
+ * @param style
84
+ */
85
+ createText(text: any, pos?: Point | THREE.Vector3, style?: CSS.Properties, parent?: THREE.Object3D): CSS2DObject;
86
+ /**
87
+ * 创建几何缓冲区
88
+ * @param map
89
+ * @param count
90
+ */
91
+ createLineSegments(map: Record<string, number[]> | LineSegment[], count: number, parameters?: THREE.LineBasicMaterialParameters, parent?: THREE.Object3D): THREE.LineSegments;
92
+ /** 创建点
93
+ * @param point
94
+ * @param parameters
95
+ * @param parent
96
+ * @returns
97
+ */
98
+ createCircle(point: (Point | THREE.Vector3) | (Point | THREE.Vector3)[], parameters?: THREE.PointsMaterialParameters, parent?: THREE.Object3D): THREE.Points<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.PointsMaterial, THREE.Object3DEventMap>;
99
+ destroy(): void;
100
+ }
@@ -0,0 +1,5 @@
1
+ export * from './DomContainer';
2
+ export * from './Renderer';
3
+ export * from './ModelDataRender';
4
+ export * from './DomEventRegister';
5
+ export * from './EventInput';