@ifc-lite/ids 3.2.0 → 3.3.2
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/README.md +10 -1
- package/dist/audit/coherence/cardinality.js +4 -1
- package/dist/audit/coherence/cardinality.js.map +1 -1
- package/dist/audit/coherence/index.d.ts +0 -1
- package/dist/audit/coherence/index.d.ts.map +1 -1
- package/dist/audit/coherence/index.js +59 -45
- package/dist/audit/coherence/index.js.map +1 -1
- package/dist/audit/coherence/regex.d.ts +3 -3
- package/dist/audit/coherence/regex.js +3 -3
- package/dist/audit/ifc-schema/attribute-value.d.ts +19 -0
- package/dist/audit/ifc-schema/attribute-value.d.ts.map +1 -0
- package/dist/audit/ifc-schema/attribute-value.js +71 -0
- package/dist/audit/ifc-schema/attribute-value.js.map +1 -0
- package/dist/audit/ifc-schema/datatype-check.d.ts +9 -1
- package/dist/audit/ifc-schema/datatype-check.d.ts.map +1 -1
- package/dist/audit/ifc-schema/datatype-check.js +24 -2
- package/dist/audit/ifc-schema/datatype-check.js.map +1 -1
- package/dist/audit/ifc-schema/entity-requirement.d.ts +21 -0
- package/dist/audit/ifc-schema/entity-requirement.d.ts.map +1 -0
- package/dist/audit/ifc-schema/entity-requirement.js +45 -0
- package/dist/audit/ifc-schema/entity-requirement.js.map +1 -0
- package/dist/audit/ifc-schema/index.d.ts.map +1 -1
- package/dist/audit/ifc-schema/index.js +105 -19
- package/dist/audit/ifc-schema/index.js.map +1 -1
- package/dist/audit/index.d.ts.map +1 -1
- package/dist/audit/index.js +8 -2
- package/dist/audit/index.js.map +1 -1
- package/dist/audit/parser-shim.d.ts +15 -1
- package/dist/audit/parser-shim.d.ts.map +1 -1
- package/dist/audit/parser-shim.js +2 -2
- package/dist/audit/parser-shim.js.map +1 -1
- package/dist/audit/structural/index.d.ts +3 -1
- package/dist/audit/structural/index.d.ts.map +1 -1
- package/dist/audit/structural/index.js +48 -179
- package/dist/audit/structural/index.js.map +1 -1
- package/dist/audit/structural/shapes.d.ts +47 -0
- package/dist/audit/structural/shapes.d.ts.map +1 -0
- package/dist/audit/structural/shapes.js +185 -0
- package/dist/audit/structural/shapes.js.map +1 -0
- package/dist/audit/types.d.ts +9 -1
- package/dist/audit/types.d.ts.map +1 -1
- package/dist/audit/xsd/index.js +1 -1
- package/dist/audit/xsd/index.js.map +1 -1
- package/dist/bridge/data-accessor.d.ts.map +1 -1
- package/dist/bridge/data-accessor.js +49 -25
- package/dist/bridge/data-accessor.js.map +1 -1
- package/dist/bridge/index.d.ts +1 -0
- package/dist/bridge/index.d.ts.map +1 -1
- package/dist/bridge/index.js +1 -0
- package/dist/bridge/index.js.map +1 -1
- package/dist/bridge/measure-conversion.d.ts +51 -0
- package/dist/bridge/measure-conversion.d.ts.map +1 -0
- package/dist/bridge/measure-conversion.js +106 -0
- package/dist/bridge/measure-conversion.js.map +1 -0
- package/dist/bridge/predefined-property-sets.d.ts +24 -0
- package/dist/bridge/predefined-property-sets.d.ts.map +1 -0
- package/dist/bridge/predefined-property-sets.js +86 -0
- package/dist/bridge/predefined-property-sets.js.map +1 -0
- package/dist/bridge/predefined-types.d.ts +34 -13
- package/dist/bridge/predefined-types.d.ts.map +1 -1
- package/dist/bridge/predefined-types.js +40 -71
- package/dist/bridge/predefined-types.js.map +1 -1
- package/dist/bridge/project-property.d.ts +43 -0
- package/dist/bridge/project-property.d.ts.map +1 -0
- package/dist/bridge/project-property.js +60 -0
- package/dist/bridge/project-property.js.map +1 -0
- package/dist/bridge/properties.d.ts +4 -3
- package/dist/bridge/properties.d.ts.map +1 -1
- package/dist/bridge/properties.js +64 -111
- package/dist/bridge/properties.js.map +1 -1
- package/dist/bridge/property-overlay-resolver.d.ts +10 -0
- package/dist/bridge/property-overlay-resolver.d.ts.map +1 -1
- package/dist/bridge/property-overlay-resolver.js +53 -4
- package/dist/bridge/property-overlay-resolver.js.map +1 -1
- package/dist/bridge/units.d.ts +49 -20
- package/dist/bridge/units.d.ts.map +1 -1
- package/dist/bridge/units.js +134 -84
- package/dist/bridge/units.js.map +1 -1
- package/dist/constraint-types.d.ts +30 -14
- package/dist/constraint-types.d.ts.map +1 -1
- package/dist/constraints/comparators.d.ts +4 -1
- package/dist/constraints/comparators.d.ts.map +1 -1
- package/dist/constraints/comparators.js +6 -1
- package/dist/constraints/comparators.js.map +1 -1
- package/dist/constraints/describe.d.ts.map +1 -1
- package/dist/constraints/describe.js +67 -21
- package/dist/constraints/describe.js.map +1 -1
- package/dist/constraints/match-bounds.d.ts +25 -0
- package/dist/constraints/match-bounds.d.ts.map +1 -0
- package/dist/constraints/match-bounds.js +112 -0
- package/dist/constraints/match-bounds.js.map +1 -0
- package/dist/constraints/match-family.d.ts.map +1 -1
- package/dist/constraints/match-family.js +25 -90
- package/dist/constraints/match-family.js.map +1 -1
- package/dist/constraints/xsd-datetime.js +6 -6
- package/dist/constraints/xsd-examples.d.ts +20 -0
- package/dist/constraints/xsd-examples.d.ts.map +1 -0
- package/dist/constraints/xsd-examples.js +187 -0
- package/dist/constraints/xsd-examples.js.map +1 -0
- package/dist/constraints/xsd-lexical.d.ts +2 -0
- package/dist/constraints/xsd-lexical.d.ts.map +1 -0
- package/dist/constraints/xsd-lexical.js +49 -0
- package/dist/constraints/xsd-lexical.js.map +1 -0
- package/dist/constraints/xsd-order.d.ts +33 -0
- package/dist/constraints/xsd-order.d.ts.map +1 -0
- package/dist/constraints/xsd-order.js +211 -0
- package/dist/constraints/xsd-order.js.map +1 -0
- package/dist/constraints/xsd-regex-ast.d.ts +37 -0
- package/dist/constraints/xsd-regex-ast.d.ts.map +1 -0
- package/dist/constraints/xsd-regex-ast.js +137 -0
- package/dist/constraints/xsd-regex-ast.js.map +1 -0
- package/dist/constraints/xsd-regex-blocks.d.ts +7 -0
- package/dist/constraints/xsd-regex-blocks.d.ts.map +1 -0
- package/dist/constraints/xsd-regex-blocks.js +68 -0
- package/dist/constraints/xsd-regex-blocks.js.map +1 -0
- package/dist/constraints/xsd-regex.d.ts +2 -45
- package/dist/constraints/xsd-regex.d.ts.map +1 -1
- package/dist/constraints/xsd-regex.js +231 -134
- package/dist/constraints/xsd-regex.js.map +1 -1
- package/dist/facets/entity-facet.d.ts.map +1 -1
- package/dist/facets/entity-facet.js +4 -1
- package/dist/facets/entity-facet.js.map +1 -1
- package/dist/facets/partof-facet.d.ts.map +1 -1
- package/dist/facets/partof-facet.js +80 -19
- package/dist/facets/partof-facet.js.map +1 -1
- package/dist/facets/predefined-type-match.d.ts +8 -3
- package/dist/facets/predefined-type-match.d.ts.map +1 -1
- package/dist/facets/predefined-type-match.js.map +1 -1
- package/dist/index.d.ts +8 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -1
- package/dist/parser/dom.d.ts +4 -0
- package/dist/parser/dom.d.ts.map +1 -1
- package/dist/parser/dom.js +5 -0
- package/dist/parser/dom.js.map +1 -1
- package/dist/parser/parse-restriction.d.ts.map +1 -1
- package/dist/parser/parse-restriction.js +32 -14
- package/dist/parser/parse-restriction.js.map +1 -1
- package/dist/parser/xml-parser.d.ts +7 -4
- package/dist/parser/xml-parser.d.ts.map +1 -1
- package/dist/parser/xml-parser.js +30 -45
- package/dist/parser/xml-parser.js.map +1 -1
- package/dist/preview/audit.d.ts +16 -0
- package/dist/preview/audit.d.ts.map +1 -0
- package/dist/preview/audit.js +58 -0
- package/dist/preview/audit.js.map +1 -0
- package/dist/preview/features.d.ts +30 -0
- package/dist/preview/features.d.ts.map +1 -0
- package/dist/preview/features.js +96 -0
- package/dist/preview/features.js.map +1 -0
- package/dist/preview/parse-ids11.d.ts +9 -0
- package/dist/preview/parse-ids11.d.ts.map +1 -0
- package/dist/preview/parse-ids11.js +90 -0
- package/dist/preview/parse-ids11.js.map +1 -0
- package/dist/preview/partof-nested.d.ts +27 -0
- package/dist/preview/partof-nested.d.ts.map +1 -0
- package/dist/preview/partof-nested.js +61 -0
- package/dist/preview/partof-nested.js.map +1 -0
- package/dist/preview/tolerance.d.ts +15 -0
- package/dist/preview/tolerance.d.ts.map +1 -0
- package/dist/preview/tolerance.js +66 -0
- package/dist/preview/tolerance.js.map +1 -0
- package/dist/preview/types.d.ts +67 -0
- package/dist/preview/types.d.ts.map +1 -0
- package/dist/preview/types.js +5 -0
- package/dist/preview/types.js.map +1 -0
- package/dist/translation/describe-constraint.js +16 -14
- package/dist/translation/describe-constraint.js.map +1 -1
- package/dist/translation/locales/de.d.ts +2 -0
- package/dist/translation/locales/de.d.ts.map +1 -1
- package/dist/translation/locales/de.js +2 -0
- package/dist/translation/locales/de.js.map +1 -1
- package/dist/translation/locales/en.d.ts +2 -0
- package/dist/translation/locales/en.d.ts.map +1 -1
- package/dist/translation/locales/en.js +2 -0
- package/dist/translation/locales/en.js.map +1 -1
- package/dist/translation/locales/fr.d.ts +2 -0
- package/dist/translation/locales/fr.d.ts.map +1 -1
- package/dist/translation/locales/fr.js +2 -0
- package/dist/translation/locales/fr.js.map +1 -1
- package/dist/translation/locales/index.d.ts +1 -0
- package/dist/translation/locales/index.d.ts.map +1 -1
- package/dist/translation/locales/index.js +1 -0
- package/dist/translation/locales/index.js.map +1 -1
- package/dist/translation/locales/it.d.ts +198 -0
- package/dist/translation/locales/it.d.ts.map +1 -0
- package/dist/translation/locales/it.js +235 -0
- package/dist/translation/locales/it.js.map +1 -0
- package/dist/translation/service.d.ts +2 -6
- package/dist/translation/service.d.ts.map +1 -1
- package/dist/translation/service.js +17 -25
- package/dist/translation/service.js.map +1 -1
- package/dist/types.d.ts +26 -31
- package/dist/types.d.ts.map +1 -1
- package/dist/validation/format-failure-reason.js +1 -1
- package/dist/validation/format-failure-reason.js.map +1 -1
- package/dist/validation/prohibited-specification.d.ts +31 -0
- package/dist/validation/prohibited-specification.d.ts.map +1 -0
- package/dist/validation/prohibited-specification.js +25 -0
- package/dist/validation/prohibited-specification.js.map +1 -0
- package/dist/validation/validator.d.ts.map +1 -1
- package/dist/validation/validator.js +14 -11
- package/dist/validation/validator.js.map +1 -1
- package/dist/writer/constraint.d.ts +8 -0
- package/dist/writer/constraint.d.ts.map +1 -0
- package/dist/writer/constraint.js +142 -0
- package/dist/writer/constraint.js.map +1 -0
- package/dist/writer/index.d.ts +48 -0
- package/dist/writer/index.d.ts.map +1 -0
- package/dist/writer/index.js +209 -0
- package/dist/writer/index.js.map +1 -0
- package/dist/writer/xml-lines.d.ts +17 -0
- package/dist/writer/xml-lines.d.ts.map +1 -0
- package/dist/writer/xml-lines.js +69 -0
- package/dist/writer/xml-lines.js.map +1 -0
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/audit/xsd/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAqB/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/audit/xsd/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-accessor.d.ts","sourceRoot":"","sources":["../../src/bridge/data-accessor.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"data-accessor.d.ts","sourceRoot":"","sources":["../../src/bridge/data-accessor.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,YAAY,EAIlB,MAAM,kBAAkB,CAAC;AAQ1B,OAAO,KAAK,EACV,eAAe,EAOhB,MAAM,aAAa,CAAC;AAKrB,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC7B,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAGxF,YAAY,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,CAAC;AAE1D,YAAY,EAAE,oBAAoB,EAAE,CAAC;AAMrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,YAAY,EACnB,eAAe,CAAC,EAAE,uBAAuB,EACzC,gBAAgB,CAAC,EAAE,oBAAoB,GACtC,eAAe,CAuRjB"}
|
|
@@ -1,15 +1,16 @@
|
|
|
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 { extractAllEntityAttributes, extractAllMaterialsOnDemand, } from '@ifc-lite/parser';
|
|
5
|
-
import { RelationshipType, getAttributeXsdTypes, iterateEffectiveEntities, } from '@ifc-lite/data';
|
|
4
|
+
import { extractAllEntityAttributes, extractAllMaterialsOnDemand, getAttributeTypeForSchema, } from '@ifc-lite/parser';
|
|
5
|
+
import { RelationshipType, exactTypeName, getAttributeXsdTypes, iterateEffectiveEntities, } from '@ifc-lite/data';
|
|
6
6
|
import { flattenMaterials } from './materials.js';
|
|
7
7
|
import { createExternalReferenceContext, resolveClassifications } from './classifications.js';
|
|
8
8
|
import { resolvePartOfAncestors } from './ancestors.js';
|
|
9
9
|
import { resolveEffectivePropertySets, } from './property-overlay-resolver.js';
|
|
10
|
-
import {
|
|
10
|
+
import { resolvePredefinedType } from './predefined-types.js';
|
|
11
11
|
import { narrowSchemaVersion } from './schema-version.js';
|
|
12
12
|
import { overlayEntityLookup } from './entity-visibility.js';
|
|
13
|
+
import { resolveEntityMeasureScales, toBaseSI } from './units.js';
|
|
13
14
|
// `PropertyOverride`/`PropertyOverlayResolver` are re-exported above from
|
|
14
15
|
// ./property-overlay-resolver.js; the PartOf relation map and ancestor BFS
|
|
15
16
|
// walk live in ./ancestors.js — see `resolvePartOfAncestors` below.
|
|
@@ -62,14 +63,30 @@ export function createDataAccessor(store, propertyOverlay, entityVisibility) {
|
|
|
62
63
|
}
|
|
63
64
|
return all;
|
|
64
65
|
}
|
|
65
|
-
function
|
|
66
|
+
function findAttribute(expressId, attributeName) {
|
|
66
67
|
const lower = attributeName.toLowerCase();
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
68
|
+
return getEntityAttributes(expressId).find((a) => a.name.toLowerCase() === lower);
|
|
69
|
+
}
|
|
70
|
+
function findAttributeValue(expressId, attributeName) {
|
|
71
|
+
return findAttribute(expressId, attributeName)?.value;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* A measure-typed attribute (`IfcDoor.OverallHeight`, an
|
|
75
|
+
* `IfcPositiveLengthMeasure`) is stored in the project's units, and IDS
|
|
76
|
+
* compares it in SI like a property value (#7395). The attribute's declared
|
|
77
|
+
* EXPRESS type picks the conversion; any other attribute passes through.
|
|
78
|
+
*/
|
|
79
|
+
function attributeInSi(expressId, attr) {
|
|
80
|
+
if (typeof attr.value !== 'number')
|
|
81
|
+
return attr.value;
|
|
82
|
+
const entityType = accessor.getEntityType(expressId);
|
|
83
|
+
const dataType = entityType
|
|
84
|
+
? getAttributeTypeForSchema(entityType, attr.name, store.schemaVersion)
|
|
85
|
+
: undefined;
|
|
86
|
+
if (!dataType)
|
|
87
|
+
return attr.value;
|
|
88
|
+
const si = toBaseSI(attr.value, dataType.toUpperCase(), resolveEntityMeasureScales(store, expressId));
|
|
89
|
+
return typeof si === 'number' ? si : attr.value;
|
|
73
90
|
}
|
|
74
91
|
/**
|
|
75
92
|
* Property sets for `expressId`, with any pending overlay writes applied
|
|
@@ -85,12 +102,16 @@ export function createDataAccessor(store, propertyOverlay, entityVisibility) {
|
|
|
85
102
|
const overlaid = overlay?.typeOf(expressId);
|
|
86
103
|
if (overlaid)
|
|
87
104
|
return overlaid;
|
|
105
|
+
// The class the STEP line DECLARES, in IFC PascalCase: IDS entity
|
|
106
|
+
// facets match the exact class. `getTypeName` coalesces eight
|
|
107
|
+
// *StandardCase classes and two distribution subtypes onto their
|
|
108
|
+
// parent's enum value (#7402), so it is not used here.
|
|
88
109
|
// The columnar entity table only summarises "interesting"
|
|
89
110
|
// entities (spatial, building elements, etc.); resource-level
|
|
90
111
|
// types resolve to `'Unknown'` there. Fall back to the raw
|
|
91
112
|
// type name from `entityIndex.byId` so applicability checks
|
|
92
113
|
// for those types still match.
|
|
93
|
-
const entityType = store.entities
|
|
114
|
+
const entityType = store.entities ? exactTypeName(store.entities, expressId) : undefined;
|
|
94
115
|
if (entityType && entityType !== 'Unknown')
|
|
95
116
|
return entityType;
|
|
96
117
|
// @raw-entity-enumeration-ok point lookup of one source record's parsed class; created and retyped ids were answered from the overlay above
|
|
@@ -146,10 +167,14 @@ export function createDataAccessor(store, propertyOverlay, entityVisibility) {
|
|
|
146
167
|
return getAttributeXsdTypes(narrowSchemaVersion(store.schemaVersion), entityType, attrName);
|
|
147
168
|
},
|
|
148
169
|
getPredefinedTypeRaw(expressId) {
|
|
149
|
-
return
|
|
170
|
+
return resolvePredefinedType(store, expressId, getEntityAttributes).raw;
|
|
150
171
|
},
|
|
151
172
|
getObjectType(expressId) {
|
|
152
|
-
|
|
173
|
+
// The IDS predefined-type value: the user-defined name for
|
|
174
|
+
// USERDEFINED, else the enum token. Never the bare `ObjectType`
|
|
175
|
+
// of an entity whose PredefinedType is unset or NOTDEFINED (#7394).
|
|
176
|
+
const { raw, userDefined } = resolvePredefinedType(store, expressId, getEntityAttributes);
|
|
177
|
+
return userDefined ?? raw;
|
|
153
178
|
},
|
|
154
179
|
getSchemaVersion() {
|
|
155
180
|
return store.schemaVersion;
|
|
@@ -221,19 +246,18 @@ export function createDataAccessor(store, propertyOverlay, entityVisibility) {
|
|
|
221
246
|
return accessor.getDescription(expressId);
|
|
222
247
|
case 'globalid':
|
|
223
248
|
return accessor.getGlobalId(expressId);
|
|
224
|
-
// `predefinedtype`
|
|
225
|
-
// `
|
|
226
|
-
//
|
|
227
|
-
//
|
|
228
|
-
//
|
|
229
|
-
//
|
|
230
|
-
//
|
|
231
|
-
|
|
232
|
-
return accessor.getObjectType(expressId);
|
|
249
|
+
// No `predefinedtype` case: the attribute facet tests the
|
|
250
|
+
// `PredefinedType` attribute as stored on this entity, so it
|
|
251
|
+
// reads through the raw extraction below like any other named
|
|
252
|
+
// attribute. The type-inherited, USERDEFINED-substituted value
|
|
253
|
+
// is the ENTITY facet's notion (`getObjectType`), not an
|
|
254
|
+
// attribute (#7394). Likewise `objecttype` must not resolve
|
|
255
|
+
// through `getObjectType`, which would shadow the entity's real
|
|
256
|
+
// `ObjectType` attribute with the PredefinedType enum.
|
|
233
257
|
default: {
|
|
234
|
-
const fromExtract =
|
|
235
|
-
if (fromExtract !== undefined)
|
|
236
|
-
return fromExtract;
|
|
258
|
+
const fromExtract = findAttribute(expressId, attributeName);
|
|
259
|
+
if (fromExtract?.value !== undefined)
|
|
260
|
+
return attributeInSi(expressId, fromExtract);
|
|
237
261
|
const entities = store.entities;
|
|
238
262
|
return entities?.getAttribute
|
|
239
263
|
? entities.getAttribute(expressId, attributeName)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-accessor.js","sourceRoot":"","sources":["../../src/bridge/data-accessor.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAEL,0BAA0B,EAC1B,2BAA2B,
|
|
1
|
+
{"version":3,"file":"data-accessor.js","sourceRoot":"","sources":["../../src/bridge/data-accessor.ts"],"names":[],"mappings":"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"}
|
package/dist/bridge/index.d.ts
CHANGED
|
@@ -16,5 +16,6 @@ export { createDataAccessor } from './data-accessor.js';
|
|
|
16
16
|
export type { PropertyOverride, PropertyOverlayResolver, EntityVisibilityView, } from './data-accessor.js';
|
|
17
17
|
export { narrowSchemaVersion } from './schema-version.js';
|
|
18
18
|
export { resolveEntityMeasureScales, toRaw } from './units.js';
|
|
19
|
+
export { propertyValueToRaw } from './property-overlay-resolver.js';
|
|
19
20
|
export type { EntityMeasureScales } from './units.js';
|
|
20
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EACV,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC/D,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EACV,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/bridge/index.js
CHANGED
|
@@ -18,4 +18,5 @@
|
|
|
18
18
|
export { createDataAccessor } from './data-accessor.js';
|
|
19
19
|
export { narrowSchemaVersion } from './schema-version.js';
|
|
20
20
|
export { resolveEntityMeasureScales, toRaw } from './units.js';
|
|
21
|
+
export { propertyValueToRaw } from './property-overlay-resolver.js';
|
|
21
22
|
//# sourceMappingURL=index.js.map
|
package/dist/bridge/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAMxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAMxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which SI conversion an IFC measure value takes (#7395). IDS 1.0 compares
|
|
3
|
+
* every measure in SI units, so a value stored in a project or own unit has
|
|
4
|
+
* to be brought into the SI base of its measure: metre, radian, kelvin,
|
|
5
|
+
* kilogram, second, newton, watt, and the derived units composed of them.
|
|
6
|
+
*
|
|
7
|
+
* Length, area and volume keep their dedicated resolution in `units.ts`
|
|
8
|
+
* (`store.lengthUnitScale`, which prefers the named conversion table, and the
|
|
9
|
+
* squared/cubed fallback); every other dimensioned measure reads the unit the
|
|
10
|
+
* project declares for its unit type, through the parser's canonical
|
|
11
|
+
* measure-to-unit-type table (`measureUnit`). Dimensionless and monetary
|
|
12
|
+
* measures are not SI quantities and never move.
|
|
13
|
+
*/
|
|
14
|
+
import { type ProjectUnits } from '@ifc-lite/parser';
|
|
15
|
+
/** `si = raw * scale + offset`. The offset is non-zero only for a temperature
|
|
16
|
+
* in Celsius or in a unit with an offset (Fahrenheit). */
|
|
17
|
+
export interface SiConversion {
|
|
18
|
+
scale: number;
|
|
19
|
+
offset: number;
|
|
20
|
+
}
|
|
21
|
+
/** The measures `units.ts` resolves from the project's length unit. */
|
|
22
|
+
export type LengthFamilyKind = 'length' | 'area' | 'volume';
|
|
23
|
+
export declare function lengthFamilyKind(dataType: string | undefined): LengthFamilyKind | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* The conversion for a value in a unit with SI factor `siScale`, display
|
|
26
|
+
* `symbol` and, for an `IfcConversionBasedUnitWithOffset`, additive SI
|
|
27
|
+
* offset `siOffset` (68 °F is 293.15 K). Without an offset a temperature is
|
|
28
|
+
* only convertible from kelvin or Celsius: any other temperature unit
|
|
29
|
+
* stays as written rather than being scaled without its offset.
|
|
30
|
+
*/
|
|
31
|
+
export declare function unitConversion(dataType: string, siScale: number | undefined, symbol: string | undefined, siOffset?: number): SiConversion | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* The project-unit conversion for a dimensioned measure outside the length
|
|
34
|
+
* family, or `undefined` when the measure is dimensionless, monetary, has no
|
|
35
|
+
* declared unit (SI is then implied), or its declared unit could not be read.
|
|
36
|
+
* `fallbackUnits` answers only for a unit type `units` leaves undeclared.
|
|
37
|
+
*/
|
|
38
|
+
export declare function projectUnitConversion(dataType: string | undefined, units: ProjectUnits | undefined, fallbackUnits?: ProjectUnits): SiConversion | undefined;
|
|
39
|
+
export declare function isIdentity(c: SiConversion | undefined): boolean;
|
|
40
|
+
export declare function toSi(raw: number, c: SiConversion): number;
|
|
41
|
+
export declare function fromSi(si: number, c: SiConversion): number;
|
|
42
|
+
/** Convert a numeric value or numeric string; `null` when it is not a finite number. */
|
|
43
|
+
export declare function convertNumeric(v: unknown, c: SiConversion): number | null;
|
|
44
|
+
/**
|
|
45
|
+
* Convert the members of a list or table whose members carry their own types
|
|
46
|
+
* (`valueDataTypes`, index-aligned with `values`), each by the conversion
|
|
47
|
+
* `conversionFor` gives its type. An untyped or non-measure member stays as
|
|
48
|
+
* written.
|
|
49
|
+
*/
|
|
50
|
+
export declare function convertTypedMembers(values: string[], valueDataTypes: ReadonlyArray<string | undefined>, conversionFor: (dataType: string | undefined) => SiConversion | undefined): string[];
|
|
51
|
+
//# sourceMappingURL=measure-conversion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"measure-conversion.d.ts","sourceRoot":"","sources":["../../src/bridge/measure-conversion.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAElE;2DAC2D;AAC3D,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAKD,uEAAuE;AACvE,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE5D,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS,CAY3F;AAMD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,QAAQ,CAAC,EAAE,MAAM,GAChB,YAAY,GAAG,SAAS,CAO1B;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,KAAK,EAAE,YAAY,GAAG,SAAS,EAC/B,aAAa,CAAC,EAAE,YAAY,GAC3B,YAAY,GAAG,SAAS,CAW1B;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAE/D;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAEzD;AAED,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAE1D;AAED,wFAAwF;AACxF,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAGzE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EAAE,EAChB,cAAc,EAAE,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC,EACjD,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,KAAK,YAAY,GAAG,SAAS,GACxE,MAAM,EAAE,CAOV"}
|
|
@@ -0,0 +1,106 @@
|
|
|
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
|
+
* Which SI conversion an IFC measure value takes (#7395). IDS 1.0 compares
|
|
6
|
+
* every measure in SI units, so a value stored in a project or own unit has
|
|
7
|
+
* to be brought into the SI base of its measure: metre, radian, kelvin,
|
|
8
|
+
* kilogram, second, newton, watt, and the derived units composed of them.
|
|
9
|
+
*
|
|
10
|
+
* Length, area and volume keep their dedicated resolution in `units.ts`
|
|
11
|
+
* (`store.lengthUnitScale`, which prefers the named conversion table, and the
|
|
12
|
+
* squared/cubed fallback); every other dimensioned measure reads the unit the
|
|
13
|
+
* project declares for its unit type, through the parser's canonical
|
|
14
|
+
* measure-to-unit-type table (`measureUnit`). Dimensionless and monetary
|
|
15
|
+
* measures are not SI quantities and never move.
|
|
16
|
+
*/
|
|
17
|
+
import { measureUnit } from '@ifc-lite/parser';
|
|
18
|
+
/** 0 °C in kelvin. */
|
|
19
|
+
const CELSIUS_OFFSET_K = 273.15;
|
|
20
|
+
export function lengthFamilyKind(dataType) {
|
|
21
|
+
const upper = dataType ? dataType.toUpperCase() : '';
|
|
22
|
+
if (upper === 'IFCLENGTHMEASURE' ||
|
|
23
|
+
upper === 'IFCPOSITIVELENGTHMEASURE' ||
|
|
24
|
+
upper === 'IFCNONNEGATIVELENGTHMEASURE') {
|
|
25
|
+
return 'length';
|
|
26
|
+
}
|
|
27
|
+
if (upper === 'IFCAREAMEASURE')
|
|
28
|
+
return 'area';
|
|
29
|
+
if (upper === 'IFCVOLUMEMEASURE')
|
|
30
|
+
return 'volume';
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
function isTemperature(dataType) {
|
|
34
|
+
return dataType.toUpperCase() === 'IFCTHERMODYNAMICTEMPERATUREMEASURE';
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* The conversion for a value in a unit with SI factor `siScale`, display
|
|
38
|
+
* `symbol` and, for an `IfcConversionBasedUnitWithOffset`, additive SI
|
|
39
|
+
* offset `siOffset` (68 °F is 293.15 K). Without an offset a temperature is
|
|
40
|
+
* only convertible from kelvin or Celsius: any other temperature unit
|
|
41
|
+
* stays as written rather than being scaled without its offset.
|
|
42
|
+
*/
|
|
43
|
+
export function unitConversion(dataType, siScale, symbol, siOffset) {
|
|
44
|
+
if (siScale === undefined || !Number.isFinite(siScale) || siScale <= 0)
|
|
45
|
+
return undefined;
|
|
46
|
+
if (siOffset !== undefined)
|
|
47
|
+
return Number.isFinite(siOffset) ? { scale: siScale, offset: siOffset } : undefined;
|
|
48
|
+
if (!isTemperature(dataType))
|
|
49
|
+
return { scale: siScale, offset: 0 };
|
|
50
|
+
if (symbol === 'K')
|
|
51
|
+
return { scale: siScale, offset: 0 };
|
|
52
|
+
if (symbol === '°C')
|
|
53
|
+
return { scale: siScale, offset: CELSIUS_OFFSET_K };
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* The project-unit conversion for a dimensioned measure outside the length
|
|
58
|
+
* family, or `undefined` when the measure is dimensionless, monetary, has no
|
|
59
|
+
* declared unit (SI is then implied), or its declared unit could not be read.
|
|
60
|
+
* `fallbackUnits` answers only for a unit type `units` leaves undeclared.
|
|
61
|
+
*/
|
|
62
|
+
export function projectUnitConversion(dataType, units, fallbackUnits) {
|
|
63
|
+
if (!dataType || (!units && !fallbackUnits) || lengthFamilyKind(dataType))
|
|
64
|
+
return undefined;
|
|
65
|
+
const m = measureUnit(dataType);
|
|
66
|
+
if (!m || m.kind !== 'typed')
|
|
67
|
+
return undefined;
|
|
68
|
+
// A unit the owner declares but could not resolve (`unitForMeasure` null)
|
|
69
|
+
// stays unconverted: the file-wide unit answers only an undeclared type.
|
|
70
|
+
const own = units?.resolvedForUnitType(m.unitType);
|
|
71
|
+
const ownUnresolved = !own && units?.unitForMeasure(dataType) === null;
|
|
72
|
+
const declared = own ?? (ownUnresolved ? undefined : fallbackUnits?.resolvedForUnitType(m.unitType));
|
|
73
|
+
if (!declared)
|
|
74
|
+
return undefined;
|
|
75
|
+
return unitConversion(dataType, declared.siScale, declared.symbol, declared.siOffset);
|
|
76
|
+
}
|
|
77
|
+
export function isIdentity(c) {
|
|
78
|
+
return !c || (c.scale === 1 && c.offset === 0);
|
|
79
|
+
}
|
|
80
|
+
export function toSi(raw, c) {
|
|
81
|
+
return raw * c.scale + c.offset;
|
|
82
|
+
}
|
|
83
|
+
export function fromSi(si, c) {
|
|
84
|
+
return (si - c.offset) / c.scale;
|
|
85
|
+
}
|
|
86
|
+
/** Convert a numeric value or numeric string; `null` when it is not a finite number. */
|
|
87
|
+
export function convertNumeric(v, c) {
|
|
88
|
+
const n = typeof v === 'number' ? v : parseFloat(String(v));
|
|
89
|
+
return Number.isFinite(n) ? toSi(n, c) : null;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Convert the members of a list or table whose members carry their own types
|
|
93
|
+
* (`valueDataTypes`, index-aligned with `values`), each by the conversion
|
|
94
|
+
* `conversionFor` gives its type. An untyped or non-measure member stays as
|
|
95
|
+
* written.
|
|
96
|
+
*/
|
|
97
|
+
export function convertTypedMembers(values, valueDataTypes, conversionFor) {
|
|
98
|
+
return values.map((v, i) => {
|
|
99
|
+
const c = conversionFor(valueDataTypes[i]);
|
|
100
|
+
if (isIdentity(c))
|
|
101
|
+
return String(v);
|
|
102
|
+
const converted = convertNumeric(v, c);
|
|
103
|
+
return converted == null ? String(v) : String(converted);
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=measure-conversion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"measure-conversion.js","sourceRoot":"","sources":["../../src/bridge/measure-conversion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type IfcDataStore } from '@ifc-lite/parser';
|
|
2
|
+
import type { PropertySetInfo } from '../types.js';
|
|
3
|
+
import { type EntityMeasureScales } from './units.js';
|
|
4
|
+
/**
|
|
5
|
+
* Predefined property-set entities (`IfcDoorPanelProperties`, …) are
|
|
6
|
+
* connected to elements via `IfcRelDefinesByProperties` like a normal
|
|
7
|
+
* pset, but their properties live as schema-defined ATTRIBUTES on the
|
|
8
|
+
* entity itself. Surface them as a pset whose name is the entity's
|
|
9
|
+
* `Name` and whose properties are the schema-defined attribute slots
|
|
10
|
+
* beyond Name/Description.
|
|
11
|
+
*
|
|
12
|
+
* A measure attribute (`IfcDoorLiningProperties.LiningDepth`, an
|
|
13
|
+
* `IfcPositiveLengthMeasure`) is in the project's units like any other
|
|
14
|
+
* property value, so it is converted to SI the same way (#7395).
|
|
15
|
+
*/
|
|
16
|
+
export declare function appendPredefinedPropertySets(store: IfcDataStore, expressId: number, scales: EntityMeasureScales, out: PropertySetInfo[]): void;
|
|
17
|
+
/**
|
|
18
|
+
* Predefined property sets on the element's type object (an
|
|
19
|
+
* `IfcDoorLiningProperties` in an `IfcDoorType`'s `HasPropertySets`), for
|
|
20
|
+
* inheritance by the occurrence like the type's ordinary property sets, and
|
|
21
|
+
* converted to SI with the occurrence's units (#7395).
|
|
22
|
+
*/
|
|
23
|
+
export declare function typePredefinedPropertySets(store: IfcDataStore, expressId: number, scales: EntityMeasureScales): PropertySetInfo[];
|
|
24
|
+
//# sourceMappingURL=predefined-property-sets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"predefined-property-sets.d.ts","sourceRoot":"","sources":["../../src/bridge/predefined-property-sets.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,YAAY,EAIlB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAuB,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAE3E;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,mBAAmB,EAC3B,GAAG,EAAE,eAAe,EAAE,GACrB,IAAI,CAEN;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,mBAAmB,GAC1B,eAAe,EAAE,CAOnB"}
|
|
@@ -0,0 +1,86 @@
|
|
|
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, extractAllEntityAttributes, getAttributeTypeForSchema, } from '@ifc-lite/parser';
|
|
5
|
+
import { RelationshipType } from '@ifc-lite/data';
|
|
6
|
+
import { applyUnitConversion } from './units.js';
|
|
7
|
+
/**
|
|
8
|
+
* Predefined property-set entities (`IfcDoorPanelProperties`, …) are
|
|
9
|
+
* connected to elements via `IfcRelDefinesByProperties` like a normal
|
|
10
|
+
* pset, but their properties live as schema-defined ATTRIBUTES on the
|
|
11
|
+
* entity itself. Surface them as a pset whose name is the entity's
|
|
12
|
+
* `Name` and whose properties are the schema-defined attribute slots
|
|
13
|
+
* beyond Name/Description.
|
|
14
|
+
*
|
|
15
|
+
* A measure attribute (`IfcDoorLiningProperties.LiningDepth`, an
|
|
16
|
+
* `IfcPositiveLengthMeasure`) is in the project's units like any other
|
|
17
|
+
* property value, so it is converted to SI the same way (#7395).
|
|
18
|
+
*/
|
|
19
|
+
export function appendPredefinedPropertySets(store, expressId, scales, out) {
|
|
20
|
+
appendPredefinedFromIds(store, definingPropertySetIds(store, expressId), scales, out);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Predefined property sets on the element's type object (an
|
|
24
|
+
* `IfcDoorLiningProperties` in an `IfcDoorType`'s `HasPropertySets`), for
|
|
25
|
+
* inheritance by the occurrence like the type's ordinary property sets, and
|
|
26
|
+
* converted to SI with the occurrence's units (#7395).
|
|
27
|
+
*/
|
|
28
|
+
export function typePredefinedPropertySets(store, expressId, scales) {
|
|
29
|
+
const typeId = store.relationships?.getRelated?.(expressId, RelationshipType.DefinesByType, 'inverse')?.[0];
|
|
30
|
+
if (typeId === undefined)
|
|
31
|
+
return [];
|
|
32
|
+
const out = [];
|
|
33
|
+
const ids = new Set([...hasPropertySetIds(store, typeId), ...definingPropertySetIds(store, typeId)]);
|
|
34
|
+
appendPredefinedFromIds(store, [...ids], scales, out);
|
|
35
|
+
return out;
|
|
36
|
+
}
|
|
37
|
+
function definingPropertySetIds(store, expressId) {
|
|
38
|
+
return store.relationships?.getRelated?.(expressId, RelationshipType.DefinesByProperties, 'inverse') || [];
|
|
39
|
+
}
|
|
40
|
+
/** A type object's `HasPropertySets` (attribute 5 of `IfcTypeObject`). */
|
|
41
|
+
function hasPropertySetIds(store, typeId) {
|
|
42
|
+
// @raw-entity-enumeration-ok point lookup of one source type object reached through the element's DefinesByType relationship
|
|
43
|
+
const ref = store.entityIndex?.byId?.get?.(typeId);
|
|
44
|
+
if (!ref || !store.source?.length)
|
|
45
|
+
return [];
|
|
46
|
+
const attr = new EntityExtractor(store.source).extractEntity(ref)?.attributes?.[5];
|
|
47
|
+
return Array.isArray(attr) ? attr.filter((id) => typeof id === 'number') : [];
|
|
48
|
+
}
|
|
49
|
+
function appendPredefinedFromIds(store, psetIds, scales, out) {
|
|
50
|
+
for (const psetId of psetIds) {
|
|
51
|
+
// @raw-entity-enumeration-ok point lookup for one source pset reached through the parser's source-snapshot relationship index; this is not a base-entity enumeration
|
|
52
|
+
const ref = store.entityIndex?.byId?.get?.(psetId);
|
|
53
|
+
if (!ref)
|
|
54
|
+
continue;
|
|
55
|
+
const tu = String(ref.type).toUpperCase();
|
|
56
|
+
if (tu === 'IFCPROPERTYSET' || tu === 'IFCELEMENTQUANTITY')
|
|
57
|
+
continue;
|
|
58
|
+
if (!tu.endsWith('PROPERTIES'))
|
|
59
|
+
continue;
|
|
60
|
+
const allAttrs = extractAllEntityAttributes(store, psetId);
|
|
61
|
+
const psetNameAttr = allAttrs.find((a) => a.name === 'Name')?.value;
|
|
62
|
+
if (typeof psetNameAttr !== 'string' || !psetNameAttr)
|
|
63
|
+
continue;
|
|
64
|
+
if (out.some((p) => p.name === psetNameAttr))
|
|
65
|
+
continue;
|
|
66
|
+
const properties = allAttrs
|
|
67
|
+
.filter((a) => a.name !== 'GlobalId' &&
|
|
68
|
+
a.name !== 'Name' &&
|
|
69
|
+
a.name !== 'Description' &&
|
|
70
|
+
a.value !== undefined &&
|
|
71
|
+
a.value !== '')
|
|
72
|
+
.map((a) => {
|
|
73
|
+
// The attribute's declared EXPRESS type is its dataType (PanelOperation
|
|
74
|
+
// → IFCDOORPANELOPERATIONENUM). Unknown to the schema means unknown, and
|
|
75
|
+
// a dataType check fails rather than passing unchecked (#5224).
|
|
76
|
+
const dataType = getAttributeTypeForSchema(tu, a.name, store.schemaVersion)?.toUpperCase();
|
|
77
|
+
const value = typeof a.value === 'number'
|
|
78
|
+
? applyUnitConversion(a.value, undefined, dataType, scales.length, scales).value
|
|
79
|
+
: a.value;
|
|
80
|
+
return { name: a.name, value, dataType };
|
|
81
|
+
});
|
|
82
|
+
if (properties.length > 0)
|
|
83
|
+
out.push({ name: psetNameAttr, properties });
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=predefined-property-sets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"predefined-property-sets.js","sourceRoot":"","sources":["../../src/bridge/predefined-property-sets.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,40 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { IfcDataStore } from '@ifc-lite/parser';
|
|
2
|
+
type EntityAttributes = ReadonlyArray<{
|
|
3
|
+
name: string;
|
|
4
|
+
value: string | number | boolean;
|
|
5
|
+
}>;
|
|
2
6
|
/**
|
|
3
|
-
*
|
|
4
|
-
* `NOTDEFINED`, `BEAM`) for an entity, walking through
|
|
5
|
-
* `IfcRelDefinesByType` if the instance has none of its own.
|
|
7
|
+
* An entity's predefined type as the IDS 1.0 entity facet reads it.
|
|
6
8
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
+
* `raw` is the `PredefinedType` enum token (`BEAM`, `USERDEFINED`,
|
|
10
|
+
* `NOTDEFINED`, …) of whichever entity defines it — the type object or
|
|
11
|
+
* the occurrence. `userDefined` is that SAME entity's user-defined name
|
|
12
|
+
* (`ElementType` / `ObjectType` / `ProcessType` / `ResourceType`), and is
|
|
13
|
+
* only ever set when `raw` is `USERDEFINED`.
|
|
9
14
|
*/
|
|
10
|
-
export
|
|
15
|
+
export interface ResolvedPredefinedType {
|
|
16
|
+
readonly raw: string | undefined;
|
|
17
|
+
readonly userDefined: string | undefined;
|
|
18
|
+
}
|
|
11
19
|
/**
|
|
12
|
-
* Resolve
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
20
|
+
* Resolve an entity's predefined type by the IDS 1.0 rule (User Manual,
|
|
21
|
+
* entity facet, "The logic for the identification of predefinedType"):
|
|
22
|
+
*
|
|
23
|
+
* 1. If a type object related through `IfcRelDefinesByType` carries a
|
|
24
|
+
* `PredefinedType` (anything but unset or `NOTDEFINED`), it defines
|
|
25
|
+
* the predefined type — `USERDEFINED` reads the type's
|
|
26
|
+
* `ElementType` (or `ProcessType` / `ResourceType`).
|
|
27
|
+
* 2. Otherwise the occurrence's own `PredefinedType` applies —
|
|
28
|
+
* `USERDEFINED` reads its `ObjectType`.
|
|
29
|
+
* 3. Otherwise the entity has no predefined type.
|
|
30
|
+
*
|
|
31
|
+
* The user-defined name is consulted ONLY for `USERDEFINED`: an
|
|
32
|
+
* occurrence whose `PredefinedType` is unset or `NOTDEFINED` does not
|
|
33
|
+
* acquire one from a stray `ObjectType` (#7394).
|
|
34
|
+
*
|
|
35
|
+
* `attributesOf` is the accessor's (cached, overlay-aware) attribute
|
|
36
|
+
* reader, so a resolution costs no extra re-parse.
|
|
17
37
|
*/
|
|
18
|
-
export declare function
|
|
38
|
+
export declare function resolvePredefinedType(store: IfcDataStore, expressId: number, attributesOf: (expressId: number) => EntityAttributes): ResolvedPredefinedType;
|
|
39
|
+
export {};
|
|
19
40
|
//# sourceMappingURL=predefined-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"predefined-types.d.ts","sourceRoot":"","sources":["../../src/bridge/predefined-types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"predefined-types.d.ts","sourceRoot":"","sources":["../../src/bridge/predefined-types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD,KAAK,gBAAgB,GAAG,aAAa,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAClC,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1C;AAqBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,gBAAgB,GACpD,sBAAsB,CAgBxB"}
|