@ifc-lite/create 2.8.0 → 3.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/README.md +7 -0
- 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 +45 -0
- package/dist/ifc-creator-alignment.d.ts.map +1 -0
- package/dist/ifc-creator-alignment.js +173 -0
- package/dist/ifc-creator-alignment.js.map +1 -0
- package/dist/ifc-creator-header.d.ts +2 -0
- package/dist/ifc-creator-header.d.ts.map +1 -0
- package/dist/ifc-creator-header.js +22 -0
- package/dist/ifc-creator-header.js.map +1 -0
- package/dist/ifc-creator-math.d.ts +37 -5
- package/dist/ifc-creator-math.d.ts.map +1 -1
- package/dist/ifc-creator-math.js +93 -4
- package/dist/ifc-creator-math.js.map +1 -1
- package/dist/ifc-creator-relationships.d.ts +43 -0
- package/dist/ifc-creator-relationships.d.ts.map +1 -0
- package/dist/ifc-creator-relationships.js +38 -0
- package/dist/ifc-creator-relationships.js.map +1 -0
- package/dist/ifc-creator-styles.d.ts +22 -0
- package/dist/ifc-creator-styles.d.ts.map +1 -0
- package/dist/ifc-creator-styles.js +50 -0
- package/dist/ifc-creator-styles.js.map +1 -0
- package/dist/ifc-creator-terrain.d.ts +170 -0
- package/dist/ifc-creator-terrain.d.ts.map +1 -0
- package/dist/ifc-creator-terrain.js +180 -0
- package/dist/ifc-creator-terrain.js.map +1 -0
- package/dist/ifc-creator.d.ts +21 -7
- package/dist/ifc-creator.d.ts.map +1 -1
- package/dist/ifc-creator.js +93 -97
- 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 +2 -0
- package/dist/in-store/anchor.d.ts.map +1 -1
- package/dist/in-store/anchor.js.map +1 -1
- package/dist/in-store/apply-style.d.ts +3 -6
- package/dist/in-store/apply-style.d.ts.map +1 -1
- package/dist/in-store/apply-style.js +3 -77
- package/dist/in-store/apply-style.js.map +1 -1
- package/dist/in-store/column.d.ts.map +1 -1
- package/dist/in-store/column.js +2 -0
- package/dist/in-store/column.js.map +1 -1
- package/dist/in-store/door.d.ts.map +1 -1
- package/dist/in-store/door.js +2 -0
- package/dist/in-store/door.js.map +1 -1
- package/dist/in-store/extract-walls.d.ts +1 -1
- package/dist/in-store/extract-walls.d.ts.map +1 -1
- package/dist/in-store/extract-walls.js +37 -55
- package/dist/in-store/extract-walls.js.map +1 -1
- package/dist/in-store/generate-spaces-all.d.ts +6 -2
- package/dist/in-store/generate-spaces-all.d.ts.map +1 -1
- package/dist/in-store/generate-spaces-all.js +33 -9
- package/dist/in-store/generate-spaces-all.js.map +1 -1
- package/dist/in-store/generate-spaces.js +1 -1
- package/dist/in-store/generate-spaces.js.map +1 -1
- package/dist/in-store/placement-frame.d.ts +8 -0
- package/dist/in-store/placement-frame.d.ts.map +1 -1
- package/dist/in-store/placement-frame.js.map +1 -1
- package/dist/in-store/plate.d.ts.map +1 -1
- package/dist/in-store/plate.js +4 -0
- package/dist/in-store/plate.js.map +1 -1
- package/dist/in-store/resolve-anchor.d.ts +4 -2
- package/dist/in-store/resolve-anchor.d.ts.map +1 -1
- package/dist/in-store/resolve-anchor.js +79 -92
- package/dist/in-store/resolve-anchor.js.map +1 -1
- package/dist/in-store/resolve-source.d.ts +2 -1
- package/dist/in-store/resolve-source.d.ts.map +1 -1
- package/dist/in-store/resolve-source.js +49 -49
- package/dist/in-store/resolve-source.js.map +1 -1
- package/dist/in-store/roof.d.ts.map +1 -1
- package/dist/in-store/roof.js +4 -0
- package/dist/in-store/roof.js.map +1 -1
- package/dist/in-store/slab.d.ts.map +1 -1
- package/dist/in-store/slab.js +4 -0
- package/dist/in-store/slab.js.map +1 -1
- package/dist/in-store/space.d.ts.map +1 -1
- package/dist/in-store/space.js +4 -0
- package/dist/in-store/space.js.map +1 -1
- package/dist/in-store/spatial-children.d.ts +52 -0
- package/dist/in-store/spatial-children.d.ts.map +1 -0
- package/dist/in-store/spatial-children.js +112 -0
- package/dist/in-store/spatial-children.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/style-entity-reader.d.ts +14 -0
- package/dist/in-store/style-entity-reader.d.ts.map +1 -0
- package/dist/in-store/style-entity-reader.js +58 -0
- package/dist/in-store/style-entity-reader.js.map +1 -0
- 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.map +1 -1
- package/dist/in-store/window.js +2 -0
- package/dist/in-store/window.js.map +1 -1
- package/dist/index.d.ts +12 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/landxml/alignment-mapping.d.ts +98 -0
- package/dist/landxml/alignment-mapping.d.ts.map +1 -0
- package/dist/landxml/alignment-mapping.js +282 -0
- package/dist/landxml/alignment-mapping.js.map +1 -0
- package/dist/landxml/alignment-record.d.ts +18 -0
- package/dist/landxml/alignment-record.d.ts.map +1 -0
- package/dist/landxml/alignment-record.js +63 -0
- package/dist/landxml/alignment-record.js.map +1 -0
- package/dist/landxml/coordinate-plausibility.d.ts +54 -0
- package/dist/landxml/coordinate-plausibility.d.ts.map +1 -0
- package/dist/landxml/coordinate-plausibility.js +59 -0
- package/dist/landxml/coordinate-plausibility.js.map +1 -0
- package/dist/landxml/landxml-to-ifc.d.ts +45 -0
- package/dist/landxml/landxml-to-ifc.d.ts.map +1 -0
- package/dist/landxml/landxml-to-ifc.js +203 -0
- package/dist/landxml/landxml-to-ifc.js.map +1 -0
- 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 +45 -0
- package/dist/landxml/refusals.d.ts.map +1 -0
- package/dist/landxml/refusals.js +141 -0
- package/dist/landxml/refusals.js.map +1 -0
- package/dist/landxml/result-types.d.ts +78 -0
- package/dist/landxml/result-types.d.ts.map +1 -0
- package/dist/landxml/result-types.js +5 -0
- package/dist/landxml/result-types.js.map +1 -0
- package/dist/landxml/source-types.d.ts +169 -0
- package/dist/landxml/source-types.d.ts.map +1 -0
- package/dist/landxml/source-types.js +5 -0
- package/dist/landxml/source-types.js.map +1 -0
- 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 +33 -0
- package/dist/landxml/writers.d.ts.map +1 -0
- package/dist/landxml/writers.js +160 -0
- package/dist/landxml/writers.js.map +1 -0
- package/dist/types.d.ts +13 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ifc-creator-terrain.d.ts","sourceRoot":"","sources":["../src/ifc-creator-terrain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,180 @@
|
|
|
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
|
+
* Survey/terrain emitters for `IfcCreator` — the IFC4X3 entities the
|
|
6
|
+
* LandXML→IFC v1 mapping needs and no building element does.
|
|
7
|
+
*
|
|
8
|
+
* Split out of `ifc-creator.ts` the same way `ifc-creator-definitions.ts` and
|
|
9
|
+
* `ifc-creator-scheduling.ts` are: the creator keeps the spatial spine, the id
|
|
10
|
+
* allocator and the STEP writer, and hands this module the one `emit` hook.
|
|
11
|
+
*
|
|
12
|
+
* Coordinate contract, and it is the whole reason this file is reviewed
|
|
13
|
+
* carefully: every `Coordinates`/`Location` triple here is
|
|
14
|
+
* **(X, Y, Z) = (easting, northing, elevation)**, already in the file's length
|
|
15
|
+
* unit. LandXML's own `<P>`/`<CgPoint>` text order is *northing easting
|
|
16
|
+
* elevation*; transposing it is silent — a transpose is a reflection, so the
|
|
17
|
+
* mesh is still well-formed and every count assertion still passes. Callers
|
|
18
|
+
* convert; this module never reorders, and never guesses from magnitude.
|
|
19
|
+
*
|
|
20
|
+
* See `docs/architecture/landxml-to-ifc-mapping.md` §2.2 and §4.1.
|
|
21
|
+
*/
|
|
22
|
+
import { esc, num } from './ifc-creator-math.js';
|
|
23
|
+
import { emitAlignment } from './ifc-creator-alignment.js';
|
|
24
|
+
function assertFiniteTriple(triple, what) {
|
|
25
|
+
for (let axis = 0; axis < 3; axis += 1) {
|
|
26
|
+
if (!Number.isFinite(triple[axis])) {
|
|
27
|
+
throw new Error(`${what}: coordinate ${axis} is ${String(triple[axis])} — every coordinate must be finite`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function optText(value) {
|
|
32
|
+
return value === null || value === undefined || value === '' ? '$' : `'${esc(value)}'`;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Write a terrain surface: `IfcCartesianPointList3D` → `IfcTriangulatedIrregularNetwork`
|
|
36
|
+
* → `IfcShapeRepresentation` → `IfcGeographicElement`/`.TERRAIN.`.
|
|
37
|
+
*
|
|
38
|
+
* The `IfcTriangulatedIrregularNetwork` constraints in §4.1 are enforced here
|
|
39
|
+
* rather than assumed, because both fail open in a STEP file: `Closed` omitted
|
|
40
|
+
* as `$` does not satisfy `NotClosed : Closed = FALSE`, and an empty `Flags`
|
|
41
|
+
* violates `LIST [1:?]`. Neither shows up as a parse error downstream.
|
|
42
|
+
*/
|
|
43
|
+
export function emitTerrainSurface(params, ctx) {
|
|
44
|
+
ctx.assertSchema('addIfcTerrainSurface');
|
|
45
|
+
const vertexCount = params.Coordinates.length;
|
|
46
|
+
if (vertexCount === 0) {
|
|
47
|
+
throw new Error('addIfcTerrainSurface: Coordinates is empty — IfcCartesianPointList3D.CoordList is LIST [1:?]');
|
|
48
|
+
}
|
|
49
|
+
if (params.Triangles.length === 0) {
|
|
50
|
+
throw new Error('addIfcTerrainSurface: Triangles is empty — IfcTriangulatedFaceSet.CoordIndex is LIST [1:?]');
|
|
51
|
+
}
|
|
52
|
+
const flags = params.Flags ?? [0];
|
|
53
|
+
if (flags.length === 0) {
|
|
54
|
+
throw new Error('addIfcTerrainSurface: Flags is empty — IfcTriangulatedIrregularNetwork.Flags is LIST [1:?] and is not optional');
|
|
55
|
+
}
|
|
56
|
+
for (const flag of flags) {
|
|
57
|
+
if (!Number.isInteger(flag)) {
|
|
58
|
+
throw new Error(`addIfcTerrainSurface: Flags entry ${String(flag)} is not an integer — Flags is LIST OF IfcInteger`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
params.Coordinates.forEach((point, index) => {
|
|
62
|
+
assertFiniteTriple(point, `addIfcTerrainSurface: vertex ${index}`);
|
|
63
|
+
});
|
|
64
|
+
params.Triangles.forEach((triangle, index) => {
|
|
65
|
+
for (const vertexIndex of triangle) {
|
|
66
|
+
if (!Number.isInteger(vertexIndex) || vertexIndex < 1 || vertexIndex > vertexCount) {
|
|
67
|
+
throw new Error(`addIfcTerrainSurface: triangle ${index} references vertex ${String(vertexIndex)}, `
|
|
68
|
+
+ `outside the 1-based range 1..${vertexCount} — CoordIndex is LIST OF IfcPositiveInteger`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
const coordList = params.Coordinates
|
|
73
|
+
.map(([x, y, z]) => `(${num(x)},${num(y)},${num(z)})`)
|
|
74
|
+
.join(',');
|
|
75
|
+
const coordinateListId = ctx.emit('IFCCARTESIANPOINTLIST3D', `(${coordList}),$`);
|
|
76
|
+
const coordIndex = params.Triangles.map(([a, b, c]) => `(${a},${b},${c})`).join(',');
|
|
77
|
+
// Attribute order: Coordinates, Normals, Closed, CoordIndex, PnIndex, Flags.
|
|
78
|
+
// `Closed` is written `.F.` explicitly — `$` fails the NotClosed rule.
|
|
79
|
+
const tinId = ctx.emit('IFCTRIANGULATEDIRREGULARNETWORK', `#${coordinateListId},$,.F.,(${coordIndex}),$,(${flags.join(',')})`);
|
|
80
|
+
const representationId = ctx.emit('IFCSHAPEREPRESENTATION', `${ctx.bodyContextRef},'Body','Tessellation',(#${tinId})`);
|
|
81
|
+
const shapeId = ctx.emit('IFCPRODUCTDEFINITIONSHAPE', `$,$,(#${representationId})`);
|
|
82
|
+
const globalId = params.GlobalId ?? ctx.newGlobalId();
|
|
83
|
+
const elementId = ctx.emit('IFCGEOGRAPHICELEMENT', `'${globalId}',${ctx.ownerRef},'${esc(params.Name)}',${optText(params.Description)},$,`
|
|
84
|
+
+ `${ctx.sitePlacementRef},#${shapeId},$,.TERRAIN.`);
|
|
85
|
+
return { elementId, tinId, coordinateListId };
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Write one survey point as `IfcAnnotation`/`.SURVEY.`.
|
|
89
|
+
*
|
|
90
|
+
* The position lives in the `IfcLocalPlacement`, and the representation is an
|
|
91
|
+
* `IfcCartesianPoint` at the LOCAL origin — not a second copy of the
|
|
92
|
+
* coordinate. That split is deliberate: it is the shape the IfcOpenShell
|
|
93
|
+
* control in §8.2 writes, which is what makes our output comparable to
|
|
94
|
+
* something produced outside this repo, and it keeps one authoritative
|
|
95
|
+
* location per point instead of two that can disagree.
|
|
96
|
+
*/
|
|
97
|
+
export function emitSurveyPoint(params, ctx) {
|
|
98
|
+
ctx.assertSchema('addIfcSurveyPoint');
|
|
99
|
+
assertFiniteTriple(params.Location, 'addIfcSurveyPoint');
|
|
100
|
+
const localOriginId = ctx.emit('IFCCARTESIANPOINT', '(0.,0.,0.)');
|
|
101
|
+
const representationId = ctx.emit('IFCSHAPEREPRESENTATION', `${ctx.modelContextRef},'Point','Point',(#${localOriginId})`);
|
|
102
|
+
const shapeId = ctx.emit('IFCPRODUCTDEFINITIONSHAPE', `$,$,(#${representationId})`);
|
|
103
|
+
const [easting, northing, elevation] = params.Location;
|
|
104
|
+
const pointId = ctx.emit('IFCCARTESIANPOINT', `(${num(easting)},${num(northing)},${num(elevation)})`);
|
|
105
|
+
const axisId = ctx.emit('IFCAXIS2PLACEMENT3D', `#${pointId},$,$`);
|
|
106
|
+
const placementId = ctx.emit('IFCLOCALPLACEMENT', `${ctx.sitePlacementRef},#${axisId}`);
|
|
107
|
+
const globalId = params.GlobalId ?? ctx.newGlobalId();
|
|
108
|
+
return ctx.emit('IFCANNOTATION', `'${globalId}',${ctx.ownerRef},${optText(params.Name)},${optText(params.Description)},$,`
|
|
109
|
+
+ `#${placementId},#${shapeId},.SURVEY.`);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Attach a property set to one product. Values are written as `IFCLABEL`
|
|
113
|
+
* regardless of how numeric they look: a LandXML attribute is text, and
|
|
114
|
+
* promoting `'00123'` to a number would lose a leading zero that identifies
|
|
115
|
+
* the point.
|
|
116
|
+
*/
|
|
117
|
+
export function emitSurveyPropertySet(productId, params, ctx) {
|
|
118
|
+
if (params.Properties.length === 0) {
|
|
119
|
+
throw new Error('addIfcSurveyPropertySet: Properties is empty — IfcPropertySet.HasProperties is SET [1:?]');
|
|
120
|
+
}
|
|
121
|
+
const propertyIds = params.Properties.map(({ Name, Value }) => ctx.emit('IFCPROPERTYSINGLEVALUE', `'${esc(Name)}',$,IFCLABEL('${esc(Value)}'),$`));
|
|
122
|
+
const setId = ctx.emit('IFCPROPERTYSET', `'${params.GlobalId ?? ctx.newGlobalId()}',${ctx.ownerRef},'${esc(params.Name)}',$,`
|
|
123
|
+
+ `(${propertyIds.map((id) => `#${id}`).join(',')})`);
|
|
124
|
+
ctx.emit('IFCRELDEFINESBYPROPERTIES', `'${ctx.newGlobalId()}',${ctx.ownerRef},$,$,(#${productId}),#${setId}`);
|
|
125
|
+
return setId;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Write `IfcProjectedCRS` + `IfcMapConversion`.
|
|
129
|
+
*
|
|
130
|
+
* `SourceCRS` is the model `IfcGeometricRepresentationContext` and `TargetCRS`
|
|
131
|
+
* the projected CRS, which is what `TargetCRSOnlyProjected` requires. Callers
|
|
132
|
+
* emit this only where the source actually declares a coordinate system —
|
|
133
|
+
* §4.2 forbids a placeholder CRS, because a wrong CRS is worse than none.
|
|
134
|
+
*/
|
|
135
|
+
export function emitGeoreferencing(params, ctx) {
|
|
136
|
+
ctx.assertSchema('setGeoreferencing');
|
|
137
|
+
if (params.Name === '') {
|
|
138
|
+
throw new Error('setGeoreferencing: Name is empty — IfcCoordinateReferenceSystem.NameOrWKT requires a Name when there is no WellKnownText');
|
|
139
|
+
}
|
|
140
|
+
const crsId = ctx.emit('IFCPROJECTEDCRS', `'${esc(params.Name)}',${optText(params.Description)},${optText(params.GeodeticDatum)},`
|
|
141
|
+
+ `${optText(params.VerticalDatum)},${optText(params.MapProjection)},${optText(params.MapZone)},`
|
|
142
|
+
+ `${params.MapUnitRef ?? '$'}`);
|
|
143
|
+
const optNum = (value) => (value === undefined ? '$' : num(value));
|
|
144
|
+
const mapConversionId = ctx.emit('IFCMAPCONVERSION', `${ctx.modelContextRef},#${crsId},${num(params.Eastings ?? 0)},${num(params.Northings ?? 0)},`
|
|
145
|
+
+ `${num(params.OrthogonalHeight ?? 0)},${optNum(params.XAxisAbscissa)},${optNum(params.XAxisOrdinate)},`
|
|
146
|
+
+ `${optNum(params.Scale)}`);
|
|
147
|
+
return { crsId, mapConversionId };
|
|
148
|
+
}
|
|
149
|
+
export function createTerrainWriter(ctx, host) {
|
|
150
|
+
return {
|
|
151
|
+
siteId: host.siteId(),
|
|
152
|
+
addSurface(params) {
|
|
153
|
+
const result = emitTerrainSurface(params, ctx);
|
|
154
|
+
host.trackSiteProduct(result.elementId, 'IfcGeographicElement', params.Name);
|
|
155
|
+
return result;
|
|
156
|
+
},
|
|
157
|
+
addSurveyPoint(params) {
|
|
158
|
+
const id = emitSurveyPoint(params, ctx);
|
|
159
|
+
host.trackSiteProduct(id, 'IfcAnnotation', params.Name ?? undefined);
|
|
160
|
+
return id;
|
|
161
|
+
},
|
|
162
|
+
addPropertySet(productId, params) {
|
|
163
|
+
return emitSurveyPropertySet(productId, params, ctx);
|
|
164
|
+
},
|
|
165
|
+
setGeoreferencing(params) {
|
|
166
|
+
host.claimGeoreferencing();
|
|
167
|
+
return emitGeoreferencing({ ...params, MapUnitRef: params.MapUnitRef ?? host.lengthUnitRef() }, ctx);
|
|
168
|
+
},
|
|
169
|
+
addAlignment(params) {
|
|
170
|
+
ctx.assertSchema('addAlignment');
|
|
171
|
+
const result = emitAlignment(params, {
|
|
172
|
+
emit: ctx.emit, newGlobalId: ctx.newGlobalId, ownerRef: ctx.ownerRef,
|
|
173
|
+
axisContextRef: ctx.axisContextRef, placementRef: ctx.sitePlacementRef,
|
|
174
|
+
});
|
|
175
|
+
host.trackProjectProduct(result.alignmentId, 'IfcAlignment', params.Name);
|
|
176
|
+
return result;
|
|
177
|
+
},
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=ifc-creator-terrain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ifc-creator-terrain.js","sourceRoot":"","sources":["../src/ifc-creator-terrain.ts"],"names":[],"mappings":"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"}
|
package/dist/ifc-creator.d.ts
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import type { Point3D, Point2D, Placement3D, ElementAttributes, ProfileDef, GenericElementParams, AxisElementParams, WallParams, SlabParams, ColumnParams, BeamParams, StairParams, RoofParams, GableRoofParams, WallDoorParams, WallWindowParams, DoorParams, WindowParams, RampParams, RailingParams, PlateParams, MemberParams, FootingParams, PileParams, SpaceParams, CurtainWallParams, FurnishingParams, ProxyParams, ProjectParams, StoreyParams, PropertySetDef, QuantitySetDef, MaterialDef, WorkScheduleParams, WorkPlanParams, TaskParams, SequenceParams, WorkCalendarParams, CreateResult } from './types.js';
|
|
17
17
|
import type { CostItemParams, CostQuantityParams, CostScheduleParams, CostTypedValue, CostValueParams, SIUnitParams } from './types-cost.js';
|
|
18
|
+
import { type TerrainWriter } from './ifc-creator-terrain.js';
|
|
18
19
|
/**
|
|
19
20
|
* PLACEMENT CONTRACT
|
|
20
21
|
*
|
|
@@ -55,6 +56,12 @@ export declare class IfcCreator {
|
|
|
55
56
|
private dirX;
|
|
56
57
|
private worldPlacementId;
|
|
57
58
|
private unitAssignmentId;
|
|
59
|
+
private siteElements;
|
|
60
|
+
/** Products aggregated by the project itself — `IfcAlignment` (§11 of the LandXML mapping). */
|
|
61
|
+
private projectElements;
|
|
62
|
+
private georeferenced;
|
|
63
|
+
/** The length `IfcNamedUnit` `IfcProjectedCRS.MapUnit` points at. */
|
|
64
|
+
private lengthUnitId;
|
|
58
65
|
private finalized;
|
|
59
66
|
private defaultStyleId;
|
|
60
67
|
private elementSolids;
|
|
@@ -288,6 +295,16 @@ export declare class IfcCreator {
|
|
|
288
295
|
InnerFilletRadius?: number;
|
|
289
296
|
OuterFilletRadius?: number;
|
|
290
297
|
} & ElementAttributes): number;
|
|
298
|
+
/**
|
|
299
|
+
* The terrain/survey authoring surface: TIN surfaces, survey points, their
|
|
300
|
+
* property sets and the file's georeferencing.
|
|
301
|
+
*
|
|
302
|
+
* One accessor rather than four methods: each needs the same creator
|
|
303
|
+
* internals and nothing else. `ifc-creator-terrain.ts` documents each call.
|
|
304
|
+
*/
|
|
305
|
+
terrain(): TerrainWriter;
|
|
306
|
+
/** The creator hooks `ifc-creator-terrain.ts`'s emitters need. */
|
|
307
|
+
private terrainContext;
|
|
291
308
|
/** Attach a property set to an element */
|
|
292
309
|
addIfcPropertySet(elementId: number, pset: PropertySetDef): number;
|
|
293
310
|
/** Attach element quantities to an element */
|
|
@@ -415,12 +432,11 @@ export declare class IfcCreator {
|
|
|
415
432
|
private buildHeader;
|
|
416
433
|
private buildPreamble;
|
|
417
434
|
private buildUnits;
|
|
418
|
-
/**
|
|
419
|
-
|
|
420
|
-
|
|
435
|
+
/**
|
|
436
|
+
* Create all `IfcStyledItem` rows — a custom colour where one was assigned,
|
|
437
|
+
* the default grey otherwise. See `ifc-creator-styles.ts`.
|
|
438
|
+
*/
|
|
421
439
|
private finalizeStyles;
|
|
422
|
-
/** Create a named IfcSurfaceStyle with the given RGB colour */
|
|
423
|
-
private buildColorStyle;
|
|
424
440
|
/** Get or create a shared IfcMaterial entity (IFC4: Name, Description, Category) */
|
|
425
441
|
private getOrCreateMaterial;
|
|
426
442
|
/** Create IfcRelAssociatesMaterial entities — one per unique material ref (batched) */
|
|
@@ -561,8 +577,6 @@ export declare class IfcCreator {
|
|
|
561
577
|
private addSlabOpening;
|
|
562
578
|
private ifc4Only;
|
|
563
579
|
private finalizeRelationships;
|
|
564
|
-
private addIfcRelAggregates;
|
|
565
|
-
private addIfcRelContainedInSpatialStructure;
|
|
566
580
|
private addIfcRelFillsElement;
|
|
567
581
|
private id;
|
|
568
582
|
private line;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc-creator.d.ts","sourceRoot":"","sources":["../src/ifc-creator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ifc-creator.d.ts","sourceRoot":"","sources":["../src/ifc-creator.ts"],"names":[],"mappings":"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"}
|
package/dist/ifc-creator.js
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
-
import { esc, stepLine, num, vecLen, vecNorm, vecCross, optStr, optEnum, NON_ELEMENT_TYPES, assertPositiveFinite, assertFinitePoint3, } from './ifc-creator-math.js';
|
|
4
|
+
import { esc, stepLine, num, vecLen, vecNorm, vecCross, optStr, optEnum, NON_ELEMENT_TYPES, assertPositiveFinite, assertFinitePoint3, completePlacementAxes, } from './ifc-creator-math.js';
|
|
5
5
|
import { emitWorkCalendar, emitTaskTime } from './ifc-creator-scheduling.js';
|
|
6
6
|
import { assertCostSchema, emitCostItem, emitCostSchedule, emitCostValue, emitMeasureWithUnit, emitMonetaryUnit, emitPhysicalQuantity, emitRelAssignsToProduct, emitSIUnit, } from './ifc-creator-cost.js';
|
|
7
7
|
import { emitElementQuantity, emitPropertySet } from './ifc-creator-definitions.js';
|
|
8
|
+
import { createTerrainWriter } from './ifc-creator-terrain.js';
|
|
9
|
+
import { emitRelFillsElement, emitSpatialRelationships } from './ifc-creator-relationships.js';
|
|
10
|
+
import { emitDefaultStyle, emitStyledItems } from './ifc-creator-styles.js';
|
|
11
|
+
import { buildStepHeader } from './ifc-creator-header.js';
|
|
8
12
|
import { generateIfcGuid, isValidIfcGuid } from '@ifc-lite/encoding';
|
|
13
|
+
import { fileSchemaIdentifier } from '@ifc-lite/data';
|
|
9
14
|
// ============================================================================
|
|
10
15
|
// IfcCreator
|
|
11
16
|
// ============================================================================
|
|
@@ -50,6 +55,15 @@ export class IfcCreator {
|
|
|
50
55
|
dirX = 0;
|
|
51
56
|
worldPlacementId = 0;
|
|
52
57
|
unitAssignmentId = 0;
|
|
58
|
+
// Products contained directly in the site rather than a storey: terrain and
|
|
59
|
+
// survey annotations have no storey, and inventing one would put them on a
|
|
60
|
+
// datum the source never declared.
|
|
61
|
+
siteElements = [];
|
|
62
|
+
/** Products aggregated by the project itself — `IfcAlignment` (§11 of the LandXML mapping). */
|
|
63
|
+
projectElements = [];
|
|
64
|
+
georeferenced = false;
|
|
65
|
+
/** The length `IfcNamedUnit` `IfcProjectedCRS.MapUnit` points at. */
|
|
66
|
+
lengthUnitId = 0;
|
|
53
67
|
// Guard against repeated toIfc() calls (relationships are not idempotent)
|
|
54
68
|
finalized = false;
|
|
55
69
|
// Default surface style (applied to elements without custom color)
|
|
@@ -1177,6 +1191,53 @@ export class IfcCreator {
|
|
|
1177
1191
|
return beamId;
|
|
1178
1192
|
}
|
|
1179
1193
|
// ============================================================================
|
|
1194
|
+
// Public API — Terrain & survey (IFC4X3, LandXML→IFC mapping)
|
|
1195
|
+
// ============================================================================
|
|
1196
|
+
/**
|
|
1197
|
+
* The terrain/survey authoring surface: TIN surfaces, survey points, their
|
|
1198
|
+
* property sets and the file's georeferencing.
|
|
1199
|
+
*
|
|
1200
|
+
* One accessor rather than four methods: each needs the same creator
|
|
1201
|
+
* internals and nothing else. `ifc-creator-terrain.ts` documents each call.
|
|
1202
|
+
*/
|
|
1203
|
+
terrain() {
|
|
1204
|
+
return createTerrainWriter(this.terrainContext(), {
|
|
1205
|
+
trackSiteProduct: (expressId, type, name) => {
|
|
1206
|
+
this.siteElements.push(expressId);
|
|
1207
|
+
this.entities.push({ expressId, type, Name: name });
|
|
1208
|
+
},
|
|
1209
|
+
lengthUnitRef: () => `#${this.lengthUnitId}`,
|
|
1210
|
+
siteId: () => this.siteId,
|
|
1211
|
+
trackProjectProduct: (expressId, type, name) => {
|
|
1212
|
+
this.projectElements.push(expressId);
|
|
1213
|
+
this.entities.push({ expressId, type, Name: name });
|
|
1214
|
+
},
|
|
1215
|
+
claimGeoreferencing: () => {
|
|
1216
|
+
if (this.georeferenced) {
|
|
1217
|
+
throw new Error('setGeoreferencing: already called — a file has at most one IfcMapConversion for its model context');
|
|
1218
|
+
}
|
|
1219
|
+
this.georeferenced = true;
|
|
1220
|
+
},
|
|
1221
|
+
});
|
|
1222
|
+
}
|
|
1223
|
+
/** The creator hooks `ifc-creator-terrain.ts`'s emitters need. */
|
|
1224
|
+
terrainContext() {
|
|
1225
|
+
return {
|
|
1226
|
+
emit: this.emitEntity,
|
|
1227
|
+
newGlobalId: () => this.newGlobalId(),
|
|
1228
|
+
ownerRef: `#${this.ownerHistoryId}`,
|
|
1229
|
+
modelContextRef: `#${this.contextId}`,
|
|
1230
|
+
bodyContextRef: `#${this.subContextBody}`,
|
|
1231
|
+
axisContextRef: `#${this.subContextAxis}`,
|
|
1232
|
+
sitePlacementRef: `#${this.worldPlacementId}`,
|
|
1233
|
+
assertSchema: (feature) => {
|
|
1234
|
+
if (this.schema !== 'IFC4X3') {
|
|
1235
|
+
throw new Error(`${feature} requires the IFC4X3 schema — IfcTriangulatedIrregularNetwork and the survey/terrain predefined types do not exist in ${this.schema}`);
|
|
1236
|
+
}
|
|
1237
|
+
},
|
|
1238
|
+
};
|
|
1239
|
+
}
|
|
1240
|
+
// ============================================================================
|
|
1180
1241
|
// Public API — Properties & Quantities
|
|
1181
1242
|
// ============================================================================
|
|
1182
1243
|
/** Attach a property set to an element */
|
|
@@ -1533,19 +1594,7 @@ export class IfcCreator {
|
|
|
1533
1594
|
};
|
|
1534
1595
|
}
|
|
1535
1596
|
buildHeader() {
|
|
1536
|
-
|
|
1537
|
-
const desc = 'Created by ifc-lite';
|
|
1538
|
-
const author = this.projectParams.Author ?? '';
|
|
1539
|
-
const org = this.projectParams.Organization ?? '';
|
|
1540
|
-
const app = 'ifc-lite';
|
|
1541
|
-
const filename = 'created.ifc';
|
|
1542
|
-
return `ISO-10303-21;
|
|
1543
|
-
HEADER;
|
|
1544
|
-
FILE_DESCRIPTION(('${esc(desc)}'),'2;1');
|
|
1545
|
-
FILE_NAME('${filename}','${now}',('${esc(author)}'),('${esc(org)}'),'${app}','${app}','');
|
|
1546
|
-
FILE_SCHEMA(('${this.schema}'));
|
|
1547
|
-
ENDSEC;
|
|
1548
|
-
`;
|
|
1597
|
+
return buildStepHeader(this.nowMs(), this.projectParams.Author ?? '', this.projectParams.Organization ?? '', fileSchemaIdentifier(this.schema));
|
|
1549
1598
|
}
|
|
1550
1599
|
// ============================================================================
|
|
1551
1600
|
// Internal — Preamble (project, site, building, contexts, units, style)
|
|
@@ -1581,7 +1630,7 @@ ENDSEC;
|
|
|
1581
1630
|
// Units
|
|
1582
1631
|
this.unitAssignmentId = this.buildUnits(params.LengthUnit ?? 'METRE', params.Currency);
|
|
1583
1632
|
// Default surface style — light grey with some specularity
|
|
1584
|
-
this.defaultStyleId = this.
|
|
1633
|
+
this.defaultStyleId = emitDefaultStyle({ emit: this.emitEntity });
|
|
1585
1634
|
// IfcProject
|
|
1586
1635
|
this.projectId = this.id();
|
|
1587
1636
|
const projectGlobalId = this.newGlobalId();
|
|
@@ -1624,59 +1673,19 @@ ENDSEC;
|
|
|
1624
1673
|
assertCostSchema(this.schema, 'ProjectParams.Currency'); // IFC2X3 Currency is an enum
|
|
1625
1674
|
units.push(emitMonetaryUnit(currency, this.emitEntity));
|
|
1626
1675
|
}
|
|
1676
|
+
this.lengthUnitId = lengthUnitId;
|
|
1627
1677
|
const assignmentId = this.id();
|
|
1628
1678
|
this.line(assignmentId, 'IFCUNITASSIGNMENT', `(${units.map(id => `#${id}`).join(',')})`);
|
|
1629
1679
|
return assignmentId;
|
|
1630
1680
|
}
|
|
1631
|
-
/**
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
this.line(colourId, 'IFCCOLOURRGB', `$,0.75,0.73,0.68`);
|
|
1636
|
-
// IfcSurfaceStyleRendering — surface + specular
|
|
1637
|
-
const renderingId = this.id();
|
|
1638
|
-
this.line(renderingId, 'IFCSURFACESTYLERENDERING', `#${colourId},0.,$,$,$,$,IFCNORMALISEDRATIOMEASURE(0.5),IFCSPECULAREXPONENT(64.),.NOTDEFINED.`);
|
|
1639
|
-
// IfcSurfaceStyle
|
|
1640
|
-
const styleId = this.id();
|
|
1641
|
-
this.line(styleId, 'IFCSURFACESTYLE', `'Default',.BOTH.,(#${renderingId})`);
|
|
1642
|
-
return styleId;
|
|
1643
|
-
}
|
|
1644
|
-
/** Create all IfcStyledItem entities — custom colour or default per element */
|
|
1681
|
+
/**
|
|
1682
|
+
* Create all `IfcStyledItem` rows — a custom colour where one was assigned,
|
|
1683
|
+
* the default grey otherwise. See `ifc-creator-styles.ts`.
|
|
1684
|
+
*/
|
|
1645
1685
|
finalizeStyles() {
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
const color = this.elementColors.get(elementId);
|
|
1650
|
-
let styleId;
|
|
1651
|
-
if (color) {
|
|
1652
|
-
const key = `${color.name}|${color.rgb.join(',')}`;
|
|
1653
|
-
const cached = styleCache.get(key);
|
|
1654
|
-
if (cached !== undefined) {
|
|
1655
|
-
styleId = cached;
|
|
1656
|
-
}
|
|
1657
|
-
else {
|
|
1658
|
-
styleId = this.buildColorStyle(color.name, color.rgb);
|
|
1659
|
-
styleCache.set(key, styleId);
|
|
1660
|
-
}
|
|
1661
|
-
}
|
|
1662
|
-
else {
|
|
1663
|
-
styleId = this.defaultStyleId;
|
|
1664
|
-
}
|
|
1665
|
-
for (const solidId of solidIds) {
|
|
1666
|
-
const styledItemId = this.id();
|
|
1667
|
-
this.line(styledItemId, 'IFCSTYLEDITEM', `#${solidId},(#${styleId}),$`);
|
|
1668
|
-
}
|
|
1669
|
-
}
|
|
1670
|
-
}
|
|
1671
|
-
/** Create a named IfcSurfaceStyle with the given RGB colour */
|
|
1672
|
-
buildColorStyle(name, rgb) {
|
|
1673
|
-
const colourId = this.id();
|
|
1674
|
-
this.line(colourId, 'IFCCOLOURRGB', `$,${num(rgb[0])},${num(rgb[1])},${num(rgb[2])}`);
|
|
1675
|
-
const renderingId = this.id();
|
|
1676
|
-
this.line(renderingId, 'IFCSURFACESTYLERENDERING', `#${colourId},0.,$,$,$,$,IFCNORMALISEDRATIOMEASURE(0.5),IFCSPECULAREXPONENT(64.),.NOTDEFINED.`);
|
|
1677
|
-
const styleId = this.id();
|
|
1678
|
-
this.line(styleId, 'IFCSURFACESTYLE', `'${esc(name)}',.BOTH.,(#${renderingId})`);
|
|
1679
|
-
return styleId;
|
|
1686
|
+
emitStyledItems(this.elementSolids, this.elementColors, this.defaultStyleId, {
|
|
1687
|
+
emit: this.emitEntity,
|
|
1688
|
+
});
|
|
1680
1689
|
}
|
|
1681
1690
|
// ============================================================================
|
|
1682
1691
|
// Internal — Material helpers
|
|
@@ -1713,12 +1722,16 @@ ENDSEC;
|
|
|
1713
1722
|
// ============================================================================
|
|
1714
1723
|
// Internal — Geometry helpers
|
|
1715
1724
|
// ============================================================================
|
|
1725
|
+
// Every builder's Position/Start/opening point is written here (#5217).
|
|
1716
1726
|
addCartesianPoint(p) {
|
|
1727
|
+
assertFinitePoint3({ IfcCartesianPoint: p }, 'IfcCreator');
|
|
1717
1728
|
const id = this.id();
|
|
1718
1729
|
this.line(id, 'IFCCARTESIANPOINT', `(${num(p[0])},${num(p[1])},${num(p[2])})`);
|
|
1719
1730
|
return id;
|
|
1720
1731
|
}
|
|
1721
1732
|
addCartesianPoint2D(p) {
|
|
1733
|
+
if (!p.every(Number.isFinite))
|
|
1734
|
+
throw new Error('IfcCreator: IfcCartesianPoint must have finite coordinates');
|
|
1722
1735
|
const id = this.id();
|
|
1723
1736
|
this.line(id, 'IFCCARTESIANPOINT', `(${num(p[0])},${num(p[1])})`);
|
|
1724
1737
|
return id;
|
|
@@ -1742,15 +1755,8 @@ ENDSEC;
|
|
|
1742
1755
|
*/
|
|
1743
1756
|
addLocalPlacement(relativeTo, placement) {
|
|
1744
1757
|
const originId = this.addCartesianPoint(placement.Location);
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
if (placement.Axis) {
|
|
1748
|
-
axisId = this.addDirection(placement.Axis);
|
|
1749
|
-
}
|
|
1750
|
-
if (placement.RefDirection) {
|
|
1751
|
-
refDirId = this.addDirection(placement.RefDirection);
|
|
1752
|
-
}
|
|
1753
|
-
const axis2Id = this.addAxis2Placement3D(originId, axisId, refDirId);
|
|
1758
|
+
const axes = completePlacementAxes(placement.Axis, placement.RefDirection); // both or neither (#5469)
|
|
1759
|
+
const axis2Id = this.addAxis2Placement3D(originId, axes && this.addDirection(axes.Axis), axes && this.addDirection(axes.RefDirection));
|
|
1754
1760
|
const id = this.id();
|
|
1755
1761
|
this.line(id, 'IFCLOCALPLACEMENT', `#${relativeTo},#${axis2Id}`);
|
|
1756
1762
|
return id;
|
|
@@ -2171,33 +2177,23 @@ ENDSEC;
|
|
|
2171
2177
|
// Internal — Relationship finalization
|
|
2172
2178
|
// ============================================================================
|
|
2173
2179
|
finalizeRelationships() {
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
|
|
2177
|
-
|
|
2178
|
-
|
|
2179
|
-
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
|
|
2186
|
-
const relId = this.id();
|
|
2187
|
-
const globalId = this.newGlobalId();
|
|
2188
|
-
const refs = relatedIds.map(id => `#${id}`).join(',');
|
|
2189
|
-
this.line(relId, 'IFCRELAGGREGATES', `'${globalId}',#${this.ownerHistoryId},$,$,#${relatingId},(${refs})`);
|
|
2190
|
-
}
|
|
2191
|
-
addIfcRelContainedInSpatialStructure(storeyId, elementIds) {
|
|
2192
|
-
const relId = this.id();
|
|
2193
|
-
const globalId = this.newGlobalId();
|
|
2194
|
-
const refs = elementIds.map(id => `#${id}`).join(',');
|
|
2195
|
-
this.line(relId, 'IFCRELCONTAINEDINSPATIALSTRUCTURE', `'${globalId}',#${this.ownerHistoryId},$,$,(${refs}),#${storeyId}`);
|
|
2180
|
+
emitSpatialRelationships({
|
|
2181
|
+
emit: this.emitEntity,
|
|
2182
|
+
newGlobalId: () => this.newGlobalId(),
|
|
2183
|
+
ownerRef: `#${this.ownerHistoryId}`,
|
|
2184
|
+
projectId: this.projectId,
|
|
2185
|
+
siteId: this.siteId,
|
|
2186
|
+
buildingId: this.buildingId,
|
|
2187
|
+
storeyIds: this.storeyIds,
|
|
2188
|
+
storeyElements: this.storeyElements,
|
|
2189
|
+
siteElements: this.siteElements,
|
|
2190
|
+
projectElements: this.projectElements,
|
|
2191
|
+
});
|
|
2196
2192
|
}
|
|
2197
2193
|
addIfcRelFillsElement(openingId, fillingId) {
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2194
|
+
emitRelFillsElement(openingId, fillingId, {
|
|
2195
|
+
emit: this.emitEntity, newGlobalId: () => this.newGlobalId(), ownerRef: `#${this.ownerHistoryId}`,
|
|
2196
|
+
});
|
|
2201
2197
|
}
|
|
2202
2198
|
// ============================================================================
|
|
2203
2199
|
// Internal — Utilities
|