@ifc-lite/sdk 6.4.0 → 7.1.3

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 (46) hide show
  1. package/README.md +12 -4
  2. package/dist/cost-backend.d.ts.map +1 -1
  3. package/dist/cost-backend.js +2 -28
  4. package/dist/cost-backend.js.map +1 -1
  5. package/dist/cost-owner-history.d.ts +10 -0
  6. package/dist/cost-owner-history.d.ts.map +1 -0
  7. package/dist/cost-owner-history.js +18 -0
  8. package/dist/cost-owner-history.js.map +1 -0
  9. package/dist/cost-reference-scan.d.ts.map +1 -1
  10. package/dist/cost-reference-scan.js +1 -0
  11. package/dist/cost-reference-scan.js.map +1 -1
  12. package/dist/cost-store-backend.d.ts +0 -2
  13. package/dist/cost-store-backend.d.ts.map +1 -1
  14. package/dist/cost-store-backend.js +0 -5
  15. package/dist/cost-store-backend.js.map +1 -1
  16. package/dist/effective-record-overlay.d.ts +5 -0
  17. package/dist/effective-record-overlay.d.ts.map +1 -0
  18. package/dist/effective-record-overlay.js +27 -0
  19. package/dist/effective-record-overlay.js.map +1 -0
  20. package/dist/index.d.ts +5 -1
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +4 -1
  23. package/dist/index.js.map +1 -1
  24. package/dist/namespaces/export.d.ts +5 -0
  25. package/dist/namespaces/export.d.ts.map +1 -1
  26. package/dist/namespaces/export.js.map +1 -1
  27. package/dist/namespaces/mutate.d.ts +24 -0
  28. package/dist/namespaces/mutate.d.ts.map +1 -1
  29. package/dist/namespaces/mutate.js +45 -0
  30. package/dist/namespaces/mutate.js.map +1 -1
  31. package/dist/namespaces/store.d.ts +29 -1
  32. package/dist/namespaces/store.d.ts.map +1 -1
  33. package/dist/namespaces/store.js +49 -0
  34. package/dist/namespaces/store.js.map +1 -1
  35. package/dist/store-structural-backend.d.ts +10 -0
  36. package/dist/store-structural-backend.d.ts.map +1 -0
  37. package/dist/store-structural-backend.js +102 -0
  38. package/dist/store-structural-backend.js.map +1 -0
  39. package/dist/store-structural-types.d.ts +36 -0
  40. package/dist/store-structural-types.d.ts.map +1 -0
  41. package/dist/store-structural-types.js +5 -0
  42. package/dist/store-structural-types.js.map +1 -0
  43. package/dist/types.d.ts +29 -69
  44. package/dist/types.d.ts.map +1 -1
  45. package/dist/types.js.map +1 -1
  46. package/package.json +14 -13
@@ -7,6 +7,11 @@ export class MutateNamespace {
7
7
  constructor(backend) {
8
8
  this.backend = backend;
9
9
  }
10
+ /** Asynchronous batches in flight; the backend marker is held by the first and released by the last. */
11
+ asyncDepth = 0;
12
+ asyncLabel;
13
+ /** Synchronous batches open right now (nested `batch` calls stack). */
14
+ syncDepth = 0;
10
15
  /** Set a property on an entity */
11
16
  setProperty(ref, psetName, propName, value) {
12
17
  this.backend.mutate.setProperty(ref, psetName, propName, value);
@@ -26,13 +31,53 @@ export class MutateNamespace {
26
31
  */
27
32
  batch(label, fn) {
28
33
  this.backend.mutate.batchBegin(label);
34
+ this.syncDepth += 1;
29
35
  try {
30
36
  fn();
31
37
  }
32
38
  finally {
39
+ this.syncDepth -= 1;
33
40
  this.backend.mutate.batchEnd(label);
34
41
  }
35
42
  }
43
+ /**
44
+ * `batch` for asynchronous work (a flow run, a fetch-then-write): the
45
+ * batch stays open across awaits and closes when the promise settles.
46
+ * Other writers on the same backend meanwhile land inside the batch.
47
+ *
48
+ * A `batchAsync` started while another is in flight — nested inside its
49
+ * callback or independent of it — JOINS that batch: no second marker is
50
+ * opened, and the one marker closes when the last of them settles. The
51
+ * two cases cannot be told apart without async context, and both need the
52
+ * same answer: their mutations interleave on the same undo stacks, so one
53
+ * undo step is the only grouping that leaves the model consistent. A
54
+ * second marker would close out of order (label mismatch) or, queued
55
+ * behind its parent, never open.
56
+ *
57
+ * Starting one INSIDE a synchronous `batch` is refused: the sync batch
58
+ * closes before the async work resumes, so its marker would be popped
59
+ * while the async one sits on top — a label mismatch that leaves both open.
60
+ */
61
+ async batchAsync(label, fn) {
62
+ if (this.asyncDepth === 0) {
63
+ if (this.syncDepth > 0)
64
+ throw new Error(`bim.mutate.batchAsync("${label}") cannot start inside a synchronous batch`);
65
+ this.backend.mutate.batchBegin(label);
66
+ this.asyncLabel = label;
67
+ }
68
+ this.asyncDepth += 1;
69
+ try {
70
+ return await fn();
71
+ }
72
+ finally {
73
+ this.asyncDepth -= 1;
74
+ if (this.asyncDepth === 0) {
75
+ const open = this.asyncLabel;
76
+ this.asyncLabel = undefined;
77
+ this.backend.mutate.batchEnd(open);
78
+ }
79
+ }
80
+ }
36
81
  /** Undo last mutation for a model */
37
82
  undo(modelId) {
38
83
  return this.backend.mutate.undo(modelId);
@@ -1 +1 @@
1
- {"version":3,"file":"mutate.js","sourceRoot":"","sources":["../../src/namespaces/mutate.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAI/D,mDAAmD;AACnD,MAAM,OAAO,eAAe;IACN;IAApB,YAAoB,OAAmB;QAAnB,YAAO,GAAP,OAAO,CAAY;IAAG,CAAC;IAE3C,kCAAkC;IAClC,WAAW,CAAC,GAAc,EAAE,QAAgB,EAAE,QAAgB,EAAE,KAAgC;QAC9F,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC;IAED,4CAA4C;IAC5C,YAAY,CAAC,GAAc,EAAE,QAAgB,EAAE,KAAa;QAC1D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,uCAAuC;IACvC,cAAc,CAAC,GAAc,EAAE,QAAgB,EAAE,QAAgB;QAC/D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAa,EAAE,EAAc;QACjC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,EAAE,EAAE,CAAC;QACP,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,qCAAqC;IACrC,IAAI,CAAC,OAAe;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,4CAA4C;IAC5C,IAAI,CAAC,OAAe;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;CACF"}
1
+ {"version":3,"file":"mutate.js","sourceRoot":"","sources":["../../src/namespaces/mutate.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAI/D,mDAAmD;AACnD,MAAM,OAAO,eAAe;IACN;IAApB,YAAoB,OAAmB;QAAnB,YAAO,GAAP,OAAO,CAAY;IAAG,CAAC;IAE3C,wGAAwG;IAChG,UAAU,GAAG,CAAC,CAAC;IACf,UAAU,CAAqB;IACvC,uEAAuE;IAC/D,SAAS,GAAG,CAAC,CAAC;IAEtB,kCAAkC;IAClC,WAAW,CAAC,GAAc,EAAE,QAAgB,EAAE,QAAgB,EAAE,KAAgC;QAC9F,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC;IAED,4CAA4C;IAC5C,YAAY,CAAC,GAAc,EAAE,QAAgB,EAAE,KAAa;QAC1D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,uCAAuC;IACvC,cAAc,CAAC,GAAc,EAAE,QAAgB,EAAE,QAAgB;QAC/D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAa,EAAE,EAAc;QACjC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC;YACH,EAAE,EAAE,CAAC;QACP,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;YACpB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,CAAC,UAAU,CAAI,KAAa,EAAE,EAAoB;QACrD,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,4CAA4C,CAAC,CAAC;YACrH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;YACrB,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAW,CAAC;gBAC9B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;gBAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED,qCAAqC;IACrC,IAAI,CAAC,OAAe;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,4CAA4C;IAC5C,IAAI,CAAC,OAAe;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import type { CostItemParams, CostQuantityParams, CostScheduleParams, CostValueParams } from '@ifc-lite/create';
1
+ import type { CostItemParams, CostQuantityParams, CostScheduleParams, CostValueParams, StructuralAnalysisModelInStoreParams, StructuralCurveMemberInStoreParams, StructuralLinearActionInStoreParams, StructuralLoadGroupInStoreParams, StructuralPointActionInStoreParams, StructuralPointConnectionInStoreParams } from '@ifc-lite/create';
2
2
  import type { AddBeamInStoreParams, AddColumnInStoreParams, AddDoorInStoreParams, AddMemberInStoreParams, AddPlateInStoreParams, AddRoofInStoreParams, AddSlabInStoreParams, AddSpaceInStoreParams, AddWallInStoreParams, AddWindowInStoreParams, BimBackend, EntityRef } from '../types.js';
3
3
  /**
4
4
  * `bim.store` — document-level edits on a parsed model.
@@ -168,5 +168,33 @@ export declare class StoreNamespace {
168
168
  removeCostEntity(modelId: string, expressId: number, options?: {
169
169
  detach?: boolean;
170
170
  }): void;
171
+ /** Add an IfcStructuralAnalysisModel. Not storey-anchored (IfcGroup, no geometry). */
172
+ addStructuralAnalysisModel(modelId: string, params: StructuralAnalysisModelInStoreParams): EntityRef;
173
+ /**
174
+ * Add an IfcStructuralCurveMember between `params.Start` and `params.End`,
175
+ * anchored to a storey for its ObjectPlacement. Emits an
176
+ * IfcTopologyRepresentation (IfcEdge between two IfcVertexPoints) as its
177
+ * analytical line geometry.
178
+ */
179
+ addStructuralCurveMember(modelId: string, storeyExpressId: number, params: StructuralCurveMemberInStoreParams): EntityRef;
180
+ /** Add an IfcStructuralPointConnection at `params.Position`, optionally with an IfcBoundaryNodeCondition. */
181
+ addStructuralPointConnection(modelId: string, storeyExpressId: number, params: StructuralPointConnectionInStoreParams): EntityRef;
182
+ /** Add an IfcStructuralLoadGroup, or an IfcStructuralLoadCase when `params.SelfWeightCoefficients` is given. */
183
+ addStructuralLoadGroup(modelId: string, params: StructuralLoadGroupInStoreParams): EntityRef;
184
+ /** Add an IfcStructuralPointAction carrying an IfcStructuralLoadSingleForce. */
185
+ addStructuralPointAction(modelId: string, params: StructuralPointActionInStoreParams): EntityRef;
186
+ /** Add an IfcStructuralLinearAction carrying an IfcStructuralLoadLinearForce. */
187
+ addStructuralLinearAction(modelId: string, params: StructuralLinearActionInStoreParams): EntityRef;
188
+ /** Link a structural member to a structural connection via IfcRelConnectsStructuralMember. */
189
+ connectStructuralMemberToConnection(modelId: string, memberExpressId: number, connectionExpressId: number): EntityRef;
190
+ /** Apply a structural action/reaction to the member or connection it acts on via IfcRelConnectsStructuralActivity. */
191
+ connectStructuralActivityToItem(modelId: string, itemExpressId: number, activityExpressId: number): EntityRef;
192
+ /**
193
+ * Assign members/connections into an analysis model, or activities into a
194
+ * load group, via IfcRelAssignsToGroup — the relationship
195
+ * `bim.structural.analysisModels()[i].itemGlobalIds` and
196
+ * `bim.structural.loadGroups()[i].activityGlobalIds` read back.
197
+ */
198
+ assignToStructuralGroup(modelId: string, groupExpressId: number, objectExpressIds: number[]): EntityRef;
171
199
  }
172
200
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/namespaces/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/namespaces/store.ts"],"names":[],"mappings":"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"}
@@ -237,5 +237,54 @@ export class StoreNamespace {
237
237
  removeCostEntity(modelId, expressId, options) {
238
238
  this.backend.store.removeCostEntity(modelId, expressId, options);
239
239
  }
240
+ // -- Structural analysis authoring on a loaded model (#5167 task S.1) ------
241
+ // `bim.structural.*` is read-only; these methods are the write side, for
242
+ // scripts (SDK / CLI / MCP / sandbox) that author an analytical model.
243
+ /** Add an IfcStructuralAnalysisModel. Not storey-anchored (IfcGroup, no geometry). */
244
+ addStructuralAnalysisModel(modelId, params) {
245
+ return this.backend.store.addStructuralAnalysisModel(modelId, params);
246
+ }
247
+ /**
248
+ * Add an IfcStructuralCurveMember between `params.Start` and `params.End`,
249
+ * anchored to a storey for its ObjectPlacement. Emits an
250
+ * IfcTopologyRepresentation (IfcEdge between two IfcVertexPoints) as its
251
+ * analytical line geometry.
252
+ */
253
+ addStructuralCurveMember(modelId, storeyExpressId, params) {
254
+ return this.backend.store.addStructuralCurveMember(modelId, storeyExpressId, params);
255
+ }
256
+ /** Add an IfcStructuralPointConnection at `params.Position`, optionally with an IfcBoundaryNodeCondition. */
257
+ addStructuralPointConnection(modelId, storeyExpressId, params) {
258
+ return this.backend.store.addStructuralPointConnection(modelId, storeyExpressId, params);
259
+ }
260
+ /** Add an IfcStructuralLoadGroup, or an IfcStructuralLoadCase when `params.SelfWeightCoefficients` is given. */
261
+ addStructuralLoadGroup(modelId, params) {
262
+ return this.backend.store.addStructuralLoadGroup(modelId, params);
263
+ }
264
+ /** Add an IfcStructuralPointAction carrying an IfcStructuralLoadSingleForce. */
265
+ addStructuralPointAction(modelId, params) {
266
+ return this.backend.store.addStructuralPointAction(modelId, params);
267
+ }
268
+ /** Add an IfcStructuralLinearAction carrying an IfcStructuralLoadLinearForce. */
269
+ addStructuralLinearAction(modelId, params) {
270
+ return this.backend.store.addStructuralLinearAction(modelId, params);
271
+ }
272
+ /** Link a structural member to a structural connection via IfcRelConnectsStructuralMember. */
273
+ connectStructuralMemberToConnection(modelId, memberExpressId, connectionExpressId) {
274
+ return this.backend.store.connectStructuralMemberToConnection(modelId, memberExpressId, connectionExpressId);
275
+ }
276
+ /** Apply a structural action/reaction to the member or connection it acts on via IfcRelConnectsStructuralActivity. */
277
+ connectStructuralActivityToItem(modelId, itemExpressId, activityExpressId) {
278
+ return this.backend.store.connectStructuralActivityToItem(modelId, itemExpressId, activityExpressId);
279
+ }
280
+ /**
281
+ * Assign members/connections into an analysis model, or activities into a
282
+ * load group, via IfcRelAssignsToGroup — the relationship
283
+ * `bim.structural.analysisModels()[i].itemGlobalIds` and
284
+ * `bim.structural.loadGroups()[i].activityGlobalIds` read back.
285
+ */
286
+ assignToStructuralGroup(modelId, groupExpressId, objectExpressIds) {
287
+ return this.backend.store.assignToStructuralGroup(modelId, groupExpressId, objectExpressIds);
288
+ }
240
289
  }
241
290
  //# sourceMappingURL=store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/namespaces/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/namespaces/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { CostStoreModelResolution } from './cost-store-backend.js';
2
+ import type { StructuralStoreBackendMethods } from './store-structural-types.js';
3
+ /**
4
+ * Same per-call resolution the cost backend takes. Aliased rather than
5
+ * redeclared so a host can pass one closure to both factories; named for this
6
+ * surface so the structural call sites do not read as cost ones.
7
+ */
8
+ export type StructuralStoreModelResolver = (modelId?: string) => CostStoreModelResolution;
9
+ export declare function createStructuralStoreBackend(resolve: StructuralStoreModelResolver): StructuralStoreBackendMethods;
10
+ //# sourceMappingURL=store-structural-backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-structural-backend.d.ts","sourceRoot":"","sources":["../src/store-structural-backend.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAGjF;;;;GAIG;AACH,MAAM,MAAM,4BAA4B,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,wBAAwB,CAAC;AAoC1F,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,4BAA4B,GACpC,6BAA6B,CA8D/B"}
@@ -0,0 +1,102 @@
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
+ * Builds `bim.store`'s structural-analysis authoring methods (#5167 task S.1).
6
+ *
7
+ * This exists for the same reason `createCostStoreBackend` does: every host
8
+ * that implements `StoreBackendMethods` — the CLI's `HeadlessBackend` and the
9
+ * viewer's store adapter — would otherwise have to re-derive the anchor and
10
+ * re-wire nine builders identically, and the two copies would drift.
11
+ *
12
+ * Declaring the methods on the interface without a factory would not have made
13
+ * them callable: `StoreBackendMethods` is structural, so the interface alone
14
+ * only breaks every host's typecheck. Spreading this in is what makes
15
+ * `bim.store.addStructural*` actually reach `@ifc-lite/create`.
16
+ */
17
+ import { addStructuralAnalysisModelToStore, addStructuralCurveMemberToStore, addStructuralLinearActionToStore, addStructuralLoadGroupToStore, addStructuralPointActionToStore, addStructuralPointConnectionToStore, assignToStructuralGroupInStore, connectStructuralActivityToItemInStore, connectStructuralMemberToConnectionInStore, resolveSpatialAnchor, } from '@ifc-lite/create';
18
+ function ref(modelId, expressId) {
19
+ return { modelId, expressId };
20
+ }
21
+ /**
22
+ * `IfcStructuralAnalysisModel` and friends do not exist before IFC4, and the
23
+ * builders each refuse IFC2X3 individually. Refusing here as well keeps the
24
+ * message at the call the caller actually made, and refuses IFC5 — which no
25
+ * builder checks, and which `extractStructuralOnDemand` cannot read back.
26
+ */
27
+ const SUPPORTED_STRUCTURAL_SCHEMAS = new Set(['IFC4', 'IFC4X3']);
28
+ function assertStructuralSchema(resolved) {
29
+ const raw = resolved.store.schemaVersion;
30
+ if (raw !== undefined && !SUPPORTED_STRUCTURAL_SCHEMAS.has(raw)) {
31
+ throw new Error(`bim.store structural authoring: schema '${raw}' is not supported; use IFC4 or IFC4X3.`);
32
+ }
33
+ }
34
+ /**
35
+ * The storey-less anchor the group/action builders take. They are `IfcGroup`
36
+ * and `IfcStructuralActivity` subtypes with no `ObjectPlacement`, so resolving
37
+ * a spatial anchor for them would be inventing a containment they do not have.
38
+ */
39
+ function groupAnchor(resolved) {
40
+ return {
41
+ ownerHistoryId: resolved.ownerHistoryId,
42
+ guidRandom: undefined,
43
+ schema: resolved.store.schemaVersion,
44
+ };
45
+ }
46
+ export function createStructuralStoreBackend(resolve) {
47
+ const resolved = (modelId) => {
48
+ const model = resolve(modelId);
49
+ assertStructuralSchema(model);
50
+ return model;
51
+ };
52
+ return {
53
+ addStructuralAnalysisModel(modelId, params) {
54
+ const model = resolved(modelId);
55
+ const result = addStructuralAnalysisModelToStore(model.editor, groupAnchor(model), params);
56
+ return ref(model.modelId, result.analysisModelId);
57
+ },
58
+ addStructuralCurveMember(modelId, storeyExpressId, params) {
59
+ const model = resolved(modelId);
60
+ const anchor = resolveSpatialAnchor(model.store, storeyExpressId);
61
+ const result = addStructuralCurveMemberToStore(model.editor, anchor, params);
62
+ return ref(model.modelId, result.memberId);
63
+ },
64
+ addStructuralPointConnection(modelId, storeyExpressId, params) {
65
+ const model = resolved(modelId);
66
+ const anchor = resolveSpatialAnchor(model.store, storeyExpressId);
67
+ const result = addStructuralPointConnectionToStore(model.editor, anchor, params);
68
+ return ref(model.modelId, result.connectionId);
69
+ },
70
+ addStructuralLoadGroup(modelId, params) {
71
+ const model = resolved(modelId);
72
+ const result = addStructuralLoadGroupToStore(model.editor, groupAnchor(model), params);
73
+ return ref(model.modelId, result.loadGroupId);
74
+ },
75
+ addStructuralPointAction(modelId, params) {
76
+ const model = resolved(modelId);
77
+ const result = addStructuralPointActionToStore(model.editor, groupAnchor(model), params);
78
+ return ref(model.modelId, result.activityId);
79
+ },
80
+ addStructuralLinearAction(modelId, params) {
81
+ const model = resolved(modelId);
82
+ const result = addStructuralLinearActionToStore(model.editor, groupAnchor(model), params);
83
+ return ref(model.modelId, result.activityId);
84
+ },
85
+ connectStructuralMemberToConnection(modelId, memberExpressId, connectionExpressId) {
86
+ const model = resolved(modelId);
87
+ const relId = connectStructuralMemberToConnectionInStore(model.editor, model.ownerHistoryId, memberExpressId, connectionExpressId);
88
+ return ref(model.modelId, relId);
89
+ },
90
+ connectStructuralActivityToItem(modelId, itemExpressId, activityExpressId) {
91
+ const model = resolved(modelId);
92
+ const relId = connectStructuralActivityToItemInStore(model.editor, model.ownerHistoryId, itemExpressId, activityExpressId);
93
+ return ref(model.modelId, relId);
94
+ },
95
+ assignToStructuralGroup(modelId, groupExpressId, objectExpressIds) {
96
+ const model = resolved(modelId);
97
+ const relId = assignToStructuralGroupInStore(model.editor, model.ownerHistoryId, groupExpressId, objectExpressIds);
98
+ return ref(model.modelId, relId);
99
+ },
100
+ };
101
+ }
102
+ //# sourceMappingURL=store-structural-backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-structural-backend.js","sourceRoot":"","sources":["../src/store-structural-backend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * `bim.store.addStructural*` / `connectStructural*` / `assignToStructuralGroup`
3
+ * — loaded-model structural-analysis authoring (#5167 task S.1). Split out
4
+ * of `types.ts` (allowlisted at 743 lines, already at budget) so this
5
+ * surface doesn't grow that file — same reason `store-cost-types.ts` is
6
+ * its own module.
7
+ *
8
+ * Param shapes are imported straight from `@ifc-lite/create` rather than
9
+ * re-declared here, matching `store-cost-types.ts`'s
10
+ * `CostItemParams`/`CostScheduleParams` (not the separately-mirrored
11
+ * `AddColumnInStoreParams`-style physical-element params in `types.ts`) —
12
+ * there is no SDK-specific divergence to justify a second copy.
13
+ */
14
+ import type { StructuralAnalysisModelInStoreParams, StructuralCurveMemberInStoreParams, StructuralLinearActionInStoreParams, StructuralLoadGroupInStoreParams, StructuralPointActionInStoreParams, StructuralPointConnectionInStoreParams } from '@ifc-lite/create';
15
+ import type { EntityRef } from './types.js';
16
+ export interface StructuralStoreBackendMethods {
17
+ /** `IfcStructuralAnalysisModel` — no storey anchor (`IfcGroup`, not `IfcProduct`). */
18
+ addStructuralAnalysisModel(modelId: string, params: StructuralAnalysisModelInStoreParams): EntityRef;
19
+ /** `IfcStructuralCurveMember`, anchored to a storey for its `ObjectPlacement`. */
20
+ addStructuralCurveMember(modelId: string, storeyExpressId: number, params: StructuralCurveMemberInStoreParams): EntityRef;
21
+ /** `IfcStructuralPointConnection`, anchored to a storey for its `ObjectPlacement`. */
22
+ addStructuralPointConnection(modelId: string, storeyExpressId: number, params: StructuralPointConnectionInStoreParams): EntityRef;
23
+ /** `IfcStructuralLoadGroup` or `IfcStructuralLoadCase` (picked by `params.SelfWeightCoefficients`) — no storey anchor. */
24
+ addStructuralLoadGroup(modelId: string, params: StructuralLoadGroupInStoreParams): EntityRef;
25
+ /** `IfcStructuralPointAction` + its `IfcStructuralLoadSingleForce` — no storey anchor (see `structural-action.ts`). */
26
+ addStructuralPointAction(modelId: string, params: StructuralPointActionInStoreParams): EntityRef;
27
+ /** `IfcStructuralLinearAction` + its `IfcStructuralLoadLinearForce` — no storey anchor. */
28
+ addStructuralLinearAction(modelId: string, params: StructuralLinearActionInStoreParams): EntityRef;
29
+ /** `IfcRelConnectsStructuralMember` linking a curve member to a point connection. */
30
+ connectStructuralMemberToConnection(modelId: string, memberExpressId: number, connectionExpressId: number): EntityRef;
31
+ /** `IfcRelConnectsStructuralActivity` applying an action/reaction to the member or connection it acts on. */
32
+ connectStructuralActivityToItem(modelId: string, itemExpressId: number, activityExpressId: number): EntityRef;
33
+ /** `IfcRelAssignsToGroup` — members/connections into an analysis model, or activities into a load group. */
34
+ assignToStructuralGroup(modelId: string, groupExpressId: number, objectExpressIds: number[]): EntityRef;
35
+ }
36
+ //# sourceMappingURL=store-structural-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-structural-types.d.ts","sourceRoot":"","sources":["../src/store-structural-types.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,oCAAoC,EACpC,kCAAkC,EAClC,mCAAmC,EACnC,gCAAgC,EAChC,kCAAkC,EAClC,sCAAsC,EACvC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,WAAW,6BAA6B;IAC5C,sFAAsF;IACtF,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,oCAAoC,GAAG,SAAS,CAAC;IACrG,kFAAkF;IAClF,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,kCAAkC,GAAG,SAAS,CAAC;IAC1H,sFAAsF;IACtF,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,sCAAsC,GAAG,SAAS,CAAC;IAClI,0HAA0H;IAC1H,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,gCAAgC,GAAG,SAAS,CAAC;IAC7F,uHAAuH;IACvH,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,kCAAkC,GAAG,SAAS,CAAC;IACjG,2FAA2F;IAC3F,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,mCAAmC,GAAG,SAAS,CAAC;IACnG,qFAAqF;IACrF,mCAAmC,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACtH,6GAA6G;IAC7G,+BAA+B,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9G,4GAA4G;IAC5G,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACzG"}
@@ -0,0 +1,5 @@
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
+ export {};
5
+ //# sourceMappingURL=store-structural-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-structural-types.js","sourceRoot":"","sources":["../src/store-structural-types.ts"],"names":[],"mappings":"AAAA;;+DAE+D"}
package/dist/types.d.ts CHANGED
@@ -9,6 +9,7 @@ import type { ScheduleBackendMethods } from './schedule-types.js';
9
9
  import type { CostBackendMethods } from './cost-types.js';
10
10
  import type { SpacesBackendMethods, StyleBackendMethods } from './backend-extension-types.js';
11
11
  import type { CostStoreBackendMethods } from './store-cost-types.js';
12
+ import type { StructuralStoreBackendMethods } from './store-structural-types.js';
12
13
  /** Reference to a specific entity within a federated model set */
13
14
  export interface EntityRef {
14
15
  modelId: string;
@@ -348,40 +349,41 @@ export interface MutateBackendMethods {
348
349
  * the underlying store buffer is never mutated; changes materialise on
349
350
  * the next `bim.export.ifc()`.
350
351
  */
351
- export interface AddColumnInStoreParams {
352
- Position: [number, number, number];
353
- Width: number;
354
- Depth: number;
355
- Height: number;
352
+ /**
353
+ * The `IfcRoot` + `IfcElement` header every in-store element builder takes:
354
+ * naming, and the optional explicit `GlobalId` a re-runnable author (a flow
355
+ * graph) derives from a stable key so a re-run updates the element instead
356
+ * of duplicating it. A malformed GlobalId is refused by the builder.
357
+ */
358
+ export interface AddElementCommonParams {
356
359
  Name?: string;
357
360
  Description?: string;
358
361
  ObjectType?: string;
359
362
  Tag?: string;
363
+ GlobalId?: string;
364
+ }
365
+ export interface AddColumnInStoreParams extends AddElementCommonParams {
366
+ Position: [number, number, number];
367
+ Width: number;
368
+ Depth: number;
369
+ Height: number;
360
370
  }
361
- export interface AddWallInStoreParams {
371
+ export interface AddWallInStoreParams extends AddElementCommonParams {
362
372
  Start: [number, number, number];
363
373
  End: [number, number, number];
364
374
  Thickness: number;
365
375
  Height: number;
366
- Name?: string;
367
- Description?: string;
368
- ObjectType?: string;
369
- Tag?: string;
370
376
  }
371
377
  export type AddSlabInStoreParams = AddSlabRectangleParams | AddSlabPolygonParams;
372
- export interface AddSlabRectangleParams {
378
+ export interface AddSlabRectangleParams extends AddElementCommonParams {
373
379
  Position: [number, number, number];
374
380
  Width: number;
375
381
  Depth: number;
376
382
  Thickness: number;
377
383
  /** `'rectangle'` (or omit) selects the IfcRectangleProfileDef path. */
378
384
  Profile?: 'rectangle';
379
- Name?: string;
380
- Description?: string;
381
- ObjectType?: string;
382
- Tag?: string;
383
385
  }
384
- export interface AddSlabPolygonParams {
386
+ export interface AddSlabPolygonParams extends AddElementCommonParams {
385
387
  /** `'polygon'` selects the IfcArbitraryClosedProfileDef path. */
386
388
  Profile: 'polygon';
387
389
  /** Closed outline as 2D storey-local points (≥3). Auto-closed at emit time. */
@@ -389,125 +391,83 @@ export interface AddSlabPolygonParams {
389
391
  /** Local placement origin (metres). Defaults to `[0, 0, 0]`. */
390
392
  Position?: [number, number, number];
391
393
  Thickness: number;
392
- Name?: string;
393
- Description?: string;
394
- ObjectType?: string;
395
- Tag?: string;
396
394
  }
397
- export interface AddBeamInStoreParams {
395
+ export interface AddBeamInStoreParams extends AddElementCommonParams {
398
396
  Start: [number, number, number];
399
397
  End: [number, number, number];
400
398
  Width: number;
401
399
  Height: number;
402
- Name?: string;
403
- Description?: string;
404
- ObjectType?: string;
405
- Tag?: string;
406
400
  }
407
- export interface AddDoorInStoreParams {
401
+ export interface AddDoorInStoreParams extends AddElementCommonParams {
408
402
  Position: [number, number, number];
409
403
  Width: number;
410
404
  Height: number;
411
405
  FrameThickness?: number;
412
406
  PredefinedType?: 'DOOR' | 'GATE' | 'TRAPDOOR' | 'USERDEFINED' | 'NOTDEFINED';
413
407
  OperationType?: string;
414
- Name?: string;
415
- Description?: string;
416
- ObjectType?: string;
417
- Tag?: string;
418
408
  }
419
- export interface AddWindowInStoreParams {
409
+ export interface AddWindowInStoreParams extends AddElementCommonParams {
420
410
  Position: [number, number, number];
421
411
  Width: number;
422
412
  Height: number;
423
413
  FrameThickness?: number;
424
414
  PredefinedType?: 'WINDOW' | 'SKYLIGHT' | 'LIGHTDOME' | 'USERDEFINED' | 'NOTDEFINED';
425
415
  PartitioningType?: string;
426
- Name?: string;
427
- Description?: string;
428
- ObjectType?: string;
429
- Tag?: string;
430
416
  }
431
417
  export type AddSpaceInStoreParams = AddSpaceRectangleParams | AddSpacePolygonParams;
432
- export interface AddSpaceRectangleParams {
418
+ export interface AddSpaceRectangleParams extends Omit<AddElementCommonParams, 'Tag'> {
433
419
  Position: [number, number, number];
434
420
  Width: number;
435
421
  Depth: number;
436
422
  Height: number;
437
423
  Profile?: 'rectangle';
438
- Name?: string;
439
424
  LongName?: string;
440
- Description?: string;
441
- ObjectType?: string;
442
425
  }
443
- export interface AddSpacePolygonParams {
426
+ export interface AddSpacePolygonParams extends Omit<AddElementCommonParams, 'Tag'> {
444
427
  Profile: 'polygon';
445
428
  OuterCurve: Array<[number, number]>;
446
429
  Position?: [number, number, number];
447
430
  Height: number;
448
- Name?: string;
449
431
  LongName?: string;
450
- Description?: string;
451
- ObjectType?: string;
452
432
  }
453
433
  export type AddRoofInStoreParams = AddRoofRectangleParams | AddRoofPolygonParams;
454
- export interface AddRoofRectangleParams {
434
+ export interface AddRoofRectangleParams extends AddElementCommonParams {
455
435
  Position: [number, number, number];
456
436
  Width: number;
457
437
  Depth: number;
458
438
  Thickness: number;
459
439
  Profile?: 'rectangle';
460
- Name?: string;
461
- Description?: string;
462
- ObjectType?: string;
463
- Tag?: string;
464
440
  }
465
- export interface AddRoofPolygonParams {
441
+ export interface AddRoofPolygonParams extends AddElementCommonParams {
466
442
  Profile: 'polygon';
467
443
  OuterCurve: Array<[number, number]>;
468
444
  Position?: [number, number, number];
469
445
  Thickness: number;
470
- Name?: string;
471
- Description?: string;
472
- ObjectType?: string;
473
- Tag?: string;
474
446
  }
475
447
  export type AddPlateInStoreParams = AddPlateRectangleParams | AddPlatePolygonParams;
476
- export interface AddPlateRectangleParams {
448
+ export interface AddPlateRectangleParams extends AddElementCommonParams {
477
449
  Position: [number, number, number];
478
450
  Width: number;
479
451
  Depth: number;
480
452
  Thickness: number;
481
453
  Profile?: 'rectangle';
482
454
  PredefinedType?: 'CURTAIN_PANEL' | 'SHEET' | 'USERDEFINED' | 'NOTDEFINED';
483
- Name?: string;
484
- Description?: string;
485
- ObjectType?: string;
486
- Tag?: string;
487
455
  }
488
- export interface AddPlatePolygonParams {
456
+ export interface AddPlatePolygonParams extends AddElementCommonParams {
489
457
  Profile: 'polygon';
490
458
  OuterCurve: Array<[number, number]>;
491
459
  Position?: [number, number, number];
492
460
  Thickness: number;
493
461
  PredefinedType?: 'CURTAIN_PANEL' | 'SHEET' | 'USERDEFINED' | 'NOTDEFINED';
494
- Name?: string;
495
- Description?: string;
496
- ObjectType?: string;
497
- Tag?: string;
498
462
  }
499
- export interface AddMemberInStoreParams {
463
+ export interface AddMemberInStoreParams extends AddElementCommonParams {
500
464
  Start: [number, number, number];
501
465
  End: [number, number, number];
502
466
  Width: number;
503
467
  Height: number;
504
468
  PredefinedType?: 'BRACE' | 'CHORD' | 'COLLAR' | 'MEMBER' | 'MULLION' | 'PLATE' | 'POST' | 'PURLIN' | 'RAFTER' | 'STRINGER' | 'STRUT' | 'STUD' | 'USERDEFINED' | 'NOTDEFINED';
505
- Name?: string;
506
- Description?: string;
507
- ObjectType?: string;
508
- Tag?: string;
509
469
  }
510
- export interface StoreBackendMethods extends CostStoreBackendMethods {
470
+ export interface StoreBackendMethods extends CostStoreBackendMethods, StructuralStoreBackendMethods {
511
471
  addEntity(modelId: string, def: {
512
472
  type: string;
513
473
  attributes: unknown[];