@ifc-lite/parser 4.3.1 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/attribute-helpers.d.ts +38 -4
- package/dist/attribute-helpers.d.ts.map +1 -1
- package/dist/attribute-helpers.js +71 -4
- package/dist/attribute-helpers.js.map +1 -1
- package/dist/columnar-parser-attributes.d.ts.map +1 -1
- package/dist/columnar-parser-attributes.js +35 -5
- package/dist/columnar-parser-attributes.js.map +1 -1
- package/dist/columnar-parser-indexes.d.ts.map +1 -1
- package/dist/columnar-parser-indexes.js +17 -2
- package/dist/columnar-parser-indexes.js.map +1 -1
- package/dist/columnar-parser-relationships.d.ts.map +1 -1
- package/dist/columnar-parser-relationships.js +6 -1
- package/dist/columnar-parser-relationships.js.map +1 -1
- package/dist/columnar-parser.d.ts +3 -1
- package/dist/columnar-parser.d.ts.map +1 -1
- package/dist/columnar-parser.js +27 -76
- package/dist/columnar-parser.js.map +1 -1
- package/dist/compact-entity-index-transport.d.ts +23 -0
- package/dist/compact-entity-index-transport.d.ts.map +1 -0
- package/dist/compact-entity-index-transport.js +28 -0
- package/dist/compact-entity-index-transport.js.map +1 -0
- package/dist/compact-entity-index.d.ts +0 -10
- package/dist/compact-entity-index.d.ts.map +1 -1
- package/dist/compact-entity-index.js +31 -24
- package/dist/compact-entity-index.js.map +1 -1
- package/dist/data-store-transport.d.ts +2 -12
- package/dist/data-store-transport.d.ts.map +1 -1
- package/dist/data-store-transport.js +7 -20
- package/dist/data-store-transport.js.map +1 -1
- package/dist/entity-extractor.d.ts.map +1 -1
- package/dist/entity-extractor.js +101 -6
- package/dist/entity-extractor.js.map +1 -1
- package/dist/entity-refs-from-index.d.ts.map +1 -1
- package/dist/entity-refs-from-index.js +12 -2
- package/dist/entity-refs-from-index.js.map +1 -1
- package/dist/entity-scanner.d.ts +63 -0
- package/dist/entity-scanner.d.ts.map +1 -1
- package/dist/entity-scanner.js +79 -2
- package/dist/entity-scanner.js.map +1 -1
- package/dist/express-id.d.ts +47 -0
- package/dist/express-id.d.ts.map +1 -0
- package/dist/express-id.js +57 -0
- package/dist/express-id.js.map +1 -0
- package/dist/generated/entities.d.ts +1 -1
- package/dist/generated/entities.d.ts.map +1 -1
- package/dist/generated/schema-registry.js +146 -146
- package/dist/generated/schema-registry.js.map +1 -1
- package/dist/georef-epset.d.ts +25 -0
- package/dist/georef-epset.d.ts.map +1 -0
- package/dist/georef-epset.js +214 -0
- package/dist/georef-epset.js.map +1 -0
- package/dist/georef-extractor.d.ts +9 -12
- package/dist/georef-extractor.d.ts.map +1 -1
- package/dist/georef-extractor.js +66 -304
- package/dist/georef-extractor.js.map +1 -1
- package/dist/georef-map-conversion.d.ts +29 -0
- package/dist/georef-map-conversion.d.ts.map +1 -0
- package/dist/georef-map-conversion.js +75 -0
- package/dist/georef-map-conversion.js.map +1 -0
- package/dist/georef-transform.d.ts +25 -0
- package/dist/georef-transform.d.ts.map +1 -0
- package/dist/georef-transform.js +97 -0
- package/dist/georef-transform.js.map +1 -0
- package/dist/ifc-schema.d.ts +4 -2
- package/dist/ifc-schema.d.ts.map +1 -1
- package/dist/ifc-schema.js +15 -5
- package/dist/ifc-schema.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/map-unit-label.d.ts +43 -0
- package/dist/map-unit-label.d.ts.map +1 -0
- package/dist/map-unit-label.js +140 -0
- package/dist/map-unit-label.js.map +1 -0
- package/dist/material-extractor.d.ts +2 -17
- package/dist/material-extractor.d.ts.map +1 -1
- package/dist/material-extractor.js +12 -37
- package/dist/material-extractor.js.map +1 -1
- package/dist/material-layer-reader.d.ts +45 -0
- package/dist/material-layer-reader.d.ts.map +1 -0
- package/dist/material-layer-reader.js +63 -0
- package/dist/material-layer-reader.js.map +1 -0
- package/dist/material-resolver.d.ts.map +1 -1
- package/dist/material-resolver.js +14 -14
- package/dist/material-resolver.js.map +1 -1
- package/dist/measure-unit-scale.d.ts +41 -0
- package/dist/measure-unit-scale.d.ts.map +1 -0
- package/dist/measure-unit-scale.js +53 -0
- package/dist/measure-unit-scale.js.map +1 -0
- package/dist/on-demand-cache.d.ts +3 -0
- package/dist/on-demand-cache.d.ts.map +1 -0
- package/dist/on-demand-cache.js +25 -0
- package/dist/on-demand-cache.js.map +1 -0
- package/dist/on-demand-extractors.d.ts +5 -21
- package/dist/on-demand-extractors.d.ts.map +1 -1
- package/dist/on-demand-extractors.js +64 -437
- package/dist/on-demand-extractors.js.map +1 -1
- package/dist/on-demand-georeferencing.d.ts +19 -0
- package/dist/on-demand-georeferencing.d.ts.map +1 -0
- package/dist/on-demand-georeferencing.js +139 -0
- package/dist/on-demand-georeferencing.js.map +1 -0
- package/dist/owning-project.d.ts +54 -0
- package/dist/owning-project.d.ts.map +1 -0
- package/dist/owning-project.js +76 -0
- package/dist/owning-project.js.map +1 -0
- package/dist/parser.worker.d.ts +14 -0
- package/dist/parser.worker.d.ts.map +1 -1
- package/dist/parser.worker.js +2 -0
- package/dist/parser.worker.js.map +1 -1
- package/dist/project-units-symbols.d.ts +33 -0
- package/dist/project-units-symbols.d.ts.map +1 -0
- package/dist/project-units-symbols.js +265 -0
- package/dist/project-units-symbols.js.map +1 -0
- package/dist/project-units.d.ts +11 -19
- package/dist/project-units.d.ts.map +1 -1
- package/dist/project-units.js +9 -267
- package/dist/project-units.js.map +1 -1
- package/dist/property-set-merge.d.ts +65 -8
- package/dist/property-set-merge.d.ts.map +1 -1
- package/dist/property-set-merge.js +130 -29
- package/dist/property-set-merge.js.map +1 -1
- package/dist/property-value-parser.d.ts +55 -0
- package/dist/property-value-parser.d.ts.map +1 -0
- package/dist/property-value-parser.js +277 -0
- package/dist/property-value-parser.js.map +1 -0
- package/dist/quantity-collect.d.ts +135 -0
- package/dist/quantity-collect.d.ts.map +1 -0
- package/dist/quantity-collect.js +253 -0
- package/dist/quantity-collect.js.map +1 -0
- package/dist/query-backend-maps.d.ts +5 -8
- package/dist/query-backend-maps.d.ts.map +1 -1
- package/dist/query-backend-maps.js +159 -15
- package/dist/query-backend-maps.js.map +1 -1
- package/dist/relationship-extractor.d.ts.map +1 -1
- package/dist/relationship-extractor.js +18 -0
- package/dist/relationship-extractor.js.map +1 -1
- package/dist/scan-entities-balanced.d.ts +38 -0
- package/dist/scan-entities-balanced.d.ts.map +1 -0
- package/dist/scan-entities-balanced.js +258 -0
- package/dist/scan-entities-balanced.js.map +1 -0
- package/dist/scan-worker-inline.d.ts +17 -11
- package/dist/scan-worker-inline.d.ts.map +1 -1
- package/dist/scan-worker-inline.js +9 -235
- package/dist/scan-worker-inline.js.map +1 -1
- package/dist/scan-worker-source.d.ts +9 -0
- package/dist/scan-worker-source.d.ts.map +1 -0
- package/dist/scan-worker-source.js +383 -0
- package/dist/scan-worker-source.js.map +1 -0
- package/dist/source-header.d.ts +23 -1
- package/dist/source-header.d.ts.map +1 -1
- package/dist/source-header.js +133 -43
- package/dist/source-header.js.map +1 -1
- package/dist/spatial-hierarchy-builder.js +3 -3
- package/dist/spatial-hierarchy-builder.js.map +1 -1
- package/dist/step-lexing.d.ts +94 -0
- package/dist/step-lexing.d.ts.map +1 -1
- package/dist/step-lexing.js +292 -25
- package/dist/step-lexing.js.map +1 -1
- package/dist/step-trivia.d.ts +60 -0
- package/dist/step-trivia.d.ts.map +1 -0
- package/dist/step-trivia.js +63 -0
- package/dist/step-trivia.js.map +1 -0
- package/dist/tokenizer.d.ts +20 -21
- package/dist/tokenizer.d.ts.map +1 -1
- package/dist/tokenizer.js +164 -203
- package/dist/tokenizer.js.map +1 -1
- package/dist/unit-extractor.d.ts +56 -1
- package/dist/unit-extractor.d.ts.map +1 -1
- package/dist/unit-extractor.js +80 -6
- package/dist/unit-extractor.js.map +1 -1
- package/dist/worker-parser.d.ts +11 -1
- package/dist/worker-parser.d.ts.map +1 -1
- package/dist/worker-parser.js +16 -2
- package/dist/worker-parser.js.map +1 -1
- package/package.json +6 -6
|
@@ -0,0 +1,97 @@
|
|
|
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
|
+
* Compute 4x4 transformation matrix from local to world coordinates
|
|
6
|
+
*/
|
|
7
|
+
export function computeTransformMatrix(mapConversion) {
|
|
8
|
+
const { eastings, northings, orthogonalHeight, xAxisAbscissa, xAxisOrdinate, scale } = mapConversion;
|
|
9
|
+
// Default scale to 1.0 if not specified
|
|
10
|
+
const s = scale || 1.0;
|
|
11
|
+
// Compute rotation angle from X-axis direction
|
|
12
|
+
let angle = 0;
|
|
13
|
+
if (xAxisAbscissa !== undefined && xAxisOrdinate !== undefined) {
|
|
14
|
+
angle = Math.atan2(xAxisOrdinate, xAxisAbscissa);
|
|
15
|
+
}
|
|
16
|
+
const cos = Math.cos(angle);
|
|
17
|
+
const sin = Math.sin(angle);
|
|
18
|
+
// Build 4x4 transformation matrix (IfcMapConversion applies the one
|
|
19
|
+
// Scale equally to x, y AND z, then rotates about z, then translates):
|
|
20
|
+
// [scale*cos -scale*sin 0 eastings ]
|
|
21
|
+
// [scale*sin scale*cos 0 northings ]
|
|
22
|
+
// [0 0 scale height ]
|
|
23
|
+
// [0 0 0 1 ]
|
|
24
|
+
return [
|
|
25
|
+
s * cos, s * sin, 0, 0,
|
|
26
|
+
-s * sin, s * cos, 0, 0,
|
|
27
|
+
0, 0, s, 0,
|
|
28
|
+
eastings, northings, orthogonalHeight, 1,
|
|
29
|
+
];
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Transform a point from local to world coordinates
|
|
33
|
+
*/
|
|
34
|
+
export function transformToWorld(localPoint, georef) {
|
|
35
|
+
if (!georef.transformMatrix) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
const [x, y, z] = localPoint;
|
|
39
|
+
const m = georef.transformMatrix;
|
|
40
|
+
// Apply transformation: [x', y', z', 1] = [x, y, z, 1] * M
|
|
41
|
+
const xWorld = m[0] * x + m[4] * y + m[8] * z + m[12];
|
|
42
|
+
const yWorld = m[1] * x + m[5] * y + m[9] * z + m[13];
|
|
43
|
+
const zWorld = m[2] * x + m[6] * y + m[10] * z + m[14];
|
|
44
|
+
return [xWorld, yWorld, zWorld];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Transform a point from world to local coordinates
|
|
48
|
+
*/
|
|
49
|
+
export function transformToLocal(worldPoint, georef) {
|
|
50
|
+
if (!georef.transformMatrix) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
// Compute inverse transformation
|
|
54
|
+
const m = georef.transformMatrix;
|
|
55
|
+
const [xWorld, yWorld, zWorld] = worldPoint;
|
|
56
|
+
// Extract rotation and scale
|
|
57
|
+
const scale = georef.mapConversion?.scale || 1.0;
|
|
58
|
+
const angle = Math.atan2(m[1], m[0]);
|
|
59
|
+
const cos = Math.cos(-angle);
|
|
60
|
+
const sin = Math.sin(-angle);
|
|
61
|
+
const invScale = 1.0 / scale;
|
|
62
|
+
// Apply inverse translation
|
|
63
|
+
const xTrans = xWorld - m[12];
|
|
64
|
+
const yTrans = yWorld - m[13];
|
|
65
|
+
const zTrans = zWorld - m[14];
|
|
66
|
+
// Apply inverse rotation and scale
|
|
67
|
+
const x = invScale * (cos * xTrans - sin * yTrans);
|
|
68
|
+
const y = invScale * (sin * xTrans + cos * yTrans);
|
|
69
|
+
// Scale applies to z too (IfcMapConversion scales all three axes).
|
|
70
|
+
const z = invScale * zTrans;
|
|
71
|
+
return [x, y, z];
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get coordinate system description
|
|
75
|
+
*/
|
|
76
|
+
export function getCoordinateSystemDescription(georef) {
|
|
77
|
+
if (!georef.hasGeoreference) {
|
|
78
|
+
return 'Local Engineering Coordinates';
|
|
79
|
+
}
|
|
80
|
+
const parts = [];
|
|
81
|
+
if (georef.projectedCRS) {
|
|
82
|
+
parts.push(georef.projectedCRS.name);
|
|
83
|
+
if (georef.projectedCRS.mapProjection) {
|
|
84
|
+
parts.push(`(${georef.projectedCRS.mapProjection})`);
|
|
85
|
+
}
|
|
86
|
+
if (georef.projectedCRS.geodeticDatum) {
|
|
87
|
+
parts.push(`Datum: ${georef.projectedCRS.geodeticDatum}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if (georef.mapConversion) {
|
|
91
|
+
const { eastings, northings, orthogonalHeight } = georef.mapConversion;
|
|
92
|
+
const originLabel = georef.source === 'siteLocation' ? 'Site' : 'Origin';
|
|
93
|
+
parts.push(`${originLabel}: (${eastings.toFixed(2)}, ${northings.toFixed(2)}, ${orthogonalHeight.toFixed(2)})`);
|
|
94
|
+
}
|
|
95
|
+
return parts.join(' ');
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=georef-transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"georef-transform.js","sourceRoot":"","sources":["../src/georef-transform.ts"],"names":[],"mappings":"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"}
|
package/dist/ifc-schema.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export declare const ENTITY_NAME_ALIASES: Record<string, string>;
|
|
1
2
|
/**
|
|
2
3
|
* Resolve an entity name through {@link ENTITY_NAME_ALIASES}, returning the
|
|
3
4
|
* name unchanged when it is not an alias.
|
|
@@ -6,8 +7,9 @@
|
|
|
6
7
|
* (the STEP exporter's enum-slot resolution) have to canonicalize the SAME way
|
|
7
8
|
* {@link getAttributeNamesAcrossSchemas} does, or their indices refer to a
|
|
8
9
|
* different attribute list than the names they are indices into. Copying the
|
|
9
|
-
* table into another package would give it a
|
|
10
|
-
*
|
|
10
|
+
* table into another package would give it a further home — this one,
|
|
11
|
+
* `@ifc-lite/data`'s descendant-direction copy and
|
|
12
|
+
* `rust/core/src/legacy_entities.rs` are already three.
|
|
11
13
|
*/
|
|
12
14
|
export declare function resolveEntityNameAlias(type: string): string;
|
|
13
15
|
/**
|
package/dist/ifc-schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc-schema.d.ts","sourceRoot":"","sources":["../src/ifc-schema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ifc-schema.d.ts","sourceRoot":"","sources":["../src/ifc-schema.ts"],"names":[],"mappings":"AA8CA,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAgBtD,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3D;AAoED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAGxD;AAED;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAMrE;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGjD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMpD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAI1D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG7E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQzD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAI3D"}
|
package/dist/ifc-schema.js
CHANGED
|
@@ -29,9 +29,18 @@ const ENTITY_INFO_BY_UPPER = (() => {
|
|
|
29
29
|
// authoring tools emit the leaf. Resolving the alias to its closest
|
|
30
30
|
// schema-known supertype lets the inheritance walk reach IfcProduct.
|
|
31
31
|
//
|
|
32
|
-
//
|
|
33
|
-
//
|
|
34
|
-
|
|
32
|
+
// Exported from this module (not from the package index) so
|
|
33
|
+
// `query-backend-maps.test.ts` can pin every row against the DESCENDANT
|
|
34
|
+
// direction: `@ifc-lite/data`'s `expandTypeNamesToDescendants` carries its own
|
|
35
|
+
// copy of these rows — it cannot import this one, since the dependency runs
|
|
36
|
+
// the other way — and a row honoured walking up but not walking down means
|
|
37
|
+
// `byType('IfcGeotechnicalStratum')` answers zero on a file full of
|
|
38
|
+
// IFCSOLIDSTRATUM records. That test is the link between the two copies.
|
|
39
|
+
//
|
|
40
|
+
// `rust/core/src/legacy_entities.rs` is the third home, on the other side of
|
|
41
|
+
// the language boundary — if you add a row here, add the matching Rust entry
|
|
42
|
+
// too.
|
|
43
|
+
export const ENTITY_NAME_ALIASES = {
|
|
35
44
|
// IFC4.3 stratum subtypes (issue #860) — schema only has the abstract
|
|
36
45
|
// `IfcGeotechnicalStratum`, real models emit one of these three leaves
|
|
37
46
|
// with a PredefinedType pinned (SOLID / VOID / WATER).
|
|
@@ -56,8 +65,9 @@ const ENTITY_NAME_ALIASES = {
|
|
|
56
65
|
* (the STEP exporter's enum-slot resolution) have to canonicalize the SAME way
|
|
57
66
|
* {@link getAttributeNamesAcrossSchemas} does, or their indices refer to a
|
|
58
67
|
* different attribute list than the names they are indices into. Copying the
|
|
59
|
-
* table into another package would give it a
|
|
60
|
-
*
|
|
68
|
+
* table into another package would give it a further home — this one,
|
|
69
|
+
* `@ifc-lite/data`'s descendant-direction copy and
|
|
70
|
+
* `rust/core/src/legacy_entities.rs` are already three.
|
|
61
71
|
*/
|
|
62
72
|
export function resolveEntityNameAlias(type) {
|
|
63
73
|
return ENTITY_NAME_ALIASES[type.toUpperCase()] ?? type;
|
package/dist/ifc-schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc-schema.js","sourceRoot":"","sources":["../src/ifc-schema.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,aAAa,EAAE,4BAA4B,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAC5J,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAsB,MAAM,gBAAgB,CAAC;AAErH,wEAAwE;AACxE,qEAAqE;AACrE,yEAAyE;AACzE,sEAAsE;AACtE,sDAAsD;AACtD,MAAM,oBAAoB,GAA+B,CAAC,GAAG,EAAE;IAC3D,MAAM,GAAG,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE,aAAa,EAAE,eAAe,CAAC,EAAE,CAAC;QACnE,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;YACxB,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC,CAAC,EAAE,CAAC;AAEL,wEAAwE;AACxE,wEAAwE;AACxE,wEAAwE;AACxE,oEAAoE;AACpE,qEAAqE;AACrE,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"ifc-schema.js","sourceRoot":"","sources":["../src/ifc-schema.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export type { IfcZipContents } from './ifczip.js';
|
|
|
3
3
|
export { StepTokenizer } from './tokenizer.js';
|
|
4
4
|
export { EntityIndexBuilder } from './entity-index.js';
|
|
5
5
|
export { EntityExtractor } from './entity-extractor.js';
|
|
6
|
+
export { STEP_TRIVIA } from './step-trivia.js';
|
|
6
7
|
export { asSourceBytes, contiguousSourceBytes, isSourceBytes, sourceBytesFromTransferable, compressSourceInPlace, sourceBlockStats, EMPTY_SOURCE_BYTES, } from './source-bytes.js';
|
|
7
8
|
export { compressSource, shouldCompressSource, COMPRESSION_MIN_BYTES, type CompressedSource, } from './source-compress.js';
|
|
8
9
|
export { DEFAULT_BLOCK_SIZE, DEFAULT_CACHE_BYTES, type BlockedPayload, type BlockStoreCounters, } from './block-store.js';
|
|
@@ -16,9 +17,11 @@ export { PropertyExtractor } from './property-extractor.js';
|
|
|
16
17
|
export { QuantityExtractor } from './quantity-extractor.js';
|
|
17
18
|
export { RelationshipExtractor } from './relationship-extractor.js';
|
|
18
19
|
export { SpatialHierarchyBuilder } from './spatial-hierarchy-builder.js';
|
|
19
|
-
export { extractLengthUnitScale } from './unit-extractor.js';
|
|
20
|
+
export { extractLengthUnitScale, resolveEntityLengthUnitScale, resolveOwningIfcProjectId, } from './unit-extractor.js';
|
|
20
21
|
export { extractProjectUnits, measureUnit, ProjectUnits, type ResolvedUnit, type MeasureUnit, } from './project-units.js';
|
|
21
|
-
export {
|
|
22
|
+
export { quantitySiScale } from './quantity-collect.js';
|
|
23
|
+
export { scaleMeasureValue, scaledPropertyValue, roundToScale } from './measure-unit-scale.js';
|
|
24
|
+
export { ColumnarParser, type IfcDataStore, type EntityByIdIndex, extractPropertiesOnDemand, extractQuantitiesOnDemand, extractEntityAttributesOnDemand, extractAllEntityAttributes, getRawNamedAttributes, extractRootAttributesFromEntity, extractClassificationsOnDemand, extractClassificationSystemsOnDemand, extractMaterialsOnDemand, extractAllMaterialsOnDemand, extractMaterialPropertiesOnDemand, extractMaterialPropertiesForMaterialId, resolveMaterialDefId, resolveAllMaterialDefIds, collectMaterialLeaves, buildMaterialUsageIndex, getMaterialDisplay, extractTypePropertiesOnDemand, extractTypeEntityOwnProperties, extractTypeQuantitiesOnDemand, mergeInheritedPropertySets, mergeInheritedQuantitySets, extractDocumentsOnDemand, extractRelationshipsOnDemand, extractGroupMembersOnDemand, extractGeoreferencingOnDemand, type ClassificationInfo, type MaterialInfo, type MaterialLayerInfo, type MaterialProfileInfo, type MaterialConstituentInfo, type MaterialPsetGroup, type MaterialLeaf, type MaterialUsage, type TypePropertyInfo, type TypeQuantityInfo, type DocumentInfo, type EntityRelationships, type GroupMember } from './columnar-parser.js';
|
|
22
25
|
export type { IfcStoreBase, IfcSourceHeader, SpatialHierarchy, EntityTable } from '@ifc-lite/data';
|
|
23
26
|
export { parseSourceHeader } from './source-header.js';
|
|
24
27
|
export { attachDataStoreAccessors, type IfcStoreData } from './data-store-accessors.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxF,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxF,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,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,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAQ/C,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,2BAA2B,EAC3B,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,gBAAgB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,KAAK,cAAc,EACnB,KAAK,kBAAkB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACnH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAChH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACrG,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACxF,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,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,KAAK,YAAY,EACjB,KAAK,WAAW,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,+BAA+B,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,+BAA+B,EAAE,8BAA8B,EAAE,oCAAoC,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,iCAAiC,EAAE,sCAAsC,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,8BAA8B,EAAE,6BAA6B,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,6BAA6B,EAAE,KAAK,kBAAkB,EAAE,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,KAAK,uBAAuB,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,KAAK,mBAAmB,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxnC,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,KAAK,yBAAyB,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAK3H,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,QAAQ,IAAI,YAAY,EAC7B,KAAK,oBAAoB,GAC1B,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3L,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,8BAA8B,EAAE,uBAAuB,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACzN,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,+BAA+B,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,KAAK,mBAAmB,EAAE,KAAK,cAAc,EAAE,KAAK,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAIzQ,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EACL,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,GAC7B,MAAM,0BAA0B,CAAC;AAMlC,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAMjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAGrE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,4BAA4B,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC5J,mBAAmB,yBAAyB,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AAGrC,OAAO,EACL,cAAc,EACd,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,GAAG,EACH,OAAO,EACP,WAAW,EACX,WAAW,EACX,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,SAAS,IAAI,aAAa,EAC/B,KAAK,SAAS,GACf,MAAM,4BAA4B,CAAC;AAEpC,cAAc,YAAY,CAAC;AAkB3B,OAAO,EAAE,iBAAiB,EAAE,8BAA8B,EAAE,kBAAkB,EAAE,WAAW,EAAE,cAAc,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,mBAAmB,IAAI,gCAAgC,EAAE,MAAM,iBAAiB,CAAC;AAEnQ,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,YAAY,CAAC;AAKzD,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAmB,KAAK,qBAAqB,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEpG,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACpE,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,6GAA6G;IAC7G,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+GAA+G;IAC/G,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,wHAAwH;IACxH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;oFACgF;IAChF,cAAc,CAAC,EAAE,CAAC,YAAY,EAAE,YAAY,KAAK,IAAI,CAAC;IACtD;;;;;;;OAOG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;CAC/C;AAED;;GAEG;AACH,qBAAa,SAAS;IACpB;;;;;OAKG;IACG,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IAwDlF;;;;;;;;;OASG;IACG,aAAa,CACjB,MAAM,EAAE,WAAW,GAAG,iBAAiB,EACvC,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,YAAY,CAAC;CASzB;AAGD,OAAO,EAA2B,KAAK,eAAe,EAAE,KAAK,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9G;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,KAAK,CAAC;IACd,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB,GAAG;IACF,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,eAAe,CAAC,CA0B1B"}
|
package/dist/index.js
CHANGED
|
@@ -15,6 +15,7 @@ export { unwrapIfcZip, unwrapIfcZipView, unwrapIfcZipWithResources } from './ifc
|
|
|
15
15
|
export { StepTokenizer } from './tokenizer.js';
|
|
16
16
|
export { EntityIndexBuilder } from './entity-index.js';
|
|
17
17
|
export { EntityExtractor } from './entity-extractor.js';
|
|
18
|
+
export { STEP_TRIVIA } from './step-trivia.js';
|
|
18
19
|
// The source accessor (#2183). Exported because the byte-range readers in
|
|
19
20
|
// @ifc-lite/export, @ifc-lite/cli and the viewer now accept either shape, and
|
|
20
21
|
// `IfcDataStore.source` is on its way to this type — so it is public surface
|
|
@@ -33,9 +34,11 @@ export { PropertyExtractor } from './property-extractor.js';
|
|
|
33
34
|
export { QuantityExtractor } from './quantity-extractor.js';
|
|
34
35
|
export { RelationshipExtractor } from './relationship-extractor.js';
|
|
35
36
|
export { SpatialHierarchyBuilder } from './spatial-hierarchy-builder.js';
|
|
36
|
-
export { extractLengthUnitScale } from './unit-extractor.js';
|
|
37
|
+
export { extractLengthUnitScale, resolveEntityLengthUnitScale, resolveOwningIfcProjectId, } from './unit-extractor.js';
|
|
37
38
|
export { extractProjectUnits, measureUnit, ProjectUnits, } from './project-units.js';
|
|
38
|
-
export {
|
|
39
|
+
export { quantitySiScale } from './quantity-collect.js';
|
|
40
|
+
export { scaleMeasureValue, scaledPropertyValue, roundToScale } from './measure-unit-scale.js';
|
|
41
|
+
export { ColumnarParser, extractPropertiesOnDemand, extractQuantitiesOnDemand, extractEntityAttributesOnDemand, extractAllEntityAttributes, getRawNamedAttributes, extractRootAttributesFromEntity, extractClassificationsOnDemand, extractClassificationSystemsOnDemand, extractMaterialsOnDemand, extractAllMaterialsOnDemand, extractMaterialPropertiesOnDemand, extractMaterialPropertiesForMaterialId, resolveMaterialDefId, resolveAllMaterialDefIds, collectMaterialLeaves, buildMaterialUsageIndex, getMaterialDisplay, extractTypePropertiesOnDemand, extractTypeEntityOwnProperties, extractTypeQuantitiesOnDemand, mergeInheritedPropertySets, mergeInheritedQuantitySets, extractDocumentsOnDemand, extractRelationshipsOnDemand, extractGroupMembersOnDemand, extractGeoreferencingOnDemand } from './columnar-parser.js';
|
|
39
42
|
export { parseSourceHeader } from './source-header.js';
|
|
40
43
|
export { attachDataStoreAccessors } from './data-store-accessors.js';
|
|
41
44
|
export { createSyntheticDataStore } from './synthetic-data-store.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,gFAAgF;AAChF,wEAAwE;AACxE,0EAA0E;AAC1E,8EAA8E;AAC9E,wBAAwB;AACxB,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExF,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,0EAA0E;AAC1E,8EAA8E;AAC9E,6EAA6E;AAC7E,+EAA+E;AAC/E,2EAA2E;AAC3E,6EAA6E;AAC7E,sEAAsE;AACtE,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,2BAA2B,EAC3B,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,qBAAqB,GAEtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,GAGpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACnH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACrG,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACxF,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,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve an `ePSet_ProjectedCRS.MapUnit` free-text label to its metre scale.
|
|
3
|
+
*
|
|
4
|
+
* `MapUnit` on the ePSet path is exporter free text, so the label is
|
|
5
|
+
* NORMALISED and then matched EXACTLY — never substring-matched.
|
|
6
|
+
*
|
|
7
|
+
* What the normalisation accepts:
|
|
8
|
+
* - any case and any separators: `metres`, `Meters`, `US survey foot`,
|
|
9
|
+
* `MILLI-METRE` (letters and digits are kept, everything else dropped);
|
|
10
|
+
* - the two base spellings `METRE` and `METER`, each prefixed by any of the
|
|
11
|
+
* sixteen `IfcSIPrefix` members (`MILLIMETRE` … `GIGAMETER`);
|
|
12
|
+
* - the conversion-based length units of the shared table (`FOOT`, `FEET`,
|
|
13
|
+
* `INCH`, `YARD`, `MILE`);
|
|
14
|
+
* - one English plural suffix on any of the above, stripped once and then
|
|
15
|
+
* re-matched exactly: `METRES`, `KILOMETERS`, `MILLIMETRES`, `INCHES`,
|
|
16
|
+
* `MILES`;
|
|
17
|
+
* - the US survey foot, glued (`USSURVEYFOOT`, `USFT`, `FTUS`, …) or
|
|
18
|
+
* separated in any word order (see {@link isUsSurveyFootTokens}).
|
|
19
|
+
*
|
|
20
|
+
* What it still REFUSES (returns `undefined`, so the ePSet convention defers
|
|
21
|
+
* to the project length unit downstream):
|
|
22
|
+
* - an absent or blank label;
|
|
23
|
+
* - a label that merely CONTAINS a known unit: `SQUARE METRE` is an area,
|
|
24
|
+
* `BANANAMETRE` is not a unit, and neither may borrow the metre's scale;
|
|
25
|
+
* - abbreviations that are not in the table (`M`, `MM`, `MTR`);
|
|
26
|
+
* - a survey foot with no nationality (`SURVEY FOOT`);
|
|
27
|
+
* - anything else, including a plural whose singular is still unknown.
|
|
28
|
+
*
|
|
29
|
+
* The exactness is the point. An `includes('METRE')` test is satisfied by
|
|
30
|
+
* MILLIMETRE, CENTIMETRE, KILOMETRE, DECAMETRE, HECTOMETRE and every other
|
|
31
|
+
* prefixed spelling, so a decametre map unit answered 1 — a silent 10x error
|
|
32
|
+
* in the CRS scale; the same shape scaled a projected CRS by 1000x in #3274.
|
|
33
|
+
* Normalising a recognisable spelling onto a table entry is not that: the
|
|
34
|
+
* answer is still one exact table hit, and `DECAMETRES` resolves to 10, not
|
|
35
|
+
* to 1. Where no exact answer exists after normalisation, decline rather than
|
|
36
|
+
* approximate — an absent MapUnit is honest and has a defined meaning, a
|
|
37
|
+
* wrong one relocates the model.
|
|
38
|
+
*
|
|
39
|
+
* Twin of `infer_map_unit_scale` in rust/core/src/georef.rs; both are pinned
|
|
40
|
+
* to the shared vectors in rust/core/tests/fixtures/georef_vectors.json.
|
|
41
|
+
*/
|
|
42
|
+
export declare function inferMapUnitScaleFromLabel(mapUnit: string | undefined): number | undefined;
|
|
43
|
+
//# sourceMappingURL=map-unit-label.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map-unit-label.d.ts","sourceRoot":"","sources":["../src/map-unit-label.ts"],"names":[],"mappings":"AAkFA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAkB1F"}
|
|
@@ -0,0 +1,140 @@
|
|
|
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
|
+
* `ePSet_ProjectedCRS.MapUnit` label resolution.
|
|
6
|
+
*
|
|
7
|
+
* The IFC2x3 ePSet georeferencing convention carries the map unit as a free
|
|
8
|
+
* text `IfcLabel` rather than an `IfcNamedUnit`, so the reader has to decide
|
|
9
|
+
* which spellings it recognises and which it refuses. That decision — and the
|
|
10
|
+
* derived table behind it — lives here rather than in the extractor, next to
|
|
11
|
+
* its twin `infer_map_unit_scale` in rust/core/src/georef.rs and pinned by
|
|
12
|
+
* the shared vectors in rust/core/tests/fixtures/georef_vectors.json.
|
|
13
|
+
*/
|
|
14
|
+
import { CONVERSION_BASED_UNIT_FACTORS, SI_PREFIX_MULTIPLIERS } from './unit-extractor.js';
|
|
15
|
+
/** Fold a free-text unit label to its alphanumerics, upper-cased. */
|
|
16
|
+
function foldUnitLabel(label) {
|
|
17
|
+
return label.toUpperCase().replace(/[^A-Z0-9]/g, '');
|
|
18
|
+
}
|
|
19
|
+
/** Split a free-text unit label into upper-cased alphanumeric tokens. */
|
|
20
|
+
function tokenizeUnitLabel(label) {
|
|
21
|
+
return label.toUpperCase().split(/[^A-Z0-9]+/).filter((token) => token.length > 0);
|
|
22
|
+
}
|
|
23
|
+
/** 1200/3937 m — the US survey foot, distinct from the international 0.3048. */
|
|
24
|
+
const US_SURVEY_FOOT_SCALE = 0.3048006096;
|
|
25
|
+
/**
|
|
26
|
+
* Exact-match table for an `ePSet_ProjectedCRS.MapUnit` free-text label,
|
|
27
|
+
* DERIVED rather than hand-written: every member of the `IfcSIPrefix` EXPRESS
|
|
28
|
+
* enumeration crossed with the METRE/METER spellings, the unprefixed base,
|
|
29
|
+
* and the conversion-based length units from the shared table.
|
|
30
|
+
*
|
|
31
|
+
* A `Map` rather than an object literal so a label like `CONSTRUCTOR` cannot
|
|
32
|
+
* resolve through `Object.prototype`.
|
|
33
|
+
*/
|
|
34
|
+
const MAP_UNIT_LABEL_SCALE = (() => {
|
|
35
|
+
const table = new Map();
|
|
36
|
+
for (const spelling of ['METRE', 'METER']) {
|
|
37
|
+
table.set(foldUnitLabel(spelling), 1);
|
|
38
|
+
for (const [prefix, factor] of Object.entries(SI_PREFIX_MULTIPLIERS)) {
|
|
39
|
+
table.set(foldUnitLabel(prefix + spelling), factor);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
for (const [name, factor] of Object.entries(CONVERSION_BASED_UNIT_FACTORS)) {
|
|
43
|
+
table.set(foldUnitLabel(name), factor);
|
|
44
|
+
}
|
|
45
|
+
// The US survey foot is a different ratio from the international foot
|
|
46
|
+
// (1200/3937 vs 0.3048) and is spelled several ways in the wild. These are
|
|
47
|
+
// the accepted spellings, matched exactly rather than sniffed for.
|
|
48
|
+
for (const alias of ['USSURVEYFOOT', 'USSURVEYFEET', 'USSURVEYFT', 'USFOOT', 'USFEET', 'USFT', 'FTUS']) {
|
|
49
|
+
table.set(alias, US_SURVEY_FOOT_SCALE);
|
|
50
|
+
}
|
|
51
|
+
return table;
|
|
52
|
+
})();
|
|
53
|
+
/** The foot/feet spellings a US-survey qualifier may be attached to. */
|
|
54
|
+
const FOOT_TOKENS = new Set(['FOOT', 'FEET', 'FT']);
|
|
55
|
+
/**
|
|
56
|
+
* Order-insensitive recogniser for the separated US-survey foot spellings —
|
|
57
|
+
* `foot (US survey)`, `SURVEY FEET (US)`, `US survey foot`. The glued
|
|
58
|
+
* spellings (`USSURVEYFOOT`, `FTUS`, …) are in {@link MAP_UNIT_LABEL_SCALE}
|
|
59
|
+
* and matched exactly there; once an exporter puts separators in, the word
|
|
60
|
+
* order varies and gluing alone cannot see it.
|
|
61
|
+
*
|
|
62
|
+
* Accepts exactly one foot token plus either `US` (or the glued `USSURVEY`)
|
|
63
|
+
* or both `US` and `SURVEY`. A bare `SURVEY FOOT` without `US` is REFUSED:
|
|
64
|
+
* other national survey feet exist (the Indian and Clarke feet are different
|
|
65
|
+
* ratios), so the qualifier alone does not identify the value.
|
|
66
|
+
*/
|
|
67
|
+
function isUsSurveyFootTokens(tokens) {
|
|
68
|
+
const feet = tokens.filter((token) => FOOT_TOKENS.has(token));
|
|
69
|
+
if (feet.length !== 1)
|
|
70
|
+
return false;
|
|
71
|
+
const rest = tokens.filter((token) => !FOOT_TOKENS.has(token));
|
|
72
|
+
if (rest.length === 1)
|
|
73
|
+
return rest[0] === 'US' || rest[0] === 'USSURVEY';
|
|
74
|
+
return rest.length === 2 && rest.includes('US') && rest.includes('SURVEY');
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Resolve an `ePSet_ProjectedCRS.MapUnit` free-text label to its metre scale.
|
|
78
|
+
*
|
|
79
|
+
* `MapUnit` on the ePSet path is exporter free text, so the label is
|
|
80
|
+
* NORMALISED and then matched EXACTLY — never substring-matched.
|
|
81
|
+
*
|
|
82
|
+
* What the normalisation accepts:
|
|
83
|
+
* - any case and any separators: `metres`, `Meters`, `US survey foot`,
|
|
84
|
+
* `MILLI-METRE` (letters and digits are kept, everything else dropped);
|
|
85
|
+
* - the two base spellings `METRE` and `METER`, each prefixed by any of the
|
|
86
|
+
* sixteen `IfcSIPrefix` members (`MILLIMETRE` … `GIGAMETER`);
|
|
87
|
+
* - the conversion-based length units of the shared table (`FOOT`, `FEET`,
|
|
88
|
+
* `INCH`, `YARD`, `MILE`);
|
|
89
|
+
* - one English plural suffix on any of the above, stripped once and then
|
|
90
|
+
* re-matched exactly: `METRES`, `KILOMETERS`, `MILLIMETRES`, `INCHES`,
|
|
91
|
+
* `MILES`;
|
|
92
|
+
* - the US survey foot, glued (`USSURVEYFOOT`, `USFT`, `FTUS`, …) or
|
|
93
|
+
* separated in any word order (see {@link isUsSurveyFootTokens}).
|
|
94
|
+
*
|
|
95
|
+
* What it still REFUSES (returns `undefined`, so the ePSet convention defers
|
|
96
|
+
* to the project length unit downstream):
|
|
97
|
+
* - an absent or blank label;
|
|
98
|
+
* - a label that merely CONTAINS a known unit: `SQUARE METRE` is an area,
|
|
99
|
+
* `BANANAMETRE` is not a unit, and neither may borrow the metre's scale;
|
|
100
|
+
* - abbreviations that are not in the table (`M`, `MM`, `MTR`);
|
|
101
|
+
* - a survey foot with no nationality (`SURVEY FOOT`);
|
|
102
|
+
* - anything else, including a plural whose singular is still unknown.
|
|
103
|
+
*
|
|
104
|
+
* The exactness is the point. An `includes('METRE')` test is satisfied by
|
|
105
|
+
* MILLIMETRE, CENTIMETRE, KILOMETRE, DECAMETRE, HECTOMETRE and every other
|
|
106
|
+
* prefixed spelling, so a decametre map unit answered 1 — a silent 10x error
|
|
107
|
+
* in the CRS scale; the same shape scaled a projected CRS by 1000x in #3274.
|
|
108
|
+
* Normalising a recognisable spelling onto a table entry is not that: the
|
|
109
|
+
* answer is still one exact table hit, and `DECAMETRES` resolves to 10, not
|
|
110
|
+
* to 1. Where no exact answer exists after normalisation, decline rather than
|
|
111
|
+
* approximate — an absent MapUnit is honest and has a defined meaning, a
|
|
112
|
+
* wrong one relocates the model.
|
|
113
|
+
*
|
|
114
|
+
* Twin of `infer_map_unit_scale` in rust/core/src/georef.rs; both are pinned
|
|
115
|
+
* to the shared vectors in rust/core/tests/fixtures/georef_vectors.json.
|
|
116
|
+
*/
|
|
117
|
+
export function inferMapUnitScaleFromLabel(mapUnit) {
|
|
118
|
+
if (!mapUnit)
|
|
119
|
+
return undefined;
|
|
120
|
+
const tokens = tokenizeUnitLabel(mapUnit);
|
|
121
|
+
if (tokens.length === 0)
|
|
122
|
+
return undefined;
|
|
123
|
+
if (isUsSurveyFootTokens(tokens))
|
|
124
|
+
return US_SURVEY_FOOT_SCALE;
|
|
125
|
+
const key = foldUnitLabel(mapUnit);
|
|
126
|
+
const exact = MAP_UNIT_LABEL_SCALE.get(key);
|
|
127
|
+
if (exact !== undefined)
|
|
128
|
+
return exact;
|
|
129
|
+
// One English plural suffix, removed once and re-matched exactly. `-ES`
|
|
130
|
+
// covers INCHES, whose singular is not reachable by dropping a single `S`.
|
|
131
|
+
for (const suffix of ['S', 'ES']) {
|
|
132
|
+
if (!key.endsWith(suffix))
|
|
133
|
+
continue;
|
|
134
|
+
const singular = MAP_UNIT_LABEL_SCALE.get(key.slice(0, -suffix.length));
|
|
135
|
+
if (singular !== undefined)
|
|
136
|
+
return singular;
|
|
137
|
+
}
|
|
138
|
+
return undefined;
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=map-unit-label.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map-unit-label.js","sourceRoot":"","sources":["../src/map-unit-label.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,29 +14,14 @@
|
|
|
14
14
|
* - IfcRelAssociatesMaterial: Associates materials with elements
|
|
15
15
|
*/
|
|
16
16
|
import type { IfcEntity } from './entity-extractor.js';
|
|
17
|
+
import type { MaterialLayer, MaterialLayerSet } from './material-layer-reader.js';
|
|
18
|
+
export type { MaterialLayer, MaterialLayerSet } from './material-layer-reader.js';
|
|
17
19
|
export interface Material {
|
|
18
20
|
id: number;
|
|
19
21
|
name: string;
|
|
20
22
|
description?: string;
|
|
21
23
|
category?: string;
|
|
22
24
|
}
|
|
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
25
|
export interface MaterialProfile {
|
|
41
26
|
id: number;
|
|
42
27
|
name?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"material-extractor.d.ts","sourceRoot":"","sources":["../src/material-extractor.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"material-extractor.d.ts","sourceRoot":"","sources":["../src/material-extractor.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAQvD,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAElF,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAElF,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,gBAAgB,CAAC;IACxE,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC3C,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACjD,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC/C,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACrD,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACvD,uBAAuB,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAC7D,YAAY,EAAE,mBAAmB,EAAE,CAAC;CACrC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAChC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GACpC,aAAa,CAmGf;AA0GD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,aAAa,GAC3B,MAAM,GAAG,SAAS,CAQpB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,aAAa,GAC3B,MAAM,GAAG,SAAS,CAqBpB"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
-
import { getString, getNumber,
|
|
4
|
+
import { getString, getNumber, getReference, getReferences } from './attribute-helpers.js';
|
|
5
|
+
import { LAYER_THICKNESS_SLOT, extractMaterialLayer, extractMaterialLayerSet, hasUnrepresentableThickness, } from './material-layer-reader.js';
|
|
5
6
|
/**
|
|
6
7
|
* Extract materials from IFC entities
|
|
7
8
|
*/
|
|
@@ -29,7 +30,16 @@ export function extractMaterials(entities, entitiesByType) {
|
|
|
29
30
|
for (const id of layerIds) {
|
|
30
31
|
const entity = entities.get(id);
|
|
31
32
|
if (entity) {
|
|
32
|
-
|
|
33
|
+
// Dropped rather than recorded with a substituted thickness. A consumer
|
|
34
|
+
// that looks the layer up gets `undefined`, which it can see; a layer
|
|
35
|
+
// recorded as 0 thick reads as a measurement.
|
|
36
|
+
if (hasUnrepresentableThickness(entity)) {
|
|
37
|
+
console.warn(`[material-extractor] IfcMaterialLayer #${id} LayerThickness is outside the ` +
|
|
38
|
+
`IEEE-754 double range (${String(entity.attributes[LAYER_THICKNESS_SLOT])}); ` +
|
|
39
|
+
`dropping the layer rather than reporting it as 0 thick.`);
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
data.materialLayers.set(id, extractMaterialLayer(entity));
|
|
33
43
|
}
|
|
34
44
|
}
|
|
35
45
|
// Extract IfcMaterialLayerSet
|
|
@@ -93,41 +103,6 @@ function extractMaterial(entity) {
|
|
|
93
103
|
category: getString(entity.attributes[2]),
|
|
94
104
|
};
|
|
95
105
|
}
|
|
96
|
-
function extractMaterialLayer(entity, entities) {
|
|
97
|
-
const materialRef = getReference(entity.attributes[0]);
|
|
98
|
-
const thickness = getNumber(entity.attributes[1]) || 0;
|
|
99
|
-
return {
|
|
100
|
-
id: entity.expressId,
|
|
101
|
-
material: materialRef || 0,
|
|
102
|
-
thickness,
|
|
103
|
-
isVentilated: getBoolean(entity.attributes[2]),
|
|
104
|
-
name: getString(entity.attributes[3]),
|
|
105
|
-
description: getString(entity.attributes[4]),
|
|
106
|
-
category: getString(entity.attributes[5]),
|
|
107
|
-
priority: getNumber(entity.attributes[6]),
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
function extractMaterialLayerSet(entity, entities) {
|
|
111
|
-
const layers = getReferences(entity.attributes[0]) || [];
|
|
112
|
-
const name = getString(entity.attributes[1]);
|
|
113
|
-
const description = getString(entity.attributes[2]);
|
|
114
|
-
// Calculate total thickness
|
|
115
|
-
let totalThickness = 0;
|
|
116
|
-
for (const layerId of layers) {
|
|
117
|
-
const layerEntity = entities.get(layerId);
|
|
118
|
-
if (layerEntity) {
|
|
119
|
-
const thickness = getNumber(layerEntity.attributes[1]) || 0;
|
|
120
|
-
totalThickness += thickness;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
return {
|
|
124
|
-
id: entity.expressId,
|
|
125
|
-
name,
|
|
126
|
-
description,
|
|
127
|
-
layers,
|
|
128
|
-
totalThickness,
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
106
|
function extractMaterialProfile(entity, entities) {
|
|
132
107
|
return {
|
|
133
108
|
id: entity.expressId,
|