@ifc-lite/parser 3.6.0 → 3.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/columnar-parser.d.ts +1 -0
- package/dist/columnar-parser.d.ts.map +1 -1
- package/dist/data-store-transport.d.ts +1 -0
- package/dist/data-store-transport.d.ts.map +1 -1
- package/dist/data-store-transport.js +2 -0
- package/dist/data-store-transport.js.map +1 -1
- package/dist/ifc-schema.d.ts +11 -0
- package/dist/ifc-schema.d.ts.map +1 -1
- package/dist/ifc-schema.js +19 -0
- package/dist/ifc-schema.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/on-demand-extractors.d.ts +1 -0
- package/dist/on-demand-extractors.d.ts.map +1 -1
- package/dist/on-demand-extractors.js.map +1 -1
- package/dist/project-units.d.ts +73 -0
- package/dist/project-units.d.ts.map +1 -0
- package/dist/project-units.js +469 -0
- package/dist/project-units.js.map +1 -0
- package/dist/spatial-hierarchy-builder.d.ts +11 -0
- package/dist/spatial-hierarchy-builder.d.ts.map +1 -1
- package/dist/spatial-hierarchy-builder.js +56 -7
- package/dist/spatial-hierarchy-builder.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,469 @@
|
|
|
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 { EntityExtractor } from './entity-extractor.js';
|
|
5
|
+
// ============================================================================
|
|
6
|
+
// SI prefix + unit-name symbol tables (mirror project_units/symbols.rs)
|
|
7
|
+
// ============================================================================
|
|
8
|
+
const SI_PREFIX_MULTIPLIERS = {
|
|
9
|
+
ATTO: 1e-18, FEMTO: 1e-15, PICO: 1e-12, NANO: 1e-9, MICRO: 1e-6, MILLI: 1e-3,
|
|
10
|
+
CENTI: 1e-2, DECI: 1e-1, DECA: 1e1, HECTO: 1e2, KILO: 1e3, MEGA: 1e6,
|
|
11
|
+
GIGA: 1e9, TERA: 1e12, PETA: 1e15, EXA: 1e18,
|
|
12
|
+
};
|
|
13
|
+
const SI_PREFIX_SYMBOLS = {
|
|
14
|
+
EXA: 'E', PETA: 'P', TERA: 'T', GIGA: 'G', MEGA: 'M', KILO: 'k', HECTO: 'h',
|
|
15
|
+
DECA: 'da', DECI: 'd', CENTI: 'c', MILLI: 'm', MICRO: 'µ', NANO: 'n',
|
|
16
|
+
PICO: 'p', FEMTO: 'f', ATTO: 'a',
|
|
17
|
+
};
|
|
18
|
+
/** Resolve an `IfcSIUnitName` token to its symbol descriptor. */
|
|
19
|
+
function siUnitName(name) {
|
|
20
|
+
const n = name.replace(/\./g, '').trim().toUpperCase();
|
|
21
|
+
const d = (symbol) => ({ symbol, prefixPower: 1, baseScale: 1.0 });
|
|
22
|
+
switch (n) {
|
|
23
|
+
case 'METRE': return d('m');
|
|
24
|
+
case 'SQUARE_METRE': return { symbol: 'm²', prefixPower: 2, baseScale: 1.0 };
|
|
25
|
+
case 'CUBIC_METRE': return { symbol: 'm³', prefixPower: 3, baseScale: 1.0 };
|
|
26
|
+
case 'GRAM': return { symbol: 'g', prefixPower: 1, baseScale: 1e-3 };
|
|
27
|
+
case 'SECOND': return d('s');
|
|
28
|
+
case 'AMPERE': return d('A');
|
|
29
|
+
case 'KELVIN': return d('K');
|
|
30
|
+
case 'MOLE': return d('mol');
|
|
31
|
+
case 'CANDELA': return d('cd');
|
|
32
|
+
case 'RADIAN': return d('rad');
|
|
33
|
+
case 'STERADIAN': return d('sr');
|
|
34
|
+
case 'HERTZ': return d('Hz');
|
|
35
|
+
case 'NEWTON': return d('N');
|
|
36
|
+
case 'PASCAL': return d('Pa');
|
|
37
|
+
case 'JOULE': return d('J');
|
|
38
|
+
case 'WATT': return d('W');
|
|
39
|
+
case 'COULOMB': return d('C');
|
|
40
|
+
case 'VOLT': return d('V');
|
|
41
|
+
case 'FARAD': return d('F');
|
|
42
|
+
case 'OHM': return d('Ω');
|
|
43
|
+
case 'SIEMENS': return d('S');
|
|
44
|
+
case 'WEBER': return d('Wb');
|
|
45
|
+
case 'TESLA': return d('T');
|
|
46
|
+
case 'HENRY': return d('H');
|
|
47
|
+
case 'DEGREE_CELSIUS': return d('°C');
|
|
48
|
+
case 'LUMEN': return d('lm');
|
|
49
|
+
case 'LUX': return d('lx');
|
|
50
|
+
case 'BECQUEREL': return d('Bq');
|
|
51
|
+
case 'GRAY': return d('Gy');
|
|
52
|
+
case 'SIEVERT': return d('Sv');
|
|
53
|
+
default: return undefined;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function prefixSymbol(prefix) {
|
|
57
|
+
return SI_PREFIX_SYMBOLS[prefix.replace(/\./g, '').trim().toUpperCase()] ?? '';
|
|
58
|
+
}
|
|
59
|
+
function prefixMultiplier(prefix) {
|
|
60
|
+
return SI_PREFIX_MULTIPLIERS[prefix.replace(/\./g, '').trim().toUpperCase()] ?? 1.0;
|
|
61
|
+
}
|
|
62
|
+
/** Symbol + SI scale for a prefixed `IfcSIUnit`. */
|
|
63
|
+
function siUnitSymbolAndScale(name, prefix) {
|
|
64
|
+
const base = siUnitName(name);
|
|
65
|
+
if (!base)
|
|
66
|
+
return undefined;
|
|
67
|
+
const cleanPrefix = prefix ? prefix.replace(/\./g, '').trim() : '';
|
|
68
|
+
const pSym = cleanPrefix ? prefixSymbol(cleanPrefix) : '';
|
|
69
|
+
const pMult = cleanPrefix ? prefixMultiplier(cleanPrefix) : 1.0;
|
|
70
|
+
return {
|
|
71
|
+
symbol: `${pSym}${base.symbol}`,
|
|
72
|
+
scale: base.baseScale * Math.pow(pMult, base.prefixPower),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/** Friendly symbol for a common `IfcConversionBasedUnit` name. */
|
|
76
|
+
function conversionUnitSymbol(name) {
|
|
77
|
+
const clean = name.replace(/'/g, '').trim();
|
|
78
|
+
switch (clean.toUpperCase()) {
|
|
79
|
+
case 'DEGREE': return '°';
|
|
80
|
+
case 'GRAD':
|
|
81
|
+
case 'GON': return 'gon';
|
|
82
|
+
case 'MINUTE': return '′';
|
|
83
|
+
case 'SECOND': return '″';
|
|
84
|
+
case 'FOOT':
|
|
85
|
+
case 'FEET': return 'ft';
|
|
86
|
+
case 'INCH': return 'in';
|
|
87
|
+
case 'YARD': return 'yd';
|
|
88
|
+
case 'MILE': return 'mi';
|
|
89
|
+
case 'LITRE':
|
|
90
|
+
case 'LITER': return 'L';
|
|
91
|
+
case 'ACRE': return 'acre';
|
|
92
|
+
case 'POUND':
|
|
93
|
+
case 'POUND-MASS':
|
|
94
|
+
case 'LBM': return 'lb';
|
|
95
|
+
case 'POUND-FORCE':
|
|
96
|
+
case 'LBF': return 'lbf';
|
|
97
|
+
case 'OUNCE': return 'oz';
|
|
98
|
+
case 'TON-METRIC':
|
|
99
|
+
case 'TONNE': return 't';
|
|
100
|
+
case 'PSI': return 'psi';
|
|
101
|
+
case 'BAR': return 'bar';
|
|
102
|
+
case 'KIP': return 'kip';
|
|
103
|
+
case 'MINUTE-TIME':
|
|
104
|
+
case 'MIN': return 'min';
|
|
105
|
+
case 'HOUR': return 'h';
|
|
106
|
+
case 'DAY': return 'd';
|
|
107
|
+
case 'BTU': return 'Btu';
|
|
108
|
+
case '': return '';
|
|
109
|
+
default: return clean;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
const SUPERSCRIPT_DIGITS = {
|
|
113
|
+
'0': '⁰', '1': '¹', '2': '²', '3': '³', '4': '⁴',
|
|
114
|
+
'5': '⁵', '6': '⁶', '7': '⁷', '8': '⁸', '9': '⁹',
|
|
115
|
+
};
|
|
116
|
+
function superscript(mag) {
|
|
117
|
+
if (mag === 1)
|
|
118
|
+
return '';
|
|
119
|
+
return String(mag).split('').map(c => SUPERSCRIPT_DIGITS[c] ?? c).join('');
|
|
120
|
+
}
|
|
121
|
+
/** Compose a derived-unit symbol from `(symbol, exponent)` pairs. */
|
|
122
|
+
function composeDerived(elements) {
|
|
123
|
+
const num = [];
|
|
124
|
+
const den = [];
|
|
125
|
+
for (const [sym, exp] of elements) {
|
|
126
|
+
if (exp === 0 || sym.length === 0)
|
|
127
|
+
continue;
|
|
128
|
+
const piece = `${sym}${superscript(Math.abs(exp))}`;
|
|
129
|
+
if (exp > 0)
|
|
130
|
+
num.push(piece);
|
|
131
|
+
else
|
|
132
|
+
den.push(piece);
|
|
133
|
+
}
|
|
134
|
+
const midDot = '·';
|
|
135
|
+
const numerator = num.length === 0 ? '1' : num.join(midDot);
|
|
136
|
+
if (den.length === 0)
|
|
137
|
+
return num.length === 0 ? '' : numerator;
|
|
138
|
+
const denominator = den.join(midDot);
|
|
139
|
+
return den.length > 1 ? `${numerator}/(${denominator})` : `${numerator}/${denominator}`;
|
|
140
|
+
}
|
|
141
|
+
function currencySymbol(code) {
|
|
142
|
+
const c = code.replace(/['.]/g, '').trim();
|
|
143
|
+
switch (c.toUpperCase()) {
|
|
144
|
+
case 'EUR': return '€';
|
|
145
|
+
case 'USD': return '$';
|
|
146
|
+
case 'GBP': return '£';
|
|
147
|
+
case 'JPY':
|
|
148
|
+
case 'CNY':
|
|
149
|
+
case 'RMB': return '¥';
|
|
150
|
+
case '': return '';
|
|
151
|
+
default: return c;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// ============================================================================
|
|
155
|
+
// Measure → unit-type table (mirror project_units/measure.rs)
|
|
156
|
+
// ============================================================================
|
|
157
|
+
const MEASURE_TABLE = {
|
|
158
|
+
// Length family
|
|
159
|
+
LENGTHMEASURE: { kind: 'typed', unitType: 'LENGTHUNIT', defaultSymbol: 'm' },
|
|
160
|
+
POSITIVELENGTHMEASURE: { kind: 'typed', unitType: 'LENGTHUNIT', defaultSymbol: 'm' },
|
|
161
|
+
NONNEGATIVELENGTHMEASURE: { kind: 'typed', unitType: 'LENGTHUNIT', defaultSymbol: 'm' },
|
|
162
|
+
AREAMEASURE: { kind: 'typed', unitType: 'AREAUNIT', defaultSymbol: 'm²' },
|
|
163
|
+
VOLUMEMEASURE: { kind: 'typed', unitType: 'VOLUMEUNIT', defaultSymbol: 'm³' },
|
|
164
|
+
MASSMEASURE: { kind: 'typed', unitType: 'MASSUNIT', defaultSymbol: 'kg' },
|
|
165
|
+
TIMEMEASURE: { kind: 'typed', unitType: 'TIMEUNIT', defaultSymbol: 's' },
|
|
166
|
+
PLANEANGLEMEASURE: { kind: 'typed', unitType: 'PLANEANGLEUNIT', defaultSymbol: 'rad' },
|
|
167
|
+
POSITIVEPLANEANGLEMEASURE: { kind: 'typed', unitType: 'PLANEANGLEUNIT', defaultSymbol: 'rad' },
|
|
168
|
+
SOLIDANGLEMEASURE: { kind: 'typed', unitType: 'SOLIDANGLEUNIT', defaultSymbol: 'sr' },
|
|
169
|
+
THERMODYNAMICTEMPERATUREMEASURE: { kind: 'typed', unitType: 'THERMODYNAMICTEMPERATUREUNIT', defaultSymbol: 'K' },
|
|
170
|
+
// Named SI (special-name) units
|
|
171
|
+
ELECTRICCURRENTMEASURE: { kind: 'typed', unitType: 'ELECTRICCURRENTUNIT', defaultSymbol: 'A' },
|
|
172
|
+
ELECTRICVOLTAGEMEASURE: { kind: 'typed', unitType: 'ELECTRICVOLTAGEUNIT', defaultSymbol: 'V' },
|
|
173
|
+
ELECTRICRESISTANCEMEASURE: { kind: 'typed', unitType: 'ELECTRICRESISTANCEUNIT', defaultSymbol: 'Ω' },
|
|
174
|
+
ELECTRICCAPACITANCEMEASURE: { kind: 'typed', unitType: 'ELECTRICCAPACITANCEUNIT', defaultSymbol: 'F' },
|
|
175
|
+
ELECTRICCHARGEMEASURE: { kind: 'typed', unitType: 'ELECTRICCHARGEUNIT', defaultSymbol: 'C' },
|
|
176
|
+
ELECTRICCONDUCTANCEMEASURE: { kind: 'typed', unitType: 'ELECTRICCONDUCTANCEUNIT', defaultSymbol: 'S' },
|
|
177
|
+
POWERMEASURE: { kind: 'typed', unitType: 'POWERUNIT', defaultSymbol: 'W' },
|
|
178
|
+
ENERGYMEASURE: { kind: 'typed', unitType: 'ENERGYUNIT', defaultSymbol: 'J' },
|
|
179
|
+
FORCEMEASURE: { kind: 'typed', unitType: 'FORCEUNIT', defaultSymbol: 'N' },
|
|
180
|
+
PRESSUREMEASURE: { kind: 'typed', unitType: 'PRESSUREUNIT', defaultSymbol: 'Pa' },
|
|
181
|
+
FREQUENCYMEASURE: { kind: 'typed', unitType: 'FREQUENCYUNIT', defaultSymbol: 'Hz' },
|
|
182
|
+
INDUCTANCEMEASURE: { kind: 'typed', unitType: 'INDUCTANCEUNIT', defaultSymbol: 'H' },
|
|
183
|
+
ILLUMINANCEMEASURE: { kind: 'typed', unitType: 'ILLUMINANCEUNIT', defaultSymbol: 'lx' },
|
|
184
|
+
LUMINOUSFLUXMEASURE: { kind: 'typed', unitType: 'LUMINOUSFLUXUNIT', defaultSymbol: 'lm' },
|
|
185
|
+
LUMINOUSINTENSITYMEASURE: { kind: 'typed', unitType: 'LUMINOUSINTENSITYUNIT', defaultSymbol: 'cd' },
|
|
186
|
+
MAGNETICFLUXMEASURE: { kind: 'typed', unitType: 'MAGNETICFLUXUNIT', defaultSymbol: 'Wb' },
|
|
187
|
+
MAGNETICFLUXDENSITYMEASURE: { kind: 'typed', unitType: 'MAGNETICFLUXDENSITYUNIT', defaultSymbol: 'T' },
|
|
188
|
+
AMOUNTOFSUBSTANCEMEASURE: { kind: 'typed', unitType: 'AMOUNTOFSUBSTANCEUNIT', defaultSymbol: 'mol' },
|
|
189
|
+
ABSORBEDDOSEMEASURE: { kind: 'typed', unitType: 'ABSORBEDDOSEUNIT', defaultSymbol: 'Gy' },
|
|
190
|
+
DOSEEQUIVALENTMEASURE: { kind: 'typed', unitType: 'DOSEEQUIVALENTUNIT', defaultSymbol: 'Sv' },
|
|
191
|
+
RADIOACTIVITYMEASURE: { kind: 'typed', unitType: 'RADIOACTIVITYUNIT', defaultSymbol: 'Bq' },
|
|
192
|
+
// Derived units
|
|
193
|
+
VOLUMETRICFLOWRATEMEASURE: { kind: 'typed', unitType: 'VOLUMETRICFLOWRATEUNIT', defaultSymbol: 'm³/s' },
|
|
194
|
+
MASSFLOWRATEMEASURE: { kind: 'typed', unitType: 'MASSFLOWRATEUNIT', defaultSymbol: 'kg/s' },
|
|
195
|
+
MASSDENSITYMEASURE: { kind: 'typed', unitType: 'MASSDENSITYUNIT', defaultSymbol: 'kg/m³' },
|
|
196
|
+
MASSPERLENGTHMEASURE: { kind: 'typed', unitType: 'MASSPERLENGTHUNIT', defaultSymbol: 'kg/m' },
|
|
197
|
+
LINEARVELOCITYMEASURE: { kind: 'typed', unitType: 'LINEARVELOCITYUNIT', defaultSymbol: 'm/s' },
|
|
198
|
+
ACCELERATIONMEASURE: { kind: 'typed', unitType: 'ACCELERATIONUNIT', defaultSymbol: 'm/s²' },
|
|
199
|
+
ANGULARVELOCITYMEASURE: { kind: 'typed', unitType: 'ANGULARVELOCITYUNIT', defaultSymbol: 'rad/s' },
|
|
200
|
+
ROTATIONALFREQUENCYMEASURE: { kind: 'typed', unitType: 'ROTATIONALFREQUENCYUNIT', defaultSymbol: '1/s' },
|
|
201
|
+
TORQUEMEASURE: { kind: 'typed', unitType: 'TORQUEUNIT', defaultSymbol: 'N·m' },
|
|
202
|
+
LINEARFORCEMEASURE: { kind: 'typed', unitType: 'LINEARFORCEUNIT', defaultSymbol: 'N/m' },
|
|
203
|
+
PLANARFORCEMEASURE: { kind: 'typed', unitType: 'PLANARFORCEUNIT', defaultSymbol: 'N/m²' },
|
|
204
|
+
LINEARSTIFFNESSMEASURE: { kind: 'typed', unitType: 'LINEARSTIFFNESSUNIT', defaultSymbol: 'N/m' },
|
|
205
|
+
ROTATIONALSTIFFNESSMEASURE: { kind: 'typed', unitType: 'ROTATIONALSTIFFNESSUNIT', defaultSymbol: 'N·m/rad' },
|
|
206
|
+
MODULUSOFELASTICITYMEASURE: { kind: 'typed', unitType: 'MODULUSOFELASTICITYUNIT', defaultSymbol: 'Pa' },
|
|
207
|
+
SHEARMODULUSMEASURE: { kind: 'typed', unitType: 'SHEARMODULUSUNIT', defaultSymbol: 'Pa' },
|
|
208
|
+
THERMALTRANSMITTANCEMEASURE: { kind: 'typed', unitType: 'THERMALTRANSMITTANCEUNIT', defaultSymbol: 'W/(m²·K)' },
|
|
209
|
+
THERMALCONDUCTIVITYMEASURE: { kind: 'typed', unitType: 'THERMALCONDUCTANCEUNIT', defaultSymbol: 'W/(m·K)' },
|
|
210
|
+
THERMALRESISTANCEMEASURE: { kind: 'typed', unitType: 'THERMALRESISTANCEUNIT', defaultSymbol: 'm²·K/W' },
|
|
211
|
+
THERMALADMITTANCEMEASURE: { kind: 'typed', unitType: 'THERMALADMITTANCEUNIT', defaultSymbol: 'W/(m²·K)' },
|
|
212
|
+
THERMALEXPANSIONCOEFFICIENTMEASURE: { kind: 'typed', unitType: 'THERMALEXPANSIONCOEFFICIENTUNIT', defaultSymbol: '1/K' },
|
|
213
|
+
SPECIFICHEATCAPACITYMEASURE: { kind: 'typed', unitType: 'SPECIFICHEATCAPACITYUNIT', defaultSymbol: 'J/(kg·K)' },
|
|
214
|
+
HEATFLUXDENSITYMEASURE: { kind: 'typed', unitType: 'HEATFLUXDENSITYUNIT', defaultSymbol: 'W/m²' },
|
|
215
|
+
HEATINGVALUEMEASURE: { kind: 'typed', unitType: 'HEATINGVALUEUNIT', defaultSymbol: 'J/kg' },
|
|
216
|
+
DYNAMICVISCOSITYMEASURE: { kind: 'typed', unitType: 'DYNAMICVISCOSITYUNIT', defaultSymbol: 'Pa·s' },
|
|
217
|
+
KINEMATICVISCOSITYMEASURE: { kind: 'typed', unitType: 'KINEMATICVISCOSITYUNIT', defaultSymbol: 'm²/s' },
|
|
218
|
+
MOMENTOFINERTIAMEASURE: { kind: 'typed', unitType: 'MOMENTOFINERTIAUNIT', defaultSymbol: 'm⁴' },
|
|
219
|
+
SECTIONMODULUSMEASURE: { kind: 'typed', unitType: 'SECTIONMODULUSUNIT', defaultSymbol: 'm³' },
|
|
220
|
+
SECTIONALAREAINTEGRALMEASURE: { kind: 'typed', unitType: 'SECTIONAREAINTEGRALUNIT', defaultSymbol: 'm⁵' },
|
|
221
|
+
WARPINGCONSTANTMEASURE: { kind: 'typed', unitType: 'WARPINGCONSTANTUNIT', defaultSymbol: 'm⁶' },
|
|
222
|
+
WARPINGMOMENTMEASURE: { kind: 'typed', unitType: 'WARPINGMOMENTUNIT', defaultSymbol: 'N·m²' },
|
|
223
|
+
LINEARMOMENTMEASURE: { kind: 'typed', unitType: 'LINEARMOMENTUNIT', defaultSymbol: 'N·m/m' },
|
|
224
|
+
AREADENSITYMEASURE: { kind: 'typed', unitType: 'AREADENSITYUNIT', defaultSymbol: 'kg/m²' },
|
|
225
|
+
CURVATUREMEASURE: { kind: 'typed', unitType: 'CURVATUREUNIT', defaultSymbol: '1/m' },
|
|
226
|
+
MOLECULARWEIGHTMEASURE: { kind: 'typed', unitType: 'MOLECULARWEIGHTUNIT', defaultSymbol: 'kg/mol' },
|
|
227
|
+
IONCONCENTRATIONMEASURE: { kind: 'typed', unitType: 'IONCONCENTRATIONUNIT', defaultSymbol: 'kg/m³' },
|
|
228
|
+
MOISTUREDIFFUSIVITYMEASURE: { kind: 'typed', unitType: 'MOISTUREDIFFUSIVITYUNIT', defaultSymbol: 'm²/s' },
|
|
229
|
+
VAPORPERMEABILITYMEASURE: { kind: 'typed', unitType: 'VAPORPERMEABILITYUNIT', defaultSymbol: 'kg/(s·m·Pa)' },
|
|
230
|
+
ISOTHERMALMOISTURECAPACITYMEASURE: { kind: 'typed', unitType: 'ISOTHERMALMOISTURECAPACITYUNIT', defaultSymbol: 'm³/kg' },
|
|
231
|
+
TEMPERATUREGRADIENTMEASURE: { kind: 'typed', unitType: 'TEMPERATUREGRADIENTUNIT', defaultSymbol: 'K/m' },
|
|
232
|
+
TEMPERATURERATEOFCHANGEMEASURE: { kind: 'typed', unitType: 'TEMPERATURERATEOFCHANGEUNIT', defaultSymbol: 'K/s' },
|
|
233
|
+
SOUNDPOWERMEASURE: { kind: 'typed', unitType: 'SOUNDPOWERUNIT', defaultSymbol: 'W' },
|
|
234
|
+
SOUNDPOWERLEVELMEASURE: { kind: 'typed', unitType: 'SOUNDPOWERLEVELUNIT', defaultSymbol: 'dB' },
|
|
235
|
+
SOUNDPRESSUREMEASURE: { kind: 'typed', unitType: 'SOUNDPRESSUREUNIT', defaultSymbol: 'Pa' },
|
|
236
|
+
SOUNDPRESSURELEVELMEASURE: { kind: 'typed', unitType: 'SOUNDPRESSURELEVELUNIT', defaultSymbol: 'dB' },
|
|
237
|
+
MODULUSOFSUBGRADEREACTIONMEASURE: { kind: 'typed', unitType: 'MODULUSOFSUBGRADEREACTIONUNIT', defaultSymbol: 'N/m³' },
|
|
238
|
+
MODULUSOFLINEARSUBGRADEREACTIONMEASURE: { kind: 'typed', unitType: 'MODULUSOFLINEARSUBGRADEREACTIONUNIT', defaultSymbol: 'N/m²' },
|
|
239
|
+
MODULUSOFROTATIONALSUBGRADEREACTIONMEASURE: { kind: 'typed', unitType: 'MODULUSOFROTATIONALSUBGRADEREACTIONUNIT', defaultSymbol: 'N/rad' },
|
|
240
|
+
ROTATIONALMASSMEASURE: { kind: 'typed', unitType: 'ROTATIONALMASSUNIT', defaultSymbol: 'kg·m²' },
|
|
241
|
+
INTEGERCOUNTRATEMEASURE: { kind: 'typed', unitType: 'INTEGERCOUNTRATEUNIT', defaultSymbol: '1/s' },
|
|
242
|
+
LUMINOUSINTENSITYDISTRIBUTIONMEASURE: { kind: 'typed', unitType: 'LUMINOUSINTENSITYDISTRIBUTIONUNIT', defaultSymbol: 'cd/lm' },
|
|
243
|
+
// Monetary
|
|
244
|
+
MONETARYMEASURE: { kind: 'monetary' },
|
|
245
|
+
// Dimensionless / unit-less
|
|
246
|
+
RATIOMEASURE: { kind: 'dimensionless' },
|
|
247
|
+
NORMALISEDRATIOMEASURE: { kind: 'dimensionless' },
|
|
248
|
+
POSITIVERATIOMEASURE: { kind: 'dimensionless' },
|
|
249
|
+
COUNTMEASURE: { kind: 'dimensionless' },
|
|
250
|
+
NUMERICMEASURE: { kind: 'dimensionless' },
|
|
251
|
+
DESCRIPTIVEMEASURE: { kind: 'dimensionless' },
|
|
252
|
+
CONTEXTDEPENDENTMEASURE: { kind: 'dimensionless' },
|
|
253
|
+
PHMEASURE: { kind: 'dimensionless' },
|
|
254
|
+
CURVEMEASURE: { kind: 'dimensionless' },
|
|
255
|
+
COMPOUNDPLANEANGLEMEASURE: { kind: 'dimensionless' },
|
|
256
|
+
DERIVEDMEASURE: { kind: 'dimensionless' },
|
|
257
|
+
MEASURE: { kind: 'dimensionless' },
|
|
258
|
+
};
|
|
259
|
+
/** Resolve a measure value type name (case-insensitive, with or without the
|
|
260
|
+
* leading `IFC`) to its unit mapping. `undefined` for non-measure value types. */
|
|
261
|
+
export function measureUnit(measureType) {
|
|
262
|
+
const up = measureType.trim().toUpperCase();
|
|
263
|
+
const key = up.startsWith('IFC') ? up.slice(3) : up;
|
|
264
|
+
return MEASURE_TABLE[key];
|
|
265
|
+
}
|
|
266
|
+
// ============================================================================
|
|
267
|
+
// Unit-assignment resolution (mirror project_units/mod.rs)
|
|
268
|
+
// ============================================================================
|
|
269
|
+
/** The file's declared units, keyed by unit-type token. */
|
|
270
|
+
export class ProjectUnits {
|
|
271
|
+
byType;
|
|
272
|
+
monetaryUnit;
|
|
273
|
+
constructor(byType, monetary) {
|
|
274
|
+
this.byType = byType;
|
|
275
|
+
this.monetaryUnit = monetary;
|
|
276
|
+
}
|
|
277
|
+
static empty() {
|
|
278
|
+
return new ProjectUnits(new Map(), null);
|
|
279
|
+
}
|
|
280
|
+
/** The display unit for a property/quantity with IFC measure type
|
|
281
|
+
* `measureType`. Prefers the file's declared unit and falls back to the
|
|
282
|
+
* IFC-canonical SI default. `null` for dimensionless / non-measure types. */
|
|
283
|
+
unitForMeasure(measureType) {
|
|
284
|
+
const m = measureUnit(measureType);
|
|
285
|
+
if (!m)
|
|
286
|
+
return null;
|
|
287
|
+
if (m.kind === 'dimensionless')
|
|
288
|
+
return null;
|
|
289
|
+
if (m.kind === 'monetary')
|
|
290
|
+
return this.monetaryUnit;
|
|
291
|
+
return this.byType.get(m.unitType) ?? { symbol: m.defaultSymbol, siScale: 1.0 };
|
|
292
|
+
}
|
|
293
|
+
resolvedForUnitType(unitType) {
|
|
294
|
+
return this.byType.get(unitType);
|
|
295
|
+
}
|
|
296
|
+
monetary() {
|
|
297
|
+
return this.monetaryUnit;
|
|
298
|
+
}
|
|
299
|
+
get declaredCount() {
|
|
300
|
+
return this.byType.size;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
/** Resolve a single unit entity by expressId (used for the assignment loop and
|
|
304
|
+
* for per-property / per-quantity `Unit` overrides). */
|
|
305
|
+
export function resolveUnitByRef(extractor, entityIndex, ref) {
|
|
306
|
+
const entRef = entityIndex.byId.get(ref);
|
|
307
|
+
if (!entRef)
|
|
308
|
+
return null;
|
|
309
|
+
const entity = extractor.extractEntity(entRef);
|
|
310
|
+
if (!entity)
|
|
311
|
+
return null;
|
|
312
|
+
const attrs = entity.attributes ?? [];
|
|
313
|
+
const cleanEnum = (v) => typeof v === 'string' ? v.replace(/\./g, '').trim().toUpperCase() : null;
|
|
314
|
+
switch (entity.type.toUpperCase()) {
|
|
315
|
+
case 'IFCSIUNIT': {
|
|
316
|
+
// [1]=UnitType, [2]=Prefix, [3]=Name
|
|
317
|
+
const unitType = cleanEnum(attrs[1]);
|
|
318
|
+
const name = typeof attrs[3] === 'string' ? attrs[3] : null;
|
|
319
|
+
if (!name)
|
|
320
|
+
return null;
|
|
321
|
+
const prefixAttr = attrs[2];
|
|
322
|
+
const prefix = typeof prefixAttr === 'string' && prefixAttr !== '$' ? prefixAttr : null;
|
|
323
|
+
const res = siUnitSymbolAndScale(name, prefix);
|
|
324
|
+
if (!res)
|
|
325
|
+
return null;
|
|
326
|
+
return { unitType, resolved: { symbol: res.symbol, siScale: res.scale }, monetary: false };
|
|
327
|
+
}
|
|
328
|
+
case 'IFCCONVERSIONBASEDUNIT': {
|
|
329
|
+
// [1]=UnitType, [2]=Name, [3]=ConversionFactor
|
|
330
|
+
const unitType = cleanEnum(attrs[1]);
|
|
331
|
+
const name = typeof attrs[2] === 'string' ? attrs[2] : '';
|
|
332
|
+
const symbol = conversionUnitSymbol(name);
|
|
333
|
+
const scale = typeof attrs[3] === 'number'
|
|
334
|
+
? conversionFactorScale(extractor, entityIndex, attrs[3]) ?? 1.0
|
|
335
|
+
: 1.0;
|
|
336
|
+
return { unitType, resolved: { symbol, siScale: scale }, monetary: false };
|
|
337
|
+
}
|
|
338
|
+
case 'IFCDERIVEDUNIT': {
|
|
339
|
+
// [0]=Elements (list of refs), [1]=UnitType
|
|
340
|
+
const unitType = cleanEnum(attrs[1]);
|
|
341
|
+
const elemRefs = Array.isArray(attrs[0]) ? attrs[0] : [];
|
|
342
|
+
const parts = [];
|
|
343
|
+
let scale = 1.0;
|
|
344
|
+
for (const er of elemRefs) {
|
|
345
|
+
if (typeof er !== 'number')
|
|
346
|
+
continue;
|
|
347
|
+
const el = resolveDerivedElement(extractor, entityIndex, er);
|
|
348
|
+
if (el) {
|
|
349
|
+
scale *= Math.pow(el.unitScale, el.exponent);
|
|
350
|
+
parts.push([el.symbol, el.exponent]);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
const symbol = composeDerived(parts);
|
|
354
|
+
if (symbol.length === 0)
|
|
355
|
+
return null;
|
|
356
|
+
return { unitType, resolved: { symbol, siScale: scale }, monetary: false };
|
|
357
|
+
}
|
|
358
|
+
case 'IFCMONETARYUNIT': {
|
|
359
|
+
// [0]=Currency (IfcLabel string in IFC4+, IfcCurrencyEnum in IFC2x3)
|
|
360
|
+
const currency = typeof attrs[0] === 'string' ? attrs[0] : '';
|
|
361
|
+
return { unitType: null, resolved: { symbol: currencySymbol(currency), siScale: 1.0 }, monetary: true };
|
|
362
|
+
}
|
|
363
|
+
default:
|
|
364
|
+
return null;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
function resolveDerivedElement(extractor, entityIndex, elemRef) {
|
|
368
|
+
const ref = entityIndex.byId.get(elemRef);
|
|
369
|
+
if (!ref)
|
|
370
|
+
return null;
|
|
371
|
+
const elem = extractor.extractEntity(ref);
|
|
372
|
+
if (!elem || elem.type.toUpperCase() !== 'IFCDERIVEDUNITELEMENT')
|
|
373
|
+
return null;
|
|
374
|
+
const attrs = elem.attributes ?? [];
|
|
375
|
+
const unitRef = attrs[0];
|
|
376
|
+
if (typeof unitRef !== 'number')
|
|
377
|
+
return null;
|
|
378
|
+
const exponent = typeof attrs[1] === 'number' ? Math.trunc(attrs[1]) : 1;
|
|
379
|
+
const entry = resolveUnitByRef(extractor, entityIndex, unitRef);
|
|
380
|
+
if (!entry)
|
|
381
|
+
return null;
|
|
382
|
+
return { symbol: entry.resolved.symbol, unitScale: entry.resolved.siScale, exponent };
|
|
383
|
+
}
|
|
384
|
+
function conversionFactorScale(extractor, entityIndex, measureRef) {
|
|
385
|
+
const ref = entityIndex.byId.get(measureRef);
|
|
386
|
+
if (!ref)
|
|
387
|
+
return null;
|
|
388
|
+
const measure = extractor.extractEntity(ref);
|
|
389
|
+
if (!measure || measure.type.toUpperCase() !== 'IFCMEASUREWITHUNIT')
|
|
390
|
+
return null;
|
|
391
|
+
const attrs = measure.attributes ?? [];
|
|
392
|
+
// [0]=ValueComponent (number or [type, number]), [1]=UnitComponent
|
|
393
|
+
const valueAttr = attrs[0];
|
|
394
|
+
let value;
|
|
395
|
+
if (typeof valueAttr === 'number')
|
|
396
|
+
value = valueAttr;
|
|
397
|
+
else if (Array.isArray(valueAttr) && valueAttr.length === 2 && typeof valueAttr[1] === 'number')
|
|
398
|
+
value = valueAttr[1];
|
|
399
|
+
if (value === undefined || !(Number.isFinite(value) && value > 0))
|
|
400
|
+
return null;
|
|
401
|
+
let componentScale = 1.0;
|
|
402
|
+
const compRef = attrs[1];
|
|
403
|
+
if (typeof compRef === 'number') {
|
|
404
|
+
const cRef = entityIndex.byId.get(compRef);
|
|
405
|
+
if (cRef) {
|
|
406
|
+
const comp = extractor.extractEntity(cRef);
|
|
407
|
+
if (comp && comp.type.toUpperCase() === 'IFCSIUNIT') {
|
|
408
|
+
const cAttrs = comp.attributes ?? [];
|
|
409
|
+
const name = typeof cAttrs[3] === 'string' ? cAttrs[3] : null;
|
|
410
|
+
const prefixAttr = cAttrs[2];
|
|
411
|
+
const prefix = typeof prefixAttr === 'string' && prefixAttr !== '$' ? prefixAttr : null;
|
|
412
|
+
if (name) {
|
|
413
|
+
const res = siUnitSymbolAndScale(name, prefix);
|
|
414
|
+
if (res)
|
|
415
|
+
componentScale = res.scale;
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
return value * componentScale;
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Resolve the file's declared units from `IFCPROJECT → IFCUNITASSIGNMENT`.
|
|
424
|
+
* Never throws: an absent/malformed assignment yields an empty {@link ProjectUnits}
|
|
425
|
+
* (all measures then fall back to their SI default symbols).
|
|
426
|
+
*/
|
|
427
|
+
export function extractProjectUnits(source, entityIndex) {
|
|
428
|
+
const byType = new Map();
|
|
429
|
+
let monetary = null;
|
|
430
|
+
const projectIds = entityIndex.byType.get('IFCPROJECT') ?? [];
|
|
431
|
+
if (projectIds.length === 0)
|
|
432
|
+
return new ProjectUnits(byType, monetary);
|
|
433
|
+
const projectRef = entityIndex.byId.get(projectIds[0]);
|
|
434
|
+
if (!projectRef)
|
|
435
|
+
return new ProjectUnits(byType, monetary);
|
|
436
|
+
const extractor = new EntityExtractor(source);
|
|
437
|
+
const project = extractor.extractEntity(projectRef);
|
|
438
|
+
if (!project)
|
|
439
|
+
return new ProjectUnits(byType, monetary);
|
|
440
|
+
// IFCPROJECT[8] = UnitsInContext (IFCUNITASSIGNMENT)
|
|
441
|
+
const unitsRef = (project.attributes ?? [])[8];
|
|
442
|
+
if (typeof unitsRef !== 'number')
|
|
443
|
+
return new ProjectUnits(byType, monetary);
|
|
444
|
+
const assignmentRef = entityIndex.byId.get(unitsRef);
|
|
445
|
+
if (!assignmentRef)
|
|
446
|
+
return new ProjectUnits(byType, monetary);
|
|
447
|
+
const assignment = extractor.extractEntity(assignmentRef);
|
|
448
|
+
if (!assignment || assignment.type.toUpperCase() !== 'IFCUNITASSIGNMENT') {
|
|
449
|
+
return new ProjectUnits(byType, monetary);
|
|
450
|
+
}
|
|
451
|
+
const unitList = (assignment.attributes ?? [])[0];
|
|
452
|
+
if (!Array.isArray(unitList))
|
|
453
|
+
return new ProjectUnits(byType, monetary);
|
|
454
|
+
for (const ref of unitList) {
|
|
455
|
+
if (typeof ref !== 'number')
|
|
456
|
+
continue;
|
|
457
|
+
const entry = resolveUnitByRef(extractor, entityIndex, ref);
|
|
458
|
+
if (!entry)
|
|
459
|
+
continue;
|
|
460
|
+
if (entry.monetary) {
|
|
461
|
+
monetary ??= entry.resolved;
|
|
462
|
+
}
|
|
463
|
+
else if (entry.unitType && !byType.has(entry.unitType)) {
|
|
464
|
+
byType.set(entry.unitType, entry.resolved);
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
return new ProjectUnits(byType, monetary);
|
|
468
|
+
}
|
|
469
|
+
//# sourceMappingURL=project-units.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-units.js","sourceRoot":"","sources":["../src/project-units.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,17 @@ export declare class SpatialHierarchyBuilder {
|
|
|
31
31
|
buildFromCache(entities: EntityTable, relationships: RelationshipGraph): SpatialHierarchy | undefined;
|
|
32
32
|
private assemble;
|
|
33
33
|
private buildNode;
|
|
34
|
+
/**
|
|
35
|
+
* Read an entity's LongName by schema attribute *name*. IfcSite / IfcBuilding /
|
|
36
|
+
* IfcBuildingStorey / IfcSpace (and the IFC4.3 facility/infra containers)
|
|
37
|
+
* declare LongName at index 7, but IfcProject carries it at a different slot,
|
|
38
|
+
* so resolving by name (not a fixed index) stays correct across the IfcRoot
|
|
39
|
+
* family. The lookup spans every bundled schema, so IFC4.3 leaves outside the
|
|
40
|
+
* parser's IFC4 codegen pin resolve too. Returns the trimmed value, or
|
|
41
|
+
* undefined when the type declares no LongName, it is empty, or no source
|
|
42
|
+
* buffer is available (the buildFromCache path).
|
|
43
|
+
*/
|
|
44
|
+
private extractLongName;
|
|
34
45
|
/**
|
|
35
46
|
* Extract elevation from an IfcBuildingStorey. Elevation is attribute index 9
|
|
36
47
|
* in both IFC2x3 and IFC4 (GlobalId, OwnerHistory, Name, Description,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spatial-hierarchy-builder.d.ts","sourceRoot":"","sources":["../src/spatial-hierarchy-builder.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAe,MAAM,gBAAgB,CAAC;AAUjH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"spatial-hierarchy-builder.d.ts","sourceRoot":"","sources":["../src/spatial-hierarchy-builder.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAe,MAAM,gBAAgB,CAAC;AAUjH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAgC5C,qBAAa,uBAAuB;IAClC;;;;;OAKG;IACH,KAAK,CACH,QAAQ,EAAE,WAAW,EACrB,aAAa,EAAE,iBAAiB,EAChC,QAAQ,EAAE,WAAW,EACrB,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE;QAAE,IAAI,EAAE;YAAE,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAA;SAAE,CAAA;KAAE,EACxE,eAAe,GAAE,MAAY,GAC5B,gBAAgB;IAMnB;;;OAGG;IACH,cAAc,CACZ,QAAQ,EAAE,WAAW,EACrB,aAAa,EAAE,iBAAiB,GAC/B,gBAAgB,GAAG,SAAS;IAI/B,OAAO,CAAC,QAAQ;IAyGhB,OAAO,CAAC,SAAS;IAiIjB;;;;;;;;;OASG;IACH,OAAO,CAAC,eAAe;IAqBvB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IA2CxB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,yBAAyB;CA0ClC"}
|