@ifc-lite/create 4.0.0 → 5.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -0
- package/dist/in-store/align-boxes.d.ts +38 -0
- package/dist/in-store/align-boxes.d.ts.map +1 -0
- package/dist/in-store/align-boxes.js +97 -0
- package/dist/in-store/align-boxes.js.map +1 -0
- package/dist/in-store/anchor.d.ts.map +1 -1
- package/dist/in-store/anchor.js +13 -2
- package/dist/in-store/anchor.js.map +1 -1
- package/dist/in-store/beam.d.ts.map +1 -1
- package/dist/in-store/beam.js +3 -10
- package/dist/in-store/beam.js.map +1 -1
- package/dist/in-store/copy-array.d.ts +17 -0
- package/dist/in-store/copy-array.d.ts.map +1 -0
- package/dist/in-store/copy-array.js +47 -0
- package/dist/in-store/copy-array.js.map +1 -0
- package/dist/in-store/copy-batch.d.ts +27 -0
- package/dist/in-store/copy-batch.d.ts.map +1 -0
- package/dist/in-store/copy-batch.js +101 -0
- package/dist/in-store/copy-batch.js.map +1 -0
- package/dist/in-store/copy-dependent-walk.d.ts +27 -0
- package/dist/in-store/copy-dependent-walk.d.ts.map +1 -0
- package/dist/in-store/copy-dependent-walk.js +61 -0
- package/dist/in-store/copy-dependent-walk.js.map +1 -0
- package/dist/in-store/copy-frame.d.ts +4 -3
- package/dist/in-store/copy-frame.d.ts.map +1 -1
- package/dist/in-store/copy-frame.js +14 -1
- package/dist/in-store/copy-frame.js.map +1 -1
- package/dist/in-store/copy-product.d.ts +0 -20
- package/dist/in-store/copy-product.d.ts.map +1 -1
- package/dist/in-store/copy-product.js +35 -35
- package/dist/in-store/copy-product.js.map +1 -1
- package/dist/in-store/duplicate.d.ts +8 -0
- package/dist/in-store/duplicate.d.ts.map +1 -1
- package/dist/in-store/duplicate.js +8 -1
- package/dist/in-store/duplicate.js.map +1 -1
- package/dist/in-store/edit/effective-mutation-view.d.ts +6 -0
- package/dist/in-store/edit/effective-mutation-view.d.ts.map +1 -0
- package/dist/in-store/edit/effective-mutation-view.js +45 -0
- package/dist/in-store/edit/effective-mutation-view.js.map +1 -0
- package/dist/in-store/edit/effective-storey.d.ts +13 -0
- package/dist/in-store/edit/effective-storey.d.ts.map +1 -0
- package/dist/in-store/edit/effective-storey.js +36 -0
- package/dist/in-store/edit/effective-storey.js.map +1 -0
- package/dist/in-store/edit/effective-storeys.d.ts +9 -0
- package/dist/in-store/edit/effective-storeys.d.ts.map +1 -0
- package/dist/in-store/edit/effective-storeys.js +16 -0
- package/dist/in-store/edit/effective-storeys.js.map +1 -0
- package/dist/in-store/edit/hosted-opening-refit.d.ts +29 -0
- package/dist/in-store/edit/hosted-opening-refit.d.ts.map +1 -0
- package/dist/in-store/edit/hosted-opening-refit.js +168 -0
- package/dist/in-store/edit/hosted-opening-refit.js.map +1 -0
- package/dist/in-store/edit/length-unit-scale.d.ts +24 -0
- package/dist/in-store/edit/length-unit-scale.d.ts.map +1 -0
- package/dist/in-store/edit/length-unit-scale.js +37 -0
- package/dist/in-store/edit/length-unit-scale.js.map +1 -0
- package/dist/in-store/edit/linear-element-edit.d.ts +131 -0
- package/dist/in-store/edit/linear-element-edit.d.ts.map +1 -0
- package/dist/in-store/edit/linear-element-edit.js +259 -0
- package/dist/in-store/edit/linear-element-edit.js.map +1 -0
- package/dist/in-store/edit/metadata-clone-effective.d.ts +5 -0
- package/dist/in-store/edit/metadata-clone-effective.d.ts.map +1 -0
- package/dist/in-store/edit/metadata-clone-effective.js +47 -0
- package/dist/in-store/edit/metadata-clone-effective.js.map +1 -0
- package/dist/in-store/edit/metadata-clone.d.ts +40 -0
- package/dist/in-store/edit/metadata-clone.d.ts.map +1 -0
- package/dist/in-store/edit/metadata-clone.js +142 -0
- package/dist/in-store/edit/metadata-clone.js.map +1 -0
- package/dist/in-store/edit/placement-core.d.ts +140 -0
- package/dist/in-store/edit/placement-core.d.ts.map +1 -0
- package/dist/in-store/edit/placement-core.js +317 -0
- package/dist/in-store/edit/placement-core.js.map +1 -0
- package/dist/in-store/edit/polygon-clip.d.ts +58 -0
- package/dist/in-store/edit/polygon-clip.d.ts.map +1 -0
- package/dist/in-store/edit/polygon-clip.js +153 -0
- package/dist/in-store/edit/polygon-clip.js.map +1 -0
- package/dist/in-store/edit/read-profile.d.ts +6 -0
- package/dist/in-store/edit/read-profile.d.ts.map +1 -0
- package/dist/in-store/edit/read-profile.js +95 -0
- package/dist/in-store/edit/read-profile.js.map +1 -0
- package/dist/in-store/edit/slab-edit-frame.d.ts +40 -0
- package/dist/in-store/edit/slab-edit-frame.d.ts.map +1 -0
- package/dist/in-store/edit/slab-edit-frame.js +146 -0
- package/dist/in-store/edit/slab-edit-frame.js.map +1 -0
- package/dist/in-store/edit/slab-edit.d.ts +112 -0
- package/dist/in-store/edit/slab-edit.d.ts.map +1 -0
- package/dist/in-store/edit/slab-edit.js +275 -0
- package/dist/in-store/edit/slab-edit.js.map +1 -0
- package/dist/in-store/edit/slab-opening-carry.d.ts +10 -0
- package/dist/in-store/edit/slab-opening-carry.d.ts.map +1 -0
- package/dist/in-store/edit/slab-opening-carry.js +65 -0
- package/dist/in-store/edit/slab-opening-carry.js.map +1 -0
- package/dist/in-store/edit/split-guid.d.ts +29 -0
- package/dist/in-store/edit/split-guid.d.ts.map +1 -0
- package/dist/in-store/edit/split-guid.js +64 -0
- package/dist/in-store/edit/split-guid.js.map +1 -0
- package/dist/in-store/edit/split-target.d.ts +90 -0
- package/dist/in-store/edit/split-target.d.ts.map +1 -0
- package/dist/in-store/edit/split-target.js +116 -0
- package/dist/in-store/edit/split-target.js.map +1 -0
- package/dist/in-store/edit/target.d.ts +8 -0
- package/dist/in-store/edit/target.d.ts.map +1 -0
- package/dist/in-store/edit/target.js +5 -0
- package/dist/in-store/edit/target.js.map +1 -0
- package/dist/in-store/edit/trim-extend-geometry.d.ts +99 -0
- package/dist/in-store/edit/trim-extend-geometry.d.ts.map +1 -0
- package/dist/in-store/edit/trim-extend-geometry.js +105 -0
- package/dist/in-store/edit/trim-extend-geometry.js.map +1 -0
- package/dist/in-store/edit/wall-axis-edit.d.ts +16 -0
- package/dist/in-store/edit/wall-axis-edit.d.ts.map +1 -0
- package/dist/in-store/edit/wall-axis-edit.js +40 -0
- package/dist/in-store/edit/wall-axis-edit.js.map +1 -0
- package/dist/in-store/edit/wall-edit.d.ts +157 -0
- package/dist/in-store/edit/wall-edit.d.ts.map +1 -0
- package/dist/in-store/edit/wall-edit.js +276 -0
- package/dist/in-store/edit/wall-edit.js.map +1 -0
- package/dist/in-store/edit/wall-hosted-cuts.d.ts +35 -0
- package/dist/in-store/edit/wall-hosted-cuts.d.ts.map +1 -0
- package/dist/in-store/edit/wall-hosted-cuts.js +27 -0
- package/dist/in-store/edit/wall-hosted-cuts.js.map +1 -0
- package/dist/in-store/edit/wall-opening-reassign.d.ts +18 -0
- package/dist/in-store/edit/wall-opening-reassign.d.ts.map +1 -0
- package/dist/in-store/edit/wall-opening-reassign.js +50 -0
- package/dist/in-store/edit/wall-opening-reassign.js.map +1 -0
- package/dist/in-store/element-align.d.ts +13 -0
- package/dist/in-store/element-align.d.ts.map +1 -0
- package/dist/in-store/element-align.js +90 -0
- package/dist/in-store/element-align.js.map +1 -0
- package/dist/in-store/element-replacement.d.ts +26 -0
- package/dist/in-store/element-replacement.d.ts.map +1 -0
- package/dist/in-store/element-replacement.js +68 -0
- package/dist/in-store/element-replacement.js.map +1 -0
- package/dist/in-store/element-size-edit.d.ts +40 -0
- package/dist/in-store/element-size-edit.d.ts.map +1 -0
- package/dist/in-store/element-size-edit.js +103 -0
- package/dist/in-store/element-size-edit.js.map +1 -0
- package/dist/in-store/element-split-axis.d.ts +6 -0
- package/dist/in-store/element-split-axis.d.ts.map +1 -0
- package/dist/in-store/element-split-axis.js +87 -0
- package/dist/in-store/element-split-axis.js.map +1 -0
- package/dist/in-store/element-split-joined.d.ts +13 -0
- package/dist/in-store/element-split-joined.d.ts.map +1 -0
- package/dist/in-store/element-split-joined.js +74 -0
- package/dist/in-store/element-split-joined.js.map +1 -0
- package/dist/in-store/element-split-placement.d.ts +19 -0
- package/dist/in-store/element-split-placement.d.ts.map +1 -0
- package/dist/in-store/element-split-placement.js +48 -0
- package/dist/in-store/element-split-placement.js.map +1 -0
- package/dist/in-store/element-split-slab.d.ts +19 -0
- package/dist/in-store/element-split-slab.d.ts.map +1 -0
- package/dist/in-store/element-split-slab.js +86 -0
- package/dist/in-store/element-split-slab.js.map +1 -0
- package/dist/in-store/element-split.d.ts +49 -0
- package/dist/in-store/element-split.d.ts.map +1 -0
- package/dist/in-store/element-split.js +52 -0
- package/dist/in-store/element-split.js.map +1 -0
- package/dist/in-store/element-transform-edit.d.ts +33 -0
- package/dist/in-store/element-transform-edit.d.ts.map +1 -0
- package/dist/in-store/element-transform-edit.js +97 -0
- package/dist/in-store/element-transform-edit.js.map +1 -0
- package/dist/in-store/element-transform-frames.d.ts +45 -0
- package/dist/in-store/element-transform-frames.d.ts.map +1 -0
- package/dist/in-store/element-transform-frames.js +121 -0
- package/dist/in-store/element-transform-frames.js.map +1 -0
- package/dist/in-store/element-transform-joins.d.ts +4 -0
- package/dist/in-store/element-transform-joins.d.ts.map +1 -0
- package/dist/in-store/element-transform-joins.js +62 -0
- package/dist/in-store/element-transform-joins.js.map +1 -0
- package/dist/in-store/element-transform-plan.d.ts +38 -0
- package/dist/in-store/element-transform-plan.d.ts.map +1 -0
- package/dist/in-store/element-transform-plan.js +115 -0
- package/dist/in-store/element-transform-plan.js.map +1 -0
- package/dist/in-store/element-trim-extend.d.ts +25 -0
- package/dist/in-store/element-trim-extend.d.ts.map +1 -0
- package/dist/in-store/element-trim-extend.js +97 -0
- package/dist/in-store/element-trim-extend.js.map +1 -0
- package/dist/in-store/extract-grids.d.ts +7 -17
- package/dist/in-store/extract-grids.d.ts.map +1 -1
- package/dist/in-store/extract-grids.js +11 -2
- package/dist/in-store/extract-grids.js.map +1 -1
- package/dist/in-store/grid-column.d.ts +23 -0
- package/dist/in-store/grid-column.d.ts.map +1 -0
- package/dist/in-store/grid-column.js +73 -0
- package/dist/in-store/grid-column.js.map +1 -0
- package/dist/in-store/grid-intersection-read.d.ts +10 -0
- package/dist/in-store/grid-intersection-read.d.ts.map +1 -0
- package/dist/in-store/grid-intersection-read.js +45 -0
- package/dist/in-store/grid-intersection-read.js.map +1 -0
- package/dist/in-store/grid.d.ts +7 -1
- package/dist/in-store/grid.d.ts.map +1 -1
- package/dist/in-store/grid.js +12 -2
- package/dist/in-store/grid.js.map +1 -1
- package/dist/in-store/group-evidence.d.ts +49 -0
- package/dist/in-store/group-evidence.d.ts.map +1 -0
- package/dist/in-store/group-evidence.js +111 -0
- package/dist/in-store/group-evidence.js.map +1 -0
- package/dist/in-store/group-graph.d.ts +51 -0
- package/dist/in-store/group-graph.d.ts.map +1 -0
- package/dist/in-store/group-graph.js +207 -0
- package/dist/in-store/group-graph.js.map +1 -0
- package/dist/in-store/group.d.ts +34 -0
- package/dist/in-store/group.d.ts.map +1 -0
- package/dist/in-store/group.js +181 -0
- package/dist/in-store/group.js.map +1 -0
- package/dist/in-store/host-geometry-frame.d.ts +5 -1
- package/dist/in-store/host-geometry-frame.d.ts.map +1 -1
- package/dist/in-store/host-geometry-frame.js +58 -10
- package/dist/in-store/host-geometry-frame.js.map +1 -1
- package/dist/in-store/index.d.ts +7 -0
- package/dist/in-store/index.d.ts.map +1 -1
- package/dist/in-store/index.js +7 -0
- package/dist/in-store/index.js.map +1 -1
- package/dist/in-store/linear-profile-frame.d.ts +10 -0
- package/dist/in-store/linear-profile-frame.d.ts.map +1 -0
- package/dist/in-store/linear-profile-frame.js +17 -0
- package/dist/in-store/linear-profile-frame.js.map +1 -0
- package/dist/in-store/material.d.ts.map +1 -1
- package/dist/in-store/material.js +17 -6
- package/dist/in-store/material.js.map +1 -1
- package/dist/in-store/member.d.ts.map +1 -1
- package/dist/in-store/member.js +3 -7
- package/dist/in-store/member.js.map +1 -1
- package/dist/in-store/ordinary-element.d.ts +47 -0
- package/dist/in-store/ordinary-element.d.ts.map +1 -0
- package/dist/in-store/ordinary-element.js +38 -0
- package/dist/in-store/ordinary-element.js.map +1 -0
- package/dist/in-store/placement-frame.d.ts +5 -17
- package/dist/in-store/placement-frame.d.ts.map +1 -1
- package/dist/in-store/placement-frame.js +59 -43
- package/dist/in-store/placement-frame.js.map +1 -1
- package/dist/in-store/resolve-anchor.d.ts +3 -2
- package/dist/in-store/resolve-anchor.d.ts.map +1 -1
- package/dist/in-store/resolve-anchor.js +7 -5
- package/dist/in-store/resolve-anchor.js.map +1 -1
- package/dist/in-store/resolve-relations.d.ts +3 -1
- package/dist/in-store/resolve-relations.d.ts.map +1 -1
- package/dist/in-store/resolve-relations.js +8 -3
- package/dist/in-store/resolve-relations.js.map +1 -1
- package/dist/in-store/resolve-source.d.ts.map +1 -1
- package/dist/in-store/resolve-source.js +10 -3
- package/dist/in-store/resolve-source.js.map +1 -1
- package/dist/in-store/room-candidates.d.ts +58 -0
- package/dist/in-store/room-candidates.d.ts.map +1 -0
- package/dist/in-store/room-candidates.js +135 -0
- package/dist/in-store/room-candidates.js.map +1 -0
- package/dist/in-store/room-creation-plan.d.ts +16 -0
- package/dist/in-store/room-creation-plan.d.ts.map +1 -0
- package/dist/in-store/room-creation-plan.js +28 -0
- package/dist/in-store/room-creation-plan.js.map +1 -0
- package/dist/in-store/room-floor-height.d.ts +24 -0
- package/dist/in-store/room-floor-height.d.ts.map +1 -0
- package/dist/in-store/room-floor-height.js +32 -0
- package/dist/in-store/room-floor-height.js.map +1 -0
- package/dist/in-store/room-footprint-native.d.ts +19 -0
- package/dist/in-store/room-footprint-native.d.ts.map +1 -0
- package/dist/in-store/room-footprint-native.js +117 -0
- package/dist/in-store/room-footprint-native.js.map +1 -0
- package/dist/in-store/room-layout-cache.d.ts +23 -0
- package/dist/in-store/room-layout-cache.d.ts.map +1 -0
- package/dist/in-store/room-layout-cache.js +84 -0
- package/dist/in-store/room-layout-cache.js.map +1 -0
- package/dist/in-store/room-layout-core.d.ts +68 -0
- package/dist/in-store/room-layout-core.d.ts.map +1 -0
- package/dist/in-store/room-layout-core.js +153 -0
- package/dist/in-store/room-layout-core.js.map +1 -0
- package/dist/in-store/room-population.d.ts +5 -0
- package/dist/in-store/room-population.d.ts.map +1 -0
- package/dist/in-store/room-population.js +28 -0
- package/dist/in-store/room-population.js.map +1 -0
- package/dist/in-store/room-space-meshes.d.ts +15 -0
- package/dist/in-store/room-space-meshes.d.ts.map +1 -0
- package/dist/in-store/room-space-meshes.js +38 -0
- package/dist/in-store/room-space-meshes.js.map +1 -0
- package/dist/in-store/room-store.d.ts +55 -0
- package/dist/in-store/room-store.d.ts.map +1 -0
- package/dist/in-store/room-store.js +173 -0
- package/dist/in-store/room-store.js.map +1 -0
- package/dist/in-store/room-storey-elevation.d.ts +5 -0
- package/dist/in-store/room-storey-elevation.d.ts.map +1 -0
- package/dist/in-store/room-storey-elevation.js +42 -0
- package/dist/in-store/room-storey-elevation.js.map +1 -0
- package/dist/in-store/room-storey-frame.d.ts +47 -0
- package/dist/in-store/room-storey-frame.d.ts.map +1 -0
- package/dist/in-store/room-storey-frame.js +48 -0
- package/dist/in-store/room-storey-frame.js.map +1 -0
- package/dist/in-store/room-wall-rects.d.ts +117 -0
- package/dist/in-store/room-wall-rects.d.ts.map +1 -0
- package/dist/in-store/room-wall-rects.js +157 -0
- package/dist/in-store/room-wall-rects.js.map +1 -0
- package/dist/in-store/schema-attributes.d.ts +3 -3
- package/dist/in-store/schema-attributes.d.ts.map +1 -1
- package/dist/in-store/schema-attributes.js +9 -7
- package/dist/in-store/schema-attributes.js.map +1 -1
- package/dist/in-store/slab.d.ts.map +1 -1
- package/dist/in-store/slab.js +1 -4
- package/dist/in-store/slab.js.map +1 -1
- package/dist/in-store/stair-removal.d.ts +17 -0
- package/dist/in-store/stair-removal.d.ts.map +1 -0
- package/dist/in-store/stair-removal.js +134 -0
- package/dist/in-store/stair-removal.js.map +1 -0
- package/dist/in-store/storey-plan-frame.d.ts +2 -1
- package/dist/in-store/storey-plan-frame.d.ts.map +1 -1
- package/dist/in-store/storey-plan-frame.js +20 -11
- package/dist/in-store/storey-plan-frame.js.map +1 -1
- package/dist/in-store/storey-reassignment-plan.d.ts +53 -0
- package/dist/in-store/storey-reassignment-plan.d.ts.map +1 -0
- package/dist/in-store/storey-reassignment-plan.js +237 -0
- package/dist/in-store/storey-reassignment-plan.js.map +1 -0
- package/dist/in-store/storey-reassignment.d.ts +8 -0
- package/dist/in-store/storey-reassignment.d.ts.map +1 -0
- package/dist/in-store/storey-reassignment.js +52 -0
- package/dist/in-store/storey-reassignment.js.map +1 -0
- package/dist/in-store/trim-extend-plan.d.ts +27 -0
- package/dist/in-store/trim-extend-plan.d.ts.map +1 -0
- package/dist/in-store/trim-extend-plan.js +49 -0
- package/dist/in-store/trim-extend-plan.js.map +1 -0
- package/dist/in-store/wall-join-edit.d.ts +0 -17
- package/dist/in-store/wall-join-edit.d.ts.map +1 -1
- package/dist/in-store/wall-join-edit.js +41 -7
- package/dist/in-store/wall-join-edit.js.map +1 -1
- package/dist/in-store/wall-section-edit.d.ts +16 -0
- package/dist/in-store/wall-section-edit.d.ts.map +1 -0
- package/dist/in-store/wall-section-edit.js +75 -0
- package/dist/in-store/wall-section-edit.js.map +1 -0
- package/dist/in-store/wall-size-edit.d.ts +29 -0
- package/dist/in-store/wall-size-edit.d.ts.map +1 -0
- package/dist/in-store/wall-size-edit.js +65 -0
- package/dist/in-store/wall-size-edit.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -1
- package/dist/landxml/profile-geometry.d.ts +10 -0
- package/dist/landxml/profile-geometry.d.ts.map +1 -1
- package/dist/landxml/profile-geometry.js +16 -1
- package/dist/landxml/profile-geometry.js.map +1 -1
- package/package.json +9 -8
|
@@ -48,19 +48,30 @@ export function addMaterialLayerSetToStore(editor, anchor, params) {
|
|
|
48
48
|
throw new Error(`${op}: MaterialLayers[${index}].Material #${layer.Material} is ${type ? `an ${type}` : 'not a live entity'}, not an IfcMaterial`);
|
|
49
49
|
}
|
|
50
50
|
});
|
|
51
|
-
|
|
51
|
+
// Prepare every schema field before creating helpers: an unsupported late
|
|
52
|
+
// layer or set attribute must leave the live overlay and allocator intact.
|
|
53
|
+
const layerAttributes = params.MaterialLayers.map((layer) => {
|
|
52
54
|
const { Material, ...rest } = layer;
|
|
53
|
-
return
|
|
55
|
+
return schemaAttributes(registry, 'IfcMaterialLayer', {
|
|
54
56
|
...rest,
|
|
55
57
|
Material: Material === undefined ? undefined : `#${Material}`,
|
|
56
58
|
LayerThickness: toNativeLength(anchor, layer.LayerThickness),
|
|
57
|
-
}, op)
|
|
59
|
+
}, op);
|
|
58
60
|
});
|
|
59
|
-
|
|
60
|
-
|
|
61
|
+
// schemaAttributes retains this reference list; fill it only after all
|
|
62
|
+
// declarations are validated and each actual layer ID is known.
|
|
63
|
+
const layerReferences = [];
|
|
64
|
+
const layerSetAttributes = schemaAttributes(registry, 'IfcMaterialLayerSet', {
|
|
65
|
+
MaterialLayers: layerReferences,
|
|
61
66
|
LayerSetName: params.LayerSetName,
|
|
62
67
|
Description: params.Description,
|
|
63
|
-
}, op)
|
|
68
|
+
}, op);
|
|
69
|
+
const layerIds = layerAttributes.map(attributes => {
|
|
70
|
+
const id = add(editor, 'IfcMaterialLayer', attributes);
|
|
71
|
+
layerReferences.push(`#${id}`);
|
|
72
|
+
return id;
|
|
73
|
+
});
|
|
74
|
+
const layerSetId = add(editor, 'IfcMaterialLayerSet', layerSetAttributes);
|
|
64
75
|
return { layerSetId, layerIds };
|
|
65
76
|
}
|
|
66
77
|
export function addMaterialLayerSetUsageToStore(editor, anchor, params) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"material.js","sourceRoot":"","sources":["../../src/in-store/material.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAwB,MAAM,aAAa,CAAC;AAoD3E,SAAS,GAAG,CAAC,MAAmB,EAAE,IAAY,EAAE,KAAgB;IAC9D,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,KAAyB,CAAC,CAAC,SAAS,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAmB,EAAE,MAAuB,EAAE,MAA6B;IAC5G,MAAM,EAAE,GAAG,oBAAoB,CAAC;IAChC,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;IAC5G,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACnD,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,gBAAgB,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;AAClH,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,MAAmB,EACnB,MAAuB,EACvB,MAAqC;IAErC,MAAM,EAAE,GAAG,4BAA4B,CAAC;IACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChF,MAAM,IAAI,KAAK,CAAC,GAAG,EAAE,2CAA2C,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACnD,iFAAiF;IACjF,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC7C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;YACvE,MAAM,IAAI,KAAK,CAAC,GAAG,EAAE,oBAAoB,KAAK,+CAA+C,CAAC,CAAC;QACjG,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;YAAE,OAAO;QACzC,0EAA0E;QAC1E,mEAAmE;QACnE,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,GAAG,EAAE,oBAAoB,KAAK,eAAe,KAAK,CAAC,QAAQ,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,mBAAmB,sBAAsB,CAAC,CAAC;QACrJ,CAAC;IACH,CAAC,CAAC,CAAC;IACH,MAAM,
|
|
1
|
+
{"version":3,"file":"material.js","sourceRoot":"","sources":["../../src/in-store/material.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"member.d.ts","sourceRoot":"","sources":["../../src/in-store/member.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EAAkC,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AASjF,OAAO,EAAqC,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAEtF,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EACX,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAC7D,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,GAC5D,aAAa,GAAG,YAAY,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,gGAAgG;AAChG,MAAM,WAAW,2BAA4B,SAAQ,IAAI,CAAC,mBAAmB,EAAE,OAAO,GAAG,QAAQ,CAAC;IAChG,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"member.d.ts","sourceRoot":"","sources":["../../src/in-store/member.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EAAkC,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AASjF,OAAO,EAAqC,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAEtF,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EACX,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAC7D,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,GAC5D,aAAa,GAAG,YAAY,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,gGAAgG;AAChG,MAAM,WAAW,2BAA4B,SAAQ,IAAI,CAAC,mBAAmB,EAAE,OAAO,GAAG,QAAQ,CAAC;IAChG,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAGD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,mBAAmB,GAAG,2BAA2B,GACxD,iBAAiB,CAmCnB"}
|
package/dist/in-store/member.js
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
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 {
|
|
4
|
+
import { assertFinitePoint3 } from '../ifc-creator-math.js';
|
|
5
|
+
import { linearProfileFrame } from './linear-profile-frame.js';
|
|
5
6
|
import { toNativeLength, toNativePoint3 } from './anchor.js';
|
|
6
7
|
import { emitBodyRepresentation, emitExtrudedSolid, emitLocalPlacement, emitRectangleProfile, emitRelContainedInSpatialStructure, ifcElementHeader, } from './_emit-helpers.js';
|
|
7
8
|
import { emitProfileSection, linearSection } from './profile.js';
|
|
8
|
-
function computeRefDirection(axis) {
|
|
9
|
-
const up = Math.abs(axis[2]) < 0.9 ? [0, 0, 1] : [1, 0, 0];
|
|
10
|
-
return vecNorm(vecCross(up, axis));
|
|
11
|
-
}
|
|
12
9
|
export function addMemberToStore(editor, anchor, params) {
|
|
13
10
|
// A non-finite Start/End coordinate makes the derived memberLen NaN, and
|
|
14
11
|
// `NaN <= 0` is false, so the distinct-points check below never fires.
|
|
@@ -26,8 +23,7 @@ export function addMemberToStore(editor, anchor, params) {
|
|
|
26
23
|
throw new Error('addMemberToStore: Start and End must be distinct points');
|
|
27
24
|
}
|
|
28
25
|
const section = linearSection(anchor, params, 'addMemberToStore');
|
|
29
|
-
const dir =
|
|
30
|
-
const refDir = computeRefDirection(dir);
|
|
26
|
+
const { along: dir, u: refDir } = linearProfileFrame(start, end);
|
|
31
27
|
const placementId = emitLocalPlacement(editor, anchor.storeyPlacementId, start, dir, refDir);
|
|
32
28
|
const profileId = section.Profile
|
|
33
29
|
? emitProfileSection(editor, anchor, section.Profile, 'addMemberToStore')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"member.js","sourceRoot":"","sources":["../../src/in-store/member.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAa/D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"member.js","sourceRoot":"","sources":["../../src/in-store/member.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { StoreEditor } from '@ifc-lite/mutations';
|
|
2
|
+
import type { SpatialAnchor } from './anchor.js';
|
|
3
|
+
import { type BeamInStoreParams, type ProfiledBeamInStoreParams } from './beam.js';
|
|
4
|
+
import { type ColumnInStoreParams, type ProfiledColumnInStoreParams } from './column.js';
|
|
5
|
+
import { type MemberInStoreParams, type ProfiledMemberInStoreParams } from './member.js';
|
|
6
|
+
import { type PlateInStoreParams } from './plate.js';
|
|
7
|
+
import { type RoofInStoreParams } from './roof.js';
|
|
8
|
+
import { type SlabInStoreParams } from './slab.js';
|
|
9
|
+
import { type SpaceInStoreParams } from './space.js';
|
|
10
|
+
import { type WallInStoreParams } from './wall.js';
|
|
11
|
+
/** The eight ordinary builders shared by loaded-model gestures and SDK/MCP.
|
|
12
|
+
* Parameters retain their existing storey-local metre and profile contracts. */
|
|
13
|
+
export type OrdinaryInStoreElement = {
|
|
14
|
+
kind: 'column';
|
|
15
|
+
params: ColumnInStoreParams | ProfiledColumnInStoreParams;
|
|
16
|
+
} | {
|
|
17
|
+
kind: 'wall';
|
|
18
|
+
params: WallInStoreParams;
|
|
19
|
+
} | {
|
|
20
|
+
kind: 'slab';
|
|
21
|
+
params: SlabInStoreParams;
|
|
22
|
+
} | {
|
|
23
|
+
kind: 'beam';
|
|
24
|
+
params: BeamInStoreParams | ProfiledBeamInStoreParams;
|
|
25
|
+
} | {
|
|
26
|
+
kind: 'space';
|
|
27
|
+
params: SpaceInStoreParams;
|
|
28
|
+
} | {
|
|
29
|
+
kind: 'roof';
|
|
30
|
+
params: RoofInStoreParams;
|
|
31
|
+
} | {
|
|
32
|
+
kind: 'plate';
|
|
33
|
+
params: PlateInStoreParams;
|
|
34
|
+
} | {
|
|
35
|
+
kind: 'member';
|
|
36
|
+
params: MemberInStoreParams | ProfiledMemberInStoreParams;
|
|
37
|
+
};
|
|
38
|
+
/** Commit one existing builder atomically (#6232 D5). A late refusal leaves
|
|
39
|
+
* no placement/profile/representation helpers or journal entries behind.
|
|
40
|
+
* The caller supplies a resolved anchor or resolves it using this transaction's
|
|
41
|
+
* draft. The latter includes existing UI placement preparation in this same
|
|
42
|
+
* transaction, without changing its policy or nesting another atomic edit.
|
|
43
|
+
* Renderer, room and history effects remain with the caller after success. */
|
|
44
|
+
export declare function addOrdinaryElementInStore(editor: StoreEditor, anchor: SpatialAnchor | ((draft: StoreEditor) => SpatialAnchor), element: OrdinaryInStoreElement): number;
|
|
45
|
+
/** Package-private builder dispatch; callers own the enclosing atomic edit. */
|
|
46
|
+
export declare function emitOrdinaryElement(draft: StoreEditor, resolved: SpatialAnchor, element: OrdinaryInStoreElement): number;
|
|
47
|
+
//# sourceMappingURL=ordinary-element.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ordinary-element.d.ts","sourceRoot":"","sources":["../../src/in-store/ordinary-element.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAkB,KAAK,iBAAiB,EAAE,KAAK,yBAAyB,EAAE,MAAM,WAAW,CAAC;AACnG,OAAO,EAAoB,KAAK,mBAAmB,EAAE,KAAK,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAC3G,OAAO,EAAoB,KAAK,mBAAmB,EAAE,KAAK,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAC3G,OAAO,EAAmB,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAmB,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEnE;gFACgF;AAChF,MAAM,MAAM,sBAAsB,GAC9B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,mBAAmB,GAAG,2BAA2B,CAAA;CAAE,GAC7E;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,iBAAiB,GAAG,yBAAyB,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,mBAAmB,GAAG,2BAA2B,CAAA;CAAE,CAAC;AAElF;;;;;8EAK8E;AAC9E,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,aAAa,GAAG,CAAC,CAAC,KAAK,EAAE,WAAW,KAAK,aAAa,CAAC,EAC/D,OAAO,EAAE,sBAAsB,GAC9B,MAAM,CAKR;AAED,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,sBAAsB,GAAG,MAAM,CAYxH"}
|
|
@@ -0,0 +1,38 @@
|
|
|
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 { addBeamToStore } from './beam.js';
|
|
5
|
+
import { addColumnToStore } from './column.js';
|
|
6
|
+
import { addMemberToStore } from './member.js';
|
|
7
|
+
import { addPlateToStore } from './plate.js';
|
|
8
|
+
import { addRoofToStore } from './roof.js';
|
|
9
|
+
import { addSlabToStore } from './slab.js';
|
|
10
|
+
import { addSpaceToStore } from './space.js';
|
|
11
|
+
import { addWallToStore } from './wall.js';
|
|
12
|
+
/** Commit one existing builder atomically (#6232 D5). A late refusal leaves
|
|
13
|
+
* no placement/profile/representation helpers or journal entries behind.
|
|
14
|
+
* The caller supplies a resolved anchor or resolves it using this transaction's
|
|
15
|
+
* draft. The latter includes existing UI placement preparation in this same
|
|
16
|
+
* transaction, without changing its policy or nesting another atomic edit.
|
|
17
|
+
* Renderer, room and history effects remain with the caller after success. */
|
|
18
|
+
export function addOrdinaryElementInStore(editor, anchor, element) {
|
|
19
|
+
return editor.runAtomic(draft => {
|
|
20
|
+
const resolved = typeof anchor === 'function' ? anchor(draft) : anchor;
|
|
21
|
+
return emitOrdinaryElement(draft, resolved, element);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
/** Package-private builder dispatch; callers own the enclosing atomic edit. */
|
|
25
|
+
export function emitOrdinaryElement(draft, resolved, element) {
|
|
26
|
+
switch (element.kind) {
|
|
27
|
+
case 'column': return addColumnToStore(draft, resolved, element.params).columnId;
|
|
28
|
+
case 'wall': return addWallToStore(draft, resolved, element.params).wallId;
|
|
29
|
+
case 'slab': return addSlabToStore(draft, resolved, element.params).slabId;
|
|
30
|
+
case 'beam': return addBeamToStore(draft, resolved, element.params).beamId;
|
|
31
|
+
case 'space': return addSpaceToStore(draft, resolved, element.params).spaceId;
|
|
32
|
+
case 'roof': return addRoofToStore(draft, resolved, element.params).roofId;
|
|
33
|
+
case 'plate': return addPlateToStore(draft, resolved, element.params).plateId;
|
|
34
|
+
case 'member': return addMemberToStore(draft, resolved, element.params).memberId;
|
|
35
|
+
default: throw new Error('addOrdinaryElementInStore: unsupported element kind');
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=ordinary-element.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ordinary-element.js","sourceRoot":"","sources":["../../src/in-store/ordinary-element.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAI/D,OAAO,EAAE,cAAc,EAA0D,MAAM,WAAW,CAAC;AACnG,OAAO,EAAE,gBAAgB,EAA8D,MAAM,aAAa,CAAC;AAC3G,OAAO,EAAE,gBAAgB,EAA8D,MAAM,aAAa,CAAC;AAC3G,OAAO,EAAE,eAAe,EAA2B,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,cAAc,EAA0B,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,cAAc,EAA0B,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,eAAe,EAA2B,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,cAAc,EAA0B,MAAM,WAAW,CAAC;AAcnE;;;;;8EAK8E;AAC9E,MAAM,UAAU,yBAAyB,CACvC,MAAmB,EACnB,MAA+D,EAC/D,OAA+B;IAE/B,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;QAC9B,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACvE,OAAO,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,mBAAmB,CAAC,KAAkB,EAAE,QAAuB,EAAE,OAA+B;IAC9G,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,QAAQ,CAAC,CAAC,OAAO,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;QACjF,KAAK,MAAM,CAAC,CAAC,OAAO,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QAC3E,KAAK,MAAM,CAAC,CAAC,OAAO,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QAC3E,KAAK,MAAM,CAAC,CAAC,OAAO,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QAC3E,KAAK,OAAO,CAAC,CAAC,OAAO,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;QAC9E,KAAK,MAAM,CAAC,CAAC,OAAO,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QAC3E,KAAK,OAAO,CAAC,CAAC,OAAO,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;QAC9E,KAAK,QAAQ,CAAC,CAAC,OAAO,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;QACjF,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IAClF,CAAC;AACH,CAAC"}
|
|
@@ -1,20 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Planar rigid frames read out of an `IfcLocalPlacement` chain, and the algebra
|
|
3
|
-
* for composing, inverting and applying them.
|
|
4
|
-
*
|
|
5
|
-
* Split out of `extract-walls.ts` so the storey frame has ONE implementation.
|
|
6
|
-
* `extract-walls` needs it to express wall axes and existing space footprints
|
|
7
|
-
* storey-locally; `storey-plan-frame.ts` needs the same chain composed all the
|
|
8
|
-
* way to the model's own world frame, so a producer working in that frame can
|
|
9
|
-
* divide the storey out before authoring into a storey-local slot. Two copies
|
|
10
|
-
* of the composition order or of `invertFrame`'s sign convention would put the
|
|
11
|
-
* read side and the write side on coordinates that differ by a rotation, which
|
|
12
|
-
* is exactly the failure the storey-local contract exists to prevent.
|
|
13
|
-
*
|
|
14
|
-
* Every frame here is 2D and in the file's own raw length unit: the Z-up ground
|
|
15
|
-
* plane of the IFC coordinates, unscaled. Callers that speak metres apply the
|
|
16
|
-
* length-unit scale themselves.
|
|
17
|
-
*/
|
|
18
1
|
import { EntityExtractor, type IfcDataStore, type IfcAttributeValue } from '@ifc-lite/parser';
|
|
19
2
|
import type { Vec2 } from './auto-space-detect.js';
|
|
20
3
|
/**
|
|
@@ -23,6 +6,11 @@ import type { Vec2 } from './auto-space-detect.js';
|
|
|
23
6
|
* parsed) are included alongside the source walls.
|
|
24
7
|
*/
|
|
25
8
|
export interface OverlayWallReader {
|
|
9
|
+
/** Authoritative effective metadata callback: null never falls back to source. */
|
|
10
|
+
readEntity?(expressId: number): {
|
|
11
|
+
type?: string;
|
|
12
|
+
attributes: IfcAttributeValue[];
|
|
13
|
+
} | null;
|
|
26
14
|
/** Iterate every overlay-created entity. */
|
|
27
15
|
getNewEntities(): Iterable<{
|
|
28
16
|
expressId: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"placement-frame.d.ts","sourceRoot":"","sources":["../../src/in-store/placement-frame.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"placement-frame.d.ts","sourceRoot":"","sources":["../../src/in-store/placement-frame.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,24 @@
|
|
|
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
|
+
/**
|
|
5
|
+
* Planar rigid frames read out of an `IfcLocalPlacement` chain, and the algebra
|
|
6
|
+
* for composing, inverting and applying them.
|
|
7
|
+
*
|
|
8
|
+
* Split out of `extract-walls.ts` so the storey frame has ONE implementation.
|
|
9
|
+
* `extract-walls` needs it to express wall axes and existing space footprints
|
|
10
|
+
* storey-locally; `storey-plan-frame.ts` needs the same chain composed all the
|
|
11
|
+
* way to the model's own world frame, so a producer working in that frame can
|
|
12
|
+
* divide the storey out before authoring into a storey-local slot. Two copies
|
|
13
|
+
* of the composition order or of `invertFrame`'s sign convention would put the
|
|
14
|
+
* read side and the write side on coordinates that differ by a rotation, which
|
|
15
|
+
* is exactly the failure the storey-local contract exists to prevent.
|
|
16
|
+
*
|
|
17
|
+
* Every frame here is 2D and in the file's own raw length unit: the Z-up ground
|
|
18
|
+
* plane of the IFC coordinates, unscaled. Callers that speak metres apply the
|
|
19
|
+
* length-unit scale themselves.
|
|
20
|
+
*/
|
|
21
|
+
import { walkPlacementChain } from '@ifc-lite/data';
|
|
4
22
|
import { axis3d } from './host-geometry-frame.js';
|
|
5
23
|
export const AXIS_EPS = 1e-6;
|
|
6
24
|
/**
|
|
@@ -42,21 +60,19 @@ export function readOwnPlacementFrame(store, extractor, overlay, placementId) {
|
|
|
42
60
|
* nothing" instead — see there.
|
|
43
61
|
*/
|
|
44
62
|
export function storeyPlacementChain(store, extractor, overlay, storeyId) {
|
|
45
|
-
const chain = new Map();
|
|
46
63
|
const storey = readEntity(store, extractor, overlay, storeyId);
|
|
47
64
|
if (!storey)
|
|
48
65
|
return null;
|
|
49
|
-
|
|
50
|
-
if (
|
|
66
|
+
const start = numericAttr(storey.attributes[5]); // ObjectPlacement
|
|
67
|
+
if (start === null)
|
|
51
68
|
return null;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
return chain;
|
|
69
|
+
const walked = walkPlacementChain(start, (id) => parentPlacementId(store, extractor, overlay, id));
|
|
70
|
+
return new Map(walked.ids.map((id, hops) => [id, hops]));
|
|
71
|
+
}
|
|
72
|
+
/** An `IfcLocalPlacement`'s `PlacementRelTo` id; null for a root or an unreadable link. */
|
|
73
|
+
function parentPlacementId(store, extractor, overlay, id) {
|
|
74
|
+
const placement = readEntity(store, extractor, overlay, id);
|
|
75
|
+
return placement ? numericAttr(placement.attributes[0]) : null; // PlacementRelTo
|
|
60
76
|
}
|
|
61
77
|
/**
|
|
62
78
|
* The storey's frame expressed in the frame of the chain entry `hops` steps
|
|
@@ -154,42 +170,40 @@ export function frameInStoreyFrame(store, extractor, overlay, placementId, store
|
|
|
154
170
|
// than silently moving it by the site and building offsets.
|
|
155
171
|
if (!storeyChain)
|
|
156
172
|
return frame;
|
|
157
|
-
//
|
|
158
|
-
//
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
// Divide them out — the INVERSE of the storey's frame in the shared
|
|
176
|
-
// ancestor, applied to the wall's frame in that same ancestor. Applying
|
|
177
|
-
// the storey frame itself instead would double the offset rather than
|
|
178
|
-
// remove it, so the two directions land on different coordinates and the
|
|
179
|
-
// #3003 fixture pins which one this is.
|
|
180
|
-
const storeyFrame = storeyFrameAboveBy(store, extractor, overlay, storeyChain, hops);
|
|
181
|
-
return storeyFrame ? composeFrames(invertFrame(storeyFrame), frame) : null;
|
|
182
|
-
}
|
|
183
|
-
// A cycle or unreadable parent cannot make a trustworthy partial frame.
|
|
184
|
-
if (visited.has(relToId))
|
|
185
|
-
return null;
|
|
186
|
-
const parent = readOwnPlacementFrame(store, extractor, overlay, relToId);
|
|
173
|
+
// The shared walker terminates on a cycle or self-reference in malformed
|
|
174
|
+
// IFC with a visited set and no depth bound. It stops at the first ancestor
|
|
175
|
+
// on the storey's own chain (or runs out of parents at the root, where the
|
|
176
|
+
// storey's chain also ends).
|
|
177
|
+
const walked = walkPlacementChain(placementId, (id) => parentPlacementId(store, extractor, overlay, id), { stopAt: (id) => id !== placementId && storeyChain.has(id) });
|
|
178
|
+
// A cycle cannot make a trustworthy partial frame.
|
|
179
|
+
if (walked.end === 'cycle')
|
|
180
|
+
return null;
|
|
181
|
+
const joined = walked.end === 'stopped' ? walked.ids[walked.ids.length - 1] : null;
|
|
182
|
+
// `frame` is composed with every parent strictly between the placement and
|
|
183
|
+
// the shared ancestor; it is then expressed in that ancestor's frame, and
|
|
184
|
+
// the storey sits `hops` placements below it: `hops === 0` when the ancestor
|
|
185
|
+
// IS the storey's placement, the common shape, where the frame is already
|
|
186
|
+
// storey-local.
|
|
187
|
+
const between = walked.ids.slice(1, joined === null ? undefined : -1);
|
|
188
|
+
for (const id of between) {
|
|
189
|
+
const parent = readOwnPlacementFrame(store, extractor, overlay, id);
|
|
190
|
+
// An unreadable parent cannot make a trustworthy partial frame.
|
|
187
191
|
if (!parent)
|
|
188
192
|
return null;
|
|
189
193
|
frame = composeFrames(parent, frame);
|
|
190
|
-
visited.add(relToId);
|
|
191
|
-
currentId = relToId;
|
|
192
194
|
}
|
|
195
|
+
const hops = joined === null ? storeyChain.size : storeyChain.get(joined);
|
|
196
|
+
if (hops === 0)
|
|
197
|
+
return frame;
|
|
198
|
+
// #3003: the wall joined the chain ABOVE the storey, so the storey's own
|
|
199
|
+
// hops are in `frame` and every caller reads the result as storey-local.
|
|
200
|
+
// Divide them out — the INVERSE of the storey's frame in the shared
|
|
201
|
+
// ancestor, applied to the wall's frame in that same ancestor. Applying
|
|
202
|
+
// the storey frame itself instead would double the offset rather than
|
|
203
|
+
// remove it, so the two directions land on different coordinates and the
|
|
204
|
+
// #3003 fixture pins which one this is.
|
|
205
|
+
const storeyFrame = storeyFrameAboveBy(store, extractor, overlay, storeyChain, hops);
|
|
206
|
+
return storeyFrame ? composeFrames(invertFrame(storeyFrame), frame) : null;
|
|
193
207
|
}
|
|
194
208
|
/**
|
|
195
209
|
* Apply a placement frame to a storey-local 2D point. The point's X is
|
|
@@ -208,6 +222,8 @@ export function applyFrame(frame, local) {
|
|
|
208
222
|
];
|
|
209
223
|
}
|
|
210
224
|
export function readEntity(store, extractor, overlay, expressId) {
|
|
225
|
+
if (overlay?.readEntity)
|
|
226
|
+
return overlay.readEntity(expressId);
|
|
211
227
|
if (overlay?.isDeleted?.(expressId))
|
|
212
228
|
return null;
|
|
213
229
|
// Source bytes provide the unchanged record; positional edits are applied
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"placement-frame.js","sourceRoot":"","sources":["../../src/in-store/placement-frame.ts"],"names":[],"mappings":"AAAA;;+DAE+D;
|
|
1
|
+
{"version":3,"file":"placement-frame.js","sourceRoot":"","sources":["../../src/in-store/placement-frame.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* 3D IfcGeometricRepresentationContext), and the target storey's
|
|
8
8
|
* IfcLocalPlacement.
|
|
9
9
|
*/
|
|
10
|
-
import { type EffectiveEntityRecord, type IfcDataStore } from '@ifc-lite/parser';
|
|
10
|
+
import { type EffectiveEntityRecord, type IfcDataStore, type SchemaEntityNameSnapshot } from '@ifc-lite/parser';
|
|
11
11
|
import { type MutablePropertyView } from '@ifc-lite/mutations';
|
|
12
12
|
import type { SpatialAnchor } from './anchor.js';
|
|
13
13
|
export declare function resolveSpatialAnchor(store: IfcDataStore, storeyExpressId: number, view?: MutablePropertyView | null): SpatialAnchor;
|
|
@@ -19,8 +19,9 @@ export declare function resolveSpatialAnchor(store: IfcDataStore, storeyExpressI
|
|
|
19
19
|
export declare class AnchorEntityReader {
|
|
20
20
|
private readonly store;
|
|
21
21
|
private readonly view;
|
|
22
|
+
private readonly schemaNames?;
|
|
22
23
|
private readonly extractor;
|
|
23
|
-
constructor(store: IfcDataStore, view: MutablePropertyView | null | undefined);
|
|
24
|
+
constructor(store: IfcDataStore | null, view: MutablePropertyView | null | undefined, schemaNames?: SchemaEntityNameSnapshot | undefined);
|
|
24
25
|
ids(type: string): IterableIterator<number>;
|
|
25
26
|
firstId(type: string): number | null;
|
|
26
27
|
/** Prefer the named subcontext, then the root 3D context. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-anchor.d.ts","sourceRoot":"","sources":["../../src/in-store/resolve-anchor.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,EAAiD,KAAK,qBAAqB,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"resolve-anchor.d.ts","sourceRoot":"","sources":["../../src/in-store/resolve-anchor.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,EAAiD,KAAK,qBAAqB,EAAE,KAAK,YAAY,EAAE,KAAK,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC/J,OAAO,EAA6B,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,KAAK,EAAE,aAAa,EAAuB,MAAM,aAAa,CAAC;AAGtE,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,YAAY,EACnB,eAAe,EAAE,MAAM,EACvB,IAAI,CAAC,EAAE,mBAAmB,GAAG,IAAI,GAChC,aAAa,CAiDf;AAED;;;;GAIG;AACH,qBAAa,kBAAkB;IAI3B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAL/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;gBAGhC,KAAK,EAAE,YAAY,GAAG,IAAI,EAC1B,IAAI,EAAE,mBAAmB,GAAG,IAAI,GAAG,SAAS,EAC5C,WAAW,CAAC,EAAE,wBAAwB,YAAA;IAKxD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC;IAM5C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIpC,6DAA6D;IAC7D,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI;IASnF,uDAAuD;IACvD,aAAa,IAAI,MAAM,GAAG,IAAI;IAW9B,6EAA6E;IAC7E,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAgBlD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI;CAcjD"}
|
|
@@ -61,14 +61,16 @@ export function resolveSpatialAnchor(store, storeyExpressId, view) {
|
|
|
61
61
|
export class AnchorEntityReader {
|
|
62
62
|
store;
|
|
63
63
|
view;
|
|
64
|
+
schemaNames;
|
|
64
65
|
extractor;
|
|
65
|
-
constructor(store, view) {
|
|
66
|
+
constructor(store, view, schemaNames) {
|
|
66
67
|
this.store = store;
|
|
67
68
|
this.view = view;
|
|
68
|
-
this.
|
|
69
|
+
this.schemaNames = schemaNames;
|
|
70
|
+
this.extractor = store && store.source.byteLength > 0 ? new EntityExtractor(store.source) : null;
|
|
69
71
|
}
|
|
70
72
|
*ids(type) {
|
|
71
|
-
for (const { expressId } of iterateEffectiveEntityIds(this.store, this.view, [type])) {
|
|
73
|
+
for (const { expressId } of iterateEffectiveEntityIds(this.store ?? { entityIndex: { byType: new Map(), byId: new Map() } }, this.view, [type])) {
|
|
72
74
|
yield expressId;
|
|
73
75
|
}
|
|
74
76
|
}
|
|
@@ -120,7 +122,7 @@ export class AnchorEntityReader {
|
|
|
120
122
|
return null;
|
|
121
123
|
const created = this.view?.getNewEntity(id);
|
|
122
124
|
// @raw-entity-enumeration-ok point lookup after effective enumeration; source bytes are needed only for this candidate's attributes
|
|
123
|
-
const ref = created ? undefined : this.store
|
|
125
|
+
const ref = created ? undefined : this.store?.entityIndex.byId.get(id);
|
|
124
126
|
const source = ref && this.extractor ? this.extractor.extractEntity(ref) : null;
|
|
125
127
|
const entity = created ?? source;
|
|
126
128
|
if (!entity)
|
|
@@ -129,7 +131,7 @@ export class AnchorEntityReader {
|
|
|
129
131
|
retype: this.view?.getEntityTypeMutation(id)?.newType,
|
|
130
132
|
named: this.view?.getAttributeMutationsForEntity(id).map(({ name, value }) => [name, value]) ?? [],
|
|
131
133
|
positional: this.view?.getPositionalMutationsForEntity(id) ?? [],
|
|
132
|
-
}, this.store.
|
|
134
|
+
}, this.store?.schemaVersion, this.schemaNames);
|
|
133
135
|
}
|
|
134
136
|
}
|
|
135
137
|
//# sourceMappingURL=resolve-anchor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-anchor.js","sourceRoot":"","sources":["../../src/in-store/resolve-anchor.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;GAQG;AAEH,OAAO,EAAE,eAAe,EAAE,4BAA4B,
|
|
1
|
+
{"version":3,"file":"resolve-anchor.js","sourceRoot":"","sources":["../../src/in-store/resolve-anchor.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,9 @@ import type { AuthoringAnchor } from './element-type.js';
|
|
|
11
11
|
/** Owner history, schema and length unit of a model, with the same IFC2X3 owner-history rule as `resolveSpatialAnchor`. */
|
|
12
12
|
export declare function resolveAuthoringAnchor(store: IfcDataStore, view?: MutablePropertyView | null): AuthoringAnchor;
|
|
13
13
|
/** Every live `IfcRelDefinesByType` / `IfcRelAssociatesMaterial`: RelatedObjects (slot 4) and the relating side (slot 5). */
|
|
14
|
-
export declare function readRelatedLists(store: IfcDataStore, relType: 'IfcRelDefinesByType' | 'IfcRelAssociatesMaterial', view?: MutablePropertyView | null
|
|
14
|
+
export declare function readRelatedLists(store: IfcDataStore, relType: 'IfcRelDefinesByType' | 'IfcRelAssociatesMaterial', view?: MutablePropertyView | null, options?: {
|
|
15
|
+
includeMalformedRelatingTargets?: boolean;
|
|
16
|
+
}): ExistingRelatedList[];
|
|
15
17
|
/** The live entity's class in `IfcPascalCase`-insensitive form (upper case), or null when it does not exist. */
|
|
16
18
|
export declare function liveEntityType(store: IfcDataStore, id: number, view?: MutablePropertyView | null): string | null;
|
|
17
19
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-relations.d.ts","sourceRoot":"","sources":["../../src/in-store/resolve-relations.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAWzD,2HAA2H;AAC3H,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,IAAI,GAAG,eAAe,CAW9G;AAED,6HAA6H;AAC7H,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,qBAAqB,GAAG,0BAA0B,EAC3D,IAAI,CAAC,EAAE,mBAAmB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"resolve-relations.d.ts","sourceRoot":"","sources":["../../src/in-store/resolve-relations.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAWzD,2HAA2H;AAC3H,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,IAAI,GAAG,eAAe,CAW9G;AAED,6HAA6H;AAC7H,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,qBAAqB,GAAG,0BAA0B,EAC3D,IAAI,CAAC,EAAE,mBAAmB,GAAG,IAAI,EACjC,OAAO,CAAC,EAAE;IAAE,+BAA+B,CAAC,EAAE,OAAO,CAAA;CAAE,GACtD,mBAAmB,EAAE,CAevB;AAED,gHAAgH;AAChH,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAEhH;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,YAAY,EACnB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,mBAAmB,GAAG,IAAI,GAChC,OAAO,CAKT"}
|
|
@@ -25,16 +25,21 @@ export function resolveAuthoringAnchor(store, view) {
|
|
|
25
25
|
return { ownerHistoryId, schema, lengthUnitScale };
|
|
26
26
|
}
|
|
27
27
|
/** Every live `IfcRelDefinesByType` / `IfcRelAssociatesMaterial`: RelatedObjects (slot 4) and the relating side (slot 5). */
|
|
28
|
-
export function readRelatedLists(store, relType, view) {
|
|
28
|
+
export function readRelatedLists(store, relType, view, options) {
|
|
29
29
|
const reader = new AnchorEntityReader(store, view);
|
|
30
30
|
const lists = [];
|
|
31
31
|
for (const relId of reader.ids(relType.toUpperCase())) {
|
|
32
32
|
const rel = reader.entity(relId);
|
|
33
33
|
const related = rel?.attributes[4];
|
|
34
34
|
const relatingId = refId(rel?.attributes[5]);
|
|
35
|
-
if (!Array.isArray(related)
|
|
35
|
+
if (!Array.isArray(related))
|
|
36
36
|
continue;
|
|
37
|
-
|
|
37
|
+
// Explicit IFC unset is no assignment. Strict consumers may inventory
|
|
38
|
+
// malformed targets without inventing a valid relating entity (#7332).
|
|
39
|
+
if (relatingId === null && (!options?.includeMalformedRelatingTargets || rel?.attributes[5] === null))
|
|
40
|
+
continue;
|
|
41
|
+
lists.push({ relId, ...(relatingId === null ? {} : { relatingId }),
|
|
42
|
+
relatedIds: related.map(refId).filter((id) => id !== null) });
|
|
38
43
|
}
|
|
39
44
|
return lists;
|
|
40
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-relations.js","sourceRoot":"","sources":["../../src/in-store/resolve-relations.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAc/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEpE,SAAS,KAAK,CAAC,KAAc;IAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACpF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,OAAO,IAAI,CAAC;AACd,CAAC;AAED,2HAA2H;AAC3H,MAAM,UAAU,sBAAsB,CAAC,KAAmB,EAAE,IAAiC;IAC3F,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACnD,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC;IAC1E,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,aAAa,IAAI,MAAM,CAAwB,CAAC;IACtE,IAAI,MAAM,KAAK,QAAQ,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;IACrG,CAAC;IACD,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC;QACjD,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,wBAAwB,CAAC,IAAI,GAAG;QACvF,CAAC,CAAC,GAAG,CAAC;IACR,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;AACrD,CAAC;AAED,6HAA6H;AAC7H,MAAM,UAAU,gBAAgB,CAC9B,KAAmB,EACnB,OAA2D,EAC3D,IAAiC;
|
|
1
|
+
{"version":3,"file":"resolve-relations.js","sourceRoot":"","sources":["../../src/in-store/resolve-relations.ts"],"names":[],"mappings":"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"}
|