@ifc-lite/export 1.3.0 → 1.6.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.
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * CSV exporter for IFC data
3
+ * Uses on-demand property extraction for optimal performance
3
4
  */
4
- import type { IfcDataStore } from '@ifc-lite/parser';
5
+ import { type IfcDataStore } from '@ifc-lite/parser';
5
6
  export interface CSVExportOptions {
6
7
  includeProperties?: boolean;
7
8
  includeQuantities?: boolean;
@@ -11,6 +12,14 @@ export interface CSVExportOptions {
11
12
  export declare class CSVExporter {
12
13
  private store;
13
14
  constructor(store: IfcDataStore);
15
+ /**
16
+ * Get properties for an entity, using on-demand extraction when available
17
+ */
18
+ private getPropertiesForEntity;
19
+ /**
20
+ * Get quantities for an entity, using on-demand extraction when available
21
+ */
22
+ private getQuantitiesForEntity;
14
23
  /**
15
24
  * Export entities to CSV format
16
25
  * @param entityIds Optional array of entity IDs to export. If not provided, exports all entities.
@@ -24,6 +33,10 @@ export declare class CSVExporter {
24
33
  * Export quantities to CSV format (one row per quantity)
25
34
  */
26
35
  exportQuantities(entityIds?: number[], options?: CSVExportOptions): string;
36
+ /**
37
+ * Export spatial hierarchy to CSV
38
+ */
39
+ exportSpatialHierarchy(options?: CSVExportOptions): string;
27
40
  /**
28
41
  * Get all entity IDs from the store
29
42
  */
@@ -33,8 +46,9 @@ export declare class CSVExporter {
33
46
  */
34
47
  private escapeValue;
35
48
  /**
36
- * Escape a row of values
49
+ * Join pre-escaped values into a CSV row
50
+ * Note: Values should already be escaped before calling this
37
51
  */
38
- private escapeRow;
52
+ private joinRow;
39
53
  }
40
54
  //# sourceMappingURL=csv-exporter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"csv-exporter.d.ts","sourceRoot":"","sources":["../src/csv-exporter.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAe;gBAEhB,KAAK,EAAE,YAAY;IAI/B;;;OAGG;IACH,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM;IA4E5E;;OAEG;IACH,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM;IA0B9E;;OAEG;IACH,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM;IA+B9E;;OAEG;IACH,OAAO,CAAC,eAAe;IAQvB;;OAEG;IACH,OAAO,CAAC,WAAW;IAenB;;OAEG;IACH,OAAO,CAAC,SAAS;CAGlB"}
1
+ {"version":3,"file":"csv-exporter.d.ts","sourceRoot":"","sources":["../src/csv-exporter.ts"],"names":[],"mappings":"AAIA;;;GAGG;AAEH,OAAO,EACL,KAAK,YAAY,EAGlB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAe;gBAEhB,KAAK,EAAE,YAAY;IAI/B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAS9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAS9B;;;OAGG;IACH,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM;IAuF5E;;OAEG;IACH,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM;IAqC9E;;OAEG;IACH,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM;IAsC9E;;OAEG;IACH,sBAAsB,CAAC,OAAO,GAAE,gBAAqB,GAAG,MAAM;IAmC9D;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;IACH,OAAO,CAAC,WAAW;IAenB;;;OAGG;IACH,OAAO,CAAC,OAAO;CAGhB"}
@@ -1,11 +1,38 @@
1
1
  /* This Source Code Form is subject to the terms of the Mozilla Public
2
2
  * License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ /**
5
+ * CSV exporter for IFC data
6
+ * Uses on-demand property extraction for optimal performance
7
+ */
8
+ import { extractPropertiesOnDemand, extractQuantitiesOnDemand, } from '@ifc-lite/parser';
4
9
  export class CSVExporter {
5
10
  store;
6
11
  constructor(store) {
7
12
  this.store = store;
8
13
  }
14
+ /**
15
+ * Get properties for an entity, using on-demand extraction when available
16
+ */
17
+ getPropertiesForEntity(entityId) {
18
+ // Use on-demand extraction (works with client-side WASM parsing)
19
+ if (this.store.onDemandPropertyMap && this.store.source?.length > 0) {
20
+ return extractPropertiesOnDemand(this.store, entityId);
21
+ }
22
+ // Fallback to pre-built property table (server-parsed data or cached)
23
+ return this.store.properties?.getForEntity(entityId) ?? [];
24
+ }
25
+ /**
26
+ * Get quantities for an entity, using on-demand extraction when available
27
+ */
28
+ getQuantitiesForEntity(entityId) {
29
+ // Use on-demand extraction (works with client-side WASM parsing)
30
+ if (this.store.onDemandQuantityMap && this.store.source?.length > 0) {
31
+ return extractQuantitiesOnDemand(this.store, entityId);
32
+ }
33
+ // Fallback to pre-built quantity table
34
+ return this.store.quantities?.getForEntity(entityId) ?? [];
35
+ }
9
36
  /**
10
37
  * Export entities to CSV format
11
38
  * @param entityIds Optional array of entity IDs to export. If not provided, exports all entities.
@@ -14,14 +41,22 @@ export class CSVExporter {
14
41
  const delimiter = options.delimiter ?? ',';
15
42
  const includeProperties = options.includeProperties ?? false;
16
43
  const flattenProperties = options.flattenProperties ?? false;
17
- // Build header row
18
- const headers = ['expressId', 'globalId', 'name', 'type'];
44
+ // Build header row with more columns
45
+ const headers = [
46
+ 'expressId',
47
+ 'globalId',
48
+ 'name',
49
+ 'type',
50
+ 'description',
51
+ 'objectType',
52
+ 'hasGeometry',
53
+ ];
19
54
  // Collect all unique property set names and property names (if flattening properties)
20
55
  const psetProps = new Map();
21
56
  if (includeProperties && flattenProperties) {
22
57
  const allEntityIds = entityIds ?? this.getAllEntityIds();
23
58
  for (const id of allEntityIds) {
24
- const properties = this.store.properties.getForEntity(id);
59
+ const properties = this.getPropertiesForEntity(id);
25
60
  for (const pset of properties) {
26
61
  if (!psetProps.has(pset.name)) {
27
62
  psetProps.set(pset.name, new Set());
@@ -38,19 +73,22 @@ export class CSVExporter {
38
73
  }
39
74
  }
40
75
  }
41
- const rows = [this.escapeRow(headers, delimiter)];
76
+ const rows = [this.joinRow(headers.map((h) => this.escapeValue(h)), delimiter)];
42
77
  // Get entity IDs to export
43
78
  const ids = entityIds ?? this.getAllEntityIds();
44
79
  // Build data rows
45
80
  for (const id of ids) {
46
81
  const row = [
47
- String(id),
48
- this.escapeValue(this.store.entities.getGlobalId(id)),
49
- this.escapeValue(this.store.entities.getName(id)),
50
- this.escapeValue(this.store.entities.getTypeName(id)),
82
+ this.escapeValue(id),
83
+ this.escapeValue(this.store.entities.getGlobalId(id) || ''),
84
+ this.escapeValue(this.store.entities.getName(id) || ''),
85
+ this.escapeValue(this.store.entities.getTypeName(id) || ''),
86
+ this.escapeValue(this.store.entities.getDescription(id) || ''),
87
+ this.escapeValue(this.store.entities.getObjectType(id) || ''),
88
+ this.escapeValue(this.store.entities.hasGeometry(id) ? 'true' : 'false'),
51
89
  ];
52
90
  if (includeProperties && flattenProperties) {
53
- const properties = this.store.properties.getForEntity(id);
91
+ const properties = this.getPropertiesForEntity(id);
54
92
  const propMap = new Map();
55
93
  // Build map of pset -> prop -> value
56
94
  for (const pset of properties) {
@@ -68,7 +106,7 @@ export class CSVExporter {
68
106
  }
69
107
  }
70
108
  }
71
- rows.push(this.escapeRow(row, delimiter));
109
+ rows.push(this.joinRow(row, delimiter));
72
110
  }
73
111
  return rows.join('\n');
74
112
  }
@@ -77,21 +115,31 @@ export class CSVExporter {
77
115
  */
78
116
  exportProperties(entityIds, options = {}) {
79
117
  const delimiter = options.delimiter ?? ',';
80
- const headers = ['entityId', 'psetName', 'propName', 'value', 'type'];
81
- const rows = [this.escapeRow(headers, delimiter)];
118
+ const headers = ['entityId', 'globalId', 'entityName', 'entityType', 'psetName', 'propName', 'value', 'type'];
119
+ const rows = [this.joinRow(headers.map((h) => this.escapeValue(h)), delimiter)];
82
120
  const ids = entityIds ?? this.getAllEntityIds();
83
121
  for (const id of ids) {
84
- const properties = this.store.properties.getForEntity(id);
122
+ const properties = this.getPropertiesForEntity(id);
123
+ if (!properties || properties.length === 0)
124
+ continue;
125
+ const globalId = this.store.entities.getGlobalId(id) || '';
126
+ const entityName = this.store.entities.getName(id) || '';
127
+ const entityType = this.store.entities.getTypeName(id) || '';
85
128
  for (const pset of properties) {
129
+ if (!pset.properties || pset.properties.length === 0)
130
+ continue;
86
131
  for (const prop of pset.properties) {
87
132
  const row = [
88
- String(id),
89
- this.escapeValue(pset.name),
90
- this.escapeValue(prop.name),
133
+ this.escapeValue(id),
134
+ this.escapeValue(globalId),
135
+ this.escapeValue(entityName),
136
+ this.escapeValue(entityType),
137
+ this.escapeValue(pset.name || ''),
138
+ this.escapeValue(prop.name || ''),
91
139
  this.escapeValue(prop.value),
92
- String(prop.type),
140
+ this.escapeValue(prop.type ?? ''),
93
141
  ];
94
- rows.push(this.escapeRow(row, delimiter));
142
+ rows.push(this.joinRow(row, delimiter));
95
143
  }
96
144
  }
97
145
  }
@@ -102,35 +150,75 @@ export class CSVExporter {
102
150
  */
103
151
  exportQuantities(entityIds, options = {}) {
104
152
  const delimiter = options.delimiter ?? ',';
105
- if (!this.store.quantities) {
106
- return this.escapeRow(['entityId', 'qsetName', 'quantityName', 'value', 'type'], delimiter);
107
- }
108
- const headers = ['entityId', 'qsetName', 'quantityName', 'value', 'type'];
109
- const rows = [this.escapeRow(headers, delimiter)];
153
+ const headers = ['entityId', 'globalId', 'entityName', 'entityType', 'qsetName', 'quantityName', 'value', 'type'];
154
+ const headerRow = this.joinRow(headers.map((h) => this.escapeValue(h)), delimiter);
155
+ const rows = [headerRow];
110
156
  const ids = entityIds ?? this.getAllEntityIds();
111
157
  for (const id of ids) {
112
- const quantities = this.store.quantities.getForEntity(id);
158
+ const quantities = this.getQuantitiesForEntity(id);
159
+ if (!quantities || quantities.length === 0)
160
+ continue;
161
+ const globalId = this.store.entities.getGlobalId(id) || '';
162
+ const entityName = this.store.entities.getName(id) || '';
163
+ const entityType = this.store.entities.getTypeName(id) || '';
113
164
  for (const qset of quantities) {
165
+ if (!qset.quantities || qset.quantities.length === 0)
166
+ continue;
114
167
  for (const quant of qset.quantities) {
115
168
  const row = [
116
- String(id),
117
- this.escapeValue(qset.name),
118
- this.escapeValue(quant.name),
119
- String(quant.value),
120
- String(quant.type),
169
+ this.escapeValue(id),
170
+ this.escapeValue(globalId),
171
+ this.escapeValue(entityName),
172
+ this.escapeValue(entityType),
173
+ this.escapeValue(qset.name || ''),
174
+ this.escapeValue(quant.name || ''),
175
+ this.escapeValue(quant.value),
176
+ this.escapeValue(quant.type ?? ''),
121
177
  ];
122
- rows.push(this.escapeRow(row, delimiter));
178
+ rows.push(this.joinRow(row, delimiter));
123
179
  }
124
180
  }
125
181
  }
126
182
  return rows.join('\n');
127
183
  }
184
+ /**
185
+ * Export spatial hierarchy to CSV
186
+ */
187
+ exportSpatialHierarchy(options = {}) {
188
+ const delimiter = options.delimiter ?? ',';
189
+ const headers = ['expressId', 'globalId', 'name', 'type', 'parentId', 'level'];
190
+ const rows = [this.joinRow(headers.map((h) => this.escapeValue(h)), delimiter)];
191
+ // Get spatial hierarchy
192
+ const spatialHierarchy = this.store.spatialHierarchy;
193
+ if (!spatialHierarchy?.project) {
194
+ return rows[0];
195
+ }
196
+ const traverse = (node, parentId, level) => {
197
+ const row = [
198
+ this.escapeValue(node.expressId),
199
+ this.escapeValue(this.store.entities.getGlobalId(node.expressId) || ''),
200
+ this.escapeValue(node.name || ''),
201
+ this.escapeValue(this.store.entities.getTypeName(node.expressId) || ''),
202
+ this.escapeValue(parentId ?? ''),
203
+ this.escapeValue(level),
204
+ ];
205
+ rows.push(this.joinRow(row, delimiter));
206
+ if (node.children) {
207
+ for (const child of node.children) {
208
+ traverse(child, node.expressId, level + 1);
209
+ }
210
+ }
211
+ };
212
+ traverse(spatialHierarchy.project, null, 0);
213
+ return rows.join('\n');
214
+ }
128
215
  /**
129
216
  * Get all entity IDs from the store
130
217
  */
131
218
  getAllEntityIds() {
132
219
  const ids = [];
133
- for (let i = 0; i < this.store.entities.count; i++) {
220
+ const count = this.store.entities?.count ?? 0;
221
+ for (let i = 0; i < count; i++) {
134
222
  ids.push(this.store.entities.expressId[i]);
135
223
  }
136
224
  return ids;
@@ -150,10 +238,11 @@ export class CSVExporter {
150
238
  return str;
151
239
  }
152
240
  /**
153
- * Escape a row of values
241
+ * Join pre-escaped values into a CSV row
242
+ * Note: Values should already be escaped before calling this
154
243
  */
155
- escapeRow(values, delimiter) {
156
- return values.map(v => this.escapeValue(v)).join(delimiter);
244
+ joinRow(values, delimiter) {
245
+ return values.join(delimiter);
157
246
  }
158
247
  }
159
248
  //# sourceMappingURL=csv-exporter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"csv-exporter.js","sourceRoot":"","sources":["../src/csv-exporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"csv-exporter.js","sourceRoot":"","sources":["../src/csv-exporter.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;GAGG;AAEH,OAAO,EAEL,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAU1B,MAAM,OAAO,WAAW;IACd,KAAK,CAAe;IAE5B,YAAY,KAAmB;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,QAAgB;QAC7C,iEAAiE;QACjE,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;YACpE,OAAO,yBAAyB,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAkB,CAAC;QAC1E,CAAC;QACD,sEAAsE;QACtE,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC7D,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,QAAgB;QAC7C,iEAAiE;QACjE,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;YACpE,OAAO,yBAAyB,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAkB,CAAC;QAC1E,CAAC;QACD,uCAAuC;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC7D,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,SAAoB,EAAE,UAA4B,EAAE;QACjE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC;QAC3C,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,KAAK,CAAC;QAC7D,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,KAAK,CAAC;QAE7D,qCAAqC;QACrC,MAAM,OAAO,GAAa;YACxB,WAAW;YACX,UAAU;YACV,MAAM;YACN,MAAM;YACN,aAAa;YACb,YAAY;YACZ,aAAa;SACd,CAAC;QAEF,sFAAsF;QACtF,MAAM,SAAS,GAAG,IAAI,GAAG,EAAuB,CAAC;QAEjD,IAAI,iBAAiB,IAAI,iBAAiB,EAAE,CAAC;YAC3C,MAAM,YAAY,GAAG,SAAS,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAEzD,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;gBAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;gBACnD,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;oBAC9B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC9B,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;oBACtC,CAAC;oBACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;wBACnC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC3C,CAAC;gBACH,CAAC;YACH,CAAC;YAED,oDAAoD;YACpD,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC9C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;oBACjC,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QAE1F,2BAA2B;QAC3B,MAAM,GAAG,GAAG,SAAS,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QAEhD,kBAAkB;QAClB,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,MAAM,GAAG,GAAa;gBACpB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBACpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC3D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;gBACvD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC3D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC9D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC7D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;aACzE,CAAC;YAEF,IAAI,iBAAiB,IAAI,iBAAiB,EAAE,CAAC;gBAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;gBACnD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAsC,CAAC;gBAE9D,qCAAqC;gBACrC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;oBAC9B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;oBAC/C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;wBACnC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;oBACnC,CAAC;oBACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAChC,CAAC;gBAED,+CAA+C;gBAC/C,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,SAAS,EAAE,CAAC;oBAC9C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;wBACjC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;wBACzD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;oBACpC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,SAAoB,EAAE,UAA4B,EAAE;QACnE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC;QAC3C,MAAM,OAAO,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC9G,MAAM,IAAI,GAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QAE1F,MAAM,GAAG,GAAG,SAAS,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QAEhD,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAErD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YACzD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAE7D,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC9B,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;oBAAE,SAAS;gBAE/D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACnC,MAAM,GAAG,GAAa;wBACpB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;wBACpB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;wBAC1B,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;wBAC5B,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;wBAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;wBACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;wBACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;wBAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;qBAClC,CAAC;oBACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,SAAoB,EAAE,UAA4B,EAAE;QACnE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC;QAC3C,MAAM,OAAO,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAClH,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAEnF,MAAM,IAAI,GAAa,CAAC,SAAS,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,SAAS,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QAEhD,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAErD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YACzD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAE7D,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC9B,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;oBAAE,SAAS;gBAE/D,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACpC,MAAM,GAAG,GAAa;wBACpB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;wBACpB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;wBAC1B,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;wBAC5B,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;wBAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;wBACjC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;wBAClC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC;wBAC7B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;qBACnC,CAAC;oBACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,UAA4B,EAAE;QACnD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC;QAC3C,MAAM,OAAO,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAC/E,MAAM,IAAI,GAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QAE1F,wBAAwB;QACxB,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;QACrD,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QAID,MAAM,QAAQ,GAAG,CAAC,IAAiB,EAAE,QAAuB,EAAE,KAAa,EAAE,EAAE;YAC7E,MAAM,GAAG,GAAa;gBACpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;gBAChC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBACvE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;gBACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBACvE,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,EAAE,CAAC;gBAChC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;aACxB,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;YAExC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CAAC,OAAsB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACK,eAAe;QACrB,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,CAAC;QAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,KAAc;QAChC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAE1B,mFAAmF;QACnF,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACvF,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;QACxC,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;OAGG;IACK,OAAO,CAAC,MAAgB,EAAE,SAAiB;QACjD,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;CACF"}
package/dist/index.d.ts CHANGED
@@ -5,4 +5,5 @@ export { GLTFExporter, type GLTFExportOptions } from './gltf-exporter.js';
5
5
  export { ParquetExporter, type ParquetExportOptions } from './parquet-exporter.js';
6
6
  export { CSVExporter, type CSVExportOptions } from './csv-exporter.js';
7
7
  export { JSONLDExporter, type JSONLDExportOptions } from './jsonld-exporter.js';
8
+ export { StepExporter, exportToStep, type StepExportOptions, type StepExportResult } from './step-exporter.js';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -8,4 +8,5 @@ export { GLTFExporter } from './gltf-exporter.js';
8
8
  export { ParquetExporter } from './parquet-exporter.js';
9
9
  export { CSVExporter } from './csv-exporter.js';
10
10
  export { JSONLDExporter } from './jsonld-exporter.js';
11
+ export { StepExporter, exportToStep } from './step-exporter.js';
11
12
  //# sourceMappingURL=index.js.map
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;;GAEG;AAEH,OAAO,EAAE,YAAY,EAA0B,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAA6B,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,WAAW,EAAyB,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,cAAc,EAA4B,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;GAEG;AAEH,OAAO,EAAE,YAAY,EAA0B,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAA6B,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,WAAW,EAAyB,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,cAAc,EAA4B,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAiD,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * IFC STEP file exporter
3
+ *
4
+ * Exports IFC data store to ISO 10303-21 STEP format.
5
+ * Supports applying property mutations before export.
6
+ */
7
+ import type { IfcDataStore } from '@ifc-lite/parser';
8
+ import type { MutablePropertyView } from '@ifc-lite/mutations';
9
+ /**
10
+ * Options for STEP export
11
+ */
12
+ export interface StepExportOptions {
13
+ /** IFC schema version */
14
+ schema: 'IFC2X3' | 'IFC4' | 'IFC4X3';
15
+ /** File description */
16
+ description?: string;
17
+ /** Author name */
18
+ author?: string;
19
+ /** Organization name */
20
+ organization?: string;
21
+ /** Application name (defaults to 'ifc-lite') */
22
+ application?: string;
23
+ /** Output filename */
24
+ filename?: string;
25
+ /** Include original geometry entities (default: true) */
26
+ includeGeometry?: boolean;
27
+ /** Include property sets (default: true) */
28
+ includeProperties?: boolean;
29
+ /** Include quantity sets (default: true) */
30
+ includeQuantities?: boolean;
31
+ /** Include relationships (default: true) */
32
+ includeRelationships?: boolean;
33
+ /** Apply mutations from MutablePropertyView (default: true if provided) */
34
+ applyMutations?: boolean;
35
+ /** Only export entities with mutations (delta export) */
36
+ deltaOnly?: boolean;
37
+ }
38
+ /**
39
+ * Result of STEP export
40
+ */
41
+ export interface StepExportResult {
42
+ /** STEP file content */
43
+ content: string;
44
+ /** Statistics about the export */
45
+ stats: {
46
+ /** Total entities exported */
47
+ entityCount: number;
48
+ /** New entities created for mutations */
49
+ newEntityCount: number;
50
+ /** Entities modified by mutations */
51
+ modifiedEntityCount: number;
52
+ /** File size in bytes */
53
+ fileSize: number;
54
+ };
55
+ }
56
+ /**
57
+ * IFC STEP file exporter
58
+ */
59
+ export declare class StepExporter {
60
+ private dataStore;
61
+ private mutationView;
62
+ private nextExpressId;
63
+ constructor(dataStore: IfcDataStore, mutationView?: MutablePropertyView);
64
+ /**
65
+ * Export to STEP format
66
+ */
67
+ export(options: StepExportOptions): StepExportResult;
68
+ /**
69
+ * Export only property/quantity changes (lightweight export)
70
+ */
71
+ exportPropertiesOnly(options: Omit<StepExportOptions, 'includeGeometry'>): StepExportResult;
72
+ /**
73
+ * Generate STEP entities for property sets
74
+ */
75
+ private generatePropertySetEntities;
76
+ /**
77
+ * Serialize a property value to STEP format
78
+ */
79
+ private serializePropertyValue;
80
+ /**
81
+ * Escape a string for STEP format
82
+ */
83
+ private escapeStepString;
84
+ /**
85
+ * Generate a new IFC GlobalId (22 character base64)
86
+ */
87
+ private generateGlobalId;
88
+ /**
89
+ * Find the maximum EXPRESS ID in the data store
90
+ */
91
+ private findMaxExpressId;
92
+ /**
93
+ * Find a unit entity ID by name (simplified - returns null for now)
94
+ */
95
+ private findUnitId;
96
+ /**
97
+ * Check if an entity type is a geometry-related type
98
+ */
99
+ private isGeometryEntity;
100
+ /**
101
+ * Get entity IDs related by IfcRelDefinesByProperties (the related objects)
102
+ */
103
+ private getRelatedEntities;
104
+ /**
105
+ * Get the property set ID from IfcRelDefinesByProperties
106
+ */
107
+ private getRelatedPropertySet;
108
+ /**
109
+ * Get the name of a property set by parsing the entity
110
+ */
111
+ private getPropertySetName;
112
+ /**
113
+ * Get IDs of properties in a property set
114
+ */
115
+ private getPropertyIdsInSet;
116
+ }
117
+ /**
118
+ * Quick export function for simple use cases
119
+ */
120
+ export declare function exportToStep(dataStore: IfcDataStore, options?: Partial<StepExportOptions>): string;
121
+ //# sourceMappingURL=step-exporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-exporter.d.ts","sourceRoot":"","sources":["../src/step-exporter.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AASrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAI/D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,yBAAyB;IACzB,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IACrC,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wBAAwB;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,yDAAyD;IACzD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,4CAA4C;IAC5C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,4CAA4C;IAC5C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,4CAA4C;IAC5C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B,2EAA2E;IAC3E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yDAAyD;IACzD,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,KAAK,EAAE;QACL,8BAA8B;QAC9B,WAAW,EAAE,MAAM,CAAC;QACpB,yCAAyC;QACzC,cAAc,EAAE,MAAM,CAAC;QACvB,qCAAqC;QACrC,mBAAmB,EAAE,MAAM,CAAC;QAC5B,yBAAyB;QACzB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,aAAa,CAAS;gBAElB,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,mBAAmB;IAOvE;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB;IAmJpD;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,GAAG,gBAAgB;IAQ3F;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAgDnC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA2C9B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IASxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;IACH,OAAO,CAAC,UAAU;IAKlB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqCxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAuB1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAe7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAe1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAqB5B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,YAAY,EACvB,OAAO,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GACnC,MAAM,CAOR"}
@@ -0,0 +1,393 @@
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 { generateHeader, serializeValue, ref, } from '@ifc-lite/parser';
5
+ import { PropertyValueType } from '@ifc-lite/data';
6
+ /**
7
+ * IFC STEP file exporter
8
+ */
9
+ export class StepExporter {
10
+ dataStore;
11
+ mutationView;
12
+ nextExpressId;
13
+ constructor(dataStore, mutationView) {
14
+ this.dataStore = dataStore;
15
+ this.mutationView = mutationView || null;
16
+ // Start new IDs after the highest existing ID
17
+ this.nextExpressId = this.findMaxExpressId() + 1;
18
+ }
19
+ /**
20
+ * Export to STEP format
21
+ */
22
+ export(options) {
23
+ const entities = [];
24
+ let newEntityCount = 0;
25
+ let modifiedEntityCount = 0;
26
+ // Determine schema from data store if not specified
27
+ const schema = options.schema || this.dataStore.schemaVersion || 'IFC4';
28
+ // Generate header
29
+ const header = generateHeader({
30
+ schema,
31
+ description: options.description || 'Exported from ifc-lite',
32
+ author: options.author || '',
33
+ organization: options.organization || '',
34
+ application: options.application || 'ifc-lite',
35
+ filename: options.filename || 'export.ifc',
36
+ });
37
+ // Collect entities that need to be modified or created
38
+ const modifiedEntities = new Set();
39
+ const modifiedPsets = new Map(); // entityId -> psetNames being modified
40
+ const newPropertySets = [];
41
+ // Track property set IDs and relationship IDs to skip
42
+ const skipPropertySetIds = new Set();
43
+ const skipRelationshipIds = new Set();
44
+ // Process mutations if we have a mutation view
45
+ if (this.mutationView && (options.applyMutations !== false)) {
46
+ const mutations = this.mutationView.getMutations();
47
+ // Group mutations by entity
48
+ const entityMutations = new Map();
49
+ for (const mutation of mutations) {
50
+ if (!entityMutations.has(mutation.entityId)) {
51
+ entityMutations.set(mutation.entityId, new Set());
52
+ }
53
+ if (mutation.psetName) {
54
+ entityMutations.get(mutation.entityId).add(mutation.psetName);
55
+ }
56
+ }
57
+ // Collect modified property sets and find original psets to skip
58
+ for (const [entityId, psetNames] of entityMutations) {
59
+ modifiedEntities.add(entityId);
60
+ modifiedPsets.set(entityId, psetNames);
61
+ modifiedEntityCount++;
62
+ // Get the FULL mutated property sets for this entity (merged base + mutations)
63
+ const allPsets = this.mutationView.getForEntity(entityId);
64
+ const relevantPsets = allPsets.filter(pset => psetNames.has(pset.name));
65
+ if (relevantPsets.length > 0) {
66
+ newPropertySets.push({ entityId, psets: relevantPsets });
67
+ }
68
+ // Find original property set IDs and relationship IDs to skip
69
+ // Look for IfcRelDefinesByProperties that reference this entity
70
+ for (const [relId, relRef] of this.dataStore.entityIndex.byId) {
71
+ const relType = relRef.type.toUpperCase();
72
+ if (relType === 'IFCRELDEFINESBYPROPERTIES') {
73
+ // Parse the relationship to check if it references our entity
74
+ const relatedEntities = this.getRelatedEntities(relId);
75
+ const relatedPsetId = this.getRelatedPropertySet(relId);
76
+ if (relatedEntities.includes(entityId) && relatedPsetId) {
77
+ // Check if this pset is one we're modifying
78
+ const psetName = this.getPropertySetName(relatedPsetId);
79
+ if (psetName && psetNames.has(psetName)) {
80
+ skipRelationshipIds.add(relId);
81
+ skipPropertySetIds.add(relatedPsetId);
82
+ // Also skip the individual properties in this pset
83
+ const propIds = this.getPropertyIdsInSet(relatedPsetId);
84
+ for (const propId of propIds) {
85
+ skipPropertySetIds.add(propId);
86
+ }
87
+ }
88
+ }
89
+ }
90
+ }
91
+ }
92
+ }
93
+ // If delta only, only export modified entities
94
+ if (options.deltaOnly && modifiedEntities.size === 0) {
95
+ return {
96
+ content: header + 'DATA;\nENDSEC;\nEND-ISO-10303-21;\n',
97
+ stats: {
98
+ entityCount: 0,
99
+ newEntityCount: 0,
100
+ modifiedEntityCount: 0,
101
+ fileSize: 0,
102
+ },
103
+ };
104
+ }
105
+ // Export original entities from source buffer, SKIPPING modified property sets
106
+ if (!options.deltaOnly && this.dataStore.source) {
107
+ const decoder = new TextDecoder();
108
+ const source = this.dataStore.source;
109
+ // Extract existing entities from source
110
+ for (const [expressId, entityRef] of this.dataStore.entityIndex.byId) {
111
+ // Skip property sets/relationships that are being replaced
112
+ if (skipPropertySetIds.has(expressId) || skipRelationshipIds.has(expressId)) {
113
+ continue;
114
+ }
115
+ // Skip if we're only doing geometry or specific types
116
+ const entityType = entityRef.type.toUpperCase();
117
+ // Skip geometry if not included
118
+ if (options.includeGeometry === false && this.isGeometryEntity(entityType)) {
119
+ continue;
120
+ }
121
+ // Get original entity text
122
+ const entityText = decoder.decode(source.subarray(entityRef.byteOffset, entityRef.byteOffset + entityRef.byteLength));
123
+ entities.push(entityText);
124
+ }
125
+ }
126
+ // Generate new property entities for mutations (these REPLACE the skipped ones)
127
+ for (const { entityId, psets } of newPropertySets) {
128
+ const newEntities = this.generatePropertySetEntities(entityId, psets);
129
+ entities.push(...newEntities.lines);
130
+ newEntityCount += newEntities.count;
131
+ }
132
+ // Assemble final file
133
+ const dataSection = entities.join('\n');
134
+ const content = `${header}DATA;\n${dataSection}\nENDSEC;\nEND-ISO-10303-21;\n`;
135
+ return {
136
+ content,
137
+ stats: {
138
+ entityCount: entities.length,
139
+ newEntityCount,
140
+ modifiedEntityCount,
141
+ fileSize: new TextEncoder().encode(content).length,
142
+ },
143
+ };
144
+ }
145
+ /**
146
+ * Export only property/quantity changes (lightweight export)
147
+ */
148
+ exportPropertiesOnly(options) {
149
+ return this.export({
150
+ ...options,
151
+ includeGeometry: false,
152
+ deltaOnly: true,
153
+ });
154
+ }
155
+ /**
156
+ * Generate STEP entities for property sets
157
+ */
158
+ generatePropertySetEntities(entityId, psets) {
159
+ const lines = [];
160
+ let count = 0;
161
+ for (const pset of psets) {
162
+ const propertyIds = [];
163
+ // Create IfcPropertySingleValue for each property
164
+ for (const prop of pset.properties) {
165
+ const propId = this.nextExpressId++;
166
+ count++;
167
+ const valueStr = this.serializePropertyValue(prop.value, prop.type);
168
+ const unitStr = prop.unit ? ref(this.findUnitId(prop.unit)) : null;
169
+ // #ID=IFCPROPERTYSINGLEVALUE('Name',$,Value,Unit);
170
+ const line = `#${propId}=IFCPROPERTYSINGLEVALUE('${this.escapeStepString(prop.name)}',$,${valueStr},${unitStr ? serializeValue(unitStr) : '$'});`;
171
+ lines.push(line);
172
+ propertyIds.push(propId);
173
+ }
174
+ // Create IfcPropertySet
175
+ const psetId = this.nextExpressId++;
176
+ count++;
177
+ const propRefs = propertyIds.map(id => `#${id}`).join(',');
178
+ const globalId = this.generateGlobalId();
179
+ // #ID=IFCPROPERTYSET('GlobalId',$,'Name',$,(#props));
180
+ const psetLine = `#${psetId}=IFCPROPERTYSET('${globalId}',$,'${this.escapeStepString(pset.name)}',$,(${propRefs}));`;
181
+ lines.push(psetLine);
182
+ // Create IfcRelDefinesByProperties to link pset to entity
183
+ const relId = this.nextExpressId++;
184
+ count++;
185
+ const relGlobalId = this.generateGlobalId();
186
+ // #ID=IFCRELDEFINESBYPROPERTIES('GlobalId',$,$,$,(#entity),#pset);
187
+ const relLine = `#${relId}=IFCRELDEFINESBYPROPERTIES('${relGlobalId}',$,$,$,(#${entityId}),#${psetId});`;
188
+ lines.push(relLine);
189
+ }
190
+ return { lines, count };
191
+ }
192
+ /**
193
+ * Serialize a property value to STEP format
194
+ */
195
+ serializePropertyValue(value, type) {
196
+ if (value === null || value === undefined) {
197
+ return '$';
198
+ }
199
+ switch (type) {
200
+ case PropertyValueType.String:
201
+ case PropertyValueType.Label:
202
+ case PropertyValueType.Text:
203
+ return `IFCLABEL('${this.escapeStepString(String(value))}')`;
204
+ case PropertyValueType.Identifier:
205
+ return `IFCIDENTIFIER('${this.escapeStepString(String(value))}')`;
206
+ case PropertyValueType.Real:
207
+ const num = Number(value);
208
+ if (!Number.isFinite(num))
209
+ return '$';
210
+ return `IFCREAL(${num.toString().includes('.') ? num : num + '.'})`;
211
+ case PropertyValueType.Integer:
212
+ return `IFCINTEGER(${Math.round(Number(value))})`;
213
+ case PropertyValueType.Boolean:
214
+ case PropertyValueType.Logical:
215
+ if (value === true)
216
+ return `IFCBOOLEAN(.T.)`;
217
+ if (value === false)
218
+ return `IFCBOOLEAN(.F.)`;
219
+ return `IFCLOGICAL(.U.)`;
220
+ case PropertyValueType.Enum:
221
+ return `.${String(value).toUpperCase()}.`;
222
+ case PropertyValueType.List:
223
+ if (Array.isArray(value)) {
224
+ const items = value.map(v => this.serializePropertyValue(v, PropertyValueType.String));
225
+ return `(${items.join(',')})`;
226
+ }
227
+ return '$';
228
+ default:
229
+ return `IFCLABEL('${this.escapeStepString(String(value))}')`;
230
+ }
231
+ }
232
+ /**
233
+ * Escape a string for STEP format
234
+ */
235
+ escapeStepString(str) {
236
+ return str
237
+ .replace(/\\/g, '\\\\')
238
+ .replace(/'/g, "''");
239
+ }
240
+ /**
241
+ * Generate a new IFC GlobalId (22 character base64)
242
+ */
243
+ generateGlobalId() {
244
+ const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_$';
245
+ let result = '';
246
+ for (let i = 0; i < 22; i++) {
247
+ result += chars[Math.floor(Math.random() * 64)];
248
+ }
249
+ return result;
250
+ }
251
+ /**
252
+ * Find the maximum EXPRESS ID in the data store
253
+ */
254
+ findMaxExpressId() {
255
+ let max = 0;
256
+ for (const [id] of this.dataStore.entityIndex.byId) {
257
+ if (id > max)
258
+ max = id;
259
+ }
260
+ return max;
261
+ }
262
+ /**
263
+ * Find a unit entity ID by name (simplified - returns null for now)
264
+ */
265
+ findUnitId(_unitName) {
266
+ // TODO: Implement unit lookup from data store
267
+ return 0;
268
+ }
269
+ /**
270
+ * Check if an entity type is a geometry-related type
271
+ */
272
+ isGeometryEntity(type) {
273
+ const geometryTypes = new Set([
274
+ 'IFCCARTESIANPOINT',
275
+ 'IFCDIRECTION',
276
+ 'IFCAXIS2PLACEMENT2D',
277
+ 'IFCAXIS2PLACEMENT3D',
278
+ 'IFCLOCALPLACEMENT',
279
+ 'IFCSHAPEREPRESENTATION',
280
+ 'IFCPRODUCTDEFINITIONSHAPE',
281
+ 'IFCGEOMETRICREPRESENTATIONCONTEXT',
282
+ 'IFCGEOMETRICREPRESENTATIONSUBCONTEXT',
283
+ 'IFCEXTRUDEDAREASOLID',
284
+ 'IFCFACETEDBREP',
285
+ 'IFCPOLYLOOP',
286
+ 'IFCFACE',
287
+ 'IFCFACEOUTERBOUND',
288
+ 'IFCCLOSEDSHELL',
289
+ 'IFCRECTANGLEPROFILEDEF',
290
+ 'IFCCIRCLEPROFILEDEF',
291
+ 'IFCARBITRARYCLOSEDPROFILEDEF',
292
+ 'IFCPOLYLINE',
293
+ 'IFCTRIMMEDCURVE',
294
+ 'IFCBSPLINECURVE',
295
+ 'IFCBSPLINESURFACE',
296
+ 'IFCTRIANGULATEDFACESET',
297
+ 'IFCPOLYGONALFACE',
298
+ 'IFCINDEXEDPOLYGONALFACE',
299
+ 'IFCPOLYGONALFACESET',
300
+ 'IFCSTYLEDITEM',
301
+ 'IFCPRESENTATIONSTYLEASSIGNMENT',
302
+ 'IFCSURFACESTYLE',
303
+ 'IFCSURFACESTYLERENDERING',
304
+ 'IFCCOLOURRGB',
305
+ ]);
306
+ return geometryTypes.has(type);
307
+ }
308
+ /**
309
+ * Get entity IDs related by IfcRelDefinesByProperties (the related objects)
310
+ */
311
+ getRelatedEntities(relId) {
312
+ const entityRef = this.dataStore.entityIndex.byId.get(relId);
313
+ if (!entityRef || !this.dataStore.source)
314
+ return [];
315
+ const decoder = new TextDecoder();
316
+ const entityText = decoder.decode(this.dataStore.source.subarray(entityRef.byteOffset, entityRef.byteOffset + entityRef.byteLength));
317
+ // Parse IfcRelDefinesByProperties: #ID=IFCRELDEFINESBYPROPERTIES('guid',$,$,$,(#objects),#pset);
318
+ // The 5th argument (index 4) is the list of related objects
319
+ const match = entityText.match(/\(([^)]+)\)\s*,\s*#(\d+)\s*\)\s*;/);
320
+ if (!match)
321
+ return [];
322
+ const objectsList = match[1];
323
+ const refs = [];
324
+ const refMatches = objectsList.matchAll(/#(\d+)/g);
325
+ for (const m of refMatches) {
326
+ refs.push(parseInt(m[1], 10));
327
+ }
328
+ return refs;
329
+ }
330
+ /**
331
+ * Get the property set ID from IfcRelDefinesByProperties
332
+ */
333
+ getRelatedPropertySet(relId) {
334
+ const entityRef = this.dataStore.entityIndex.byId.get(relId);
335
+ if (!entityRef || !this.dataStore.source)
336
+ return null;
337
+ const decoder = new TextDecoder();
338
+ const entityText = decoder.decode(this.dataStore.source.subarray(entityRef.byteOffset, entityRef.byteOffset + entityRef.byteLength));
339
+ // Last #ID before the closing );
340
+ const match = entityText.match(/,\s*#(\d+)\s*\)\s*;$/);
341
+ if (!match)
342
+ return null;
343
+ return parseInt(match[1], 10);
344
+ }
345
+ /**
346
+ * Get the name of a property set by parsing the entity
347
+ */
348
+ getPropertySetName(psetId) {
349
+ const entityRef = this.dataStore.entityIndex.byId.get(psetId);
350
+ if (!entityRef || !this.dataStore.source)
351
+ return null;
352
+ const decoder = new TextDecoder();
353
+ const entityText = decoder.decode(this.dataStore.source.subarray(entityRef.byteOffset, entityRef.byteOffset + entityRef.byteLength));
354
+ // Parse: IFCPROPERTYSET('guid',$,'Name',$,...) - Name is 3rd argument
355
+ const match = entityText.match(/IFCPROPERTYSET\s*\([^,]*,[^,]*,'([^']*)'/i);
356
+ if (!match)
357
+ return null;
358
+ return match[1];
359
+ }
360
+ /**
361
+ * Get IDs of properties in a property set
362
+ */
363
+ getPropertyIdsInSet(psetId) {
364
+ const entityRef = this.dataStore.entityIndex.byId.get(psetId);
365
+ if (!entityRef || !this.dataStore.source)
366
+ return [];
367
+ const decoder = new TextDecoder();
368
+ const entityText = decoder.decode(this.dataStore.source.subarray(entityRef.byteOffset, entityRef.byteOffset + entityRef.byteLength));
369
+ // Parse: IFCPROPERTYSET(...,(#prop1,#prop2,...)); - Last argument is properties list
370
+ const match = entityText.match(/\(\s*(#[^)]+)\s*\)\s*\)\s*;$/);
371
+ if (!match)
372
+ return [];
373
+ const propsList = match[1];
374
+ const ids = [];
375
+ const refMatches = propsList.matchAll(/#(\d+)/g);
376
+ for (const m of refMatches) {
377
+ ids.push(parseInt(m[1], 10));
378
+ }
379
+ return ids;
380
+ }
381
+ }
382
+ /**
383
+ * Quick export function for simple use cases
384
+ */
385
+ export function exportToStep(dataStore, options) {
386
+ const exporter = new StepExporter(dataStore);
387
+ const result = exporter.export({
388
+ schema: 'IFC4',
389
+ ...options,
390
+ });
391
+ return result.content;
392
+ }
393
+ //# sourceMappingURL=step-exporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-exporter.js","sourceRoot":"","sources":["../src/step-exporter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/export",
3
- "version": "1.3.0",
3
+ "version": "1.6.0",
4
4
  "description": "Export formats for IFC-Lite",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -15,9 +15,10 @@
15
15
  "parquet-wasm": "^0.5.0",
16
16
  "apache-arrow": "^14.0.0",
17
17
  "jszip": "^3.10.0",
18
- "@ifc-lite/geometry": "^1.3.0",
19
- "@ifc-lite/data": "^1.3.0",
20
- "@ifc-lite/parser": "^1.3.0"
18
+ "@ifc-lite/geometry": "^1.6.0",
19
+ "@ifc-lite/data": "^1.6.0",
20
+ "@ifc-lite/parser": "^1.6.0",
21
+ "@ifc-lite/mutations": "^1.6.0"
21
22
  },
22
23
  "devDependencies": {
23
24
  "typescript": "^5.3.0",