dsh-cad 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 (113) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +190 -0
  3. package/README.zh-CN.md +173 -0
  4. package/cordis.patch.yml +3 -0
  5. package/lib/b64.js +12 -0
  6. package/lib/cad_connector/builtin-executor.js +55 -0
  7. package/lib/cad_connector/builtin.js +8 -0
  8. package/lib/cad_connector/executor.js +76 -0
  9. package/lib/cad_connector/freecad-executor.js +398 -0
  10. package/lib/cad_connector/freecad.js +8 -0
  11. package/lib/cad_connector/fusion360-executor.js +398 -0
  12. package/lib/cad_connector/fusion360.js +8 -0
  13. package/lib/cad_connector/gstarcad3d.js +8 -0
  14. package/lib/cad_connector/index.js +20 -0
  15. package/lib/cad_connector/onshape.js +8 -0
  16. package/lib/cad_connector/solidworks.js +8 -0
  17. package/lib/cad_connector/types.js +6 -0
  18. package/lib/cad_connector/zw3d.js +8 -0
  19. package/lib/client.js +4117 -0
  20. package/lib/client.js.map +7 -0
  21. package/lib/convert/dcprt.js +38 -0
  22. package/lib/convert/detect.js +22 -0
  23. package/lib/convert/dxf.js +124 -0
  24. package/lib/convert/index.js +70 -0
  25. package/lib/convert/obj.js +106 -0
  26. package/lib/convert/png.js +114 -0
  27. package/lib/convert/step-worker.mjs +61 -0
  28. package/lib/convert/step.js +66 -0
  29. package/lib/convert/stl.js +110 -0
  30. package/lib/convert/svg.js +101 -0
  31. package/lib/demo-bracket.brep +668 -0
  32. package/lib/demo-flange.brep +709 -0
  33. package/lib/demo-shaft.brep +516 -0
  34. package/lib/feature_script/dc_asm.js +17 -0
  35. package/lib/feature_script/dc_engineering.js +19 -0
  36. package/lib/feature_script/dc_prt.js +21 -0
  37. package/lib/feature_script/index.js +7 -0
  38. package/lib/image/profile.js +218 -0
  39. package/lib/index.js +77 -0
  40. package/lib/modeling/assembly.js +63 -0
  41. package/lib/modeling/bin-format.js +80 -0
  42. package/lib/modeling/bin-store.js +67 -0
  43. package/lib/modeling/client.js +117 -0
  44. package/lib/modeling/document.js +55 -0
  45. package/lib/modeling/drawing.js +324 -0
  46. package/lib/modeling/hlr.cjs +328 -0
  47. package/lib/modeling/modeling-worker.cjs +235 -0
  48. package/lib/modeling/occt-adapter.cjs +271 -0
  49. package/lib/routes.js +142 -0
  50. package/lib/store.js +68 -0
  51. package/lib/tools/cad-freecad.js +160 -0
  52. package/lib/tools/cad-fusion.js +138 -0
  53. package/lib/tools/cad-image.js +121 -0
  54. package/lib/tools/cad-info.js +92 -0
  55. package/lib/tools/cad-model.js +816 -0
  56. package/lib/tools/cad-view.js +112 -0
  57. package/lib/tools/util.js +25 -0
  58. package/lib/types/b64.d.ts +8 -0
  59. package/lib/types/cad/builtin.d.ts +3 -0
  60. package/lib/types/cad/freecad.d.ts +3 -0
  61. package/lib/types/cad/fusion360.d.ts +3 -0
  62. package/lib/types/cad/gstarcad3d.d.ts +3 -0
  63. package/lib/types/cad/index.d.ts +8 -0
  64. package/lib/types/cad/onshape.d.ts +3 -0
  65. package/lib/types/cad/solidworks.d.ts +3 -0
  66. package/lib/types/cad/types.d.ts +21 -0
  67. package/lib/types/cad/zw3d.d.ts +3 -0
  68. package/lib/types/cad_connector/builtin-executor.d.ts +9 -0
  69. package/lib/types/cad_connector/builtin.d.ts +3 -0
  70. package/lib/types/cad_connector/executor.d.ts +69 -0
  71. package/lib/types/cad_connector/freecad-executor.d.ts +55 -0
  72. package/lib/types/cad_connector/freecad.d.ts +3 -0
  73. package/lib/types/cad_connector/fusion360-executor.d.ts +11 -0
  74. package/lib/types/cad_connector/fusion360.d.ts +3 -0
  75. package/lib/types/cad_connector/gstarcad3d.d.ts +3 -0
  76. package/lib/types/cad_connector/index.d.ts +8 -0
  77. package/lib/types/cad_connector/onshape.d.ts +3 -0
  78. package/lib/types/cad_connector/solidworks.d.ts +3 -0
  79. package/lib/types/cad_connector/types.d.ts +21 -0
  80. package/lib/types/cad_connector/zw3d.d.ts +3 -0
  81. package/lib/types/convert/dcprt.d.ts +14 -0
  82. package/lib/types/convert/detect.d.ts +7 -0
  83. package/lib/types/convert/dxf.d.ts +3 -0
  84. package/lib/types/convert/index.d.ts +9 -0
  85. package/lib/types/convert/obj.d.ts +7 -0
  86. package/lib/types/convert/png.d.ts +8 -0
  87. package/lib/types/convert/step.d.ts +4 -0
  88. package/lib/types/convert/stl.d.ts +7 -0
  89. package/lib/types/convert/svg.d.ts +8 -0
  90. package/lib/types/feature_script/dc_asm.d.ts +40 -0
  91. package/lib/types/feature_script/dc_engineering.d.ts +55 -0
  92. package/lib/types/feature_script/dc_prt.d.ts +37 -0
  93. package/lib/types/feature_script/index.d.ts +7 -0
  94. package/lib/types/image/profile.d.ts +28 -0
  95. package/lib/types/index.d.ts +18 -0
  96. package/lib/types/modeling/assembly.d.ts +17 -0
  97. package/lib/types/modeling/bin-format.d.ts +42 -0
  98. package/lib/types/modeling/bin-store.d.ts +20 -0
  99. package/lib/types/modeling/client.d.ts +125 -0
  100. package/lib/types/modeling/document.d.ts +26 -0
  101. package/lib/types/modeling/drawing.d.ts +38 -0
  102. package/lib/types/routes.d.ts +27 -0
  103. package/lib/types/store.d.ts +18 -0
  104. package/lib/types/tools/cad-freecad.d.ts +10 -0
  105. package/lib/types/tools/cad-fusion.d.ts +8 -0
  106. package/lib/types/tools/cad-image.d.ts +8 -0
  107. package/lib/types/tools/cad-info.d.ts +6 -0
  108. package/lib/types/tools/cad-model.d.ts +13 -0
  109. package/lib/types/tools/cad-view.d.ts +10 -0
  110. package/lib/types/tools/util.d.ts +4 -0
  111. package/lib/types/types.d.ts +142 -0
  112. package/lib/types.js +25 -0
  113. package/package.json +91 -0
@@ -0,0 +1,516 @@
1
+ DBRep_DrawableShape
2
+
3
+ CASCADE Topology V1, (c) Matra-Datavision
4
+ Locations 0
5
+ Curve2ds 42
6
+ 1 0 40 1 0
7
+ 2 0 0 1 0 -0 1 12
8
+ 1 6.2831853071795862 -0 0 1
9
+ 1 0 -0 0 1
10
+ 1 0 0 1 0
11
+ 2 0 0 1 0 -0 1 12
12
+ 1 0 0 1 0
13
+ 2 0 0 1 0 -0 1 16
14
+ 1 6.2831853071795862 -0 0 1
15
+ 1 0 -0 0 1
16
+ 1 0 30 1 0
17
+ 2 0 0 1 0 -0 1 16
18
+ 8 4.2000000000000028 25.799999999999997
19
+ 1 1.8234765819369754 0 0 1
20
+ 8 4.2000000000000028 25.799999999999997
21
+ 1 -6 -3.4919333848296681 1 0
22
+ 1 0 24 1 0
23
+ 2 4 -12 1 0 -0 1 16
24
+ 8 4.2000000000000028 25.799999999999997
25
+ 1 1.318116071652818 0 0 1
26
+ 8 4.2000000000000028 25.799999999999997
27
+ 1 -6 -3.4919333848296681 1 0
28
+ 1 0 6 1 0
29
+ 2 4 -12 1 0 -0 1 16
30
+ 1 0 0 1 0
31
+ 2 0 0 1 0 -0 1 12
32
+ 1 18 0 0 -1
33
+ 1 0 0 0 1
34
+ 1 0 0 0 -1
35
+ 1 0 0 0 1
36
+ 1 0 0 1 0
37
+ 1 0 0 1 0
38
+ 1 18 0 0 -1
39
+ 1 8 0 0 1
40
+ 1 18 0 0 1
41
+ 1 0 0 1 0
42
+ 1 0 0 0 -1
43
+ 1 8 0 0 1
44
+ 1 0 0 1 0
45
+ 1 0 8 1 0
46
+ 1 0 0 0 1
47
+ 1 0 0 1 0
48
+ 1 0 40 1 0
49
+ 2 0 0 1 0 -0 1 12
50
+ 1 6.2831853071795862 -0 0 1
51
+ 1 0 -0 0 1
52
+ Curves 21
53
+ 2 0 0 40 0 0 1 1 0 -0 -0 1 0 12
54
+ 1 12 -2.9391523179536475e-15 0 0 0 1
55
+ 2 0 0 0 0 0 1 1 0 -0 -0 1 0 12
56
+ 2 0 0 40 0 0 1 1 0 -0 -0 1 0 16
57
+ 1 16 -3.9188697572715303e-15 40 0 0 1
58
+ 2 0 0 70 0 0 1 1 0 -0 -0 1 0 16
59
+ 1 -4 15.491933384829668 40 0 0 1
60
+ 2 0 0 64 0 0 1 1 0 -0 -0 1 0 16
61
+ 1 4 15.491933384829668 40 0 0 1
62
+ 2 0 0 46 0 0 1 1 0 -0 -0 1 0 16
63
+ 2 0 0 70 0 0 1 1 0 -0 -0 1 0 12
64
+ 1 -4 12 64 -0 1 0
65
+ 1 -4 12 46 -0 1 0
66
+ 1 -4 12 46 0 0 1
67
+ 1 4 12 64 -0 1 0
68
+ 1 -4 12 64 1 0 -0
69
+ 1 4 12 46 -0 1 0
70
+ 1 4 12 46 0 0 1
71
+ 1 -4 12 46 1 0 -0
72
+ 2 0 0 110 0 0 1 1 0 -0 -0 1 0 12
73
+ 1 12 -2.9391523179536475e-15 70 0 0 1
74
+ Polygon3D 0
75
+ PolygonOnTriangulations 0
76
+ Surfaces 14
77
+ 2 0 0 0 0 0 1 1 0 -0 -0 1 0 12
78
+ 1 0 0 40 0 0 1 1 0 -0 -0 1 0
79
+ 1 0 0 0 0 0 1 1 0 -0 -0 1 0
80
+ 1 0 0 40 0 0 1 1 0 -0 -0 1 0
81
+ 2 0 0 40 0 0 1 1 0 -0 -0 1 0 16
82
+ 1 0 0 70 0 0 1 1 0 -0 -0 1 0
83
+ 1 -4 12 46 1 0 -0 0 0 1 0 -1 0
84
+ 1 -4 12 64 0 0 1 1 0 -0 -0 1 0
85
+ 1 4 12 46 1 0 -0 0 0 1 0 -1 0
86
+ 1 -4 12 46 0 0 1 1 0 -0 -0 1 0
87
+ 2 0 0 70 0 0 1 1 0 -0 -0 1 0 12
88
+ 1 0 0 70 0 0 1 1 0 -0 -0 1 0
89
+ 1 -4 12 46 -0 1 0 0 0 1 1 0 -0
90
+ 1 0 0 110 0 0 1 1 0 -0 -0 1 0
91
+ Triangulations 0
92
+
93
+ TShapes 66
94
+ Ve
95
+ 1e-07
96
+ 12 -2.93915231795365e-15 40
97
+ 0 0
98
+
99
+ 0101101
100
+ *
101
+ Ed
102
+ 1e-07 1 1 0
103
+ 1 1 0 0 6.28318530717959
104
+ 2 1 1 0 0 6.28318530717959
105
+ 2 2 2 0 0 6.28318530717959
106
+ 0
107
+
108
+ 0101000
109
+ +66 0 -66 0 *
110
+ Ve
111
+ 1e-07
112
+ 12 -2.93915231795365e-15 0
113
+ 0 0
114
+
115
+ 0101101
116
+ *
117
+ Ed
118
+ 1e-07 1 1 0
119
+ 1 2 0 0 40
120
+ 3 3 4CN 1 0 0 40
121
+ 0
122
+
123
+ 0101000
124
+ +64 0 -66 0 *
125
+ Ed
126
+ 1e-07 1 1 0
127
+ 1 3 0 0 6.28318530717959
128
+ 2 5 1 0 0 6.28318530717959
129
+ 2 6 3 0 0 6.28318530717959
130
+ 0
131
+
132
+ 0101000
133
+ +64 0 -64 0 *
134
+ Wi
135
+
136
+ 0101100
137
+ -65 0 +63 0 +62 0 -63 0 *
138
+ Fa
139
+ 0 1e-07 1 0
140
+
141
+ 0101000
142
+ +61 0 *
143
+ Ve
144
+ 1e-07
145
+ 16 -3.91886975727153e-15 40
146
+ 0 0
147
+
148
+ 0101101
149
+ *
150
+ Ed
151
+ 1e-07 1 1 0
152
+ 1 4 0 0 6.28318530717959
153
+ 2 7 5 0 0 6.28318530717959
154
+ 2 8 4 0 0 6.28318530717959
155
+ 0
156
+
157
+ 0101000
158
+ +59 0 -59 0 *
159
+ Wi
160
+
161
+ 0101100
162
+ +58 0 *
163
+ Wi
164
+
165
+ 0101100
166
+ -65 0 *
167
+ Fa
168
+ 0 1e-07 4 0
169
+
170
+ 0101000
171
+ +57 0 +56 0 *
172
+ Wi
173
+
174
+ 0101100
175
+ -62 0 *
176
+ Fa
177
+ 0 1e-07 3 0
178
+
179
+ 0111000
180
+ -54 0 *
181
+ Ve
182
+ 1e-07
183
+ 16 -3.91886975727153e-15 70
184
+ 0 0
185
+
186
+ 0101101
187
+ *
188
+ Ed
189
+ 1e-07 1 1 0
190
+ 1 5 0 0 30
191
+ 3 9 10CN 5 0 0 30
192
+ 0
193
+
194
+ 0101000
195
+ -52 0 +59 0 *
196
+ Ed
197
+ 1e-07 1 1 0
198
+ 1 6 0 0 6.28318530717959
199
+ 2 11 5 0 0 6.28318530717959
200
+ 2 12 6 0 0 6.28318530717959
201
+ 0
202
+
203
+ 0101000
204
+ +52 0 -52 0 *
205
+ Wi
206
+
207
+ 0101100
208
+ +51 0 +58 0 -51 0 -50 0 *
209
+ Ve
210
+ 1.00000001776357e-07
211
+ -4 15.4919333848297 46
212
+ 0 0
213
+
214
+ 0101101
215
+ *
216
+ Ve
217
+ 1.00000001776357e-07
218
+ -4 15.4919333848297 64
219
+ 0 0
220
+
221
+ 0101101
222
+ *
223
+ Ed
224
+ 1e-07 1 1 0
225
+ 1 7 0 6 24
226
+ 2 13 5 0 6 24
227
+ 2 14 7 0 6 24
228
+ 0
229
+
230
+ 0101000
231
+ +48 0 -47 0 *
232
+ Ve
233
+ 1e-07
234
+ 4 15.4919333848297 64
235
+ 0 0
236
+
237
+ 0101101
238
+ *
239
+ Ed
240
+ 1e-07 1 1 0
241
+ 1 8 0 1.31811607165282 1.82347658193698
242
+ 2 15 5 0 1.31811607165282 1.82347658193698
243
+ 2 16 8 0 1.31811607165282 1.82347658193698
244
+ 0
245
+
246
+ 0101000
247
+ +45 0 -47 0 *
248
+ Ve
249
+ 1e-07
250
+ 4 15.4919333848297 46
251
+ 0 0
252
+
253
+ 0101101
254
+ *
255
+ Ed
256
+ 1e-07 1 1 0
257
+ 1 9 0 6 24
258
+ 2 17 5 0 6 24
259
+ 2 18 9 0 6 24
260
+ 0
261
+
262
+ 0101000
263
+ +43 0 -45 0 *
264
+ Ed
265
+ 1e-07 1 1 0
266
+ 1 10 0 1.31811607165282 1.82347658193698
267
+ 2 19 5 0 1.31811607165282 1.82347658193698
268
+ 2 20 10 0 1.31811607165282 1.82347658193698
269
+ 0
270
+
271
+ 0101000
272
+ +43 0 -48 0 *
273
+ Wi
274
+
275
+ 0101100
276
+ -46 0 +44 0 +42 0 -41 0 *
277
+ Fa
278
+ 0 1e-07 5 0
279
+
280
+ 0101000
281
+ +49 0 +40 0 *
282
+ Wi
283
+
284
+ 0101100
285
+ +50 0 *
286
+ Ve
287
+ 1e-07
288
+ 12 -2.93915231795365e-15 70
289
+ 0 0
290
+
291
+ 0101101
292
+ *
293
+ Ed
294
+ 1e-07 1 1 0
295
+ 1 11 0 0 6.28318530717959
296
+ 2 21 11 0 0 6.28318530717959
297
+ 2 22 12 0 0 6.28318530717959
298
+ 0
299
+
300
+ 0101000
301
+ +37 0 -37 0 *
302
+ Wi
303
+
304
+ 0101100
305
+ -36 0 *
306
+ Fa
307
+ 0 1e-07 6 0
308
+
309
+ 0101000
310
+ +38 0 +35 0 *
311
+ Ve
312
+ 1e-07
313
+ -4 12 64
314
+ 0 0
315
+
316
+ 0101101
317
+ *
318
+ Ed
319
+ 1e-07 1 1 0
320
+ 1 12 0 0 3.49193338482967
321
+ 2 23 7 0 0 3.49193338482967
322
+ 2 24 8 0 0 3.49193338482967
323
+ 0
324
+
325
+ 0101000
326
+ +33 0 -47 0 *
327
+ Ve
328
+ 1e-07
329
+ -4 12 46
330
+ 0 0
331
+
332
+ 0101101
333
+ *
334
+ Ed
335
+ 1e-07 1 1 0
336
+ 1 13 0 0 3.49193338482967
337
+ 2 25 7 0 0 3.49193338482967
338
+ 2 26 10 0 0 3.49193338482967
339
+ 0
340
+
341
+ 0101000
342
+ +31 0 -48 0 *
343
+ Ed
344
+ 1e-07 1 1 0
345
+ 1 14 0 0 18
346
+ 2 27 7 0 0 18
347
+ 2 28 13 0 0 18
348
+ 0
349
+
350
+ 0101000
351
+ -33 0 +31 0 *
352
+ Wi
353
+
354
+ 0101100
355
+ -32 0 +46 0 +30 0 -29 0 *
356
+ Fa
357
+ 0 1e-07 7 0
358
+
359
+ 0101000
360
+ +28 0 *
361
+ Ve
362
+ 1e-07
363
+ 4 12 64
364
+ 0 0
365
+
366
+ 0101101
367
+ *
368
+ Ed
369
+ 1e-07 1 1 0
370
+ 1 15 0 0 3.49193338482967
371
+ 2 29 9 0 0 3.49193338482967
372
+ 2 30 8 0 0 3.49193338482967
373
+ 0
374
+
375
+ 0101000
376
+ +26 0 -45 0 *
377
+ Ed
378
+ 1e-07 1 1 0
379
+ 1 16 0 0 8
380
+ 2 31 13 0 0 8
381
+ 2 32 8 0 0 8
382
+ 0
383
+
384
+ 0101000
385
+ -26 0 +33 0 *
386
+ Wi
387
+
388
+ 0101100
389
+ -32 0 +44 0 +25 0 +24 0 *
390
+ Fa
391
+ 0 1e-07 8 0
392
+
393
+ 0101000
394
+ +23 0 *
395
+ Ve
396
+ 1e-07
397
+ 4 12 46
398
+ 0 0
399
+
400
+ 0101101
401
+ *
402
+ Ed
403
+ 1e-07 1 1 0
404
+ 1 17 0 0 3.49193338482967
405
+ 2 33 9 0 0 3.49193338482967
406
+ 2 34 10 0 0 3.49193338482967
407
+ 0
408
+
409
+ 0101000
410
+ +21 0 -43 0 *
411
+ Ed
412
+ 1e-07 1 1 0
413
+ 1 18 0 0 18
414
+ 2 35 9 0 0 18
415
+ 2 36 13 0 0 18
416
+ 0
417
+
418
+ 0101000
419
+ -26 0 +21 0 *
420
+ Wi
421
+
422
+ 0101100
423
+ -25 0 +42 0 +20 0 -19 0 *
424
+ Fa
425
+ 0 1e-07 9 0
426
+
427
+ 0101000
428
+ +18 0 *
429
+ Ed
430
+ 1e-07 1 1 0
431
+ 1 19 0 0 8
432
+ 2 37 13 0 0 8
433
+ 2 38 10 0 0 8
434
+ 0
435
+
436
+ 0101000
437
+ -21 0 +31 0 *
438
+ Wi
439
+
440
+ 0101100
441
+ -30 0 +41 0 +20 0 +16 0 *
442
+ Fa
443
+ 0 1e-07 10 0
444
+
445
+ 0101000
446
+ +15 0 *
447
+ Ve
448
+ 1e-07
449
+ 12 -2.93915231795365e-15 110
450
+ 0 0
451
+
452
+ 0101101
453
+ *
454
+ Ed
455
+ 1e-07 1 1 0
456
+ 1 20 0 0 6.28318530717959
457
+ 2 39 11 0 0 6.28318530717959
458
+ 2 40 14 0 0 6.28318530717959
459
+ 0
460
+
461
+ 0101000
462
+ +13 0 -13 0 *
463
+ Ed
464
+ 1e-07 1 1 0
465
+ 1 21 0 0 40
466
+ 3 41 42CN 11 0 0 40
467
+ 0
468
+
469
+ 0101000
470
+ +37 0 -13 0 *
471
+ Wi
472
+
473
+ 0101100
474
+ -12 0 +11 0 +36 0 -11 0 *
475
+ Fa
476
+ 0 1e-07 11 0
477
+
478
+ 0101000
479
+ +10 0 *
480
+ Wi
481
+
482
+ 0101100
483
+ -16 0 -19 0 +24 0 +29 0 *
484
+ Fa
485
+ 0 1e-07 13 0
486
+
487
+ 0111000
488
+ +8 0 *
489
+ Wi
490
+
491
+ 0101100
492
+ +12 0 *
493
+ Fa
494
+ 0 1e-07 14 0
495
+
496
+ 0111000
497
+ +6 0 *
498
+ Sh
499
+
500
+ 0101100
501
+ +60 0 -55 0 -53 0 +39 0 +34 0 +27 0 -22 0 -17 0 +14 0 +9 0
502
+ +7 0 +5 0 *
503
+ So
504
+
505
+ 0100000
506
+ +4 0 *
507
+ Co
508
+
509
+ 0100000
510
+ +3 0 *
511
+ Co
512
+
513
+ 1100000
514
+ +2 0 *
515
+
516
+ +1 0
@@ -0,0 +1,17 @@
1
+ /**
2
+ * dsh-cad assembly document (`.dcasm`) — instances of parts placed in one
3
+ * coordinate system. Parts are referenced, never embedded, so an assembly
4
+ * stays small and part edits propagate on reload.
5
+ *
6
+ * Placement mirrors the `cad_transform` op semantics (mm, Z-up, Euler degrees)
7
+ * so an instance can be materialized by replaying a transform on the
8
+ * referenced body.
9
+ */
10
+ export const DC_ASM_FORMAT = 'dcasm';
11
+ export const DC_ASM_EXTENSION = '.dcasm';
12
+ export function isDcAsmDocument(value) {
13
+ if (typeof value !== 'object' || value === null)
14
+ return false;
15
+ const doc = value;
16
+ return doc.header?.format === DC_ASM_FORMAT && Array.isArray(doc.instances);
17
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * dsh-cad engineering drawing document (`.dceng`) — a 2D sheet referencing 3D
3
+ * models through projected views, plus dimensions. Views are projections of
4
+ * referenced parts/bodies, so the drawing stays in sync with the geometry.
5
+ *
6
+ * Default sheet is A4 landscape (297 × 210 mm), matching the DXF/SVG 2D
7
+ * pipeline's true-drawing-units convention.
8
+ */
9
+ export const DC_ENG_FORMAT = 'dceng';
10
+ export const DC_ENG_EXTENSION = '.dceng';
11
+ export const DC_ENG_SHEET_A4 = { width: 297, height: 210 };
12
+ export function isDcEngDocument(value) {
13
+ if (typeof value !== 'object' || value === null)
14
+ return false;
15
+ const doc = value;
16
+ return (doc.header?.format === DC_ENG_FORMAT &&
17
+ typeof doc.sheet === 'object' && doc.sheet !== null &&
18
+ Array.isArray(doc.views));
19
+ }
@@ -0,0 +1,21 @@
1
+ export const DC_PRT_FORMAT = 'dcprt';
2
+ export const DC_PRT_EXTENSION = '.dcprt';
3
+ /** Serialize a live workspace modeling document into the shareable .dcprt form. */
4
+ export function toDcPrtDocument(doc) {
5
+ return {
6
+ header: { format: DC_PRT_FORMAT, version: 1, units: 'mm', upAxis: 'Z' },
7
+ docId: doc.docId,
8
+ version: doc.version,
9
+ features: doc.ops,
10
+ bodies: Object.entries(doc.bodyNames).map(([bodyId, name]) => ({ bodyId, name })),
11
+ };
12
+ }
13
+ export function isDcPrtDocument(value) {
14
+ if (typeof value !== 'object' || value === null)
15
+ return false;
16
+ const doc = value;
17
+ return (doc.header?.format === DC_PRT_FORMAT &&
18
+ typeof doc.docId === 'string' &&
19
+ Array.isArray(doc.features) &&
20
+ Array.isArray(doc.bodies));
21
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Native document formats ("feature scripts"): part, assembly and engineering
3
+ * drawing. See each module for its format contract.
4
+ */
5
+ export * from './dc_prt.js';
6
+ export * from './dc_asm.js';
7
+ export * from './dc_engineering.js';