@ifc-lite/export 1.0.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/csv-exporter.d.ts +40 -0
- package/dist/csv-exporter.d.ts.map +1 -0
- package/dist/csv-exporter.js +159 -0
- package/dist/csv-exporter.js.map +1 -0
- package/dist/gltf-exporter.d.ts +27 -0
- package/dist/gltf-exporter.d.ts.map +1 -0
- package/dist/gltf-exporter.js +295 -0
- package/dist/gltf-exporter.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/jsonld-exporter.d.ts +36 -0
- package/dist/jsonld-exporter.d.ts.map +1 -0
- package/dist/jsonld-exporter.js +167 -0
- package/dist/jsonld-exporter.js.map +1 -0
- package/dist/parquet-exporter.d.ts +40 -0
- package/dist/parquet-exporter.d.ts.map +1 -0
- package/dist/parquet-exporter.js +440 -0
- package/dist/parquet-exporter.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,440 @@
|
|
|
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 { IfcTypeEnumToString, IfcTypeEnum, EntityFlags, PropertyValueType, QuantityType, RelationshipType } from '@ifc-lite/data';
|
|
5
|
+
/**
|
|
6
|
+
* Export to ara3d BIM Open Schema compatible Parquet files.
|
|
7
|
+
* Creates a .bos archive (ZIP of Parquet files).
|
|
8
|
+
*/
|
|
9
|
+
export class ParquetExporter {
|
|
10
|
+
store;
|
|
11
|
+
geometryResult;
|
|
12
|
+
constructor(store, geometryResult) {
|
|
13
|
+
this.store = store;
|
|
14
|
+
this.geometryResult = geometryResult;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Export full model to .bos archive.
|
|
18
|
+
*/
|
|
19
|
+
async exportBOS(options = {}) {
|
|
20
|
+
const files = new Map();
|
|
21
|
+
// Non-geometry files
|
|
22
|
+
files.set('Entities.parquet', await this.writeEntities());
|
|
23
|
+
files.set('Properties.parquet', await this.writeProperties());
|
|
24
|
+
files.set('Quantities.parquet', await this.writeQuantities());
|
|
25
|
+
files.set('Relationships.parquet', await this.writeRelationships());
|
|
26
|
+
files.set('Strings.parquet', await this.writeStrings());
|
|
27
|
+
// Geometry files (if available)
|
|
28
|
+
if (options.includeGeometry !== false && this.geometryResult) {
|
|
29
|
+
files.set('VertexBuffer.parquet', await this.writeVertexBuffer());
|
|
30
|
+
files.set('IndexBuffer.parquet', await this.writeIndexBuffer());
|
|
31
|
+
files.set('Meshes.parquet', await this.writeMeshes());
|
|
32
|
+
}
|
|
33
|
+
// Spatial hierarchy
|
|
34
|
+
if (this.store.spatialHierarchy) {
|
|
35
|
+
files.set('SpatialHierarchy.parquet', await this.writeSpatialHierarchy());
|
|
36
|
+
}
|
|
37
|
+
// Metadata
|
|
38
|
+
files.set('Metadata.json', this.writeMetadata());
|
|
39
|
+
return this.createZipArchive(files);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Export individual Parquet file.
|
|
43
|
+
*/
|
|
44
|
+
async exportTable(tableName) {
|
|
45
|
+
switch (tableName) {
|
|
46
|
+
case 'entities': return this.writeEntities();
|
|
47
|
+
case 'properties': return this.writeProperties();
|
|
48
|
+
case 'quantities': return this.writeQuantities();
|
|
49
|
+
case 'relationships': return this.writeRelationships();
|
|
50
|
+
case 'strings': return this.writeStrings();
|
|
51
|
+
case 'vertices': return this.writeVertexBuffer();
|
|
52
|
+
case 'indices': return this.writeIndexBuffer();
|
|
53
|
+
case 'meshes': return this.writeMeshes();
|
|
54
|
+
default: throw new Error(`Unknown table: ${tableName}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// ═══════════════════════════════════════════════════════════════
|
|
58
|
+
// ENTITY DATA
|
|
59
|
+
// ═══════════════════════════════════════════════════════════════
|
|
60
|
+
async writeEntities() {
|
|
61
|
+
const { entities, strings } = this.store;
|
|
62
|
+
return this.toParquet({
|
|
63
|
+
ExpressId: Array.from(entities.expressId),
|
|
64
|
+
GlobalId: mapTypedArray(entities.globalId, i => strings.get(i)),
|
|
65
|
+
Name: mapTypedArray(entities.name, i => strings.get(i)),
|
|
66
|
+
Description: mapTypedArray(entities.description, i => strings.get(i)),
|
|
67
|
+
Type: mapTypedArray(entities.typeEnum, i => IfcTypeEnumToString(i)),
|
|
68
|
+
ObjectType: mapTypedArray(entities.objectType, i => strings.get(i)),
|
|
69
|
+
HasGeometry: mapTypedArray(entities.flags, f => (f & EntityFlags.HAS_GEOMETRY) !== 0),
|
|
70
|
+
IsType: mapTypedArray(entities.flags, f => (f & EntityFlags.IS_TYPE) !== 0),
|
|
71
|
+
ContainedInStorey: Array.from(entities.containedInStorey),
|
|
72
|
+
DefinedByType: Array.from(entities.definedByType),
|
|
73
|
+
GeometryIndex: Array.from(entities.geometryIndex),
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
async writeProperties() {
|
|
77
|
+
const { properties, strings } = this.store;
|
|
78
|
+
return this.toParquet({
|
|
79
|
+
EntityId: Array.from(properties.entityId),
|
|
80
|
+
PsetName: mapTypedArray(properties.psetName, i => strings.get(i)),
|
|
81
|
+
PsetGlobalId: mapTypedArray(properties.psetGlobalId, i => strings.get(i)),
|
|
82
|
+
PropName: mapTypedArray(properties.propName, i => strings.get(i)),
|
|
83
|
+
PropType: mapTypedArray(properties.propType, t => PropertyValueTypeToString(t)),
|
|
84
|
+
ValueString: mapTypedArray(properties.valueString, i => i >= 0 && i < strings.count ? strings.get(i) : null),
|
|
85
|
+
ValueReal: Array.from(properties.valueReal),
|
|
86
|
+
ValueInt: Array.from(properties.valueInt),
|
|
87
|
+
ValueBool: mapTypedArray(properties.valueBool, v => v === 255 ? null : v === 1),
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
async writeQuantities() {
|
|
91
|
+
const { quantities, strings } = this.store;
|
|
92
|
+
return this.toParquet({
|
|
93
|
+
EntityId: Array.from(quantities.entityId),
|
|
94
|
+
QsetName: mapTypedArray(quantities.qsetName, i => strings.get(i)),
|
|
95
|
+
QuantityName: mapTypedArray(quantities.quantityName, i => strings.get(i)),
|
|
96
|
+
QuantityType: mapTypedArray(quantities.quantityType, t => QuantityTypeToString(t)),
|
|
97
|
+
Value: Array.from(quantities.value),
|
|
98
|
+
Formula: mapTypedArray(quantities.formula, i => i > 0 ? strings.get(i) : null),
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
async writeRelationships() {
|
|
102
|
+
const { relationships } = this.store;
|
|
103
|
+
const edges = relationships.forward;
|
|
104
|
+
// Flatten CSR format to row-based
|
|
105
|
+
const sourceIds = [];
|
|
106
|
+
const targetIds = [];
|
|
107
|
+
const relTypes = [];
|
|
108
|
+
const relIds = [];
|
|
109
|
+
for (const [sourceId, offset] of edges.offsets) {
|
|
110
|
+
const count = edges.counts.get(sourceId);
|
|
111
|
+
for (let i = offset; i < offset + count; i++) {
|
|
112
|
+
sourceIds.push(sourceId);
|
|
113
|
+
targetIds.push(edges.edgeTargets[i]);
|
|
114
|
+
relTypes.push(RelationshipTypeToString(edges.edgeTypes[i]));
|
|
115
|
+
relIds.push(edges.edgeRelIds[i]);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return this.toParquet({
|
|
119
|
+
SourceId: sourceIds,
|
|
120
|
+
TargetId: targetIds,
|
|
121
|
+
RelType: relTypes,
|
|
122
|
+
RelId: relIds,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
async writeStrings() {
|
|
126
|
+
const { strings } = this.store;
|
|
127
|
+
const indices = new Array(strings.count);
|
|
128
|
+
for (let i = 0; i < strings.count; i++) {
|
|
129
|
+
indices[i] = i;
|
|
130
|
+
}
|
|
131
|
+
return this.toParquet({
|
|
132
|
+
Index: indices,
|
|
133
|
+
Value: strings.getAll(),
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
// ═══════════════════════════════════════════════════════════════
|
|
137
|
+
// GEOMETRY DATA (ara3d G3D compatible)
|
|
138
|
+
// ═══════════════════════════════════════════════════════════════
|
|
139
|
+
async writeVertexBuffer() {
|
|
140
|
+
if (!this.geometryResult) {
|
|
141
|
+
throw new Error('Geometry result not available');
|
|
142
|
+
}
|
|
143
|
+
// Collect all positions and normals from meshes
|
|
144
|
+
const allPositions = [];
|
|
145
|
+
const allNormals = [];
|
|
146
|
+
for (const mesh of this.geometryResult.meshes) {
|
|
147
|
+
allPositions.push(...Array.from(mesh.positions));
|
|
148
|
+
allNormals.push(...Array.from(mesh.normals));
|
|
149
|
+
}
|
|
150
|
+
const vertexCount = allPositions.length / 3;
|
|
151
|
+
// Columnar layout (X[], Y[], Z[] instead of [x,y,z, x,y,z])
|
|
152
|
+
const x = new Float32Array(vertexCount);
|
|
153
|
+
const y = new Float32Array(vertexCount);
|
|
154
|
+
const z = new Float32Array(vertexCount);
|
|
155
|
+
const nx = new Float32Array(vertexCount);
|
|
156
|
+
const ny = new Float32Array(vertexCount);
|
|
157
|
+
const nz = new Float32Array(vertexCount);
|
|
158
|
+
for (let i = 0; i < vertexCount; i++) {
|
|
159
|
+
x[i] = allPositions[i * 3];
|
|
160
|
+
y[i] = allPositions[i * 3 + 1];
|
|
161
|
+
z[i] = allPositions[i * 3 + 2];
|
|
162
|
+
nx[i] = allNormals[i * 3];
|
|
163
|
+
ny[i] = allNormals[i * 3 + 1];
|
|
164
|
+
nz[i] = allNormals[i * 3 + 2];
|
|
165
|
+
}
|
|
166
|
+
return this.toParquet({
|
|
167
|
+
X: Array.from(x),
|
|
168
|
+
Y: Array.from(y),
|
|
169
|
+
Z: Array.from(z),
|
|
170
|
+
NormalX: Array.from(nx),
|
|
171
|
+
NormalY: Array.from(ny),
|
|
172
|
+
NormalZ: Array.from(nz),
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
async writeIndexBuffer() {
|
|
176
|
+
if (!this.geometryResult) {
|
|
177
|
+
throw new Error('Geometry result not available');
|
|
178
|
+
}
|
|
179
|
+
// Collect all indices from meshes
|
|
180
|
+
const allIndices = [];
|
|
181
|
+
for (const mesh of this.geometryResult.meshes) {
|
|
182
|
+
allIndices.push(...Array.from(mesh.indices));
|
|
183
|
+
}
|
|
184
|
+
const triangleCount = allIndices.length / 3;
|
|
185
|
+
const i0 = new Uint32Array(triangleCount);
|
|
186
|
+
const i1 = new Uint32Array(triangleCount);
|
|
187
|
+
const i2 = new Uint32Array(triangleCount);
|
|
188
|
+
for (let i = 0; i < triangleCount; i++) {
|
|
189
|
+
i0[i] = allIndices[i * 3];
|
|
190
|
+
i1[i] = allIndices[i * 3 + 1];
|
|
191
|
+
i2[i] = allIndices[i * 3 + 2];
|
|
192
|
+
}
|
|
193
|
+
return this.toParquet({ Index0: Array.from(i0), Index1: Array.from(i1), Index2: Array.from(i2) });
|
|
194
|
+
}
|
|
195
|
+
async writeMeshes() {
|
|
196
|
+
if (!this.geometryResult) {
|
|
197
|
+
throw new Error('Geometry result not available');
|
|
198
|
+
}
|
|
199
|
+
const meshes = this.geometryResult.meshes;
|
|
200
|
+
const expressIds = [];
|
|
201
|
+
const vertexStarts = [];
|
|
202
|
+
const vertexCounts = [];
|
|
203
|
+
const indexStarts = [];
|
|
204
|
+
const indexCounts = [];
|
|
205
|
+
let vertexOffset = 0;
|
|
206
|
+
let indexOffset = 0;
|
|
207
|
+
for (const mesh of meshes) {
|
|
208
|
+
expressIds.push(mesh.expressId);
|
|
209
|
+
vertexStarts.push(vertexOffset);
|
|
210
|
+
vertexCounts.push(mesh.positions.length / 3);
|
|
211
|
+
indexStarts.push(indexOffset);
|
|
212
|
+
indexCounts.push(mesh.indices.length);
|
|
213
|
+
vertexOffset += mesh.positions.length / 3;
|
|
214
|
+
indexOffset += mesh.indices.length;
|
|
215
|
+
}
|
|
216
|
+
return this.toParquet({
|
|
217
|
+
ExpressId: expressIds,
|
|
218
|
+
VertexStart: vertexStarts,
|
|
219
|
+
VertexCount: vertexCounts,
|
|
220
|
+
IndexStart: indexStarts,
|
|
221
|
+
IndexCount: indexCounts,
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
async writeSpatialHierarchy() {
|
|
225
|
+
if (!this.store.spatialHierarchy) {
|
|
226
|
+
throw new Error('Spatial hierarchy not available');
|
|
227
|
+
}
|
|
228
|
+
const rows = [];
|
|
229
|
+
const { spatialHierarchy } = this.store;
|
|
230
|
+
// Build lookup maps for fast parent access
|
|
231
|
+
const storeyToBuilding = new Map();
|
|
232
|
+
const buildingToSite = new Map();
|
|
233
|
+
// Traverse hierarchy to build parent maps
|
|
234
|
+
const traverse = (node, parentBuilding, parentSite) => {
|
|
235
|
+
if (node.type === IfcTypeEnum.IfcBuilding) {
|
|
236
|
+
parentBuilding = node.expressId;
|
|
237
|
+
if (parentSite !== undefined) {
|
|
238
|
+
buildingToSite.set(node.expressId, parentSite);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
else if (node.type === IfcTypeEnum.IfcSite) {
|
|
242
|
+
parentSite = node.expressId;
|
|
243
|
+
}
|
|
244
|
+
else if (node.type === IfcTypeEnum.IfcBuildingStorey) {
|
|
245
|
+
if (parentBuilding !== undefined) {
|
|
246
|
+
storeyToBuilding.set(node.expressId, parentBuilding);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
for (const child of node.children) {
|
|
250
|
+
traverse(child, parentBuilding, parentSite);
|
|
251
|
+
}
|
|
252
|
+
};
|
|
253
|
+
traverse(spatialHierarchy.project);
|
|
254
|
+
for (const [storeyId, elementIds] of spatialHierarchy.byStorey) {
|
|
255
|
+
const buildingId = storeyToBuilding.get(storeyId) ?? -1;
|
|
256
|
+
const siteId = buildingId >= 0 ? (buildingToSite.get(buildingId) ?? -1) : -1;
|
|
257
|
+
for (const elementId of elementIds) {
|
|
258
|
+
// Check if element is in a space by iterating bySpace
|
|
259
|
+
let spaceId = -1;
|
|
260
|
+
for (const [sid, spaceElementIds] of spatialHierarchy.bySpace) {
|
|
261
|
+
if (spaceElementIds.includes(elementId)) {
|
|
262
|
+
spaceId = sid;
|
|
263
|
+
break;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
rows.push({
|
|
267
|
+
ElementId: elementId,
|
|
268
|
+
StoreyId: storeyId,
|
|
269
|
+
BuildingId: buildingId,
|
|
270
|
+
SiteId: siteId,
|
|
271
|
+
SpaceId: spaceId,
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
return this.toParquet({
|
|
276
|
+
ElementId: rows.map(r => r.ElementId),
|
|
277
|
+
StoreyId: rows.map(r => r.StoreyId),
|
|
278
|
+
BuildingId: rows.map(r => r.BuildingId),
|
|
279
|
+
SiteId: rows.map(r => r.SiteId),
|
|
280
|
+
SpaceId: rows.map(r => r.SpaceId),
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
writeMetadata() {
|
|
284
|
+
const metadata = {
|
|
285
|
+
version: '2.0.0',
|
|
286
|
+
generator: 'IFC-Lite',
|
|
287
|
+
sourceFile: {
|
|
288
|
+
size: this.store.fileSize,
|
|
289
|
+
schema: this.store.schemaVersion,
|
|
290
|
+
entityCount: this.store.entityCount,
|
|
291
|
+
},
|
|
292
|
+
export: {
|
|
293
|
+
timestamp: new Date().toISOString(),
|
|
294
|
+
format: 'ara3d-bos-compatible',
|
|
295
|
+
},
|
|
296
|
+
statistics: {
|
|
297
|
+
meshCount: this.geometryResult?.meshes.length ?? 0,
|
|
298
|
+
vertexCount: this.geometryResult ? this.geometryResult.totalVertices : 0,
|
|
299
|
+
triangleCount: this.geometryResult ? this.geometryResult.totalTriangles : 0,
|
|
300
|
+
propertyCount: this.store.properties.count,
|
|
301
|
+
relationshipCount: this.store.relationships.forward.edgeTargets.length,
|
|
302
|
+
},
|
|
303
|
+
};
|
|
304
|
+
return new TextEncoder().encode(JSON.stringify(metadata, null, 2));
|
|
305
|
+
}
|
|
306
|
+
// ═══════════════════════════════════════════════════════════════
|
|
307
|
+
// UTILITIES
|
|
308
|
+
// ═══════════════════════════════════════════════════════════════
|
|
309
|
+
async toParquet(columns) {
|
|
310
|
+
try {
|
|
311
|
+
// Dynamic imports for better tree-shaking
|
|
312
|
+
// @ts-ignore - apache-arrow types have module resolution issues
|
|
313
|
+
const arrow = await import('apache-arrow');
|
|
314
|
+
// Build Arrow vectors from column data
|
|
315
|
+
const vectors = {};
|
|
316
|
+
for (const [name, data] of Object.entries(columns)) {
|
|
317
|
+
if (data.length === 0) {
|
|
318
|
+
// Empty column - create empty vector with null type
|
|
319
|
+
vectors[name] = arrow.vectorFromArray([]);
|
|
320
|
+
continue;
|
|
321
|
+
}
|
|
322
|
+
// Infer type from first non-null element
|
|
323
|
+
const sample = data.find((v) => v !== null && v !== undefined);
|
|
324
|
+
if (sample === undefined) {
|
|
325
|
+
// All nulls - create string vector with nulls
|
|
326
|
+
vectors[name] = arrow.vectorFromArray(data);
|
|
327
|
+
}
|
|
328
|
+
else if (typeof sample === 'number') {
|
|
329
|
+
// Check if it's integer or float
|
|
330
|
+
const isFloat = data.some((v) => v !== null && !Number.isInteger(v));
|
|
331
|
+
if (isFloat) {
|
|
332
|
+
vectors[name] = arrow.vectorFromArray(data, new arrow.Float64());
|
|
333
|
+
}
|
|
334
|
+
else {
|
|
335
|
+
// Use Int32 for integers (covers express IDs and most counts)
|
|
336
|
+
vectors[name] = arrow.vectorFromArray(data, new arrow.Int32());
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
else if (typeof sample === 'boolean') {
|
|
340
|
+
vectors[name] = arrow.vectorFromArray(data, new arrow.Bool());
|
|
341
|
+
}
|
|
342
|
+
else {
|
|
343
|
+
// String or other - convert to string
|
|
344
|
+
vectors[name] = arrow.vectorFromArray(data.map((v) => v === null ? null : String(v)));
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
// Build Arrow Table
|
|
348
|
+
const table = new arrow.Table(vectors);
|
|
349
|
+
// Convert to Arrow IPC format
|
|
350
|
+
const ipcBuffer = arrow.tableToIPC(table, 'stream');
|
|
351
|
+
// Try to use parquet-wasm for conversion
|
|
352
|
+
try {
|
|
353
|
+
// @ts-ignore - parquet-wasm may have type issues
|
|
354
|
+
const parquet = await import('parquet-wasm');
|
|
355
|
+
// parquet-wasm 0.5+ API: read Arrow IPC and write Parquet
|
|
356
|
+
// First, read the IPC buffer into a parquet-wasm Table
|
|
357
|
+
// @ts-ignore - parquet-wasm types may not match exactly
|
|
358
|
+
const arrowTable = parquet.Table.fromIPCStream(ipcBuffer);
|
|
359
|
+
// Then write to Parquet format
|
|
360
|
+
// @ts-ignore - parquet-wasm types may not match exactly
|
|
361
|
+
const parquetBuffer = parquet.writeParquet(arrowTable);
|
|
362
|
+
return new Uint8Array(parquetBuffer);
|
|
363
|
+
}
|
|
364
|
+
catch (parquetError) {
|
|
365
|
+
// Fallback: If parquet-wasm fails, return Arrow IPC format instead
|
|
366
|
+
// This is still a valid binary format that can be read by many tools
|
|
367
|
+
console.warn('[ParquetExporter] parquet-wasm conversion failed, returning Arrow IPC format:', parquetError);
|
|
368
|
+
return new Uint8Array(ipcBuffer);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
catch (error) {
|
|
372
|
+
// If all else fails, throw a descriptive error
|
|
373
|
+
throw new Error(`Failed to convert to Parquet format: ${error}. Ensure apache-arrow and parquet-wasm are installed.`);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
async createZipArchive(files) {
|
|
377
|
+
const JSZip = (await import('jszip')).default;
|
|
378
|
+
const zip = new JSZip();
|
|
379
|
+
for (const [name, data] of files) {
|
|
380
|
+
zip.file(name, data);
|
|
381
|
+
}
|
|
382
|
+
return zip.generateAsync({ type: 'uint8array', compression: 'DEFLATE' });
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
// Helper functions
|
|
386
|
+
function mapTypedArray(arr, fn) {
|
|
387
|
+
const result = new Array(arr.length);
|
|
388
|
+
for (let i = 0; i < arr.length; i++) {
|
|
389
|
+
result[i] = fn(arr[i]);
|
|
390
|
+
}
|
|
391
|
+
return result;
|
|
392
|
+
}
|
|
393
|
+
function PropertyValueTypeToString(type) {
|
|
394
|
+
const names = {
|
|
395
|
+
[PropertyValueType.String]: 'String',
|
|
396
|
+
[PropertyValueType.Real]: 'Real',
|
|
397
|
+
[PropertyValueType.Integer]: 'Integer',
|
|
398
|
+
[PropertyValueType.Boolean]: 'Boolean',
|
|
399
|
+
[PropertyValueType.Logical]: 'Logical',
|
|
400
|
+
[PropertyValueType.Label]: 'Label',
|
|
401
|
+
[PropertyValueType.Identifier]: 'Identifier',
|
|
402
|
+
[PropertyValueType.Text]: 'Text',
|
|
403
|
+
[PropertyValueType.Enum]: 'Enum',
|
|
404
|
+
[PropertyValueType.Reference]: 'Reference',
|
|
405
|
+
[PropertyValueType.List]: 'List',
|
|
406
|
+
};
|
|
407
|
+
return names[type] || 'Unknown';
|
|
408
|
+
}
|
|
409
|
+
// Quantity type conversion - exported for future use when quantities are implemented
|
|
410
|
+
export function QuantityTypeToString(type) {
|
|
411
|
+
const names = {
|
|
412
|
+
[QuantityType.Length]: 'Length',
|
|
413
|
+
[QuantityType.Area]: 'Area',
|
|
414
|
+
[QuantityType.Volume]: 'Volume',
|
|
415
|
+
[QuantityType.Count]: 'Count',
|
|
416
|
+
[QuantityType.Weight]: 'Weight',
|
|
417
|
+
[QuantityType.Time]: 'Time',
|
|
418
|
+
};
|
|
419
|
+
return names[type] || 'Unknown';
|
|
420
|
+
}
|
|
421
|
+
function RelationshipTypeToString(type) {
|
|
422
|
+
const names = {
|
|
423
|
+
[RelationshipType.ContainsElements]: 'IfcRelContainedInSpatialStructure',
|
|
424
|
+
[RelationshipType.Aggregates]: 'IfcRelAggregates',
|
|
425
|
+
[RelationshipType.DefinesByProperties]: 'IfcRelDefinesByProperties',
|
|
426
|
+
[RelationshipType.DefinesByType]: 'IfcRelDefinesByType',
|
|
427
|
+
[RelationshipType.AssociatesMaterial]: 'IfcRelAssociatesMaterial',
|
|
428
|
+
[RelationshipType.AssociatesClassification]: 'IfcRelAssociatesClassification',
|
|
429
|
+
[RelationshipType.VoidsElement]: 'IfcRelVoidsElement',
|
|
430
|
+
[RelationshipType.FillsElement]: 'IfcRelFillsElement',
|
|
431
|
+
[RelationshipType.ConnectsPathElements]: 'IfcRelConnectsPathElements',
|
|
432
|
+
[RelationshipType.ConnectsElements]: 'IfcRelConnectsElements',
|
|
433
|
+
[RelationshipType.SpaceBoundary]: 'IfcRelSpaceBoundary',
|
|
434
|
+
[RelationshipType.AssignsToGroup]: 'IfcRelAssignsToGroup',
|
|
435
|
+
[RelationshipType.AssignsToProduct]: 'IfcRelAssignsToProduct',
|
|
436
|
+
[RelationshipType.ReferencedInSpatialStructure]: 'ReferencedInSpatialStructure',
|
|
437
|
+
};
|
|
438
|
+
return names[type] || 'Unknown';
|
|
439
|
+
}
|
|
440
|
+
//# sourceMappingURL=parquet-exporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parquet-exporter.js","sourceRoot":"","sources":["../src/parquet-exporter.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ifc-lite/export",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Export formats for IFC-Lite",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"parquet-wasm": "^0.5.0",
|
|
16
|
+
"apache-arrow": "^14.0.0",
|
|
17
|
+
"jszip": "^3.10.0",
|
|
18
|
+
"@ifc-lite/parser": "1.0.0",
|
|
19
|
+
"@ifc-lite/geometry": "1.0.0",
|
|
20
|
+
"@ifc-lite/data": "1.0.0"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"typescript": "^5.3.0"
|
|
24
|
+
},
|
|
25
|
+
"license": "MPL-2.0",
|
|
26
|
+
"author": "Louis True",
|
|
27
|
+
"repository": {
|
|
28
|
+
"type": "git",
|
|
29
|
+
"url": "https://github.com/louistrue/ifc-lite.git",
|
|
30
|
+
"directory": "packages/export"
|
|
31
|
+
},
|
|
32
|
+
"homepage": "https://louistrue.github.io/ifc-lite/",
|
|
33
|
+
"bugs": "https://github.com/louistrue/ifc-lite/issues",
|
|
34
|
+
"keywords": [
|
|
35
|
+
"ifc",
|
|
36
|
+
"bim",
|
|
37
|
+
"export",
|
|
38
|
+
"gltf",
|
|
39
|
+
"parquet",
|
|
40
|
+
"aec"
|
|
41
|
+
],
|
|
42
|
+
"publishConfig": {
|
|
43
|
+
"access": "public"
|
|
44
|
+
},
|
|
45
|
+
"files": [
|
|
46
|
+
"dist",
|
|
47
|
+
"README.md"
|
|
48
|
+
],
|
|
49
|
+
"scripts": {
|
|
50
|
+
"build": "tsc",
|
|
51
|
+
"dev": "tsc --watch"
|
|
52
|
+
}
|
|
53
|
+
}
|