@ifc-lite/create 2.9.2 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ifc-creator-alignment-referents.d.ts +35 -0
- package/dist/ifc-creator-alignment-referents.d.ts.map +1 -0
- package/dist/ifc-creator-alignment-referents.js +89 -0
- package/dist/ifc-creator-alignment-referents.js.map +1 -0
- package/dist/ifc-creator-alignment-vertical.d.ts +40 -0
- package/dist/ifc-creator-alignment-vertical.d.ts.map +1 -0
- package/dist/ifc-creator-alignment-vertical.js +182 -0
- package/dist/ifc-creator-alignment-vertical.js.map +1 -0
- package/dist/ifc-creator-alignment.d.ts +15 -0
- package/dist/ifc-creator-alignment.d.ts.map +1 -1
- package/dist/ifc-creator-alignment.js +27 -28
- package/dist/ifc-creator-alignment.js.map +1 -1
- package/dist/ifc-creator-math.d.ts +20 -0
- package/dist/ifc-creator-math.d.ts.map +1 -1
- package/dist/ifc-creator-math.js +62 -3
- package/dist/ifc-creator-math.js.map +1 -1
- package/dist/ifc-creator.d.ts.map +1 -1
- package/dist/ifc-creator.js +3 -7
- package/dist/ifc-creator.js.map +1 -1
- package/dist/in-store/_emit-helpers.d.ts +2 -1
- package/dist/in-store/_emit-helpers.d.ts.map +1 -1
- package/dist/in-store/_emit-helpers.js +7 -7
- package/dist/in-store/_emit-helpers.js.map +1 -1
- package/dist/in-store/anchor.d.ts +25 -0
- package/dist/in-store/anchor.d.ts.map +1 -1
- package/dist/in-store/column.d.ts +8 -0
- package/dist/in-store/column.d.ts.map +1 -1
- package/dist/in-store/column.js +16 -9
- package/dist/in-store/column.js.map +1 -1
- package/dist/in-store/door.d.ts +10 -4
- package/dist/in-store/door.d.ts.map +1 -1
- package/dist/in-store/door.js +23 -17
- package/dist/in-store/door.js.map +1 -1
- package/dist/in-store/element-type.d.ts +40 -0
- package/dist/in-store/element-type.d.ts.map +1 -0
- package/dist/in-store/element-type.js +60 -0
- package/dist/in-store/element-type.js.map +1 -0
- package/dist/in-store/extract-walls.d.ts.map +1 -1
- package/dist/in-store/extract-walls.js +17 -15
- package/dist/in-store/extract-walls.js.map +1 -1
- package/dist/in-store/hosted-fill.d.ts +48 -0
- package/dist/in-store/hosted-fill.d.ts.map +1 -0
- package/dist/in-store/hosted-fill.js +58 -0
- package/dist/in-store/hosted-fill.js.map +1 -0
- package/dist/in-store/material.d.ts +62 -0
- package/dist/in-store/material.d.ts.map +1 -0
- package/dist/in-store/material.js +107 -0
- package/dist/in-store/material.js.map +1 -0
- package/dist/in-store/opening.d.ts +45 -0
- package/dist/in-store/opening.d.ts.map +1 -0
- package/dist/in-store/opening.js +104 -0
- package/dist/in-store/opening.js.map +1 -0
- package/dist/in-store/placement-frame.d.ts.map +1 -1
- package/dist/in-store/placement-frame.js +19 -4
- package/dist/in-store/placement-frame.js.map +1 -1
- package/dist/in-store/relate.d.ts +32 -0
- package/dist/in-store/relate.d.ts.map +1 -0
- package/dist/in-store/relate.js +39 -0
- package/dist/in-store/relate.js.map +1 -0
- package/dist/in-store/resolve-anchor.d.ts +21 -1
- package/dist/in-store/resolve-anchor.d.ts.map +1 -1
- package/dist/in-store/resolve-anchor.js +6 -2
- package/dist/in-store/resolve-anchor.js.map +1 -1
- package/dist/in-store/resolve-host.d.ts +5 -0
- package/dist/in-store/resolve-host.d.ts.map +1 -0
- package/dist/in-store/resolve-host.js +249 -0
- package/dist/in-store/resolve-host.js.map +1 -0
- package/dist/in-store/resolve-relations.d.ts +23 -0
- package/dist/in-store/resolve-relations.d.ts.map +1 -0
- package/dist/in-store/resolve-relations.js +57 -0
- package/dist/in-store/resolve-relations.js.map +1 -0
- package/dist/in-store/resolve-source.d.ts.map +1 -1
- package/dist/in-store/resolve-source.js +20 -4
- package/dist/in-store/resolve-source.js.map +1 -1
- package/dist/in-store/schema-attributes.d.ts +28 -0
- package/dist/in-store/schema-attributes.d.ts.map +1 -0
- package/dist/in-store/schema-attributes.js +95 -0
- package/dist/in-store/schema-attributes.js.map +1 -0
- package/dist/in-store/spatial-zone.d.ts.map +1 -1
- package/dist/in-store/spatial-zone.js +5 -5
- package/dist/in-store/spatial-zone.js.map +1 -1
- package/dist/in-store/wall.d.ts.map +1 -1
- package/dist/in-store/wall.js +4 -14
- package/dist/in-store/wall.js.map +1 -1
- package/dist/in-store/window.d.ts +7 -0
- package/dist/in-store/window.d.ts.map +1 -1
- package/dist/in-store/window.js +24 -17
- package/dist/in-store/window.js.map +1 -1
- package/dist/index.d.ts +12 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/landxml/cant-superelevation.d.ts +28 -0
- package/dist/landxml/cant-superelevation.d.ts.map +1 -0
- package/dist/landxml/cant-superelevation.js +31 -0
- package/dist/landxml/cant-superelevation.js.map +1 -0
- package/dist/landxml/landxml-to-ifc.d.ts +8 -2
- package/dist/landxml/landxml-to-ifc.d.ts.map +1 -1
- package/dist/landxml/landxml-to-ifc.js +42 -4
- package/dist/landxml/landxml-to-ifc.js.map +1 -1
- package/dist/landxml/profile-geometry.d.ts +50 -0
- package/dist/landxml/profile-geometry.d.ts.map +1 -0
- package/dist/landxml/profile-geometry.js +221 -0
- package/dist/landxml/profile-geometry.js.map +1 -0
- package/dist/landxml/profile-mapping.d.ts +36 -0
- package/dist/landxml/profile-mapping.d.ts.map +1 -0
- package/dist/landxml/profile-mapping.js +181 -0
- package/dist/landxml/profile-mapping.js.map +1 -0
- package/dist/landxml/profile-record.d.ts +46 -0
- package/dist/landxml/profile-record.d.ts.map +1 -0
- package/dist/landxml/profile-record.js +38 -0
- package/dist/landxml/profile-record.js.map +1 -0
- package/dist/landxml/refusals.d.ts +5 -1
- package/dist/landxml/refusals.d.ts.map +1 -1
- package/dist/landxml/refusals.js +36 -8
- package/dist/landxml/refusals.js.map +1 -1
- package/dist/landxml/result-types.d.ts +49 -0
- package/dist/landxml/result-types.d.ts.map +1 -1
- package/dist/landxml/station-equations.d.ts +69 -0
- package/dist/landxml/station-equations.d.ts.map +1 -0
- package/dist/landxml/station-equations.js +140 -0
- package/dist/landxml/station-equations.js.map +1 -0
- package/dist/landxml/writers.d.ts +7 -1
- package/dist/landxml/writers.d.ts.map +1 -1
- package/dist/landxml/writers.js +22 -3
- package/dist/landxml/writers.js.map +1 -1
- package/dist/types.d.ts +13 -9
- package/dist/types.d.ts.map +1 -1
- package/package.json +8 -7
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wall-hosted IfcDoor / IfcWindow: cut an IfcOpeningElement into the host
|
|
3
|
+
* wall (`addOpeningToStore`), then place the filling in it and link the two
|
|
4
|
+
* with IfcRelFillsElement — the in-store counterpart of
|
|
5
|
+
* `IfcCreator.addIfcWallDoor` / `addIfcWallWindow`.
|
|
6
|
+
*
|
|
7
|
+
* The filling's ObjectPlacement is relative to the OPENING's placement, so
|
|
8
|
+
* moving the opening along its host carries the door or window with it. Its
|
|
9
|
+
* own frame is the conventional one for a door or window: X along the wall,
|
|
10
|
+
* Y across the wall, Z up. The leaf is `Width × FrameThickness` centred in
|
|
11
|
+
* the wall's body and extruded up by `Height`. The filling is contained in
|
|
12
|
+
* the host's storey; the opening, per IFC, is not.
|
|
13
|
+
*/
|
|
14
|
+
import type { StoreEditor } from '@ifc-lite/mutations';
|
|
15
|
+
import { type HostAnchor } from './anchor.js';
|
|
16
|
+
import { type OpeningBuildResult } from './opening.js';
|
|
17
|
+
import { type DoorInStoreParams } from './door.js';
|
|
18
|
+
import { type WindowInStoreParams } from './window.js';
|
|
19
|
+
interface HostedPlacementParams {
|
|
20
|
+
/** Distance along the host wall's local X from its placement origin to the filling's centre (metres). */
|
|
21
|
+
Offset: number;
|
|
22
|
+
/** Length of the opening cut through the wall (metres). Defaults to the wall's body thickness + 2 × 50 mm. */
|
|
23
|
+
CutDepth?: number;
|
|
24
|
+
}
|
|
25
|
+
export interface HostedDoorInStoreParams extends Omit<DoorInStoreParams, 'Position'>, HostedPlacementParams {
|
|
26
|
+
/** Height of the door's bottom above the wall's placement origin (metres). Defaults to 0. */
|
|
27
|
+
Sill?: number;
|
|
28
|
+
}
|
|
29
|
+
export interface HostedWindowInStoreParams extends Omit<WindowInStoreParams, 'Position'>, HostedPlacementParams {
|
|
30
|
+
/** Height of the window's bottom edge above the wall's placement origin (metres). */
|
|
31
|
+
Sill: number;
|
|
32
|
+
}
|
|
33
|
+
export interface HostedFillBuildResult {
|
|
34
|
+
/** The IfcDoor or IfcWindow. */
|
|
35
|
+
fillingId: number;
|
|
36
|
+
placementId: number;
|
|
37
|
+
profileId: number;
|
|
38
|
+
solidId: number;
|
|
39
|
+
shapeRepId: number;
|
|
40
|
+
productShapeId: number;
|
|
41
|
+
relContainedId: number;
|
|
42
|
+
relFillsId: number;
|
|
43
|
+
opening: OpeningBuildResult;
|
|
44
|
+
}
|
|
45
|
+
export declare function addHostedDoorToStore(editor: StoreEditor, host: HostAnchor, params: HostedDoorInStoreParams): HostedFillBuildResult;
|
|
46
|
+
export declare function addHostedWindowToStore(editor: StoreEditor, host: HostAnchor, params: HostedWindowInStoreParams): HostedFillBuildResult;
|
|
47
|
+
export {};
|
|
48
|
+
//# sourceMappingURL=hosted-fill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hosted-fill.d.ts","sourceRoot":"","sources":["../../src/in-store/hosted-fill.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAW9D,OAAO,EAAqB,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACtE,OAAO,EAAuB,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE5E,UAAU,qBAAqB;IAC7B,yGAAyG;IACzG,MAAM,EAAE,MAAM,CAAC;IACf,8GAA8G;IAC9G,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,EAAE,qBAAqB;IACzG,6FAA6F;IAC7F,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,yBAA0B,SAAQ,IAAI,CAAC,mBAAmB,EAAE,UAAU,CAAC,EAAE,qBAAqB;IAC7G,qFAAqF;IACrF,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,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;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,kBAAkB,CAAC;CAC7B;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,uBAAuB,GAC9B,qBAAqB,CAEvB;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,yBAAyB,GAChC,qBAAqB,CAEvB"}
|
|
@@ -0,0 +1,58 @@
|
|
|
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 { generateIfcGuid } from '@ifc-lite/encoding';
|
|
5
|
+
import { toNativeLength } from './anchor.js';
|
|
6
|
+
import { assertPositiveFinite, emitBodyRepresentation, emitExtrudedSolid, emitLocalPlacement, emitRectangleProfile, emitRelContainedInSpatialStructure, ifcElementHeader, ownerHistoryRef, } from './_emit-helpers.js';
|
|
7
|
+
import { addOpeningToStore } from './opening.js';
|
|
8
|
+
import { doorAttributeTail } from './door.js';
|
|
9
|
+
import { windowAttributeTail } from './window.js';
|
|
10
|
+
export function addHostedDoorToStore(editor, host, params) {
|
|
11
|
+
return addHostedFill(editor, host, 'IfcDoor', params.Sill ?? 0, params, (native) => doorAttributeTail(host.schema, { ...params, ...native }));
|
|
12
|
+
}
|
|
13
|
+
export function addHostedWindowToStore(editor, host, params) {
|
|
14
|
+
return addHostedFill(editor, host, 'IfcWindow', params.Sill, params, (native) => windowAttributeTail(host.schema, { ...params, ...native }));
|
|
15
|
+
}
|
|
16
|
+
function addHostedFill(editor, host, type, sill, params, tail) {
|
|
17
|
+
const op = type === 'IfcDoor' ? 'addHostedDoorToStore' : 'addHostedWindowToStore';
|
|
18
|
+
if (host.hostKind !== 'wall')
|
|
19
|
+
throw new Error(`${op}: host #${host.hostId} is a ${host.hostKind}; doors and windows are hosted in walls`);
|
|
20
|
+
assertPositiveFinite([params.Width, params.Height], `${op}: Width and Height must be positive`);
|
|
21
|
+
const frameThickness = params.FrameThickness ?? 0.05;
|
|
22
|
+
assertPositiveFinite([frameThickness], `${op}: FrameThickness must be positive`);
|
|
23
|
+
if (!Number.isFinite(params.Offset) || !Number.isFinite(sill))
|
|
24
|
+
throw new Error(`${op}: Offset and Sill must be finite`);
|
|
25
|
+
const label = type === 'IfcDoor' ? 'Door' : 'Window';
|
|
26
|
+
const opening = addOpeningToStore(editor, host, {
|
|
27
|
+
Offset: params.Offset,
|
|
28
|
+
Sill: sill,
|
|
29
|
+
Width: params.Width,
|
|
30
|
+
Height: params.Height,
|
|
31
|
+
CutDepth: params.CutDepth,
|
|
32
|
+
Name: `${params.Name ?? label} Opening`,
|
|
33
|
+
});
|
|
34
|
+
// The opening's frame is X = wall X, Y = wall Z, Z = wall -Y, with its
|
|
35
|
+
// origin on the cut's +Y face. Axis = opening Y and RefDirection = opening
|
|
36
|
+
// X turn that back into X along the wall, Z up; the origin moves half the
|
|
37
|
+
// cut into the wall, i.e. onto the body's centre plane.
|
|
38
|
+
const placementId = emitLocalPlacement(editor, opening.placementId, [0, 0, opening.cutDepth / 2], [0, 1, 0], [1, 0, 0]);
|
|
39
|
+
const width = toNativeLength(host, params.Width);
|
|
40
|
+
const height = toNativeLength(host, params.Height);
|
|
41
|
+
const profileId = emitRectangleProfile(editor, width, toNativeLength(host, frameThickness));
|
|
42
|
+
const solidId = emitExtrudedSolid(editor, profileId, height);
|
|
43
|
+
const { shapeRepId, productShapeId } = emitBodyRepresentation(editor, host.bodyContextId, solidId);
|
|
44
|
+
const attrs = ifcElementHeader(host.ownerHistoryId, placementId, productShapeId, params, label, host.guidRandom);
|
|
45
|
+
attrs.push(...tail({ Width: width, Height: height }));
|
|
46
|
+
const fillingId = editor.addEntity(type, attrs).expressId;
|
|
47
|
+
const relFillsId = editor.addEntity('IfcRelFillsElement', [
|
|
48
|
+
generateIfcGuid(host.guidRandom),
|
|
49
|
+
ownerHistoryRef(host.ownerHistoryId),
|
|
50
|
+
null,
|
|
51
|
+
null,
|
|
52
|
+
`#${opening.openingId}`,
|
|
53
|
+
`#${fillingId}`,
|
|
54
|
+
]).expressId;
|
|
55
|
+
const relContainedId = emitRelContainedInSpatialStructure(editor, host.ownerHistoryId, fillingId, host.storeyId, host.guidRandom);
|
|
56
|
+
return { fillingId, placementId, profileId, solidId, shapeRepId, productShapeId, relContainedId, relFillsId, opening };
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=hosted-fill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hosted-fill.js","sourceRoot":"","sources":["../../src/in-store/hosted-fill.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { StoreEditor } from '@ifc-lite/mutations';
|
|
2
|
+
import { type OneToManyResult } from './relate.js';
|
|
3
|
+
import type { AuthoringAnchor } from './element-type.js';
|
|
4
|
+
import type { ExistingRelatedList } from './cost.js';
|
|
5
|
+
export interface MaterialInStoreParams {
|
|
6
|
+
Name: string;
|
|
7
|
+
/** IFC4+ only. */
|
|
8
|
+
Description?: string;
|
|
9
|
+
/** IFC4+ only, e.g. 'concrete', 'insulation'. */
|
|
10
|
+
Category?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface MaterialLayerInStoreParams {
|
|
13
|
+
/** The layer's IfcMaterial. Optional in the schema (an air gap has none). */
|
|
14
|
+
Material?: number;
|
|
15
|
+
/** Metres. Zero is allowed (IfcNonNegativeLengthMeasure). */
|
|
16
|
+
LayerThickness: number;
|
|
17
|
+
IsVentilated?: boolean;
|
|
18
|
+
/** IFC4+ only. */
|
|
19
|
+
Name?: string;
|
|
20
|
+
Description?: string;
|
|
21
|
+
Category?: string;
|
|
22
|
+
Priority?: number;
|
|
23
|
+
}
|
|
24
|
+
export interface MaterialLayerSetInStoreParams {
|
|
25
|
+
/** Outermost first, in the order the layers are stacked along the usage direction. */
|
|
26
|
+
MaterialLayers: MaterialLayerInStoreParams[];
|
|
27
|
+
LayerSetName?: string;
|
|
28
|
+
/** IFC4+ only. */
|
|
29
|
+
Description?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface MaterialLayerSetBuildResult {
|
|
32
|
+
layerSetId: number;
|
|
33
|
+
layerIds: number[];
|
|
34
|
+
}
|
|
35
|
+
export interface MaterialLayerSetUsageInStoreParams {
|
|
36
|
+
ForLayerSet: number;
|
|
37
|
+
/** Defaults to 'AXIS2' (across a wall); use 'AXIS3' for slabs. */
|
|
38
|
+
LayerSetDirection?: 'AXIS1' | 'AXIS2' | 'AXIS3';
|
|
39
|
+
/** Defaults to 'POSITIVE'. */
|
|
40
|
+
DirectionSense?: 'POSITIVE' | 'NEGATIVE';
|
|
41
|
+
/** Metres from the reference line to the first layer, e.g. -thickness/2 for a centred wall. */
|
|
42
|
+
OffsetFromReferenceLine: number;
|
|
43
|
+
/** IFC4+ only. */
|
|
44
|
+
ReferenceExtent?: number;
|
|
45
|
+
}
|
|
46
|
+
export declare function addMaterialToStore(editor: StoreEditor, anchor: AuthoringAnchor, params: MaterialInStoreParams): {
|
|
47
|
+
materialId: number;
|
|
48
|
+
};
|
|
49
|
+
export declare function addMaterialLayerSetToStore(editor: StoreEditor, anchor: AuthoringAnchor, params: MaterialLayerSetInStoreParams): MaterialLayerSetBuildResult;
|
|
50
|
+
export declare function addMaterialLayerSetUsageToStore(editor: StoreEditor, anchor: AuthoringAnchor, params: MaterialLayerSetUsageInStoreParams): {
|
|
51
|
+
usageId: number;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Associate `materialId` (an IfcMaterial, IfcMaterialLayerSet,
|
|
55
|
+
* IfcMaterialLayerSetUsage, or any other IfcMaterialSelect) with `objectIds`
|
|
56
|
+
* through IfcRelAssociatesMaterial. `existing` is every
|
|
57
|
+
* IfcRelAssociatesMaterial in the model: the material's own relationship is
|
|
58
|
+
* extended, and an object associated with a different material leaves that
|
|
59
|
+
* association first.
|
|
60
|
+
*/
|
|
61
|
+
export declare function assignMaterialInStore(editor: StoreEditor, anchor: AuthoringAnchor, materialId: number, objectIds: readonly number[], existing: readonly ExistingRelatedList[]): OneToManyResult;
|
|
62
|
+
//# sourceMappingURL=material.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"material.d.ts","sourceRoot":"","sources":["../../src/in-store/material.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIvD,OAAO,EAA0B,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAIrD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,6BAA6B;IAC5C,sFAAsF;IACtF,cAAc,EAAE,0BAA0B,EAAE,CAAC;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,2BAA2B;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,kCAAkC;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IAChD,8BAA8B;IAC9B,cAAc,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACzC,+FAA+F;IAC/F,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAMD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,qBAAqB,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAKtI;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,6BAA6B,GACpC,2BAA2B,CAiC7B;AAED,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,kCAAkC,GACzC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAcrB;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,QAAQ,EAAE,SAAS,mBAAmB,EAAE,GACvC,eAAe,CAejB"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/**
|
|
5
|
+
* Materials on a loaded model (#6232): IfcMaterial, IfcMaterialLayer +
|
|
6
|
+
* IfcMaterialLayerSet, IfcMaterialLayerSetUsage, and IfcRelAssociatesMaterial.
|
|
7
|
+
*
|
|
8
|
+
* The IFC4 practice for layered walls and slabs is to associate the
|
|
9
|
+
* IfcMaterialLayerSet with the type (`assignMaterialInStore(set, [typeId])`)
|
|
10
|
+
* and an IfcMaterialLayerSetUsage of that set with each occurrence, which
|
|
11
|
+
* says how the layers sit relative to the occurrence's reference line. For a
|
|
12
|
+
* wall that is `LayerSetDirection: 'AXIS2'` (across the wall); for a slab,
|
|
13
|
+
* `'AXIS3'` (up). Layer thicknesses and offsets are metres, converted to the
|
|
14
|
+
* file's native length unit.
|
|
15
|
+
*/
|
|
16
|
+
import { generateIfcGuid } from '@ifc-lite/encoding';
|
|
17
|
+
import { toNativeLength } from './anchor.js';
|
|
18
|
+
import { assertPositiveFinite, ownerHistoryRef } from './_emit-helpers.js';
|
|
19
|
+
import { conformsTo, schemaAttributes, schemaRegistry } from './schema-attributes.js';
|
|
20
|
+
import { relateOneToManyInStore } from './relate.js';
|
|
21
|
+
function add(editor, type, attrs) {
|
|
22
|
+
return editor.addEntity(type, attrs).expressId;
|
|
23
|
+
}
|
|
24
|
+
export function addMaterialToStore(editor, anchor, params) {
|
|
25
|
+
const op = 'addMaterialToStore';
|
|
26
|
+
if (typeof params.Name !== 'string' || params.Name.length === 0)
|
|
27
|
+
throw new Error(`${op}: Name is required`);
|
|
28
|
+
const registry = schemaRegistry(anchor.schema, op);
|
|
29
|
+
return { materialId: add(editor, 'IfcMaterial', schemaAttributes(registry, 'IfcMaterial', { ...params }, op)) };
|
|
30
|
+
}
|
|
31
|
+
export function addMaterialLayerSetToStore(editor, anchor, params) {
|
|
32
|
+
const op = 'addMaterialLayerSetToStore';
|
|
33
|
+
if (!Array.isArray(params.MaterialLayers) || params.MaterialLayers.length === 0) {
|
|
34
|
+
throw new Error(`${op}: MaterialLayers needs at least one layer`);
|
|
35
|
+
}
|
|
36
|
+
const registry = schemaRegistry(anchor.schema, op);
|
|
37
|
+
// Validate every layer before writing any, so a bad layer leaves nothing behind.
|
|
38
|
+
params.MaterialLayers.forEach((layer, index) => {
|
|
39
|
+
if (!Number.isFinite(layer.LayerThickness) || layer.LayerThickness < 0) {
|
|
40
|
+
throw new Error(`${op}: MaterialLayers[${index}].LayerThickness must be a finite number >= 0`);
|
|
41
|
+
}
|
|
42
|
+
if (layer.Material === undefined)
|
|
43
|
+
return;
|
|
44
|
+
// IfcMaterialLayer.Material is an IfcMaterial, not any IfcMaterialSelect:
|
|
45
|
+
// a layer set or an element here writes a file other tools reject.
|
|
46
|
+
const type = editor.getEntityType(layer.Material);
|
|
47
|
+
if (!type || !conformsTo(registry, type, 'IfcMaterial')) {
|
|
48
|
+
throw new Error(`${op}: MaterialLayers[${index}].Material #${layer.Material} is ${type ? `an ${type}` : 'not a live entity'}, not an IfcMaterial`);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
const layerIds = params.MaterialLayers.map((layer) => {
|
|
52
|
+
const { Material, ...rest } = layer;
|
|
53
|
+
return add(editor, 'IfcMaterialLayer', schemaAttributes(registry, 'IfcMaterialLayer', {
|
|
54
|
+
...rest,
|
|
55
|
+
Material: Material === undefined ? undefined : `#${Material}`,
|
|
56
|
+
LayerThickness: toNativeLength(anchor, layer.LayerThickness),
|
|
57
|
+
}, op));
|
|
58
|
+
});
|
|
59
|
+
const layerSetId = add(editor, 'IfcMaterialLayerSet', schemaAttributes(registry, 'IfcMaterialLayerSet', {
|
|
60
|
+
MaterialLayers: layerIds.map((id) => `#${id}`),
|
|
61
|
+
LayerSetName: params.LayerSetName,
|
|
62
|
+
Description: params.Description,
|
|
63
|
+
}, op));
|
|
64
|
+
return { layerSetId, layerIds };
|
|
65
|
+
}
|
|
66
|
+
export function addMaterialLayerSetUsageToStore(editor, anchor, params) {
|
|
67
|
+
const op = 'addMaterialLayerSetUsageToStore';
|
|
68
|
+
if (!Number.isFinite(params.OffsetFromReferenceLine))
|
|
69
|
+
throw new Error(`${op}: OffsetFromReferenceLine must be finite`);
|
|
70
|
+
if (params.ReferenceExtent !== undefined)
|
|
71
|
+
assertPositiveFinite([params.ReferenceExtent], `${op}: ReferenceExtent must be positive`);
|
|
72
|
+
const registry = schemaRegistry(anchor.schema, op);
|
|
73
|
+
return {
|
|
74
|
+
usageId: add(editor, 'IfcMaterialLayerSetUsage', schemaAttributes(registry, 'IfcMaterialLayerSetUsage', {
|
|
75
|
+
ForLayerSet: `#${params.ForLayerSet}`,
|
|
76
|
+
LayerSetDirection: params.LayerSetDirection ?? 'AXIS2',
|
|
77
|
+
DirectionSense: params.DirectionSense ?? 'POSITIVE',
|
|
78
|
+
OffsetFromReferenceLine: toNativeLength(anchor, params.OffsetFromReferenceLine),
|
|
79
|
+
ReferenceExtent: params.ReferenceExtent === undefined ? undefined : toNativeLength(anchor, params.ReferenceExtent),
|
|
80
|
+
}, op)),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Associate `materialId` (an IfcMaterial, IfcMaterialLayerSet,
|
|
85
|
+
* IfcMaterialLayerSetUsage, or any other IfcMaterialSelect) with `objectIds`
|
|
86
|
+
* through IfcRelAssociatesMaterial. `existing` is every
|
|
87
|
+
* IfcRelAssociatesMaterial in the model: the material's own relationship is
|
|
88
|
+
* extended, and an object associated with a different material leaves that
|
|
89
|
+
* association first.
|
|
90
|
+
*/
|
|
91
|
+
export function assignMaterialInStore(editor, anchor, materialId, objectIds, existing) {
|
|
92
|
+
return relateOneToManyInStore(editor, {
|
|
93
|
+
relType: 'IfcRelAssociatesMaterial',
|
|
94
|
+
relatingId: materialId,
|
|
95
|
+
relatedIds: objectIds,
|
|
96
|
+
existing,
|
|
97
|
+
create: (related) => [
|
|
98
|
+
generateIfcGuid(anchor.guidRandom),
|
|
99
|
+
ownerHistoryRef(anchor.ownerHistoryId),
|
|
100
|
+
null,
|
|
101
|
+
null,
|
|
102
|
+
related,
|
|
103
|
+
`#${materialId}`,
|
|
104
|
+
],
|
|
105
|
+
}, 'assignMaterialInStore');
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=material.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"material.js","sourceRoot":"","sources":["../../src/in-store/material.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { StoreEditor } from '@ifc-lite/mutations';
|
|
2
|
+
import { type HostAnchor } from './anchor.js';
|
|
3
|
+
interface OpeningCommonParams {
|
|
4
|
+
/** Length of the cut through the host (metres). Defaults to the host's body thickness + 2 × 50 mm. */
|
|
5
|
+
CutDepth?: number;
|
|
6
|
+
Name?: string;
|
|
7
|
+
Description?: string;
|
|
8
|
+
ObjectType?: string;
|
|
9
|
+
Tag?: string;
|
|
10
|
+
/** Explicit GlobalId (22-char IFC GUID); generated when omitted. */
|
|
11
|
+
GlobalId?: string;
|
|
12
|
+
}
|
|
13
|
+
/** Opening in a wall, in the wall's own placement frame. */
|
|
14
|
+
export interface WallOpeningInStoreParams extends OpeningCommonParams {
|
|
15
|
+
/** Distance along the wall's local X axis from its placement origin to the opening centre (metres). */
|
|
16
|
+
Offset: number;
|
|
17
|
+
/** Height of the opening's bottom edge above the wall's placement origin (metres). Defaults to 0. */
|
|
18
|
+
Sill?: number;
|
|
19
|
+
Width: number;
|
|
20
|
+
Height: number;
|
|
21
|
+
}
|
|
22
|
+
/** Opening in a slab, in the slab's own placement frame. */
|
|
23
|
+
export interface SlabOpeningInStoreParams extends OpeningCommonParams {
|
|
24
|
+
/** Centre of the opening in the slab's local XY (metres). */
|
|
25
|
+
Position: [number, number];
|
|
26
|
+
/** Size along the slab's local X (metres). */
|
|
27
|
+
Width: number;
|
|
28
|
+
/** Size along the slab's local Y (metres). */
|
|
29
|
+
Depth: number;
|
|
30
|
+
}
|
|
31
|
+
export type OpeningInStoreParams = WallOpeningInStoreParams | SlabOpeningInStoreParams;
|
|
32
|
+
export interface OpeningBuildResult {
|
|
33
|
+
openingId: number;
|
|
34
|
+
placementId: number;
|
|
35
|
+
profileId: number;
|
|
36
|
+
solidId: number;
|
|
37
|
+
shapeRepId: number;
|
|
38
|
+
productShapeId: number;
|
|
39
|
+
relVoidsId: number;
|
|
40
|
+
/** Native-unit cut length actually emitted. */
|
|
41
|
+
cutDepth: number;
|
|
42
|
+
}
|
|
43
|
+
export declare function addOpeningToStore(editor: StoreEditor, host: HostAnchor, params: OpeningInStoreParams): OpeningBuildResult;
|
|
44
|
+
export {};
|
|
45
|
+
//# sourceMappingURL=opening.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opening.d.ts","sourceRoot":"","sources":["../../src/in-store/opening.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAc9D,UAAU,mBAAmB;IAC3B,sGAAsG;IACtG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,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,4DAA4D;AAC5D,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IACnE,uGAAuG;IACvG,MAAM,EAAE,MAAM,CAAC;IACf,qGAAqG;IACrG,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,4DAA4D;AAC5D,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IACnE,6DAA6D;IAC7D,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,oBAAoB,GAAG,wBAAwB,GAAG,wBAAwB,CAAC;AAEvF,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,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,UAAU,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,oBAAoB,GAC3B,kBAAkB,CAqBpB"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/**
|
|
5
|
+
* Anchored builder for IfcOpeningElement + IfcRelVoidsElement — a rectangular
|
|
6
|
+
* void cut into an existing wall or slab (the in-store counterpart of
|
|
7
|
+
* `IfcCreator`'s private `addWallOpening` / `addSlabOpening`).
|
|
8
|
+
*
|
|
9
|
+
* The opening is placed relative to the HOST's IfcLocalPlacement, so it moves
|
|
10
|
+
* with the host, and it is NOT contained in the storey: IFC places an opening
|
|
11
|
+
* in the spatial structure only through the element it voids.
|
|
12
|
+
*
|
|
13
|
+
* - wall host: the profile sits in the wall's XZ plane (X along the axis,
|
|
14
|
+
* Z up) and is extruded across the wall's local Y, centred on the wall's
|
|
15
|
+
* body, by `CutDepth` (default: body thickness plus 50 mm per side)
|
|
16
|
+
* - slab host: the profile sits in the slab's XY plane and is extruded along
|
|
17
|
+
* +Z from 50 mm below the body to 50 mm above it
|
|
18
|
+
*
|
|
19
|
+
* All params are metres, converted to the file's native unit on emit.
|
|
20
|
+
*/
|
|
21
|
+
import { generateIfcGuid } from '@ifc-lite/encoding';
|
|
22
|
+
import { toNativeLength } from './anchor.js';
|
|
23
|
+
import { assertPositiveFinite, emitBodyRepresentation, emitExtrudedSolid, emitLocalPlacement, emitRectangleProfile, ifcElementHeader, ownerHistoryRef, } from './_emit-helpers.js';
|
|
24
|
+
/** Metres the default cut overshoots each face of the host, so no skin survives. */
|
|
25
|
+
const CUT_CLEARANCE_M = 0.05;
|
|
26
|
+
export function addOpeningToStore(editor, host, params) {
|
|
27
|
+
const geometry = host.hostKind === 'wall'
|
|
28
|
+
? wallOpeningGeometry(editor, host, params)
|
|
29
|
+
: slabOpeningGeometry(editor, host, params);
|
|
30
|
+
const { shapeRepId, productShapeId } = emitBodyRepresentation(editor, host.bodyContextId, geometry.solidId);
|
|
31
|
+
const attrs = ifcElementHeader(host.ownerHistoryId, geometry.placementId, productShapeId, params, 'Opening', host.guidRandom);
|
|
32
|
+
// IfcOpeningElement.PredefinedType exists from IFC4 on (IFC4X3 keeps it).
|
|
33
|
+
if ((host.schema ?? 'IFC4') !== 'IFC2X3')
|
|
34
|
+
attrs.push('.OPENING.');
|
|
35
|
+
const openingId = editor.addEntity('IfcOpeningElement', attrs).expressId;
|
|
36
|
+
const relVoidsId = editor.addEntity('IfcRelVoidsElement', [
|
|
37
|
+
generateIfcGuid(host.guidRandom),
|
|
38
|
+
ownerHistoryRef(host.ownerHistoryId),
|
|
39
|
+
null,
|
|
40
|
+
null,
|
|
41
|
+
`#${host.hostId}`,
|
|
42
|
+
`#${openingId}`,
|
|
43
|
+
]).expressId;
|
|
44
|
+
return { openingId, shapeRepId, productShapeId, relVoidsId, ...geometry };
|
|
45
|
+
}
|
|
46
|
+
/** Native-unit cut depth: the caller's, or the host thickness plus clearance. Never shallower than the host. */
|
|
47
|
+
function resolveCutDepth(host, thickness, requested, op) {
|
|
48
|
+
if (requested !== undefined) {
|
|
49
|
+
assertPositiveFinite([requested], `${op}: CutDepth must be positive`);
|
|
50
|
+
const cut = toNativeLength(host, requested);
|
|
51
|
+
if (thickness !== null && cut < thickness) {
|
|
52
|
+
throw new Error(`${op}: CutDepth ${requested} is shallower than the host #${host.hostId} body; the opening would not cut through`);
|
|
53
|
+
}
|
|
54
|
+
return cut;
|
|
55
|
+
}
|
|
56
|
+
if (thickness === null) {
|
|
57
|
+
throw new Error(`${op}: cannot read the thickness of host #${host.hostId} from its Body geometry; pass CutDepth`);
|
|
58
|
+
}
|
|
59
|
+
return thickness + 2 * toNativeLength(host, CUT_CLEARANCE_M);
|
|
60
|
+
}
|
|
61
|
+
function wallOpeningGeometry(editor, host, params) {
|
|
62
|
+
const op = 'addOpeningToStore';
|
|
63
|
+
if (!('Offset' in params))
|
|
64
|
+
throw new Error(`${op}: host #${host.hostId} is a wall; pass Offset/Width/Height (wall opening params)`);
|
|
65
|
+
assertPositiveFinite([params.Width, params.Height], `${op}: Width and Height must be positive`);
|
|
66
|
+
const sill = params.Sill ?? 0;
|
|
67
|
+
if (!Number.isFinite(params.Offset) || !Number.isFinite(sill))
|
|
68
|
+
throw new Error(`${op}: Offset and Sill must be finite`);
|
|
69
|
+
const bounds = host.hostBounds;
|
|
70
|
+
const thickness = bounds ? bounds.max[1] - bounds.min[1] : null;
|
|
71
|
+
const cutDepth = resolveCutDepth(host, thickness, params.CutDepth, op);
|
|
72
|
+
const centreY = bounds ? (bounds.min[1] + bounds.max[1]) / 2 : 0;
|
|
73
|
+
const width = toNativeLength(host, params.Width);
|
|
74
|
+
const height = toNativeLength(host, params.Height);
|
|
75
|
+
// Local Z (extrusion) = wall -Y, local X = wall X, so local Y = wall Z (up)
|
|
76
|
+
// and the profile is drawn as Width × Height in the wall's elevation. The
|
|
77
|
+
// origin sits on the +Y side so the extrusion runs through the body.
|
|
78
|
+
const placementId = emitLocalPlacement(editor, host.hostPlacementId, [toNativeLength(host, params.Offset), centreY + cutDepth / 2, toNativeLength(host, sill)], [0, -1, 0], [1, 0, 0]);
|
|
79
|
+
const profileId = emitRectangleProfile(editor, width, height, 0, height / 2);
|
|
80
|
+
const solidId = emitExtrudedSolid(editor, profileId, cutDepth);
|
|
81
|
+
return { placementId, profileId, solidId, cutDepth };
|
|
82
|
+
}
|
|
83
|
+
function slabOpeningGeometry(editor, host, params) {
|
|
84
|
+
const op = 'addOpeningToStore';
|
|
85
|
+
if (!('Position' in params))
|
|
86
|
+
throw new Error(`${op}: host #${host.hostId} is a slab; pass Position/Width/Depth (slab opening params)`);
|
|
87
|
+
assertPositiveFinite([params.Width, params.Depth], `${op}: Width and Depth must be positive`);
|
|
88
|
+
if (!params.Position.every(Number.isFinite))
|
|
89
|
+
throw new Error(`${op}: Position must be finite`);
|
|
90
|
+
const bounds = host.hostBounds;
|
|
91
|
+
const thickness = bounds ? bounds.max[2] - bounds.min[2] : null;
|
|
92
|
+
const cutDepth = resolveCutDepth(host, thickness, params.CutDepth, op);
|
|
93
|
+
// Centre the cut on the body so the clearance is split between both faces.
|
|
94
|
+
const centreZ = bounds ? (bounds.min[2] + bounds.max[2]) / 2 : cutDepth / 2 - toNativeLength(host, CUT_CLEARANCE_M);
|
|
95
|
+
const placementId = emitLocalPlacement(editor, host.hostPlacementId, [
|
|
96
|
+
toNativeLength(host, params.Position[0]),
|
|
97
|
+
toNativeLength(host, params.Position[1]),
|
|
98
|
+
centreZ - cutDepth / 2,
|
|
99
|
+
]);
|
|
100
|
+
const profileId = emitRectangleProfile(editor, toNativeLength(host, params.Width), toNativeLength(host, params.Depth));
|
|
101
|
+
const solidId = emitExtrudedSolid(editor, profileId, cutDepth);
|
|
102
|
+
return { placementId, profileId, solidId, cutDepth };
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=opening.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opening.js","sourceRoot":"","sources":["../../src/in-store/opening.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"placement-frame.d.ts","sourceRoot":"","sources":["../../src/in-store/placement-frame.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"placement-frame.d.ts","sourceRoot":"","sources":["../../src/in-store/placement-frame.ts"],"names":[],"mappings":"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"}
|
|
@@ -226,19 +226,34 @@ export function applyFrame(frame, local) {
|
|
|
226
226
|
];
|
|
227
227
|
}
|
|
228
228
|
export function readEntity(store, extractor, overlay, expressId) {
|
|
229
|
+
if (overlay?.isDeleted?.(expressId))
|
|
230
|
+
return null;
|
|
231
|
+
// Source bytes provide the unchanged record; positional edits are applied
|
|
232
|
+
// below so placement walks follow the current references (#5249).
|
|
233
|
+
// @raw-entity-enumeration-ok Single source byte lookup with overlay tombstones, creations and edits applied here.
|
|
229
234
|
const ref = store.entityIndex.byId.get(expressId);
|
|
235
|
+
let entity = null;
|
|
230
236
|
if (ref && ref.byteLength > 0 && ref.byteOffset >= 0) {
|
|
231
|
-
|
|
237
|
+
entity = extractor.extractEntity(ref);
|
|
232
238
|
}
|
|
233
239
|
// Overlay-only entity: fall back to the overlay reader.
|
|
234
|
-
if (overlay) {
|
|
240
|
+
if (!entity && overlay) {
|
|
235
241
|
for (const ent of overlay.getNewEntities()) {
|
|
236
242
|
if (ent.expressId === expressId) {
|
|
237
|
-
|
|
243
|
+
entity = { type: ent.type, attributes: ent.attributes };
|
|
244
|
+
break;
|
|
238
245
|
}
|
|
239
246
|
}
|
|
240
247
|
}
|
|
241
|
-
|
|
248
|
+
if (!entity)
|
|
249
|
+
return null;
|
|
250
|
+
const edits = overlay?.getPositionalMutationsForEntity?.(expressId);
|
|
251
|
+
if (!edits?.size)
|
|
252
|
+
return entity;
|
|
253
|
+
const attributes = [...entity.attributes];
|
|
254
|
+
for (const [index, value] of edits)
|
|
255
|
+
attributes[index] = value;
|
|
256
|
+
return { ...entity, attributes };
|
|
242
257
|
}
|
|
243
258
|
export function numericAttr(v) {
|
|
244
259
|
if (typeof v === 'number')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"placement-frame.js","sourceRoot":"","sources":["../../src/in-store/placement-frame.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"placement-frame.js","sourceRoot":"","sources":["../../src/in-store/placement-frame.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One-to-many relationships where an object belongs to at most one relating
|
|
3
|
+
* entity: IfcRelDefinesByType (one type per occurrence) and
|
|
4
|
+
* IfcRelAssociatesMaterial (one material association per object). Both keep
|
|
5
|
+
* `RelatedObjects` at slot 4 and the relating side at slot 5.
|
|
6
|
+
*
|
|
7
|
+
* Assigning moves each object: it leaves every other relationship of the same
|
|
8
|
+
* class (a relationship it empties is removed), then joins the relating
|
|
9
|
+
* entity's existing relationship, or a new one when there is none. Reading
|
|
10
|
+
* the existing relationships is the resolver's job (`readRelatedLists`), so
|
|
11
|
+
* this stays a pure write through the editor.
|
|
12
|
+
*/
|
|
13
|
+
import type { StoreEditor } from '@ifc-lite/mutations';
|
|
14
|
+
import type { ExistingRelatedList } from './cost.js';
|
|
15
|
+
export interface OneToManyResult {
|
|
16
|
+
/** The relationship the objects now belong to. */
|
|
17
|
+
relId: number;
|
|
18
|
+
/** True when `relId` was created by this call rather than extended. */
|
|
19
|
+
created: boolean;
|
|
20
|
+
/** Relationships the objects were moved out of (removed when emptied). */
|
|
21
|
+
detachedRelIds: number[];
|
|
22
|
+
}
|
|
23
|
+
export interface OneToManySpec {
|
|
24
|
+
relType: 'IfcRelDefinesByType' | 'IfcRelAssociatesMaterial';
|
|
25
|
+
relatingId: number;
|
|
26
|
+
relatedIds: readonly number[];
|
|
27
|
+
existing: readonly ExistingRelatedList[];
|
|
28
|
+
/** Full attribute list for a new relationship, given its RelatedObjects. */
|
|
29
|
+
create: (related: string[]) => unknown[];
|
|
30
|
+
}
|
|
31
|
+
export declare function relateOneToManyInStore(editor: StoreEditor, spec: OneToManySpec, op: string): OneToManyResult;
|
|
32
|
+
//# sourceMappingURL=relate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relate.d.ts","sourceRoot":"","sources":["../../src/in-store/relate.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAIrD,MAAM,WAAW,eAAe;IAC9B,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,OAAO,EAAE,OAAO,CAAC;IACjB,0EAA0E;IAC1E,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,qBAAqB,GAAG,0BAA0B,CAAC;IAC5D,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACzC,4EAA4E;IAC5E,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,OAAO,EAAE,CAAC;CAC1C;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,GAAG,eAAe,CA6B5G"}
|