@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,84 +1,53 @@
|
|
|
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 } from '@ifc-lite/parser';
|
|
5
4
|
import { RelationshipType } from '@ifc-lite/data';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
// Inherit from the defining type (IfcRelDefinesByType).
|
|
21
|
-
const typeIds = store.relationships?.getRelated?.(expressId, RelationshipType.DefinesByType, 'inverse') || [];
|
|
22
|
-
for (const typeId of typeIds) {
|
|
23
|
-
const typeAttrs = extractAllEntityAttributes(store, typeId);
|
|
24
|
-
const typePdt = typeAttrs.find((a) => a.name === 'PredefinedType');
|
|
25
|
-
const typeVal = typeof typePdt?.value === 'string' && typePdt.value
|
|
26
|
-
? typePdt.value
|
|
27
|
-
: undefined;
|
|
28
|
-
if (typeVal && typeVal !== 'NOTDEFINED')
|
|
29
|
-
return typeVal;
|
|
5
|
+
const NONE = { raw: undefined, userDefined: undefined };
|
|
6
|
+
/** The user-defined name slot, in the order the IFC classes declare it. */
|
|
7
|
+
const USER_DEFINED_SLOTS = ['ElementType', 'ObjectType', 'ProcessType', 'ResourceType'];
|
|
8
|
+
function stringAttr(attrs, name) {
|
|
9
|
+
const value = attrs.find((a) => a.name === name)?.value;
|
|
10
|
+
return typeof value === 'string' && value ? value : undefined;
|
|
11
|
+
}
|
|
12
|
+
function fromEntity(attrs, raw) {
|
|
13
|
+
if (raw !== 'USERDEFINED')
|
|
14
|
+
return { raw, userDefined: undefined };
|
|
15
|
+
for (const slot of USER_DEFINED_SLOTS) {
|
|
16
|
+
const name = stringAttr(attrs, slot);
|
|
17
|
+
if (name)
|
|
18
|
+
return { raw, userDefined: name };
|
|
30
19
|
}
|
|
31
|
-
return
|
|
20
|
+
return { raw, userDefined: undefined };
|
|
32
21
|
}
|
|
33
22
|
/**
|
|
34
|
-
* Resolve
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
23
|
+
* Resolve an entity's predefined type by the IDS 1.0 rule (User Manual,
|
|
24
|
+
* entity facet, "The logic for the identification of predefinedType"):
|
|
25
|
+
*
|
|
26
|
+
* 1. If a type object related through `IfcRelDefinesByType` carries a
|
|
27
|
+
* `PredefinedType` (anything but unset or `NOTDEFINED`), it defines
|
|
28
|
+
* the predefined type — `USERDEFINED` reads the type's
|
|
29
|
+
* `ElementType` (or `ProcessType` / `ResourceType`).
|
|
30
|
+
* 2. Otherwise the occurrence's own `PredefinedType` applies —
|
|
31
|
+
* `USERDEFINED` reads its `ObjectType`.
|
|
32
|
+
* 3. Otherwise the entity has no predefined type.
|
|
33
|
+
*
|
|
34
|
+
* The user-defined name is consulted ONLY for `USERDEFINED`: an
|
|
35
|
+
* occurrence whose `PredefinedType` is unset or `NOTDEFINED` does not
|
|
36
|
+
* acquire one from a stray `ObjectType` (#7394).
|
|
37
|
+
*
|
|
38
|
+
* `attributesOf` is the accessor's (cached, overlay-aware) attribute
|
|
39
|
+
* reader, so a resolution costs no extra re-parse.
|
|
39
40
|
*/
|
|
40
|
-
export function
|
|
41
|
-
const allAttrs = extractAllEntityAttributes(store, expressId);
|
|
42
|
-
const pdt = allAttrs.find((a) => a.name === 'PredefinedType');
|
|
43
|
-
const pdtValue = pdt?.value;
|
|
44
|
-
if (typeof pdtValue === 'string' &&
|
|
45
|
-
pdtValue &&
|
|
46
|
-
pdtValue !== 'NOTDEFINED' &&
|
|
47
|
-
pdtValue !== 'USERDEFINED') {
|
|
48
|
-
return pdtValue;
|
|
49
|
-
}
|
|
50
|
-
const userSlot = allAttrs.find((a) => a.name === 'ElementType') ||
|
|
51
|
-
allAttrs.find((a) => a.name === 'ObjectType') ||
|
|
52
|
-
allAttrs.find((a) => a.name === 'ProcessType') ||
|
|
53
|
-
allAttrs.find((a) => a.name === 'ResourceType');
|
|
54
|
-
if (userSlot && typeof userSlot.value === 'string' && userSlot.value) {
|
|
55
|
-
return userSlot.value;
|
|
56
|
-
}
|
|
57
|
-
// Inherit from defining type when the instance has neither.
|
|
41
|
+
export function resolvePredefinedType(store, expressId, attributesOf) {
|
|
58
42
|
const typeIds = store.relationships?.getRelated?.(expressId, RelationshipType.DefinesByType, 'inverse') || [];
|
|
59
43
|
for (const typeId of typeIds) {
|
|
60
|
-
const typeAttrs =
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
typePdtValue &&
|
|
65
|
-
typePdtValue !== 'NOTDEFINED' &&
|
|
66
|
-
typePdtValue !== 'USERDEFINED') {
|
|
67
|
-
return typePdtValue;
|
|
68
|
-
}
|
|
69
|
-
const typeUserSlot = typeAttrs.find((a) => a.name === 'ElementType') ||
|
|
70
|
-
typeAttrs.find((a) => a.name === 'ObjectType') ||
|
|
71
|
-
typeAttrs.find((a) => a.name === 'ProcessType') ||
|
|
72
|
-
typeAttrs.find((a) => a.name === 'ResourceType');
|
|
73
|
-
if (typeUserSlot &&
|
|
74
|
-
typeof typeUserSlot.value === 'string' &&
|
|
75
|
-
typeUserSlot.value) {
|
|
76
|
-
return typeUserSlot.value;
|
|
77
|
-
}
|
|
44
|
+
const typeAttrs = attributesOf(typeId);
|
|
45
|
+
const typeRaw = stringAttr(typeAttrs, 'PredefinedType');
|
|
46
|
+
if (typeRaw && typeRaw !== 'NOTDEFINED')
|
|
47
|
+
return fromEntity(typeAttrs, typeRaw);
|
|
78
48
|
}
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
return typeof pdtValue === 'string' && pdtValue ? pdtValue : undefined;
|
|
49
|
+
const attrs = attributesOf(expressId);
|
|
50
|
+
const raw = stringAttr(attrs, 'PredefinedType');
|
|
51
|
+
return raw ? fromEntity(attrs, raw) : NONE;
|
|
83
52
|
}
|
|
84
53
|
//# sourceMappingURL=predefined-types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"predefined-types.js","sourceRoot":"","sources":["../../src/bridge/predefined-types.ts"],"names":[],"mappings":"AAAA;;+DAE+D;
|
|
1
|
+
{"version":3,"file":"predefined-types.js","sourceRoot":"","sources":["../../src/bridge/predefined-types.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAG/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAqBlD,MAAM,IAAI,GAA2B,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;AAEhF,2EAA2E;AAC3E,MAAM,kBAAkB,GAAG,CAAC,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;AAExF,SAAS,UAAU,CAAC,KAAuB,EAAE,IAAY;IACvD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,CAAC;IACxD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAChE,CAAC;AAED,SAAS,UAAU,CAAC,KAAuB,EAAE,GAAW;IACtD,IAAI,GAAG,KAAK,aAAa;QAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;IAClE,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,IAAI;YAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC9C,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAmB,EACnB,SAAiB,EACjB,YAAqD;IAErD,MAAM,OAAO,GACX,KAAK,CAAC,aAAa,EAAE,UAAU,EAAE,CAC/B,SAAS,EACT,gBAAgB,CAAC,aAAa,EAC9B,SAAS,CACV,IAAI,EAAE,CAAC;IACV,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QACxD,IAAI,OAAO,IAAI,OAAO,KAAK,YAAY;YAAE,OAAO,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAChD,OAAO,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Projection of one raw parser property record into the validator's
|
|
3
|
+
* `PropertySetInfo['properties'][number]` shape: IDS dataType resolution and
|
|
4
|
+
* SI conversion (#7395). Split out of properties.ts to keep that module
|
|
5
|
+
* under its size budget.
|
|
6
|
+
*/
|
|
7
|
+
import type { PropertySetInfo } from '../types.js';
|
|
8
|
+
import { type EntityMeasureScales } from './units.js';
|
|
9
|
+
export interface RawProp {
|
|
10
|
+
name: string;
|
|
11
|
+
value: unknown;
|
|
12
|
+
type: unknown;
|
|
13
|
+
values?: string[];
|
|
14
|
+
dataType?: string;
|
|
15
|
+
dataTypeMixed?: true;
|
|
16
|
+
/** IFC type of each entry of `values` when the members share none. */
|
|
17
|
+
valueDataTypes?: Array<string | undefined>;
|
|
18
|
+
/** The property's own explicit `Unit` symbol; `#<id>` when it could not be resolved. */
|
|
19
|
+
unit?: string;
|
|
20
|
+
/** SI factor of `unit`, only when it resolved. */
|
|
21
|
+
unitSiScale?: number;
|
|
22
|
+
/** Additive SI offset of `unit` (°F), when it has one. */
|
|
23
|
+
unitSiOffset?: number;
|
|
24
|
+
}
|
|
25
|
+
type ProjectedProperty = PropertySetInfo['properties'][number];
|
|
26
|
+
/** A property's own `Unit`, as the parser resolved it. */
|
|
27
|
+
export interface OwnUnit {
|
|
28
|
+
symbol: string;
|
|
29
|
+
siScale: number | undefined;
|
|
30
|
+
siOffset?: number;
|
|
31
|
+
}
|
|
32
|
+
export declare function ownUnitOf(prop: object): OwnUnit | undefined;
|
|
33
|
+
/** Carry `from`'s own unit over to a copy of it. */
|
|
34
|
+
export declare function copyOwnUnit(from: object, to: object): void;
|
|
35
|
+
/**
|
|
36
|
+
* Project a raw parser property record — applies SI conversion and resolves
|
|
37
|
+
* the IDS dataType (`idsDataTypeOf`). A declared own `Unit` replaces the
|
|
38
|
+
* project assignment for this value (#7395); only a value without one takes
|
|
39
|
+
* the project unit.
|
|
40
|
+
*/
|
|
41
|
+
export declare function projectProperty(p: RawProp, scales: EntityMeasureScales): ProjectedProperty;
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=project-property.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-property.d.ts","sourceRoot":"","sources":["../../src/bridge/project-property.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,IAAI,CAAC;IACrB,sEAAsE;IACtE,cAAc,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC3C,wFAAwF;IACxF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,KAAK,iBAAiB,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,0DAA0D;AAC1D,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAUD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAE3D;AAED,oDAAoD;AACpD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAG1D;AAcD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,GAAG,iBAAiB,CAoB1F"}
|
|
@@ -0,0 +1,60 @@
|
|
|
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 { idsDataTypeForProperty } from './data-types.js';
|
|
5
|
+
import { applyOwnUnitConversion, applyUnitConversion, } from './units.js';
|
|
6
|
+
/**
|
|
7
|
+
* The own `Unit` of each projected property that declares one, keyed by the
|
|
8
|
+
* projected object. Kept off the public `PropertySetInfo` shape; an overlay
|
|
9
|
+
* correction reads it to convert its value in that unit rather than in the
|
|
10
|
+
* project's (see property-overlay-resolver.ts).
|
|
11
|
+
*/
|
|
12
|
+
const ownUnits = new WeakMap();
|
|
13
|
+
export function ownUnitOf(prop) {
|
|
14
|
+
return ownUnits.get(prop);
|
|
15
|
+
}
|
|
16
|
+
/** Carry `from`'s own unit over to a copy of it. */
|
|
17
|
+
export function copyOwnUnit(from, to) {
|
|
18
|
+
const unit = ownUnits.get(from);
|
|
19
|
+
if (unit)
|
|
20
|
+
ownUnits.set(to, unit);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The IDS dataType of a raw property. The source's own tag wins. A
|
|
24
|
+
* multi-valued property without one is UNKNOWN: its display type says
|
|
25
|
+
* nothing about its members, so no type is invented. Only an explicit
|
|
26
|
+
* `dataTypeMixed` (a table) exempts a property from a dataType check (#5224).
|
|
27
|
+
*/
|
|
28
|
+
function idsDataTypeOf(p) {
|
|
29
|
+
const hasMultiValue = Array.isArray(p.values) && p.values.length > 0;
|
|
30
|
+
const dataType = p.dataType ?? (hasMultiValue ? undefined : idsDataTypeForProperty(p.type));
|
|
31
|
+
return { dataType, ...(p.dataTypeMixed ? { dataTypeMixed: true } : {}) };
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Project a raw parser property record — applies SI conversion and resolves
|
|
35
|
+
* the IDS dataType (`idsDataTypeOf`). A declared own `Unit` replaces the
|
|
36
|
+
* project assignment for this value (#7395); only a value without one takes
|
|
37
|
+
* the project unit.
|
|
38
|
+
*/
|
|
39
|
+
export function projectProperty(p, scales) {
|
|
40
|
+
const hasMultiValue = Array.isArray(p.values) && p.values.length > 0;
|
|
41
|
+
const types = idsDataTypeOf(p);
|
|
42
|
+
const dataType = types.dataType;
|
|
43
|
+
const baseValue = Array.isArray(p.value)
|
|
44
|
+
? JSON.stringify(p.value)
|
|
45
|
+
: p.value;
|
|
46
|
+
const baseValues = hasMultiValue ? p.values : undefined;
|
|
47
|
+
const converted = p.unit !== undefined
|
|
48
|
+
? applyOwnUnitConversion(baseValue, baseValues, dataType, p.unitSiScale, p.unit, p.valueDataTypes, p.unitSiOffset)
|
|
49
|
+
: applyUnitConversion(baseValue, baseValues, dataType, scales.length, scales, p.valueDataTypes);
|
|
50
|
+
const out = {
|
|
51
|
+
name: p.name,
|
|
52
|
+
value: converted.value,
|
|
53
|
+
...types,
|
|
54
|
+
...(converted.values ? { values: converted.values } : {}),
|
|
55
|
+
};
|
|
56
|
+
if (p.unit !== undefined)
|
|
57
|
+
ownUnits.set(out, { symbol: p.unit, siScale: p.unitSiScale, siOffset: p.unitSiOffset });
|
|
58
|
+
return out;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=project-property.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-property.js","sourceRoot":"","sources":["../../src/bridge/project-property.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,10 +10,11 @@ import type { PropertySetInfo } from '../types.js';
|
|
|
10
10
|
* IfcRelDefinesByProperties).
|
|
11
11
|
* 2. Predefined property sets (IfcDoorPanelProperties etc.) where
|
|
12
12
|
* the entity's schema-defined attributes act as property names.
|
|
13
|
-
* 3. Inherited property sets from `IfcRelDefinesByType
|
|
13
|
+
* 3. Inherited property sets from `IfcRelDefinesByType`, predefined
|
|
14
|
+
* ones on the type included.
|
|
14
15
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
16
|
+
* Measure-typed properties are converted to base SI units per the
|
|
17
|
+
* ENTITY'S OWN OWNING `IFCPROJECT`'s declared units — see
|
|
17
18
|
* `resolveEntityMeasureScales` — so IDS literals (always metre / m² / m³)
|
|
18
19
|
* compare correctly even for an entity belonging to a later `IFCPROJECT`
|
|
19
20
|
* in a multi-project (federated-merge) file.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../../src/bridge/properties.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../../src/bridge/properties.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,YAAY,EAOlB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAMnD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,GAChB,eAAe,EAAE,CAmBnB"}
|
|
@@ -1,21 +1,12 @@
|
|
|
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 { extractPropertiesOnDemand, extractQuantitiesOnDemand, extractTypePropertiesOnDemand, extractTypeEntityOwnProperties,
|
|
5
|
-
import { RelationshipType } from '@ifc-lite/data';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
* multi-valued property without one is UNKNOWN: its display type says
|
|
11
|
-
* nothing about its members, so no type is invented. Only an explicit
|
|
12
|
-
* `dataTypeMixed` (a table) exempts a property from a dataType check (#5224).
|
|
13
|
-
*/
|
|
14
|
-
function idsDataTypeOf(p) {
|
|
15
|
-
const hasMultiValue = Array.isArray(p.values) && p.values.length > 0;
|
|
16
|
-
const dataType = p.dataType ?? (hasMultiValue ? undefined : idsDataTypeForProperty(p.type));
|
|
17
|
-
return { dataType, ...(p.dataTypeMixed ? { dataTypeMixed: true } : {}) };
|
|
18
|
-
}
|
|
4
|
+
import { extractPropertiesOnDemand, extractQuantitiesOnDemand, extractTypePropertiesOnDemand, extractTypeEntityOwnProperties, extractMaterialPropertiesForMaterialId, mergeInheritedPropertySets, } from '@ifc-lite/parser';
|
|
5
|
+
import { RelationshipType, exactTypeName } from '@ifc-lite/data';
|
|
6
|
+
import { idsDataTypeForQuantity } from './data-types.js';
|
|
7
|
+
import { appendPredefinedPropertySets, typePredefinedPropertySets } from './predefined-property-sets.js';
|
|
8
|
+
import { projectProperty } from './project-property.js';
|
|
9
|
+
import { resolveEntityMeasureScales } from './units.js';
|
|
19
10
|
/**
|
|
20
11
|
* IDS treats `IfcElementQuantity` (Qto_*) and `IfcPropertySet` (Pset_*)
|
|
21
12
|
* uniformly — both surface as "property sets" with named values. The
|
|
@@ -26,29 +17,30 @@ function idsDataTypeOf(p) {
|
|
|
26
17
|
* IfcRelDefinesByProperties).
|
|
27
18
|
* 2. Predefined property sets (IfcDoorPanelProperties etc.) where
|
|
28
19
|
* the entity's schema-defined attributes act as property names.
|
|
29
|
-
* 3. Inherited property sets from `IfcRelDefinesByType
|
|
20
|
+
* 3. Inherited property sets from `IfcRelDefinesByType`, predefined
|
|
21
|
+
* ones on the type included.
|
|
30
22
|
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
23
|
+
* Measure-typed properties are converted to base SI units per the
|
|
24
|
+
* ENTITY'S OWN OWNING `IFCPROJECT`'s declared units — see
|
|
33
25
|
* `resolveEntityMeasureScales` — so IDS literals (always metre / m² / m³)
|
|
34
26
|
* compare correctly even for an entity belonging to a later `IFCPROJECT`
|
|
35
27
|
* in a multi-project (federated-merge) file.
|
|
36
28
|
*/
|
|
37
29
|
export function collectAllPropertySets(store, expressId) {
|
|
38
30
|
const own = [];
|
|
39
|
-
const
|
|
40
|
-
appendInstancePropertySets(store, expressId,
|
|
41
|
-
appendQuantitySets(store, expressId,
|
|
42
|
-
appendPredefinedPropertySets(store, expressId, own);
|
|
43
|
-
appendMaterialOwnPropertySets(store, expressId,
|
|
31
|
+
const scales = resolveEntityMeasureScales(store, expressId);
|
|
32
|
+
appendInstancePropertySets(store, expressId, scales, own);
|
|
33
|
+
appendQuantitySets(store, expressId, scales, own);
|
|
34
|
+
appendPredefinedPropertySets(store, expressId, scales, own);
|
|
35
|
+
appendMaterialOwnPropertySets(store, expressId, scales, own);
|
|
44
36
|
// Merged per property, not per set — see `mergeInheritedPropertySets`.
|
|
45
|
-
const out = mergeInheritedPropertySets(own, inheritedPropertySets(store, expressId,
|
|
37
|
+
const out = mergeInheritedPropertySets(own, inheritedPropertySets(store, expressId, scales));
|
|
46
38
|
if (out.length === 0) {
|
|
47
|
-
appendTypeEntityOwnProperties(store, expressId, out);
|
|
39
|
+
appendTypeEntityOwnProperties(store, expressId, scales, out);
|
|
48
40
|
}
|
|
49
41
|
return out;
|
|
50
42
|
}
|
|
51
|
-
function appendInstancePropertySets(store, expressId,
|
|
43
|
+
function appendInstancePropertySets(store, expressId, scales, out) {
|
|
52
44
|
let props = store.properties?.getForEntity?.(expressId);
|
|
53
45
|
if (!props || props.length === 0) {
|
|
54
46
|
props = extractPropertiesOnDemand(store, expressId);
|
|
@@ -58,7 +50,7 @@ function appendInstancePropertySets(store, expressId, scale, measureScales, out)
|
|
|
58
50
|
for (const pset of props) {
|
|
59
51
|
out.push({
|
|
60
52
|
name: pset.name,
|
|
61
|
-
properties: (pset.properties || []).map((p) => projectProperty(p,
|
|
53
|
+
properties: (pset.properties || []).map((p) => projectProperty(p, scales)),
|
|
62
54
|
});
|
|
63
55
|
}
|
|
64
56
|
}
|
|
@@ -72,7 +64,7 @@ function appendInstancePropertySets(store, expressId, scale, measureScales, out)
|
|
|
72
64
|
* inline, so the two paths can't drift again — see `applyUnitConversion`
|
|
73
65
|
* in `units.ts` for the length/area/volume exponents.
|
|
74
66
|
*/
|
|
75
|
-
function appendQuantitySets(store, expressId,
|
|
67
|
+
function appendQuantitySets(store, expressId, scales, out) {
|
|
76
68
|
let quantities = store.quantities?.getForEntity?.(expressId);
|
|
77
69
|
if (!quantities || quantities.length === 0) {
|
|
78
70
|
quantities = extractQuantitiesOnDemand(store, expressId);
|
|
@@ -82,53 +74,30 @@ function appendQuantitySets(store, expressId, scale, measureScales, out) {
|
|
|
82
74
|
for (const qset of quantities) {
|
|
83
75
|
out.push({
|
|
84
76
|
name: qset.name,
|
|
85
|
-
properties: (qset.quantities || []).map((q) => projectProperty({
|
|
77
|
+
properties: (qset.quantities || []).map((q) => projectProperty({
|
|
78
|
+
name: q.name,
|
|
79
|
+
value: q.value,
|
|
80
|
+
type: undefined,
|
|
81
|
+
dataType: idsDataTypeForQuantity(q.type),
|
|
82
|
+
...quantityOwnUnit(q),
|
|
83
|
+
}, scales)),
|
|
86
84
|
});
|
|
87
85
|
}
|
|
88
86
|
}
|
|
89
87
|
/**
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
* `Name` and whose properties are the schema-defined attribute slots
|
|
95
|
-
* beyond Name/Description.
|
|
88
|
+
* A quantity's own `Unit`, in the `unit`/`unitSiScale` shape property records
|
|
89
|
+
* use. The parser's `CollectedQuantity` reports a resolved unit as
|
|
90
|
+
* `explicitUnitSiScale` and an unreadable one as `explicitUnitUnresolved`;
|
|
91
|
+
* quantity-table rows carry neither and fall through to the project unit.
|
|
96
92
|
*/
|
|
97
|
-
function
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
const ref = store.entityIndex?.byId?.get?.(psetId);
|
|
102
|
-
if (!ref)
|
|
103
|
-
continue;
|
|
104
|
-
const tu = String(ref.type).toUpperCase();
|
|
105
|
-
if (tu === 'IFCPROPERTYSET' || tu === 'IFCELEMENTQUANTITY')
|
|
106
|
-
continue;
|
|
107
|
-
if (!tu.endsWith('PROPERTIES'))
|
|
108
|
-
continue;
|
|
109
|
-
const allAttrs = extractAllEntityAttributes(store, psetId);
|
|
110
|
-
const psetNameAttr = allAttrs.find((a) => a.name === 'Name')?.value;
|
|
111
|
-
if (typeof psetNameAttr !== 'string' || !psetNameAttr)
|
|
112
|
-
continue;
|
|
113
|
-
if (out.some((p) => p.name === psetNameAttr))
|
|
114
|
-
continue;
|
|
115
|
-
const properties = allAttrs
|
|
116
|
-
.filter((a) => a.name !== 'GlobalId' &&
|
|
117
|
-
a.name !== 'Name' &&
|
|
118
|
-
a.name !== 'Description' &&
|
|
119
|
-
a.value !== undefined &&
|
|
120
|
-
a.value !== '')
|
|
121
|
-
.map((a) => ({
|
|
122
|
-
name: a.name,
|
|
123
|
-
value: a.value,
|
|
124
|
-
// The attribute's declared EXPRESS type is its dataType (PanelOperation
|
|
125
|
-
// → IFCDOORPANELOPERATIONENUM). Unknown to the schema means unknown, and
|
|
126
|
-
// a dataType check fails rather than passing unchecked (#5224).
|
|
127
|
-
dataType: getAttributeTypeForSchema(tu, a.name, store.schemaVersion)?.toUpperCase(),
|
|
128
|
-
}));
|
|
129
|
-
if (properties.length > 0)
|
|
130
|
-
out.push({ name: psetNameAttr, properties });
|
|
93
|
+
function quantityOwnUnit(quantity) {
|
|
94
|
+
const q = quantity;
|
|
95
|
+
if (q.explicitUnitSiScale !== undefined) {
|
|
96
|
+
return { unit: q.explicitUnit ?? '', unitSiScale: q.explicitUnitSiScale };
|
|
131
97
|
}
|
|
98
|
+
if (q.explicitUnitUnresolved)
|
|
99
|
+
return { unit: '#?' };
|
|
100
|
+
return {};
|
|
132
101
|
}
|
|
133
102
|
/**
|
|
134
103
|
* `IfcMaterialProperties` (IFC4+) / `IfcExtendedMaterialProperties`
|
|
@@ -143,7 +112,7 @@ function appendPredefinedPropertySets(store, expressId, out) {
|
|
|
143
112
|
* common "element that has a material" shape; that path goes through
|
|
144
113
|
* the material facet, not this one.
|
|
145
114
|
*/
|
|
146
|
-
function appendMaterialOwnPropertySets(store, expressId,
|
|
115
|
+
function appendMaterialOwnPropertySets(store, expressId, scales, out) {
|
|
147
116
|
if (resolveEntityTypeName(store, expressId)?.toUpperCase() !== 'IFCMATERIAL')
|
|
148
117
|
return;
|
|
149
118
|
const groups = extractMaterialPropertiesForMaterialId(store, expressId);
|
|
@@ -153,7 +122,7 @@ function appendMaterialOwnPropertySets(store, expressId, scale, measureScales, o
|
|
|
153
122
|
continue;
|
|
154
123
|
out.push({
|
|
155
124
|
name: pset.name,
|
|
156
|
-
properties: pset.properties.map((p) => projectProperty(p,
|
|
125
|
+
properties: pset.properties.map((p) => projectProperty(p, scales)),
|
|
157
126
|
});
|
|
158
127
|
}
|
|
159
128
|
}
|
|
@@ -167,7 +136,7 @@ function appendMaterialOwnPropertySets(store, expressId, scale, measureScales, o
|
|
|
167
136
|
* this one caller needs a raw type check ahead of the accessor existing.
|
|
168
137
|
*/
|
|
169
138
|
function resolveEntityTypeName(store, expressId) {
|
|
170
|
-
const fromTable = store.entities
|
|
139
|
+
const fromTable = store.entities ? exactTypeName(store.entities, expressId) : undefined;
|
|
171
140
|
if (fromTable && fromTable !== 'Unknown')
|
|
172
141
|
return fromTable;
|
|
173
142
|
// @raw-entity-enumeration-ok point lookup for one source record to guard the parsed material-owned-property projection; this helper projects source property sets and is not a live candidate/type enumeration
|
|
@@ -176,17 +145,32 @@ function resolveEntityTypeName(store, expressId) {
|
|
|
176
145
|
return undefined;
|
|
177
146
|
return typeof entry === 'object' && 'type' in entry ? String(entry.type) : undefined;
|
|
178
147
|
}
|
|
179
|
-
function inheritedPropertySets(store, expressId,
|
|
148
|
+
function inheritedPropertySets(store, expressId, scales) {
|
|
180
149
|
// Source-backed extraction (WASM/columnar parse) first; it bails on stores
|
|
181
150
|
// with no `source` buffer — i.e. server-parsed stores — so fall back to the
|
|
182
151
|
// prebuilt property table keyed by the element's IfcTypeProduct id (issue
|
|
183
152
|
// #1787), mirroring the Lists adapter's server-path type fallback.
|
|
184
153
|
const inheritedPsets = extractTypePropertiesOnDemand(store, expressId)?.properties ??
|
|
185
154
|
typePropertySetsFromTable(store, expressId);
|
|
186
|
-
|
|
155
|
+
const inherited = inheritedPsets.map((pset) => ({
|
|
187
156
|
name: pset.name,
|
|
188
|
-
properties: (pset.properties || []).map((p) => projectProperty(p,
|
|
157
|
+
properties: (pset.properties || []).map((p) => projectProperty(p, scales)),
|
|
189
158
|
}));
|
|
159
|
+
// The type's predefined property sets (IfcDoorLiningProperties, ...) are
|
|
160
|
+
// inherited the same way (#7395). One sharing a name with an ordinary type
|
|
161
|
+
// set adds the properties that set lacks, rather than being dropped.
|
|
162
|
+
for (const pset of typePredefinedPropertySets(store, expressId, scales)) {
|
|
163
|
+
const same = inherited.find((p) => p.name === pset.name);
|
|
164
|
+
if (!same) {
|
|
165
|
+
inherited.push(pset);
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
for (const prop of pset.properties) {
|
|
169
|
+
if (!same.properties.some((p) => p.name === prop.name))
|
|
170
|
+
same.properties.push(prop);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return inherited;
|
|
190
174
|
}
|
|
191
175
|
/** Type-inherited property sets for server-parsed stores: resolve the element's
|
|
192
176
|
* IfcTypeProduct via IfcRelDefinesByType, then read the prebuilt table for
|
|
@@ -205,45 +189,14 @@ function typePropertySetsFromTable(store, expressId) {
|
|
|
205
189
|
const psets = store.properties?.getForEntity?.(typeIds[0]);
|
|
206
190
|
return (psets ?? []);
|
|
207
191
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
for (const pset of typePsets) {
|
|
192
|
+
/** A type object's own `HasPropertySets`, converted to SI like any other
|
|
193
|
+
* property set (#7395). */
|
|
194
|
+
function appendTypeEntityOwnProperties(store, expressId, scales, out) {
|
|
195
|
+
for (const pset of extractTypeEntityOwnProperties(store, expressId)) {
|
|
213
196
|
out.push({
|
|
214
197
|
name: pset.name,
|
|
215
|
-
properties: (pset.properties || []).map((p) => (
|
|
216
|
-
name: p.name,
|
|
217
|
-
value: Array.isArray(p.value)
|
|
218
|
-
? JSON.stringify(p.value)
|
|
219
|
-
: p.value,
|
|
220
|
-
...idsDataTypeOf(p),
|
|
221
|
-
...(Array.isArray(p.values) && p.values.length > 0
|
|
222
|
-
? { values: p.values }
|
|
223
|
-
: {}),
|
|
224
|
-
})),
|
|
198
|
+
properties: (pset.properties || []).map((p) => projectProperty(p, scales)),
|
|
225
199
|
});
|
|
226
200
|
}
|
|
227
201
|
}
|
|
228
|
-
/**
|
|
229
|
-
* Project a raw parser property record into the validator's
|
|
230
|
-
* `PropertySetInfo['properties'][number]` shape — applies unit
|
|
231
|
-
* conversion and resolves the IDS dataType (`idsDataTypeOf`).
|
|
232
|
-
*/
|
|
233
|
-
function projectProperty(p, scale, measureScales) {
|
|
234
|
-
const hasMultiValue = Array.isArray(p.values) && p.values.length > 0;
|
|
235
|
-
const types = idsDataTypeOf(p);
|
|
236
|
-
const dataType = types.dataType;
|
|
237
|
-
const baseValue = Array.isArray(p.value)
|
|
238
|
-
? JSON.stringify(p.value)
|
|
239
|
-
: p.value;
|
|
240
|
-
const baseValues = hasMultiValue ? p.values : undefined;
|
|
241
|
-
const converted = applyUnitConversion(baseValue, baseValues, dataType, scale, measureScales);
|
|
242
|
-
return {
|
|
243
|
-
name: p.name,
|
|
244
|
-
value: converted.value,
|
|
245
|
-
...types,
|
|
246
|
-
...(converted.values ? { values: converted.values } : {}),
|
|
247
|
-
};
|
|
248
|
-
}
|
|
249
202
|
//# sourceMappingURL=properties.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"properties.js","sourceRoot":"","sources":["../../src/bridge/properties.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAEL,yBAAyB,EACzB,yBAAyB,EACzB,6BAA6B,EAC7B,8BAA8B,EAC9B,
|
|
1
|
+
{"version":3,"file":"properties.js","sourceRoot":"","sources":["../../src/bridge/properties.ts"],"names":[],"mappings":"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"}
|
|
@@ -67,4 +67,14 @@ export type PropertyOverlayResolver = (expressId: number) => PropertyOverride[]
|
|
|
67
67
|
* consumes it in agreement.
|
|
68
68
|
*/
|
|
69
69
|
export declare function resolveEffectivePropertySets(store: IfcDataStore, expressId: number, propertyOverlay: PropertyOverlayResolver | undefined): PropertySetInfo[];
|
|
70
|
+
/**
|
|
71
|
+
* The inverse of what {@link resolveEffectivePropertySets} applies to an
|
|
72
|
+
* override: convert a base-SI value (an IDS literal, or a correction typed to
|
|
73
|
+
* satisfy one) into the raw frame `psetName`.`propName` on `expressId` is
|
|
74
|
+
* stored in — the property's own `Unit` when it declares one, else the
|
|
75
|
+
* project unit for `dataType` (or, when omitted, the property's own
|
|
76
|
+
* dataType). A property the entity does not carry yet takes the project
|
|
77
|
+
* unit, matching how a created override is read back.
|
|
78
|
+
*/
|
|
79
|
+
export declare function propertyValueToRaw(store: IfcDataStore, expressId: number, psetName: string, propName: string, dataType: string | undefined, value: string | number | boolean): string | number | boolean;
|
|
70
80
|
//# sourceMappingURL=property-overlay-resolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"property-overlay-resolver.d.ts","sourceRoot":"","sources":["../../src/bridge/property-overlay-resolver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"property-overlay-resolver.d.ts","sourceRoot":"","sources":["../../src/bridge/property-overlay-resolver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAanD;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IACxC,0DAA0D;IAC1D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,gBAAgB,EAAE,GAAG,SAAS,CAAC;AAE5F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,uBAAuB,GAAG,SAAS,GACnD,eAAe,EAAE,CAkInB;AAmBD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAC/B,MAAM,GAAG,MAAM,GAAG,OAAO,CAgB3B"}
|