@ifc-lite/query 1.0.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/duckdb-integration.d.ts.map +1 -0
- package/dist/duckdb-integration.js.map +1 -0
- package/dist/entity-node.d.ts.map +1 -0
- package/dist/entity-node.js.map +1 -0
- package/dist/entity-query.d.ts.map +1 -0
- package/dist/entity-query.js.map +1 -0
- package/dist/entity-table.d.ts.map +1 -0
- package/dist/entity-table.js.map +1 -0
- package/dist/fluent-api.d.ts.map +1 -0
- package/dist/fluent-api.js.map +1 -0
- package/dist/ifc-query.d.ts.map +1 -0
- package/dist/ifc-query.js.map +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js.map +1 -0
- package/dist/property-table.d.ts.map +1 -0
- package/dist/property-table.js.map +1 -0
- package/dist/query-result-entity.d.ts.map +1 -0
- package/dist/query-result-entity.js.map +1 -0
- package/package.json +5 -5
- package/dist/parser/src/classification-extractor.d.ts +0 -73
- package/dist/parser/src/classification-extractor.d.ts.map +0 -1
- package/dist/parser/src/classification-extractor.js +0 -218
- package/dist/parser/src/classification-extractor.js.map +0 -1
- package/dist/parser/src/columnar-parser.d.ts +0 -43
- package/dist/parser/src/columnar-parser.d.ts.map +0 -1
- package/dist/parser/src/columnar-parser.js +0 -226
- package/dist/parser/src/columnar-parser.js.map +0 -1
- package/dist/parser/src/entity-extractor.d.ts +0 -15
- package/dist/parser/src/entity-extractor.d.ts.map +0 -1
- package/dist/parser/src/entity-extractor.js +0 -144
- package/dist/parser/src/entity-extractor.js.map +0 -1
- package/dist/parser/src/entity-index.d.ts +0 -11
- package/dist/parser/src/entity-index.d.ts.map +0 -1
- package/dist/parser/src/entity-index.js +0 -24
- package/dist/parser/src/entity-index.js.map +0 -1
- package/dist/parser/src/generated/entities.d.ts +0 -6198
- package/dist/parser/src/generated/entities.d.ts.map +0 -1
- package/dist/parser/src/generated/entities.js +0 -5
- package/dist/parser/src/generated/entities.js.map +0 -1
- package/dist/parser/src/generated/enums.d.ts +0 -2260
- package/dist/parser/src/generated/enums.d.ts.map +0 -1
- package/dist/parser/src/generated/enums.js +0 -2470
- package/dist/parser/src/generated/enums.js.map +0 -1
- package/dist/parser/src/generated/schema-registry.d.ts +0 -50
- package/dist/parser/src/generated/schema-registry.d.ts.map +0 -1
- package/dist/parser/src/generated/schema-registry.js +0 -60518
- package/dist/parser/src/generated/schema-registry.js.map +0 -1
- package/dist/parser/src/georef-extractor.d.ts +0 -60
- package/dist/parser/src/georef-extractor.d.ts.map +0 -1
- package/dist/parser/src/georef-extractor.js +0 -200
- package/dist/parser/src/georef-extractor.js.map +0 -1
- package/dist/parser/src/ifc-schema.d.ts +0 -13
- package/dist/parser/src/ifc-schema.d.ts.map +0 -1
- package/dist/parser/src/ifc-schema.js +0 -203
- package/dist/parser/src/ifc-schema.js.map +0 -1
- package/dist/parser/src/index.d.ts +0 -43
- package/dist/parser/src/index.d.ts.map +0 -1
- package/dist/parser/src/index.js +0 -150
- package/dist/parser/src/index.js.map +0 -1
- package/dist/parser/src/material-extractor.d.ts +0 -97
- package/dist/parser/src/material-extractor.d.ts.map +0 -1
- package/dist/parser/src/material-extractor.js +0 -283
- package/dist/parser/src/material-extractor.js.map +0 -1
- package/dist/parser/src/property-extractor.d.ts +0 -23
- package/dist/parser/src/property-extractor.d.ts.map +0 -1
- package/dist/parser/src/property-extractor.js +0 -102
- package/dist/parser/src/property-extractor.js.map +0 -1
- package/dist/parser/src/quantity-extractor.d.ts +0 -64
- package/dist/parser/src/quantity-extractor.d.ts.map +0 -1
- package/dist/parser/src/quantity-extractor.js +0 -202
- package/dist/parser/src/quantity-extractor.js.map +0 -1
- package/dist/parser/src/relationship-extractor.d.ts +0 -18
- package/dist/parser/src/relationship-extractor.d.ts.map +0 -1
- package/dist/parser/src/relationship-extractor.js +0 -91
- package/dist/parser/src/relationship-extractor.js.map +0 -1
- package/dist/parser/src/spatial-hierarchy-builder.d.ts +0 -21
- package/dist/parser/src/spatial-hierarchy-builder.d.ts.map +0 -1
- package/dist/parser/src/spatial-hierarchy-builder.js +0 -201
- package/dist/parser/src/spatial-hierarchy-builder.js.map +0 -1
- package/dist/parser/src/style-extractor.d.ts +0 -83
- package/dist/parser/src/style-extractor.d.ts.map +0 -1
- package/dist/parser/src/style-extractor.js +0 -327
- package/dist/parser/src/style-extractor.js.map +0 -1
- package/dist/parser/src/tokenizer.d.ts +0 -26
- package/dist/parser/src/tokenizer.d.ts.map +0 -1
- package/dist/parser/src/tokenizer.js +0 -181
- package/dist/parser/src/tokenizer.js.map +0 -1
- package/dist/parser/src/types.d.ts +0 -42
- package/dist/parser/src/types.d.ts.map +0 -1
- package/dist/parser/src/types.js +0 -5
- package/dist/parser/src/types.js.map +0 -1
- package/dist/query/src/duckdb-integration.d.ts.map +0 -1
- package/dist/query/src/duckdb-integration.js.map +0 -1
- package/dist/query/src/entity-node.d.ts.map +0 -1
- package/dist/query/src/entity-node.js.map +0 -1
- package/dist/query/src/entity-query.d.ts.map +0 -1
- package/dist/query/src/entity-query.js.map +0 -1
- package/dist/query/src/entity-table.d.ts.map +0 -1
- package/dist/query/src/entity-table.js.map +0 -1
- package/dist/query/src/fluent-api.d.ts.map +0 -1
- package/dist/query/src/fluent-api.js.map +0 -1
- package/dist/query/src/ifc-query.d.ts.map +0 -1
- package/dist/query/src/ifc-query.js.map +0 -1
- package/dist/query/src/index.d.ts.map +0 -1
- package/dist/query/src/index.js.map +0 -1
- package/dist/query/src/property-table.d.ts.map +0 -1
- package/dist/query/src/property-table.js.map +0 -1
- package/dist/query/src/query-result-entity.d.ts.map +0 -1
- package/dist/query/src/query-result-entity.js.map +0 -1
- /package/dist/{query/src/duckdb-integration.d.ts → duckdb-integration.d.ts} +0 -0
- /package/dist/{query/src/duckdb-integration.js → duckdb-integration.js} +0 -0
- /package/dist/{query/src/entity-node.d.ts → entity-node.d.ts} +0 -0
- /package/dist/{query/src/entity-node.js → entity-node.js} +0 -0
- /package/dist/{query/src/entity-query.d.ts → entity-query.d.ts} +0 -0
- /package/dist/{query/src/entity-query.js → entity-query.js} +0 -0
- /package/dist/{query/src/entity-table.d.ts → entity-table.d.ts} +0 -0
- /package/dist/{query/src/entity-table.js → entity-table.js} +0 -0
- /package/dist/{query/src/fluent-api.d.ts → fluent-api.d.ts} +0 -0
- /package/dist/{query/src/fluent-api.js → fluent-api.js} +0 -0
- /package/dist/{query/src/ifc-query.d.ts → ifc-query.d.ts} +0 -0
- /package/dist/{query/src/ifc-query.js → ifc-query.js} +0 -0
- /package/dist/{query/src/index.d.ts → index.d.ts} +0 -0
- /package/dist/{query/src/index.js → index.js} +0 -0
- /package/dist/{query/src/property-table.d.ts → property-table.d.ts} +0 -0
- /package/dist/{query/src/property-table.js → property-table.js} +0 -0
- /package/dist/{query/src/query-result-entity.d.ts → query-result-entity.d.ts} +0 -0
- /package/dist/{query/src/query-result-entity.js → query-result-entity.js} +0 -0
package/dist/parser/src/index.js
DELETED
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
-
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
-
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
-
/**
|
|
5
|
-
* @ifc-lite/parser - Main parser interface
|
|
6
|
-
*/
|
|
7
|
-
export { StepTokenizer } from './tokenizer.js';
|
|
8
|
-
export { EntityIndexBuilder } from './entity-index.js';
|
|
9
|
-
export { EntityExtractor } from './entity-extractor.js';
|
|
10
|
-
export { PropertyExtractor } from './property-extractor.js';
|
|
11
|
-
export { QuantityExtractor } from './quantity-extractor.js';
|
|
12
|
-
export { RelationshipExtractor } from './relationship-extractor.js';
|
|
13
|
-
export { StyleExtractor } from './style-extractor.js';
|
|
14
|
-
export { SpatialHierarchyBuilder } from './spatial-hierarchy-builder.js';
|
|
15
|
-
export { ColumnarParser } from './columnar-parser.js';
|
|
16
|
-
// New extractors with 100% schema coverage
|
|
17
|
-
export { extractMaterials, getMaterialForElement, getMaterialNameForElement } from './material-extractor.js';
|
|
18
|
-
export { extractGeoreferencing, transformToWorld, transformToLocal, getCoordinateSystemDescription } from './georef-extractor.js';
|
|
19
|
-
export { extractClassifications, getClassificationsForElement, getClassificationCodeForElement, getClassificationPath, groupElementsByClassification } from './classification-extractor.js';
|
|
20
|
-
// Generated IFC4 schema (100% coverage - 776 entities, 397 types, 207 enums)
|
|
21
|
-
export { SCHEMA_REGISTRY, getEntityMetadata, getAllAttributesForEntity, getInheritanceChainForEntity, isKnownEntity } from './generated/schema-registry.js';
|
|
22
|
-
export * from './generated/enums.js';
|
|
23
|
-
export * from './types.js';
|
|
24
|
-
export * from './style-extractor.js';
|
|
25
|
-
export { getAttributeNames, getAttributeNameAt, isKnownType } from './ifc-schema.js';
|
|
26
|
-
import { StepTokenizer } from './tokenizer.js';
|
|
27
|
-
import { EntityIndexBuilder } from './entity-index.js';
|
|
28
|
-
import { EntityExtractor } from './entity-extractor.js';
|
|
29
|
-
import { PropertyExtractor } from './property-extractor.js';
|
|
30
|
-
import { RelationshipExtractor } from './relationship-extractor.js';
|
|
31
|
-
import { ColumnarParser } from './columnar-parser.js';
|
|
32
|
-
/**
|
|
33
|
-
* Main parser class
|
|
34
|
-
*/
|
|
35
|
-
export class IfcParser {
|
|
36
|
-
/**
|
|
37
|
-
* Parse IFC file into structured data
|
|
38
|
-
*/
|
|
39
|
-
async parse(buffer, options = {}) {
|
|
40
|
-
const uint8Buffer = new Uint8Array(buffer);
|
|
41
|
-
// Phase 1: Scan for entities
|
|
42
|
-
options.onProgress?.({ phase: 'scan', percent: 0 });
|
|
43
|
-
const tokenizer = new StepTokenizer(uint8Buffer);
|
|
44
|
-
const indexBuilder = new EntityIndexBuilder();
|
|
45
|
-
let scanned = 0;
|
|
46
|
-
const entityRefs = [];
|
|
47
|
-
for (const ref of tokenizer.scanEntities()) {
|
|
48
|
-
indexBuilder.addEntity({
|
|
49
|
-
expressId: ref.expressId,
|
|
50
|
-
type: ref.type,
|
|
51
|
-
byteOffset: ref.offset,
|
|
52
|
-
byteLength: ref.length,
|
|
53
|
-
lineNumber: ref.line,
|
|
54
|
-
});
|
|
55
|
-
entityRefs.push({
|
|
56
|
-
expressId: ref.expressId,
|
|
57
|
-
type: ref.type,
|
|
58
|
-
byteOffset: ref.offset,
|
|
59
|
-
byteLength: ref.length,
|
|
60
|
-
lineNumber: ref.line,
|
|
61
|
-
});
|
|
62
|
-
scanned++;
|
|
63
|
-
}
|
|
64
|
-
const entityIndex = indexBuilder.build();
|
|
65
|
-
options.onProgress?.({ phase: 'scan', percent: 100 });
|
|
66
|
-
// Phase 2: Extract entities
|
|
67
|
-
options.onProgress?.({ phase: 'extract', percent: 0 });
|
|
68
|
-
const extractor = new EntityExtractor(uint8Buffer);
|
|
69
|
-
const entities = new Map();
|
|
70
|
-
for (let i = 0; i < entityRefs.length; i++) {
|
|
71
|
-
const ref = entityRefs[i];
|
|
72
|
-
const entity = extractor.extractEntity(ref);
|
|
73
|
-
if (entity) {
|
|
74
|
-
entities.set(ref.expressId, entity);
|
|
75
|
-
}
|
|
76
|
-
if ((i + 1) % 1000 === 0) {
|
|
77
|
-
options.onProgress?.({ phase: 'extract', percent: ((i + 1) / entityRefs.length) * 100 });
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
options.onProgress?.({ phase: 'extract', percent: 100 });
|
|
81
|
-
// Phase 3: Extract properties
|
|
82
|
-
options.onProgress?.({ phase: 'properties', percent: 0 });
|
|
83
|
-
const propertyExtractor = new PropertyExtractor(entities);
|
|
84
|
-
const propertySets = propertyExtractor.extractPropertySets();
|
|
85
|
-
options.onProgress?.({ phase: 'properties', percent: 100 });
|
|
86
|
-
// Phase 4: Extract relationships
|
|
87
|
-
options.onProgress?.({ phase: 'relationships', percent: 0 });
|
|
88
|
-
const relationshipExtractor = new RelationshipExtractor(entities);
|
|
89
|
-
const relationships = relationshipExtractor.extractRelationships();
|
|
90
|
-
options.onProgress?.({ phase: 'relationships', percent: 100 });
|
|
91
|
-
return {
|
|
92
|
-
entities,
|
|
93
|
-
propertySets,
|
|
94
|
-
relationships,
|
|
95
|
-
entityIndex,
|
|
96
|
-
fileSize: buffer.byteLength,
|
|
97
|
-
entityCount: entities.size,
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Parse IFC file into columnar data store (new format)
|
|
102
|
-
*/
|
|
103
|
-
async parseColumnar(buffer, options = {}) {
|
|
104
|
-
const uint8Buffer = new Uint8Array(buffer);
|
|
105
|
-
// Phase 1: Scan for entities
|
|
106
|
-
options.onProgress?.({ phase: 'scan', percent: 0 });
|
|
107
|
-
const tokenizer = new StepTokenizer(uint8Buffer);
|
|
108
|
-
const indexBuilder = new EntityIndexBuilder();
|
|
109
|
-
let scanned = 0;
|
|
110
|
-
const entityRefs = [];
|
|
111
|
-
for (const ref of tokenizer.scanEntities()) {
|
|
112
|
-
indexBuilder.addEntity({
|
|
113
|
-
expressId: ref.expressId,
|
|
114
|
-
type: ref.type,
|
|
115
|
-
byteOffset: ref.offset,
|
|
116
|
-
byteLength: ref.length,
|
|
117
|
-
lineNumber: ref.line,
|
|
118
|
-
});
|
|
119
|
-
entityRefs.push({
|
|
120
|
-
expressId: ref.expressId,
|
|
121
|
-
type: ref.type,
|
|
122
|
-
byteOffset: ref.offset,
|
|
123
|
-
byteLength: ref.length,
|
|
124
|
-
lineNumber: ref.line,
|
|
125
|
-
});
|
|
126
|
-
scanned++;
|
|
127
|
-
}
|
|
128
|
-
indexBuilder.build();
|
|
129
|
-
options.onProgress?.({ phase: 'scan', percent: 100 });
|
|
130
|
-
// Phase 2: Extract entities
|
|
131
|
-
options.onProgress?.({ phase: 'extract', percent: 0 });
|
|
132
|
-
const extractor = new EntityExtractor(uint8Buffer);
|
|
133
|
-
const entities = new Map();
|
|
134
|
-
for (let i = 0; i < entityRefs.length; i++) {
|
|
135
|
-
const ref = entityRefs[i];
|
|
136
|
-
const entity = extractor.extractEntity(ref);
|
|
137
|
-
if (entity) {
|
|
138
|
-
entities.set(ref.expressId, entity);
|
|
139
|
-
}
|
|
140
|
-
if ((i + 1) % 1000 === 0) {
|
|
141
|
-
options.onProgress?.({ phase: 'extract', percent: ((i + 1) / entityRefs.length) * 100 });
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
options.onProgress?.({ phase: 'extract', percent: 100 });
|
|
145
|
-
// Phase 3: Build columnar structures
|
|
146
|
-
const columnarParser = new ColumnarParser();
|
|
147
|
-
return columnarParser.parse(buffer, entityRefs, entities, options);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../parser/src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAqB,MAAM,sBAAsB,CAAC;AAEzE,2CAA2C;AAC3C,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,yBAAyB,EAAgF,MAAM,yBAAyB,CAAC;AAC3L,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,8BAA8B,EAAgE,MAAM,uBAAuB,CAAC;AAChM,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,+BAA+B,EAAE,qBAAqB,EAAE,6BAA6B,EAA+E,MAAM,+BAA+B,CAAC;AAEzQ,6EAA6E;AAC7E,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,4BAA4B,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE5J,cAAc,sBAAsB,CAAC;AAErC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGrF,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAqB,MAAM,sBAAsB,CAAC;AAMzE;;GAEG;AACH,MAAM,OAAO,SAAS;IACpB;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,MAAmB,EAAE,UAAwB,EAAE;QACzD,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QAE3C,6BAA6B;QAC7B,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAE9C,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,UAAU,GAAgB,EAAE,CAAC;QAEnC,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,YAAY,EAAE,EAAE,CAAC;YAC3C,YAAY,CAAC,SAAS,CAAC;gBACrB,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,UAAU,EAAE,GAAG,CAAC,MAAM;gBACtB,UAAU,EAAE,GAAG,CAAC,MAAM;gBACtB,UAAU,EAAE,GAAG,CAAC,IAAI;aACrB,CAAC,CAAC;YACH,UAAU,CAAC,IAAI,CAAC;gBACd,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,UAAU,EAAE,GAAG,CAAC,MAAM;gBACtB,UAAU,EAAE,GAAG,CAAC,MAAM;gBACtB,UAAU,EAAE,GAAG,CAAC,IAAI;aACrB,CAAC,CAAC;YACH,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;QACzC,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAEtD,4BAA4B;QAC5B,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAe,CAAC;QAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,MAAM,EAAE,CAAC;gBACX,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACtC,CAAC;YACD,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;QAED,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAEzD,8BAA8B;QAC9B,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1D,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,iBAAiB,CAAC,mBAAmB,EAAE,CAAC;QAC7D,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAE5D,iCAAiC;QACjC,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7D,MAAM,qBAAqB,GAAG,IAAI,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAClE,MAAM,aAAa,GAAG,qBAAqB,CAAC,oBAAoB,EAAE,CAAC;QACnE,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAE/D,OAAO;YACL,QAAQ;YACR,YAAY;YACZ,aAAa;YACb,WAAW;YACX,QAAQ,EAAE,MAAM,CAAC,UAAU;YAC3B,WAAW,EAAE,QAAQ,CAAC,IAAI;SAC3B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,MAAmB,EAAE,UAAwB,EAAE;QACjE,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QAE3C,6BAA6B;QAC7B,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAE9C,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,UAAU,GAAgB,EAAE,CAAC;QAEnC,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,YAAY,EAAE,EAAE,CAAC;YAC3C,YAAY,CAAC,SAAS,CAAC;gBACrB,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,UAAU,EAAE,GAAG,CAAC,MAAM;gBACtB,UAAU,EAAE,GAAG,CAAC,MAAM;gBACtB,UAAU,EAAE,GAAG,CAAC,IAAI;aACrB,CAAC,CAAC;YACH,UAAU,CAAC,IAAI,CAAC;gBACd,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,UAAU,EAAE,GAAG,CAAC,MAAM;gBACtB,UAAU,EAAE,GAAG,CAAC,MAAM;gBACtB,UAAU,EAAE,GAAG,CAAC,IAAI;aACrB,CAAC,CAAC;YACH,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,YAAY,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAEtD,4BAA4B;QAC5B,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAe,CAAC;QAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,MAAM,EAAE,CAAC;gBACX,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACtC,CAAC;YACD,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;QAED,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAEzD,qCAAqC;QACrC,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;QAC5C,OAAO,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;CACF"}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Material Extractor
|
|
3
|
-
*
|
|
4
|
-
* Extracts IFC material definitions and associations.
|
|
5
|
-
*
|
|
6
|
-
* Material concepts in IFC:
|
|
7
|
-
* - IfcMaterial: Basic material (concrete, steel, wood, etc.)
|
|
8
|
-
* - IfcMaterialLayer: Material with thickness (e.g., in walls)
|
|
9
|
-
* - IfcMaterialLayerSet: Set of layers (e.g., multi-layer wall)
|
|
10
|
-
* - IfcMaterialProfile: Material with profile shape
|
|
11
|
-
* - IfcMaterialProfileSet: Set of profiles (e.g., structural members)
|
|
12
|
-
* - IfcMaterialConstituent: Material as part of a composite
|
|
13
|
-
* - IfcMaterialConstituentSet: Set of constituents
|
|
14
|
-
* - IfcRelAssociatesMaterial: Associates materials with elements
|
|
15
|
-
*/
|
|
16
|
-
import type { IfcEntity } from './entity-extractor';
|
|
17
|
-
export interface Material {
|
|
18
|
-
id: number;
|
|
19
|
-
name: string;
|
|
20
|
-
description?: string;
|
|
21
|
-
category?: string;
|
|
22
|
-
}
|
|
23
|
-
export interface MaterialLayer {
|
|
24
|
-
id: number;
|
|
25
|
-
material: number;
|
|
26
|
-
thickness: number;
|
|
27
|
-
isVentilated?: boolean;
|
|
28
|
-
name?: string;
|
|
29
|
-
description?: string;
|
|
30
|
-
category?: string;
|
|
31
|
-
priority?: number;
|
|
32
|
-
}
|
|
33
|
-
export interface MaterialLayerSet {
|
|
34
|
-
id: number;
|
|
35
|
-
name?: string;
|
|
36
|
-
description?: string;
|
|
37
|
-
layers: number[];
|
|
38
|
-
totalThickness?: number;
|
|
39
|
-
}
|
|
40
|
-
export interface MaterialProfile {
|
|
41
|
-
id: number;
|
|
42
|
-
name?: string;
|
|
43
|
-
description?: string;
|
|
44
|
-
material?: number;
|
|
45
|
-
profile?: number;
|
|
46
|
-
priority?: number;
|
|
47
|
-
category?: string;
|
|
48
|
-
}
|
|
49
|
-
export interface MaterialProfileSet {
|
|
50
|
-
id: number;
|
|
51
|
-
name?: string;
|
|
52
|
-
description?: string;
|
|
53
|
-
profiles: number[];
|
|
54
|
-
}
|
|
55
|
-
export interface MaterialConstituent {
|
|
56
|
-
id: number;
|
|
57
|
-
name?: string;
|
|
58
|
-
description?: string;
|
|
59
|
-
material: number;
|
|
60
|
-
fraction?: number;
|
|
61
|
-
category?: string;
|
|
62
|
-
}
|
|
63
|
-
export interface MaterialConstituentSet {
|
|
64
|
-
id: number;
|
|
65
|
-
name?: string;
|
|
66
|
-
description?: string;
|
|
67
|
-
constituents: number[];
|
|
68
|
-
}
|
|
69
|
-
export interface MaterialAssociation {
|
|
70
|
-
relationshipId: number;
|
|
71
|
-
relatingMaterialId: number;
|
|
72
|
-
materialType: 'Material' | 'LayerSet' | 'ProfileSet' | 'ConstituentSet';
|
|
73
|
-
relatedObjects: number[];
|
|
74
|
-
}
|
|
75
|
-
export interface MaterialsData {
|
|
76
|
-
materials: Map<number, Material>;
|
|
77
|
-
materialLayers: Map<number, MaterialLayer>;
|
|
78
|
-
materialLayerSets: Map<number, MaterialLayerSet>;
|
|
79
|
-
materialProfiles: Map<number, MaterialProfile>;
|
|
80
|
-
materialProfileSets: Map<number, MaterialProfileSet>;
|
|
81
|
-
materialConstituents: Map<number, MaterialConstituent>;
|
|
82
|
-
materialConstituentSets: Map<number, MaterialConstituentSet>;
|
|
83
|
-
associations: MaterialAssociation[];
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Extract materials from IFC entities
|
|
87
|
-
*/
|
|
88
|
-
export declare function extractMaterials(entities: Map<number, IfcEntity>, entitiesByType: Map<string, number[]>): MaterialsData;
|
|
89
|
-
/**
|
|
90
|
-
* Get material for an element
|
|
91
|
-
*/
|
|
92
|
-
export declare function getMaterialForElement(elementId: number, materialsData: MaterialsData): number | undefined;
|
|
93
|
-
/**
|
|
94
|
-
* Get material name for an element
|
|
95
|
-
*/
|
|
96
|
-
export declare function getMaterialNameForElement(elementId: number, materialsData: MaterialsData): string | undefined;
|
|
97
|
-
//# sourceMappingURL=material-extractor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"material-extractor.d.ts","sourceRoot":"","sources":["../../../../parser/src/material-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,283 +0,0 @@
|
|
|
1
|
-
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
-
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
-
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
-
/**
|
|
5
|
-
* Extract materials from IFC entities
|
|
6
|
-
*/
|
|
7
|
-
export function extractMaterials(entities, entitiesByType) {
|
|
8
|
-
const data = {
|
|
9
|
-
materials: new Map(),
|
|
10
|
-
materialLayers: new Map(),
|
|
11
|
-
materialLayerSets: new Map(),
|
|
12
|
-
materialProfiles: new Map(),
|
|
13
|
-
materialProfileSets: new Map(),
|
|
14
|
-
materialConstituents: new Map(),
|
|
15
|
-
materialConstituentSets: new Map(),
|
|
16
|
-
associations: [],
|
|
17
|
-
};
|
|
18
|
-
// Extract IfcMaterial
|
|
19
|
-
const materialIds = entitiesByType.get('IfcMaterial') || [];
|
|
20
|
-
for (const id of materialIds) {
|
|
21
|
-
const entity = entities.get(id);
|
|
22
|
-
if (entity) {
|
|
23
|
-
data.materials.set(id, extractMaterial(entity));
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
// Extract IfcMaterialLayer
|
|
27
|
-
const layerIds = entitiesByType.get('IfcMaterialLayer') || [];
|
|
28
|
-
for (const id of layerIds) {
|
|
29
|
-
const entity = entities.get(id);
|
|
30
|
-
if (entity) {
|
|
31
|
-
data.materialLayers.set(id, extractMaterialLayer(entity, entities));
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
// Extract IfcMaterialLayerSet
|
|
35
|
-
const layerSetIds = entitiesByType.get('IfcMaterialLayerSet') || [];
|
|
36
|
-
for (const id of layerSetIds) {
|
|
37
|
-
const entity = entities.get(id);
|
|
38
|
-
if (entity) {
|
|
39
|
-
data.materialLayerSets.set(id, extractMaterialLayerSet(entity, entities));
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
// Extract IfcMaterialProfile
|
|
43
|
-
const profileIds = entitiesByType.get('IfcMaterialProfile') || [];
|
|
44
|
-
for (const id of profileIds) {
|
|
45
|
-
const entity = entities.get(id);
|
|
46
|
-
if (entity) {
|
|
47
|
-
data.materialProfiles.set(id, extractMaterialProfile(entity, entities));
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
// Extract IfcMaterialProfileSet
|
|
51
|
-
const profileSetIds = entitiesByType.get('IfcMaterialProfileSet') || [];
|
|
52
|
-
for (const id of profileSetIds) {
|
|
53
|
-
const entity = entities.get(id);
|
|
54
|
-
if (entity) {
|
|
55
|
-
data.materialProfileSets.set(id, extractMaterialProfileSet(entity, entities));
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
// Extract IfcMaterialConstituent
|
|
59
|
-
const constituentIds = entitiesByType.get('IfcMaterialConstituent') || [];
|
|
60
|
-
for (const id of constituentIds) {
|
|
61
|
-
const entity = entities.get(id);
|
|
62
|
-
if (entity) {
|
|
63
|
-
data.materialConstituents.set(id, extractMaterialConstituent(entity, entities));
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
// Extract IfcMaterialConstituentSet
|
|
67
|
-
const constituentSetIds = entitiesByType.get('IfcMaterialConstituentSet') || [];
|
|
68
|
-
for (const id of constituentSetIds) {
|
|
69
|
-
const entity = entities.get(id);
|
|
70
|
-
if (entity) {
|
|
71
|
-
data.materialConstituentSets.set(id, extractMaterialConstituentSet(entity, entities));
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
// Extract IfcRelAssociatesMaterial relationships
|
|
75
|
-
const relIds = entitiesByType.get('IfcRelAssociatesMaterial') || [];
|
|
76
|
-
for (const id of relIds) {
|
|
77
|
-
const entity = entities.get(id);
|
|
78
|
-
if (entity) {
|
|
79
|
-
const association = extractMaterialAssociation(entity, entities);
|
|
80
|
-
if (association) {
|
|
81
|
-
data.associations.push(association);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
return data;
|
|
86
|
-
}
|
|
87
|
-
function extractMaterial(entity) {
|
|
88
|
-
return {
|
|
89
|
-
id: entity.id,
|
|
90
|
-
name: getString(entity.attributes[0]) || '',
|
|
91
|
-
description: getString(entity.attributes[1]),
|
|
92
|
-
category: getString(entity.attributes[2]),
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
function extractMaterialLayer(entity, entities) {
|
|
96
|
-
const materialRef = getReference(entity.attributes[0]);
|
|
97
|
-
const thickness = getNumber(entity.attributes[1]) || 0;
|
|
98
|
-
return {
|
|
99
|
-
id: entity.id,
|
|
100
|
-
material: materialRef || 0,
|
|
101
|
-
thickness,
|
|
102
|
-
isVentilated: getBoolean(entity.attributes[2]),
|
|
103
|
-
name: getString(entity.attributes[3]),
|
|
104
|
-
description: getString(entity.attributes[4]),
|
|
105
|
-
category: getString(entity.attributes[5]),
|
|
106
|
-
priority: getNumber(entity.attributes[6]),
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
function extractMaterialLayerSet(entity, entities) {
|
|
110
|
-
const layers = getReferences(entity.attributes[0]) || [];
|
|
111
|
-
const name = getString(entity.attributes[1]);
|
|
112
|
-
const description = getString(entity.attributes[2]);
|
|
113
|
-
// Calculate total thickness
|
|
114
|
-
let totalThickness = 0;
|
|
115
|
-
for (const layerId of layers) {
|
|
116
|
-
const layerEntity = entities.get(layerId);
|
|
117
|
-
if (layerEntity) {
|
|
118
|
-
const thickness = getNumber(layerEntity.attributes[1]) || 0;
|
|
119
|
-
totalThickness += thickness;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
return {
|
|
123
|
-
id: entity.id,
|
|
124
|
-
name,
|
|
125
|
-
description,
|
|
126
|
-
layers,
|
|
127
|
-
totalThickness,
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
function extractMaterialProfile(entity, entities) {
|
|
131
|
-
return {
|
|
132
|
-
id: entity.id,
|
|
133
|
-
name: getString(entity.attributes[0]),
|
|
134
|
-
description: getString(entity.attributes[1]),
|
|
135
|
-
material: getReference(entity.attributes[2]),
|
|
136
|
-
profile: getReference(entity.attributes[3]),
|
|
137
|
-
priority: getNumber(entity.attributes[4]),
|
|
138
|
-
category: getString(entity.attributes[5]),
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
function extractMaterialProfileSet(entity, entities) {
|
|
142
|
-
return {
|
|
143
|
-
id: entity.id,
|
|
144
|
-
name: getString(entity.attributes[0]),
|
|
145
|
-
description: getString(entity.attributes[1]),
|
|
146
|
-
profiles: getReferences(entity.attributes[2]) || [],
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
function extractMaterialConstituent(entity, entities) {
|
|
150
|
-
return {
|
|
151
|
-
id: entity.id,
|
|
152
|
-
name: getString(entity.attributes[0]),
|
|
153
|
-
description: getString(entity.attributes[1]),
|
|
154
|
-
material: getReference(entity.attributes[2]) || 0,
|
|
155
|
-
fraction: getNumber(entity.attributes[3]),
|
|
156
|
-
category: getString(entity.attributes[4]),
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
function extractMaterialConstituentSet(entity, entities) {
|
|
160
|
-
return {
|
|
161
|
-
id: entity.id,
|
|
162
|
-
name: getString(entity.attributes[0]),
|
|
163
|
-
description: getString(entity.attributes[1]),
|
|
164
|
-
constituents: getReferences(entity.attributes[2]) || [],
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
function extractMaterialAssociation(entity, entities) {
|
|
168
|
-
// IfcRelAssociatesMaterial attributes:
|
|
169
|
-
// [0] GlobalId
|
|
170
|
-
// [1] OwnerHistory
|
|
171
|
-
// [2] Name
|
|
172
|
-
// [3] Description
|
|
173
|
-
// [4] RelatedObjects (list of elements)
|
|
174
|
-
// [5] RelatingMaterial (Material, LayerSet, ProfileSet, or ConstituentSet)
|
|
175
|
-
const relatedObjects = getReferences(entity.attributes[4]) || [];
|
|
176
|
-
const relatingMaterialRef = getReference(entity.attributes[5]);
|
|
177
|
-
if (!relatingMaterialRef) {
|
|
178
|
-
return null;
|
|
179
|
-
}
|
|
180
|
-
const materialEntity = entities.get(relatingMaterialRef);
|
|
181
|
-
if (!materialEntity) {
|
|
182
|
-
return null;
|
|
183
|
-
}
|
|
184
|
-
// Determine material type
|
|
185
|
-
let materialType = 'Material';
|
|
186
|
-
if (materialEntity.type === 'IfcMaterialLayerSet') {
|
|
187
|
-
materialType = 'LayerSet';
|
|
188
|
-
}
|
|
189
|
-
else if (materialEntity.type === 'IfcMaterialProfileSet') {
|
|
190
|
-
materialType = 'ProfileSet';
|
|
191
|
-
}
|
|
192
|
-
else if (materialEntity.type === 'IfcMaterialConstituentSet') {
|
|
193
|
-
materialType = 'ConstituentSet';
|
|
194
|
-
}
|
|
195
|
-
return {
|
|
196
|
-
relationshipId: entity.id,
|
|
197
|
-
relatingMaterialId: relatingMaterialRef,
|
|
198
|
-
materialType,
|
|
199
|
-
relatedObjects,
|
|
200
|
-
};
|
|
201
|
-
}
|
|
202
|
-
// Helper functions to parse attribute values
|
|
203
|
-
function getString(value) {
|
|
204
|
-
if (value === null || value === undefined)
|
|
205
|
-
return undefined;
|
|
206
|
-
if (typeof value === 'string')
|
|
207
|
-
return value;
|
|
208
|
-
return String(value);
|
|
209
|
-
}
|
|
210
|
-
function getNumber(value) {
|
|
211
|
-
if (value === null || value === undefined)
|
|
212
|
-
return undefined;
|
|
213
|
-
if (typeof value === 'number')
|
|
214
|
-
return value;
|
|
215
|
-
const num = parseFloat(value);
|
|
216
|
-
return isNaN(num) ? undefined : num;
|
|
217
|
-
}
|
|
218
|
-
function getBoolean(value) {
|
|
219
|
-
if (value === null || value === undefined)
|
|
220
|
-
return undefined;
|
|
221
|
-
if (typeof value === 'boolean')
|
|
222
|
-
return value;
|
|
223
|
-
if (value === '.T.' || value === 'T' || value === 'true')
|
|
224
|
-
return true;
|
|
225
|
-
if (value === '.F.' || value === 'F' || value === 'false')
|
|
226
|
-
return false;
|
|
227
|
-
return undefined;
|
|
228
|
-
}
|
|
229
|
-
function getReference(value) {
|
|
230
|
-
if (value === null || value === undefined)
|
|
231
|
-
return undefined;
|
|
232
|
-
if (typeof value === 'number')
|
|
233
|
-
return value;
|
|
234
|
-
if (typeof value === 'string' && value.startsWith('#')) {
|
|
235
|
-
return parseInt(value.substring(1));
|
|
236
|
-
}
|
|
237
|
-
return undefined;
|
|
238
|
-
}
|
|
239
|
-
function getReferences(value) {
|
|
240
|
-
if (!Array.isArray(value))
|
|
241
|
-
return undefined;
|
|
242
|
-
return value
|
|
243
|
-
.map(v => getReference(v))
|
|
244
|
-
.filter(ref => ref !== undefined);
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* Get material for an element
|
|
248
|
-
*/
|
|
249
|
-
export function getMaterialForElement(elementId, materialsData) {
|
|
250
|
-
// Find association for this element
|
|
251
|
-
for (const assoc of materialsData.associations) {
|
|
252
|
-
if (assoc.relatedObjects.includes(elementId)) {
|
|
253
|
-
return assoc.relatingMaterialId;
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
return undefined;
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Get material name for an element
|
|
260
|
-
*/
|
|
261
|
-
export function getMaterialNameForElement(elementId, materialsData) {
|
|
262
|
-
const materialId = getMaterialForElement(elementId, materialsData);
|
|
263
|
-
if (!materialId)
|
|
264
|
-
return undefined;
|
|
265
|
-
// Check if it's a simple material
|
|
266
|
-
const material = materialsData.materials.get(materialId);
|
|
267
|
-
if (material)
|
|
268
|
-
return material.name;
|
|
269
|
-
// Check if it's a layer set
|
|
270
|
-
const layerSet = materialsData.materialLayerSets.get(materialId);
|
|
271
|
-
if (layerSet)
|
|
272
|
-
return layerSet.name;
|
|
273
|
-
// Check if it's a profile set
|
|
274
|
-
const profileSet = materialsData.materialProfileSets.get(materialId);
|
|
275
|
-
if (profileSet)
|
|
276
|
-
return profileSet.name;
|
|
277
|
-
// Check if it's a constituent set
|
|
278
|
-
const constituentSet = materialsData.materialConstituentSets.get(materialId);
|
|
279
|
-
if (constituentSet)
|
|
280
|
-
return constituentSet.name;
|
|
281
|
-
return undefined;
|
|
282
|
-
}
|
|
283
|
-
//# sourceMappingURL=material-extractor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"material-extractor.js","sourceRoot":"","sources":["../../../../parser/src/material-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Property extractor - extracts PropertySets and their values
|
|
3
|
-
*/
|
|
4
|
-
import type { IfcEntity, PropertySet } from './types.js';
|
|
5
|
-
export declare class PropertyExtractor {
|
|
6
|
-
private entities;
|
|
7
|
-
constructor(entities: Map<number, IfcEntity>);
|
|
8
|
-
/**
|
|
9
|
-
* Extract all PropertySets from entities
|
|
10
|
-
*/
|
|
11
|
-
extractPropertySets(): Map<number, PropertySet>;
|
|
12
|
-
/**
|
|
13
|
-
* Extract PropertySet from entity
|
|
14
|
-
*/
|
|
15
|
-
private extractPropertySet;
|
|
16
|
-
/**
|
|
17
|
-
* Extract property from IfcProperty entity
|
|
18
|
-
*/
|
|
19
|
-
private extractProperty;
|
|
20
|
-
private parsePropertyValue;
|
|
21
|
-
private getAttributeValue;
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=property-extractor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"property-extractor.d.ts","sourceRoot":"","sources":["../../../../parser/src/property-extractor.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAiB,MAAM,YAAY,CAAC;AAExE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAyB;gBAE7B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC;IAI5C;;OAEG;IACH,mBAAmB,IAAI,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC;IAgB/C;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgC1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,kBAAkB;IAyB1B,OAAO,CAAC,iBAAiB;CAM1B"}
|