@ifc-lite/cli 0.4.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/ask.d.ts +2 -0
- package/dist/commands/ask.d.ts.map +1 -0
- package/dist/commands/ask.js +524 -0
- package/dist/commands/ask.js.map +1 -0
- package/dist/commands/eval.d.ts.map +1 -1
- package/dist/commands/eval.js +120 -27
- package/dist/commands/eval.js.map +1 -1
- package/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +149 -11
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/mutate.d.ts +2 -0
- package/dist/commands/mutate.d.ts.map +1 -0
- package/dist/commands/mutate.js +353 -0
- package/dist/commands/mutate.js.map +1 -0
- package/dist/commands/query.d.ts.map +1 -1
- package/dist/commands/query.js +446 -79
- package/dist/commands/query.js.map +1 -1
- package/dist/commands/stats.d.ts +2 -0
- package/dist/commands/stats.d.ts.map +1 -0
- package/dist/commands/stats.js +270 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/index.js +35 -1
- package/dist/index.js.map +1 -1
- package/dist/output.d.ts +4 -0
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +13 -0
- package/dist/output.js.map +1 -1
- package/package.json +6 -5
|
@@ -0,0 +1,353 @@
|
|
|
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
|
+
* ifc-lite mutate <file.ifc> --id N --set PsetName.PropName=Value --out output.ifc
|
|
6
|
+
*
|
|
7
|
+
* Modify properties or attributes of IFC entities and save the result.
|
|
8
|
+
* Uses MutablePropertyView + StepExporter for real mutation persistence.
|
|
9
|
+
*/
|
|
10
|
+
import { writeFile } from 'node:fs/promises';
|
|
11
|
+
import { createHeadlessContext } from '../loader.js';
|
|
12
|
+
import { getFlag, getAllFlags, hasFlag, fatal, printJson } from '../output.js';
|
|
13
|
+
import { MutablePropertyView } from '@ifc-lite/mutations';
|
|
14
|
+
import { StepExporter } from '@ifc-lite/export';
|
|
15
|
+
import { extractPropertiesOnDemand } from '@ifc-lite/parser';
|
|
16
|
+
import { PropertyValueType } from '@ifc-lite/data';
|
|
17
|
+
/**
|
|
18
|
+
* Parse a --where filter string.
|
|
19
|
+
*/
|
|
20
|
+
function parseWhereFilter(filter) {
|
|
21
|
+
const dotIdx = filter.indexOf('.');
|
|
22
|
+
if (dotIdx <= 0) {
|
|
23
|
+
fatal(`Invalid --where syntax: "${filter}". Expected: PsetName.PropName[=Value]`);
|
|
24
|
+
}
|
|
25
|
+
const psetName = filter.slice(0, dotIdx);
|
|
26
|
+
const rest = filter.slice(dotIdx + 1);
|
|
27
|
+
for (const op of ['!=', '>=', '<=', '>', '<', '=', '~']) {
|
|
28
|
+
const opIdx = rest.indexOf(op);
|
|
29
|
+
if (opIdx > 0) {
|
|
30
|
+
const propName = rest.slice(0, opIdx);
|
|
31
|
+
const value = rest.slice(opIdx + op.length);
|
|
32
|
+
const mappedOp = op === '~' ? 'contains' : op;
|
|
33
|
+
return { psetName, propName, operator: mappedOp, value };
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return { psetName, propName: rest, operator: 'exists' };
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Parse a --set value. Supports two forms:
|
|
40
|
+
* "PsetName.PropName=Value" → property set mutation
|
|
41
|
+
* "AttributeName=Value" → entity attribute mutation (Name, Description, etc.)
|
|
42
|
+
*/
|
|
43
|
+
function parseSetArg(setStr) {
|
|
44
|
+
const dotIdx = setStr.indexOf('.');
|
|
45
|
+
const eqIdx = setStr.indexOf('=');
|
|
46
|
+
if (eqIdx <= 0) {
|
|
47
|
+
fatal(`Invalid --set syntax: "${setStr}". Expected: PsetName.PropName=Value or AttributeName=Value`);
|
|
48
|
+
}
|
|
49
|
+
// No dot or dot comes after '=' → attribute mutation (e.g. "Name=TestWall")
|
|
50
|
+
if (dotIdx <= 0 || dotIdx > eqIdx) {
|
|
51
|
+
const propName = setStr.slice(0, eqIdx);
|
|
52
|
+
const value = setStr.slice(eqIdx + 1);
|
|
53
|
+
return { psetName: null, propName, value, isAttribute: true };
|
|
54
|
+
}
|
|
55
|
+
// Standard pset.prop=value form
|
|
56
|
+
const psetName = setStr.slice(0, dotIdx);
|
|
57
|
+
const rest = setStr.slice(dotIdx + 1);
|
|
58
|
+
const restEqIdx = rest.indexOf('=');
|
|
59
|
+
if (restEqIdx <= 0) {
|
|
60
|
+
fatal(`Invalid --set syntax: "${setStr}". Expected: PsetName.PropName=Value`);
|
|
61
|
+
}
|
|
62
|
+
const propName = rest.slice(0, restEqIdx);
|
|
63
|
+
const value = rest.slice(restEqIdx + 1);
|
|
64
|
+
return { psetName, propName, value, isAttribute: false };
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Coerce string value to appropriate type and determine PropertyValueType.
|
|
68
|
+
*/
|
|
69
|
+
function coerceValue(value) {
|
|
70
|
+
if (value === 'true')
|
|
71
|
+
return { coerced: true, valueType: PropertyValueType.Boolean };
|
|
72
|
+
if (value === 'false')
|
|
73
|
+
return { coerced: false, valueType: PropertyValueType.Boolean };
|
|
74
|
+
const num = Number(value);
|
|
75
|
+
if (!isNaN(num) && value.trim() !== '') {
|
|
76
|
+
return {
|
|
77
|
+
coerced: num,
|
|
78
|
+
valueType: Number.isInteger(num) ? PropertyValueType.Integer : PropertyValueType.Real,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
return { coerced: value, valueType: PropertyValueType.String };
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Check if a value matches a filter operator and comparison value.
|
|
85
|
+
*/
|
|
86
|
+
function matchesFilter(actual, operator, expected) {
|
|
87
|
+
if (operator === 'exists')
|
|
88
|
+
return actual != null;
|
|
89
|
+
if (actual == null || expected == null)
|
|
90
|
+
return false;
|
|
91
|
+
const numActual = Number(actual);
|
|
92
|
+
const numExpected = Number(expected);
|
|
93
|
+
const isNumeric = !isNaN(numActual) && !isNaN(numExpected);
|
|
94
|
+
switch (operator) {
|
|
95
|
+
case '=': return isNumeric ? numActual === numExpected : String(actual) === expected;
|
|
96
|
+
case '!=': return isNumeric ? numActual !== numExpected : String(actual) !== expected;
|
|
97
|
+
case '>': return isNumeric ? numActual > numExpected : false;
|
|
98
|
+
case '<': return isNumeric ? numActual < numExpected : false;
|
|
99
|
+
case '>=': return isNumeric ? numActual >= numExpected : false;
|
|
100
|
+
case '<=': return isNumeric ? numActual <= numExpected : false;
|
|
101
|
+
case 'contains': return String(actual).toLowerCase().includes(expected.toLowerCase());
|
|
102
|
+
default: return false;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
export async function mutateCommand(args) {
|
|
106
|
+
const filePath = args.find(a => !a.startsWith('-'));
|
|
107
|
+
if (!filePath)
|
|
108
|
+
fatal('Usage: ifc-lite mutate <file.ifc> --id <N> --set PsetName.PropName=Value --out output.ifc');
|
|
109
|
+
const idStr = getFlag(args, '--id');
|
|
110
|
+
const type = getFlag(args, '--type');
|
|
111
|
+
const setStrs = getAllFlags(args, '--set');
|
|
112
|
+
const outPath = getFlag(args, '--out');
|
|
113
|
+
const propFilter = getFlag(args, '--where');
|
|
114
|
+
const jsonOutput = hasFlag(args, '--json');
|
|
115
|
+
if (setStrs.length === 0)
|
|
116
|
+
fatal('--set is required. Example: --set Pset_WallCommon.IsExternal=true or --set Name=TestWall');
|
|
117
|
+
if (!outPath)
|
|
118
|
+
fatal('--out is required. Specify output file path.');
|
|
119
|
+
const mutations = setStrs.map(s => {
|
|
120
|
+
const parsed = parseSetArg(s);
|
|
121
|
+
const { coerced, valueType } = coerceValue(parsed.value);
|
|
122
|
+
return { ...parsed, coerced, valueType };
|
|
123
|
+
});
|
|
124
|
+
// Load the store and create a BimContext for querying
|
|
125
|
+
const { bim, store } = await createHeadlessContext(filePath);
|
|
126
|
+
// Find target entities
|
|
127
|
+
let targets = [];
|
|
128
|
+
if (idStr) {
|
|
129
|
+
const expressId = parseInt(idStr, 10);
|
|
130
|
+
const entity = bim.entity({ modelId: 'default', expressId });
|
|
131
|
+
if (!entity)
|
|
132
|
+
fatal(`Entity #${expressId} not found`);
|
|
133
|
+
targets = [entity];
|
|
134
|
+
}
|
|
135
|
+
else if (type) {
|
|
136
|
+
// Auto-prefix Ifc if user omits it (e.g., "Wall" → "IfcWall")
|
|
137
|
+
const normalizedTypes = type.split(',').map(t => {
|
|
138
|
+
const trimmed = t.trim();
|
|
139
|
+
if (trimmed.startsWith('Ifc') || trimmed.startsWith('IFC') || trimmed.startsWith('ifc'))
|
|
140
|
+
return trimmed;
|
|
141
|
+
const prefixed = 'Ifc' + trimmed;
|
|
142
|
+
process.stderr.write(`Note: Auto-corrected type "${trimmed}" → "${prefixed}"\n`);
|
|
143
|
+
return prefixed;
|
|
144
|
+
});
|
|
145
|
+
let q = bim.query().byType(...normalizedTypes);
|
|
146
|
+
if (propFilter) {
|
|
147
|
+
const parsed = parseWhereFilter(propFilter);
|
|
148
|
+
// Try standard property where first
|
|
149
|
+
const filtered = q.toArray().filter((e) => {
|
|
150
|
+
// Check property sets
|
|
151
|
+
const psets = bim.properties(e.ref);
|
|
152
|
+
for (const pset of psets) {
|
|
153
|
+
if (pset.name === parsed.psetName) {
|
|
154
|
+
const prop = pset.properties?.find((p) => p.name === parsed.propName);
|
|
155
|
+
if (prop && matchesFilter(prop.value, parsed.operator, parsed.value))
|
|
156
|
+
return true;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// Fallback: check quantity sets (Qto_* aware)
|
|
160
|
+
const qsets = bim.quantities(e.ref);
|
|
161
|
+
for (const qset of qsets) {
|
|
162
|
+
if (qset.name === parsed.psetName) {
|
|
163
|
+
const qty = qset.quantities?.find((q) => q.name === parsed.propName);
|
|
164
|
+
if (qty && matchesFilter(qty.value, parsed.operator, parsed.value))
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return false;
|
|
169
|
+
});
|
|
170
|
+
targets = filtered;
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
targets = q.toArray();
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
fatal('Either --id or --type is required to select target entities.');
|
|
178
|
+
}
|
|
179
|
+
if (targets.length === 0) {
|
|
180
|
+
fatal('No entities matched the given criteria.');
|
|
181
|
+
}
|
|
182
|
+
// Create MutablePropertyView with on-demand extraction from the store
|
|
183
|
+
const mutationView = new MutablePropertyView(null, 'default');
|
|
184
|
+
mutationView.setOnDemandExtractor((entityId) => {
|
|
185
|
+
return extractPropertiesOnDemand(store, entityId);
|
|
186
|
+
});
|
|
187
|
+
// Apply mutations via the real mutation system
|
|
188
|
+
let mutatedCount = 0;
|
|
189
|
+
const attributeMutations = [];
|
|
190
|
+
for (const entity of targets) {
|
|
191
|
+
for (const mut of mutations) {
|
|
192
|
+
if (mut.isAttribute) {
|
|
193
|
+
// Attribute mutations are handled via store manipulation
|
|
194
|
+
attributeMutations.push({ entity, propName: mut.propName, value: mut.value });
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
mutationView.setProperty(entity.ref.expressId, mut.psetName, mut.propName, mut.coerced, mut.valueType);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
mutatedCount++;
|
|
201
|
+
}
|
|
202
|
+
// Export with mutations applied via StepExporter
|
|
203
|
+
const schema = store.schemaVersion ?? 'IFC4';
|
|
204
|
+
const exporter = new StepExporter(store, mutationView);
|
|
205
|
+
const result = exporter.export({
|
|
206
|
+
schema: schema,
|
|
207
|
+
applyMutations: true,
|
|
208
|
+
});
|
|
209
|
+
// Apply attribute mutations via STEP text post-processing
|
|
210
|
+
let outputContent = result.content;
|
|
211
|
+
if (attributeMutations.length > 0) {
|
|
212
|
+
outputContent = applyAttributeMutations(outputContent, attributeMutations);
|
|
213
|
+
}
|
|
214
|
+
await writeFile(outPath, outputContent, 'utf-8');
|
|
215
|
+
const mutationDescs = mutations.map(m => m.isAttribute ? m.propName : `${m.psetName}.${m.propName}`);
|
|
216
|
+
if (jsonOutput) {
|
|
217
|
+
printJson({
|
|
218
|
+
mutated: mutatedCount,
|
|
219
|
+
properties: mutationDescs.map((desc, i) => ({
|
|
220
|
+
property: desc,
|
|
221
|
+
value: mutations[i].coerced,
|
|
222
|
+
})),
|
|
223
|
+
output: outPath,
|
|
224
|
+
stats: result.stats,
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
for (const mut of mutations) {
|
|
229
|
+
const desc = mut.isAttribute ? mut.propName : `${mut.psetName}.${mut.propName}`;
|
|
230
|
+
process.stderr.write(`Mutated ${mutatedCount} entities: ${desc} = ${mut.value}\n`);
|
|
231
|
+
}
|
|
232
|
+
process.stderr.write(`Written to ${outPath} (${result.stats.entityCount} entities, ${result.stats.newEntityCount} new)\n`);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* IFC entity attribute indices (0-based positions in STEP argument list).
|
|
237
|
+
* Standard for all IfcRoot subtypes: GlobalId(0), OwnerHistory(1), Name(2), Description(3).
|
|
238
|
+
* IfcObject subtypes add ObjectType(4). Tag varies by entity type.
|
|
239
|
+
*/
|
|
240
|
+
const ATTRIBUTE_INDEX = {
|
|
241
|
+
name: 2,
|
|
242
|
+
description: 3,
|
|
243
|
+
objecttype: 4,
|
|
244
|
+
};
|
|
245
|
+
/**
|
|
246
|
+
* IFC types that have an ObjectType attribute at index 4.
|
|
247
|
+
* Only IfcObject subtypes (building elements, spatial elements) define ObjectType.
|
|
248
|
+
* Relationship types (IfcRelAggregates, etc.) and type objects do NOT.
|
|
249
|
+
*/
|
|
250
|
+
const OBJECTTYPE_TYPES = new Set([
|
|
251
|
+
'IFCWALL', 'IFCWALLSTANDARDCASE', 'IFCSLAB', 'IFCCOLUMN', 'IFCBEAM',
|
|
252
|
+
'IFCDOOR', 'IFCWINDOW', 'IFCROOF', 'IFCSTAIR', 'IFCRAILING', 'IFCMEMBER',
|
|
253
|
+
'IFCPLATE', 'IFCCOVERING', 'IFCFOOTING', 'IFCPILE', 'IFCCURTAINWALL',
|
|
254
|
+
'IFCRAMP', 'IFCSPACE', 'IFCBUILDINGELEMENTPROXY', 'IFCFURNISHINGELEMENT',
|
|
255
|
+
'IFCFLOWSEGMENT', 'IFCFLOWTERMINAL', 'IFCFLOWFITTING', 'IFCDISTRIBUTIONELEMENT',
|
|
256
|
+
'IFCOPENINGELEMENT', 'IFCSITE', 'IFCBUILDING', 'IFCBUILDINGSTOREY', 'IFCPROJECT',
|
|
257
|
+
]);
|
|
258
|
+
/**
|
|
259
|
+
* Apply attribute mutations to STEP content via text replacement.
|
|
260
|
+
* For each target entity, finds its STEP line and replaces the attribute at the known index.
|
|
261
|
+
*/
|
|
262
|
+
function applyAttributeMutations(content, mutations) {
|
|
263
|
+
// Group mutations by expressId for efficient single-pass replacement
|
|
264
|
+
const mutationsByEntity = new Map();
|
|
265
|
+
for (const m of mutations) {
|
|
266
|
+
const id = m.entity.ref.expressId;
|
|
267
|
+
const list = mutationsByEntity.get(id) ?? [];
|
|
268
|
+
list.push({ propName: m.propName, value: m.value });
|
|
269
|
+
mutationsByEntity.set(id, list);
|
|
270
|
+
}
|
|
271
|
+
const lines = content.split('\n');
|
|
272
|
+
for (let i = 0; i < lines.length; i++) {
|
|
273
|
+
const line = lines[i];
|
|
274
|
+
// Match entity lines: #123=IFCTYPE(...);
|
|
275
|
+
const match = line.match(/^#(\d+)\s*=\s*(\w+)\s*\(/);
|
|
276
|
+
if (!match)
|
|
277
|
+
continue;
|
|
278
|
+
const expressId = parseInt(match[1], 10);
|
|
279
|
+
const entityType = match[2].toUpperCase();
|
|
280
|
+
const entityMuts = mutationsByEntity.get(expressId);
|
|
281
|
+
if (!entityMuts)
|
|
282
|
+
continue;
|
|
283
|
+
// Parse the STEP argument list (handle nested parens and quoted strings)
|
|
284
|
+
const argsStart = line.indexOf('(');
|
|
285
|
+
const argsEnd = line.lastIndexOf(')');
|
|
286
|
+
if (argsStart === -1 || argsEnd === -1)
|
|
287
|
+
continue;
|
|
288
|
+
const args = splitStepArgs(line.slice(argsStart + 1, argsEnd));
|
|
289
|
+
for (const mut of entityMuts) {
|
|
290
|
+
const attrIdx = ATTRIBUTE_INDEX[mut.propName.toLowerCase()];
|
|
291
|
+
if (attrIdx !== undefined && attrIdx < args.length) {
|
|
292
|
+
// Validate ObjectType is only written to entities that define it
|
|
293
|
+
if (mut.propName.toLowerCase() === 'objecttype' && !OBJECTTYPE_TYPES.has(entityType)) {
|
|
294
|
+
process.stderr.write(`Warning: attribute "ObjectType" not applicable to ${entityType} #${expressId}, skipping\n`);
|
|
295
|
+
continue;
|
|
296
|
+
}
|
|
297
|
+
// Escape for STEP format and wrap in quotes
|
|
298
|
+
const escaped = mut.value.replace(/\\/g, '\\\\').replace(/'/g, "''");
|
|
299
|
+
args[attrIdx] = `'${escaped}'`;
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
process.stderr.write(`Warning: attribute "${mut.propName}" not recognized for entity #${expressId}\n`);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
lines[i] = line.slice(0, argsStart + 1) + args.join(',') + line.slice(argsEnd);
|
|
306
|
+
}
|
|
307
|
+
return lines.join('\n');
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Split a STEP argument string by commas, respecting nested parens and quoted strings.
|
|
311
|
+
*/
|
|
312
|
+
function splitStepArgs(argsStr) {
|
|
313
|
+
const result = [];
|
|
314
|
+
let current = '';
|
|
315
|
+
let depth = 0;
|
|
316
|
+
let inString = false;
|
|
317
|
+
for (let i = 0; i < argsStr.length; i++) {
|
|
318
|
+
const ch = argsStr[i];
|
|
319
|
+
if (inString) {
|
|
320
|
+
current += ch;
|
|
321
|
+
if (ch === "'" && argsStr[i + 1] === "'") {
|
|
322
|
+
current += "'";
|
|
323
|
+
i++; // skip escaped quote
|
|
324
|
+
}
|
|
325
|
+
else if (ch === "'") {
|
|
326
|
+
inString = false;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
else if (ch === "'") {
|
|
330
|
+
inString = true;
|
|
331
|
+
current += ch;
|
|
332
|
+
}
|
|
333
|
+
else if (ch === '(') {
|
|
334
|
+
depth++;
|
|
335
|
+
current += ch;
|
|
336
|
+
}
|
|
337
|
+
else if (ch === ')') {
|
|
338
|
+
depth--;
|
|
339
|
+
current += ch;
|
|
340
|
+
}
|
|
341
|
+
else if (ch === ',' && depth === 0) {
|
|
342
|
+
result.push(current);
|
|
343
|
+
current = '';
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
current += ch;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
if (current)
|
|
350
|
+
result.push(current);
|
|
351
|
+
return result;
|
|
352
|
+
}
|
|
353
|
+
//# sourceMappingURL=mutate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutate.js","sourceRoot":"","sources":["../../src/commands/mutate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":"AA2LA,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmdhE"}
|