@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.
Files changed (127) hide show
  1. package/dist/duckdb-integration.d.ts.map +1 -0
  2. package/dist/duckdb-integration.js.map +1 -0
  3. package/dist/entity-node.d.ts.map +1 -0
  4. package/dist/entity-node.js.map +1 -0
  5. package/dist/entity-query.d.ts.map +1 -0
  6. package/dist/entity-query.js.map +1 -0
  7. package/dist/entity-table.d.ts.map +1 -0
  8. package/dist/entity-table.js.map +1 -0
  9. package/dist/fluent-api.d.ts.map +1 -0
  10. package/dist/fluent-api.js.map +1 -0
  11. package/dist/ifc-query.d.ts.map +1 -0
  12. package/dist/ifc-query.js.map +1 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/property-table.d.ts.map +1 -0
  16. package/dist/property-table.js.map +1 -0
  17. package/dist/query-result-entity.d.ts.map +1 -0
  18. package/dist/query-result-entity.js.map +1 -0
  19. package/package.json +5 -5
  20. package/dist/parser/src/classification-extractor.d.ts +0 -73
  21. package/dist/parser/src/classification-extractor.d.ts.map +0 -1
  22. package/dist/parser/src/classification-extractor.js +0 -218
  23. package/dist/parser/src/classification-extractor.js.map +0 -1
  24. package/dist/parser/src/columnar-parser.d.ts +0 -43
  25. package/dist/parser/src/columnar-parser.d.ts.map +0 -1
  26. package/dist/parser/src/columnar-parser.js +0 -226
  27. package/dist/parser/src/columnar-parser.js.map +0 -1
  28. package/dist/parser/src/entity-extractor.d.ts +0 -15
  29. package/dist/parser/src/entity-extractor.d.ts.map +0 -1
  30. package/dist/parser/src/entity-extractor.js +0 -144
  31. package/dist/parser/src/entity-extractor.js.map +0 -1
  32. package/dist/parser/src/entity-index.d.ts +0 -11
  33. package/dist/parser/src/entity-index.d.ts.map +0 -1
  34. package/dist/parser/src/entity-index.js +0 -24
  35. package/dist/parser/src/entity-index.js.map +0 -1
  36. package/dist/parser/src/generated/entities.d.ts +0 -6198
  37. package/dist/parser/src/generated/entities.d.ts.map +0 -1
  38. package/dist/parser/src/generated/entities.js +0 -5
  39. package/dist/parser/src/generated/entities.js.map +0 -1
  40. package/dist/parser/src/generated/enums.d.ts +0 -2260
  41. package/dist/parser/src/generated/enums.d.ts.map +0 -1
  42. package/dist/parser/src/generated/enums.js +0 -2470
  43. package/dist/parser/src/generated/enums.js.map +0 -1
  44. package/dist/parser/src/generated/schema-registry.d.ts +0 -50
  45. package/dist/parser/src/generated/schema-registry.d.ts.map +0 -1
  46. package/dist/parser/src/generated/schema-registry.js +0 -60518
  47. package/dist/parser/src/generated/schema-registry.js.map +0 -1
  48. package/dist/parser/src/georef-extractor.d.ts +0 -60
  49. package/dist/parser/src/georef-extractor.d.ts.map +0 -1
  50. package/dist/parser/src/georef-extractor.js +0 -200
  51. package/dist/parser/src/georef-extractor.js.map +0 -1
  52. package/dist/parser/src/ifc-schema.d.ts +0 -13
  53. package/dist/parser/src/ifc-schema.d.ts.map +0 -1
  54. package/dist/parser/src/ifc-schema.js +0 -203
  55. package/dist/parser/src/ifc-schema.js.map +0 -1
  56. package/dist/parser/src/index.d.ts +0 -43
  57. package/dist/parser/src/index.d.ts.map +0 -1
  58. package/dist/parser/src/index.js +0 -150
  59. package/dist/parser/src/index.js.map +0 -1
  60. package/dist/parser/src/material-extractor.d.ts +0 -97
  61. package/dist/parser/src/material-extractor.d.ts.map +0 -1
  62. package/dist/parser/src/material-extractor.js +0 -283
  63. package/dist/parser/src/material-extractor.js.map +0 -1
  64. package/dist/parser/src/property-extractor.d.ts +0 -23
  65. package/dist/parser/src/property-extractor.d.ts.map +0 -1
  66. package/dist/parser/src/property-extractor.js +0 -102
  67. package/dist/parser/src/property-extractor.js.map +0 -1
  68. package/dist/parser/src/quantity-extractor.d.ts +0 -64
  69. package/dist/parser/src/quantity-extractor.d.ts.map +0 -1
  70. package/dist/parser/src/quantity-extractor.js +0 -202
  71. package/dist/parser/src/quantity-extractor.js.map +0 -1
  72. package/dist/parser/src/relationship-extractor.d.ts +0 -18
  73. package/dist/parser/src/relationship-extractor.d.ts.map +0 -1
  74. package/dist/parser/src/relationship-extractor.js +0 -91
  75. package/dist/parser/src/relationship-extractor.js.map +0 -1
  76. package/dist/parser/src/spatial-hierarchy-builder.d.ts +0 -21
  77. package/dist/parser/src/spatial-hierarchy-builder.d.ts.map +0 -1
  78. package/dist/parser/src/spatial-hierarchy-builder.js +0 -201
  79. package/dist/parser/src/spatial-hierarchy-builder.js.map +0 -1
  80. package/dist/parser/src/style-extractor.d.ts +0 -83
  81. package/dist/parser/src/style-extractor.d.ts.map +0 -1
  82. package/dist/parser/src/style-extractor.js +0 -327
  83. package/dist/parser/src/style-extractor.js.map +0 -1
  84. package/dist/parser/src/tokenizer.d.ts +0 -26
  85. package/dist/parser/src/tokenizer.d.ts.map +0 -1
  86. package/dist/parser/src/tokenizer.js +0 -181
  87. package/dist/parser/src/tokenizer.js.map +0 -1
  88. package/dist/parser/src/types.d.ts +0 -42
  89. package/dist/parser/src/types.d.ts.map +0 -1
  90. package/dist/parser/src/types.js +0 -5
  91. package/dist/parser/src/types.js.map +0 -1
  92. package/dist/query/src/duckdb-integration.d.ts.map +0 -1
  93. package/dist/query/src/duckdb-integration.js.map +0 -1
  94. package/dist/query/src/entity-node.d.ts.map +0 -1
  95. package/dist/query/src/entity-node.js.map +0 -1
  96. package/dist/query/src/entity-query.d.ts.map +0 -1
  97. package/dist/query/src/entity-query.js.map +0 -1
  98. package/dist/query/src/entity-table.d.ts.map +0 -1
  99. package/dist/query/src/entity-table.js.map +0 -1
  100. package/dist/query/src/fluent-api.d.ts.map +0 -1
  101. package/dist/query/src/fluent-api.js.map +0 -1
  102. package/dist/query/src/ifc-query.d.ts.map +0 -1
  103. package/dist/query/src/ifc-query.js.map +0 -1
  104. package/dist/query/src/index.d.ts.map +0 -1
  105. package/dist/query/src/index.js.map +0 -1
  106. package/dist/query/src/property-table.d.ts.map +0 -1
  107. package/dist/query/src/property-table.js.map +0 -1
  108. package/dist/query/src/query-result-entity.d.ts.map +0 -1
  109. package/dist/query/src/query-result-entity.js.map +0 -1
  110. /package/dist/{query/src/duckdb-integration.d.ts → duckdb-integration.d.ts} +0 -0
  111. /package/dist/{query/src/duckdb-integration.js → duckdb-integration.js} +0 -0
  112. /package/dist/{query/src/entity-node.d.ts → entity-node.d.ts} +0 -0
  113. /package/dist/{query/src/entity-node.js → entity-node.js} +0 -0
  114. /package/dist/{query/src/entity-query.d.ts → entity-query.d.ts} +0 -0
  115. /package/dist/{query/src/entity-query.js → entity-query.js} +0 -0
  116. /package/dist/{query/src/entity-table.d.ts → entity-table.d.ts} +0 -0
  117. /package/dist/{query/src/entity-table.js → entity-table.js} +0 -0
  118. /package/dist/{query/src/fluent-api.d.ts → fluent-api.d.ts} +0 -0
  119. /package/dist/{query/src/fluent-api.js → fluent-api.js} +0 -0
  120. /package/dist/{query/src/ifc-query.d.ts → ifc-query.d.ts} +0 -0
  121. /package/dist/{query/src/ifc-query.js → ifc-query.js} +0 -0
  122. /package/dist/{query/src/index.d.ts → index.d.ts} +0 -0
  123. /package/dist/{query/src/index.js → index.js} +0 -0
  124. /package/dist/{query/src/property-table.d.ts → property-table.d.ts} +0 -0
  125. /package/dist/{query/src/property-table.js → property-table.js} +0 -0
  126. /package/dist/{query/src/query-result-entity.d.ts → query-result-entity.d.ts} +0 -0
  127. /package/dist/{query/src/query-result-entity.js → query-result-entity.js} +0 -0
@@ -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":"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"}
@@ -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"}