@ifc-lite/cli 0.2.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/LICENSE +373 -0
- package/dist/commands/bcf.d.ts +2 -0
- package/dist/commands/bcf.d.ts.map +1 -0
- package/dist/commands/bcf.js +78 -0
- package/dist/commands/bcf.js.map +1 -0
- package/dist/commands/bsdd.d.ts +2 -0
- package/dist/commands/bsdd.d.ts.map +1 -0
- package/dist/commands/bsdd.js +73 -0
- package/dist/commands/bsdd.js.map +1 -0
- package/dist/commands/convert.d.ts +2 -0
- package/dist/commands/convert.d.ts.map +1 -0
- package/dist/commands/convert.js +49 -0
- package/dist/commands/convert.js.map +1 -0
- package/dist/commands/create.d.ts +2 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +430 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/diff.d.ts +2 -0
- package/dist/commands/diff.d.ts.map +1 -0
- package/dist/commands/diff.js +106 -0
- package/dist/commands/diff.js.map +1 -0
- package/dist/commands/eval.d.ts +2 -0
- package/dist/commands/eval.d.ts.map +1 -0
- package/dist/commands/eval.js +47 -0
- package/dist/commands/eval.js.map +1 -0
- package/dist/commands/export.d.ts +2 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +62 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/ids.d.ts +2 -0
- package/dist/commands/ids.d.ts.map +1 -0
- package/dist/commands/ids.js +187 -0
- package/dist/commands/ids.js.map +1 -0
- package/dist/commands/info.d.ts +2 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +77 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/merge.d.ts +2 -0
- package/dist/commands/merge.d.ts.map +1 -0
- package/dist/commands/merge.js +60 -0
- package/dist/commands/merge.js.map +1 -0
- package/dist/commands/props.d.ts +2 -0
- package/dist/commands/props.d.ts.map +1 -0
- package/dist/commands/props.js +40 -0
- package/dist/commands/props.js.map +1 -0
- package/dist/commands/query.d.ts +2 -0
- package/dist/commands/query.d.ts.map +1 -0
- package/dist/commands/query.js +124 -0
- package/dist/commands/query.js.map +1 -0
- package/dist/commands/run.d.ts +2 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +43 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/schema.d.ts +2 -0
- package/dist/commands/schema.d.ts.map +1 -0
- package/dist/commands/schema.js +107 -0
- package/dist/commands/schema.js.map +1 -0
- package/dist/commands/validate.d.ts +2 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +111 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/headless-backend.d.ts +36 -0
- package/dist/headless-backend.d.ts.map +1 -0
- package/dist/headless-backend.js +441 -0
- package/dist/headless-backend.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +174 -0
- package/dist/index.js.map +1 -0
- package/dist/loader.d.ts +15 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +46 -0
- package/dist/loader.js.map +1 -0
- package/dist/output.d.ts +30 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +90 -0
- package/dist/output.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
import { EntityNode } from '@ifc-lite/query';
|
|
5
|
+
import { RelationshipType, IfcTypeEnum, IfcTypeEnumFromString } from '@ifc-lite/data';
|
|
6
|
+
import { extractAllEntityAttributes, extractClassificationsOnDemand, extractMaterialsOnDemand, extractTypePropertiesOnDemand, extractDocumentsOnDemand, extractRelationshipsOnDemand, } from '@ifc-lite/parser';
|
|
7
|
+
import { exportToStep } from '@ifc-lite/export';
|
|
8
|
+
const MODEL_ID = 'default';
|
|
9
|
+
const REL_TYPE_MAP = {
|
|
10
|
+
IfcRelContainedInSpatialStructure: RelationshipType.ContainsElements,
|
|
11
|
+
IfcRelAggregates: RelationshipType.Aggregates,
|
|
12
|
+
IfcRelDefinesByType: RelationshipType.DefinesByType,
|
|
13
|
+
IfcRelVoidsElement: RelationshipType.VoidsElement,
|
|
14
|
+
IfcRelFillsElement: RelationshipType.FillsElement,
|
|
15
|
+
};
|
|
16
|
+
const IFC_SUBTYPES = {
|
|
17
|
+
IFCWALL: ['IFCWALLSTANDARDCASE', 'IFCWALLELEMENTEDCASE'],
|
|
18
|
+
IFCBEAM: ['IFCBEAMSTANDARDCASE'],
|
|
19
|
+
IFCCOLUMN: ['IFCCOLUMNSTANDARDCASE'],
|
|
20
|
+
IFCDOOR: ['IFCDOORSTANDARDCASE'],
|
|
21
|
+
IFCWINDOW: ['IFCWINDOWSTANDARDCASE'],
|
|
22
|
+
IFCSLAB: ['IFCSLABSTANDARDCASE', 'IFCSLABELEMENTEDCASE'],
|
|
23
|
+
IFCMEMBER: ['IFCMEMBERSTANDARDCASE'],
|
|
24
|
+
IFCPLATE: ['IFCPLATESTANDARDCASE'],
|
|
25
|
+
IFCOPENINGELEMENT: ['IFCOPENINGSTANDARDCASE'],
|
|
26
|
+
};
|
|
27
|
+
function expandTypes(types) {
|
|
28
|
+
const result = [];
|
|
29
|
+
for (const type of types) {
|
|
30
|
+
const upper = type.toUpperCase();
|
|
31
|
+
result.push(upper);
|
|
32
|
+
const subtypes = IFC_SUBTYPES[upper];
|
|
33
|
+
if (subtypes) {
|
|
34
|
+
for (const sub of subtypes)
|
|
35
|
+
result.push(sub);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return result;
|
|
39
|
+
}
|
|
40
|
+
function isProductType(type) {
|
|
41
|
+
const enumVal = IfcTypeEnumFromString(type);
|
|
42
|
+
if (enumVal === IfcTypeEnum.Unknown)
|
|
43
|
+
return false;
|
|
44
|
+
const upper = type.toUpperCase();
|
|
45
|
+
if (upper.startsWith('IFCREL'))
|
|
46
|
+
return false;
|
|
47
|
+
if (upper.startsWith('IFCPROPERTY'))
|
|
48
|
+
return false;
|
|
49
|
+
if (upper.startsWith('IFCQUANTITY'))
|
|
50
|
+
return false;
|
|
51
|
+
if (upper === 'IFCELEMENTQUANTITY')
|
|
52
|
+
return false;
|
|
53
|
+
if (upper.endsWith('TYPE'))
|
|
54
|
+
return false;
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
function normalizePropertyValue(value) {
|
|
58
|
+
if (value == null)
|
|
59
|
+
return null;
|
|
60
|
+
if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
|
|
61
|
+
return value;
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
return JSON.stringify(value);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return String(value);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export class HeadlessBackend {
|
|
71
|
+
model;
|
|
72
|
+
query;
|
|
73
|
+
selection;
|
|
74
|
+
visibility;
|
|
75
|
+
viewer;
|
|
76
|
+
mutate;
|
|
77
|
+
spatial;
|
|
78
|
+
export;
|
|
79
|
+
lens;
|
|
80
|
+
files;
|
|
81
|
+
store;
|
|
82
|
+
modelName;
|
|
83
|
+
constructor(store, modelName) {
|
|
84
|
+
this.store = store;
|
|
85
|
+
this.modelName = modelName;
|
|
86
|
+
this.model = this.createModelAdapter();
|
|
87
|
+
this.query = this.createQueryAdapter();
|
|
88
|
+
this.selection = this.createSelectionAdapter();
|
|
89
|
+
this.visibility = this.createVisibilityAdapter();
|
|
90
|
+
this.viewer = this.createViewerAdapter();
|
|
91
|
+
this.mutate = this.createMutateAdapter();
|
|
92
|
+
this.spatial = this.createSpatialAdapter();
|
|
93
|
+
this.export = this.createExportAdapter();
|
|
94
|
+
this.lens = this.createLensAdapter();
|
|
95
|
+
this.files = this.createFilesAdapter();
|
|
96
|
+
}
|
|
97
|
+
subscribe(_event, _handler) {
|
|
98
|
+
return () => { };
|
|
99
|
+
}
|
|
100
|
+
createModelAdapter() {
|
|
101
|
+
const store = this.store;
|
|
102
|
+
const name = this.modelName;
|
|
103
|
+
return {
|
|
104
|
+
list() {
|
|
105
|
+
return [{
|
|
106
|
+
id: MODEL_ID,
|
|
107
|
+
name,
|
|
108
|
+
schemaVersion: store.schemaVersion,
|
|
109
|
+
entityCount: store.entityCount,
|
|
110
|
+
fileSize: store.fileSize,
|
|
111
|
+
loadedAt: Date.now(),
|
|
112
|
+
}];
|
|
113
|
+
},
|
|
114
|
+
activeId() { return MODEL_ID; },
|
|
115
|
+
loadIfc() { },
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
createQueryAdapter() {
|
|
119
|
+
const store = this.store;
|
|
120
|
+
function getEntityData(ref) {
|
|
121
|
+
const node = new EntityNode(store, ref.expressId);
|
|
122
|
+
const type = node.type;
|
|
123
|
+
if (!type)
|
|
124
|
+
return null;
|
|
125
|
+
return {
|
|
126
|
+
ref,
|
|
127
|
+
globalId: node.globalId,
|
|
128
|
+
name: node.name,
|
|
129
|
+
type,
|
|
130
|
+
description: node.description,
|
|
131
|
+
objectType: node.objectType,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
function getProperties(ref) {
|
|
135
|
+
const node = new EntityNode(store, ref.expressId);
|
|
136
|
+
return node.properties().map((pset) => ({
|
|
137
|
+
name: pset.name,
|
|
138
|
+
globalId: pset.globalId,
|
|
139
|
+
properties: pset.properties.map((p) => ({
|
|
140
|
+
name: p.name,
|
|
141
|
+
type: p.type,
|
|
142
|
+
value: p.value,
|
|
143
|
+
})),
|
|
144
|
+
}));
|
|
145
|
+
}
|
|
146
|
+
function getQuantities(ref) {
|
|
147
|
+
const node = new EntityNode(store, ref.expressId);
|
|
148
|
+
return node.quantities().map(qset => ({
|
|
149
|
+
name: qset.name,
|
|
150
|
+
quantities: qset.quantities.map(q => ({
|
|
151
|
+
name: q.name,
|
|
152
|
+
type: q.type,
|
|
153
|
+
value: q.value,
|
|
154
|
+
})),
|
|
155
|
+
}));
|
|
156
|
+
}
|
|
157
|
+
return {
|
|
158
|
+
entities(descriptor) {
|
|
159
|
+
const results = [];
|
|
160
|
+
let entityIds;
|
|
161
|
+
if (descriptor.types && descriptor.types.length > 0) {
|
|
162
|
+
entityIds = [];
|
|
163
|
+
for (const type of expandTypes(descriptor.types)) {
|
|
164
|
+
const typeIds = store.entityIndex.byType.get(type) ?? [];
|
|
165
|
+
for (const id of typeIds)
|
|
166
|
+
entityIds.push(id);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
entityIds = [];
|
|
171
|
+
for (const [typeName, ids] of store.entityIndex.byType) {
|
|
172
|
+
if (isProductType(typeName)) {
|
|
173
|
+
for (const id of ids)
|
|
174
|
+
entityIds.push(id);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
for (const expressId of entityIds) {
|
|
179
|
+
if (expressId === 0)
|
|
180
|
+
continue;
|
|
181
|
+
const node = new EntityNode(store, expressId);
|
|
182
|
+
results.push({
|
|
183
|
+
ref: { modelId: MODEL_ID, expressId },
|
|
184
|
+
globalId: node.globalId,
|
|
185
|
+
name: node.name,
|
|
186
|
+
type: node.type,
|
|
187
|
+
description: node.description,
|
|
188
|
+
objectType: node.objectType,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
let filtered = results;
|
|
192
|
+
if (descriptor.filters && descriptor.filters.length > 0) {
|
|
193
|
+
const propsCache = new Map();
|
|
194
|
+
const getCachedProps = (ref) => {
|
|
195
|
+
let cached = propsCache.get(ref.expressId);
|
|
196
|
+
if (!cached) {
|
|
197
|
+
cached = getProperties(ref);
|
|
198
|
+
propsCache.set(ref.expressId, cached);
|
|
199
|
+
}
|
|
200
|
+
return cached;
|
|
201
|
+
};
|
|
202
|
+
for (const filter of descriptor.filters) {
|
|
203
|
+
filtered = filtered.filter(entity => {
|
|
204
|
+
const props = getCachedProps(entity.ref);
|
|
205
|
+
const pset = props.find(p => p.name === filter.psetName);
|
|
206
|
+
if (!pset)
|
|
207
|
+
return false;
|
|
208
|
+
const prop = pset.properties.find(p => p.name === filter.propName);
|
|
209
|
+
if (!prop)
|
|
210
|
+
return false;
|
|
211
|
+
if (filter.operator === 'exists')
|
|
212
|
+
return true;
|
|
213
|
+
const val = prop.value;
|
|
214
|
+
switch (filter.operator) {
|
|
215
|
+
case '=': return String(val) === String(filter.value);
|
|
216
|
+
case '!=': return String(val) !== String(filter.value);
|
|
217
|
+
case '>': return Number(val) > Number(filter.value);
|
|
218
|
+
case '<': return Number(val) < Number(filter.value);
|
|
219
|
+
case '>=': return Number(val) >= Number(filter.value);
|
|
220
|
+
case '<=': return Number(val) <= Number(filter.value);
|
|
221
|
+
case 'contains': return String(val).includes(String(filter.value));
|
|
222
|
+
default: return false;
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
if (descriptor.offset != null && descriptor.offset > 0)
|
|
228
|
+
filtered = filtered.slice(descriptor.offset);
|
|
229
|
+
if (descriptor.limit != null && descriptor.limit > 0)
|
|
230
|
+
filtered = filtered.slice(0, descriptor.limit);
|
|
231
|
+
return filtered;
|
|
232
|
+
},
|
|
233
|
+
entityData: getEntityData,
|
|
234
|
+
attributes(ref) {
|
|
235
|
+
return extractAllEntityAttributes(store, ref.expressId);
|
|
236
|
+
},
|
|
237
|
+
properties: getProperties,
|
|
238
|
+
quantities: getQuantities,
|
|
239
|
+
classifications(ref) {
|
|
240
|
+
return extractClassificationsOnDemand(store, ref.expressId);
|
|
241
|
+
},
|
|
242
|
+
materials(ref) {
|
|
243
|
+
return extractMaterialsOnDemand(store, ref.expressId);
|
|
244
|
+
},
|
|
245
|
+
typeProperties(ref) {
|
|
246
|
+
const info = extractTypePropertiesOnDemand(store, ref.expressId);
|
|
247
|
+
if (!info)
|
|
248
|
+
return null;
|
|
249
|
+
return {
|
|
250
|
+
typeName: info.typeName,
|
|
251
|
+
typeId: info.typeId,
|
|
252
|
+
properties: info.properties.map((pset) => ({
|
|
253
|
+
name: pset.name,
|
|
254
|
+
globalId: pset.globalId,
|
|
255
|
+
properties: pset.properties.map((prop) => ({
|
|
256
|
+
name: prop.name,
|
|
257
|
+
type: prop.type,
|
|
258
|
+
value: normalizePropertyValue(prop.value),
|
|
259
|
+
})),
|
|
260
|
+
})),
|
|
261
|
+
};
|
|
262
|
+
},
|
|
263
|
+
documents(ref) {
|
|
264
|
+
return extractDocumentsOnDemand(store, ref.expressId);
|
|
265
|
+
},
|
|
266
|
+
relationships(ref) {
|
|
267
|
+
return extractRelationshipsOnDemand(store, ref.expressId);
|
|
268
|
+
},
|
|
269
|
+
related(ref, relType, direction) {
|
|
270
|
+
const relEnum = REL_TYPE_MAP[relType];
|
|
271
|
+
if (relEnum === undefined)
|
|
272
|
+
return [];
|
|
273
|
+
const targets = store.relationships.getRelated(ref.expressId, relEnum, direction);
|
|
274
|
+
return targets.map((expressId) => ({ modelId: ref.modelId, expressId }));
|
|
275
|
+
},
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
createSelectionAdapter() {
|
|
279
|
+
let selection = [];
|
|
280
|
+
return {
|
|
281
|
+
get() { return selection; },
|
|
282
|
+
set(refs) { selection = refs; },
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
createVisibilityAdapter() {
|
|
286
|
+
return {
|
|
287
|
+
hide() { },
|
|
288
|
+
show() { },
|
|
289
|
+
isolate() { },
|
|
290
|
+
reset() { },
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
createViewerAdapter() {
|
|
294
|
+
return {
|
|
295
|
+
colorize() { },
|
|
296
|
+
colorizeAll() { },
|
|
297
|
+
resetColors() { },
|
|
298
|
+
flyTo() { },
|
|
299
|
+
setSection() { },
|
|
300
|
+
getSection() { return null; },
|
|
301
|
+
setCamera() { },
|
|
302
|
+
getCamera() { return { mode: 'perspective' }; },
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
createMutateAdapter() {
|
|
306
|
+
return {
|
|
307
|
+
setProperty() { },
|
|
308
|
+
setAttribute() { },
|
|
309
|
+
deleteProperty() { },
|
|
310
|
+
batchBegin() { },
|
|
311
|
+
batchEnd() { },
|
|
312
|
+
undo() { return false; },
|
|
313
|
+
redo() { return false; },
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
createSpatialAdapter() {
|
|
317
|
+
return {
|
|
318
|
+
queryBounds() { return []; },
|
|
319
|
+
raycast() { return []; },
|
|
320
|
+
queryFrustum() { return []; },
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
createExportAdapter() {
|
|
324
|
+
const store = this.store;
|
|
325
|
+
const queryAdapter = this.query;
|
|
326
|
+
function escapeCsv(value, sep) {
|
|
327
|
+
if (value.includes(sep) || value.includes('"') || value.includes('\n')) {
|
|
328
|
+
return `"${value.replace(/"/g, '""')}"`;
|
|
329
|
+
}
|
|
330
|
+
return value;
|
|
331
|
+
}
|
|
332
|
+
function resolveColumn(data, col, props, qsets) {
|
|
333
|
+
if (col === 'Name' || col === 'name')
|
|
334
|
+
return data.name;
|
|
335
|
+
if (col === 'Type' || col === 'type')
|
|
336
|
+
return data.type;
|
|
337
|
+
if (col === 'GlobalId' || col === 'globalId')
|
|
338
|
+
return data.globalId;
|
|
339
|
+
if (col === 'Description' || col === 'description')
|
|
340
|
+
return data.description;
|
|
341
|
+
if (col === 'ObjectType' || col === 'objectType')
|
|
342
|
+
return data.objectType;
|
|
343
|
+
const dotIdx = col.indexOf('.');
|
|
344
|
+
if (dotIdx > 0) {
|
|
345
|
+
const setName = col.slice(0, dotIdx);
|
|
346
|
+
const valueName = col.slice(dotIdx + 1);
|
|
347
|
+
if (props) {
|
|
348
|
+
const pset = props.find(p => p.name === setName);
|
|
349
|
+
if (pset) {
|
|
350
|
+
const prop = pset.properties.find(p => p.name === valueName);
|
|
351
|
+
if (prop?.value != null)
|
|
352
|
+
return String(prop.value);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
if (qsets) {
|
|
356
|
+
const qset = qsets.find(q => q.name === setName);
|
|
357
|
+
if (qset) {
|
|
358
|
+
const qty = qset.quantities.find(q => q.name === valueName);
|
|
359
|
+
if (qty?.value != null)
|
|
360
|
+
return String(qty.value);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
return '';
|
|
365
|
+
}
|
|
366
|
+
return {
|
|
367
|
+
csv(refs, options) {
|
|
368
|
+
const entityRefs = refs;
|
|
369
|
+
const opts = options;
|
|
370
|
+
const columns = opts.columns;
|
|
371
|
+
const sep = opts.separator ?? ',';
|
|
372
|
+
const hasDotColumns = columns.some(c => c.indexOf('.') > 0);
|
|
373
|
+
const rows = [columns];
|
|
374
|
+
for (const ref of entityRefs) {
|
|
375
|
+
const data = queryAdapter.entityData(ref);
|
|
376
|
+
if (!data)
|
|
377
|
+
continue;
|
|
378
|
+
const props = hasDotColumns ? queryAdapter.properties(ref) : null;
|
|
379
|
+
const qsets = hasDotColumns ? queryAdapter.quantities(ref) : null;
|
|
380
|
+
rows.push(columns.map(col => resolveColumn(data, col, props, qsets)));
|
|
381
|
+
}
|
|
382
|
+
return rows.map(r => r.map(cell => escapeCsv(cell, sep)).join(sep)).join('\n');
|
|
383
|
+
},
|
|
384
|
+
json(refs, columns) {
|
|
385
|
+
const entityRefs = refs;
|
|
386
|
+
const cols = columns;
|
|
387
|
+
const hasDotColumns = cols.some(c => c.indexOf('.') > 0);
|
|
388
|
+
const result = [];
|
|
389
|
+
for (const ref of entityRefs) {
|
|
390
|
+
const data = queryAdapter.entityData(ref);
|
|
391
|
+
if (!data)
|
|
392
|
+
continue;
|
|
393
|
+
const props = hasDotColumns ? queryAdapter.properties(ref) : null;
|
|
394
|
+
const qsets = hasDotColumns ? queryAdapter.quantities(ref) : null;
|
|
395
|
+
const row = {};
|
|
396
|
+
for (const col of cols) {
|
|
397
|
+
const val = resolveColumn(data, col, props, qsets);
|
|
398
|
+
row[col] = val || null;
|
|
399
|
+
}
|
|
400
|
+
result.push(row);
|
|
401
|
+
}
|
|
402
|
+
return result;
|
|
403
|
+
},
|
|
404
|
+
ifc(refs, options) {
|
|
405
|
+
const entityRefs = refs;
|
|
406
|
+
const opts = (options ?? {});
|
|
407
|
+
const schema = opts.schema ?? store.schemaVersion ?? 'IFC4';
|
|
408
|
+
// If refs are provided, filter export to only those entities
|
|
409
|
+
const exportOpts = { schema };
|
|
410
|
+
if (entityRefs && entityRefs.length > 0) {
|
|
411
|
+
const isolatedIds = new Set(entityRefs.map(r => r.expressId));
|
|
412
|
+
exportOpts.visibleOnly = true;
|
|
413
|
+
exportOpts.isolatedEntityIds = isolatedIds;
|
|
414
|
+
exportOpts.hiddenEntityIds = new Set();
|
|
415
|
+
}
|
|
416
|
+
return exportToStep(store, exportOpts);
|
|
417
|
+
},
|
|
418
|
+
download(_content, _filename, _mimeType) {
|
|
419
|
+
/* no-op — CLI writes to stdout/file directly */
|
|
420
|
+
},
|
|
421
|
+
};
|
|
422
|
+
}
|
|
423
|
+
createLensAdapter() {
|
|
424
|
+
return {
|
|
425
|
+
presets() { return []; },
|
|
426
|
+
create() { return null; },
|
|
427
|
+
activate() { },
|
|
428
|
+
deactivate() { },
|
|
429
|
+
getActive() { return null; },
|
|
430
|
+
};
|
|
431
|
+
}
|
|
432
|
+
createFilesAdapter() {
|
|
433
|
+
return {
|
|
434
|
+
list() { return []; },
|
|
435
|
+
text() { return null; },
|
|
436
|
+
csv() { return null; },
|
|
437
|
+
csvColumns() { return []; },
|
|
438
|
+
};
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
//# sourceMappingURL=headless-backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headless-backend.js","sourceRoot":"","sources":["../src/headless-backend.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
3
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
4
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
5
|
+
/**
|
|
6
|
+
* ifc-lite CLI — BIM toolkit for the terminal
|
|
7
|
+
*
|
|
8
|
+
* Query, validate, export, create, merge, convert, diff, and script IFC files
|
|
9
|
+
* from the command line. Designed for both humans and LLM terminals.
|
|
10
|
+
*/
|
|
11
|
+
import { infoCommand } from './commands/info.js';
|
|
12
|
+
import { queryCommand } from './commands/query.js';
|
|
13
|
+
import { propsCommand } from './commands/props.js';
|
|
14
|
+
import { exportCommand } from './commands/export.js';
|
|
15
|
+
import { idsCommand } from './commands/ids.js';
|
|
16
|
+
import { bcfCommand } from './commands/bcf.js';
|
|
17
|
+
import { createCommand } from './commands/create.js';
|
|
18
|
+
import { evalCommand } from './commands/eval.js';
|
|
19
|
+
import { runCommand } from './commands/run.js';
|
|
20
|
+
import { schemaCommand } from './commands/schema.js';
|
|
21
|
+
import { mergeCommand } from './commands/merge.js';
|
|
22
|
+
import { convertCommand } from './commands/convert.js';
|
|
23
|
+
import { diffCommand } from './commands/diff.js';
|
|
24
|
+
import { validateCommand } from './commands/validate.js';
|
|
25
|
+
import { bsddCommand } from './commands/bsdd.js';
|
|
26
|
+
const VERSION = '0.1.0';
|
|
27
|
+
const HELP = `
|
|
28
|
+
ifc-lite — BIM toolkit for the terminal
|
|
29
|
+
|
|
30
|
+
Usage: ifc-lite <command> [options]
|
|
31
|
+
|
|
32
|
+
Commands:
|
|
33
|
+
info <file.ifc> Model summary (schema, entities, storeys)
|
|
34
|
+
query <file.ifc> [--type T] [--json] Query entities by type/properties
|
|
35
|
+
props <file.ifc> --id <N> All properties for a single entity
|
|
36
|
+
export <file.ifc> --format csv|json|ifc Export data to file or stdout
|
|
37
|
+
ids <file.ifc> <rules.ids> Validate against IDS rules
|
|
38
|
+
bcf <create|list|add-comment> Work with BCF collaboration files
|
|
39
|
+
create <type> [options] --out F Create IFC elements (30+ types)
|
|
40
|
+
eval <file.ifc> "<expression>" Evaluate SDK expression
|
|
41
|
+
run <script.js> <file.ifc> Execute a script against model
|
|
42
|
+
schema Dump SDK API schema (for LLM tools)
|
|
43
|
+
merge <f1.ifc> <f2.ifc> --out F Merge multiple IFC files
|
|
44
|
+
convert <file.ifc> --schema VER --out F Convert between IFC schema versions
|
|
45
|
+
diff <f1.ifc> <f2.ifc> Compare two IFC files
|
|
46
|
+
validate <file.ifc> Structural validation checks
|
|
47
|
+
bsdd <class|search|psets|qsets> <arg> buildingSMART Data Dictionary lookup
|
|
48
|
+
|
|
49
|
+
Options:
|
|
50
|
+
--help, -h Show help
|
|
51
|
+
--version, -v Show version
|
|
52
|
+
--json Output as JSON (machine-readable)
|
|
53
|
+
--out <file> Write output to file instead of stdout
|
|
54
|
+
|
|
55
|
+
Examples:
|
|
56
|
+
ifc-lite info model.ifc
|
|
57
|
+
ifc-lite query model.ifc --type IfcWall --json
|
|
58
|
+
ifc-lite query model.ifc --type IfcDoor --props --limit 5
|
|
59
|
+
ifc-lite query model.ifc --type IfcWall --materials --classifications --json
|
|
60
|
+
ifc-lite query model.ifc --type IfcWall --all --json
|
|
61
|
+
ifc-lite query model.ifc --spatial
|
|
62
|
+
ifc-lite props model.ifc --id 42
|
|
63
|
+
ifc-lite export model.ifc --format csv --type IfcWall --columns Name,Type,GlobalId
|
|
64
|
+
ifc-lite export model.ifc --format json --type IfcWall,IfcDoor
|
|
65
|
+
ifc-lite ids model.ifc requirements.ids --json
|
|
66
|
+
ifc-lite bcf create --title "Missing door" --out issue.bcf
|
|
67
|
+
ifc-lite create wall --height 3 --thickness 0.2 --start 0,0,0 --end 5,0,0 --out wall.ifc
|
|
68
|
+
ifc-lite create stair --number-of-risers 12 --riser-height 0.175 --width 1.2 --out stair.ifc
|
|
69
|
+
ifc-lite create door --width 0.9 --height 2.1 --position 0,0,0 --out door.ifc
|
|
70
|
+
ifc-lite create i-shape-beam --start 0,0,3 --end 5,0,3 --out beam.ifc
|
|
71
|
+
ifc-lite create wall --from-json --out w.ifc < params.json
|
|
72
|
+
ifc-lite create wall --pset '{"Name":"Pset_WallCommon","Properties":[{"Name":"IsExternal","NominalValue":true}]}' --out w.ifc
|
|
73
|
+
ifc-lite create wall --material '{"Name":"Concrete","Category":"Structural"}' --out w.ifc
|
|
74
|
+
ifc-lite create wall --color 0.8,0.2,0.2 --out w.ifc
|
|
75
|
+
ifc-lite eval model.ifc "bim.query().byType('IfcWall').count()"
|
|
76
|
+
ifc-lite eval model.ifc "bim.storeys().map(s => s.name)"
|
|
77
|
+
ifc-lite run analysis.js model.ifc
|
|
78
|
+
ifc-lite schema
|
|
79
|
+
ifc-lite schema --compact
|
|
80
|
+
ifc-lite merge arch.ifc struct.ifc mep.ifc --out federated.ifc
|
|
81
|
+
ifc-lite convert model.ifc --schema IFC4 --out model-ifc4.ifc
|
|
82
|
+
ifc-lite diff model-v1.ifc model-v2.ifc --json
|
|
83
|
+
ifc-lite diff model-v1.ifc model-v2.ifc --by-entity
|
|
84
|
+
ifc-lite validate model.ifc --json
|
|
85
|
+
ifc-lite bsdd class IfcWall
|
|
86
|
+
ifc-lite bsdd search "concrete wall"
|
|
87
|
+
ifc-lite bsdd psets IfcWall
|
|
88
|
+
|
|
89
|
+
Pipe-friendly:
|
|
90
|
+
ifc-lite query model.ifc --type IfcWall --json | jq '.[].name'
|
|
91
|
+
ifc-lite export model.ifc --format csv --type IfcSlab > slabs.csv
|
|
92
|
+
echo '{"Start":[0,0,0],"End":[10,0,0],"Height":3}' | ifc-lite create wall --from-json --out w.ifc
|
|
93
|
+
|
|
94
|
+
Create element types:
|
|
95
|
+
wall, slab, column, beam, stair, roof, gable-roof, door, window,
|
|
96
|
+
wall-door, wall-window, ramp, railing, plate, member, footing, pile,
|
|
97
|
+
space, curtain-wall, furnishing, proxy, circular-column,
|
|
98
|
+
hollow-circular-column, i-shape-beam, l-shape-member, t-shape-member,
|
|
99
|
+
u-shape-member, rectangle-hollow-beam
|
|
100
|
+
|
|
101
|
+
Learn more: https://ifclite.com
|
|
102
|
+
`;
|
|
103
|
+
async function main() {
|
|
104
|
+
const args = process.argv.slice(2);
|
|
105
|
+
if (args.length === 0 || args.includes('--help') || args.includes('-h')) {
|
|
106
|
+
process.stdout.write(HELP + '\n');
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (args.includes('--version') || args.includes('-v')) {
|
|
110
|
+
process.stdout.write(`ifc-lite ${VERSION}\n`);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const command = args[0];
|
|
114
|
+
const commandArgs = args.slice(1);
|
|
115
|
+
switch (command) {
|
|
116
|
+
case 'info':
|
|
117
|
+
await infoCommand(commandArgs);
|
|
118
|
+
break;
|
|
119
|
+
case 'query':
|
|
120
|
+
await queryCommand(commandArgs);
|
|
121
|
+
break;
|
|
122
|
+
case 'props':
|
|
123
|
+
await propsCommand(commandArgs);
|
|
124
|
+
break;
|
|
125
|
+
case 'export':
|
|
126
|
+
await exportCommand(commandArgs);
|
|
127
|
+
break;
|
|
128
|
+
case 'ids':
|
|
129
|
+
await idsCommand(commandArgs);
|
|
130
|
+
break;
|
|
131
|
+
case 'bcf':
|
|
132
|
+
await bcfCommand(commandArgs);
|
|
133
|
+
break;
|
|
134
|
+
case 'create':
|
|
135
|
+
await createCommand(commandArgs);
|
|
136
|
+
break;
|
|
137
|
+
case 'eval':
|
|
138
|
+
await evalCommand(commandArgs);
|
|
139
|
+
break;
|
|
140
|
+
case 'run':
|
|
141
|
+
await runCommand(commandArgs);
|
|
142
|
+
break;
|
|
143
|
+
case 'schema':
|
|
144
|
+
await schemaCommand(commandArgs);
|
|
145
|
+
break;
|
|
146
|
+
case 'merge':
|
|
147
|
+
await mergeCommand(commandArgs);
|
|
148
|
+
break;
|
|
149
|
+
case 'convert':
|
|
150
|
+
await convertCommand(commandArgs);
|
|
151
|
+
break;
|
|
152
|
+
case 'diff':
|
|
153
|
+
await diffCommand(commandArgs);
|
|
154
|
+
break;
|
|
155
|
+
case 'validate':
|
|
156
|
+
await validateCommand(commandArgs);
|
|
157
|
+
break;
|
|
158
|
+
case 'bsdd':
|
|
159
|
+
await bsddCommand(commandArgs);
|
|
160
|
+
break;
|
|
161
|
+
default:
|
|
162
|
+
process.stderr.write(`Unknown command: ${command}\n`);
|
|
163
|
+
process.stderr.write(`Run 'ifc-lite --help' for usage.\n`);
|
|
164
|
+
process.exit(1);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
main().catch((err) => {
|
|
168
|
+
process.stderr.write(`Error: ${err.message}\n`);
|
|
169
|
+
if (process.env.DEBUG) {
|
|
170
|
+
process.stderr.write(err.stack ?? '' + '\n');
|
|
171
|
+
}
|
|
172
|
+
process.exit(1);
|
|
173
|
+
});
|
|
174
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/loader.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type IfcDataStore } from '@ifc-lite/parser';
|
|
2
|
+
import { type BimContext } from '@ifc-lite/sdk';
|
|
3
|
+
/**
|
|
4
|
+
* Parse an IFC file from disk into an IfcDataStore.
|
|
5
|
+
* Suppresses parser console output for clean CLI experience.
|
|
6
|
+
*/
|
|
7
|
+
export declare function loadIfcFile(filePath: string): Promise<IfcDataStore>;
|
|
8
|
+
/**
|
|
9
|
+
* Create a BimContext backed by a headless backend from an IFC file.
|
|
10
|
+
*/
|
|
11
|
+
export declare function createHeadlessContext(filePath: string): Promise<{
|
|
12
|
+
bim: BimContext;
|
|
13
|
+
store: IfcDataStore;
|
|
14
|
+
}>;
|
|
15
|
+
//# sourceMappingURL=loader.d.ts.map
|