@ifc-lite/create 1.14.5 → 1.15.1

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 (87) hide show
  1. package/dist/ifc-creator-math.d.ts +23 -0
  2. package/dist/ifc-creator-math.d.ts.map +1 -0
  3. package/dist/ifc-creator-math.js +50 -0
  4. package/dist/ifc-creator-math.js.map +1 -0
  5. package/dist/ifc-creator.d.ts +63 -1
  6. package/dist/ifc-creator.d.ts.map +1 -1
  7. package/dist/ifc-creator.js +222 -41
  8. package/dist/ifc-creator.js.map +1 -1
  9. package/dist/in-store/_emit-helpers.d.ts +52 -0
  10. package/dist/in-store/_emit-helpers.d.ts.map +1 -0
  11. package/dist/in-store/_emit-helpers.js +147 -0
  12. package/dist/in-store/_emit-helpers.js.map +1 -0
  13. package/dist/in-store/anchor.d.ts +29 -0
  14. package/dist/in-store/anchor.d.ts.map +1 -0
  15. package/dist/in-store/anchor.js +5 -0
  16. package/dist/in-store/anchor.js.map +1 -0
  17. package/dist/in-store/auto-space-detect.d.ts +68 -0
  18. package/dist/in-store/auto-space-detect.d.ts.map +1 -0
  19. package/dist/in-store/auto-space-detect.js +393 -0
  20. package/dist/in-store/auto-space-detect.js.map +1 -0
  21. package/dist/in-store/beam.d.ts +25 -0
  22. package/dist/in-store/beam.d.ts.map +1 -0
  23. package/dist/in-store/beam.js +119 -0
  24. package/dist/in-store/beam.js.map +1 -0
  25. package/dist/in-store/column.d.ts +42 -0
  26. package/dist/in-store/column.d.ts.map +1 -0
  27. package/dist/in-store/column.js +108 -0
  28. package/dist/in-store/column.js.map +1 -0
  29. package/dist/in-store/door.d.ts +44 -0
  30. package/dist/in-store/door.d.ts.map +1 -0
  31. package/dist/in-store/door.js +68 -0
  32. package/dist/in-store/door.js.map +1 -0
  33. package/dist/in-store/duplicate.d.ts +100 -0
  34. package/dist/in-store/duplicate.d.ts.map +1 -0
  35. package/dist/in-store/duplicate.js +122 -0
  36. package/dist/in-store/duplicate.js.map +1 -0
  37. package/dist/in-store/extract-walls.d.ts +80 -0
  38. package/dist/in-store/extract-walls.d.ts.map +1 -0
  39. package/dist/in-store/extract-walls.js +522 -0
  40. package/dist/in-store/extract-walls.js.map +1 -0
  41. package/dist/in-store/generate-spaces.d.ts +71 -0
  42. package/dist/in-store/generate-spaces.d.ts.map +1 -0
  43. package/dist/in-store/generate-spaces.js +76 -0
  44. package/dist/in-store/generate-spaces.js.map +1 -0
  45. package/dist/in-store/member.d.ts +32 -0
  46. package/dist/in-store/member.d.ts.map +1 -0
  47. package/dist/in-store/member.js +35 -0
  48. package/dist/in-store/member.js.map +1 -0
  49. package/dist/in-store/plate.d.ts +43 -0
  50. package/dist/in-store/plate.d.ts.map +1 -0
  51. package/dist/in-store/plate.js +33 -0
  52. package/dist/in-store/plate.js.map +1 -0
  53. package/dist/in-store/resolve-anchor.d.ts +12 -0
  54. package/dist/in-store/resolve-anchor.d.ts.map +1 -0
  55. package/dist/in-store/resolve-anchor.js +125 -0
  56. package/dist/in-store/resolve-anchor.js.map +1 -0
  57. package/dist/in-store/resolve-source.d.ts +19 -0
  58. package/dist/in-store/resolve-source.d.ts.map +1 -0
  59. package/dist/in-store/resolve-source.js +203 -0
  60. package/dist/in-store/resolve-source.js.map +1 -0
  61. package/dist/in-store/roof.d.ts +43 -0
  62. package/dist/in-store/roof.d.ts.map +1 -0
  63. package/dist/in-store/roof.js +33 -0
  64. package/dist/in-store/roof.js.map +1 -0
  65. package/dist/in-store/slab.d.ts +44 -0
  66. package/dist/in-store/slab.d.ts.map +1 -0
  67. package/dist/in-store/slab.js +142 -0
  68. package/dist/in-store/slab.js.map +1 -0
  69. package/dist/in-store/space.d.ts +43 -0
  70. package/dist/in-store/space.d.ts.map +1 -0
  71. package/dist/in-store/space.js +71 -0
  72. package/dist/in-store/space.js.map +1 -0
  73. package/dist/in-store/wall.d.ts +27 -0
  74. package/dist/in-store/wall.d.ts.map +1 -0
  75. package/dist/in-store/wall.js +121 -0
  76. package/dist/in-store/wall.js.map +1 -0
  77. package/dist/in-store/window.d.ts +36 -0
  78. package/dist/in-store/window.d.ts.map +1 -0
  79. package/dist/in-store/window.js +57 -0
  80. package/dist/in-store/window.js.map +1 -0
  81. package/dist/index.d.ts +18 -1
  82. package/dist/index.d.ts.map +1 -1
  83. package/dist/index.js +18 -0
  84. package/dist/index.js.map +1 -1
  85. package/dist/types.d.ts +96 -0
  86. package/dist/types.d.ts.map +1 -1
  87. package/package.json +10 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-space-detect.js","sourceRoot":"","sources":["../../src/in-store/auto-space-detect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { StoreEditor } from '@ifc-lite/mutations';
2
+ import type { SpatialAnchor } from './anchor.js';
3
+ export interface BeamInStoreParams {
4
+ Start: [number, number, number];
5
+ End: [number, number, number];
6
+ /** Cross-section width along local X (metres). */
7
+ Width: number;
8
+ /** Cross-section height along local Y (metres). */
9
+ Height: number;
10
+ Name?: string;
11
+ Description?: string;
12
+ ObjectType?: string;
13
+ Tag?: string;
14
+ }
15
+ export interface BeamBuildResult {
16
+ beamId: number;
17
+ placementId: number;
18
+ profileId: number;
19
+ solidId: number;
20
+ shapeRepId: number;
21
+ productShapeId: number;
22
+ relContainedId: number;
23
+ }
24
+ export declare function addBeamToStore(editor: StoreEditor, anchor: SpatialAnchor, params: BeamInStoreParams): BeamBuildResult;
25
+ //# sourceMappingURL=beam.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beam.d.ts","sourceRoot":"","sources":["../../src/in-store/beam.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAUD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,iBAAiB,GACxB,eAAe,CAkGjB"}
@@ -0,0 +1,119 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ /**
5
+ * Anchored builder for IfcBeam — emits a beam between two points
6
+ * (Start → End) into a `StoreEditor` overlay. Mirrors
7
+ * `IfcCreator.addIfcBeam` semantics:
8
+ *
9
+ * - placement origin at `Start`, local Z = beam axis (so the
10
+ * extrusion runs along the beam)
11
+ * - local X = a stable perpendicular to the beam axis (chosen via
12
+ * cross product against world up, falling back to world X for
13
+ * near-vertical beams to avoid degenerate placements)
14
+ * - cross-section = rectangle(Width × Height) centred on the axis
15
+ * - extruded along local Z by the beam length
16
+ *
17
+ * Pure: no I/O, no parser access — operates entirely through the editor.
18
+ */
19
+ import { generateIfcGuid } from '@ifc-lite/encoding';
20
+ import { vecCross, vecNorm } from '../ifc-creator-math.js';
21
+ /**
22
+ * Stable perpendicular to a beam axis. Mirrors IfcCreator.computeRefDirection.
23
+ */
24
+ function computeRefDirection(axis) {
25
+ const up = Math.abs(axis[2]) < 0.9 ? [0, 0, 1] : [1, 0, 0];
26
+ return vecNorm(vecCross(up, axis));
27
+ }
28
+ export function addBeamToStore(editor, anchor, params) {
29
+ const { ownerHistoryId, bodyContextId, storeyId, storeyPlacementId } = anchor;
30
+ const dx = params.End[0] - params.Start[0];
31
+ const dy = params.End[1] - params.Start[1];
32
+ const dz = params.End[2] - params.Start[2];
33
+ const beamLen = Math.sqrt(dx * dx + dy * dy + dz * dz);
34
+ if (beamLen <= 0) {
35
+ throw new Error('addBeamToStore: Start and End must be distinct points');
36
+ }
37
+ if (params.Width <= 0 || params.Height <= 0) {
38
+ throw new Error('addBeamToStore: Width and Height must be positive');
39
+ }
40
+ const dir = vecNorm([dx, dy, dz]);
41
+ const refDir = computeRefDirection(dir);
42
+ // Placement at Start with local Z along the beam axis.
43
+ const beamOriginPt = editor.addEntity('IfcCartesianPoint', [params.Start]).expressId;
44
+ const axisVec = editor.addEntity('IfcDirection', [dir]).expressId;
45
+ const refDirVec = editor.addEntity('IfcDirection', [refDir]).expressId;
46
+ const beamAxis = editor.addEntity('IfcAxis2Placement3D', [
47
+ `#${beamOriginPt}`,
48
+ `#${axisVec}`,
49
+ `#${refDirVec}`,
50
+ ]).expressId;
51
+ const placementId = editor.addEntity('IfcLocalPlacement', [
52
+ `#${storeyPlacementId}`,
53
+ `#${beamAxis}`,
54
+ ]).expressId;
55
+ // Cross-section centred on the axis.
56
+ const profileOriginPt = editor.addEntity('IfcCartesianPoint', [[0, 0]]).expressId;
57
+ const profilePos = editor.addEntity('IfcAxis2Placement2D', [`#${profileOriginPt}`, null]).expressId;
58
+ const profileId = editor.addEntity('IfcRectangleProfileDef', [
59
+ '.AREA.',
60
+ null,
61
+ `#${profilePos}`,
62
+ params.Width,
63
+ params.Height,
64
+ ]).expressId;
65
+ // Extrude along local Z (= beam direction) for the beam length.
66
+ const solidOriginPt = editor.addEntity('IfcCartesianPoint', [[0, 0, 0]]).expressId;
67
+ const solidAxis = editor.addEntity('IfcAxis2Placement3D', [`#${solidOriginPt}`, null, null]).expressId;
68
+ const extrudeDirection = editor.addEntity('IfcDirection', [[0, 0, 1]]).expressId;
69
+ const solidId = editor.addEntity('IfcExtrudedAreaSolid', [
70
+ `#${profileId}`,
71
+ `#${solidAxis}`,
72
+ `#${extrudeDirection}`,
73
+ beamLen,
74
+ ]).expressId;
75
+ const shapeRepId = editor.addEntity('IfcShapeRepresentation', [
76
+ `#${bodyContextId}`,
77
+ 'Body',
78
+ 'SweptSolid',
79
+ [`#${solidId}`],
80
+ ]).expressId;
81
+ const productShapeId = editor.addEntity('IfcProductDefinitionShape', [
82
+ null,
83
+ null,
84
+ [`#${shapeRepId}`],
85
+ ]).expressId;
86
+ // `IfcBeam.PredefinedType` only exists from IFC4 onward.
87
+ const beamAttrs = [
88
+ generateIfcGuid(),
89
+ `#${ownerHistoryId}`,
90
+ params.Name ?? 'Beam',
91
+ params.Description ?? null,
92
+ params.ObjectType ?? null,
93
+ `#${placementId}`,
94
+ `#${productShapeId}`,
95
+ params.Tag ?? null,
96
+ ];
97
+ if ((anchor.schema ?? 'IFC4') !== 'IFC2X3') {
98
+ beamAttrs.push('.BEAM.');
99
+ }
100
+ const beamId = editor.addEntity('IfcBeam', beamAttrs).expressId;
101
+ const relContainedId = editor.addEntity('IfcRelContainedInSpatialStructure', [
102
+ generateIfcGuid(),
103
+ `#${ownerHistoryId}`,
104
+ null,
105
+ null,
106
+ [`#${beamId}`],
107
+ `#${storeyId}`,
108
+ ]).expressId;
109
+ return {
110
+ beamId,
111
+ placementId,
112
+ profileId,
113
+ solidId,
114
+ shapeRepId,
115
+ productShapeId,
116
+ relContainedId,
117
+ };
118
+ }
119
+ //# sourceMappingURL=beam.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beam.js","sourceRoot":"","sources":["../../src/in-store/beam.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import type { StoreEditor } from '@ifc-lite/mutations';
2
+ import type { SpatialAnchor } from './anchor.js';
3
+ export interface ColumnInStoreParams {
4
+ /** Base centre of the column, in storey-local coordinates (metres). */
5
+ Position: [number, number, number];
6
+ /** Profile width along storey-local X (metres). */
7
+ Width: number;
8
+ /** Profile depth along storey-local Y (metres). */
9
+ Depth: number;
10
+ /** Extrusion height along +Z (metres). */
11
+ Height: number;
12
+ /** IfcRoot Name attribute (default `'Column'`). */
13
+ Name?: string;
14
+ Description?: string;
15
+ ObjectType?: string;
16
+ Tag?: string;
17
+ }
18
+ /**
19
+ * Result of `addColumnToStore` — the new column's expressId plus a
20
+ * tap into the dependent entities for callers that want to e.g. apply
21
+ * a colour or further mutations to the geometry.
22
+ */
23
+ export interface ColumnBuildResult {
24
+ columnId: number;
25
+ placementId: number;
26
+ profileId: number;
27
+ solidId: number;
28
+ shapeRepId: number;
29
+ productShapeId: number;
30
+ /** The IfcRelContainedInSpatialStructure linking the column to its storey. */
31
+ relContainedId: number;
32
+ }
33
+ /**
34
+ * Add an IfcColumn to a parsed model via the StoreEditor overlay. Returns
35
+ * the freshly-allocated expressIds for every entity that was emitted.
36
+ *
37
+ * The caller is responsible for resolving `anchor` from the parsed store
38
+ * (look up IfcOwnerHistory, the 'Body' representation context, and the
39
+ * target IfcBuildingStorey + its ObjectPlacement).
40
+ */
41
+ export declare function addColumnToStore(editor: StoreEditor, anchor: SpatialAnchor, params: ColumnInStoreParams): ColumnBuildResult;
42
+ //# sourceMappingURL=column.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column.d.ts","sourceRoot":"","sources":["../../src/in-store/column.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,WAAW,mBAAmB;IAClC,uEAAuE;IACvE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,mBAAmB,GAC1B,iBAAiB,CAwFnB"}
@@ -0,0 +1,108 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ /**
5
+ * Anchored builder for IfcColumn — emits the full sub-graph (placement,
6
+ * profile, extruded solid, representation, product shape, column,
7
+ * IfcRelContainedInSpatialStructure) into a `StoreEditor`'s overlay.
8
+ *
9
+ * The column lands in the spatial structure of an existing parsed model
10
+ * (anchored to a storey + the model's owner history + its 'Body'
11
+ * representation context). This is the in-place equivalent of
12
+ * `IfcCreator.addIfcColumn()` and closes the merge-roundtrip gap from
13
+ * LTplus-AG/ifc-lite#592.
14
+ *
15
+ * Pure: no I/O, no parser access — operates entirely through the editor.
16
+ */
17
+ import { generateIfcGuid } from '@ifc-lite/encoding';
18
+ /**
19
+ * Add an IfcColumn to a parsed model via the StoreEditor overlay. Returns
20
+ * the freshly-allocated expressIds for every entity that was emitted.
21
+ *
22
+ * The caller is responsible for resolving `anchor` from the parsed store
23
+ * (look up IfcOwnerHistory, the 'Body' representation context, and the
24
+ * target IfcBuildingStorey + its ObjectPlacement).
25
+ */
26
+ export function addColumnToStore(editor, anchor, params) {
27
+ const { ownerHistoryId, bodyContextId, storeyId, storeyPlacementId } = anchor;
28
+ // Local placement chain: IfcCartesianPoint → IfcAxis2Placement3D →
29
+ // IfcLocalPlacement (parent = storey placement).
30
+ const colOriginPt = editor.addEntity('IfcCartesianPoint', [params.Position]).expressId;
31
+ const colAxis = editor.addEntity('IfcAxis2Placement3D', [`#${colOriginPt}`, null, null]).expressId;
32
+ const placementId = editor.addEntity('IfcLocalPlacement', [
33
+ `#${storeyPlacementId}`,
34
+ `#${colAxis}`,
35
+ ]).expressId;
36
+ // Rectangle profile centred at origin: IfcCartesianPoint(0,0) →
37
+ // IfcAxis2Placement2D → IfcRectangleProfileDef.
38
+ const profileOriginPt = editor.addEntity('IfcCartesianPoint', [[0, 0]]).expressId;
39
+ const profilePos = editor.addEntity('IfcAxis2Placement2D', [`#${profileOriginPt}`, null]).expressId;
40
+ const profileId = editor.addEntity('IfcRectangleProfileDef', [
41
+ '.AREA.',
42
+ null,
43
+ `#${profilePos}`,
44
+ params.Width,
45
+ params.Depth,
46
+ ]).expressId;
47
+ // Extruded solid: another local origin point, axis placement, +Z direction,
48
+ // then IfcExtrudedAreaSolid(Profile, Position, ExtrudedDirection, Depth).
49
+ const solidOriginPt = editor.addEntity('IfcCartesianPoint', [[0, 0, 0]]).expressId;
50
+ const solidAxis = editor.addEntity('IfcAxis2Placement3D', [`#${solidOriginPt}`, null, null]).expressId;
51
+ const extrudeDirection = editor.addEntity('IfcDirection', [[0, 0, 1]]).expressId;
52
+ const solidId = editor.addEntity('IfcExtrudedAreaSolid', [
53
+ `#${profileId}`,
54
+ `#${solidAxis}`,
55
+ `#${extrudeDirection}`,
56
+ params.Height,
57
+ ]).expressId;
58
+ // Shape representation in the Body context, then product shape.
59
+ const shapeRepId = editor.addEntity('IfcShapeRepresentation', [
60
+ `#${bodyContextId}`,
61
+ 'Body',
62
+ 'SweptSolid',
63
+ [`#${solidId}`],
64
+ ]).expressId;
65
+ const productShapeId = editor.addEntity('IfcProductDefinitionShape', [
66
+ null,
67
+ null,
68
+ [`#${shapeRepId}`],
69
+ ]).expressId;
70
+ // The column itself. `IfcColumn.PredefinedType` only exists from IFC4
71
+ // onward — IFC2X3 has no such attribute, so emitting `.COLUMN.` there
72
+ // would produce an invalid 9-arg entity record.
73
+ const columnAttrs = [
74
+ generateIfcGuid(),
75
+ `#${ownerHistoryId}`,
76
+ params.Name ?? 'Column',
77
+ params.Description ?? null,
78
+ params.ObjectType ?? null,
79
+ `#${placementId}`,
80
+ `#${productShapeId}`,
81
+ params.Tag ?? null,
82
+ ];
83
+ if ((anchor.schema ?? 'IFC4') !== 'IFC2X3') {
84
+ columnAttrs.push('.COLUMN.');
85
+ }
86
+ const columnId = editor.addEntity('IfcColumn', columnAttrs).expressId;
87
+ // Link column → storey via a fresh IfcRelContainedInSpatialStructure.
88
+ // Adding a parallel relationship is simpler than mutating the storey's
89
+ // existing one and produces an equivalent result on import.
90
+ const relContainedId = editor.addEntity('IfcRelContainedInSpatialStructure', [
91
+ generateIfcGuid(),
92
+ `#${ownerHistoryId}`,
93
+ null,
94
+ null,
95
+ [`#${columnId}`],
96
+ `#${storeyId}`,
97
+ ]).expressId;
98
+ return {
99
+ columnId,
100
+ placementId,
101
+ profileId,
102
+ solidId,
103
+ shapeRepId,
104
+ productShapeId,
105
+ relContainedId,
106
+ };
107
+ }
108
+ //# sourceMappingURL=column.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column.js","sourceRoot":"","sources":["../../src/in-store/column.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Anchored builder for IfcDoor — a free-standing rectangular leaf.
3
+ *
4
+ * v1 places a door without cutting an opening in any wall (callers
5
+ * who need a wall-hosted door can use `IfcCreator.addIfcWallDoor`
6
+ * for now). Geometry is a thin solid: `Width × FrameThickness ×
7
+ * Height` extruded up.
8
+ *
9
+ * The IFC4 IfcDoor entity adds `OverallHeight`, `OverallWidth`,
10
+ * `PredefinedType`, `OperationType`, `UserDefinedOperationType` to
11
+ * the IfcElement header. IFC2X3 stops at OverallHeight + OverallWidth
12
+ * (no PredefinedType / OperationType slots).
13
+ */
14
+ import type { StoreEditor } from '@ifc-lite/mutations';
15
+ import type { SpatialAnchor } from './anchor.js';
16
+ export interface DoorInStoreParams {
17
+ /** Bottom-centre of the door leaf, in storey-local coordinates. */
18
+ Position: [number, number, number];
19
+ Width: number;
20
+ Height: number;
21
+ /** Door leaf depth along storey-local +Y (metres). Defaults to 0.05. */
22
+ FrameThickness?: number;
23
+ /** IFC4 PredefinedType enum (without the dots). Defaults to NOTDEFINED. */
24
+ PredefinedType?: 'DOOR' | 'GATE' | 'TRAPDOOR' | 'USERDEFINED' | 'NOTDEFINED';
25
+ /** IFC4 OperationType enum (without the dots). Defaults to SINGLE_SWING_LEFT. */
26
+ OperationType?: string;
27
+ /** Free-text label when OperationType === 'USERDEFINED'. Ignored otherwise. */
28
+ UserDefinedOperationType?: string;
29
+ Name?: string;
30
+ Description?: string;
31
+ ObjectType?: string;
32
+ Tag?: string;
33
+ }
34
+ export interface DoorBuildResult {
35
+ doorId: number;
36
+ placementId: number;
37
+ profileId: number;
38
+ solidId: number;
39
+ shapeRepId: number;
40
+ productShapeId: number;
41
+ relContainedId: number;
42
+ }
43
+ export declare function addDoorToStore(editor: StoreEditor, anchor: SpatialAnchor, params: DoorInStoreParams): DoorBuildResult;
44
+ //# sourceMappingURL=door.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"door.d.ts","sourceRoot":"","sources":["../../src/in-store/door.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAsCjD,MAAM,WAAW,iBAAiB;IAChC,mEAAmE;IACnE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2EAA2E;IAC3E,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,aAAa,GAAG,YAAY,CAAC;IAC7E,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+EAA+E;IAC/E,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,iBAAiB,GACxB,eAAe,CAuCjB"}
@@ -0,0 +1,68 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ import { emitBodyRepresentation, emitExtrudedSolid, emitLocalPlacement, emitRectangleProfile, emitRelContainedInSpatialStructure, ifcElementHeader, } from './_emit-helpers.js';
5
+ /**
6
+ * IfcDoorTypeOperationEnum (IFC4). Anything outside this set is
7
+ * normalised to USERDEFINED + UserDefinedOperationType so the exported
8
+ * STEP carries a valid enum token.
9
+ */
10
+ const DOOR_OPERATION_ENUM = new Set([
11
+ 'SINGLE_SWING_LEFT',
12
+ 'SINGLE_SWING_RIGHT',
13
+ 'DOUBLE_DOOR_SINGLE_SWING',
14
+ 'DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT',
15
+ 'DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT',
16
+ 'DOUBLE_SWING_LEFT',
17
+ 'DOUBLE_SWING_RIGHT',
18
+ 'DOUBLE_DOOR_DOUBLE_SWING',
19
+ 'SLIDING_TO_LEFT',
20
+ 'SLIDING_TO_RIGHT',
21
+ 'DOUBLE_DOOR_SLIDING',
22
+ 'FOLDING_TO_LEFT',
23
+ 'FOLDING_TO_RIGHT',
24
+ 'DOUBLE_DOOR_FOLDING',
25
+ 'REVOLVING',
26
+ 'ROLLINGUP',
27
+ 'SWING_FIXED_LEFT',
28
+ 'SWING_FIXED_RIGHT',
29
+ 'USERDEFINED',
30
+ 'NOTDEFINED',
31
+ ]);
32
+ export function addDoorToStore(editor, anchor, params) {
33
+ if (params.Width <= 0 || params.Height <= 0) {
34
+ throw new Error('addDoorToStore: Width and Height must be positive');
35
+ }
36
+ const thickness = params.FrameThickness ?? 0.05;
37
+ if (thickness <= 0) {
38
+ throw new Error('addDoorToStore: FrameThickness must be positive');
39
+ }
40
+ const placementId = emitLocalPlacement(editor, anchor.storeyPlacementId, params.Position);
41
+ // Profile centred at the placement origin so the leaf is bottom-
42
+ // centred — matches IfcCreator's free-standing door convention.
43
+ const profileId = emitRectangleProfile(editor, params.Width, thickness);
44
+ const solidId = emitExtrudedSolid(editor, profileId, params.Height);
45
+ const { shapeRepId, productShapeId } = emitBodyRepresentation(editor, anchor.bodyContextId, solidId);
46
+ const isIFC2X3 = (anchor.schema ?? 'IFC4') === 'IFC2X3';
47
+ const attrs = ifcElementHeader(anchor.ownerHistoryId, placementId, productShapeId, params, 'Door');
48
+ // OverallHeight / OverallWidth are present on IfcDoor in both schemas.
49
+ attrs.push(params.Height, params.Width);
50
+ if (!isIFC2X3) {
51
+ // Free-form values outside IfcDoorTypeOperationEnum are normalised
52
+ // to USERDEFINED + UserDefinedOperationType so the exported STEP
53
+ // carries a valid enum token rather than `.<value>.`.
54
+ const requested = params.OperationType ?? 'SINGLE_SWING_LEFT';
55
+ const isKnownEnum = DOOR_OPERATION_ENUM.has(requested);
56
+ const operationType = isKnownEnum ? requested : 'USERDEFINED';
57
+ const userDefined = operationType === 'USERDEFINED'
58
+ ? (isKnownEnum ? params.UserDefinedOperationType ?? null : requested)
59
+ : null;
60
+ attrs.push(`.${params.PredefinedType ?? 'NOTDEFINED'}.`);
61
+ attrs.push(`.${operationType}.`);
62
+ attrs.push(userDefined);
63
+ }
64
+ const doorId = editor.addEntity('IfcDoor', attrs).expressId;
65
+ const relContainedId = emitRelContainedInSpatialStructure(editor, anchor.ownerHistoryId, doorId, anchor.storeyId);
66
+ return { doorId, placementId, profileId, solidId, shapeRepId, productShapeId, relContainedId };
67
+ }
68
+ //# sourceMappingURL=door.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"door.js","sourceRoot":"","sources":["../../src/in-store/door.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ import type { StoreEditor } from '@ifc-lite/mutations';
2
+ import type { IfcAttributeValue } from '@ifc-lite/mutations';
3
+ /** A 3D vector — STEP-local metres. */
4
+ export type Vec3 = [number, number, number];
5
+ /**
6
+ * One existing IfcRelDefines* / IfcRelAssociates* edge that
7
+ * references the source. The duplicate flow emits a fresh rel of the
8
+ * same type pointing at the duplicate so the exported STEP carries
9
+ * the same psets / qsets / material / classifications / documents /
10
+ * type associations the source had — without modifying the existing
11
+ * rels.
12
+ *
13
+ * The resolver populates these from the parsed store; the in-store
14
+ * builder stays parser-free.
15
+ */
16
+ export interface SourceAssociation {
17
+ /** Existing rel's IFC type (e.g. `'IfcRelDefinesByProperties'`). */
18
+ relType: string;
19
+ /**
20
+ * Existing rel's OwnerHistory expressId, or `null` when the source
21
+ * rel omits it (`$`). IFC4 makes `IfcRoot.OwnerHistory` optional.
22
+ */
23
+ ownerHistoryId: number | null;
24
+ /** Existing rel's Name attribute (parsed; null when `$`). */
25
+ name: string | null;
26
+ /** Existing rel's Description attribute (parsed; null when `$`). */
27
+ description: string | null;
28
+ /**
29
+ * The existing rel's `Relating*` reference (positional index 5):
30
+ * - `IfcRelDefinesByProperties.RelatingPropertyDefinition` → IfcPropertySet / IfcElementQuantity
31
+ * - `IfcRelDefinesByType.RelatingType` → Type entity
32
+ * - `IfcRelAssociatesMaterial.RelatingMaterial`
33
+ * - `IfcRelAssociatesClassification.RelatingClassification`
34
+ * - `IfcRelAssociatesDocument.RelatingDocument`
35
+ */
36
+ relatingExpressId: number;
37
+ }
38
+ export interface SourceAttributes {
39
+ /** Source entity type (e.g. `'IfcWall'`, `'IfcColumn'`). */
40
+ type: string;
41
+ /** Source positional attributes as parsed by EntityExtractor. */
42
+ attributes: IfcAttributeValue[];
43
+ /** Express id of the source's IfcLocalPlacement (positional index 5 on IfcProduct). */
44
+ placementExpressId: number;
45
+ /** Express id of the IfcLocalPlacement that the source's placement is chained to (parent). May be null when the source sits at the spatial root. */
46
+ parentPlacementId: number | null;
47
+ /** The 3-component cartesian point referenced by the source's IfcAxis2Placement3D (Location, attribute index 0). */
48
+ sourceLocation: Vec3;
49
+ /** Express id of the source's Representation (positional index 6 on IfcProduct). May be null. */
50
+ representationId: number | null;
51
+ /**
52
+ * OwnerHistory expressId from the source (positional index 1 on
53
+ * IfcRoot), or `null` when the source omitted it. IFC4 made
54
+ * `IfcRoot.OwnerHistory` optional, so a duplicate has to be able
55
+ * to round-trip the missing case.
56
+ */
57
+ ownerHistoryId: number | null;
58
+ /** The IfcAxis2Placement3D's `Axis` ref (index 1), or `null` when omitted (`$` in STEP). Reused on the new placement so the duplicate keeps source rotation. */
59
+ axisRef: string | null;
60
+ /** The IfcAxis2Placement3D's `RefDirection` ref (index 2), or `null` when omitted. */
61
+ refDirectionRef: string | null;
62
+ /** Express id of the IfcBuildingStorey containing the source — emit a fresh IfcRelContainedInSpatialStructure pointing at it. Null skips the rel. */
63
+ storeyId: number | null;
64
+ /**
65
+ * Association rels containing the source. Each one is replayed
66
+ * against the duplicate so the export carries the same psets,
67
+ * qsets, material, classifications, documents, and type binding
68
+ * as the source. Empty array (or omitted) skips the cloning step.
69
+ */
70
+ associations?: SourceAssociation[];
71
+ }
72
+ export interface DuplicateInStoreOptions {
73
+ /** Translation applied to the source's location, in metres. Defaults to `[1, 0, 0]`. */
74
+ offset?: Vec3;
75
+ /** Optional override for the duplicate's Name attribute. Defaults to source.Name + ' (copy)'. */
76
+ name?: string;
77
+ }
78
+ export interface DuplicateBuildResult {
79
+ /** The new entity's expressId. */
80
+ newId: number;
81
+ newPlacementId: number;
82
+ newPointId: number;
83
+ newAxisPlacementId: number;
84
+ /** The IfcRelContainedInSpatialStructure linking the new entity to its storey. Null when the source had no spatial container. */
85
+ relContainedId: number | null;
86
+ /**
87
+ * The fresh `IfcRelDefines*` / `IfcRelAssociates*` rel ids
88
+ * emitted to mirror the source's associations. One entry per
89
+ * `SourceAssociation` provided. Empty when the resolver didn't
90
+ * collect any (or didn't run).
91
+ */
92
+ associationRelIds: number[];
93
+ }
94
+ /**
95
+ * Emit a duplicate of the source product into the editor overlay.
96
+ * Returns the new expressIds. Throws if the source attributes don't
97
+ * have at least 7 slots (the minimum IfcProduct surface).
98
+ */
99
+ export declare function duplicateInStore(editor: StoreEditor, source: SourceAttributes, options?: DuplicateInStoreOptions): DuplicateBuildResult;
100
+ //# sourceMappingURL=duplicate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duplicate.d.ts","sourceRoot":"","sources":["../../src/in-store/duplicate.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,uCAAuC;AACvC,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAE5C;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB;IAChC,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,6DAA6D;IAC7D,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,oEAAoE;IACpE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;;;;OAOG;IACH,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,uFAAuF;IACvF,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oJAAoJ;IACpJ,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,oHAAoH;IACpH,cAAc,EAAE,IAAI,CAAC;IACrB,iGAAiG;IACjG,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC;;;;;OAKG;IACH,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gKAAgK;IAChK,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,sFAAsF;IACtF,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,qJAAqJ;IACrJ,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,uBAAuB;IACtC,wFAAwF;IACxF,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,iGAAiG;IACjG,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iIAAiI;IACjI,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;;;;;OAKG;IACH,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE,uBAA4B,GACpC,oBAAoB,CAuGtB"}