@nice2dev/spatial-core 1.0.10

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 (82) hide show
  1. package/README.md +160 -0
  2. package/dist/bim/index.d.ts +366 -0
  3. package/dist/bim/index.d.ts.map +1 -0
  4. package/dist/bim/index.js +60 -0
  5. package/dist/bim/index.js.map +1 -0
  6. package/dist/cad/index.d.ts +329 -0
  7. package/dist/cad/index.d.ts.map +1 -0
  8. package/dist/cad/index.js +124 -0
  9. package/dist/cad/index.js.map +1 -0
  10. package/dist/ecad/index.d.ts +316 -0
  11. package/dist/ecad/index.d.ts.map +1 -0
  12. package/dist/ecad/index.js +11 -0
  13. package/dist/ecad/index.js.map +1 -0
  14. package/dist/export/index.d.ts +93 -0
  15. package/dist/export/index.d.ts.map +1 -0
  16. package/dist/export/index.js +522 -0
  17. package/dist/export/index.js.map +1 -0
  18. package/dist/floor-plan/index.d.ts +248 -0
  19. package/dist/floor-plan/index.d.ts.map +1 -0
  20. package/dist/floor-plan/index.js +228 -0
  21. package/dist/floor-plan/index.js.map +1 -0
  22. package/dist/grid/index.d.ts +160 -0
  23. package/dist/grid/index.d.ts.map +1 -0
  24. package/dist/grid/index.js +319 -0
  25. package/dist/grid/index.js.map +1 -0
  26. package/dist/import/import.worker.d.ts +28 -0
  27. package/dist/import/import.worker.d.ts.map +1 -0
  28. package/dist/import/import.worker.js +52 -0
  29. package/dist/import/import.worker.js.map +1 -0
  30. package/dist/import/index.d.ts +111 -0
  31. package/dist/import/index.d.ts.map +1 -0
  32. package/dist/import/index.js +1092 -0
  33. package/dist/import/index.js.map +1 -0
  34. package/dist/import/workerImport.d.ts +56 -0
  35. package/dist/import/workerImport.d.ts.map +1 -0
  36. package/dist/import/workerImport.js +207 -0
  37. package/dist/import/workerImport.js.map +1 -0
  38. package/dist/index.d.ts +29 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +86 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/interior/index.d.ts +241 -0
  43. package/dist/interior/index.d.ts.map +1 -0
  44. package/dist/interior/index.js +101 -0
  45. package/dist/interior/index.js.map +1 -0
  46. package/dist/measurement/index.d.ts +186 -0
  47. package/dist/measurement/index.d.ts.map +1 -0
  48. package/dist/measurement/index.js +400 -0
  49. package/dist/measurement/index.js.map +1 -0
  50. package/dist/objects/index.d.ts +288 -0
  51. package/dist/objects/index.d.ts.map +1 -0
  52. package/dist/objects/index.js +463 -0
  53. package/dist/objects/index.js.map +1 -0
  54. package/dist/serialization/index.d.ts +421 -0
  55. package/dist/serialization/index.d.ts.map +1 -0
  56. package/dist/serialization/index.js +412 -0
  57. package/dist/serialization/index.js.map +1 -0
  58. package/dist/topology/index.d.ts +252 -0
  59. package/dist/topology/index.d.ts.map +1 -0
  60. package/dist/topology/index.js +525 -0
  61. package/dist/topology/index.js.map +1 -0
  62. package/dist/transitions/index.d.ts +141 -0
  63. package/dist/transitions/index.d.ts.map +1 -0
  64. package/dist/transitions/index.js +160 -0
  65. package/dist/transitions/index.js.map +1 -0
  66. package/dist/unified/index.d.ts +225 -0
  67. package/dist/unified/index.d.ts.map +1 -0
  68. package/dist/unified/index.js +474 -0
  69. package/dist/unified/index.js.map +1 -0
  70. package/dist/virtualization/QuadTree.d.ts +68 -0
  71. package/dist/virtualization/QuadTree.d.ts.map +1 -0
  72. package/dist/virtualization/QuadTree.js +228 -0
  73. package/dist/virtualization/QuadTree.js.map +1 -0
  74. package/dist/virtualization/ViewportCulling.d.ts +92 -0
  75. package/dist/virtualization/ViewportCulling.d.ts.map +1 -0
  76. package/dist/virtualization/ViewportCulling.js +123 -0
  77. package/dist/virtualization/ViewportCulling.js.map +1 -0
  78. package/dist/virtualization/index.d.ts +9 -0
  79. package/dist/virtualization/index.d.ts.map +1 -0
  80. package/dist/virtualization/index.js +9 -0
  81. package/dist/virtualization/index.js.map +1 -0
  82. package/package.json +64 -0
@@ -0,0 +1,329 @@
1
+ /**
2
+ * Professional CAD Features — parametric constraints, boolean ops,
3
+ * measurement, section views, drawing generation, BOM, assembly.
4
+ *
5
+ * PRO-2.3 — 20 items
6
+ *
7
+ * @module @nice2dev/spatial-core/cad
8
+ */
9
+ import type { Point2D, Point3D } from '../grid/index';
10
+ export type ConstraintKind = 'parallel' | 'perpendicular' | 'distance' | 'angle' | 'coincident' | 'tangent' | 'equal-length' | 'symmetric' | 'horizontal' | 'vertical' | 'concentric' | 'midpoint' | 'fixed';
11
+ export interface ParametricConstraint {
12
+ id: string;
13
+ kind: ConstraintKind;
14
+ /** Referenced geometry IDs */
15
+ targets: string[];
16
+ /** Constraint value (distance in mm, angle in degrees, etc.) */
17
+ value?: number;
18
+ /** Is the constraint driven (display only) vs driving (enforced) */
19
+ driven: boolean;
20
+ }
21
+ export declare function validateConstraint(c: ParametricConstraint): boolean;
22
+ export type ConstructionType = 'line' | 'circle' | 'point' | 'arc' | 'axis';
23
+ export interface ConstructionGeometry {
24
+ id: string;
25
+ type: ConstructionType;
26
+ /** These are helper — not rendered in final output */
27
+ visible: boolean;
28
+ data: Record<string, unknown>;
29
+ }
30
+ export type BooleanOp = 'union' | 'subtract' | 'intersect';
31
+ export interface BooleanOperation {
32
+ op: BooleanOp;
33
+ targetId: string;
34
+ toolId: string;
35
+ /** Preview before applying */
36
+ preview: boolean;
37
+ }
38
+ export interface BooleanResult {
39
+ success: boolean;
40
+ resultId?: string;
41
+ error?: string;
42
+ }
43
+ export type EdgeModType = 'fillet' | 'chamfer';
44
+ export interface EdgeModification {
45
+ type: EdgeModType;
46
+ edgeIds: string[];
47
+ /** Radius for fillet, distance for chamfer (mm) */
48
+ value: number;
49
+ /** For asymmetric chamfer */
50
+ value2?: number;
51
+ }
52
+ export type PatternType = 'linear' | 'circular' | 'mirror';
53
+ export interface LinearPattern {
54
+ type: 'linear';
55
+ sourceIds: string[];
56
+ direction: Point2D;
57
+ count: number;
58
+ spacing: number;
59
+ }
60
+ export interface CircularPattern {
61
+ type: 'circular';
62
+ sourceIds: string[];
63
+ center: Point2D;
64
+ count: number;
65
+ /** Total angle in degrees (360 = full circle) */
66
+ totalAngle: number;
67
+ }
68
+ export interface MirrorPattern {
69
+ type: 'mirror';
70
+ sourceIds: string[];
71
+ /** Mirror axis defined by two points */
72
+ axisStart: Point2D;
73
+ axisEnd: Point2D;
74
+ }
75
+ export type CadPattern = LinearPattern | CircularPattern | MirrorPattern;
76
+ export interface CadMeasurement {
77
+ id: string;
78
+ type: 'distance' | 'angle' | 'area' | 'volume' | 'radius' | 'arc-length';
79
+ value: number;
80
+ unit: string;
81
+ /** Points used for the measurement */
82
+ points: Point2D[] | Point3D[];
83
+ /** Display label override */
84
+ label?: string;
85
+ }
86
+ export interface SectionPlane {
87
+ id: string;
88
+ /** Point on the plane */
89
+ origin: Point3D;
90
+ /** Normal vector */
91
+ normal: Point3D;
92
+ /** Name like "A-A" */
93
+ name: string;
94
+ /** Hatching pattern for cut faces */
95
+ hatchPattern: 'ansi31' | 'ansi32' | 'ansi37' | 'concrete' | 'earth' | 'steel' | 'wood' | 'none';
96
+ hatchScale: number;
97
+ }
98
+ export interface DetailView {
99
+ id: string;
100
+ /** Center of detail circle */
101
+ center: Point2D;
102
+ /** Radius of clipzone */
103
+ radius: number;
104
+ /** Scale factor (e.g. 2 = 2:1) */
105
+ scale: number;
106
+ label: string;
107
+ }
108
+ export type PaperSize = 'A0' | 'A1' | 'A2' | 'A3' | 'A4' | 'ANSI-A' | 'ANSI-B' | 'ANSI-C' | 'ANSI-D' | 'ANSI-E';
109
+ export interface DrawingSheet {
110
+ id: string;
111
+ name: string;
112
+ paperSize: PaperSize;
113
+ orientation: 'portrait' | 'landscape';
114
+ /** Scale like "1:50" */
115
+ scale: string;
116
+ views: DrawingView[];
117
+ titleBlock?: CadTitleBlock;
118
+ }
119
+ export interface DrawingView {
120
+ id: string;
121
+ type: 'front' | 'top' | 'right' | 'left' | 'bottom' | 'back' | 'isometric' | 'section' | 'detail' | 'auxiliary';
122
+ position: Point2D;
123
+ scale: number;
124
+ /** Reference IDs of parts to show */
125
+ partIds: string[];
126
+ sectionPlaneId?: string;
127
+ detailViewId?: string;
128
+ }
129
+ export interface CadTitleBlock {
130
+ companyName: string;
131
+ projectName: string;
132
+ drawingTitle: string;
133
+ drawnBy: string;
134
+ checkedBy?: string;
135
+ approvedBy?: string;
136
+ date: string;
137
+ revision: string;
138
+ drawingNumber: string;
139
+ scale: string;
140
+ material?: string;
141
+ weight?: string;
142
+ customFields?: Record<string, string>;
143
+ }
144
+ export interface BomEntry {
145
+ itemNo: number;
146
+ partNumber: string;
147
+ description: string;
148
+ quantity: number;
149
+ material?: string;
150
+ weight?: number;
151
+ unitCost?: number;
152
+ supplier?: string;
153
+ }
154
+ export declare function generateBom(parts: {
155
+ id: string;
156
+ partNumber: string;
157
+ description: string;
158
+ material?: string;
159
+ weight?: number;
160
+ }[]): BomEntry[];
161
+ export type GdtSymbol = 'straightness' | 'flatness' | 'circularity' | 'cylindricity' | 'line-profile' | 'surface-profile' | 'angularity' | 'perpendicularity' | 'parallelism' | 'position' | 'concentricity' | 'symmetry' | 'circular-runout' | 'total-runout';
162
+ export interface ToleranceAnnotation {
163
+ id: string;
164
+ symbol: GdtSymbol;
165
+ value: number;
166
+ /** Tolerance unit (mm by default) */
167
+ unit: string;
168
+ datumRefs?: string[];
169
+ /** Material condition modifier */
170
+ modifier?: 'mmc' | 'lmc' | 'rfs';
171
+ attachedTo: string;
172
+ }
173
+ export type HoleType = 'through' | 'blind' | 'counterbore' | 'countersink' | 'tapped';
174
+ export interface HoleSpec {
175
+ type: HoleType;
176
+ diameter: number;
177
+ depth?: number;
178
+ /** Thread standard (M6, M8, UNC 1/4-20, etc.) */
179
+ threadSpec?: string;
180
+ counterbore?: {
181
+ diameter: number;
182
+ depth: number;
183
+ };
184
+ countersink?: {
185
+ angle: number;
186
+ diameter: number;
187
+ };
188
+ }
189
+ export declare const STANDARD_METRIC_THREADS: readonly ["M2", "M2.5", "M3", "M4", "M5", "M6", "M8", "M10", "M12", "M14", "M16", "M18", "M20", "M22", "M24", "M27", "M30"];
190
+ export interface SheetMetalParams {
191
+ thickness: number;
192
+ /** Bend radius (inner) */
193
+ bendRadius: number;
194
+ /** K-factor for bend allowance calculations */
195
+ kFactor: number;
196
+ /** Relief type at bend corners */
197
+ reliefType: 'rectangular' | 'round' | 'obround' | 'none';
198
+ }
199
+ export interface BendLine {
200
+ id: string;
201
+ start: Point2D;
202
+ end: Point2D;
203
+ angle: number;
204
+ direction: 'up' | 'down';
205
+ }
206
+ export interface FlatPattern {
207
+ /** Unfolded outline */
208
+ outline: Point2D[];
209
+ bendLines: BendLine[];
210
+ /** Total flat dimensions */
211
+ width: number;
212
+ height: number;
213
+ }
214
+ export type WeldmentProfileType = 'angle' | 'channel' | 'pipe' | 'tube-rectangular' | 'tube-square' | 'i-beam' | 'h-beam' | 't-beam' | 'flat-bar';
215
+ export interface WeldmentProfile {
216
+ type: WeldmentProfileType;
217
+ standard: string;
218
+ designation: string;
219
+ /** Cross-section dimensions */
220
+ dimensions: Record<string, number>;
221
+ /** Weight per meter (kg/m) */
222
+ weightPerMeter: number;
223
+ material: string;
224
+ }
225
+ export type SurfaceOp = 'loft' | 'sweep' | 'revolve' | 'extrude' | 'boundary' | 'fill' | 'offset' | 'trim' | 'extend' | 'knit';
226
+ export interface NurbsSurface {
227
+ id: string;
228
+ degreeU: number;
229
+ degreeV: number;
230
+ controlPoints: Point3D[][];
231
+ weights: number[][];
232
+ knotsU: number[];
233
+ knotsV: number[];
234
+ }
235
+ export type MateType = 'coincident' | 'concentric' | 'distance' | 'angle' | 'tangent' | 'lock' | 'parallel' | 'perpendicular' | 'gear' | 'rack-pinion';
236
+ export interface AssemblyMate {
237
+ id: string;
238
+ type: MateType;
239
+ partA: string;
240
+ entityA: string;
241
+ partB: string;
242
+ entityB: string;
243
+ value?: number;
244
+ flipped?: boolean;
245
+ }
246
+ export interface AssemblyPart {
247
+ id: string;
248
+ name: string;
249
+ filePath?: string;
250
+ transform: {
251
+ position: Point3D;
252
+ rotation: Point3D;
253
+ };
254
+ mates: string[];
255
+ /** Is the part fixed (grounded) */
256
+ fixed: boolean;
257
+ }
258
+ export interface ExplosionStep {
259
+ partId: string;
260
+ direction: Point3D;
261
+ distance: number;
262
+ order: number;
263
+ }
264
+ export interface ExplodedView {
265
+ id: string;
266
+ name: string;
267
+ steps: ExplosionStep[];
268
+ /** Animate duration per step (ms) */
269
+ stepDuration: number;
270
+ }
271
+ export type MotionType = 'rotary' | 'linear' | 'spring' | 'gravity' | 'contact';
272
+ export interface MotionDriver {
273
+ id: string;
274
+ type: MotionType;
275
+ targetPartId: string;
276
+ /** Axis or direction */
277
+ axis: Point3D;
278
+ /** Velocity (deg/s for rotary, mm/s for linear) */
279
+ velocity?: number;
280
+ /** Spring stiffness (N/mm) */
281
+ stiffness?: number;
282
+ }
283
+ export interface MotionStudy {
284
+ id: string;
285
+ name: string;
286
+ duration: number;
287
+ fps: number;
288
+ drivers: MotionDriver[];
289
+ }
290
+ export type FeaAnalysisType = 'static' | 'thermal' | 'modal' | 'buckling';
291
+ export type LoadType = 'force' | 'pressure' | 'moment' | 'temperature' | 'displacement';
292
+ export type FixtureType = 'fixed' | 'pin' | 'roller' | 'spring';
293
+ export interface FeaLoad {
294
+ id: string;
295
+ type: LoadType;
296
+ faceIds: string[];
297
+ value: number;
298
+ direction?: Point3D;
299
+ }
300
+ export interface FeaFixture {
301
+ id: string;
302
+ type: FixtureType;
303
+ faceIds: string[];
304
+ }
305
+ export interface FeaMaterial {
306
+ name: string;
307
+ youngsModulus: number;
308
+ poissonsRatio: number;
309
+ density: number;
310
+ yieldStrength: number;
311
+ thermalConductivity?: number;
312
+ }
313
+ export interface FeaStudy {
314
+ id: string;
315
+ name: string;
316
+ analysisType: FeaAnalysisType;
317
+ material: FeaMaterial;
318
+ loads: FeaLoad[];
319
+ fixtures: FeaFixture[];
320
+ meshSize: number;
321
+ /** Results (populated after solving) */
322
+ results?: {
323
+ maxStress: number;
324
+ maxDisplacement: number;
325
+ safetyFactor: number;
326
+ };
327
+ }
328
+ export declare const FEA_MATERIALS: Record<string, FeaMaterial>;
329
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cad/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Professional CAD Features — parametric constraints, boolean ops,
3
+ * measurement, section views, drawing generation, BOM, assembly.
4
+ *
5
+ * PRO-2.3 — 20 items
6
+ *
7
+ * @module @nice2dev/spatial-core/cad
8
+ */
9
+ export function validateConstraint(c) {
10
+ if (c.targets.length < 1) {
11
+ return false;
12
+ }
13
+ if (c.kind === 'distance' && (c.value == null || c.value < 0)) {
14
+ return false;
15
+ }
16
+ if (c.kind === 'angle' && (c.value == null || c.value < 0 || c.value > 360)) {
17
+ return false;
18
+ }
19
+ return true;
20
+ }
21
+ export function generateBom(parts) {
22
+ const counts = new Map();
23
+ for (const p of parts) {
24
+ const existing = counts.get(p.partNumber);
25
+ if (existing) {
26
+ existing.count++;
27
+ }
28
+ else {
29
+ counts.set(p.partNumber, { part: p, count: 1 });
30
+ }
31
+ }
32
+ let itemNo = 1;
33
+ const bom = [];
34
+ for (const [, { part, count }] of counts) {
35
+ bom.push({
36
+ itemNo: itemNo++,
37
+ partNumber: part.partNumber,
38
+ description: part.description,
39
+ quantity: count,
40
+ material: part.material,
41
+ weight: part.weight,
42
+ });
43
+ }
44
+ return bom;
45
+ }
46
+ export const STANDARD_METRIC_THREADS = [
47
+ 'M2',
48
+ 'M2.5',
49
+ 'M3',
50
+ 'M4',
51
+ 'M5',
52
+ 'M6',
53
+ 'M8',
54
+ 'M10',
55
+ 'M12',
56
+ 'M14',
57
+ 'M16',
58
+ 'M18',
59
+ 'M20',
60
+ 'M22',
61
+ 'M24',
62
+ 'M27',
63
+ 'M30',
64
+ ];
65
+ // Common FEA materials
66
+ export const FEA_MATERIALS = {
67
+ 'steel-mild': {
68
+ name: 'Mild Steel',
69
+ youngsModulus: 200e9,
70
+ poissonsRatio: 0.29,
71
+ density: 7850,
72
+ yieldStrength: 250e6,
73
+ },
74
+ 'steel-stainless': {
75
+ name: 'Stainless Steel 304',
76
+ youngsModulus: 193e9,
77
+ poissonsRatio: 0.29,
78
+ density: 8000,
79
+ yieldStrength: 215e6,
80
+ },
81
+ 'aluminum-6061': {
82
+ name: 'Aluminum 6061-T6',
83
+ youngsModulus: 69e9,
84
+ poissonsRatio: 0.33,
85
+ density: 2700,
86
+ yieldStrength: 276e6,
87
+ },
88
+ 'titanium-grade5': {
89
+ name: 'Titanium Ti-6Al-4V',
90
+ youngsModulus: 114e9,
91
+ poissonsRatio: 0.34,
92
+ density: 4430,
93
+ yieldStrength: 880e6,
94
+ },
95
+ copper: {
96
+ name: 'Copper',
97
+ youngsModulus: 117e9,
98
+ poissonsRatio: 0.34,
99
+ density: 8960,
100
+ yieldStrength: 70e6,
101
+ },
102
+ 'abs-plastic': {
103
+ name: 'ABS Plastic',
104
+ youngsModulus: 2.3e9,
105
+ poissonsRatio: 0.35,
106
+ density: 1050,
107
+ yieldStrength: 43e6,
108
+ },
109
+ 'nylon-6': {
110
+ name: 'Nylon 6',
111
+ youngsModulus: 2.9e9,
112
+ poissonsRatio: 0.39,
113
+ density: 1140,
114
+ yieldStrength: 70e6,
115
+ },
116
+ 'cast-iron': {
117
+ name: 'Cast Iron',
118
+ youngsModulus: 170e9,
119
+ poissonsRatio: 0.26,
120
+ density: 7200,
121
+ yieldStrength: 200e6,
122
+ },
123
+ };
124
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cad/index.ts"],"names":[],"mappings":"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"}