@ifc-lite/create 2.5.0 → 2.7.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.
- package/README.md +8 -0
- package/dist/cost-authoring-rules.d.ts +70 -0
- package/dist/cost-authoring-rules.d.ts.map +1 -0
- package/dist/cost-authoring-rules.js +118 -0
- package/dist/cost-authoring-rules.js.map +1 -0
- package/dist/ifc-creator-cost.d.ts +107 -0
- package/dist/ifc-creator-cost.d.ts.map +1 -0
- package/dist/ifc-creator-cost.js +279 -0
- package/dist/ifc-creator-cost.js.map +1 -0
- package/dist/ifc-creator-definitions.d.ts +21 -0
- package/dist/ifc-creator-definitions.d.ts.map +1 -0
- package/dist/ifc-creator-definitions.js +56 -0
- package/dist/ifc-creator-definitions.js.map +1 -0
- package/dist/ifc-creator-math.d.ts +15 -1
- package/dist/ifc-creator-math.d.ts.map +1 -1
- package/dist/ifc-creator-math.js +42 -0
- package/dist/ifc-creator-math.js.map +1 -1
- package/dist/ifc-creator.d.ts +23 -2
- package/dist/ifc-creator.d.ts.map +1 -1
- package/dist/ifc-creator.js +82 -67
- package/dist/ifc-creator.js.map +1 -1
- package/dist/in-store/cost-nesting-cycle.d.ts +8 -0
- package/dist/in-store/cost-nesting-cycle.d.ts.map +1 -0
- package/dist/in-store/cost-nesting-cycle.js +28 -0
- package/dist/in-store/cost-nesting-cycle.js.map +1 -0
- package/dist/in-store/cost-reference-validation.d.ts +13 -0
- package/dist/in-store/cost-reference-validation.d.ts.map +1 -0
- package/dist/in-store/cost-reference-validation.js +49 -0
- package/dist/in-store/cost-reference-validation.js.map +1 -0
- package/dist/in-store/cost-removal.d.ts +40 -0
- package/dist/in-store/cost-removal.d.ts.map +1 -0
- package/dist/in-store/cost-removal.js +107 -0
- package/dist/in-store/cost-removal.js.map +1 -0
- package/dist/in-store/cost.d.ts +109 -0
- package/dist/in-store/cost.d.ts.map +1 -0
- package/dist/in-store/cost.js +323 -0
- package/dist/in-store/cost.js.map +1 -0
- package/dist/in-store/resolve-source.d.ts.map +1 -1
- package/dist/in-store/resolve-source.js +11 -8
- package/dist/in-store/resolve-source.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/types-cost.d.ts +134 -0
- package/dist/types-cost.d.ts.map +1 -0
- package/dist/types-cost.js +5 -0
- package/dist/types-cost.js.map +1 -0
- package/dist/types.d.ts +7 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -4
|
@@ -0,0 +1,323 @@
|
|
|
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
|
+
* Loaded-model cost authoring (#4857 PR A) — `bim.store.addCost*` / `nestCostItems`
|
|
6
|
+
* / `assignCostItemsToSchedule` / `assignToCostItem` / `setCostItemValues` /
|
|
7
|
+
* `removeCostEntity`. The counterpart of `ifc-creator-cost.ts` for a model
|
|
8
|
+
* that is already parsed and loaded rather than being built from scratch:
|
|
9
|
+
* same validation (`cost-authoring-rules.ts`, shared so a value illegal from
|
|
10
|
+
* one entry point is illegal from the other), different serialization —
|
|
11
|
+
* `StoreEditor.addEntity` takes a typed attribute array, not raw STEP text.
|
|
12
|
+
*
|
|
13
|
+
* Pure: no I/O, no parser access, no read of the store's OWN existing graph.
|
|
14
|
+
* `nestCostItemsInStore` (reparenting) and `removeCostEntityInStore`
|
|
15
|
+
* (safe-delete / cascade) both need to know what ALREADY references an
|
|
16
|
+
* entity, which only a graph READ can answer — the caller resolves referrers
|
|
17
|
+
* first and hands them in. The editor is the only mutable thing touched.
|
|
18
|
+
*/
|
|
19
|
+
import { generateIfcGuid } from '@ifc-lite/encoding';
|
|
20
|
+
import { ownerHistoryRef } from './_emit-helpers.js';
|
|
21
|
+
import { requireAssignableIfcObjectDefinition, requireEntitySubtype, requireEntityType, requireEntityTypeOneOf, requireMatchingCostSchema, } from './cost-reference-validation.js';
|
|
22
|
+
import { COST_ITEM_TYPES, COST_SCHEDULE_TYPES, QUANTITY_KINDS, assertCostSchema, assertOneOf, requireRef, validateArithmeticOperator, validateRefList, validateTypedValue, } from '../cost-authoring-rules.js';
|
|
23
|
+
import { assertNoNestingCycle } from './cost-nesting-cycle.js';
|
|
24
|
+
/** `IfcCostValue.Components` / `IfcAppliedValueSelect`'s entity branches: another cost/applied value. */
|
|
25
|
+
const APPLIED_VALUE_ENTITY_TYPES = new Set(['IFCCOSTVALUE', 'IFCAPPLIEDVALUE']);
|
|
26
|
+
/** The entity branches of IFC4/IFC4X3 IfcAppliedValueSelect. */
|
|
27
|
+
const APPLIED_VALUE_REF_TYPES = new Set(['IFCMEASUREWITHUNIT', 'IFCREFERENCE']);
|
|
28
|
+
function typedAttrValue(value, schema, context) {
|
|
29
|
+
validateTypedValue(value, schema, context);
|
|
30
|
+
return { typed: { type: value.Type, value: value.Value } };
|
|
31
|
+
}
|
|
32
|
+
function refListAttr(ids) {
|
|
33
|
+
return ids === undefined ? null : ids.map(id => `#${id}`);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Emit an `IfcCostSchedule` into the loaded model's overlay.
|
|
37
|
+
*
|
|
38
|
+
* [0] GlobalId, [1] OwnerHistory, [2] Name, [3] Description, [4] ObjectType,
|
|
39
|
+
* [5] Identification, [6] PredefinedType, [7] Status, [8] SubmittedOn,
|
|
40
|
+
* [9] UpdateDate — same IFC4 layout `emitCostSchedule` writes; refused for
|
|
41
|
+
* IFC2X3 (different layout, see `assertCostSchema`).
|
|
42
|
+
*/
|
|
43
|
+
export function addCostScheduleToStore(editor, anchor, params) {
|
|
44
|
+
const schema = requireMatchingCostSchema(editor, anchor.schema);
|
|
45
|
+
assertCostSchema(schema, 'addCostSchedule');
|
|
46
|
+
if (typeof params.Name !== 'string' || params.Name.length === 0) {
|
|
47
|
+
throw new Error('addCostSchedule: Name is required');
|
|
48
|
+
}
|
|
49
|
+
assertOneOf(params.PredefinedType, COST_SCHEDULE_TYPES, 'PredefinedType', 'addCostSchedule');
|
|
50
|
+
return editor.addEntity('IfcCostSchedule', [
|
|
51
|
+
generateIfcGuid(anchor.guidRandom),
|
|
52
|
+
ownerHistoryRef(anchor.ownerHistoryId),
|
|
53
|
+
params.Name,
|
|
54
|
+
params.Description ?? null,
|
|
55
|
+
params.ObjectType ?? null,
|
|
56
|
+
params.Identification ?? null,
|
|
57
|
+
params.PredefinedType ? `.${params.PredefinedType}.` : null,
|
|
58
|
+
params.Status ?? null,
|
|
59
|
+
params.SubmittedOn ?? null,
|
|
60
|
+
params.UpdateDate ?? null,
|
|
61
|
+
]).expressId;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Emit an `IfcCostItem`. [0] GlobalId, [1] OwnerHistory, [2] Name,
|
|
65
|
+
* [3] Description, [4] ObjectType, [5] Identification, [6] PredefinedType,
|
|
66
|
+
* [7] CostValues, [8] CostQuantities — an empty `CostValues`/`CostQuantities`
|
|
67
|
+
* array is refused (EXPRESS `[1:?]`); use `attachCostValuesToItemInStore` to
|
|
68
|
+
* attach them after the fact instead.
|
|
69
|
+
*/
|
|
70
|
+
export function addCostItemToStore(editor, anchor, params) {
|
|
71
|
+
const schema = requireMatchingCostSchema(editor, anchor.schema);
|
|
72
|
+
const costValues = params.CostValues === undefined ? undefined : [...new Set(params.CostValues)];
|
|
73
|
+
const costQuantities = params.CostQuantities === undefined ? undefined : [...new Set(params.CostQuantities)];
|
|
74
|
+
assertCostSchema(schema, 'addCostItem');
|
|
75
|
+
if (typeof params.Name !== 'string' || params.Name.length === 0) {
|
|
76
|
+
throw new Error('addCostItem: Name is required');
|
|
77
|
+
}
|
|
78
|
+
assertOneOf(params.PredefinedType, COST_ITEM_TYPES, 'PredefinedType', 'addCostItem');
|
|
79
|
+
validateRefList(costValues, 'CostValues', 'addCostItem');
|
|
80
|
+
validateRefList(costQuantities, 'CostQuantities', 'addCostItem');
|
|
81
|
+
for (const id of costValues ?? [])
|
|
82
|
+
requireEntityType(editor, id, 'IfcCostValue', 'CostValues', 'addCostItem');
|
|
83
|
+
for (const id of costQuantities ?? []) {
|
|
84
|
+
requireEntitySubtype(editor, id, 'IfcPhysicalQuantity', 'CostQuantities', 'addCostItem');
|
|
85
|
+
}
|
|
86
|
+
return editor.addEntity('IfcCostItem', [
|
|
87
|
+
generateIfcGuid(anchor.guidRandom),
|
|
88
|
+
ownerHistoryRef(anchor.ownerHistoryId),
|
|
89
|
+
params.Name,
|
|
90
|
+
params.Description ?? null,
|
|
91
|
+
params.ObjectType ?? null,
|
|
92
|
+
params.Identification ?? null,
|
|
93
|
+
params.PredefinedType ? `.${params.PredefinedType}.` : null,
|
|
94
|
+
refListAttr(costValues),
|
|
95
|
+
refListAttr(costQuantities),
|
|
96
|
+
]).expressId;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Emit an `IfcCostValue`. [0] Name, [1] Description, [2] AppliedValue,
|
|
100
|
+
* [3] UnitBasis, [4] ApplicableDate, [5] FixedUntilDate, [6] Category,
|
|
101
|
+
* [7] Condition, [8] ArithmeticOperator, [9] Components.
|
|
102
|
+
*
|
|
103
|
+
* `AppliedValue` and `AppliedValueRef` are the two branches of one SELECT —
|
|
104
|
+
* at most one may be given (mirrors `emitCostValue`).
|
|
105
|
+
*/
|
|
106
|
+
export function addCostValueToStore(editor, anchor, params) {
|
|
107
|
+
const schema = requireMatchingCostSchema(editor, anchor.schema);
|
|
108
|
+
assertCostSchema(schema, 'addCostValue');
|
|
109
|
+
if (params.AppliedValue !== undefined && params.AppliedValueRef !== undefined) {
|
|
110
|
+
throw new Error('addCostValue: AppliedValue and AppliedValueRef are the two branches of one SELECT — give at most one');
|
|
111
|
+
}
|
|
112
|
+
validateArithmeticOperator(params.ArithmeticOperator, schema, 'addCostValue');
|
|
113
|
+
let applied = null;
|
|
114
|
+
if (params.AppliedValue !== undefined) {
|
|
115
|
+
applied = typedAttrValue(params.AppliedValue, schema, 'addCostValue');
|
|
116
|
+
}
|
|
117
|
+
else if (params.AppliedValueRef !== undefined) {
|
|
118
|
+
requireRef(params.AppliedValueRef, 'AppliedValueRef', 'addCostValue');
|
|
119
|
+
requireEntityTypeOneOf(editor, params.AppliedValueRef, APPLIED_VALUE_REF_TYPES, 'AppliedValueRef', 'addCostValue');
|
|
120
|
+
applied = `#${params.AppliedValueRef}`;
|
|
121
|
+
}
|
|
122
|
+
if (params.UnitBasis !== undefined) {
|
|
123
|
+
requireRef(params.UnitBasis, 'UnitBasis', 'addCostValue');
|
|
124
|
+
requireEntityType(editor, params.UnitBasis, 'IfcMeasureWithUnit', 'UnitBasis', 'addCostValue');
|
|
125
|
+
}
|
|
126
|
+
validateRefList(params.Components, 'Components', 'addCostValue');
|
|
127
|
+
for (const id of params.Components ?? [])
|
|
128
|
+
requireEntityTypeOneOf(editor, id, APPLIED_VALUE_ENTITY_TYPES, 'Components', 'addCostValue');
|
|
129
|
+
return editor.addEntity('IfcCostValue', [
|
|
130
|
+
params.Name ?? null,
|
|
131
|
+
params.Description ?? null,
|
|
132
|
+
applied,
|
|
133
|
+
params.UnitBasis === undefined ? null : `#${params.UnitBasis}`,
|
|
134
|
+
params.ApplicableDate ?? null,
|
|
135
|
+
params.FixedUntilDate ?? null,
|
|
136
|
+
params.Category ?? null,
|
|
137
|
+
params.Condition ?? null,
|
|
138
|
+
params.ArithmeticOperator ? `.${params.ArithmeticOperator}.` : null,
|
|
139
|
+
refListAttr(params.Components),
|
|
140
|
+
]).expressId;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Emit an `IfcPhysicalSimpleQuantity` (the same subtypes `emitPhysicalQuantity`
|
|
144
|
+
* writes), for `IfcCostItem.CostQuantities`. [0] Name, [1] Description,
|
|
145
|
+
* [2] Unit, [3] `<Kind>Value`, [4] Formula.
|
|
146
|
+
*/
|
|
147
|
+
export function addCostQuantityToStore(editor, anchor, params) {
|
|
148
|
+
const schema = requireMatchingCostSchema(editor, anchor.schema);
|
|
149
|
+
assertCostSchema(schema, 'addCostQuantity');
|
|
150
|
+
if (typeof params.Name !== 'string' || params.Name.length === 0) {
|
|
151
|
+
throw new Error('addCostQuantity: Name is required');
|
|
152
|
+
}
|
|
153
|
+
assertOneOf(params.Kind, QUANTITY_KINDS, 'Kind', 'addCostQuantity');
|
|
154
|
+
if (!Number.isFinite(params.Value))
|
|
155
|
+
throw new Error(`addCostQuantity: ${params.Kind} value must be a finite number`);
|
|
156
|
+
if (params.Kind === 'IfcQuantityNumber' && schema !== 'IFC4X3') {
|
|
157
|
+
throw new Error(`addCostQuantity: ${params.Kind} does not exist in ${schema}; requires Schema "IFC4X3"`);
|
|
158
|
+
}
|
|
159
|
+
if (params.Kind !== 'IfcQuantityNumber' && params.Value < 0) {
|
|
160
|
+
throw new Error(`addCostQuantity: ${params.Kind} value must be non-negative, got ${params.Value}`);
|
|
161
|
+
}
|
|
162
|
+
if (params.Unit !== undefined) {
|
|
163
|
+
requireRef(params.Unit, 'Unit', 'addCostQuantity');
|
|
164
|
+
requireEntitySubtype(editor, params.Unit, 'IfcNamedUnit', 'Unit', 'addCostQuantity');
|
|
165
|
+
}
|
|
166
|
+
const isInteger = params.Kind === 'IfcQuantityCount' && schema === 'IFC4X3';
|
|
167
|
+
if (isInteger && !Number.isInteger(params.Value)) {
|
|
168
|
+
throw new Error(`addCostQuantity: ${params.Kind} value must be a finite integer in IFC4X3`);
|
|
169
|
+
}
|
|
170
|
+
return editor.addEntity(params.Kind, [
|
|
171
|
+
params.Name,
|
|
172
|
+
params.Description ?? null,
|
|
173
|
+
params.Unit === undefined ? null : `#${params.Unit}`,
|
|
174
|
+
isInteger ? params.Value : { real: params.Value },
|
|
175
|
+
params.Formula ?? null,
|
|
176
|
+
]).expressId;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Nest `childIds` under `parentId` as `IfcRelNests.RelatedObjects` (slot 5),
|
|
180
|
+
* `RelatingObject` = parent.
|
|
181
|
+
*
|
|
182
|
+
* A child already nested under one or more DIFFERENT `IfcRelNests` is
|
|
183
|
+
* reparented: it is removed from EVERY one of those rels' `RelatedObjects`
|
|
184
|
+
* first (a file may legally list a child under more than one nest —
|
|
185
|
+
* `MULTIPLE_NESTING_PARENTS` is a diagnostic, not a refusal — so detaching
|
|
186
|
+
* from only the first one found would leave it still nested under the rest),
|
|
187
|
+
* tombstoning a rel if that empties it (`RelatedObjects` is `[1:?]`, so an
|
|
188
|
+
* emptied list cannot be left as `()`), then added to (or its own new) the
|
|
189
|
+
* target rel.
|
|
190
|
+
*/
|
|
191
|
+
export function nestCostItemsInStore(editor, anchor, parentId, childIds, existingNestByChild, existingTargetNest) {
|
|
192
|
+
const schema = requireMatchingCostSchema(editor, anchor.schema);
|
|
193
|
+
assertCostSchema(schema, 'nestCostItems');
|
|
194
|
+
validateRefList(childIds, 'childIds', 'nestCostItems');
|
|
195
|
+
requireRef(parentId, 'parentId', 'nestCostItems');
|
|
196
|
+
if (childIds.includes(parentId)) {
|
|
197
|
+
throw new Error(`nestCostItems: parentId #${parentId} cannot also be one of childIds (an item cannot nest itself)`);
|
|
198
|
+
}
|
|
199
|
+
requireEntityType(editor, parentId, 'IfcCostItem', 'parentId', 'nestCostItems');
|
|
200
|
+
// De-duplicated once: every use below (the reparent scan, the merge, the
|
|
201
|
+
// freshly-created rel's own RelatedObjects) reads from this, not childIds
|
|
202
|
+
// — a repeated id in the caller's list must not write a repeated #N into a
|
|
203
|
+
// list IFC readers count members of.
|
|
204
|
+
const uniqueChildIds = [...new Set(childIds)];
|
|
205
|
+
for (const childId of uniqueChildIds)
|
|
206
|
+
requireEntityType(editor, childId, 'IfcCostItem', 'childId', 'nestCostItems');
|
|
207
|
+
// The SDK supplies relatingId so the helper can reject indirect cycles.
|
|
208
|
+
assertNoNestingCycle(parentId, uniqueChildIds, existingNestByChild);
|
|
209
|
+
// Detach every child of THIS call from every old rel it is a member of, one
|
|
210
|
+
// rewrite per (rel, not per (rel, child)): two children reparented out of
|
|
211
|
+
// the same old IfcRelNests in one call must both leave it, and re-filtering
|
|
212
|
+
// the ORIGINAL (unchanged) relatedIds on each iteration would make the
|
|
213
|
+
// second child's rewrite silently undo the first child's removal.
|
|
214
|
+
const detachedRelIds = new Set();
|
|
215
|
+
for (const childId of uniqueChildIds) {
|
|
216
|
+
for (const existing of existingNestByChild.get(childId) ?? []) {
|
|
217
|
+
if (existing.relId === existingTargetNest?.relId || detachedRelIds.has(existing.relId))
|
|
218
|
+
continue;
|
|
219
|
+
detachedRelIds.add(existing.relId);
|
|
220
|
+
const remaining = existing.relatedIds.filter(id => !uniqueChildIds.includes(id));
|
|
221
|
+
if (remaining.length === 0)
|
|
222
|
+
editor.removeEntity(existing.relId);
|
|
223
|
+
else
|
|
224
|
+
editor.setPositionalAttribute(existing.relId, 5, remaining.map(id => `#${id}`));
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
if (existingTargetNest) {
|
|
228
|
+
const merged = [...new Set([...existingTargetNest.relatedIds, ...uniqueChildIds])];
|
|
229
|
+
editor.setPositionalAttribute(existingTargetNest.relId, 5, merged.map(id => `#${id}`));
|
|
230
|
+
return existingTargetNest.relId;
|
|
231
|
+
}
|
|
232
|
+
return editor.addEntity('IfcRelNests', [
|
|
233
|
+
generateIfcGuid(anchor.guidRandom),
|
|
234
|
+
ownerHistoryRef(anchor.ownerHistoryId),
|
|
235
|
+
null,
|
|
236
|
+
null,
|
|
237
|
+
`#${parentId}`,
|
|
238
|
+
uniqueChildIds.map(id => `#${id}`),
|
|
239
|
+
]).expressId;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Shared `IfcRelAssignsToControl` writer behind
|
|
243
|
+
* `assignCostItemsToScheduleInStore` / `assignObjectsToCostItemInStore`:
|
|
244
|
+
* [0] GlobalId, [1] OwnerHistory, [2] Name, [3] Description,
|
|
245
|
+
* [4] RelatedObjects, [5] RelatedObjectsType, [6] RelatingControl. Appends to
|
|
246
|
+
* `existingAssignment` when the controlling entity already has one, rather
|
|
247
|
+
* than creating a second relationship for the same control.
|
|
248
|
+
*/
|
|
249
|
+
function assignToControlInStore(editor, anchor, relatingControlId, relatedObjectIds, existingAssignment, context, controlType, relatedType) {
|
|
250
|
+
const schema = requireMatchingCostSchema(editor, anchor.schema);
|
|
251
|
+
assertCostSchema(schema, context);
|
|
252
|
+
validateRefList(relatedObjectIds, 'relatedObjectIds', context);
|
|
253
|
+
requireRef(relatingControlId, 'relatingControlId', context);
|
|
254
|
+
requireEntityType(editor, relatingControlId, controlType, 'relatingControlId', context);
|
|
255
|
+
// De-duplicated once so a repeated id in the caller's list can't write a
|
|
256
|
+
// repeated #N into RelatedObjects — a caller-visible malformed member list.
|
|
257
|
+
const uniqueRelated = [...new Set(relatedObjectIds)];
|
|
258
|
+
for (const id of uniqueRelated) {
|
|
259
|
+
if (relatedType === 'IfcObjectDefinition') {
|
|
260
|
+
requireAssignableIfcObjectDefinition(editor, id, relatingControlId, context);
|
|
261
|
+
}
|
|
262
|
+
else if (relatedType) {
|
|
263
|
+
requireEntityType(editor, id, relatedType, 'relatedObjectIds', context);
|
|
264
|
+
}
|
|
265
|
+
else if (!editor.hasEntity(id)) {
|
|
266
|
+
throw new Error(`${context}: relatedObjectIds #${id} does not exist in this model`);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
if (existingAssignment) {
|
|
270
|
+
// Filter against the union across every relationship for this control
|
|
271
|
+
// (a member of a DIFFERENT one is not re-added), but merge only into
|
|
272
|
+
// THIS rel's own list — never the union itself, which would copy a
|
|
273
|
+
// secondary relationship's members into the primary one.
|
|
274
|
+
const alreadyMember = new Set(existingAssignment.allMemberIds ?? existingAssignment.relatedIds);
|
|
275
|
+
const toAdd = uniqueRelated.filter(id => !alreadyMember.has(id));
|
|
276
|
+
if (toAdd.length === 0)
|
|
277
|
+
return existingAssignment.relId;
|
|
278
|
+
const merged = [...existingAssignment.relatedIds, ...toAdd];
|
|
279
|
+
editor.setPositionalAttribute(existingAssignment.relId, 4, merged.map(id => `#${id}`));
|
|
280
|
+
return existingAssignment.relId;
|
|
281
|
+
}
|
|
282
|
+
return editor.addEntity('IfcRelAssignsToControl', [
|
|
283
|
+
generateIfcGuid(anchor.guidRandom),
|
|
284
|
+
ownerHistoryRef(anchor.ownerHistoryId),
|
|
285
|
+
null,
|
|
286
|
+
null,
|
|
287
|
+
uniqueRelated.map(id => `#${id}`),
|
|
288
|
+
null,
|
|
289
|
+
`#${relatingControlId}`,
|
|
290
|
+
]).expressId;
|
|
291
|
+
}
|
|
292
|
+
/** Assign `itemIds` (IfcCostItem) to `scheduleId` (IfcCostSchedule) as its controlled objects. */
|
|
293
|
+
export function assignCostItemsToScheduleInStore(editor, anchor, scheduleId, itemIds, existingAssignment) {
|
|
294
|
+
return assignToControlInStore(editor, anchor, scheduleId, itemIds, existingAssignment, 'assignCostItemsToSchedule', 'IfcCostSchedule', 'IfcCostItem');
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Assign IFC objects (products, tasks, resources, etc.) to a cost item.
|
|
298
|
+
* The controlling item itself is not a legal related member.
|
|
299
|
+
*/
|
|
300
|
+
export function assignObjectsToCostItemInStore(editor, anchor, costItemId, objectIds, existingAssignment) {
|
|
301
|
+
return assignToControlInStore(editor, anchor, costItemId, objectIds, existingAssignment, 'assignToCostItem', 'IfcCostItem', 'IfcObjectDefinition');
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Set (replace) `itemId`'s `IfcCostItem.CostValues` (slot 7). `valueIds` is
|
|
305
|
+
* REQUIRED, not optional: an empty array is how a caller CLEARS the list,
|
|
306
|
+
* written as `$` — never `()`, which `[1:?]` forbids.
|
|
307
|
+
*/
|
|
308
|
+
export function attachCostValuesToItemInStore(editor, anchor, itemId, valueIds) {
|
|
309
|
+
assertCostSchema(requireMatchingCostSchema(editor, anchor.schema), 'setCostItemValues');
|
|
310
|
+
requireEntityType(editor, itemId, 'IfcCostItem', 'itemId', 'setCostItemValues');
|
|
311
|
+
for (const id of valueIds) {
|
|
312
|
+
requireRef(id, 'CostValues', 'setCostItemValues');
|
|
313
|
+
requireEntityType(editor, id, 'IfcCostValue', 'CostValues', 'setCostItemValues');
|
|
314
|
+
}
|
|
315
|
+
// De-duplicated (SET semantics, first occurrence kept), like every other
|
|
316
|
+
// list writer here (nestCostItemsInStore's childIds, assignToControlInStore's
|
|
317
|
+
// relatedObjectIds, …) — a repeated id must not write a repeated #N into a
|
|
318
|
+
// list the evaluator sums over (setCostItemValues([v, v]) would otherwise
|
|
319
|
+
// double-count that value).
|
|
320
|
+
const uniqueValueIds = [...new Set(valueIds)];
|
|
321
|
+
editor.setPositionalAttribute(itemId, 7, uniqueValueIds.length === 0 ? null : uniqueValueIds.map(id => `#${id}`));
|
|
322
|
+
}
|
|
323
|
+
//# sourceMappingURL=cost.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost.js","sourceRoot":"","sources":["../../src/in-store/cost.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-source.d.ts","sourceRoot":"","sources":["../../src/in-store/resolve-source.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"resolve-source.d.ts","sourceRoot":"","sources":["../../src/in-store/resolve-source.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGtE,OAAO,KAAK,EAAE,gBAAgB,EAA2B,MAAM,gBAAgB,CAAC;AA0ChF;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,YAAY,EACnB,eAAe,EAAE,MAAM,GACtB,gBAAgB,CA+GlB"}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* backend layer can call it without needing parser internals.
|
|
13
13
|
*/
|
|
14
14
|
import { EntityExtractor } from '@ifc-lite/parser';
|
|
15
|
+
import { resolvedTypeName } from '@ifc-lite/data';
|
|
15
16
|
import { safeLengthUnitScale } from './length-unit-scale.js';
|
|
16
17
|
/**
|
|
17
18
|
* Rel types whose `RelatedObjects` list is replayed against a
|
|
@@ -130,11 +131,13 @@ export function resolveDuplicateSource(store, sourceExpressId) {
|
|
|
130
131
|
// duplicate flow convert its metre offset onto the native-unit
|
|
131
132
|
// sourceLocation. Falls back to 1 (metres) on extraction failure.
|
|
132
133
|
const lengthUnitScale = safeLengthUnitScale(store.source, store.entityIndex, 'resolveDuplicateSource') ?? 1.0;
|
|
134
|
+
// Canonical PascalCase, or the raw STEP type as parsed (#4933).
|
|
135
|
+
const type = resolvedTypeName(store.entities, sourceExpressId) ?? sourceEntity.type;
|
|
136
|
+
if (!type) {
|
|
137
|
+
throw new Error(`resolveDuplicateSource: #${sourceExpressId} has no resolvable IFC type — cannot duplicate`);
|
|
138
|
+
}
|
|
133
139
|
return {
|
|
134
|
-
|
|
135
|
-
// extractor type when the entity table doesn't recognise the id
|
|
136
|
-
// (vendor extensions etc).
|
|
137
|
-
type: store.entities.getTypeName(sourceExpressId) || sourceEntity.type,
|
|
140
|
+
type,
|
|
138
141
|
attributes: attrs,
|
|
139
142
|
placementExpressId: placementId,
|
|
140
143
|
parentPlacementId,
|
|
@@ -191,10 +194,10 @@ function collectSourceAssociations(store, extractor, sourceId) {
|
|
|
191
194
|
continue;
|
|
192
195
|
const name = typeof entity.attributes[2] === 'string' ? entity.attributes[2] : null;
|
|
193
196
|
const description = typeof entity.attributes[3] === 'string' ? entity.attributes[3] : null;
|
|
194
|
-
//
|
|
195
|
-
//
|
|
196
|
-
//
|
|
197
|
-
const canonicalRelType = store.entities
|
|
197
|
+
// Canonical PascalCase when the table has it; association rels are
|
|
198
|
+
// usually categorised out of the `EntityTable` entirely, so `relType`
|
|
199
|
+
// (the constant this loop is already iterating by) is the fallback.
|
|
200
|
+
const canonicalRelType = resolvedTypeName(store.entities, relId) ?? relType;
|
|
198
201
|
out.push({
|
|
199
202
|
relType: canonicalRelType,
|
|
200
203
|
ownerHistoryId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-source.js","sourceRoot":"","sources":["../../src/in-store/resolve-source.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;GASG;AAEH,OAAO,EAAE,eAAe,EAAqB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"resolve-source.js","sourceRoot":"","sources":["../../src/in-store/resolve-source.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -34,6 +34,8 @@ export { applyStylesInStore, collectLeafRepresentationItems, type ApplyStyleOpti
|
|
|
34
34
|
export { addRoofToStore, type RoofInStoreParams, type RoofRectangleParams, type RoofPolygonParams, type RoofBuildResult } from './in-store/roof.js';
|
|
35
35
|
export { addPlateToStore, type PlateInStoreParams, type PlateRectangleParams, type PlatePolygonParams, type PlateBuildResult } from './in-store/plate.js';
|
|
36
36
|
export { addMemberToStore, type MemberInStoreParams, type MemberBuildResult } from './in-store/member.js';
|
|
37
|
+
export { addCostScheduleToStore, addCostItemToStore, addCostValueToStore, addCostQuantityToStore, nestCostItemsInStore, assignCostItemsToScheduleInStore, assignObjectsToCostItemInStore, attachCostValuesToItemInStore, type CostAnchor, type ExistingRelatedList, } from './in-store/cost.js';
|
|
38
|
+
export { removeCostEntityInStore, type CostRemovalReferrers } from './in-store/cost-removal.js';
|
|
37
39
|
export { resolveSpatialAnchor } from './in-store/resolve-anchor.js';
|
|
38
40
|
export { toNativeLength, fromNativeLength } from './in-store/anchor.js';
|
|
39
41
|
export type { SpatialAnchor } from './in-store/anchor.js';
|
|
@@ -46,4 +48,5 @@ export { generateSpacesFromWalls, offsetRoomFootprint, GENERATED_SPACE_OBJECTTYP
|
|
|
46
48
|
export { generateSpaces, listStoreys, type GenerateSpacesAllOptions, type GenerateSpacesAllResult, type GenerateSpacesStoreyResult, type StoreyInfo, } from './in-store/generate-spaces-all.js';
|
|
47
49
|
export { addDrawingMarkupToStore, addMeasureMarkupToStore, addPolygonAreaMarkupToStore, addTextMarkupToStore, addCloudMarkupToStore, DRAWING_MARKUP_OBJECTTYPE, DRAWING_MARKUP_PSET_NAME, DRAWING_MARKUP_QSET_NAME, type DrawingMarkupObjectType, type MarkupAnchor, type MarkupPoint2D, type MeasureMarkupParams, type MeasureMarkupResult, type PolygonAreaMarkupParams, type PolygonAreaMarkupResult, type TextMarkupParams, type TextMarkupResult, type CloudMarkupParams, type CloudMarkupResult, type DrawingMarkupBatchInput, type DrawingMarkupBatchResult, } from './in-store/drawing-markup.js';
|
|
48
50
|
export type { Point3D, Point2D, Placement3D, RectangleProfile, ArbitraryProfile, CircleProfile, CircleHollowProfile, IShapeProfile, LShapeProfile, TShapeProfile, UShapeProfile, CShapeProfile, RectangleHollowProfile, ProfileDef, RectangularOpening, GenericElementParams, AxisElementParams, ElementAttributes, WallParams, SlabParams, ColumnParams, BeamParams, StairParams, RoofParams, GableRoofParams, WallDoorParams, WallWindowParams, DoorParams, WindowParams, RampParams, RailingParams, PlateParams, MemberParams, FootingParams, PileParams, SpaceParams, CurtainWallParams, FurnishingParams, ProxyParams, PropertyType, PropertyDef, PropertySetDef, QuantityKind, QuantityDef, QuantitySetDef, MaterialLayerDef, MaterialDef, ProjectParams, SiteParams, BuildingParams, StoreyParams, IfcWorkScheduleParams, IfcWorkPlanParams, IfcTaskParams, IfcRelSequenceParams, IfcWorkCalendarParams, IfcWorkTimeParams, IfcRecurrencePatternParams, IfcTimePeriodParams, IfcWorkScheduleType, IfcTaskPredefinedType, IfcTaskDurationType, IfcRelSequenceType, IfcWorkCalendarType, IfcRecurrenceType, WorkScheduleParams, WorkPlanParams, TaskParams, SequenceParams, WorkCalendarParams, WorkTimeParams, RecurrencePatternParams, TimePeriodParams, WorkScheduleType, TaskPredefinedType, TaskDurationType, SequenceType, WorkCalendarType, RecurrenceType, CreatedEntity, CreateResult, } from './types.js';
|
|
51
|
+
export type { CostArithmeticOperator, CostItemParams, CostItemPredefinedType, CostMeasureType, CostQuantityKind, CostQuantityParams, CostScheduleParams, CostSchedulePredefinedType, CostSIUnitType, CostTypedValue, CostValueParams, SIUnitParams, } from './types-cost.js';
|
|
49
52
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -39,6 +39,8 @@ export { applyStylesInStore, collectLeafRepresentationItems, } from './in-store/
|
|
|
39
39
|
export { addRoofToStore } from './in-store/roof.js';
|
|
40
40
|
export { addPlateToStore } from './in-store/plate.js';
|
|
41
41
|
export { addMemberToStore } from './in-store/member.js';
|
|
42
|
+
export { addCostScheduleToStore, addCostItemToStore, addCostValueToStore, addCostQuantityToStore, nestCostItemsInStore, assignCostItemsToScheduleInStore, assignObjectsToCostItemInStore, attachCostValuesToItemInStore, } from './in-store/cost.js';
|
|
43
|
+
export { removeCostEntityInStore } from './in-store/cost-removal.js';
|
|
42
44
|
export { resolveSpatialAnchor } from './in-store/resolve-anchor.js';
|
|
43
45
|
export { toNativeLength, fromNativeLength } from './in-store/anchor.js';
|
|
44
46
|
export { duplicateInStore, } from './in-store/duplicate.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,yEAAyE;AACzE,0EAA0E;AAC1E,OAAO,EAAE,gBAAgB,EAAoD,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAgD,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,cAAc,EAAkG,MAAM,oBAAoB,CAAC;AACpJ,OAAO,EAAE,cAAc,EAAgD,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,cAAc,EAAgD,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAoD,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,eAAe,EAAsG,MAAM,qBAAqB,CAAC;AAC1J,OAAO,EACL,sBAAsB,EACtB,qBAAqB,GAKtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,kBAAkB,EAClB,8BAA8B,GAK/B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAkG,MAAM,oBAAoB,CAAC;AACpJ,OAAO,EAAE,eAAe,EAAsG,MAAM,qBAAqB,CAAC;AAC1J,OAAO,EAAE,gBAAgB,EAAoD,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExE,OAAO,EACL,gBAAgB,GAKjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EACL,mBAAmB,GAKpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,4BAA4B,EAC5B,+BAA+B,GAGhC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,eAAe,EACf,aAAa,EACb,eAAe,GAEhB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,0BAA0B,GAI3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,cAAc,EACd,WAAW,GAKZ,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,EAC3B,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,GAczB,MAAM,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,yEAAyE;AACzE,0EAA0E;AAC1E,OAAO,EAAE,gBAAgB,EAAoD,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAgD,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,cAAc,EAAkG,MAAM,oBAAoB,CAAC;AACpJ,OAAO,EAAE,cAAc,EAAgD,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,cAAc,EAAgD,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAoD,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,eAAe,EAAsG,MAAM,qBAAqB,CAAC;AAC1J,OAAO,EACL,sBAAsB,EACtB,qBAAqB,GAKtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,kBAAkB,EAClB,8BAA8B,GAK/B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAkG,MAAM,oBAAoB,CAAC;AACpJ,OAAO,EAAE,eAAe,EAAsG,MAAM,qBAAqB,CAAC;AAC1J,OAAO,EAAE,gBAAgB,EAAoD,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EACL,sBAAsB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,sBAAsB,EACvF,oBAAoB,EAAE,gCAAgC,EAAE,8BAA8B,EACtF,6BAA6B,GAE9B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAA6B,MAAM,4BAA4B,CAAC;AAChG,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExE,OAAO,EACL,gBAAgB,GAKjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EACL,mBAAmB,GAKpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,4BAA4B,EAC5B,+BAA+B,GAGhC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,eAAe,EACf,aAAa,EACb,eAAe,GAEhB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,0BAA0B,GAI3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,cAAc,EACd,WAAW,GAKZ,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,EAC3B,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,GAczB,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parameter types for the 5D / cost authoring API (IfcCostSchedule,
|
|
3
|
+
* IfcCostItem, IfcCostValue and the units, quantities and relationships they
|
|
4
|
+
* reference).
|
|
5
|
+
*
|
|
6
|
+
* Kept out of `types.ts` so that file stays under its recorded module-size
|
|
7
|
+
* budget (`scripts/module-size-allowlist.txt`).
|
|
8
|
+
*
|
|
9
|
+
* ABSENT IS NOT EMPTY. Every optional field here means "the source did not
|
|
10
|
+
* supply this", and is written as STEP `$`. A LIST-valued field (`CostValues`,
|
|
11
|
+
* `CostQuantities`, `Components`) is declared `[1:?]` in EXPRESS, so an EMPTY
|
|
12
|
+
* array is not a way of spelling "absent" — it is a malformed list, and the
|
|
13
|
+
* builder rejects it rather than silently degrading it to `$`. The cost read
|
|
14
|
+
* model draws the same distinction (`CostItemInfo.CostValues` is `undefined`
|
|
15
|
+
* when the attribute is absent and `[]` only when it was present and invalid),
|
|
16
|
+
* so conflating the two here would make the round trip lie.
|
|
17
|
+
*/
|
|
18
|
+
/** IfcCostScheduleTypeEnum (IFC4 / IFC4X3). */
|
|
19
|
+
export type CostSchedulePredefinedType = 'BUDGET' | 'COSTPLAN' | 'ESTIMATE' | 'TENDER' | 'PRICEDBILLOFQUANTITIES' | 'UNPRICEDBILLOFQUANTITIES' | 'SCHEDULEOFRATES' | 'USERDEFINED' | 'NOTDEFINED';
|
|
20
|
+
/** IfcCostItemTypeEnum (IFC4 / IFC4X3). */
|
|
21
|
+
export type CostItemPredefinedType = 'USERDEFINED' | 'NOTDEFINED';
|
|
22
|
+
/** IfcArithmeticOperatorEnum (MODULO is accepted only when the target schema is IFC4X3). */
|
|
23
|
+
export type CostArithmeticOperator = 'ADD' | 'DIVIDE' | 'MODULO' | 'MULTIPLY' | 'SUBTRACT';
|
|
24
|
+
/**
|
|
25
|
+
* The SELECT branch names this builder will write for a typed IFC value.
|
|
26
|
+
*
|
|
27
|
+
* `IfcCostValue.AppliedValue` is an `IfcAppliedValueSelect` and
|
|
28
|
+
* `IfcMeasureWithUnit.ValueComponent` is an `IfcValue` — both SELECTs, so STEP
|
|
29
|
+
* requires the branch to be named: `IFCMONETARYMEASURE(12.5)`, never a bare
|
|
30
|
+
* `12.5`. A bare number parses but resolves to a different SELECT branch (or
|
|
31
|
+
* to none), which is why the branch is part of the parameter rather than
|
|
32
|
+
* inferred from the number.
|
|
33
|
+
*/
|
|
34
|
+
export type CostMeasureType = 'IfcMonetaryMeasure' | 'IfcAreaMeasure' | 'IfcVolumeMeasure' | 'IfcLengthMeasure' | 'IfcMassMeasure' | 'IfcTimeMeasure' | 'IfcCountMeasure' | 'IfcNumericMeasure' | 'IfcRatioMeasure' | 'IfcReal' | 'IfcInteger';
|
|
35
|
+
/** A typed IFC measure: the SELECT branch plus its numeric value. */
|
|
36
|
+
export interface CostTypedValue {
|
|
37
|
+
Type: CostMeasureType;
|
|
38
|
+
Value: number;
|
|
39
|
+
}
|
|
40
|
+
/** IfcUnitEnum values this builder can write as an IfcSIUnit. */
|
|
41
|
+
export type CostSIUnitType = 'LENGTHUNIT' | 'AREAUNIT' | 'VOLUMEUNIT' | 'MASSUNIT' | 'TIMEUNIT';
|
|
42
|
+
/** IfcSIUnit — the unit an IfcMeasureWithUnit or an IfcPhysicalQuantity names. */
|
|
43
|
+
export interface SIUnitParams {
|
|
44
|
+
UnitType: CostSIUnitType;
|
|
45
|
+
/** IfcSIPrefix (e.g. 'MILLI', 'KILO'). Absent means the unprefixed SI unit. */
|
|
46
|
+
Prefix?: string;
|
|
47
|
+
/** IfcSIUnitName, e.g. 'SQUARE_METRE'. */
|
|
48
|
+
Name: string;
|
|
49
|
+
}
|
|
50
|
+
/** IfcCostSchedule (IfcControl). */
|
|
51
|
+
export interface CostScheduleParams {
|
|
52
|
+
Name: string;
|
|
53
|
+
Description?: string;
|
|
54
|
+
ObjectType?: string;
|
|
55
|
+
Identification?: string;
|
|
56
|
+
PredefinedType?: CostSchedulePredefinedType;
|
|
57
|
+
Status?: string;
|
|
58
|
+
/** IfcDateTime, e.g. '2026-03-01T09:00:00'. */
|
|
59
|
+
SubmittedOn?: string;
|
|
60
|
+
/** IfcDateTime. */
|
|
61
|
+
UpdateDate?: string;
|
|
62
|
+
}
|
|
63
|
+
/** IfcCostItem. */
|
|
64
|
+
export interface CostItemParams {
|
|
65
|
+
Name: string;
|
|
66
|
+
Description?: string;
|
|
67
|
+
ObjectType?: string;
|
|
68
|
+
Identification?: string;
|
|
69
|
+
PredefinedType?: CostItemPredefinedType;
|
|
70
|
+
/**
|
|
71
|
+
* expressIds of IfcCostValue / IfcAppliedValue entities, in the order they
|
|
72
|
+
* must appear. Absent (undefined) writes `$`; an empty array is rejected.
|
|
73
|
+
*/
|
|
74
|
+
CostValues?: number[];
|
|
75
|
+
/**
|
|
76
|
+
* expressIds of IfcPhysicalQuantity entities, in order. Absent writes `$`;
|
|
77
|
+
* an empty array is rejected.
|
|
78
|
+
*/
|
|
79
|
+
CostQuantities?: number[];
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* IfcCostValue.
|
|
83
|
+
*
|
|
84
|
+
* `AppliedValue` and `Components` are NOT interchangeable and this builder
|
|
85
|
+
* never derives one from the other: a value that carried a literal
|
|
86
|
+
* `AppliedValue` in the source is written with that literal and no
|
|
87
|
+
* `Components`, and a value that was the sum of its `Components` is written
|
|
88
|
+
* with `Components` and an absent `AppliedValue`. Normalising either way would
|
|
89
|
+
* change what the file says about where the number came from.
|
|
90
|
+
*/
|
|
91
|
+
export interface CostValueParams {
|
|
92
|
+
Name?: string;
|
|
93
|
+
Description?: string;
|
|
94
|
+
/** Literal typed value, written as a named SELECT branch. */
|
|
95
|
+
AppliedValue?: CostTypedValue;
|
|
96
|
+
/**
|
|
97
|
+
* expressId of an IfcMeasureWithUnit, the entity branch of
|
|
98
|
+
* IfcAppliedValueSelect. Mutually exclusive with `AppliedValue`.
|
|
99
|
+
*/
|
|
100
|
+
AppliedValueRef?: number;
|
|
101
|
+
/**
|
|
102
|
+
* expressId of an IfcMeasureWithUnit giving the basis this rate is quoted
|
|
103
|
+
* per — a rate "per 100 m²" has a UnitBasis of 100 SQUARE_METRE. It is a
|
|
104
|
+
* divisor, not a label: dropping or inventing it moves the amount by whole
|
|
105
|
+
* orders of magnitude.
|
|
106
|
+
*/
|
|
107
|
+
UnitBasis?: number;
|
|
108
|
+
/** IfcDate. */
|
|
109
|
+
ApplicableDate?: string;
|
|
110
|
+
/** IfcDate. */
|
|
111
|
+
FixedUntilDate?: string;
|
|
112
|
+
Category?: string;
|
|
113
|
+
Condition?: string;
|
|
114
|
+
ArithmeticOperator?: CostArithmeticOperator;
|
|
115
|
+
/**
|
|
116
|
+
* expressIds of the IfcAppliedValue / IfcCostValue entities this value is
|
|
117
|
+
* computed from, in order. Absent writes `$`; an empty array is rejected.
|
|
118
|
+
* Repeating an expressId shares that entity rather than copying it.
|
|
119
|
+
*/
|
|
120
|
+
Components?: number[];
|
|
121
|
+
}
|
|
122
|
+
/** The IfcPhysicalSimpleQuantity subtypes a cost item can take quantities from. */
|
|
123
|
+
export type CostQuantityKind = 'IfcQuantityLength' | 'IfcQuantityArea' | 'IfcQuantityVolume' | 'IfcQuantityWeight' | 'IfcQuantityTime' | 'IfcQuantityCount' | 'IfcQuantityNumber';
|
|
124
|
+
/** IfcPhysicalSimpleQuantity, as referenced from IfcCostItem.CostQuantities. */
|
|
125
|
+
export interface CostQuantityParams {
|
|
126
|
+
Kind: CostQuantityKind;
|
|
127
|
+
Name: string;
|
|
128
|
+
Value: number;
|
|
129
|
+
Description?: string;
|
|
130
|
+
/** expressId of the unit entity this quantity is measured in. */
|
|
131
|
+
Unit?: number;
|
|
132
|
+
Formula?: string;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=types-cost.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-cost.d.ts","sourceRoot":"","sources":["../src/types-cost.ts"],"names":[],"mappings":"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"}
|