zyf-model-engine 0.0.2 → 0.2.0

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 (111) hide show
  1. package/index.cjs +293 -0
  2. package/index.d.mts +1 -0
  3. package/index.d.ts +1 -0
  4. package/index.mjs +21653 -0
  5. package/package.json +33 -12
  6. package/style.css +1 -1
  7. package/types/components/CSvgIcon/components/SvgPathIcon.vue.d.ts +9 -0
  8. package/types/components/CSvgIcon/defaultIcons.d.ts +23 -0
  9. package/types/components/CSvgIcon/index.vue.d.ts +30 -0
  10. package/types/components/Empty/index.vue.d.ts +16 -0
  11. package/types/components/Overflow/index.vue.d.ts +11 -0
  12. package/types/components/UtilsMenu/components/BaseInfo/index.vue.d.ts +122 -0
  13. package/types/components/UtilsMenu/components/Card/index.vue.d.ts +42 -0
  14. package/types/components/UtilsMenu/components/ComInfo/index.vue.d.ts +128 -0
  15. package/types/components/UtilsMenu/components/Config/index.vue.d.ts +8 -0
  16. package/types/components/UtilsMenu/components/Cutting/clipping.d.ts +56 -0
  17. package/types/components/UtilsMenu/components/Cutting/index.vue.d.ts +128 -0
  18. package/types/components/UtilsMenu/components/Measure/index.vue.d.ts +122 -0
  19. package/types/components/UtilsMenu/components/Measure/interface/index.d.ts +5 -0
  20. package/types/components/UtilsMenu/components/Measure/measure.d.ts +106 -0
  21. package/types/components/UtilsMenu/components/ModelTree/index.vue.d.ts +875 -0
  22. package/types/components/UtilsMenu/components/ModelTree/interface/index.d.ts +19 -0
  23. package/types/components/UtilsMenu/components/ModelTree/utils/index.d.ts +13 -0
  24. package/types/components/UtilsMenu/components/Roam/index.vue.d.ts +125 -0
  25. package/types/components/UtilsMenu/components/SubMenu/index.vue.d.ts +18 -0
  26. package/types/components/UtilsMenu/index.vue.d.ts +15 -0
  27. package/types/components/UtilsMenu/interface/index.d.ts +129 -0
  28. package/types/index-dxf.vue.d.ts +15 -0
  29. package/types/index.d.ts +209 -0
  30. package/types/index.vue.d.ts +18 -0
  31. package/types/libs/CFace.d.ts +16 -0
  32. package/types/libs/CLabel.d.ts +13 -0
  33. package/types/libs/CLine.d.ts +49 -0
  34. package/types/libs/CText.d.ts +17 -0
  35. package/types/libs/MathUtils.d.ts +26 -0
  36. package/types/libs/ViewCube.d.ts +21 -0
  37. package/types/libs/materials.d.ts +4 -0
  38. package/types/libs/svg.d.ts +26 -0
  39. package/types/libs/types.d.ts +177 -0
  40. package/types/main.d.ts +22 -0
  41. package/types/manager/highLightMeshManager.d.ts +31 -0
  42. package/types/manager/lightManager.d.ts +35 -0
  43. package/types/manager/rayCasterManager.d.ts +18 -0
  44. package/types/tools/Events.d.ts +15 -0
  45. package/types/tools/math.d.ts +13 -0
  46. package/types/vendor/DXFPaser/BatchingKey.d.ts +25 -0
  47. package/types/vendor/DXFPaser/DxfFetcher.d.ts +6 -0
  48. package/types/vendor/DXFPaser/DxfScene.d.ts +95 -0
  49. package/types/vendor/DXFPaser/DxfWorker.d.ts +44 -0
  50. package/types/vendor/DXFPaser/DynamicBuffer.d.ts +30 -0
  51. package/types/vendor/DXFPaser/Entity.d.ts +18 -0
  52. package/types/vendor/DXFPaser/MTextFormatParser.d.ts +15 -0
  53. package/types/vendor/DXFPaser/MaterialKey.d.ts +8 -0
  54. package/types/vendor/DXFPaser/RBTree.d.ts +5 -0
  55. package/types/vendor/DXFPaser/TextRenderer.d.ts +43 -0
  56. package/types/vendor/DXFPaser/index.d.ts +26 -0
  57. package/types/vendor/controls/BaseArrow.d.ts +20 -0
  58. package/types/vendor/controls/FirstPersonControls.d.ts +32 -0
  59. package/types/vendor/controls/FlyControls.d.ts +18 -0
  60. package/types/vendor/controls/OrbitControls.d.ts +75 -0
  61. package/types/vendor/controls/TransformControls.d.ts +41 -0
  62. package/types/vendor/controls/directionControls.d.ts +26 -0
  63. package/types/vendor/loaders/GLTFLoader.d.ts +71 -0
  64. package/types/workbench/DxfViewer.d.ts +16 -0
  65. package/types/workbench/clickInfo.d.ts +24 -0
  66. package/types/workbench/clipping.d.ts +62 -0
  67. package/types/workbench/dxfMeasure.d.ts +92 -0
  68. package/types/workbench/dxfTools.d.ts +88 -0
  69. package/types/workbench/functionalComponent.d.ts +127 -0
  70. package/types/workbench/modelTree.d.ts +89 -0
  71. package/build/getEnv.d.ts +0 -13
  72. package/build/plugins.d.ts +0 -7
  73. package/build/proxy.d.ts +0 -11
  74. package/index.html +0 -7
  75. package/logo.png +0 -0
  76. package/manifest.webmanifest +0 -1
  77. package/registerSW.js +0 -1
  78. package/src/api/config/servicePort.d.ts +0 -2
  79. package/src/api/enums/httpEnum.d.ts +0 -29
  80. package/src/api/helper/axiosCancel.d.ts +0 -21
  81. package/src/api/helper/axiosFileCancel.d.ts +0 -27
  82. package/src/api/helper/checkStatus.d.ts +0 -6
  83. package/src/api/index.d.ts +0 -26
  84. package/src/api/interface/index.d.ts +0 -18
  85. package/src/components/CTree/interface/index.d.ts +0 -6
  86. package/src/components/Grid/interface/index.d.ts +0 -5
  87. package/src/components/ProTable/interface/index.d.ts +0 -66
  88. package/src/config/index.d.ts +0 -5
  89. package/src/config/nprogress.d.ts +0 -3
  90. package/src/config/piniaPersist.d.ts +0 -10
  91. package/src/config/serviceLoading.d.ts +0 -5
  92. package/src/enums/httpEnum.d.ts +0 -19
  93. package/src/hooks/interface/index.d.ts +0 -30
  94. package/src/hooks/useOnline.d.ts +0 -6
  95. package/src/hooks/useTable.d.ts +0 -47
  96. package/src/main.d.ts +0 -1
  97. package/src/stores/commonStore.d.ts +0 -2
  98. package/src/stores/index.d.ts +0 -2
  99. package/src/stores/interface/index.d.ts +0 -1
  100. package/src/utils/color.d.ts +0 -28
  101. package/src/utils/commonUtils.d.ts +0 -63
  102. package/src/utils/errorHandler.d.ts +0 -5
  103. package/src/utils/is.d.ts +0 -82
  104. package/src/utils/layoutUtils.d.ts +0 -44
  105. package/src/utils/localUtils.d.ts +0 -24
  106. package/src/utils/serviceDict.d.ts +0 -7
  107. package/sw.js +0 -1
  108. package/vite.config.d.ts +0 -2
  109. package/workbox-3e911b1d.js +0 -1
  110. package/zyf-model-engine.mjs +0 -45118
  111. package/zyf-model-engine.umd.js +0 -81
@@ -0,0 +1,26 @@
1
+ function LinearColor(c: number): number;
2
+
3
+ function SRgbColor(c: number): number;
4
+
5
+ function Luminance(color: number): number;
6
+
7
+ function ContrastRatio(c1: number, c2: number): number;
8
+
9
+ function HlsToRgb({ h, l, s }: { [k: string]: number }): number;
10
+
11
+ function RgbToHls(color: number): { h: number; l: number; s: number };
12
+
13
+ function Lighten(color: number, factor: number): number;
14
+
15
+ function Darken(color: number, factor: number): number;
16
+
17
+ const MathUtils = {
18
+ HlsToRgb,
19
+ RgbToHls,
20
+ Lighten,
21
+ Darken,
22
+ Luminance,
23
+ ContrastRatio
24
+ };
25
+
26
+ export default MathUtils;
@@ -0,0 +1,21 @@
1
+ import { Box3, Camera, Group } from 'three';
2
+ import { OrbitControls } from '../vendor/controls/OrbitControls';
3
+ declare class ViewCube {
4
+ readonly group: Group;
5
+ private sceneCamera;
6
+ private cubeCamera;
7
+ private element;
8
+ private meshs;
9
+ private currentMesh;
10
+ private raycaster;
11
+ private control;
12
+ private moveMesh;
13
+ private size;
14
+ private getAllObjectBox;
15
+ constructor(camera: Camera, cubeCamera: Camera, element: HTMLCanvasElement, getAllObjectBox: () => Box3, size?: number);
16
+ private mouseEvent;
17
+ private clickEvent;
18
+ private changeCamera;
19
+ setControl(control: OrbitControls): void;
20
+ }
21
+ export { ViewCube };
@@ -0,0 +1,4 @@
1
+ import { ShaderMaterial, SpriteMaterial } from 'three';
2
+ declare const pointMaterial: SpriteMaterial;
3
+ declare const shaderMterial: () => ShaderMaterial;
4
+ export { pointMaterial, shaderMterial };
@@ -0,0 +1,26 @@
1
+ declare const viewImg: () => HTMLDivElement;
2
+ declare const flyImg: () => HTMLDivElement;
3
+ declare const distanceImg: () => HTMLDivElement;
4
+ declare const personImg: () => HTMLDivElement;
5
+ declare const angleImg: () => HTMLDivElement;
6
+ declare const heightImg: () => HTMLDivElement;
7
+ declare const roamingImg: () => HTMLDivElement;
8
+ declare const screenImg: () => HTMLDivElement;
9
+ declare const cuttingImg: () => HTMLDivElement;
10
+ declare const measureImg: () => HTMLDivElement;
11
+ declare const measureImg2: () => HTMLDivElement;
12
+ declare const infoImg: () => HTMLDivElement;
13
+ declare const fullImg: () => HTMLDivElement;
14
+ declare const localCutting: () => HTMLDivElement;
15
+ declare const globalCutting: () => HTMLDivElement;
16
+ declare const triangleRound: () => HTMLDivElement;
17
+ declare const checkBox: () => HTMLDivElement;
18
+ declare const cutBox: () => HTMLDivElement;
19
+ declare const verCut: () => HTMLDivElement;
20
+ declare function iconSet(): HTMLDivElement;
21
+ declare function iconSetting(): HTMLDivElement;
22
+ declare function areaImg(): HTMLDivElement;
23
+ declare function layersImg(): HTMLDivElement;
24
+ declare function turnImg(): HTMLDivElement;
25
+ declare function settingImg(): HTMLDivElement;
26
+ export { viewImg, checkBox, iconSet, triangleRound, flyImg, measureImg, fullImg, infoImg, distanceImg, personImg, angleImg, heightImg, roamingImg, screenImg, cuttingImg, localCutting, globalCutting, verCut, cutBox, measureImg2, iconSetting, areaImg, layersImg, turnImg, settingImg };
@@ -0,0 +1,177 @@
1
+ import { Color, Texture, Vector3, WebGLCubeRenderTarget, Material, MeshBasicMaterialParameters, Object3D } from 'three';
2
+ import { UtilsMenuProps } from '../components/UtilsMenu/interface/index';
3
+ export interface textType {
4
+ text: string;
5
+ hWorldText?: number;
6
+ hPxText?: number;
7
+ hWorldAll?: number;
8
+ vertical?: boolean;
9
+ fgColor?: string;
10
+ fontFamily?: string;
11
+ letterSpacing?: number;
12
+ bold?: string;
13
+ italic?: boolean;
14
+ textAlign?: CanvasRenderingContext2D["textAlign"];
15
+ bgColor?: string;
16
+ }
17
+ export type controlParams = {
18
+ scale?: number;
19
+ translate?: number;
20
+ moveSpeed?: number;
21
+ rotateSpeed?: number;
22
+ };
23
+ export interface LightParams {
24
+ color?: number;
25
+ intensity?: number;
26
+ distance?: number;
27
+ decay?: number;
28
+ position?: Vector3;
29
+ angle?: number;
30
+ penumbra?: number;
31
+ }
32
+ export interface FlyMaterialTypes {
33
+ time?: number;
34
+ number?: number;
35
+ speed?: number;
36
+ length?: number;
37
+ size?: number;
38
+ color?: Vector3;
39
+ }
40
+ export type blankMethod = (data: any, id?: any) => void;
41
+ export interface ComponentConfig {
42
+ wrapper: HTMLBaseElement;
43
+ resetView?: {
44
+ img?: string;
45
+ text?: string;
46
+ };
47
+ roaming?: {
48
+ img?: string;
49
+ text?: string;
50
+ moveMax?: number;
51
+ rotateMax?: number;
52
+ };
53
+ screenshot?: {
54
+ img?: string;
55
+ text?: string;
56
+ download?: boolean;
57
+ eventName?: string;
58
+ };
59
+ cutting?: {
60
+ img?: string;
61
+ text?: string;
62
+ };
63
+ measure?: {
64
+ img?: string;
65
+ text?: string;
66
+ };
67
+ information?: {
68
+ callback: (guid: string, fileId: number) => Promise<any[]>;
69
+ img?: string;
70
+ text?: string;
71
+ color?: number;
72
+ opacity?: number;
73
+ };
74
+ fullScreen?: {
75
+ img?: string;
76
+ text?: string;
77
+ };
78
+ fitView?: {
79
+ img?: string;
80
+ text?: string;
81
+ padding?: number;
82
+ };
83
+ handleLayers?: {
84
+ img?: string;
85
+ text?: string;
86
+ };
87
+ dxfMeasure?: {
88
+ img?: string;
89
+ text?: string;
90
+ };
91
+ colorTurn?: {
92
+ img?: string;
93
+ text?: string;
94
+ };
95
+ baseInfo?: {
96
+ img?: string;
97
+ text?: string;
98
+ };
99
+ baseSetting?: {
100
+ img?: string;
101
+ text?: string;
102
+ };
103
+ }
104
+ type DeepPartial<T> = {
105
+ [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
106
+ };
107
+ export interface MouseEventType {
108
+ type: keyof HTMLElementEventMap;
109
+ callback?: (...arg: any[]) => any;
110
+ executeBeforeCallback?: (...arg: any[]) => any;
111
+ options?: boolean | AddEventListenerOptions;
112
+ rayResultOption?: {
113
+ highLightMesh?: boolean;
114
+ focus?: boolean;
115
+ useDefault?: boolean;
116
+ useRaycasterResult?: boolean;
117
+ intersectObjectsParams?: {
118
+ objects?: Object3D[];
119
+ recursive?: boolean;
120
+ optionalTarget?: any[];
121
+ };
122
+ };
123
+ }
124
+ export interface ViewerOptions {
125
+ baseConfig?: {
126
+ background?: Texture | Color | WebGLCubeRenderTarget | null;
127
+ clearColor?: number;
128
+ transparent?: number;
129
+ clickHighlight?: boolean;
130
+ };
131
+ cube?: {
132
+ show: boolean;
133
+ size?: number;
134
+ };
135
+ light?: {
136
+ ambient?: LightParams;
137
+ direct?: LightParams;
138
+ };
139
+ rayCaster?: MouseEventType | MouseEventType[] | undefined;
140
+ highLightMeshMaterial?: Material | MeshBasicMaterialParameters;
141
+ utilsMenu?: DeepPartial<UtilsMenuProps>;
142
+ hiddenMeshGuids?: string[];
143
+ maximumNumberOfThreads?: number;
144
+ }
145
+ export interface featureItem {
146
+ geometry: {
147
+ coordinates: Array<Array<Array<number>>>;
148
+ type: string;
149
+ };
150
+ properties: {
151
+ Id: number;
152
+ height: number;
153
+ };
154
+ type: string;
155
+ }
156
+ export interface TreeConfig {
157
+ model: {
158
+ show: boolean;
159
+ name: string;
160
+ };
161
+ floor: {
162
+ show: boolean;
163
+ name: string;
164
+ layer: number;
165
+ };
166
+ component: {
167
+ show: boolean;
168
+ name: string;
169
+ layer: number;
170
+ };
171
+ background: string;
172
+ highLightMeshs: boolean;
173
+ eventName: string;
174
+ triangleClickCallBack?: Function;
175
+ inputPointerupCallBack?: Function;
176
+ }
177
+ export {};
@@ -0,0 +1,22 @@
1
+ import { default as Viewer } from './index';
2
+ import { default as ViewerCom } from './index.vue';
3
+ import { default as DxfViewerCom } from './index-dxf.vue';
4
+ import { DxfViewer } from './workbench/DxfViewer';
5
+ import { DxfTools, FitView, HandleLayers, dxfMeasure } from './workbench/dxfTools';
6
+ import { Measure } from './components/UtilsMenu/components/Measure/measure';
7
+ import { Clipping } from './workbench/clipping';
8
+ import { information } from './workbench/clickInfo';
9
+ import { DXFMeasure } from './workbench/dxfMeasure';
10
+ import { default as ModelTree } from './workbench/modelTree';
11
+ import { FunctionalComponent, resetView, roaming, screenShot, cutting, fullScreen, constructInfo, measureFun } from './workbench/functionalComponent';
12
+ import { createTwoFace, createThreeFace } from './libs/CFace';
13
+ import { CLine } from './libs/CLine';
14
+ import { createText, createHeightText } from './libs/CText';
15
+ import { default as MathUtils } from './libs/MathUtils';
16
+ import { viewImg, checkBox, iconSet, triangleRound, flyImg, measureImg, fullImg, infoImg, distanceImg, personImg, angleImg, heightImg, roamingImg, screenImg, cuttingImg, localCutting, globalCutting, verCut, cutBox, measureImg2, iconSetting, layersImg, areaImg } from './libs/svg';
17
+ import { GLTFLoader } from './vendor/loaders/GLTFLoader';
18
+ import { calculateArea, calculateAngle } from './tools/math';
19
+ import { default as Event } from './tools/Events';
20
+ import { DxfParser } from './vendor/DXFPaser/index';
21
+ import * as THREE from "three";
22
+ export { ViewerCom, DxfViewerCom, Viewer, Measure, Clipping, information, ModelTree, FunctionalComponent, resetView, roaming, screenShot, cutting, fullScreen, constructInfo, measureFun, THREE, Event, DxfParser, DxfViewer, DXFMeasure, createTwoFace, createThreeFace, viewImg, checkBox, iconSet, triangleRound, flyImg, measureImg, fullImg, infoImg, distanceImg, personImg, angleImg, heightImg, roamingImg, screenImg, cuttingImg, localCutting, globalCutting, verCut, cutBox, measureImg2, iconSetting, CLine, createText, createHeightText, MathUtils, GLTFLoader, calculateArea, calculateAngle, layersImg, areaImg, DxfTools, FitView, HandleLayers, dxfMeasure };
@@ -0,0 +1,31 @@
1
+ import { BufferGeometry, Mesh, MeshBasicMaterial, LineBasicMaterial, LineSegments, Material, MeshBasicMaterialParameters } from 'three';
2
+ import { default as Viewer } from '../index';
3
+ export default class HighLightMeshManager {
4
+ private viewer;
5
+ highLightMesh: Mesh;
6
+ highLightMeshLine: LineSegments;
7
+ sparklingMesh: Mesh | Mesh[];
8
+ keyDisplay: Mesh[];
9
+ constructor(viewer: Viewer);
10
+ setHighLightMeshMaterial(meshMaterial: MeshBasicMaterial | MeshBasicMaterialParameters, lineMaterial?: LineBasicMaterial | MeshBasicMaterialParameters): void;
11
+ /**
12
+ * 高亮指定的 Mesh。
13
+ *
14
+ * @param ids - 需要高亮的 Mesh 的 ID 数组
15
+ * @param idType - ID 的类型,uuid 或 guid
16
+ * @param animation - 是否播放动画
17
+ */
18
+ setHighLightById(ids: string[], idType?: "uuid" | "guid", animation?: boolean, getMesh?: boolean): (Mesh<import('three').Geometry | BufferGeometry, Material | Material[]> | LineSegments<import('three').Geometry | BufferGeometry, Material | Material[]>)[];
19
+ /**
20
+ * 设置高亮 Mesh。
21
+ * @param geometry - 高亮的几何体
22
+ */
23
+ setHighLightMesh(geometry: BufferGeometry): void;
24
+ updateHighLightMeshLine(): void;
25
+ setKeyDisplay(mesh: Mesh | Mesh[]): void;
26
+ clearHeightMeshAndTreeHeightLight(): void;
27
+ /**
28
+ * 清除高亮 Mesh。
29
+ */
30
+ clearHighLightMesh(resetView?: boolean): void;
31
+ }
@@ -0,0 +1,35 @@
1
+ import { AmbientLight, DirectionalLight, PointLight, SpotLight } from 'three';
2
+ import { LightParams } from '../libs/types';
3
+ import { default as Viewer } from '../index';
4
+ /**
5
+ * 灯光管理器。
6
+ */
7
+ export default class LightManager {
8
+ private viewer;
9
+ constructor(viewer: Viewer);
10
+ /**
11
+ * 添加环境光。
12
+ * @param params - 灯光参数
13
+ * @returns 添加的环境光
14
+ */
15
+ addAmbientLight(params: LightParams): AmbientLight;
16
+ /**
17
+ * 添加点光源。
18
+ * @param params - 灯光参数
19
+ * @returns 添加的点光源
20
+ */
21
+ addPointLight(params: LightParams): PointLight;
22
+ /**
23
+ * 添加聚光灯。
24
+ * @param params - 灯光参数
25
+ * @returns 添加的聚光灯
26
+ */
27
+ addSpotLight(params: LightParams): SpotLight;
28
+ /**
29
+ * 添加平行光。
30
+ * @param params - 灯光参数
31
+ * @returns 添加的平行光
32
+ */
33
+ addDirectionalLight(params: LightParams): DirectionalLight;
34
+ updateLightIntensity(light: AmbientLight | DirectionalLight, intensity: number): void;
35
+ }
@@ -0,0 +1,18 @@
1
+ import { default as Viewer } from '../index';
2
+ import { MouseEventType } from '../libs/types';
3
+ export default class RayCasterManager {
4
+ private viewer;
5
+ private raycaster;
6
+ private eventHandler;
7
+ raycasterResultGuid: string;
8
+ private objs;
9
+ constructor(viewer: Viewer, event: MouseEventType | MouseEventType[]);
10
+ setEventHandler(event: MouseEventType | MouseEventType[]): void;
11
+ getRaycasterResult(event: Event, resultOption: MouseEventType["rayResultOption"]): {
12
+ [k: string]: any;
13
+ } | null;
14
+ /**
15
+ * 销毁场景:释放资源并停止渲染。
16
+ */
17
+ destroy(): void;
18
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @description 全局单例事件总线(发布-订阅模式),用于 Viewer 内部多模块间通信。
3
+ * 提供 on / off / emit 三个方法;emit 时会模拟真实事件的 event.target
4
+ * 使用示例:Events.on("clickMesh", e => {...}) / Events.emit({ type: "clickMesh", target: mesh })
5
+ */
6
+ declare class CustomEvent {
7
+ handlers: any;
8
+ constructor();
9
+ on(type: string, handler: (params: any) => void): void;
10
+ off(type: string, handler: (params: any) => void): void;
11
+ emit(event: any): void;
12
+ }
13
+ /** 全局事件总线单例(new CustomEvent()) */
14
+ declare const _default: CustomEvent;
15
+ export default _default;
@@ -0,0 +1,13 @@
1
+ import { Vector3 } from 'three';
2
+ /**
3
+ * 计算多点围成的凸多边形构造的面的面积
4
+ * @param points Vector3 数组
5
+ * @returns Number
6
+ */
7
+ export declare const calculateArea: (points: Vector3[]) => number;
8
+ /**
9
+ * 计算三点构成的角的角度
10
+ * @param points Vector3 数组
11
+ * @returns Number
12
+ */
13
+ export declare const calculateAngle: (points: Vector3[]) => number;
@@ -0,0 +1,25 @@
1
+ /** Key for render batches. */
2
+ export class BatchingKey {
3
+ layerName: string | null
4
+ blockName: string | null
5
+ geometryType: string | null
6
+ color: string | null
7
+ lineType: string | null
8
+ GeometryType: GeometryType
9
+ constructor(layerName?: string, blockName?: string, geometryType?: string, color?: string, lineType?: string)
10
+ Compare(other: any): number
11
+ IsIndexed(): boolean
12
+ IsInstanced(): boolean
13
+ }
14
+
15
+ interface GeometryType {
16
+ POINTS: 0,
17
+ LINES: 1,
18
+ INDEXED_LINES: 2,
19
+ TRIANGLES: 3,
20
+ INDEXED_TRIANGLES: 4,
21
+ BLOCK_INSTANCE: 5,
22
+ POINT_INSTANCE: 6
23
+ }
24
+
25
+ export function CompareValues(v1: number, v2: number): -1 | 0 | 1
@@ -0,0 +1,6 @@
1
+ // 请求到dxf文件 并且解读
2
+ export class DxfFetcher {
3
+ url: string
4
+ constructor(url: string)
5
+ async Fetch(): Promise<any>
6
+ }
@@ -0,0 +1,95 @@
1
+ import { DynamicBuffer, NativeType } from './DynamicBuffer';
2
+ import { BatchingKey } from './BatchingKey';
3
+ import { Matrix3, Vector2, Vector3 } from 'three';
4
+ import { TextRenderer } from './TextRenderer';
5
+ import { RBTree } from './RBTree';
6
+ import { MTextFormatParser } from './MTextFormatParser';
7
+ import { Entity } from './Entity';
8
+ interface object {
9
+ [k: string]: any;
10
+ }
11
+ interface vertex {
12
+ x: number;
13
+ y: number;
14
+ z: number;
15
+ }
16
+
17
+ export class DxfScene {
18
+ options: object;
19
+ origin: null | Vector2 | Vector3;
20
+ batches: RBTree;
21
+ layers: Map;
22
+ blocks: Map;
23
+ bounds: any;
24
+ pointShapeBlock: any;
25
+ numBlocksFlattened: number;
26
+ constructor(options: object);
27
+
28
+ async Build(dxf: object, fontFetchers: string[]): void;
29
+ async _FetchFonts(dxf: object): void;
30
+ private _ProcessDxfEntity(entity: object, blockCtx: any): void;
31
+ private _ProcessEntity(entity: object, blockCtx: any): void;
32
+ private _GetLineType(entity: any, vertex: any, blockCtx: any): 0;
33
+ private _IsPlainLine(entity: object): boolean;
34
+ *_DecomposeLine(entity: Entity, blockCtx: BlockContext): void;
35
+ private _GenerateBulgeVertices(vertices: any[], startVtx: vertex, endVtx: vertex, bulge: number): void;
36
+ private _GenerateArcVertices(obj: {
37
+ vertices: vertex[];
38
+ center: { x: number; y: number };
39
+ radius: number;
40
+ startAngle: number | null;
41
+ endAngle: number | null;
42
+ tessellationAngle: number | null;
43
+ yRadius: number | null;
44
+ transform: any | null;
45
+ }): void;
46
+ *_DecomposeArc(entity: Entity, blockCtx: BlockContext): void;
47
+ *_DecomposeCircle(entity: Entity, blockCtx: BlockContext): void;
48
+ *_DecomposeEllipse(entity: Entity, blockCtx: BlockContext): void;
49
+ *_DecomposePoint(entity: Entity, blockCtx: BlockContext): void;
50
+ private _CreatePointMarker(vertices: { x: number; y: number }[], markType: number, position: null | { x: number; y: number }): void;
51
+ private _CreatePointShapeBlock(): void;
52
+ *_Decompose3DFace(entity: Entity, blockCtx: BlockContext): void;
53
+ *_DecomposeSolid(entity: Entity, blockCtx: BlockContext): void;
54
+ *_DecomposeFace(entity: any, vertices: vertex[], blockCtx: any, wireframe: any, transform: any): void;
55
+ *_DecomposeText(entity: Entity, blockCtx: BlockContext): void;
56
+ *_DecomposeMText(entity: Entity, blockCtx: BlockContext): void;
57
+ private _ProcessInsert(entity: Entity, blockCtx: BlockContext): void;
58
+ private _FlattenBatch(blockBatch: any, layerName: string, blockColor: any, blockLineType: string, transform: any): void;
59
+ *_GenerateShapedPolyline(vertices: vertex[], layer: string, color: any, lineType: string, shape: any): void;
60
+ private _MirrorEntityVertices(entity: Entity, vertices: any[]): void;
61
+ *_DecomposePolyline(entity: Entity, vertices: any[]): void;
62
+ *_DecomposeSpline(entity: Entity, vertices: any[]): void;
63
+ _InterpolateSpline(t: number, degree: number, points: number[][], knots?: number[], weights?: number): number[];
64
+
65
+ _ProcessPoints(entity: Entity, blockCtx?: BlockContext): void;
66
+ _ProcessLineSegments(entity: Entity, blockCtx?: BlockContext): void;
67
+ _ProcessPolyline(entity: Entity, blockCtx?: BlockContext): void;
68
+ _ProcessTriangles(entity: Entity, blockCtx?: BlockContext): void;
69
+ _GetEntityColor(entity: Entity, blockCtx?: BlockContext): number;
70
+ _GetEntityLayer(entity: Entity, blockCtx?: BlockContext): string;
71
+ _GetEntityExtrusionTransform(entity: Entity): Matrix3;
72
+ _GetBatch(key: any): RenderBatch;
73
+ _TransformVertex(v: any, blockCtx?: BlockContext): { x: number; y: number };
74
+ _UpdateBounds(v: { x: number; y: number }): void;
75
+ _BuildScene(): {
76
+ vertices: ArrayBuffer;
77
+ indices: ArrayBuffer;
78
+ transforms: ArrayBuffer;
79
+ batches: any[];
80
+ layers: any[];
81
+ origin: any;
82
+ bounds: any;
83
+ hasMissingChars: any;
84
+ };
85
+ }
86
+
87
+ class BlockContext {
88
+ block: any;
89
+ type: string;
90
+ origin: any;
91
+ transform: Matrix3;
92
+ constructor(block: any, type: string);
93
+ }
94
+
95
+ export const ColorCode: { BY_LAYER: number; BY_BLOCK: number };
@@ -0,0 +1,44 @@
1
+ import { DxfFetcher } from './DxfFetcher';
2
+ import { DxfScene } from './DxfScene';
3
+ import { default as opentype } from './parser/opentype';
4
+ const MSG_SIGNATURE = "DxfWorkerMsg";
5
+
6
+ export class DxfWorker {
7
+ worker: any;
8
+ reqSeq: number;
9
+ requests: Map;
10
+ progressCbk: any;
11
+ WorkerMsg: {
12
+ LOAD: "LOAD";
13
+ PROGRESS: "PROGRESS";
14
+ DESTROY: "DESTROY";
15
+ };
16
+ Request: Request;
17
+ constructor(worker: any, isWorker?: boolean): void;
18
+ async Load(url: string, fonts: string[], options: { [k: string]: any }, progressCbk: (phase: any, processedSize: number, totalSize: number) => {}): Promise<any>;
19
+ async Destroy(noWait?: boolean): void;
20
+ async _ProcessRequest(event: any): void;
21
+ async _ProcessRequestMessage(type: string, data: any, transfers: any[], seq: any): any;
22
+ async _ProcessResponse(event: any): void;
23
+ async _OnError(error: string): void;
24
+ async _SendRequest(type: string, data?: any, progressCbk?: any): any;
25
+
26
+ _SendProgress(seq: any, phase: any, size: number, totalSize: number): void;
27
+ async _Load(url: string, fonts: string[], options: any, progressCbk: any): any;
28
+
29
+ _CreateFontFetchers(urls: string[], progressCbk: any): any;
30
+ _CloneOptions(options: any): any;
31
+ }
32
+
33
+ class Request {
34
+ seq: any;
35
+ progressCbk: any;
36
+ promise: Promise;
37
+ _Resolve: any;
38
+ _Reject: any;
39
+ constructor(seq: any, progressCbk: any);
40
+
41
+ async GetResponse(): Promise;
42
+ SetResponse(response): void;
43
+ SetError(error): void;
44
+ }
@@ -0,0 +1,30 @@
1
+ /** Typed-array-based buffer which can be dynamically extended. */
2
+
3
+ export class DynamicBuffer {
4
+ type: string;
5
+ capacity: number;
6
+ size: number;
7
+ buffer: any;
8
+ constructor(type: string, initialCapacity?: number);
9
+ GetSize(): number;
10
+ Push(value: any): any;
11
+ Get(index: number): any;
12
+ CopyTo(dstBuffer: any[], dstOffset: number, srcOffset?: number, size?: number): void;
13
+ _CheckGrow(): void;
14
+ }
15
+
16
+ export const NativeType: {
17
+ INT8: 0;
18
+ UINT8: 1;
19
+ UINT8_CLAMPED: 2;
20
+ INT16: 3;
21
+ UINT16: 4;
22
+ INT32: 5;
23
+ UINT32: 6;
24
+ INT64: 7;
25
+ UINT64: 8;
26
+ FLOAT32: 9;
27
+ FLOAT64: 10;
28
+ };
29
+
30
+ export function NativeArray(type: number): ArrayBuffer;
@@ -0,0 +1,18 @@
1
+ export class Entity {
2
+ type: number;
3
+ vertices: { x; y }[];
4
+ indices: number[];
5
+ layer: string;
6
+ color: number;
7
+ lineType: number;
8
+ shape: Boolean;
9
+ Type: {
10
+ POINTS: 0;
11
+ LINE_SEGMENTS: 1;
12
+ POLYLINE: 2;
13
+ TRIANGLES: 3;
14
+ };
15
+ constructor(object: { type: number; vertices: { x; y }[]; indices?: number[]; layer?: string; color: number; lineType?: number; shape?: boolean });
16
+ *_IterateVertices(startIndex: number, count: number): void;
17
+ *_IterateLineChunks(): void;
18
+ }
@@ -0,0 +1,15 @@
1
+ export class MTextFormatParser {
2
+ entities: any[];
3
+ EntityType: {
4
+ TEXT: 0;
5
+ SCOPE: 1;
6
+ PARAGRAPH: 2;
7
+ NON_BREAKING_SPACE: 3;
8
+ PARAGRAPH_ALIGNMENT: 4;
9
+ };
10
+ constructor();
11
+
12
+ Parse(text: string): void;
13
+ GetContent(): any[];
14
+ *GetText(): void;
15
+ }
@@ -0,0 +1,8 @@
1
+ export class MaterialKey {
2
+ instanceType: number;
3
+ geometryType: number;
4
+ color: number;
5
+ lineType: number;
6
+ constructor(instanceType: number, geometryType?: number, color?: number, lineType?: number);
7
+ Compare(other: any): any;
8
+ }
@@ -0,0 +1,5 @@
1
+ export class RBTree {
2
+ constructor(comparator: any);
3
+ insert(data: any): boolean;
4
+ remove(data: any): boolean;
5
+ }