@maqiuyao/dxf-viewer 0.1.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 (227) hide show
  1. package/README.md +79 -0
  2. package/dist/assets/vite-project.css +1 -0
  3. package/dist/dxf-viewer.cjs +1533 -0
  4. package/dist/dxf-viewer.js +33490 -0
  5. package/dist/src/dxfViewer/core/Configs.d.ts +250 -0
  6. package/dist/src/dxfViewer/core/Constants.d.ts +76 -0
  7. package/dist/src/dxfViewer/core/Units.d.ts +16 -0
  8. package/dist/src/dxfViewer/core/VersionManager.d.ts +14 -0
  9. package/dist/src/dxfViewer/core/camera/CameraManager.d.ts +81 -0
  10. package/dist/src/dxfViewer/core/camera/index.d.ts +1 -0
  11. package/dist/src/dxfViewer/core/camera-controls/CameraControls.d.ts +744 -0
  12. package/dist/src/dxfViewer/core/camera-controls/Constants.d.ts +2 -0
  13. package/dist/src/dxfViewer/core/camera-controls/EventDispatcher.d.ts +42 -0
  14. package/dist/src/dxfViewer/core/camera-controls/index.d.ts +2 -0
  15. package/dist/src/dxfViewer/core/camera-controls/types.d.ts +112 -0
  16. package/dist/src/dxfViewer/core/camera-controls/utils/extractClientCoordFromEvent.d.ts +7 -0
  17. package/dist/src/dxfViewer/core/camera-controls/utils/math-utils.d.ts +14 -0
  18. package/dist/src/dxfViewer/core/camera-controls/utils/notSupportedInOrthographicCamera.d.ts +2 -0
  19. package/dist/src/dxfViewer/core/canvas/CanvasRender.d.ts +49 -0
  20. package/dist/src/dxfViewer/core/canvas/Constants.d.ts +28 -0
  21. package/dist/src/dxfViewer/core/canvas/Drawable.d.ts +87 -0
  22. package/dist/src/dxfViewer/core/canvas/DrawableList.d.ts +40 -0
  23. package/dist/src/dxfViewer/core/canvas/index.d.ts +4 -0
  24. package/dist/src/dxfViewer/core/compare/BaseDxfCompareHelper.d.ts +104 -0
  25. package/dist/src/dxfViewer/core/compare/CompareDrawable.d.ts +30 -0
  26. package/dist/src/dxfViewer/core/compare/DxfCompareHelper.d.ts +76 -0
  27. package/dist/src/dxfViewer/core/compare/DxfCompareMarkupManager.d.ts +11 -0
  28. package/dist/src/dxfViewer/core/compare/index.d.ts +4 -0
  29. package/dist/src/dxfViewer/core/components/Container.d.ts +38 -0
  30. package/dist/src/dxfViewer/core/components/ProgressBar.d.ts +31 -0
  31. package/dist/src/dxfViewer/core/components/Spinner.d.ts +13 -0
  32. package/dist/src/dxfViewer/core/components/index.d.ts +3 -0
  33. package/dist/src/dxfViewer/core/controls/CameraControlsEx.d.ts +33 -0
  34. package/dist/src/dxfViewer/core/controls/Control.d.ts +17 -0
  35. package/dist/src/dxfViewer/core/controls/OrbitControls.d.ts +13 -0
  36. package/dist/src/dxfViewer/core/controls/PlanControls.d.ts +13 -0
  37. package/dist/src/dxfViewer/core/controls/index.d.ts +3 -0
  38. package/dist/src/dxfViewer/core/dxf/DxfCompare.d.ts +170 -0
  39. package/dist/src/dxfViewer/core/dxf/DxfConstants.d.ts +24 -0
  40. package/dist/src/dxfViewer/core/dxf/DxfLoader.d.ts +569 -0
  41. package/dist/src/dxfViewer/core/dxf/DxfObject.d.ts +44 -0
  42. package/dist/src/dxfViewer/core/dxf/DxfUtils.d.ts +79 -0
  43. package/dist/src/dxfViewer/core/dxf/HatchPatternShaders.d.ts +12 -0
  44. package/dist/src/dxfViewer/core/dxf/LinePatternShaders.d.ts +12 -0
  45. package/dist/src/dxfViewer/core/dxf/bspline.d.ts +7 -0
  46. package/dist/src/dxfViewer/core/dxf/dxfom-mtext.d.ts +46 -0
  47. package/dist/src/dxfViewer/core/dxf/dxfom-text.d.ts +16 -0
  48. package/dist/src/dxfViewer/core/dxf/index.d.ts +10 -0
  49. package/dist/src/dxfViewer/core/dxf/round10.d.ts +1 -0
  50. package/dist/src/dxfViewer/core/dxf-parser/AutoCadColorIndex.d.ts +8 -0
  51. package/dist/src/dxfViewer/core/dxf-parser/DxfBaseReader.d.ts +13 -0
  52. package/dist/src/dxfViewer/core/dxf-parser/DxfBinaryReader.d.ts +14 -0
  53. package/dist/src/dxfViewer/core/dxf-parser/DxfParser.d.ts +321 -0
  54. package/dist/src/dxfViewer/core/dxf-parser/DxfTextReader.d.ts +30 -0
  55. package/dist/src/dxfViewer/core/dxf-parser/ParseHelpers.d.ts +18 -0
  56. package/dist/src/dxfViewer/core/dxf-parser/entities/3dface.d.ts +11 -0
  57. package/dist/src/dxfViewer/core/dxf-parser/entities/arc.d.ts +16 -0
  58. package/dist/src/dxfViewer/core/dxf-parser/entities/attdef.d.ts +31 -0
  59. package/dist/src/dxfViewer/core/dxf-parser/entities/attrib.d.ts +31 -0
  60. package/dist/src/dxfViewer/core/dxf-parser/entities/circle.d.ts +13 -0
  61. package/dist/src/dxfViewer/core/dxf-parser/entities/dimension.d.ts +22 -0
  62. package/dist/src/dxfViewer/core/dxf-parser/entities/ellipse.d.ts +15 -0
  63. package/dist/src/dxfViewer/core/dxf-parser/entities/geomtry.d.ts +40 -0
  64. package/dist/src/dxfViewer/core/dxf-parser/entities/hatch.d.ts +104 -0
  65. package/dist/src/dxfViewer/core/dxf-parser/entities/image.d.ts +37 -0
  66. package/dist/src/dxfViewer/core/dxf-parser/entities/insert.d.ts +21 -0
  67. package/dist/src/dxfViewer/core/dxf-parser/entities/leader.d.ts +20 -0
  68. package/dist/src/dxfViewer/core/dxf-parser/entities/line.d.ts +10 -0
  69. package/dist/src/dxfViewer/core/dxf-parser/entities/lwpolyline.d.ts +17 -0
  70. package/dist/src/dxfViewer/core/dxf-parser/entities/mleader.d.ts +97 -0
  71. package/dist/src/dxfViewer/core/dxf-parser/entities/mtext.d.ts +18 -0
  72. package/dist/src/dxfViewer/core/dxf-parser/entities/ole2frame.d.ts +18 -0
  73. package/dist/src/dxfViewer/core/dxf-parser/entities/point.d.ts +11 -0
  74. package/dist/src/dxfViewer/core/dxf-parser/entities/polyline.d.ts +19 -0
  75. package/dist/src/dxfViewer/core/dxf-parser/entities/ray.d.ts +10 -0
  76. package/dist/src/dxfViewer/core/dxf-parser/entities/region.d.ts +10 -0
  77. package/dist/src/dxfViewer/core/dxf-parser/entities/seqend.d.ts +8 -0
  78. package/dist/src/dxfViewer/core/dxf-parser/entities/solid.d.ts +10 -0
  79. package/dist/src/dxfViewer/core/dxf-parser/entities/spline.d.ts +23 -0
  80. package/dist/src/dxfViewer/core/dxf-parser/entities/table.d.ts +44 -0
  81. package/dist/src/dxfViewer/core/dxf-parser/entities/text.d.ts +18 -0
  82. package/dist/src/dxfViewer/core/dxf-parser/entities/vertex.d.ts +23 -0
  83. package/dist/src/dxfViewer/core/dxf-parser/entities/viewport.d.ts +46 -0
  84. package/dist/src/dxfViewer/core/dxf-parser/entities/xline.d.ts +10 -0
  85. package/dist/src/dxfViewer/core/dxf-parser/index.d.ts +27 -0
  86. package/dist/src/dxfViewer/core/dxf-parser/objects/common.d.ts +15 -0
  87. package/dist/src/dxfViewer/core/dxf-parser/objects/dictionary.d.ts +19 -0
  88. package/dist/src/dxfViewer/core/dxf-parser/objects/imagedef.d.ts +24 -0
  89. package/dist/src/dxfViewer/core/dxf-parser/objects/layout.d.ts +26 -0
  90. package/dist/src/dxfViewer/core/dxf-parser/objects/sortentstable.d.ts +12 -0
  91. package/dist/src/dxfViewer/core/dxf-parser/objects/spatialfilter.d.ts +22 -0
  92. package/dist/src/dxfViewer/core/dxf-parser/objects/xrecord.d.ts +11 -0
  93. package/dist/src/dxfViewer/core/effect/EffectManager.d.ts +43 -0
  94. package/dist/src/dxfViewer/core/effect/index.d.ts +1 -0
  95. package/dist/src/dxfViewer/core/font/BaseFont.d.ts +41 -0
  96. package/dist/src/dxfViewer/core/font/FontManager.d.ts +52 -0
  97. package/dist/src/dxfViewer/core/font/MeshFont.d.ts +14 -0
  98. package/dist/src/dxfViewer/core/font/ShxFont.d.ts +49 -0
  99. package/dist/src/dxfViewer/core/font/index.d.ts +1 -0
  100. package/dist/src/dxfViewer/core/font/shx/ExtraLettersTemplate.d.ts +4 -0
  101. package/dist/src/dxfViewer/core/font/shx/Shx.constants.d.ts +20 -0
  102. package/dist/src/dxfViewer/core/font/shx/ShxParser.d.ts +18 -0
  103. package/dist/src/dxfViewer/core/font/shx/TextShape.d.ts +24 -0
  104. package/dist/src/dxfViewer/core/font/shx/gbk/index.d.ts +3 -0
  105. package/dist/src/dxfViewer/core/font/shx/index.d.ts +1 -0
  106. package/dist/src/dxfViewer/core/font/shx/util/BitConverter.d.ts +21 -0
  107. package/dist/src/dxfViewer/core/geometry-offset/Edge.d.ts +27 -0
  108. package/dist/src/dxfViewer/core/geometry-offset/Offset.d.ts +46 -0
  109. package/dist/src/dxfViewer/core/geometry-offset/index.d.ts +1 -0
  110. package/dist/src/dxfViewer/core/helpers/BinaryReader.d.ts +23 -0
  111. package/dist/src/dxfViewer/core/helpers/BoxSelectHelper.d.ts +44 -0
  112. package/dist/src/dxfViewer/core/helpers/InstantiateHelper.d.ts +26 -0
  113. package/dist/src/dxfViewer/core/helpers/LoadingHelper.d.ts +59 -0
  114. package/dist/src/dxfViewer/core/helpers/MeshBvhHelper.d.ts +15 -0
  115. package/dist/src/dxfViewer/core/helpers/MobileTouchHelperDrawable.d.ts +26 -0
  116. package/dist/src/dxfViewer/core/helpers/OSnapHelper.d.ts +158 -0
  117. package/dist/src/dxfViewer/core/helpers/ObjectPixelSizeHelper.d.ts +13 -0
  118. package/dist/src/dxfViewer/core/helpers/PickMarkupHelper.d.ts +29 -0
  119. package/dist/src/dxfViewer/core/helpers/RafHelper.d.ts +18 -0
  120. package/dist/src/dxfViewer/core/helpers/ZoomToRectHelper.d.ts +24 -0
  121. package/dist/src/dxfViewer/core/helpers/index.d.ts +11 -0
  122. package/dist/src/dxfViewer/core/index.d.ts +19 -0
  123. package/dist/src/dxfViewer/core/indexeddb/BaseTable.d.ts +36 -0
  124. package/dist/src/dxfViewer/core/indexeddb/DxfDataTable.d.ts +22 -0
  125. package/dist/src/dxfViewer/core/indexeddb/FontDataTable.d.ts +32 -0
  126. package/dist/src/dxfViewer/core/indexeddb/IndexedDbManager.d.ts +50 -0
  127. package/dist/src/dxfViewer/core/indexeddb/index.d.ts +4 -0
  128. package/dist/src/dxfViewer/core/input-manager/InputManager.d.ts +146 -0
  129. package/dist/src/dxfViewer/core/input-manager/index.d.ts +2 -0
  130. package/dist/src/dxfViewer/core/materials/BimTilesHighlightMaterial.d.ts +21 -0
  131. package/dist/src/dxfViewer/core/materials/BimTilesMaterial.d.ts +32 -0
  132. package/dist/src/dxfViewer/core/materials/BimTilesPickMaterial.d.ts +14 -0
  133. package/dist/src/dxfViewer/core/materials/BimTilesTransparentMaterial.d.ts +20 -0
  134. package/dist/src/dxfViewer/core/materials/StandardMaterialEx.d.ts +29 -0
  135. package/dist/src/dxfViewer/core/materials/constants.d.ts +4 -0
  136. package/dist/src/dxfViewer/core/materials/index.d.ts +5 -0
  137. package/dist/src/dxfViewer/core/model/Constants.d.ts +58 -0
  138. package/dist/src/dxfViewer/core/model/Model.d.ts +18 -0
  139. package/dist/src/dxfViewer/core/model/Model2d.d.ts +144 -0
  140. package/dist/src/dxfViewer/core/model/Model3d.d.ts +111 -0
  141. package/dist/src/dxfViewer/core/model/bimtiles/BatchedMeshesParser.d.ts +26 -0
  142. package/dist/src/dxfViewer/core/model/bimtiles/BimTilesConfigParser.d.ts +43 -0
  143. package/dist/src/dxfViewer/core/model/bimtiles/BimTilesData.d.ts +280 -0
  144. package/dist/src/dxfViewer/core/model/bimtiles/BimTilesMaterialManager.d.ts +139 -0
  145. package/dist/src/dxfViewer/core/model/bimtiles/BimTilesModel.d.ts +70 -0
  146. package/dist/src/dxfViewer/core/model/bimtiles/BimTilesPropertyParser.d.ts +45 -0
  147. package/dist/src/dxfViewer/core/model/bimtiles/BimTilesRenderer.d.ts +59 -0
  148. package/dist/src/dxfViewer/core/model/bimtiles/InstancedMeshesParser.d.ts +41 -0
  149. package/dist/src/dxfViewer/core/model/bimtiles/TileParser.d.ts +14 -0
  150. package/dist/src/dxfViewer/core/model/bimtiles/Utils.d.ts +29 -0
  151. package/dist/src/dxfViewer/core/model/index.d.ts +6 -0
  152. package/dist/src/dxfViewer/core/patches/Constants.d.ts +6 -0
  153. package/dist/src/dxfViewer/core/patches/Line.d.ts +3 -0
  154. package/dist/src/dxfViewer/core/patches/Mesh.d.ts +2 -0
  155. package/dist/src/dxfViewer/core/patches/Points.d.ts +3 -0
  156. package/dist/src/dxfViewer/core/patches/index.d.ts +4 -0
  157. package/dist/src/dxfViewer/core/patches/shaders/ShaderChunk.d.ts +143 -0
  158. package/dist/src/dxfViewer/core/patches/shaders/shaderChunk/common_ex.glsl.d.ts +2 -0
  159. package/dist/src/dxfViewer/core/patches/shaders/shaderChunk/id_pars_vertex.glsl.d.ts +2 -0
  160. package/dist/src/dxfViewer/core/patches/shaders/shaderChunk/id_vertex.glsl.d.ts +2 -0
  161. package/dist/src/dxfViewer/core/patches/shaders/shaderChunk/outine_bc_vertex.glsl.d.ts +2 -0
  162. package/dist/src/dxfViewer/core/patches/shaders/shaderChunk/outline_bc_fragment.glsl.d.ts +2 -0
  163. package/dist/src/dxfViewer/core/patches/shaders/shaderChunk/outline_bc_pars_fragment.glsl.d.ts +2 -0
  164. package/dist/src/dxfViewer/core/patches/shaders/shaderChunk/outline_bc_pars_vertex.glsl.d.ts +2 -0
  165. package/dist/src/dxfViewer/core/patches/shaders/shaderChunk/state_fragment.glsl.d.ts +2 -0
  166. package/dist/src/dxfViewer/core/patches/shaders/shaderChunk/state_highlight_fragment.glsl.d.ts +2 -0
  167. package/dist/src/dxfViewer/core/patches/shaders/shaderChunk/state_pars_fragment.glsl.d.ts +2 -0
  168. package/dist/src/dxfViewer/core/patches/shaders/shaderChunk/state_transparent_fragment.glsl.d.ts +2 -0
  169. package/dist/src/dxfViewer/core/patches/shaders/shaderLib/pick_ex.glsl.d.ts +2 -0
  170. package/dist/src/dxfViewer/core/patches/shaders/shaderLib/standard_ex.glsl.d.ts +2 -0
  171. package/dist/src/dxfViewer/core/pick/PickManager.d.ts +54 -0
  172. package/dist/src/dxfViewer/core/pick/index.d.ts +1 -0
  173. package/dist/src/dxfViewer/core/scene/SceneManager.d.ts +43 -0
  174. package/dist/src/dxfViewer/core/scene/index.d.ts +1 -0
  175. package/dist/src/dxfViewer/core/shp-js/BitView.d.ts +12 -0
  176. package/dist/src/dxfViewer/core/shp-js/SHPLoader.d.ts +12 -0
  177. package/dist/src/dxfViewer/core/shp-js/Shp.d.ts +10 -0
  178. package/dist/src/dxfViewer/core/shp-js/ShpThree.d.ts +24 -0
  179. package/dist/src/dxfViewer/core/shp-js/index.d.ts +4 -0
  180. package/dist/src/dxfViewer/core/text-texture/TextTexture.d.ts +45 -0
  181. package/dist/src/dxfViewer/core/undo/Command.d.ts +6 -0
  182. package/dist/src/dxfViewer/core/undo/UndoManager.d.ts +24 -0
  183. package/dist/src/dxfViewer/core/undo/index.d.ts +2 -0
  184. package/dist/src/dxfViewer/core/utils/CSS2DObjectUtils.d.ts +14 -0
  185. package/dist/src/dxfViewer/core/utils/CancelablePromise.d.ts +6 -0
  186. package/dist/src/dxfViewer/core/utils/ColorUtils.d.ts +21 -0
  187. package/dist/src/dxfViewer/core/utils/CommonUtils.d.ts +129 -0
  188. package/dist/src/dxfViewer/core/utils/CoordinateUtils.d.ts +81 -0
  189. package/dist/src/dxfViewer/core/utils/DecimalPrecisionUtils.d.ts +10 -0
  190. package/dist/src/dxfViewer/core/utils/DeviceUtils.d.ts +15 -0
  191. package/dist/src/dxfViewer/core/utils/EdgeUtils.d.ts +14 -0
  192. package/dist/src/dxfViewer/core/utils/Event.d.ts +34 -0
  193. package/dist/src/dxfViewer/core/utils/ExportUtils.d.ts +61 -0
  194. package/dist/src/dxfViewer/core/utils/FpsUtils.d.ts +13 -0
  195. package/dist/src/dxfViewer/core/utils/GeometryUtils.d.ts +78 -0
  196. package/dist/src/dxfViewer/core/utils/Locale.d.ts +22 -0
  197. package/dist/src/dxfViewer/core/utils/LogUtils.d.ts +7 -0
  198. package/dist/src/dxfViewer/core/utils/MaterialUtils.d.ts +40 -0
  199. package/dist/src/dxfViewer/core/utils/MathUtils.d.ts +41 -0
  200. package/dist/src/dxfViewer/core/utils/MergeUtils.d.ts +120 -0
  201. package/dist/src/dxfViewer/core/utils/ObjectUtils.d.ts +215 -0
  202. package/dist/src/dxfViewer/core/utils/PolygonUtils.d.ts +9 -0
  203. package/dist/src/dxfViewer/core/utils/SVGObjectUtils.d.ts +22 -0
  204. package/dist/src/dxfViewer/core/utils/SceneUtils.d.ts +26 -0
  205. package/dist/src/dxfViewer/core/utils/SectionUtils.d.ts +11 -0
  206. package/dist/src/dxfViewer/core/utils/SimplifyUtils.d.ts +15 -0
  207. package/dist/src/dxfViewer/core/utils/TextUtils.d.ts +37 -0
  208. package/dist/src/dxfViewer/core/utils/TextureUtils.d.ts +16 -0
  209. package/dist/src/dxfViewer/core/utils/UnitConversionUtils.d.ts +31 -0
  210. package/dist/src/dxfViewer/core/utils/Viewer3dUtils.d.ts +25 -0
  211. package/dist/src/dxfViewer/core/utils/index.d.ts +26 -0
  212. package/dist/src/dxfViewer/core/viewers/BaseViewer.d.ts +248 -0
  213. package/dist/src/dxfViewer/core/viewers/BimTilesViewer.d.ts +126 -0
  214. package/dist/src/dxfViewer/core/viewers/Constants.d.ts +9 -0
  215. package/dist/src/dxfViewer/core/viewers/Plugin.d.ts +29 -0
  216. package/dist/src/dxfViewer/core/viewers/Viewer2d.d.ts +405 -0
  217. package/dist/src/dxfViewer/core/viewers/Viewer3d.d.ts +130 -0
  218. package/dist/src/dxfViewer/core/viewers/Viewer3dLite.d.ts +143 -0
  219. package/dist/src/dxfViewer/core/viewers/ViewerEvent.d.ts +96 -0
  220. package/dist/src/dxfViewer/core/viewers/index.d.ts +8 -0
  221. package/dist/src/dxfViewer/core/webcam/WebCam.d.ts +27 -0
  222. package/dist/src/dxfViewer/core/webcam/index.d.ts +1 -0
  223. package/dist/src/dxfViewer/core/workers/CreateMeshBvh.worker.d.ts +1 -0
  224. package/dist/src/dxfViewer/core/workers/GenerateMeshBvhWorker.d.ts +17 -0
  225. package/dist/src/dxfViewer/core/workers/index.d.ts +1 -0
  226. package/dist/src/dxfViewer/lib.d.ts +1 -0
  227. package/package.json +62 -0
@@ -0,0 +1,569 @@
1
+ import { DxfChange } from './DxfCompare';
2
+ import { DxfObject } from './DxfObject';
3
+ import { Units } from '../Units';
4
+ import { IBlock, IDxf, IEntity, ILayer, ILayoutObject, IPoint, IViewport, IViewportEntity, TableCell } from '../dxf-parser';
5
+ import { ImageFlags } from '../dxf-parser/entities/image';
6
+ import { IMLeaderContextData } from '../dxf-parser/entities/mleader';
7
+ import { ISpatialFilterObject } from '../dxf-parser/objects/spatialfilter';
8
+ import { FontManager } from '../font/FontManager';
9
+ import * as THREE from "three";
10
+ /**
11
+ * @internal
12
+ */
13
+ export interface DxfData extends IDxf {
14
+ threejsObject: THREE.Object3D;
15
+ layersAndThreejsObjects: Record<string, THREE.Object3D[]>;
16
+ loadedEntityCount: number;
17
+ layoutViewportsMap: Record<string, IViewportEntity[]>;
18
+ llbMesh?: any[];
19
+ }
20
+ /**
21
+ * Dxf/dwg layer, which contains a number of objects in it.
22
+ *
23
+ * A layer has "name", "handle", "color", "visible" and many other properties.
24
+ *
25
+ * We can change a layer's visibility, color, etc.
26
+ */
27
+ export type DxfLayer = ILayer;
28
+ /**
29
+ * Dxf entity, which can be an arc, circle, attach, line, insert, text, etc.
30
+ * @internal
31
+ */
32
+ export interface DxfEntity extends IEntity {
33
+ threejsObject?: THREE.Object3D;
34
+ dimStyleName: string;
35
+ dimensionType?: number;
36
+ anchorPoint?: THREE.Vector3;
37
+ block?: string;
38
+ majorAxisEndPoint?: THREE.Vector2 | THREE.Vector3;
39
+ axisRatio?: number;
40
+ center?: THREE.Vector3;
41
+ startAngle?: number;
42
+ endAngle?: number;
43
+ style?: number;
44
+ text?: string;
45
+ height?: number;
46
+ width?: number;
47
+ position?: THREE.Vector3;
48
+ blockPosition?: IPoint;
49
+ rotation?: number;
50
+ directionVector?: THREE.Vector3;
51
+ attachmentPoint?: number;
52
+ drawingDirection?: number;
53
+ controlPoints?: IPoint[];
54
+ degreeOfSplineCurve?: number;
55
+ knotValues?: number[];
56
+ numberOfControlPoints: number;
57
+ vertices?: IPoint[];
58
+ shape: boolean;
59
+ isPolyfaceMesh: boolean;
60
+ pathType: number;
61
+ direction: number;
62
+ hasHookline: boolean;
63
+ textWidth: number;
64
+ dimensionStyle: string;
65
+ arrowFlag: number;
66
+ arrowHeight: number;
67
+ arrowHeadScale: number;
68
+ arrowHeadBlockHandle: string;
69
+ contextData?: IMLeaderContextData;
70
+ enableDogLeg: boolean;
71
+ leaderLineType: number;
72
+ arrowHeadId: string;
73
+ arrowHeadSize: number;
74
+ radius?: number;
75
+ points?: THREE.Vector3[];
76
+ startPoint?: THREE.Vector3;
77
+ endPoint?: THREE.Vector3;
78
+ textHeight: number;
79
+ halign?: number;
80
+ valign?: number;
81
+ mirrored?: number;
82
+ textStyle?: string;
83
+ lineSpaceFactor?: number;
84
+ name?: string;
85
+ xScale?: number;
86
+ yScale?: number;
87
+ zScale?: number;
88
+ elevation?: number;
89
+ extrusionDirectionX?: number;
90
+ extrusionDirectionY?: number;
91
+ extrusionDirectionZ?: number;
92
+ extrusionDirection?: {
93
+ z: number;
94
+ };
95
+ entities?: IEntity[];
96
+ tag?: string;
97
+ prompt?: string;
98
+ scale?: number;
99
+ preset: boolean;
100
+ invisible: boolean;
101
+ documentType?: string;
102
+ version?: number;
103
+ leftUpX?: number;
104
+ leftUpY?: number;
105
+ leftUpZ?: number;
106
+ rightDownX?: number;
107
+ rightDownY?: number;
108
+ rightDownZ?: number;
109
+ tileModeDescriptor?: number;
110
+ binaryData?: string;
111
+ lengthOfBinaryData?: number;
112
+ image: string;
113
+ psBBox?: THREE.Box3;
114
+ msToPsMatrix?: THREE.Matrix4;
115
+ viewportThreejsObject?: DxfObject;
116
+ associatedLeafObjectSet?: Set<THREE.Object3D>;
117
+ associatedSpatialFilter?: DxfSpatialFilter;
118
+ imageSize?: IPoint;
119
+ imageDefHandle?: string;
120
+ uPixel?: IPoint;
121
+ vPixel?: IPoint;
122
+ flags?: ImageFlags;
123
+ columnCount: number;
124
+ rowCount: number;
125
+ cells: TableCell[];
126
+ rowHeightArr: number[];
127
+ columnWidthArr: number[];
128
+ blockRecordHandle?: string;
129
+ }
130
+ /**
131
+ * Dxf block.
132
+ * @internal
133
+ */
134
+ export interface DxfBlock extends IBlock {
135
+ /**
136
+ * References to corresponding threejs object
137
+ */
138
+ threejsObject?: DxfObject;
139
+ }
140
+ /**
141
+ * Dxf layout.
142
+ * @internal
143
+ */
144
+ export interface DxfLayout extends ILayoutObject {
145
+ /**
146
+ * A collection of leaf objects directly associated with the layout, used for subsequent selection and measurement, etc.
147
+ * "Model" space doesn't need it for now.
148
+ */
149
+ directAssociatedLeafObjectSet?: Set<THREE.Object3D>;
150
+ }
151
+ /**
152
+ * Spatial filter clip polyline.
153
+ * @internal
154
+ */
155
+ export interface DxfSpatialFilterClipPolyline {
156
+ polyline: THREE.Vector3[];
157
+ bConcave: boolean;
158
+ bReversed: boolean;
159
+ }
160
+ /**
161
+ * Spatial filter.
162
+ * @internal
163
+ */
164
+ export interface DxfSpatialFilter extends ISpatialFilterObject {
165
+ /**
166
+ * References to corresponding threejs object
167
+ */
168
+ threejsObject?: DxfObject;
169
+ localMatrix?: THREE.Matrix4;
170
+ clipPolylines: DxfSpatialFilterClipPolyline[];
171
+ }
172
+ /**
173
+ * Dxf loader config.
174
+ * @internal
175
+ */
176
+ export interface DxfLoaderConfig {
177
+ /**
178
+ * Ignores everything from paper space, aka, only load model space.
179
+ */
180
+ ignorePaperSpace?: boolean;
181
+ /**
182
+ * Enables caching dxf data into indexeddb.
183
+ */
184
+ enableLocalCache?: boolean;
185
+ /**
186
+ * Enables to merge objects.
187
+ */
188
+ enableMerge?: boolean;
189
+ /**
190
+ * File encoding, can be used by dxf. Common encoding include "UTF-8", "gb2312", etc.
191
+ */
192
+ encoding?: string;
193
+ /**
194
+ * Apply this color to everything in this model.
195
+ * Color value between 0 and 1.
196
+ */
197
+ overrideColor?: number[];
198
+ /**
199
+ * Idealy, the thickness of lines in hatch pattern should always be 1 pixel.
200
+ * In Viewer2d, it uses orthographic camera and always in top view,
201
+ * so we adjust thickness by cameraZoom (and also consider worldScale).
202
+ * While 3d view is more complex, it can use perspective camera,
203
+ * its camera position and direction is flexible. We cannot keep line thickness
204
+ * in a fixed pixel any more, and there is no proper way to adjust thickness as
205
+ * position changes. So, we need to use a fixed thickness in world coordinates.
206
+ */
207
+ overrideHatchPatternLineThickness?: number;
208
+ }
209
+ /**
210
+ * Dxf file loader.
211
+ * @internal
212
+ */
213
+ export declare class DxfLoader extends THREE.Loader {
214
+ static readonly MODEL_LAYOUT_NAME = "Model";
215
+ static readonly SNAP_GROUP_NAME = "InvisibleObjectGroupForOSnap";
216
+ static readonly SHOW_SNAP_OBJECT = false;
217
+ private timer;
218
+ private ignorePaperSpace;
219
+ font?: FontManager;
220
+ private encoding;
221
+ private overrideColor?;
222
+ private overrideHatchPatternLineThickness?;
223
+ angBase: number | IPoint;
224
+ angDir: number | IPoint;
225
+ private header;
226
+ private pointsMaterials;
227
+ private lineBasicMaterials;
228
+ private lineShaderMaterials;
229
+ private meshBasicMaterials;
230
+ private meshTextureMaterials;
231
+ /**
232
+ * 说明:该数组存放的是 hatch 图案材质缓存条目(含 patternLines/patternAngle/color/material),
233
+ * 而非直接的材质对象,发布的 d.ts 未给出类型,此处按 bundle 实现补全。
234
+ */
235
+ private hatchShaderMaterials;
236
+ private entityCount;
237
+ private curveCount;
238
+ private averageCurveSize;
239
+ private enableRenderOrder;
240
+ private enableLocalCache;
241
+ private enableReleaseData;
242
+ private enableMerge;
243
+ private enableRTC;
244
+ private enablePlineWidth;
245
+ private dxfDataId;
246
+ /**
247
+ * Use a context in order to easily know if it is compare mode,
248
+ * and, get compare result from it.
249
+ */
250
+ private compareContext?;
251
+ private statsInfo;
252
+ /**
253
+ * 说明:以下两个成员(llbDatas / mtextDatas)未收录在发布的 d.ts 中(类型滞后),
254
+ * 按 bundle 实现保留。
255
+ */
256
+ private llbDatas;
257
+ private mtextDatas;
258
+ /**
259
+ * 说明:该成员与 setRequestHeader 方法未收录在发布的 d.ts 中(类型滞后),按 bundle 实现保留。
260
+ */
261
+ private requestHeader?;
262
+ private blockReferencesCache;
263
+ /**
264
+ * Adds this data member just in order to improve the performence of getLayoutName.
265
+ * Its key is blockrecord's handle, value is its layoutHandle.
266
+ */
267
+ private blockRecordsCache?;
268
+ /**
269
+ * Adds this data member just in order to improve the performence of getLayoutName.
270
+ * Its key is entity's handle, value is itself.
271
+ */
272
+ private entitiesCache?;
273
+ /**
274
+ * Adds this data member just in order to improve the performence of getBlockByHandle.
275
+ * Its key is block's ownerHandle, value is IBlock.
276
+ */
277
+ private blocksCache?;
278
+ /**
279
+ * Adds this in order to improve performance of findSpatialFilterByHandle.
280
+ * Key is dictionaryObject's ownerHandle(entity's handle), value is spatial filter's ownerHandle
281
+ */
282
+ private dictionaryOwnerHandleAndSpatialFilterHandlesCache?;
283
+ /**
284
+ * Adds this in order to improve performance of findSpatialFilterByHandle.
285
+ * Key is ISpatialFilterObject's ownerHandle, value is ISpatialFilterObject
286
+ */
287
+ private spatialFiltersCache?;
288
+ /**
289
+ * Adds this in order to improve performance of creating threejs object
290
+ * Key is entity's handle, value is threejs object.
291
+ */
292
+ private entityThreejsCache?;
293
+ /**
294
+ * 说明:发布的 d.ts 中未给出该成员类型,按 bundle 实现推断为实体类型耗时统计结构。
295
+ */
296
+ private entityTypesAndTimes?;
297
+ private nonSnapableTypes;
298
+ private layoutsSnapObjectsMap;
299
+ /**
300
+ * A flag to abort loading any dxf files, it aborts dxf compare progress too.
301
+ * It doesn't support to abort one of the loader for now.
302
+ */
303
+ private aborted;
304
+ /**
305
+ * 说明:entityHandlesWithRenderOrder 在源码中声明于方法之间(见发布的 d.ts),
306
+ * 此处统一提到字段区声明,行为一致。
307
+ */
308
+ private entityHandlesWithRenderOrder;
309
+ private addViewport;
310
+ /**
311
+ * 说明:该静态属性在 bundle 中只被读取、从未被赋值(原始拼写可能有误),
312
+ * 运行时恒为 undefined;此处按原样保留。
313
+ */
314
+ private static readonly REQUWSTHEADER?;
315
+ /**
316
+ * 说明:以下静态字段在 bundle 中于类定义之后统一赋值,此处以字段初始化器的形式等价还原。
317
+ */
318
+ static CameraZoomUniform: {
319
+ value: number;
320
+ };
321
+ /**
322
+ * Used for drawing dashed lines properly in a viewport.
323
+ */
324
+ static ViewportScaleUniform: {
325
+ value: number;
326
+ };
327
+ static TransformMatrixUniform: {
328
+ value: THREE.Matrix4;
329
+ };
330
+ static ResolutionUniform: {
331
+ value: THREE.Vector2;
332
+ };
333
+ /**
334
+ * 说明:LOADLLDATA 未收录在发布的 d.ts 中(类型滞后),按 bundle 实现保留。
335
+ */
336
+ static LOADLLDATA: boolean;
337
+ /**
338
+ * WebGL has a limited capability for FragmentUniforms. Thus, cannot have as many
339
+ * clippingPlanes as expected.
340
+ */
341
+ static MaxFragmentUniforms: number;
342
+ /**
343
+ * DxfLoader constructor
344
+ */
345
+ constructor(manager?: THREE.LoadingManager, cfg?: DxfLoaderConfig);
346
+ /**
347
+ * 说明:该成员与 setRequestHeader 方法未收录在发布的 d.ts 中(类型滞后),按 bundle 实现保留。
348
+ */
349
+ setRequestHeader(headervals: Record<string, string>): void;
350
+ /**
351
+ * Sets font.
352
+ */
353
+ setFont(font: FontManager): void;
354
+ /**
355
+ * Downloads dxf file content
356
+ */
357
+ private download;
358
+ /**
359
+ * Loads a dxf file by given url.
360
+ * If dxfDataId is specified and local cache is enabled, it firstly tries to load from cache.
361
+ * @param url url of the dxf file
362
+ * @param dxfDataId target dxf data id, used to get dxf data from cache if local cache is enabled.
363
+ * @param onProgress on progress callback
364
+ * @returns DxfData
365
+ */
366
+ loadEx(url: string, dxfDataId?: string, onProgress?: (event: ProgressEvent) => void): Promise<DxfData>;
367
+ /**
368
+ * Loads dxf asynchronously. It mainly contains 2 steps:
369
+ * 1. Parses file content
370
+ * 2. Generates/load threejs objects
371
+ * @param url url of the dxf file
372
+ * @param onProgress on progress callback
373
+ */
374
+ loadAsync(url: string, onProgress?: (event: ProgressEvent) => void): Promise<DxfData>;
375
+ /**
376
+ * Parses dxf contents from given url.
377
+ */
378
+ parse(url: string, onProgress?: (event: ProgressEvent) => void): Promise<IDxf>;
379
+ /**
380
+ * Aborts loading or parsing progress if any.
381
+ * We cann't resume any progress once aborted.
382
+ * TODO: the abort logic is not well tested yet, need to be verified.
383
+ */
384
+ abort(): void;
385
+ /**
386
+ * If loading or parsing progress is aborted.
387
+ */
388
+ isAborted(): boolean;
389
+ private parseHeader;
390
+ /**
391
+ * For some versions, the dxf file may be wired, missing header, objects, tables, etc.
392
+ * We'll try to fill in missing content for it.
393
+ */
394
+ private tryFixDxfData;
395
+ /**
396
+ * Generates/load threejs objects according to the dxf data.
397
+ * @param data
398
+ * @param onProgress
399
+ * @returns the promise of DxfData
400
+ */
401
+ loadEntities(data: IDxf, onProgress?: (event: ProgressEvent) => void): Promise<DxfData>;
402
+ private getFontFilesFromDxf;
403
+ /**
404
+ * Loads entities from two dxf data for comparing.
405
+ * It also generates DxfChange information for each change.
406
+ */
407
+ loadEntitiesForCompare(data1: IDxf, data2: IDxf, changes: Record<string, DxfChange>, bIgnoreSameEntity?: boolean, onProgress?: (event: ProgressEvent) => void): Promise<void>;
408
+ private setObjectColorByChange;
409
+ /**
410
+ * Manually release some objects to save memory.
411
+ */
412
+ private releaseCachedData;
413
+ /**
414
+ * Releases memory-costy elements of an entity
415
+ */
416
+ private releaseEntity;
417
+ /**
418
+ * Releases memory-costy elements of dxf data
419
+ */
420
+ private releaseDxfData;
421
+ /**
422
+ * We'll need to pass in the blockEntity when loadEntity is called from a block.
423
+ * So that, when an entity's color is ByLayer, and its layer is "0", it should use block's layer,
424
+ * rather than the layer of the entity itself!
425
+ * We don't know if there is other similar case in future, so pass in blockEntity here.
426
+ */
427
+ loadEntity(entity: DxfEntity, data: IDxf, parentEntity?: IEntity, isParentChanged?: boolean): DxfObject | undefined;
428
+ private loadEllipse;
429
+ private loadMText;
430
+ /**
431
+ * 说明:该方法未收录在发布的 d.ts 中(类型滞后),按 bundle 实现保留。
432
+ */
433
+ private loadTableMText;
434
+ private getMTextGroup;
435
+ /**
436
+ * 说明:该方法未收录在发布的 d.ts 中(类型滞后),按 bundle 实现保留。
437
+ */
438
+ private mtextContentAndFormattingToTextAndStyle;
439
+ private getTextLineNum;
440
+ private load3DFace;
441
+ private loadSpline;
442
+ private loadXLine;
443
+ private loadRay;
444
+ /**
445
+ * 加载 DXF 中的线实体(LINE, LWPOLYLINE, POLYLINE),支持线型样式(如虚线)
446
+ * @param {Object} entity - DXF 实体对象
447
+ * @param {Object} dxfData - 完整的 DXF 数据(包含 tables)
448
+ * @returns {Object|undefined} Three.js 网格对象(DxfObject),或 undefined
449
+ */
450
+ private loadLine;
451
+ /**
452
+ * 加载 DXF 中的 LWPolyline(轻量多段线)实体
453
+ * @param {Object} polylineData - 多段线数据对象
454
+ * @param {Object} dxfData - 整个 DXF 解析数据(包含图层、线型等)
455
+ * @param {Object} options - 渲染选项(如启用 RTC、是否支持宽度等)
456
+ * @returns {DxfObject|undefined} 返回构建好的 Three.js 对象或 undefined(无效时)
457
+ */
458
+ private loadLWPolyline;
459
+ /**
460
+ * 根据带 startWidth/endWidth 的顶点数组,生成变宽多段线的网格几何体
461
+ * 支持锥形、梯形、矩形等任意宽度过渡
462
+ * @param {Array} vertices - [{x, y, startWidth, endWidth}, ...]
463
+ * @returns {BufferGeometry|null}
464
+ */
465
+ private createTaperedPolylineGeometry;
466
+ private loadMLeader;
467
+ private loadLeader;
468
+ private getTableTextOffset;
469
+ private loadTable;
470
+ private _getMergeOwner;
471
+ private loadDefaultLeadArrow;
472
+ private getBlockByHandle;
473
+ static updateMaterialUniforms(material: THREE.Material): void;
474
+ static transformAngleByOcsMatrix(ocsMatrix: THREE.Matrix4, angle: number): number;
475
+ static getArcAnglesByOcsMatrix(ocsMatrix: THREE.Matrix4, startAngle: number, endAngle: number): number[];
476
+ private loadArc;
477
+ private addTriangleFacingCamera;
478
+ private loadSolid;
479
+ private getTextStyle;
480
+ private getDefaultDimensionStyle;
481
+ private getTextEncoding;
482
+ private getTextMesh;
483
+ private createTextMeshByText;
484
+ private transformTextMesh;
485
+ private loadText;
486
+ private loadAttDef;
487
+ private loadAttrib;
488
+ private loadPoint;
489
+ private loadDimension;
490
+ private loadImage;
491
+ private loadInsert;
492
+ private loadSpatialFilter;
493
+ private loadLayout;
494
+ private convertEdgeToPoints;
495
+ private loadHatch;
496
+ private loadOle2frame;
497
+ static getOcsMatrix(extrusionDirection: THREE.Vector3): THREE.Matrix4;
498
+ static getDcs2WcsMatrix(viewport: IViewport | IViewportEntity, angDir: number): THREE.Matrix4;
499
+ private getViewportMsToPsMatrix;
500
+ /**
501
+ * 加载视口:在图纸空间中绘制视口边框,并创建模型到图纸空间的变换矩阵
502
+ * @param {Object} viewportData - 视口数据对象
503
+ * @param {number} _unused1 - 未使用参数(可删除)
504
+ * @param {number} _unused2 - 未使用参数(可删除)
505
+ * @returns {THREE.Line} 返回表示视口边界线的图形对象
506
+ */
507
+ private loadViewport;
508
+ /**
509
+ * 说明:entity 可能为 HATCH,其 isGradientColor/gradientColors 仅定义在 IHatchEntity 上
510
+ * (DxfEntity 未收录),此处做类型桥接。
511
+ */
512
+ private getColor;
513
+ private getLineType;
514
+ private getLayerName;
515
+ private setMaterial;
516
+ /**
517
+ * 说明:entity 为 HATCH,其 solidFill/patternLines/patternAngle 仅定义在 IHatchEntity 上
518
+ * (DxfEntity 未收录),此处做类型桥接。
519
+ */
520
+ private setHatchMaterial;
521
+ /**
522
+ * 说明:isMesh/isLine/isPoints 仅存在于 THREE.Object3D 上,DxfObject 运行期恒为 undefined
523
+ * (与源码实现一致),此处做类型桥接。
524
+ */
525
+ private setRenderOrderByObjectType;
526
+ private getPointsMaterial;
527
+ private getLineBasicMaterial;
528
+ private getLineShaderMaterial;
529
+ private getMeshBasicMaterial;
530
+ private getHatchShaderMaterial;
531
+ private getDivision;
532
+ private getBSplineInterpolationsPerSplineSegment;
533
+ private setDxfDataToIndexedDb;
534
+ private getDxfDataFromIndexedDb;
535
+ private buildContainHierarchyTree;
536
+ private buildHatchGeometry;
537
+ private findIntersectHole;
538
+ private checkAndRebasePolygonsOnRTC;
539
+ private setRTCUserData;
540
+ private IsfilteredByPathTypeFlag;
541
+ /**
542
+ * 说明:data.objects.DICTIONARY/SPATIAL_FILTER 声明为 IObject[](类型滞后),此处做类型桥接。
543
+ */
544
+ private findSpatialFilterByHandle;
545
+ /**
546
+ * 说明:data.objects.DICTIONARY/SORTENTSTABLE 声明为 IObject[](类型滞后),此处做类型桥接。
547
+ */
548
+ private initRenderOrderInfo;
549
+ private findMatchedHatchShaderMaterial;
550
+ /**
551
+ * 说明:data.objects.LAYOUT 声明为 IObject[](类型滞后),此处做类型桥接。
552
+ */
553
+ private getLayout;
554
+ private getLayerVisible;
555
+ private getLayerFrozen;
556
+ private cloneMaterialsForSpatialFilter;
557
+ private getLineTypeScales;
558
+ static getDxfUnits(unitValue: number): Units;
559
+ static computeLineDistance(line: THREE.Line): void;
560
+ static computeLineDistances(object: THREE.Object3D): void;
561
+ private static mergeDxfObjects;
562
+ static merge(dxfData: DxfData, onProgress?: (event: ProgressEvent) => void): Promise<void>;
563
+ private printStatsInfo;
564
+ private static statLayoutAndLayerObjects;
565
+ private static removeEmptyObjectsFromRemovingMarkedObjects;
566
+ private static removeEmptyObjectsFromMark;
567
+ private static removeEmptyObjectsFromRemovingMarkedObjects2;
568
+ private static removeEmptyObjectsFromMark2;
569
+ }
@@ -0,0 +1,44 @@
1
+ import { Box3, BufferGeometry, Layers, Material, Matrix4 } from 'three';
2
+ import * as THREE from "three";
3
+ export declare enum ObjectType {
4
+ Object = 0,
5
+ Point = 1,
6
+ Line = 2,
7
+ LineSegment = 3,
8
+ Mesh = 4
9
+ }
10
+ export type CallBack = (object: DxfObject) => void;
11
+ export declare class DxfObject {
12
+ name: string;
13
+ type: ObjectType;
14
+ matrix: Matrix4;
15
+ parent?: DxfObject;
16
+ children: DxfObject[];
17
+ layers: Layers;
18
+ renderOrder: number;
19
+ userData: any;
20
+ material?: Material;
21
+ geometry?: BufferGeometry;
22
+ matrixWorld?: Matrix4;
23
+ constructor(type?: ObjectType);
24
+ add(object: DxfObject, ...args: DxfObject[]): this;
25
+ remove(object: DxfObject, ...args: DxfObject[]): this;
26
+ removeFromParent(): this;
27
+ clear(): this;
28
+ traverse(callback: CallBack): void;
29
+ clone(recursive?: boolean): DxfObject;
30
+ copy(source: DxfObject, recursive?: boolean): this;
31
+ convertToThreejsObject(recursive?: boolean): THREE.Object3D | undefined;
32
+ static getBox(object: DxfObject, box: THREE.Box3, parentMatrix?: Matrix4): Box3;
33
+ /**
34
+ * 计算 DxfObject 及其子对象的包围盒(Axis-Aligned Bounding Box)
35
+ * @param object - 包含几何体的容器
36
+ * obj 渲染dxf的块数据
37
+ * 由于业务实现很多情况下有些块需要拉伸实现可能空白的区域覆盖到别的块实体 2025/10/16改造
38
+ */
39
+ computeBoundingllBox(object: DxfObject, obj: any, aa: any): void;
40
+ rotateRectByBottomLeft(xmin: number, ymin: number, xmax: number, ymax: number, rotationDeg: number): {
41
+ x: number;
42
+ y: number;
43
+ }[];
44
+ }
@@ -0,0 +1,79 @@
1
+ import { DxfObject } from '../../core/dxf/DxfObject';
2
+ /**
3
+ * MergeHelper class is used to merge child objects for a given object
4
+ * @internal
5
+ */
6
+ export declare class DxfUtils {
7
+ static MergeInfo: {
8
+ removedObjects: number;
9
+ mergedMeshes: number;
10
+ mergedLines: number;
11
+ mergedPoints: number;
12
+ mergedUnknownTypeObjects: number;
13
+ elapsedTime: number;
14
+ };
15
+ static resetMergeInfo(): void;
16
+ /**
17
+ * Merges child objects for given object.
18
+ * it tries to merge objects in the same level and with the same parent;
19
+ * @param saveBatchInfo caller can set saveBatchInfo to true, so that s/he can
20
+ * get the object's original data before merged.
21
+ * While this takes some extra space, so, we'd like to add a flag here.
22
+ */
23
+ static merge(object: DxfObject, saveBatchInfo?: boolean): void;
24
+ /**
25
+ * Merges child objects of given object.
26
+ * If objects' material are the same, they can be merged.
27
+ */
28
+ private static mergeInner;
29
+ /**
30
+ * @param object parent object or THREE.Object3D[]
31
+ * @param i index of for object.children[]
32
+ * @param k index of for object.children[]
33
+ * @param dict to store merge-able object
34
+ * @param nonMergeIndexes used in order to improve performance
35
+ */
36
+ private static tryHandleMergeableObjects;
37
+ /**
38
+ * TODO: Filters XC etc.
39
+ * there are cases where entities with xc and without xc are merged together
40
+ */
41
+ private static isFilteredByOtherFactors;
42
+ /**
43
+ * Merges all objects of given object, just leaf children.
44
+ * If objects' material are the same, they can be merged.
45
+ * Better to call mergeInner first then deepMerge for a better performance.
46
+ * return \{ "added": THREE.Object3D[], "removed": THREE.Object3D[] \}
47
+ */
48
+ static deepMerge(objects: DxfObject[], levelObject?: DxfObject | undefined, bRemovedAndAddedAfterMerge?: boolean, bRemoveEmptyObjectsAfterMerge?: boolean, saveBatchInfo?: boolean): {
49
+ added: DxfObject[];
50
+ removed: DxfObject[];
51
+ };
52
+ /**
53
+ * since we'll move geometry to another merged mesh under a group, below is the structure:
54
+ - root object
55
+ - merged objects group
56
+ - merged object 1
57
+ * need to consider a geometry's matrix for each level of ancestor
58
+ */
59
+ private static applyMatrix;
60
+ /**
61
+ * Merges geometries for lines
62
+ */
63
+ /**
64
+ * Removes a number from array
65
+ */
66
+ private static removeFromArray;
67
+ /**
68
+ * Checks if two geometries are mergable.
69
+ * It requires they have the same type and the same attributes.
70
+ */
71
+ /**
72
+ * Checks if two objects are mergable.
73
+ * It requires
74
+ * - They are with the same masks.
75
+ * - Their userData.layerName must be the same if there is. This is useful for Dxf.
76
+ * - They have the same type or the same draw type( Mesh or Line or Point).
77
+ */
78
+ private static areObjectsMergeable;
79
+ }
@@ -0,0 +1,12 @@
1
+ import * as THREE from "three";
2
+ export interface PatternLine {
3
+ origin: THREE.Vector2;
4
+ delta: THREE.Vector2;
5
+ angle: number;
6
+ pattern: number[];
7
+ patternSum: number[];
8
+ patternLength: number;
9
+ }
10
+ export declare function createHatchPatternShaderMaterial(patternLines: PatternLine[], patternAngle: number, cameraZoomUniform: {
11
+ value: number;
12
+ }, color: THREE.Color, fixedThicknessInWorldCoord?: number): THREE.Material;