@ifc-lite/create 2.6.0 → 2.8.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 (98) hide show
  1. package/README.md +8 -0
  2. package/dist/cost-authoring-rules.d.ts +70 -0
  3. package/dist/cost-authoring-rules.d.ts.map +1 -0
  4. package/dist/cost-authoring-rules.js +118 -0
  5. package/dist/cost-authoring-rules.js.map +1 -0
  6. package/dist/ifc-creator-cost.d.ts +3 -14
  7. package/dist/ifc-creator-cost.d.ts.map +1 -1
  8. package/dist/ifc-creator-cost.js +4 -62
  9. package/dist/ifc-creator-cost.js.map +1 -1
  10. package/dist/in-store/_emit-helpers.d.ts +10 -0
  11. package/dist/in-store/_emit-helpers.d.ts.map +1 -1
  12. package/dist/in-store/_emit-helpers.js +15 -2
  13. package/dist/in-store/_emit-helpers.js.map +1 -1
  14. package/dist/in-store/beam.d.ts +2 -0
  15. package/dist/in-store/beam.d.ts.map +1 -1
  16. package/dist/in-store/beam.js +2 -2
  17. package/dist/in-store/beam.js.map +1 -1
  18. package/dist/in-store/column.d.ts +2 -0
  19. package/dist/in-store/column.d.ts.map +1 -1
  20. package/dist/in-store/column.js +2 -2
  21. package/dist/in-store/column.js.map +1 -1
  22. package/dist/in-store/cost-nesting-cycle.d.ts +8 -0
  23. package/dist/in-store/cost-nesting-cycle.d.ts.map +1 -0
  24. package/dist/in-store/cost-nesting-cycle.js +28 -0
  25. package/dist/in-store/cost-nesting-cycle.js.map +1 -0
  26. package/dist/in-store/cost-reference-validation.d.ts +13 -0
  27. package/dist/in-store/cost-reference-validation.d.ts.map +1 -0
  28. package/dist/in-store/cost-reference-validation.js +49 -0
  29. package/dist/in-store/cost-reference-validation.js.map +1 -0
  30. package/dist/in-store/cost-removal.d.ts +40 -0
  31. package/dist/in-store/cost-removal.d.ts.map +1 -0
  32. package/dist/in-store/cost-removal.js +107 -0
  33. package/dist/in-store/cost-removal.js.map +1 -0
  34. package/dist/in-store/cost.d.ts +109 -0
  35. package/dist/in-store/cost.d.ts.map +1 -0
  36. package/dist/in-store/cost.js +323 -0
  37. package/dist/in-store/cost.js.map +1 -0
  38. package/dist/in-store/door.d.ts +2 -0
  39. package/dist/in-store/door.d.ts.map +1 -1
  40. package/dist/in-store/door.js.map +1 -1
  41. package/dist/in-store/member.d.ts +2 -0
  42. package/dist/in-store/member.d.ts.map +1 -1
  43. package/dist/in-store/member.js.map +1 -1
  44. package/dist/in-store/plate.d.ts +4 -0
  45. package/dist/in-store/plate.d.ts.map +1 -1
  46. package/dist/in-store/plate.js.map +1 -1
  47. package/dist/in-store/resolve-source.d.ts.map +1 -1
  48. package/dist/in-store/resolve-source.js +11 -8
  49. package/dist/in-store/resolve-source.js.map +1 -1
  50. package/dist/in-store/roof.d.ts +4 -0
  51. package/dist/in-store/roof.d.ts.map +1 -1
  52. package/dist/in-store/roof.js.map +1 -1
  53. package/dist/in-store/slab.d.ts +4 -0
  54. package/dist/in-store/slab.d.ts.map +1 -1
  55. package/dist/in-store/slab.js +2 -2
  56. package/dist/in-store/slab.js.map +1 -1
  57. package/dist/in-store/space.d.ts +4 -0
  58. package/dist/in-store/space.d.ts.map +1 -1
  59. package/dist/in-store/space.js +2 -2
  60. package/dist/in-store/space.js.map +1 -1
  61. package/dist/in-store/structural-action.d.ts +85 -0
  62. package/dist/in-store/structural-action.d.ts.map +1 -0
  63. package/dist/in-store/structural-action.js +83 -0
  64. package/dist/in-store/structural-action.js.map +1 -0
  65. package/dist/in-store/structural-analysis-model.d.ts +49 -0
  66. package/dist/in-store/structural-analysis-model.d.ts.map +1 -0
  67. package/dist/in-store/structural-analysis-model.js +29 -0
  68. package/dist/in-store/structural-analysis-model.js.map +1 -0
  69. package/dist/in-store/structural-curve-member.d.ts +90 -0
  70. package/dist/in-store/structural-curve-member.d.ts.map +1 -0
  71. package/dist/in-store/structural-curve-member.js +83 -0
  72. package/dist/in-store/structural-curve-member.js.map +1 -0
  73. package/dist/in-store/structural-load-group.d.ts +61 -0
  74. package/dist/in-store/structural-load-group.d.ts.map +1 -0
  75. package/dist/in-store/structural-load-group.js +38 -0
  76. package/dist/in-store/structural-load-group.js.map +1 -0
  77. package/dist/in-store/structural-point-connection.d.ts +75 -0
  78. package/dist/in-store/structural-point-connection.d.ts.map +1 -0
  79. package/dist/in-store/structural-point-connection.js +41 -0
  80. package/dist/in-store/structural-point-connection.js.map +1 -0
  81. package/dist/in-store/structural-relationships.d.ts +47 -0
  82. package/dist/in-store/structural-relationships.d.ts.map +1 -0
  83. package/dist/in-store/structural-relationships.js +85 -0
  84. package/dist/in-store/structural-relationships.js.map +1 -0
  85. package/dist/in-store/wall.d.ts +2 -0
  86. package/dist/in-store/wall.d.ts.map +1 -1
  87. package/dist/in-store/wall.js +2 -2
  88. package/dist/in-store/wall.js.map +1 -1
  89. package/dist/in-store/window.d.ts +2 -0
  90. package/dist/in-store/window.d.ts.map +1 -1
  91. package/dist/in-store/window.js.map +1 -1
  92. package/dist/index.d.ts +8 -0
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +10 -0
  95. package/dist/index.js.map +1 -1
  96. package/dist/types-cost.d.ts +2 -2
  97. package/dist/types-cost.d.ts.map +1 -1
  98. package/package.json +7 -6
package/README.md CHANGED
@@ -29,6 +29,14 @@ const { content } = creator.toIfc(); // IFC STEP text
29
29
  - Property sets, element quantities, materials, and colors
30
30
  - 4D scheduling entities: IfcWorkSchedule, IfcTask, IfcRelSequence
31
31
  - In-store builders (`addWallToStore`, `addSlabToStore`, ...) that emit elements into an existing parsed model
32
+ - Loaded-model cost builders (`addCostScheduleToStore`, `addCostItemToStore`, `addCostValueToStore`,
33
+ `addCostQuantityToStore`) plus relationship helpers for nesting, schedule/object assignment, value lists,
34
+ and safe removal. They require a `CostAnchor` for schema/owner-history/GUID allocation, accept existing
35
+ relationship maps from the host, reject IFC2X3 authoring, and make destructive removal explicit with
36
+ `{ detach: true }` when surviving references must be rewritten. Removal referrer data distinguishes
37
+ required relationship endpoints (whose relationship is deleted) from optional scalar and list
38
+ attributes on non-relationship owners. Optional scalars are rewritten to `$`; optional lists retain
39
+ their surviving members, or become `$` when emptied, so detaching a cost value never deletes its owner.
32
40
  - Space generation: `generateSpacesFromWalls` and `detectEnclosedAreas` derive IfcSpace footprints from wall layouts
33
41
  - Fully typed parameter objects for every element
34
42
 
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Schema-free validation shared by both cost-entity emitters (#4857 PR A):
3
+ * the STEP-TEXT emitter `ifc-creator-cost.ts` (`IfcCreator`, building a file
4
+ * from scratch) and the in-store builder `in-store/cost.ts`
5
+ * (`bim.store.addCost*`, authoring into an already-loaded model). Neither
6
+ * caller's serialization concern lives here — `ifc-creator-cost.ts` writes a
7
+ * raw STEP argument string, `in-store/cost.ts` writes a `StoreEditor`
8
+ * attribute array — only WHETHER an authored value is legal, decided once, so
9
+ * the same typo or out-of-range value is rejected identically from either
10
+ * entry point rather than by two allow-lists that can drift.
11
+ */
12
+ /** The schemas cost entities can be authored in (IFC2X3 is refused up front). */
13
+ export type CostSchema = 'IFC2X3' | 'IFC4' | 'IFC4X3';
14
+ /** A typed IFC value: the SELECT branch name plus its numeric value. */
15
+ export interface CostTypedValueInput {
16
+ Type: string;
17
+ Value: number;
18
+ }
19
+ /**
20
+ * Runtime allow-lists for every closed vocabulary a cost method writes. The
21
+ * TypeScript unions at the call sites only bind typed callers; the sandbox
22
+ * hands these methods untyped script input, and an unchecked string becomes
23
+ * `IFCBOGUSMEASURE(1.)` or `.BOGUS.` — well-formed STEP naming nothing in the
24
+ * schema.
25
+ */
26
+ export declare const MEASURE_TYPES: ReadonlySet<string>;
27
+ export declare const QUANTITY_KINDS: ReadonlySet<string>;
28
+ export declare const ARITHMETIC_OPERATORS: ReadonlySet<string>;
29
+ export declare const COST_SCHEDULE_TYPES: ReadonlySet<string>;
30
+ export declare const COST_ITEM_TYPES: ReadonlySet<string>;
31
+ /** Validate a loaded model's schema at the untyped runtime boundary. */
32
+ export declare function requireCostSchema(schema: unknown): CostSchema;
33
+ /** Refuse a value outside its closed vocabulary; `undefined` (absent) passes. */
34
+ export declare function assertOneOf(value: unknown, allowed: ReadonlySet<string>, what: string, context: string): void;
35
+ /** Validate IfcArithmeticOperatorEnum, whose MODULO member exists only in IFC4X3. */
36
+ export declare function validateArithmeticOperator(value: unknown, schema: CostSchema, context: string): void;
37
+ /** EXPRESS INTEGER-valued measures: IfcInteger always, IfcCountMeasure from IFC4X3 on. */
38
+ export declare function isIntegerMeasure(type: string, schema: CostSchema): boolean;
39
+ /**
40
+ * Refuse IFC2X3 cost authoring by name, loudly.
41
+ *
42
+ * IFC2X3 lays IfcCostSchedule / IfcCostItem / IfcCostValue out differently
43
+ * (IfcCostSchedule carries an `ID` and IfcDateAndTime references where IFC4
44
+ * carries `Identification` and IfcDateTime strings; IfcCostValue has
45
+ * `CostType` where IFC4 has `Category`, and no `Components` at all). Writing
46
+ * the IFC4 layout into an IFC2X3 file would produce records that parse and are
47
+ * wrong. A no-op — or a method that returned an id having written nothing —
48
+ * would look like success at the call site, so this throws instead.
49
+ */
50
+ export declare function assertCostSchema(schema: string, method: string): void;
51
+ /**
52
+ * Validate a typed IFC value (`IfcCostValue.AppliedValue`,
53
+ * `IfcMeasureWithUnit.ValueComponent` — both `IfcValue`/SELECT-typed
54
+ * attributes). Does not serialize: the caller picks the STEP form (a named
55
+ * SELECT branch as raw text, or a `{ typed: { type, value } }` overlay
56
+ * marker) once this passes.
57
+ */
58
+ export declare function validateTypedValue(value: CostTypedValueInput | undefined, schema: CostSchema, context: string): void;
59
+ /**
60
+ * Validate an optional LIST-of-reference attribute.
61
+ *
62
+ * `undefined` is absent. An empty array is NOT absent: the EXPRESS
63
+ * declaration is `[1:?]`, so `()` would be a malformed list that the reader
64
+ * reports as INVALID_LIST. Refusing here keeps the two states distinct end to
65
+ * end, for both emitters.
66
+ */
67
+ export declare function validateRefList(ids: number[] | undefined, attribute: string, context: string): void;
68
+ /** Require a positive integer express id for a single-reference attribute. */
69
+ export declare function requireRef(id: number, attribute: string, context: string): void;
70
+ //# sourceMappingURL=cost-authoring-rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-authoring-rules.d.ts","sourceRoot":"","sources":["../src/cost-authoring-rules.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,iFAAiF;AACjF,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEtD,wEAAwE;AACxE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,MAAM,CAI5C,CAAC;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CAG7C,CAAC;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAAwE,CAAC;AAC9H,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAGlD,CAAC;AACH,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,MAAM,CAAkD,CAAC;AAEnG,wEAAwE;AACxE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,CAK7D;AAED,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAK7G;AAED,qFAAqF;AACrF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAKpG;AAED,0FAA0F;AAC1F,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAE1E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAMrE;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,GAAG,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAYpH;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAYnG;AAED,8EAA8E;AAC9E,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAI/E"}
@@ -0,0 +1,118 @@
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
+ * Runtime allow-lists for every closed vocabulary a cost method writes. The
6
+ * TypeScript unions at the call sites only bind typed callers; the sandbox
7
+ * hands these methods untyped script input, and an unchecked string becomes
8
+ * `IFCBOGUSMEASURE(1.)` or `.BOGUS.` — well-formed STEP naming nothing in the
9
+ * schema.
10
+ */
11
+ export const MEASURE_TYPES = new Set([
12
+ 'IfcMonetaryMeasure', 'IfcAreaMeasure', 'IfcVolumeMeasure', 'IfcLengthMeasure',
13
+ 'IfcMassMeasure', 'IfcTimeMeasure', 'IfcCountMeasure', 'IfcNumericMeasure',
14
+ 'IfcRatioMeasure', 'IfcReal', 'IfcInteger',
15
+ ]);
16
+ export const QUANTITY_KINDS = new Set([
17
+ 'IfcQuantityLength', 'IfcQuantityArea', 'IfcQuantityVolume', 'IfcQuantityWeight',
18
+ 'IfcQuantityTime', 'IfcQuantityCount', 'IfcQuantityNumber',
19
+ ]);
20
+ export const ARITHMETIC_OPERATORS = new Set(['ADD', 'DIVIDE', 'MODULO', 'MULTIPLY', 'SUBTRACT']);
21
+ export const COST_SCHEDULE_TYPES = new Set([
22
+ 'BUDGET', 'COSTPLAN', 'ESTIMATE', 'TENDER', 'PRICEDBILLOFQUANTITIES',
23
+ 'UNPRICEDBILLOFQUANTITIES', 'SCHEDULEOFRATES', 'USERDEFINED', 'NOTDEFINED',
24
+ ]);
25
+ export const COST_ITEM_TYPES = new Set(['USERDEFINED', 'NOTDEFINED']);
26
+ /** Validate a loaded model's schema at the untyped runtime boundary. */
27
+ export function requireCostSchema(schema) {
28
+ if (schema !== 'IFC2X3' && schema !== 'IFC4' && schema !== 'IFC4X3') {
29
+ throw new Error('CostAnchor.schema is required and must match the loaded model schema');
30
+ }
31
+ return schema;
32
+ }
33
+ /** Refuse a value outside its closed vocabulary; `undefined` (absent) passes. */
34
+ export function assertOneOf(value, allowed, what, context) {
35
+ if (value === undefined)
36
+ return;
37
+ if (typeof value !== 'string' || !allowed.has(value)) {
38
+ throw new Error(`${context}: ${what} '${String(value)}' is not one of ${[...allowed].join(', ')}`);
39
+ }
40
+ }
41
+ /** Validate IfcArithmeticOperatorEnum, whose MODULO member exists only in IFC4X3. */
42
+ export function validateArithmeticOperator(value, schema, context) {
43
+ assertOneOf(value, ARITHMETIC_OPERATORS, 'ArithmeticOperator', context);
44
+ if (value === 'MODULO' && schema !== 'IFC4X3') {
45
+ throw new Error(`${context}: ArithmeticOperator 'MODULO' is only valid in IFC4X3`);
46
+ }
47
+ }
48
+ /** EXPRESS INTEGER-valued measures: IfcInteger always, IfcCountMeasure from IFC4X3 on. */
49
+ export function isIntegerMeasure(type, schema) {
50
+ return type === 'IfcInteger' || (type === 'IfcCountMeasure' && schema === 'IFC4X3');
51
+ }
52
+ /**
53
+ * Refuse IFC2X3 cost authoring by name, loudly.
54
+ *
55
+ * IFC2X3 lays IfcCostSchedule / IfcCostItem / IfcCostValue out differently
56
+ * (IfcCostSchedule carries an `ID` and IfcDateAndTime references where IFC4
57
+ * carries `Identification` and IfcDateTime strings; IfcCostValue has
58
+ * `CostType` where IFC4 has `Category`, and no `Components` at all). Writing
59
+ * the IFC4 layout into an IFC2X3 file would produce records that parse and are
60
+ * wrong. A no-op — or a method that returned an id having written nothing —
61
+ * would look like success at the call site, so this throws instead.
62
+ */
63
+ export function assertCostSchema(schema, method) {
64
+ if (schema === 'IFC2X3') {
65
+ throw new Error(`${method} is not supported for IFC2X3: the IFC2X3 cost entities have a different `
66
+ + 'attribute layout. Create or load the model as IFC4 or IFC4X3.');
67
+ }
68
+ }
69
+ /**
70
+ * Validate a typed IFC value (`IfcCostValue.AppliedValue`,
71
+ * `IfcMeasureWithUnit.ValueComponent` — both `IfcValue`/SELECT-typed
72
+ * attributes). Does not serialize: the caller picks the STEP form (a named
73
+ * SELECT branch as raw text, or a `{ typed: { type, value } }` overlay
74
+ * marker) once this passes.
75
+ */
76
+ export function validateTypedValue(value, schema, context) {
77
+ if (value === undefined || value === null)
78
+ throw new Error(`${context}: a typed value is required`);
79
+ if (value.Type === undefined)
80
+ throw new Error(`${context}: Type is required on a typed value`);
81
+ assertOneOf(value.Type, MEASURE_TYPES, 'Type', context);
82
+ if (!Number.isFinite(value.Value)) {
83
+ throw new Error(`${context}: ${value.Type} value must be a finite number`);
84
+ }
85
+ // Rounding would silently change the caller's number: an INTEGER measure
86
+ // given a fraction is a caller error, not something to fix up.
87
+ if (isIntegerMeasure(value.Type, schema) && !Number.isInteger(value.Value)) {
88
+ throw new Error(`${context}: ${value.Type} value must be an integer in ${schema}, got ${value.Value}`);
89
+ }
90
+ }
91
+ /**
92
+ * Validate an optional LIST-of-reference attribute.
93
+ *
94
+ * `undefined` is absent. An empty array is NOT absent: the EXPRESS
95
+ * declaration is `[1:?]`, so `()` would be a malformed list that the reader
96
+ * reports as INVALID_LIST. Refusing here keeps the two states distinct end to
97
+ * end, for both emitters.
98
+ */
99
+ export function validateRefList(ids, attribute, context) {
100
+ if (ids === undefined)
101
+ return;
102
+ if (ids.length === 0) {
103
+ throw new Error(`${context}: ${attribute} must name at least one entity. Omit the field entirely `
104
+ + 'to write it as absent — an empty list is a malformed IFC list, not "no value".');
105
+ }
106
+ for (const id of ids) {
107
+ if (!Number.isInteger(id) || id <= 0) {
108
+ throw new Error(`${context}: ${attribute} contains '${id}', which is not an express id`);
109
+ }
110
+ }
111
+ }
112
+ /** Require a positive integer express id for a single-reference attribute. */
113
+ export function requireRef(id, attribute, context) {
114
+ if (!Number.isInteger(id) || id <= 0) {
115
+ throw new Error(`${context}: ${attribute} must be an express id, got '${id}'`);
116
+ }
117
+ }
118
+ //# sourceMappingURL=cost-authoring-rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-authoring-rules.js","sourceRoot":"","sources":["../src/cost-authoring-rules.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
+ import { type CostSchema } from './cost-authoring-rules.js';
1
2
  import type { CostItemParams, CostQuantityParams, CostScheduleParams, CostTypedValue, CostValueParams, SIUnitParams } from './types-cost.js';
3
+ export type { CostSchema };
2
4
  /** Allocate an express id, emit `#id=TYPE(attrs);`, and return the id. */
3
5
  export type EmitEntity = (type: string, attrs: string) => number;
4
- /** The schemas cost entities can be authored in (IFC2X3 is refused up front). */
5
- export type CostSchema = 'IFC2X3' | 'IFC4' | 'IFC4X3';
6
6
  /**
7
7
  * Serialize a finite number as an exact STEP REAL.
8
8
  *
@@ -13,18 +13,7 @@ export type CostSchema = 'IFC2X3' | 'IFC4' | 'IFC4X3';
13
13
  * `toString()` are kept and only rewritten into STEP's spelling.
14
14
  */
15
15
  export declare function stepReal(v: number): string;
16
- /**
17
- * Refuse IFC2X3 cost authoring by name, loudly.
18
- *
19
- * IFC2X3 lays IfcCostSchedule / IfcCostItem / IfcCostValue out differently
20
- * (IfcCostSchedule carries an `ID` and IfcDateAndTime references where IFC4
21
- * carries `Identification` and IfcDateTime strings; IfcCostValue has
22
- * `CostType` where IFC4 has `Category`, and no `Components` at all). Writing
23
- * the IFC4 layout into an IFC2X3 file would produce records that parse and are
24
- * wrong. A no-op — or a method that returned an id having written nothing —
25
- * would look like success at the call site, so this throws instead.
26
- */
27
- export declare function assertCostSchema(schema: string, method: string): void;
16
+ export { assertCostSchema } from './cost-authoring-rules.js';
28
17
  /**
29
18
  * Serialize a typed IFC value as a named SELECT branch.
30
19
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ifc-creator-cost.d.ts","sourceRoot":"","sources":["../src/ifc-creator-cost.ts"],"names":[],"mappings":"AA0CA,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,YAAY,EACb,MAAM,iBAAiB,CAAC;AAEzB,0EAA0E;AAC1E,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;AAEjE,iFAAiF;AACjF,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEtD;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAO1C;AAqCD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAMrE;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAe7F;AAiCD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAM3E;AAgBD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAczE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,UAAU,GACf,MAAM,CAGR;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,UAAU,GACf,MAAM,CAwBR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAqBnG;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,GACf,MAAM,CAQR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,iBAAiB,EAAE,MAAM,EACzB,gBAAgB,EAAE,MAAM,EAAE,EAC1B,WAAW,EAAE,MAAM,MAAM,EACzB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,GACf,MAAM,CAKR;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,GACf,MAAM,CAOR"}
1
+ {"version":3,"file":"ifc-creator-cost.d.ts","sourceRoot":"","sources":["../src/ifc-creator-cost.ts"],"names":[],"mappings":"AA0CA,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,YAAY,EACb,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B,0EAA0E;AAC1E,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;AAEjE;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAO1C;AAED,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAM7F;AAiCD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAM3E;AAgBD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAczE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,UAAU,GACf,MAAM,CAGR;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,UAAU,GACf,MAAM,CAwBR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAqBnG;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,GACf,MAAM,CAQR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,iBAAiB,EAAE,MAAM,EACzB,gBAAgB,EAAE,MAAM,EAAE,EAC1B,WAAW,EAAE,MAAM,MAAM,EACzB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,GACf,MAAM,CAKR;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,GACf,MAAM,CAOR"}
@@ -38,6 +38,7 @@
38
38
  * lists `[1:?]`) and is refused loudly rather than degraded to `$`.
39
39
  */
40
40
  import { esc, optStr, optEnum, refList } from './ifc-creator-math.js';
41
+ import { COST_ITEM_TYPES, COST_SCHEDULE_TYPES, QUANTITY_KINDS, assertOneOf, isIntegerMeasure, validateArithmeticOperator, validateTypedValue, } from './cost-authoring-rules.js';
41
42
  /**
42
43
  * Serialize a finite number as an exact STEP REAL.
43
44
  *
@@ -56,56 +57,7 @@ export function stepReal(v) {
56
57
  const exponent = s.slice(e + 1).replace(/^\+/, '');
57
58
  return `${mantissa.includes('.') ? mantissa : `${mantissa}.`}E${exponent}`;
58
59
  }
59
- /**
60
- * Runtime allow-lists for every closed vocabulary a cost method writes. The
61
- * TypeScript unions only bind typed callers; the sandbox hands these methods
62
- * untyped script input, and an unchecked string becomes `IFCBOGUSMEASURE(1.)`
63
- * or `.BOGUS.` — well-formed STEP naming nothing in the schema.
64
- */
65
- const MEASURE_TYPES = new Set([
66
- 'IfcMonetaryMeasure', 'IfcAreaMeasure', 'IfcVolumeMeasure', 'IfcLengthMeasure',
67
- 'IfcMassMeasure', 'IfcTimeMeasure', 'IfcCountMeasure', 'IfcNumericMeasure',
68
- 'IfcRatioMeasure', 'IfcReal', 'IfcInteger',
69
- ]);
70
- const QUANTITY_KINDS = new Set([
71
- 'IfcQuantityLength', 'IfcQuantityArea', 'IfcQuantityVolume', 'IfcQuantityWeight',
72
- 'IfcQuantityTime', 'IfcQuantityCount', 'IfcQuantityNumber',
73
- ]);
74
- const ARITHMETIC_OPERATORS = new Set(['ADD', 'DIVIDE', 'MULTIPLY', 'SUBTRACT']);
75
- const COST_SCHEDULE_TYPES = new Set([
76
- 'BUDGET', 'COSTPLAN', 'ESTIMATE', 'TENDER', 'PRICEDBILLOFQUANTITIES',
77
- 'UNPRICEDBILLOFQUANTITIES', 'SCHEDULEOFRATES', 'USERDEFINED', 'NOTDEFINED',
78
- ]);
79
- const COST_ITEM_TYPES = new Set(['USERDEFINED', 'NOTDEFINED']);
80
- /** Refuse a value outside its closed vocabulary; `undefined` (absent) passes. */
81
- function assertOneOf(value, allowed, what, context) {
82
- if (value === undefined)
83
- return;
84
- if (typeof value !== 'string' || !allowed.has(value)) {
85
- throw new Error(`${context}: ${what} '${String(value)}' is not one of ${[...allowed].join(', ')}`);
86
- }
87
- }
88
- /** EXPRESS INTEGER-valued measures: IfcInteger always, IfcCountMeasure from IFC4X3 on. */
89
- function isIntegerMeasure(type, schema) {
90
- return type === 'IfcInteger' || (type === 'IfcCountMeasure' && schema === 'IFC4X3');
91
- }
92
- /**
93
- * Refuse IFC2X3 cost authoring by name, loudly.
94
- *
95
- * IFC2X3 lays IfcCostSchedule / IfcCostItem / IfcCostValue out differently
96
- * (IfcCostSchedule carries an `ID` and IfcDateAndTime references where IFC4
97
- * carries `Identification` and IfcDateTime strings; IfcCostValue has
98
- * `CostType` where IFC4 has `Category`, and no `Components` at all). Writing
99
- * the IFC4 layout into an IFC2X3 file would produce records that parse and are
100
- * wrong. A no-op — or a method that returned an id having written nothing —
101
- * would look like success at the call site, so this throws instead.
102
- */
103
- export function assertCostSchema(schema, method) {
104
- if (schema === 'IFC2X3') {
105
- throw new Error(`${method} is not supported for IFC2X3: the IFC2X3 cost entities have a different `
106
- + 'attribute layout. Create the IfcCreator with Schema "IFC4" or "IFC4X3".');
107
- }
108
- }
60
+ export { assertCostSchema } from './cost-authoring-rules.js';
109
61
  /**
110
62
  * Serialize a typed IFC value as a named SELECT branch.
111
63
  *
@@ -114,18 +66,8 @@ export function assertCostSchema(schema, method) {
114
66
  * and picking one by inspecting the value would silently retype the file.
115
67
  */
116
68
  export function typedValue(value, schema, context) {
117
- if (value === undefined || value === null)
118
- throw new Error(`${context}: a typed value is required`);
119
- assertOneOf(value.Type, MEASURE_TYPES, 'Type', context);
120
- if (!Number.isFinite(value.Value)) {
121
- throw new Error(`${context}: ${value.Type} value must be a finite number`);
122
- }
123
- // Rounding would silently change the caller's number: an INTEGER measure
124
- // given a fraction is a caller error, not something to fix up.
69
+ validateTypedValue(value, schema, context);
125
70
  if (isIntegerMeasure(value.Type, schema)) {
126
- if (!Number.isInteger(value.Value)) {
127
- throw new Error(`${context}: ${value.Type} value must be an integer in ${schema}, got ${value.Value}`);
128
- }
129
71
  return `${value.Type.toUpperCase()}(${value.Value.toString()})`;
130
72
  }
131
73
  return `${value.Type.toUpperCase()}(${stepReal(value.Value)})`;
@@ -266,7 +208,7 @@ export function emitPhysicalQuantity(params, schema, emit) {
266
208
  * [8] ArithmeticOperator, [9] Components.
267
209
  */
268
210
  export function emitCostValue(params, schema, emit) {
269
- assertOneOf(params.ArithmeticOperator, ARITHMETIC_OPERATORS, 'ArithmeticOperator', 'addIfcCostValue');
211
+ validateArithmeticOperator(params.ArithmeticOperator, schema, 'addIfcCostValue');
270
212
  if (params.AppliedValue !== undefined && params.AppliedValueRef !== undefined) {
271
213
  throw new Error('addIfcCostValue: AppliedValue and AppliedValueRef are the two branches of one SELECT — give at most one');
272
214
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ifc-creator-cost.js","sourceRoot":"","sources":["../src/ifc-creator-cost.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ifc-creator-cost.js","sourceRoot":"","sources":["../src/ifc-creator-cost.ts"],"names":[],"mappings":"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"}
@@ -78,11 +78,21 @@ export declare function emitRelContainedInSpatialStructure(editor: StoreEditor,
78
78
  * `random` seeds the element's GlobalId (see `SpatialAnchor.guidRandom`).
79
79
  */
80
80
  export declare function ifcElementHeader(ownerHistoryId: number | null, placementId: number, productShapeId: number, params: {
81
+ GlobalId?: string;
81
82
  Name?: string;
82
83
  Description?: string;
83
84
  ObjectType?: string;
84
85
  Tag?: string;
85
86
  }, defaultName: string, random?: RandomSource): Array<unknown>;
87
+ /**
88
+ * The product's GlobalId: the caller's when it supplies one (a re-runnable
89
+ * author such as a flow graph derives it from a stable key so a re-run
90
+ * updates the element instead of duplicating it), else freshly generated.
91
+ * A malformed GlobalId is refused rather than silently replaced.
92
+ */
93
+ export declare function productGuid(params: {
94
+ GlobalId?: string;
95
+ }, random?: RandomSource): string;
86
96
  /** An RGB colour with channels in 0..1. */
87
97
  export interface SurfaceStyleColor {
88
98
  red: number;
@@ -1 +1 @@
1
- {"version":3,"file":"_emit-helpers.d.ts","sourceRoot":"","sources":["../../src/in-store/_emit-helpers.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIvD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAIrF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,WAAW,EACnB,iBAAiB,EAAE,MAAM,EACzB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAClC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAC/B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACtC,MAAM,CAiBR;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,OAAO,SAAI,EACX,OAAO,SAAI,GACV,MAAM,CAUR;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAC9C,MAAM,CAiBR;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAU/F;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAahD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAE5E;AAED;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,WAAW,EACnB,cAAc,EAAE,MAAM,GAAG,IAAI,EAC7B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,YAAY,GACpB,MAAM,CASR;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,cAAc,EAAE,MAAM,GAAG,IAAI,EAC7B,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,EAClF,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,YAAY,GACpB,KAAK,CAAC,OAAO,CAAC,CAWhB;AAED,2CAA2C;AAC3C,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAmBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,iBAAiB,EACxB,IAAI,CAAC,EAAE,MAAM,GACZ;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAiCpE"}
1
+ {"version":3,"file":"_emit-helpers.d.ts","sourceRoot":"","sources":["../../src/in-store/_emit-helpers.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@
14
14
  * All helpers operate purely through the StoreEditor; no parser
15
15
  * access, no I/O.
16
16
  */
17
- import { generateIfcGuid } from '@ifc-lite/encoding';
17
+ import { generateIfcGuid, isValidIfcGuid } from '@ifc-lite/encoding';
18
18
  const POINT_EPSILON = 1e-6;
19
19
  /**
20
20
  * Guard for element-builder dimension params (Width, Depth, Height,
@@ -160,7 +160,7 @@ export function emitRelContainedInSpatialStructure(editor, ownerHistoryId, eleme
160
160
  */
161
161
  export function ifcElementHeader(ownerHistoryId, placementId, productShapeId, params, defaultName, random) {
162
162
  return [
163
- generateIfcGuid(random),
163
+ productGuid(params, random),
164
164
  ownerHistoryRef(ownerHistoryId),
165
165
  params.Name ?? defaultName,
166
166
  params.Description ?? null,
@@ -170,6 +170,19 @@ export function ifcElementHeader(ownerHistoryId, placementId, productShapeId, pa
170
170
  params.Tag ?? null,
171
171
  ];
172
172
  }
173
+ /**
174
+ * The product's GlobalId: the caller's when it supplies one (a re-runnable
175
+ * author such as a flow graph derives it from a stable key so a re-run
176
+ * updates the element instead of duplicating it), else freshly generated.
177
+ * A malformed GlobalId is refused rather than silently replaced.
178
+ */
179
+ export function productGuid(params, random) {
180
+ if (params.GlobalId === undefined)
181
+ return generateIfcGuid(random);
182
+ if (!isValidIfcGuid(params.GlobalId))
183
+ throw new Error(`GlobalId "${params.GlobalId}" is not a valid 22-character IFC GUID`);
184
+ return params.GlobalId;
185
+ }
173
186
  /** Guards a caller's 0..255 or out-of-range channel from reaching STEP. */
174
187
  function clamp01(v) {
175
188
  return Number.isFinite(v) ? Math.min(1, Math.max(0, v)) : 0;
@@ -1 +1 @@
1
- {"version":3,"file":"_emit-helpers.js","sourceRoot":"","sources":["../../src/in-store/_emit-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_emit-helpers.js","sourceRoot":"","sources":["../../src/in-store/_emit-helpers.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,8 @@ export interface BeamInStoreParams {
11
11
  Description?: string;
12
12
  ObjectType?: string;
13
13
  Tag?: string;
14
+ /** Explicit GlobalId (22-char IFC GUID); generated when omitted. */
15
+ GlobalId?: string;
14
16
  }
15
17
  export interface BeamBuildResult {
16
18
  beamId: number;
@@ -1 +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,EAAkC,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjF,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,CA8GjB"}
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,EAAkC,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjF,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;IACb,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;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,CA8GjB"}
@@ -19,7 +19,7 @@
19
19
  import { generateIfcGuid } from '@ifc-lite/encoding';
20
20
  import { vecCross, vecNorm, assertFinitePoint3 } from '../ifc-creator-math.js';
21
21
  import { toNativeLength, toNativePoint3 } from './anchor.js';
22
- import { assertPositiveFinite, ownerHistoryRef } from './_emit-helpers.js';
22
+ import { assertPositiveFinite, ownerHistoryRef, productGuid } from './_emit-helpers.js';
23
23
  /**
24
24
  * Stable perpendicular to a beam axis. Mirrors IfcCreator.computeRefDirection.
25
25
  */
@@ -98,7 +98,7 @@ export function addBeamToStore(editor, anchor, params) {
98
98
  ]).expressId;
99
99
  // `IfcBeam.PredefinedType` only exists from IFC4 onward.
100
100
  const beamAttrs = [
101
- generateIfcGuid(anchor.guidRandom),
101
+ productGuid(params, anchor.guidRandom),
102
102
  ownerHistoryRef(ownerHistoryId),
103
103
  params.Name ?? 'Beam',
104
104
  params.Description ?? null,
@@ -1 +1 @@
1
- {"version":3,"file":"beam.js","sourceRoot":"","sources":["../../src/in-store/beam.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"beam.js","sourceRoot":"","sources":["../../src/in-store/beam.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,8 @@ export interface ColumnInStoreParams {
14
14
  Description?: string;
15
15
  ObjectType?: string;
16
16
  Tag?: string;
17
+ /** Explicit GlobalId (22-char IFC GUID); generated when omitted. */
18
+ GlobalId?: string;
17
19
  }
18
20
  /**
19
21
  * Result of `addColumnToStore` — the new column's expressId plus a
@@ -1 +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,EAAkC,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjF,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,CAuGnB"}
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,EAAkC,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjF,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;IACb,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;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,CAuGnB"}
@@ -16,7 +16,7 @@
16
16
  */
17
17
  import { generateIfcGuid } from '@ifc-lite/encoding';
18
18
  import { toNativeLength, toNativePoint3 } from './anchor.js';
19
- import { assertPositiveFinite, ownerHistoryRef } from './_emit-helpers.js';
19
+ import { assertPositiveFinite, ownerHistoryRef, productGuid } from './_emit-helpers.js';
20
20
  /**
21
21
  * Add an IfcColumn to a parsed model via the StoreEditor overlay. Returns
22
22
  * the freshly-allocated expressIds for every entity that was emitted.
@@ -83,7 +83,7 @@ export function addColumnToStore(editor, anchor, params) {
83
83
  // onward — IFC2X3 has no such attribute, so emitting `.COLUMN.` there
84
84
  // would produce an invalid 9-arg entity record.
85
85
  const columnAttrs = [
86
- generateIfcGuid(anchor.guidRandom),
86
+ productGuid(params, anchor.guidRandom),
87
87
  ownerHistoryRef(ownerHistoryId),
88
88
  params.Name ?? 'Column',
89
89
  params.Description ?? null,
@@ -1 +1 @@
1
- {"version":3,"file":"column.js","sourceRoot":"","sources":["../../src/in-store/column.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"column.js","sourceRoot":"","sources":["../../src/in-store/column.ts"],"names":[],"mappings":"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"}