brepjs-bim 0.1.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/LICENSE +191 -0
- package/README.md +100 -0
- package/dist/bcf/bcfRead.d.ts +11 -0
- package/dist/bcf/bcfTypes.d.ts +81 -0
- package/dist/bcf/bcfWrite.d.ts +14 -0
- package/dist/bcf/bcfXml.d.ts +34 -0
- package/dist/bcf/index.d.ts +3 -0
- package/dist/brepjs-bim.cjs +15935 -0
- package/dist/brepjs-bim.js +15822 -0
- package/dist/cobie/cobieExport.d.ts +20 -0
- package/dist/cobie/cobieTypes.d.ts +130 -0
- package/dist/cobie/index.d.ts +2 -0
- package/dist/elementFns/beamFns.d.ts +4 -0
- package/dist/elementFns/columnFns.d.ts +4 -0
- package/dist/elementFns/coveringFns.d.ts +4 -0
- package/dist/elementFns/curtainWallFns.d.ts +32 -0
- package/dist/elementFns/foundationFns.d.ts +5 -0
- package/dist/elementFns/openingFns.d.ts +4 -0
- package/dist/elementFns/profileFns.d.ts +5 -0
- package/dist/elementFns/railingFns.d.ts +4 -0
- package/dist/elementFns/rampFns.d.ts +14 -0
- package/dist/elementFns/roofFns.d.ts +4 -0
- package/dist/elementFns/slabFns.d.ts +4 -0
- package/dist/elementFns/slabOpeningFns.d.ts +4 -0
- package/dist/elementFns/spaceFns.d.ts +4 -0
- package/dist/elementFns/stairFns.d.ts +15 -0
- package/dist/elementFns/wallFns.d.ts +4 -0
- package/dist/errors/bimError.d.ts +39 -0
- package/dist/identity/guidDerivation.d.ts +25 -0
- package/dist/identity/ifcGuid.d.ts +7 -0
- package/dist/identity/localId.d.ts +10 -0
- package/dist/ids/idsCheck.d.ts +22 -0
- package/dist/ids/idsFacets.d.ts +21 -0
- package/dist/ids/idsParser.d.ts +20 -0
- package/dist/ids/idsTypes.d.ts +87 -0
- package/dist/ids/idsXml.d.ts +24 -0
- package/dist/ids/index.d.ts +3 -0
- package/dist/ifc-writer/assemblyWriter.d.ts +26 -0
- package/dist/ifc-writer/classificationWriter.d.ts +18 -0
- package/dist/ifc-writer/connectivityWriter.d.ts +16 -0
- package/dist/ifc-writer/coveringWriter.d.ts +12 -0
- package/dist/ifc-writer/curtainWallWriter.d.ts +23 -0
- package/dist/ifc-writer/entityWriter.d.ts +21 -0
- package/dist/ifc-writer/foundationWriter.d.ts +11 -0
- package/dist/ifc-writer/geometryWriter.d.ts +25 -0
- package/dist/ifc-writer/groupWriter.d.ts +19 -0
- package/dist/ifc-writer/headerWriter.d.ts +31 -0
- package/dist/ifc-writer/ifcWriter.d.ts +27 -0
- package/dist/ifc-writer/materialWriter.d.ts +39 -0
- package/dist/ifc-writer/openingWriter.d.ts +24 -0
- package/dist/ifc-writer/ownerHistoryWriter.d.ts +30 -0
- package/dist/ifc-writer/profileDefWriter.d.ts +3 -0
- package/dist/ifc-writer/proxyWriter.d.ts +17 -0
- package/dist/ifc-writer/psetWriter.d.ts +67 -0
- package/dist/ifc-writer/railingWriter.d.ts +11 -0
- package/dist/ifc-writer/relWriter.d.ts +4 -0
- package/dist/ifc-writer/roofWriter.d.ts +21 -0
- package/dist/ifc-writer/schemaVersion.d.ts +36 -0
- package/dist/ifc-writer/spaceWriter.d.ts +11 -0
- package/dist/ifc-writer/stairWriter.d.ts +49 -0
- package/dist/ifc-writer/styleWriter.d.ts +30 -0
- package/dist/ifc-writer/tessellationWriter.d.ts +42 -0
- package/dist/ifc-writer/typeWriter.d.ts +13 -0
- package/dist/import/dataRead.d.ts +65 -0
- package/dist/import/fromIfc.d.ts +24 -0
- package/dist/import/geometryRead.d.ts +41 -0
- package/dist/import/importedModel.d.ts +95 -0
- package/dist/import/placement.d.ts +89 -0
- package/dist/import/spatialTree.d.ts +35 -0
- package/dist/import/spfReader.d.ts +55 -0
- package/dist/index.d.ts +95 -0
- package/dist/model/bimModel.d.ts +151 -0
- package/dist/psets/psetTemplates.d.ts +41 -0
- package/dist/psets/qtoWeights.d.ts +32 -0
- package/dist/serialize/toIfc.d.ts +19 -0
- package/dist/specs/assemblySpec.d.ts +15 -0
- package/dist/specs/beamSpec.d.ts +34 -0
- package/dist/specs/columnSpec.d.ts +34 -0
- package/dist/specs/coveringSpec.d.ts +33 -0
- package/dist/specs/curtainWallSpec.d.ts +37 -0
- package/dist/specs/foundationSpec.d.ts +50 -0
- package/dist/specs/groupSpec.d.ts +27 -0
- package/dist/specs/materialSpec.d.ts +19 -0
- package/dist/specs/openingSpec.d.ts +42 -0
- package/dist/specs/profile.d.ts +108 -0
- package/dist/specs/profilesExtended.d.ts +86 -0
- package/dist/specs/proxySpec.d.ts +20 -0
- package/dist/specs/railingSpec.d.ts +32 -0
- package/dist/specs/rampSpec.d.ts +26 -0
- package/dist/specs/roofSpec.d.ts +32 -0
- package/dist/specs/slabSpec.d.ts +36 -0
- package/dist/specs/spaceSpec.d.ts +24 -0
- package/dist/specs/spatialSpec.d.ts +24 -0
- package/dist/specs/stairSpec.d.ts +24 -0
- package/dist/specs/styleSpec.d.ts +5 -0
- package/dist/specs/wallSpec.d.ts +33 -0
- package/dist/types/bimTypes.d.ts +49 -0
- package/dist/types/classificationTypes.d.ts +16 -0
- package/dist/types/materialTypes.d.ts +14 -0
- package/dist/types/relationships.d.ts +116 -0
- package/dist/units/units.d.ts +7 -0
- package/dist/validation/geometryValidity.d.ts +20 -0
- package/dist/validation/referentialIntegrity.d.ts +24 -0
- package/dist/validation/roundTrip.d.ts +36 -0
- package/dist/validation/schemaCheck.d.ts +14 -0
- package/dist/validation/severity.d.ts +18 -0
- package/package.json +42 -0
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { Result } from 'brepjs';
|
|
2
|
+
import { LocalId } from '../identity/localId.js';
|
|
3
|
+
import { BimError } from '../errors/bimError.js';
|
|
4
|
+
import { AnyBimElement, BimElement } from '../types/bimTypes.js';
|
|
5
|
+
import { BimRelationship } from '../types/relationships.js';
|
|
6
|
+
import { ClassificationRef } from '../types/classificationTypes.js';
|
|
7
|
+
import { WallSpec } from '../specs/wallSpec.js';
|
|
8
|
+
import { SlabSpec } from '../specs/slabSpec.js';
|
|
9
|
+
import { BeamSpec } from '../specs/beamSpec.js';
|
|
10
|
+
import { ColumnSpec } from '../specs/columnSpec.js';
|
|
11
|
+
import { DoorSpec, WindowSpec, SlabOpeningInput } from '../specs/openingSpec.js';
|
|
12
|
+
import { ProxySpec } from '../specs/proxySpec.js';
|
|
13
|
+
import { SpaceSpec } from '../specs/spaceSpec.js';
|
|
14
|
+
import { RoofSpec } from '../specs/roofSpec.js';
|
|
15
|
+
import { CurtainWallSpec } from '../specs/curtainWallSpec.js';
|
|
16
|
+
import { FootingSpec, PileSpec } from '../specs/foundationSpec.js';
|
|
17
|
+
import { StairSpec } from '../specs/stairSpec.js';
|
|
18
|
+
import { RampSpec } from '../specs/rampSpec.js';
|
|
19
|
+
import { RailingSpec } from '../specs/railingSpec.js';
|
|
20
|
+
import { CoveringSpec } from '../specs/coveringSpec.js';
|
|
21
|
+
import { ElementAssemblySpec } from '../specs/assemblySpec.js';
|
|
22
|
+
import { ZoneSpec, SystemSpec } from '../specs/groupSpec.js';
|
|
23
|
+
import { SurfaceStyleSpec } from '../ifc-writer/styleWriter.js';
|
|
24
|
+
import { ProjectSpec, SiteSpec, BuildingSpec, StoreySpec } from '../specs/spatialSpec.js';
|
|
25
|
+
export declare class BimModel {
|
|
26
|
+
#private;
|
|
27
|
+
init(spec: ProjectSpec): Result<LocalId, BimError>;
|
|
28
|
+
[Symbol.dispose](): void;
|
|
29
|
+
addSite(spec: SiteSpec): LocalId;
|
|
30
|
+
addBuilding(spec: BuildingSpec): LocalId;
|
|
31
|
+
addStorey(spec: StoreySpec): LocalId;
|
|
32
|
+
addWall(spec: WallSpec): Result<LocalId, BimError>;
|
|
33
|
+
addSlab(spec: SlabSpec): Result<LocalId, BimError>;
|
|
34
|
+
addBeam(spec: BeamSpec): Result<LocalId, BimError>;
|
|
35
|
+
addColumn(spec: ColumnSpec): Result<LocalId, BimError>;
|
|
36
|
+
addSpace(spec: SpaceSpec): Result<LocalId, BimError>;
|
|
37
|
+
addRoof(spec: RoofSpec): Result<LocalId, BimError>;
|
|
38
|
+
addCurtainWall(spec: CurtainWallSpec): Result<LocalId, BimError>;
|
|
39
|
+
addFooting(spec: FootingSpec): Result<LocalId, BimError>;
|
|
40
|
+
addPile(spec: PileSpec): Result<LocalId, BimError>;
|
|
41
|
+
/**
|
|
42
|
+
* Adds an IfcStair assembly. Geometry for each flight is built and written by
|
|
43
|
+
* the IFC layer from `spec.flights`; the STAIR element itself carries no solid
|
|
44
|
+
* (the assembly container's Representation is null, valid per IFC4).
|
|
45
|
+
*/
|
|
46
|
+
addStair(spec: StairSpec): Result<LocalId, BimError>;
|
|
47
|
+
/**
|
|
48
|
+
* Adds an IfcRamp assembly. Geometry for each flight is built and written by the
|
|
49
|
+
* IFC layer from `spec.flights`; the RAMP element carries no solid of its own.
|
|
50
|
+
*/
|
|
51
|
+
addRamp(spec: RampSpec): Result<LocalId, BimError>;
|
|
52
|
+
addRailing(spec: RailingSpec): Result<LocalId, BimError>;
|
|
53
|
+
/**
|
|
54
|
+
* Adds an IfcCovering. When `hostLocalId` is supplied, an
|
|
55
|
+
* IfcRelCoversBldgElements linking the covering to its host (e.g. a slab it
|
|
56
|
+
* finishes) is recorded for export.
|
|
57
|
+
*/
|
|
58
|
+
addCovering(spec: CoveringSpec, hostLocalId?: LocalId): Result<LocalId, BimError>;
|
|
59
|
+
/**
|
|
60
|
+
* Adds an IfcElementAssembly grouping container. The assembly has no geometry;
|
|
61
|
+
* attach parts with {@link aggregate} (IfcRelAggregates) or {@link nest}
|
|
62
|
+
* (IfcRelNests, order-preserving). Returns the assembly's localId.
|
|
63
|
+
*/
|
|
64
|
+
addElementAssembly(spec: ElementAssemblySpec): LocalId;
|
|
65
|
+
/**
|
|
66
|
+
* Adds an IfcZone grouping object (a thermal/fire/occupancy zone). The zone
|
|
67
|
+
* carries no geometry; attach members (spaces or other elements) with
|
|
68
|
+
* {@link assignToGroup}. Returns the zone's localId.
|
|
69
|
+
*/
|
|
70
|
+
addZone(spec: ZoneSpec): LocalId;
|
|
71
|
+
/**
|
|
72
|
+
* Adds an IfcSystem grouping object (an HVAC/electrical/plumbing system). The
|
|
73
|
+
* system carries no geometry; attach members with {@link assignToGroup}.
|
|
74
|
+
* Returns the system's localId.
|
|
75
|
+
*/
|
|
76
|
+
addSystem(spec: SystemSpec): LocalId;
|
|
77
|
+
/**
|
|
78
|
+
* Assigns members to a zone or system via IfcRelAssignsToGroup. Repeated calls
|
|
79
|
+
* for the same group extend the single relationship in call order. Returns the
|
|
80
|
+
* relationship's localId.
|
|
81
|
+
*/
|
|
82
|
+
assignToGroup(groupId: LocalId, memberIds: readonly LocalId[]): LocalId;
|
|
83
|
+
/**
|
|
84
|
+
* Records an order-preserving IfcRelNests decomposing `parentId` into
|
|
85
|
+
* `childId`. Unlike {@link aggregate}, repeated calls extend the same nesting
|
|
86
|
+
* relationship in call order.
|
|
87
|
+
*/
|
|
88
|
+
nest(parentId: LocalId, childId: LocalId): void;
|
|
89
|
+
/**
|
|
90
|
+
* Records an IfcRelConnectsElements logical connection between two elements.
|
|
91
|
+
* Returns the relationship's localId.
|
|
92
|
+
*/
|
|
93
|
+
connectElements(relatingElementLocalId: LocalId, relatedElementLocalId: LocalId, description?: string): LocalId;
|
|
94
|
+
/**
|
|
95
|
+
* Records an IfcRelConnectsPathElements connection between two path-based
|
|
96
|
+
* elements at the given path ends. Returns the relationship's localId.
|
|
97
|
+
*/
|
|
98
|
+
connectPathElements(relatingElementLocalId: LocalId, relatedElementLocalId: LocalId, relatingConnectionType: 'ATSTART' | 'ATEND' | 'ATPATH' | 'NOTDEFINED', relatedConnectionType: 'ATSTART' | 'ATEND' | 'ATPATH' | 'NOTDEFINED', description?: string): LocalId;
|
|
99
|
+
/**
|
|
100
|
+
* Assigns a surface style (colour + transparency) to an element. On export the
|
|
101
|
+
* style is emitted as IfcSurfaceStyle and linked to the element's body geometry
|
|
102
|
+
* via IfcStyledItem (currently honoured for railings and coverings, whose body
|
|
103
|
+
* representation item is surfaced by their geometry writers).
|
|
104
|
+
*/
|
|
105
|
+
setSurfaceStyle(elementLocalId: LocalId, style: SurfaceStyleSpec): void;
|
|
106
|
+
getSurfaceStyle(elementLocalId: LocalId): SurfaceStyleSpec | null;
|
|
107
|
+
/**
|
|
108
|
+
* Records an IfcRelSpaceBoundary between a space and one of its bounding
|
|
109
|
+
* building elements. Returns the relationship's localId.
|
|
110
|
+
*/
|
|
111
|
+
addSpaceBoundary(spaceLocalId: LocalId, elementLocalId: LocalId, connectionType?: 'PHYSICAL' | 'VIRTUAL' | 'NOTDEFINED'): LocalId;
|
|
112
|
+
/**
|
|
113
|
+
* Associates a classification reference with one or more elements, creating an
|
|
114
|
+
* IfcRelAssociatesClassification on export. Returns the relationship's localId.
|
|
115
|
+
*/
|
|
116
|
+
addClassification(ref: ClassificationRef, elementLocalIds: readonly LocalId[]): LocalId;
|
|
117
|
+
/**
|
|
118
|
+
* Adds an IfcBuildingElementProxy. The model TAKES OWNERSHIP of `spec.solid`
|
|
119
|
+
* and disposes it on model disposal; the caller must not dispose it (see
|
|
120
|
+
* {@link ProxySpec.solid}).
|
|
121
|
+
*/
|
|
122
|
+
addProxy(spec: ProxySpec): Result<LocalId, BimError>;
|
|
123
|
+
addDoor(spec: DoorSpec): Result<LocalId, BimError>;
|
|
124
|
+
addWindow(spec: WindowSpec): Result<LocalId, BimError>;
|
|
125
|
+
addSlabOpening(input: SlabOpeningInput): Result<LocalId, BimError>;
|
|
126
|
+
getDoors(): BimElement<'DOOR'>[];
|
|
127
|
+
getWindows(): BimElement<'WINDOW'>[];
|
|
128
|
+
aggregate(parentId: LocalId, childId: LocalId): void;
|
|
129
|
+
placeIn(elementId: LocalId, containerId: LocalId): void;
|
|
130
|
+
getProject(): BimElement<'PROJECT'> | null;
|
|
131
|
+
getElement(id: LocalId): AnyBimElement | null;
|
|
132
|
+
getWalls(): BimElement<'WALL'>[];
|
|
133
|
+
getSlabs(): BimElement<'SLAB'>[];
|
|
134
|
+
getBeams(): BimElement<'BEAM'>[];
|
|
135
|
+
getColumns(): BimElement<'COLUMN'>[];
|
|
136
|
+
getProxies(): BimElement<'PROXY'>[];
|
|
137
|
+
getSpaces(): BimElement<'SPACE'>[];
|
|
138
|
+
getRoofs(): BimElement<'ROOF'>[];
|
|
139
|
+
getCurtainWalls(): BimElement<'CURTAIN_WALL'>[];
|
|
140
|
+
getFootings(): BimElement<'FOOTING'>[];
|
|
141
|
+
getPiles(): BimElement<'PILE'>[];
|
|
142
|
+
getStairs(): BimElement<'STAIR'>[];
|
|
143
|
+
getRamps(): BimElement<'RAMP'>[];
|
|
144
|
+
getRailings(): BimElement<'RAILING'>[];
|
|
145
|
+
getCoverings(): BimElement<'COVERING'>[];
|
|
146
|
+
getElementAssemblies(): BimElement<'ELEMENT_ASSEMBLY'>[];
|
|
147
|
+
getZones(): BimElement<'ZONE'>[];
|
|
148
|
+
getSystems(): BimElement<'SYSTEM'>[];
|
|
149
|
+
getAllElements(): AnyBimElement[];
|
|
150
|
+
getAllRelationships(): BimRelationship[];
|
|
151
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IFC measure types used by the standard Pset_*Common property sets.
|
|
3
|
+
* Each maps to a web-ifc defined-type constant via {@link webIfcConstantFor}.
|
|
4
|
+
*/
|
|
5
|
+
export type PsetMeasureType = 'IFCBOOLEAN' | 'IFCIDENTIFIER' | 'IFCLABEL' | 'IFCTEXT' | 'IFCREAL' | 'IFCINTEGER' | 'IFCLENGTHMEASURE' | 'IFCPOSITIVELENGTHMEASURE' | 'IFCAREAMEASURE' | 'IFCVOLUMEMEASURE' | 'IFCRATIOMEASURE' | 'IFCPOSITIVERATIOMEASURE' | 'IFCPLANEANGLEMEASURE' | 'IFCTHERMALTRANSMITTANCEMEASURE';
|
|
6
|
+
/** The element categories that carry a standard Pset_*Common set. */
|
|
7
|
+
export type PsetCategory = 'WALL' | 'SLAB' | 'BEAM' | 'COLUMN' | 'DOOR' | 'WINDOW' | 'SPACE' | 'ROOF' | 'CURTAIN_WALL' | 'FOOTING' | 'PILE' | 'STAIR' | 'RAMP' | 'RAILING' | 'COVERING';
|
|
8
|
+
interface SingleValueTemplate {
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly measureType: PsetMeasureType;
|
|
11
|
+
readonly kind: 'single';
|
|
12
|
+
}
|
|
13
|
+
interface EnumeratedValueTemplate {
|
|
14
|
+
readonly name: string;
|
|
15
|
+
readonly measureType: PsetMeasureType;
|
|
16
|
+
readonly kind: 'enumerated';
|
|
17
|
+
/** Legal values for the enumeration, in canonical IFC order. */
|
|
18
|
+
readonly enumValues: readonly string[];
|
|
19
|
+
}
|
|
20
|
+
export type PsetPropertyTemplate = SingleValueTemplate | EnumeratedValueTemplate;
|
|
21
|
+
export interface PsetTemplate {
|
|
22
|
+
readonly psetName: string;
|
|
23
|
+
readonly properties: readonly PsetPropertyTemplate[];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Per-property IFC measure type for every property appearing in the standard
|
|
27
|
+
* Pset_*Common sets. The psetWriter consults this to emit the correct measure
|
|
28
|
+
* type instead of the legacy everything-is-IFCREAL heuristic. Properties absent
|
|
29
|
+
* from this table have no standard measure type and the writer falls back to its
|
|
30
|
+
* JS-type heuristic.
|
|
31
|
+
*/
|
|
32
|
+
export declare const PSET_PROPERTY_TYPE_TABLE: Readonly<Record<string, PsetMeasureType>>;
|
|
33
|
+
/** Standard Pset_*Common template keyed by element category. */
|
|
34
|
+
export declare const PSET_TEMPLATES: Readonly<Record<PsetCategory, PsetTemplate>>;
|
|
35
|
+
/** Looks up the standard IFC measure type for a Pset property name. */
|
|
36
|
+
export declare function measureTypeFor(propertyName: string): PsetMeasureType | undefined;
|
|
37
|
+
/** Resolves a measure type to its web-ifc defined-type constant. */
|
|
38
|
+
export declare function webIfcConstantFor(measureType: PsetMeasureType): number;
|
|
39
|
+
/** Returns the standard Pset_*Common template for an element category. */
|
|
40
|
+
export declare function templateFor(category: PsetCategory): PsetTemplate;
|
|
41
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Indicative material bulk densities in kg/m³, keyed by lowercase material name.
|
|
3
|
+
* These are nominal values for deriving an analytic IfcQuantityWeight from a
|
|
4
|
+
* solid volume; they are not authoritative engineering figures. Callers that
|
|
5
|
+
* need precise densities should pass an explicit value rather than relying on
|
|
6
|
+
* this lookup table.
|
|
7
|
+
*/
|
|
8
|
+
export declare const MATERIAL_DENSITY_KG_M3: Readonly<Record<string, number>>;
|
|
9
|
+
/** The subset of the IfcWriter surface needed to emit a single quantity line. */
|
|
10
|
+
export interface QtoWeightWriter {
|
|
11
|
+
nextId(): number;
|
|
12
|
+
mkType(type: number, value: unknown): Record<string, unknown>;
|
|
13
|
+
writeLine(entity: {
|
|
14
|
+
expressID: number;
|
|
15
|
+
} & Record<string, unknown>): number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Resolves a nominal bulk density (kg/m³) for a material name, case-insensitive.
|
|
19
|
+
* Returns `undefined` when the name is not in {@link MATERIAL_DENSITY_KG_M3}.
|
|
20
|
+
*/
|
|
21
|
+
export declare function densityFor(materialName: string): number | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* Computes mass in kilograms from a solid volume (m³) and a bulk density
|
|
24
|
+
* (kg/m³). This is the analytic basis for the emitted IfcQuantityWeight value.
|
|
25
|
+
*/
|
|
26
|
+
export declare function computeWeightKg(volumeM3: number, densityKgM3: number): number;
|
|
27
|
+
/**
|
|
28
|
+
* Emits an IfcQuantityWeight whose WeightValue is `volumeM3 * densityKgM3`
|
|
29
|
+
* expressed as an IfcMassMeasure (kg). Returns the express id of the written
|
|
30
|
+
* quantity; callers collect these into an IfcElementQuantity set.
|
|
31
|
+
*/
|
|
32
|
+
export declare function writeWeightQuantity(w: QtoWeightWriter, name: string, volumeM3: number, densityKgM3: number): number;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { BimModel } from '../model/bimModel.js';
|
|
2
|
+
import { BimModelMeta } from '../ifc-writer/headerWriter.js';
|
|
3
|
+
import { BimError } from '../errors/bimError.js';
|
|
4
|
+
import { Result } from 'brepjs';
|
|
5
|
+
import { ValidationReport } from '../validation/severity.js';
|
|
6
|
+
export declare function toIfc(model: BimModel, meta: BimModelMeta): Promise<Result<Uint8Array, BimError>>;
|
|
7
|
+
export interface ValidatedIfcResult {
|
|
8
|
+
readonly bytes: Uint8Array;
|
|
9
|
+
readonly report: ValidationReport;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Serializes the model to IFC and runs the full validation suite: a
|
|
13
|
+
* pre-serialization referential-integrity gate, then the post-save EXPRESS/STEP
|
|
14
|
+
* schema gate and the write→read→re-write round-trip check. Returns both the
|
|
15
|
+
* bytes and a combined report. A model that fails the integrity gate returns an
|
|
16
|
+
* INTEGRITY_FAILURE BimError without serializing (unlike plain {@link toIfc},
|
|
17
|
+
* which serializes unconditionally).
|
|
18
|
+
*/
|
|
19
|
+
export declare function toIfcValidated(model: BimModel, meta: BimModelMeta): Promise<Result<ValidatedIfcResult, BimError>>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BimError } from '../errors/bimError.js';
|
|
2
|
+
import { Result } from 'brepjs';
|
|
3
|
+
export type AssemblyPredefinedType = 'ACCESSORY_ASSEMBLY' | 'ARCH' | 'BEAM_GRID' | 'BRACED_FRAME' | 'GIRDER' | 'REINFORCEMENT_UNIT' | 'RIGID_FRAME' | 'SLAB_FIELD' | 'TRUSS' | 'USERDEFINED' | 'NOTDEFINED';
|
|
4
|
+
export type AssemblyPlace = 'SITE' | 'FACTORY' | 'NOTDEFINED';
|
|
5
|
+
/**
|
|
6
|
+
* A grouping container (IfcElementAssembly). Carries no geometry of its own;
|
|
7
|
+
* parts are attached via {@link BimModel.aggregate} (IfcRelAggregates) or
|
|
8
|
+
* {@link BimModel.nest} (IfcRelNests, order-preserving).
|
|
9
|
+
*/
|
|
10
|
+
export interface ElementAssemblySpec {
|
|
11
|
+
readonly name?: string | undefined;
|
|
12
|
+
readonly predefinedType?: AssemblyPredefinedType | undefined;
|
|
13
|
+
readonly assemblyPlace?: AssemblyPlace | undefined;
|
|
14
|
+
}
|
|
15
|
+
export declare function parseElementAssemblySpec(input: unknown): Result<ElementAssemblySpec, BimError>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { BimError } from '../errors/bimError.js';
|
|
2
|
+
import { Result } from 'brepjs';
|
|
3
|
+
import { Profile } from './profile.js';
|
|
4
|
+
import { MaterialLayer } from '../types/materialTypes.js';
|
|
5
|
+
import { ClassificationRef } from '../types/classificationTypes.js';
|
|
6
|
+
export type BeamPredefinedType = 'BEAM' | 'JOIST' | 'LINTEL' | 'HOLLOWCORE' | 'PURLIN' | 'RAFTER' | 'SPANDREL' | 'T_BEAM' | 'NOTDEFINED';
|
|
7
|
+
export interface BeamSpec {
|
|
8
|
+
readonly length: number;
|
|
9
|
+
readonly profile: Profile;
|
|
10
|
+
readonly origin: [number, number, number];
|
|
11
|
+
readonly axisX: [number, number, number];
|
|
12
|
+
readonly axisZ: [number, number, number];
|
|
13
|
+
readonly predefinedType?: BeamPredefinedType | undefined;
|
|
14
|
+
readonly materialName: string;
|
|
15
|
+
readonly isExternal?: boolean | undefined;
|
|
16
|
+
readonly loadBearing?: boolean | undefined;
|
|
17
|
+
readonly fireRating?: string | undefined;
|
|
18
|
+
readonly acousticRating?: string | undefined;
|
|
19
|
+
readonly thermalTransmittance?: number | undefined;
|
|
20
|
+
readonly status?: string | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* When present, the beam is associated via a layered IfcMaterialLayerSet built
|
|
23
|
+
* from these layers instead of the bare `materialName` IfcMaterial.
|
|
24
|
+
*/
|
|
25
|
+
readonly materialLayers?: readonly MaterialLayer[] | undefined;
|
|
26
|
+
readonly layerSetName?: string | undefined;
|
|
27
|
+
/** When present, associates the beam with an external classification code. */
|
|
28
|
+
readonly classification?: ClassificationRef | undefined;
|
|
29
|
+
readonly manufacturerName?: string | undefined;
|
|
30
|
+
readonly manufacturerModel?: string | undefined;
|
|
31
|
+
readonly manufacturerProductionYear?: number | undefined;
|
|
32
|
+
readonly customProperties?: Readonly<Record<string, Readonly<Record<string, string | number | boolean>>>> | undefined;
|
|
33
|
+
}
|
|
34
|
+
export declare function parseBeamSpec(input: unknown): Result<BeamSpec, BimError>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { BimError } from '../errors/bimError.js';
|
|
2
|
+
import { Result } from 'brepjs';
|
|
3
|
+
import { Profile } from './profile.js';
|
|
4
|
+
import { MaterialLayer } from '../types/materialTypes.js';
|
|
5
|
+
import { ClassificationRef } from '../types/classificationTypes.js';
|
|
6
|
+
export type ColumnPredefinedType = 'COLUMN' | 'PILASTER' | 'NOTDEFINED';
|
|
7
|
+
export interface ColumnSpec {
|
|
8
|
+
readonly height: number;
|
|
9
|
+
readonly profile: Profile;
|
|
10
|
+
readonly origin: [number, number, number];
|
|
11
|
+
readonly axisX: [number, number, number];
|
|
12
|
+
readonly axisZ: [number, number, number];
|
|
13
|
+
readonly predefinedType?: ColumnPredefinedType | undefined;
|
|
14
|
+
readonly materialName: string;
|
|
15
|
+
readonly isExternal?: boolean | undefined;
|
|
16
|
+
readonly loadBearing?: boolean | undefined;
|
|
17
|
+
readonly fireRating?: string | undefined;
|
|
18
|
+
readonly acousticRating?: string | undefined;
|
|
19
|
+
readonly thermalTransmittance?: number | undefined;
|
|
20
|
+
readonly status?: string | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* When present, the column is associated via a layered IfcMaterialLayerSet
|
|
23
|
+
* built from these layers instead of the bare `materialName` IfcMaterial.
|
|
24
|
+
*/
|
|
25
|
+
readonly materialLayers?: readonly MaterialLayer[] | undefined;
|
|
26
|
+
readonly layerSetName?: string | undefined;
|
|
27
|
+
/** When present, associates the column with an external classification code. */
|
|
28
|
+
readonly classification?: ClassificationRef | undefined;
|
|
29
|
+
readonly manufacturerName?: string | undefined;
|
|
30
|
+
readonly manufacturerModel?: string | undefined;
|
|
31
|
+
readonly manufacturerProductionYear?: number | undefined;
|
|
32
|
+
readonly customProperties?: Readonly<Record<string, Readonly<Record<string, string | number | boolean>>>> | undefined;
|
|
33
|
+
}
|
|
34
|
+
export declare function parseColumnSpec(input: unknown): Result<ColumnSpec, BimError>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { BimError } from '../errors/bimError.js';
|
|
2
|
+
import { Result } from 'brepjs';
|
|
3
|
+
import { MaterialLayer } from '../types/materialTypes.js';
|
|
4
|
+
import { ClassificationRef } from '../types/classificationTypes.js';
|
|
5
|
+
export type CoveringPredefinedType = 'CEILING' | 'FLOORING' | 'CLADDING' | 'ROOFING' | 'MOLDING' | 'SKIRTINGBOARD' | 'INSULATION' | 'MEMBRANE' | 'SLEEVING' | 'WRAPPING' | 'NOTDEFINED';
|
|
6
|
+
/**
|
|
7
|
+
* A thin rectangular covering sheet (floor finish, ceiling, cladding panel).
|
|
8
|
+
* All dimensions in mm. The footprint rectangle (length × width) lies in the
|
|
9
|
+
* local XY plane and extrudes along local +Z by `thickness`.
|
|
10
|
+
* origin/axisX/axisZ position the covering in world space via IfcLocalPlacement.
|
|
11
|
+
*/
|
|
12
|
+
export interface CoveringSpec {
|
|
13
|
+
readonly length: number;
|
|
14
|
+
readonly width: number;
|
|
15
|
+
readonly thickness: number;
|
|
16
|
+
readonly origin: [number, number, number];
|
|
17
|
+
readonly axisX: [number, number, number];
|
|
18
|
+
readonly axisZ: [number, number, number];
|
|
19
|
+
readonly predefinedType?: CoveringPredefinedType | undefined;
|
|
20
|
+
readonly materialName: string;
|
|
21
|
+
readonly isExternal?: boolean | undefined;
|
|
22
|
+
readonly fireRating?: string | undefined;
|
|
23
|
+
readonly thermalTransmittance?: number | undefined;
|
|
24
|
+
readonly status?: string | undefined;
|
|
25
|
+
readonly materialLayers?: readonly MaterialLayer[] | undefined;
|
|
26
|
+
readonly layerSetName?: string | undefined;
|
|
27
|
+
readonly classification?: ClassificationRef | undefined;
|
|
28
|
+
readonly manufacturerName?: string | undefined;
|
|
29
|
+
readonly manufacturerModel?: string | undefined;
|
|
30
|
+
readonly manufacturerProductionYear?: number | undefined;
|
|
31
|
+
readonly customProperties?: Readonly<Record<string, Readonly<Record<string, string | number | boolean>>>> | undefined;
|
|
32
|
+
}
|
|
33
|
+
export declare function parseCoveringSpec(input: unknown): Result<CoveringSpec, BimError>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { BimError } from '../errors/bimError.js';
|
|
2
|
+
import { Result } from 'brepjs';
|
|
3
|
+
import { ClassificationRef } from '../types/classificationTypes.js';
|
|
4
|
+
export type CurtainWallPredefinedType = 'CURTAIN_WALL' | 'NOTDEFINED' | 'USERDEFINED';
|
|
5
|
+
/**
|
|
6
|
+
* A planar curtain wall, modelled as a rectangular grid of glazing panels
|
|
7
|
+
* (IfcPlate) framed by mullions (IfcMember). The wall spans `width` (along the
|
|
8
|
+
* local X axis) by `height` (local Z), and is subdivided into `columns` × `rows`
|
|
9
|
+
* panels. Mullions run along every internal and boundary grid line.
|
|
10
|
+
*
|
|
11
|
+
* All dimensions in mm. Geometry is unplaced template geometry built in the
|
|
12
|
+
* local XY/XZ plane; origin/axisX/axisZ place the assembly in world space via
|
|
13
|
+
* IfcLocalPlacement.
|
|
14
|
+
*/
|
|
15
|
+
export interface CurtainWallSpec {
|
|
16
|
+
readonly width: number;
|
|
17
|
+
readonly height: number;
|
|
18
|
+
readonly columns: number;
|
|
19
|
+
readonly rows: number;
|
|
20
|
+
readonly panelThickness: number;
|
|
21
|
+
readonly mullionWidth: number;
|
|
22
|
+
readonly mullionDepth: number;
|
|
23
|
+
readonly origin: [number, number, number];
|
|
24
|
+
readonly axisX: [number, number, number];
|
|
25
|
+
readonly axisZ: [number, number, number];
|
|
26
|
+
readonly materialName: string;
|
|
27
|
+
readonly predefinedType?: CurtainWallPredefinedType | undefined;
|
|
28
|
+
readonly panelMaterialName?: string | undefined;
|
|
29
|
+
readonly mullionMaterialName?: string | undefined;
|
|
30
|
+
readonly isExternal?: boolean | undefined;
|
|
31
|
+
readonly fireRating?: string | undefined;
|
|
32
|
+
readonly thermalTransmittance?: number | undefined;
|
|
33
|
+
readonly status?: string | undefined;
|
|
34
|
+
readonly classification?: ClassificationRef | undefined;
|
|
35
|
+
readonly customProperties?: Readonly<Record<string, Readonly<Record<string, string | number | boolean>>>> | undefined;
|
|
36
|
+
}
|
|
37
|
+
export declare function parseCurtainWallSpec(input: unknown): Result<CurtainWallSpec, BimError>;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { BimError } from '../errors/bimError.js';
|
|
2
|
+
import { Result } from 'brepjs';
|
|
3
|
+
import { Profile } from './profile.js';
|
|
4
|
+
import { MaterialLayer } from '../types/materialTypes.js';
|
|
5
|
+
import { ClassificationRef } from '../types/classificationTypes.js';
|
|
6
|
+
export type FootingPredefinedType = 'CAISSON_FOUNDATION' | 'FOOTING_BEAM' | 'PAD_FOOTING' | 'PILE_CAP' | 'STRIP_FOOTING' | 'NOTDEFINED';
|
|
7
|
+
export type PilePredefinedType = 'BORED' | 'DRIVEN' | 'JETGROUTING' | 'NOTDEFINED';
|
|
8
|
+
export type PileConstructionType = 'CAST_IN_PLACE' | 'COMPOSITE' | 'PRECAST_CONCRETE' | 'PREFAB_STEEL';
|
|
9
|
+
export interface FootingSpec {
|
|
10
|
+
readonly length: number;
|
|
11
|
+
readonly width: number;
|
|
12
|
+
readonly thickness: number;
|
|
13
|
+
readonly origin: [number, number, number];
|
|
14
|
+
readonly axisX: [number, number, number];
|
|
15
|
+
readonly axisZ: [number, number, number];
|
|
16
|
+
readonly predefinedType?: FootingPredefinedType | undefined;
|
|
17
|
+
readonly materialName: string;
|
|
18
|
+
readonly isExternal?: boolean | undefined;
|
|
19
|
+
readonly loadBearing?: boolean | undefined;
|
|
20
|
+
readonly fireRating?: string | undefined;
|
|
21
|
+
readonly status?: string | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* When present, the footing is associated via a layered IfcMaterialLayerSet
|
|
24
|
+
* built from these layers instead of the bare `materialName` IfcMaterial.
|
|
25
|
+
*/
|
|
26
|
+
readonly materialLayers?: readonly MaterialLayer[] | undefined;
|
|
27
|
+
readonly layerSetName?: string | undefined;
|
|
28
|
+
/** When present, associates the footing with an external classification code. */
|
|
29
|
+
readonly classification?: ClassificationRef | undefined;
|
|
30
|
+
readonly customProperties?: Readonly<Record<string, Readonly<Record<string, string | number | boolean>>>> | undefined;
|
|
31
|
+
}
|
|
32
|
+
export interface PileSpec {
|
|
33
|
+
readonly length: number;
|
|
34
|
+
readonly profile: Profile;
|
|
35
|
+
readonly origin: [number, number, number];
|
|
36
|
+
readonly axisX: [number, number, number];
|
|
37
|
+
readonly axisZ: [number, number, number];
|
|
38
|
+
readonly predefinedType?: PilePredefinedType | undefined;
|
|
39
|
+
readonly constructionType?: PileConstructionType | undefined;
|
|
40
|
+
readonly materialName: string;
|
|
41
|
+
readonly loadBearing?: boolean | undefined;
|
|
42
|
+
readonly status?: string | undefined;
|
|
43
|
+
readonly materialLayers?: readonly MaterialLayer[] | undefined;
|
|
44
|
+
readonly layerSetName?: string | undefined;
|
|
45
|
+
/** When present, associates the pile with an external classification code. */
|
|
46
|
+
readonly classification?: ClassificationRef | undefined;
|
|
47
|
+
readonly customProperties?: Readonly<Record<string, Readonly<Record<string, string | number | boolean>>>> | undefined;
|
|
48
|
+
}
|
|
49
|
+
export declare function parseFootingSpec(input: unknown): Result<FootingSpec, BimError>;
|
|
50
|
+
export declare function parsePileSpec(input: unknown): Result<PileSpec, BimError>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { BimError } from '../errors/bimError.js';
|
|
2
|
+
import { Result } from 'brepjs';
|
|
3
|
+
/**
|
|
4
|
+
* A spatial zone — an IfcZone grouping spaces (or other zones) that share a
|
|
5
|
+
* functional purpose such as a thermal, fire, or occupancy zone. Membership is
|
|
6
|
+
* established separately via an ASSIGNS_TO_GROUP relationship referencing the
|
|
7
|
+
* member localIds; the zone itself carries no geometry.
|
|
8
|
+
*/
|
|
9
|
+
export interface ZoneSpec {
|
|
10
|
+
readonly name: string;
|
|
11
|
+
readonly longName?: string | undefined;
|
|
12
|
+
readonly description?: string | undefined;
|
|
13
|
+
readonly objectType?: string | undefined;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* A system — an IfcSystem grouping elements that together provide a service
|
|
17
|
+
* (HVAC supply, electrical circuit, plumbing run). Like a zone, the system is a
|
|
18
|
+
* pure grouping object; members are linked via an ASSIGNS_TO_GROUP relationship.
|
|
19
|
+
*/
|
|
20
|
+
export interface SystemSpec {
|
|
21
|
+
readonly name: string;
|
|
22
|
+
readonly longName?: string | undefined;
|
|
23
|
+
readonly description?: string | undefined;
|
|
24
|
+
readonly objectType?: string | undefined;
|
|
25
|
+
}
|
|
26
|
+
export declare function parseZoneSpec(input: unknown): Result<ZoneSpec, BimError>;
|
|
27
|
+
export declare function parseSystemSpec(input: unknown): Result<SystemSpec, BimError>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Shared Zod schemas for the optional material-layer and classification fields
|
|
4
|
+
* that element specs (wall/slab/beam/column) accept. Centralised here so every
|
|
5
|
+
* spec validates these fields identically.
|
|
6
|
+
*/
|
|
7
|
+
export declare const MaterialLayerSchema: z.ZodObject<{
|
|
8
|
+
name: z.ZodString;
|
|
9
|
+
thicknessMm: z.ZodNumber;
|
|
10
|
+
isVentilated: z.ZodOptional<z.ZodBoolean>;
|
|
11
|
+
priority: z.ZodOptional<z.ZodNumber>;
|
|
12
|
+
}, z.core.$strip>;
|
|
13
|
+
export declare const ClassificationRefSchema: z.ZodObject<{
|
|
14
|
+
system: z.ZodString;
|
|
15
|
+
edition: z.ZodOptional<z.ZodString>;
|
|
16
|
+
location: z.ZodOptional<z.ZodString>;
|
|
17
|
+
code: z.ZodString;
|
|
18
|
+
description: z.ZodOptional<z.ZodString>;
|
|
19
|
+
}, z.core.$strip>;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { BimError } from '../errors/bimError.js';
|
|
2
|
+
import { Result } from 'brepjs';
|
|
3
|
+
import { LocalId } from '../identity/localId.js';
|
|
4
|
+
/** A door opening in a wall. All dimensions in mm. */
|
|
5
|
+
export interface DoorSpec {
|
|
6
|
+
readonly width: number;
|
|
7
|
+
readonly height: number;
|
|
8
|
+
readonly offsetAlongWall: number;
|
|
9
|
+
readonly offsetFromFloor: number;
|
|
10
|
+
readonly wallLocalId: LocalId;
|
|
11
|
+
readonly materialName: string;
|
|
12
|
+
readonly isExternal?: boolean | undefined;
|
|
13
|
+
readonly fireRating?: string | undefined;
|
|
14
|
+
readonly acousticRating?: string | undefined;
|
|
15
|
+
}
|
|
16
|
+
/** A window opening in a wall. All dimensions in mm. */
|
|
17
|
+
export interface WindowSpec {
|
|
18
|
+
readonly width: number;
|
|
19
|
+
readonly height: number;
|
|
20
|
+
readonly offsetAlongWall: number;
|
|
21
|
+
readonly offsetFromFloor: number;
|
|
22
|
+
readonly wallLocalId: LocalId;
|
|
23
|
+
readonly materialName: string;
|
|
24
|
+
readonly isExternal?: boolean | undefined;
|
|
25
|
+
readonly fireRating?: string | undefined;
|
|
26
|
+
readonly acousticRating?: string | undefined;
|
|
27
|
+
readonly thermalTransmittance?: number | undefined;
|
|
28
|
+
}
|
|
29
|
+
export declare function parseDoorSpec(input: unknown): Result<DoorSpec, BimError>;
|
|
30
|
+
export declare function parseWindowSpec(input: unknown): Result<WindowSpec, BimError>;
|
|
31
|
+
/**
|
|
32
|
+
* Input for BimModel.addSlabOpening — a vertical through-hole in a slab.
|
|
33
|
+
* All dimensions in mm, offsets in the slab's local XY frame.
|
|
34
|
+
*/
|
|
35
|
+
export interface SlabOpeningInput {
|
|
36
|
+
readonly sizeX: number;
|
|
37
|
+
readonly sizeY: number;
|
|
38
|
+
readonly offsetX: number;
|
|
39
|
+
readonly offsetY: number;
|
|
40
|
+
readonly slabLocalId: LocalId;
|
|
41
|
+
}
|
|
42
|
+
export declare function parseSlabOpeningInput(input: unknown): Result<SlabOpeningInput, BimError>;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { BimError } from '../errors/bimError.js';
|
|
3
|
+
import { Result } from 'brepjs';
|
|
4
|
+
import { ExtendedProfile, extendedProfileToFace } from './profilesExtended.js';
|
|
5
|
+
export type RectangularProfile = {
|
|
6
|
+
readonly kind: 'RECTANGULAR';
|
|
7
|
+
readonly width: number;
|
|
8
|
+
readonly height: number;
|
|
9
|
+
};
|
|
10
|
+
export type CircularProfile = {
|
|
11
|
+
readonly kind: 'CIRCULAR';
|
|
12
|
+
readonly radius: number;
|
|
13
|
+
};
|
|
14
|
+
export type IShapeProfile = {
|
|
15
|
+
readonly kind: 'I_BEAM';
|
|
16
|
+
readonly overallWidth: number;
|
|
17
|
+
readonly overallDepth: number;
|
|
18
|
+
readonly flangeThickness: number;
|
|
19
|
+
readonly webThickness: number;
|
|
20
|
+
};
|
|
21
|
+
export type CoreProfile = RectangularProfile | CircularProfile | IShapeProfile;
|
|
22
|
+
export type Profile = CoreProfile | ExtendedProfile;
|
|
23
|
+
/** Narrows a profile to the extended (non-core) variants. */
|
|
24
|
+
export declare function isExtendedProfile(profile: Profile): profile is ExtendedProfile;
|
|
25
|
+
export declare const ProfileSchema: z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
26
|
+
kind: z.ZodLiteral<"RECTANGULAR">;
|
|
27
|
+
width: z.ZodNumber;
|
|
28
|
+
height: z.ZodNumber;
|
|
29
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
30
|
+
kind: z.ZodLiteral<"CIRCULAR">;
|
|
31
|
+
radius: z.ZodNumber;
|
|
32
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
33
|
+
kind: z.ZodLiteral<"I_BEAM">;
|
|
34
|
+
overallWidth: z.ZodNumber;
|
|
35
|
+
overallDepth: z.ZodNumber;
|
|
36
|
+
flangeThickness: z.ZodNumber;
|
|
37
|
+
webThickness: z.ZodNumber;
|
|
38
|
+
}, z.core.$strip>], "kind">, z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
39
|
+
kind: z.ZodLiteral<"L_SHAPE">;
|
|
40
|
+
depth: z.ZodNumber;
|
|
41
|
+
width: z.ZodNumber;
|
|
42
|
+
legThickness: z.ZodNumber;
|
|
43
|
+
filletRadius: z.ZodOptional<z.ZodNumber>;
|
|
44
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
45
|
+
kind: z.ZodLiteral<"T_SHAPE">;
|
|
46
|
+
depth: z.ZodNumber;
|
|
47
|
+
flangeWidth: z.ZodNumber;
|
|
48
|
+
webThickness: z.ZodNumber;
|
|
49
|
+
flangeThickness: z.ZodNumber;
|
|
50
|
+
filletRadius: z.ZodOptional<z.ZodNumber>;
|
|
51
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
52
|
+
kind: z.ZodLiteral<"U_SHAPE">;
|
|
53
|
+
depth: z.ZodNumber;
|
|
54
|
+
flangeWidth: z.ZodNumber;
|
|
55
|
+
webThickness: z.ZodNumber;
|
|
56
|
+
flangeThickness: z.ZodNumber;
|
|
57
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
58
|
+
kind: z.ZodLiteral<"Z_SHAPE">;
|
|
59
|
+
depth: z.ZodNumber;
|
|
60
|
+
flangeWidth: z.ZodNumber;
|
|
61
|
+
webThickness: z.ZodNumber;
|
|
62
|
+
flangeThickness: z.ZodNumber;
|
|
63
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
64
|
+
kind: z.ZodLiteral<"C_SHAPE">;
|
|
65
|
+
depth: z.ZodNumber;
|
|
66
|
+
width: z.ZodNumber;
|
|
67
|
+
wallThickness: z.ZodNumber;
|
|
68
|
+
girth: z.ZodNumber;
|
|
69
|
+
internalFilletRadius: z.ZodOptional<z.ZodNumber>;
|
|
70
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
71
|
+
kind: z.ZodLiteral<"ASYMMETRIC_I">;
|
|
72
|
+
overallDepth: z.ZodNumber;
|
|
73
|
+
webThickness: z.ZodNumber;
|
|
74
|
+
topFlangeWidth: z.ZodNumber;
|
|
75
|
+
topFlangeThickness: z.ZodNumber;
|
|
76
|
+
bottomFlangeWidth: z.ZodNumber;
|
|
77
|
+
bottomFlangeThickness: z.ZodNumber;
|
|
78
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
79
|
+
kind: z.ZodLiteral<"ELLIPSE">;
|
|
80
|
+
semiAxis1: z.ZodNumber;
|
|
81
|
+
semiAxis2: z.ZodNumber;
|
|
82
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
83
|
+
kind: z.ZodLiteral<"TRAPEZIUM">;
|
|
84
|
+
bottomXDim: z.ZodNumber;
|
|
85
|
+
topXDim: z.ZodNumber;
|
|
86
|
+
yDim: z.ZodNumber;
|
|
87
|
+
topXOffset: z.ZodNumber;
|
|
88
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
89
|
+
kind: z.ZodLiteral<"RECTANGLE_HOLLOW">;
|
|
90
|
+
xDim: z.ZodNumber;
|
|
91
|
+
yDim: z.ZodNumber;
|
|
92
|
+
wallThickness: z.ZodNumber;
|
|
93
|
+
innerFilletRadius: z.ZodOptional<z.ZodNumber>;
|
|
94
|
+
outerFilletRadius: z.ZodOptional<z.ZodNumber>;
|
|
95
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
96
|
+
kind: z.ZodLiteral<"CIRCLE_HOLLOW">;
|
|
97
|
+
radius: z.ZodNumber;
|
|
98
|
+
wallThickness: z.ZodNumber;
|
|
99
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
100
|
+
kind: z.ZodLiteral<"ARBITRARY_CLOSED">;
|
|
101
|
+
points: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
|
|
102
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
103
|
+
kind: z.ZodLiteral<"ARBITRARY_WITH_VOIDS">;
|
|
104
|
+
outerPoints: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
|
|
105
|
+
voids: z.ZodArray<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
|
|
106
|
+
}, z.core.$strip>], "kind">]>;
|
|
107
|
+
export declare function parseProfile(input: unknown): Result<Profile, BimError>;
|
|
108
|
+
export { extendedProfileToFace };
|