@ifc-lite/drawing-2d 1.16.1 → 1.17.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/drawing-generator.d.ts +9 -1
- package/dist/drawing-generator.d.ts.map +1 -1
- package/dist/drawing-generator.js +69 -61
- package/dist/drawing-generator.js.map +1 -1
- package/dist/edge-extractor.d.ts +13 -18
- package/dist/edge-extractor.d.ts.map +1 -1
- package/dist/edge-extractor.js +87 -69
- package/dist/edge-extractor.js.map +1 -1
- package/dist/gpu-section-cutter.d.ts.map +1 -1
- package/dist/gpu-section-cutter.js +30 -15
- package/dist/gpu-section-cutter.js.map +1 -1
- package/dist/hidden-line.d.ts.map +1 -1
- package/dist/hidden-line.js +9 -5
- package/dist/hidden-line.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/math.d.ts +6 -1
- package/dist/math.d.ts.map +1 -1
- package/dist/math.js +6 -1
- package/dist/math.js.map +1 -1
- package/dist/profile-projector.d.ts +23 -16
- package/dist/profile-projector.d.ts.map +1 -1
- package/dist/profile-projector.js +65 -49
- package/dist/profile-projector.js.map +1 -1
- package/dist/projection-bands.d.ts +107 -0
- package/dist/projection-bands.d.ts.map +1 -0
- package/dist/projection-bands.js +185 -0
- package/dist/projection-bands.js.map +1 -0
- package/dist/svg-exporter.js +3 -3
- package/dist/svg-exporter.js.map +1 -1
- package/dist/types.d.ts +26 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,29 +1,30 @@
|
|
|
1
1
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
-
import {
|
|
4
|
+
import { classifyDepthRange, bandVisibility, projectPointForPlane, signedDepth, } from './projection-bands.js';
|
|
5
5
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
6
6
|
// PUBLIC API
|
|
7
7
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
8
8
|
/**
|
|
9
|
-
* Project profile polygons into 2D drawing lines
|
|
9
|
+
* Project profile polygons into 2D drawing lines, classified into the
|
|
10
|
+
* construction-projection bands.
|
|
10
11
|
*
|
|
11
|
-
* @param profiles
|
|
12
|
-
* @param plane
|
|
13
|
-
* @param
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* equivalent) are projected.
|
|
17
|
-
* @returns `DrawingLine[]` with `category: 'projection'`.
|
|
12
|
+
* @param profiles Profiles from `IfcAPI.extractProfiles()`.
|
|
13
|
+
* @param plane Section plane (axis + position, or custom).
|
|
14
|
+
* @param depths Below/above projection-band depths (world units, both > 0).
|
|
15
|
+
* @returns `DrawingLine[]` with `category: 'projection'`; overhead
|
|
16
|
+
* lines carry `visibility: 'hidden'` (dashed downstream).
|
|
18
17
|
*/
|
|
19
|
-
export function projectProfiles(profiles, plane,
|
|
18
|
+
export function projectProfiles(profiles, plane, depths) {
|
|
20
19
|
const lines = [];
|
|
21
20
|
for (const profile of profiles) {
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
const band = classifyProfileBand(profile, plane, depths);
|
|
22
|
+
const visibility = bandVisibility(band);
|
|
23
|
+
if (visibility === null) {
|
|
24
|
+
continue; // outside both bands
|
|
24
25
|
}
|
|
25
26
|
// Project outer boundary
|
|
26
|
-
pushContourLines(lines, profile, profile.outerPoints, 'projection', plane);
|
|
27
|
+
pushContourLines(lines, profile, profile.outerPoints, 'projection', plane, visibility);
|
|
27
28
|
// Project holes
|
|
28
29
|
let offset = 0;
|
|
29
30
|
for (let h = 0; h < profile.holeCounts.length; h++) {
|
|
@@ -33,7 +34,7 @@ export function projectProfiles(profiles, plane, viewDepth) {
|
|
|
33
34
|
continue;
|
|
34
35
|
}
|
|
35
36
|
const holeSlice = profile.holePoints.subarray(offset, offset + count * 2);
|
|
36
|
-
pushContourLines(lines, profile, holeSlice, 'projection', plane);
|
|
37
|
+
pushContourLines(lines, profile, holeSlice, 'projection', plane, visibility);
|
|
37
38
|
offset += count * 2;
|
|
38
39
|
}
|
|
39
40
|
}
|
|
@@ -43,29 +44,19 @@ export function projectProfiles(profiles, plane, viewDepth) {
|
|
|
43
44
|
// HELPERS
|
|
44
45
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
45
46
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
* - Not flipped: window is `[sectionPos, sectionPos + viewDepth]` (above cut)
|
|
50
|
-
* - Flipped: window is `[sectionPos - viewDepth, sectionPos]` (below cut)
|
|
51
|
-
*
|
|
52
|
-
* The element's range along the axis is `[baseCoord, topCoord]` where
|
|
53
|
-
* `topCoord = baseCoord + extrusionDir[axis] * extrusionDepth`.
|
|
47
|
+
* Classify a profile's extruded volume into a projection band by its
|
|
48
|
+
* flip-adjusted axis range. For a custom plane the depth is measured against
|
|
49
|
+
* the plane normal; for cardinal axes against the canonical +axis.
|
|
54
50
|
*/
|
|
55
|
-
function
|
|
56
|
-
const {
|
|
57
|
-
|
|
58
|
-
// Projection window (elements on the "far" side of the cut plane)
|
|
59
|
-
const rangeMin = flipped ? sectionPos - viewDepth : sectionPos;
|
|
60
|
-
const rangeMax = flipped ? sectionPos : sectionPos + viewDepth;
|
|
61
|
-
// Overlap test: [lo, hi] ∩ [rangeMin, rangeMax] ≠ ∅
|
|
62
|
-
return min <= rangeMax && max >= rangeMin;
|
|
51
|
+
function classifyProfileBand(profile, plane, depths) {
|
|
52
|
+
const { min, max } = getProfileDepthRange(profile, plane);
|
|
53
|
+
return classifyDepthRange(min, max, depths);
|
|
63
54
|
}
|
|
64
55
|
/**
|
|
65
56
|
* Convert a flat `[x0, y0, x1, y1, …]` contour in local profile space into
|
|
66
57
|
* `DrawingLine[]` by applying the profile transform and projecting to 2D.
|
|
67
58
|
*/
|
|
68
|
-
function pushContourLines(out, profile, points2d, category, plane) {
|
|
59
|
+
function pushContourLines(out, profile, points2d, category, plane, visibility) {
|
|
69
60
|
const n = Math.floor(points2d.length / 2);
|
|
70
61
|
if (n < 2)
|
|
71
62
|
return;
|
|
@@ -78,8 +69,8 @@ function pushContourLines(out, profile, points2d, category, plane) {
|
|
|
78
69
|
const y1 = points2d[j * 2 + 1];
|
|
79
70
|
const w0 = transformPoint2D(x0, y0, m);
|
|
80
71
|
const w1 = transformPoint2D(x1, y1, m);
|
|
81
|
-
const p0 =
|
|
82
|
-
const p1 =
|
|
72
|
+
const p0 = projectPointForPlane(w0, plane);
|
|
73
|
+
const p1 = projectPointForPlane(w1, plane);
|
|
83
74
|
// Skip degenerate (zero-length) segments
|
|
84
75
|
if (Math.abs(p0.x - p1.x) < 1e-7 && Math.abs(p0.y - p1.y) < 1e-7) {
|
|
85
76
|
continue;
|
|
@@ -87,11 +78,11 @@ function pushContourLines(out, profile, points2d, category, plane) {
|
|
|
87
78
|
out.push({
|
|
88
79
|
line: { start: p0, end: p1 },
|
|
89
80
|
category,
|
|
90
|
-
visibility
|
|
81
|
+
visibility,
|
|
91
82
|
entityId: profile.expressId,
|
|
92
83
|
ifcType: profile.ifcType,
|
|
93
84
|
modelIndex: profile.modelIndex,
|
|
94
|
-
depth: depthAlong(w0, w1, plane
|
|
85
|
+
depth: depthAlong(w0, w1, plane),
|
|
95
86
|
});
|
|
96
87
|
}
|
|
97
88
|
}
|
|
@@ -115,26 +106,48 @@ function matTranslation(m, axis) {
|
|
|
115
106
|
// Translation is in column 3 (indices 12, 13, 14 for x, y, z)
|
|
116
107
|
return m[12 + axisIndex(axis)];
|
|
117
108
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
109
|
+
/**
|
|
110
|
+
* Flip-adjusted depth range of a profile's extruded volume relative to the
|
|
111
|
+
* cut plane. Returns `{ min, max }` where `min < 0` means below the cut.
|
|
112
|
+
*
|
|
113
|
+
* For a cardinal axis this is `coord - position` along that axis; for a custom
|
|
114
|
+
* plane it is the signed distance to the plane. The flip sign is applied so
|
|
115
|
+
* the result is in the same convention as {@link classifyDepthRange}.
|
|
116
|
+
*/
|
|
117
|
+
function getProfileDepthRange(profile, plane) {
|
|
121
118
|
let min = Number.POSITIVE_INFINITY;
|
|
122
119
|
let max = Number.NEGATIVE_INFINITY;
|
|
120
|
+
const consider = (point) => {
|
|
121
|
+
const d = signedDepth(point, plane);
|
|
122
|
+
if (d < min)
|
|
123
|
+
min = d;
|
|
124
|
+
if (d > max)
|
|
125
|
+
max = d;
|
|
126
|
+
};
|
|
127
|
+
const extrusion = {
|
|
128
|
+
x: profile.extrusionDir[0] * profile.extrusionDepth,
|
|
129
|
+
y: profile.extrusionDir[1] * profile.extrusionDepth,
|
|
130
|
+
z: profile.extrusionDir[2] * profile.extrusionDepth,
|
|
131
|
+
};
|
|
123
132
|
const updateRange = (points2d) => {
|
|
124
133
|
const count = Math.floor(points2d.length / 2);
|
|
125
134
|
for (let index = 0; index < count; index++) {
|
|
126
|
-
const
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
min = Math.min(min, base, top);
|
|
130
|
-
max = Math.max(max, base, top);
|
|
135
|
+
const base = transformPoint2D(points2d[index * 2], points2d[index * 2 + 1], profile.transform);
|
|
136
|
+
consider(base);
|
|
137
|
+
consider({ x: base.x + extrusion.x, y: base.y + extrusion.y, z: base.z + extrusion.z });
|
|
131
138
|
}
|
|
132
139
|
};
|
|
133
140
|
updateRange(profile.outerPoints);
|
|
134
141
|
updateRange(profile.holePoints);
|
|
135
142
|
if (!Number.isFinite(min) || !Number.isFinite(max)) {
|
|
136
|
-
|
|
137
|
-
const
|
|
143
|
+
// Degenerate profile: fall back to the placement translation.
|
|
144
|
+
const t = {
|
|
145
|
+
x: matTranslation(profile.transform, 'x'),
|
|
146
|
+
y: matTranslation(profile.transform, 'y'),
|
|
147
|
+
z: matTranslation(profile.transform, 'z'),
|
|
148
|
+
};
|
|
149
|
+
const base = signedDepth(t, plane);
|
|
150
|
+
const top = signedDepth({ x: t.x + extrusion.x, y: t.y + extrusion.y, z: t.z + extrusion.z }, plane);
|
|
138
151
|
return { min: Math.min(base, top), max: Math.max(base, top) };
|
|
139
152
|
}
|
|
140
153
|
return { min, max };
|
|
@@ -142,9 +155,12 @@ function getProfileAxisRange(profile, axis) {
|
|
|
142
155
|
function axisIndex(axis) {
|
|
143
156
|
return axis === 'x' ? 0 : axis === 'y' ? 1 : 2;
|
|
144
157
|
}
|
|
145
|
-
/**
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
158
|
+
/**
|
|
159
|
+
* Average flip-adjusted depth of a projected edge along the viewing direction.
|
|
160
|
+
* Smaller depth means nearer the viewer, matching the depth-buffer convention
|
|
161
|
+
* in HiddenLineClassifier.
|
|
162
|
+
*/
|
|
163
|
+
function depthAlong(w0, w1, plane) {
|
|
164
|
+
return (signedDepth(w0, plane) + signedDepth(w1, plane)) / 2;
|
|
149
165
|
}
|
|
150
166
|
//# sourceMappingURL=profile-projector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile-projector.js","sourceRoot":"","sources":["../src/profile-projector.ts"],"names":[],"mappings":"AAAA;;+DAE+D;
|
|
1
|
+
{"version":3,"file":"profile-projector.js","sourceRoot":"","sources":["../src/profile-projector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Projection bands — classify geometry that lies *beyond* the section cut
|
|
3
|
+
* into the two architectural floor-plan reference bands (issue #979):
|
|
4
|
+
*
|
|
5
|
+
* - **VISIBLE** (toward the floor, the side a down-looking plan keeps):
|
|
6
|
+
* drawn as a **thin solid** projected edge.
|
|
7
|
+
* - **OVERHEAD** (above the cut — beams, soffits, roofs, eaves):
|
|
8
|
+
* drawn **dashed** (mapped to `visibility: 'hidden'` downstream so the
|
|
9
|
+
* existing hidden-line styling applies with no renderer change).
|
|
10
|
+
*
|
|
11
|
+
* # Sign convention (locked — matches the rest of the pipeline)
|
|
12
|
+
* Given a world coordinate `coord` along the cut axis and the plane
|
|
13
|
+
* `position`, the signed, *flip-adjusted* depth is
|
|
14
|
+
*
|
|
15
|
+
* `d = flipped ? -(coord - position) : (coord - position)`
|
|
16
|
+
*
|
|
17
|
+
* which is exactly `depthAlong` (profile-projector) / the
|
|
18
|
+
* `HiddenLineClassifier` depth-buffer convention, and the mirror of the
|
|
19
|
+
* annotation-cull half-space test in `useDrawingGeneration`.
|
|
20
|
+
* With `d`:
|
|
21
|
+
*
|
|
22
|
+
* - `d < 0` ⇒ BELOW the cut (toward the floor, nearer the viewer) ⇒ VISIBLE
|
|
23
|
+
* - `d > 0` ⇒ ABOVE the cut (overhead, farther from the viewer) ⇒ OVERHEAD
|
|
24
|
+
*
|
|
25
|
+
* `flipped` only mirrors which half-space is "below"; it never re-derives a
|
|
26
|
+
* flipped plane normal (the cutter keeps the unflipped normal — see
|
|
27
|
+
* `section-cutter.ts`), so band math applies the flip sign itself.
|
|
28
|
+
*
|
|
29
|
+
* All depths are in the same metric, RTC-shifted world space the section
|
|
30
|
+
* cutter and `MeshData.positions` use (WASM applies `unit_scale` upstream).
|
|
31
|
+
*/
|
|
32
|
+
import type { SectionPlaneConfig, Vec3, DrawingLine, MeshOutline2D } from './types.js';
|
|
33
|
+
import type { Point2D } from './types.js';
|
|
34
|
+
/** Classification of geometry relative to the two projection bands. */
|
|
35
|
+
export type ProjectionBand = 'visible' | 'overhead' | 'spanning' | 'cull';
|
|
36
|
+
/** Depth window beyond the cut, per side, in world units. Both > 0. */
|
|
37
|
+
export interface ProjectionBandDepths {
|
|
38
|
+
/** How far below the cut (toward the floor) to project as VISIBLE/solid. */
|
|
39
|
+
below: number;
|
|
40
|
+
/** How far above the cut (overhead) to project as OVERHEAD/dashed. */
|
|
41
|
+
above: number;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Flip-adjusted depth of a raw coordinate along the cut axis — the scalar
|
|
45
|
+
* mirror of {@link signedDepth} for callers that only have an axis coordinate
|
|
46
|
+
* (e.g. an element's `axisMin`/`axisMax`) rather than a full 3D point. Keeps
|
|
47
|
+
* the `flipped ? -raw : raw` sign convention in a single place.
|
|
48
|
+
*/
|
|
49
|
+
export declare function signedAxisDepth(coord: number, position: number, flipped: boolean): number;
|
|
50
|
+
/**
|
|
51
|
+
* Flip-adjusted signed depth of a world point from the cut plane.
|
|
52
|
+
* `d < 0` ⇒ below (visible side); `d > 0` ⇒ above (overhead side).
|
|
53
|
+
*/
|
|
54
|
+
export declare function signedDepth(point: Vec3, plane: SectionPlaneConfig): number;
|
|
55
|
+
/**
|
|
56
|
+
* The camera viewing direction (unit, pointing away from the viewer into the
|
|
57
|
+
* scene) for silhouette detection. For a cardinal axis it is the −axis (or
|
|
58
|
+
* +axis when flipped); for a custom plane it follows the plane normal.
|
|
59
|
+
*/
|
|
60
|
+
export declare function getViewDirectionForPlane(plane: SectionPlaneConfig): Vec3;
|
|
61
|
+
/**
|
|
62
|
+
* Project a world point into the drawing's 2D space using the SAME basis the
|
|
63
|
+
* section cutter uses, so projected construction lines coincide exactly with
|
|
64
|
+
* the cut polygons. Cardinal axes → `projectTo2D`; custom plane → the
|
|
65
|
+
* tangent/bitangent basis (`projectTo2DBasis`).
|
|
66
|
+
*/
|
|
67
|
+
export declare function projectPointForPlane(point: Vec3, plane: SectionPlaneConfig): Point2D;
|
|
68
|
+
/**
|
|
69
|
+
* Classify a flip-adjusted depth *range* `[dMin, dMax]` into a projection band.
|
|
70
|
+
*
|
|
71
|
+
* - VISIBLE band occupies `[-below, 0)` (below the cut, toward the floor).
|
|
72
|
+
* - OVERHEAD band occupies `(0, +above]` (above the cut, overhead).
|
|
73
|
+
*
|
|
74
|
+
* An element overlapping both (e.g. a wall cut at mid-height) is `'spanning'`
|
|
75
|
+
* and drawn solid — its footprint is real near-floor geometry; the cut line
|
|
76
|
+
* itself is emitted separately by the section cutter.
|
|
77
|
+
*/
|
|
78
|
+
export declare function classifyDepthRange(dMin: number, dMax: number, depths: ProjectionBandDepths): ProjectionBand;
|
|
79
|
+
/**
|
|
80
|
+
* Classify a single world-space line segment by its endpoints' depths.
|
|
81
|
+
* Used by the silhouette/edge fallback where each edge is classified on its
|
|
82
|
+
* own (no extrusion range).
|
|
83
|
+
*/
|
|
84
|
+
export declare function classifySegmentBand(a: Vec3, b: Vec3, plane: SectionPlaneConfig, depths: ProjectionBandDepths): ProjectionBand;
|
|
85
|
+
/**
|
|
86
|
+
* Map a band to the `DrawingLine.visibility` the renderer keys off:
|
|
87
|
+
* overhead → `'hidden'` (dashed), everything kept → `'visible'` (solid).
|
|
88
|
+
* Returns `null` for `'cull'` so the caller drops the line.
|
|
89
|
+
*/
|
|
90
|
+
export declare function bandVisibility(band: ProjectionBand): 'visible' | 'hidden' | null;
|
|
91
|
+
/**
|
|
92
|
+
* Convert a winding-robust mesh footprint outline (from the Rust
|
|
93
|
+
* `meshOutline2d` binding) into band-classified construction-projection lines
|
|
94
|
+
* (issue #979). The whole element is classified by its axis extent
|
|
95
|
+
* (`axisMin`/`axisMax`) — below the cut → solid, above → dashed. Contours are
|
|
96
|
+
* already in drawing 2D space, so they're emitted as closed loops verbatim.
|
|
97
|
+
*
|
|
98
|
+
* This is the winding-robust alternative to the normal-based silhouette path:
|
|
99
|
+
* it draws the true projected footprint even when the source mesh is wound
|
|
100
|
+
* inconsistently (common for ifc-lite roofs/stairs/site).
|
|
101
|
+
*/
|
|
102
|
+
export declare function outlineToProjectionLines(outline: MeshOutline2D, meta: {
|
|
103
|
+
entityId: number;
|
|
104
|
+
ifcType: string;
|
|
105
|
+
modelIndex: number;
|
|
106
|
+
}, plane: SectionPlaneConfig, depths: ProjectionBandDepths): DrawingLine[];
|
|
107
|
+
//# sourceMappingURL=projection-bands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projection-bands.d.ts","sourceRoot":"","sources":["../src/projection-bands.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEvF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAM1C,uEAAuE;AACvE,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,UAAU,GACV,UAAU,GACV,MAAM,CAAC;AAEX,uEAAuE;AACvE,MAAM,WAAW,oBAAoB;IACnC,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;CACf;AA+BD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAGzF;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAI1E;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAcxE;AAMD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAMpF;AAMD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,oBAAoB,GAC3B,cAAc,CAYhB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,IAAI,EACP,CAAC,EAAE,IAAI,EACP,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,oBAAoB,GAC3B,cAAc,CAIhB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,CAUhF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAC/D,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,oBAAoB,GAC3B,WAAW,EAAE,CAgCf"}
|
|
@@ -0,0 +1,185 @@
|
|
|
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 { projectTo2D, projectTo2DBasis } from './math.js';
|
|
5
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
6
|
+
// AXIS HELPERS
|
|
7
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
8
|
+
/** The canonical (unflipped) +axis unit normal for a cardinal section axis. */
|
|
9
|
+
function cardinalNormal(axis) {
|
|
10
|
+
switch (axis) {
|
|
11
|
+
case 'x':
|
|
12
|
+
return { x: 1, y: 0, z: 0 };
|
|
13
|
+
case 'y':
|
|
14
|
+
return { x: 0, y: 1, z: 0 };
|
|
15
|
+
case 'z':
|
|
16
|
+
return { x: 0, y: 0, z: 1 };
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The unit normal + plane offset used to measure depth. For a custom
|
|
21
|
+
* (face-picked) plane the cutter uses `normal`/`distance` verbatim, so reuse
|
|
22
|
+
* them; for cardinal axes the normal is the +axis unit and the offset is the
|
|
23
|
+
* plane `position`.
|
|
24
|
+
*/
|
|
25
|
+
function planeNormalDistance(plane) {
|
|
26
|
+
if (plane.customPlane) {
|
|
27
|
+
return { normal: plane.customPlane.normal, offset: plane.customPlane.distance };
|
|
28
|
+
}
|
|
29
|
+
return { normal: cardinalNormal(plane.axis), offset: plane.position };
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Flip-adjusted depth of a raw coordinate along the cut axis — the scalar
|
|
33
|
+
* mirror of {@link signedDepth} for callers that only have an axis coordinate
|
|
34
|
+
* (e.g. an element's `axisMin`/`axisMax`) rather than a full 3D point. Keeps
|
|
35
|
+
* the `flipped ? -raw : raw` sign convention in a single place.
|
|
36
|
+
*/
|
|
37
|
+
export function signedAxisDepth(coord, position, flipped) {
|
|
38
|
+
const raw = coord - position;
|
|
39
|
+
return flipped ? -raw : raw;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Flip-adjusted signed depth of a world point from the cut plane.
|
|
43
|
+
* `d < 0` ⇒ below (visible side); `d > 0` ⇒ above (overhead side).
|
|
44
|
+
*/
|
|
45
|
+
export function signedDepth(point, plane) {
|
|
46
|
+
const { normal, offset } = planeNormalDistance(plane);
|
|
47
|
+
const raw = point.x * normal.x + point.y * normal.y + point.z * normal.z - offset;
|
|
48
|
+
return plane.flipped ? -raw : raw;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* The camera viewing direction (unit, pointing away from the viewer into the
|
|
52
|
+
* scene) for silhouette detection. For a cardinal axis it is the −axis (or
|
|
53
|
+
* +axis when flipped); for a custom plane it follows the plane normal.
|
|
54
|
+
*/
|
|
55
|
+
export function getViewDirectionForPlane(plane) {
|
|
56
|
+
const sign = plane.flipped ? 1 : -1;
|
|
57
|
+
if (plane.customPlane) {
|
|
58
|
+
const n = plane.customPlane.normal;
|
|
59
|
+
return { x: n.x * sign, y: n.y * sign, z: n.z * sign };
|
|
60
|
+
}
|
|
61
|
+
switch (plane.axis) {
|
|
62
|
+
case 'x':
|
|
63
|
+
return { x: sign, y: 0, z: 0 };
|
|
64
|
+
case 'y':
|
|
65
|
+
return { x: 0, y: sign, z: 0 };
|
|
66
|
+
case 'z':
|
|
67
|
+
return { x: 0, y: 0, z: sign };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
71
|
+
// PROJECTION (2D) — single entry point matching the section cutter
|
|
72
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
73
|
+
/**
|
|
74
|
+
* Project a world point into the drawing's 2D space using the SAME basis the
|
|
75
|
+
* section cutter uses, so projected construction lines coincide exactly with
|
|
76
|
+
* the cut polygons. Cardinal axes → `projectTo2D`; custom plane → the
|
|
77
|
+
* tangent/bitangent basis (`projectTo2DBasis`).
|
|
78
|
+
*/
|
|
79
|
+
export function projectPointForPlane(point, plane) {
|
|
80
|
+
if (plane.customPlane) {
|
|
81
|
+
const c = plane.customPlane;
|
|
82
|
+
return projectTo2DBasis(point, c.origin, c.tangent, c.bitangent);
|
|
83
|
+
}
|
|
84
|
+
return projectTo2D(point, plane.axis, plane.flipped);
|
|
85
|
+
}
|
|
86
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
87
|
+
// BAND CLASSIFICATION
|
|
88
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
89
|
+
/**
|
|
90
|
+
* Classify a flip-adjusted depth *range* `[dMin, dMax]` into a projection band.
|
|
91
|
+
*
|
|
92
|
+
* - VISIBLE band occupies `[-below, 0)` (below the cut, toward the floor).
|
|
93
|
+
* - OVERHEAD band occupies `(0, +above]` (above the cut, overhead).
|
|
94
|
+
*
|
|
95
|
+
* An element overlapping both (e.g. a wall cut at mid-height) is `'spanning'`
|
|
96
|
+
* and drawn solid — its footprint is real near-floor geometry; the cut line
|
|
97
|
+
* itself is emitted separately by the section cutter.
|
|
98
|
+
*/
|
|
99
|
+
export function classifyDepthRange(dMin, dMax, depths) {
|
|
100
|
+
// Guard against caller passing them swapped.
|
|
101
|
+
const lo = Math.min(dMin, dMax);
|
|
102
|
+
const hi = Math.max(dMin, dMax);
|
|
103
|
+
const visibleOverlap = lo < 0 && hi >= -depths.below;
|
|
104
|
+
const overheadOverlap = hi > 0 && lo <= depths.above;
|
|
105
|
+
if (visibleOverlap && overheadOverlap)
|
|
106
|
+
return 'spanning';
|
|
107
|
+
if (visibleOverlap)
|
|
108
|
+
return 'visible';
|
|
109
|
+
if (overheadOverlap)
|
|
110
|
+
return 'overhead';
|
|
111
|
+
return 'cull';
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Classify a single world-space line segment by its endpoints' depths.
|
|
115
|
+
* Used by the silhouette/edge fallback where each edge is classified on its
|
|
116
|
+
* own (no extrusion range).
|
|
117
|
+
*/
|
|
118
|
+
export function classifySegmentBand(a, b, plane, depths) {
|
|
119
|
+
const da = signedDepth(a, plane);
|
|
120
|
+
const db = signedDepth(b, plane);
|
|
121
|
+
return classifyDepthRange(da, db, depths);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Map a band to the `DrawingLine.visibility` the renderer keys off:
|
|
125
|
+
* overhead → `'hidden'` (dashed), everything kept → `'visible'` (solid).
|
|
126
|
+
* Returns `null` for `'cull'` so the caller drops the line.
|
|
127
|
+
*/
|
|
128
|
+
export function bandVisibility(band) {
|
|
129
|
+
switch (band) {
|
|
130
|
+
case 'overhead':
|
|
131
|
+
return 'hidden';
|
|
132
|
+
case 'visible':
|
|
133
|
+
case 'spanning':
|
|
134
|
+
return 'visible';
|
|
135
|
+
case 'cull':
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Convert a winding-robust mesh footprint outline (from the Rust
|
|
141
|
+
* `meshOutline2d` binding) into band-classified construction-projection lines
|
|
142
|
+
* (issue #979). The whole element is classified by its axis extent
|
|
143
|
+
* (`axisMin`/`axisMax`) — below the cut → solid, above → dashed. Contours are
|
|
144
|
+
* already in drawing 2D space, so they're emitted as closed loops verbatim.
|
|
145
|
+
*
|
|
146
|
+
* This is the winding-robust alternative to the normal-based silhouette path:
|
|
147
|
+
* it draws the true projected footprint even when the source mesh is wound
|
|
148
|
+
* inconsistently (common for ifc-lite roofs/stairs/site).
|
|
149
|
+
*/
|
|
150
|
+
export function outlineToProjectionLines(outline, meta, plane, depths) {
|
|
151
|
+
// The outline path is cardinal-only (the toggle is gated off for custom
|
|
152
|
+
// planes), so classify against the cardinal plane position.
|
|
153
|
+
const pos = plane.customPlane ? plane.customPlane.distance : plane.position;
|
|
154
|
+
const dMin = signedAxisDepth(outline.axisMin, pos, plane.flipped);
|
|
155
|
+
const dMax = signedAxisDepth(outline.axisMax, pos, plane.flipped);
|
|
156
|
+
const visibility = bandVisibility(classifyDepthRange(dMin, dMax, depths));
|
|
157
|
+
if (visibility === null)
|
|
158
|
+
return [];
|
|
159
|
+
const lines = [];
|
|
160
|
+
for (const ring of outline.contours) {
|
|
161
|
+
const n = Math.floor(ring.length / 2);
|
|
162
|
+
if (n < 3)
|
|
163
|
+
continue; // a closed ring needs ≥3 vertices (matches the Rust source)
|
|
164
|
+
for (let i = 0; i < n; i++) {
|
|
165
|
+
const j = (i + 1) % n; // close the loop (last → first)
|
|
166
|
+
const sx = ring[i * 2];
|
|
167
|
+
const sy = ring[i * 2 + 1];
|
|
168
|
+
const ex = ring[j * 2];
|
|
169
|
+
const ey = ring[j * 2 + 1];
|
|
170
|
+
if (Math.abs(sx - ex) < 1e-7 && Math.abs(sy - ey) < 1e-7)
|
|
171
|
+
continue;
|
|
172
|
+
lines.push({
|
|
173
|
+
line: { start: { x: sx, y: sy }, end: { x: ex, y: ey } },
|
|
174
|
+
category: 'projection',
|
|
175
|
+
visibility,
|
|
176
|
+
entityId: meta.entityId,
|
|
177
|
+
ifcType: meta.ifcType,
|
|
178
|
+
modelIndex: meta.modelIndex,
|
|
179
|
+
depth: 0,
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return lines;
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=projection-bands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projection-bands.js","sourceRoot":"","sources":["../src/projection-bands.ts"],"names":[],"mappings":"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"}
|
package/dist/svg-exporter.js
CHANGED
|
@@ -101,7 +101,7 @@ export class SVGExporter {
|
|
|
101
101
|
width="${paperSize.width}mm"
|
|
102
102
|
height="${paperSize.height}mm"
|
|
103
103
|
viewBox="0 0 ${paperSize.width} ${paperSize.height}">
|
|
104
|
-
<rect width="100%" height="100%" fill="${backgroundColor}"/>
|
|
104
|
+
<rect width="100%" height="100%" fill="${this.escapeXml(backgroundColor)}"/>
|
|
105
105
|
`;
|
|
106
106
|
}
|
|
107
107
|
createDefs(drawing, scaleFactor) {
|
|
@@ -165,7 +165,7 @@ export class SVGExporter {
|
|
|
165
165
|
return ` <line x1="${p0.x.toFixed(3)}" y1="${p0.y.toFixed(3)}" x2="${p1.x.toFixed(3)}" y2="${p1.y.toFixed(3)}"
|
|
166
166
|
stroke="${style.color}" stroke-width="${style.weight}"
|
|
167
167
|
stroke-linecap="${style.lineCap}"${dashArray}
|
|
168
|
-
data-entity-id="${line.entityId}" data-ifc-type="${line.ifcType}"/>\n`;
|
|
168
|
+
data-entity-id="${line.entityId}" data-ifc-type="${this.escapeXml(line.ifcType)}"/>\n`;
|
|
169
169
|
}
|
|
170
170
|
createHatchingLayer(polygons, transform, scaleFactor) {
|
|
171
171
|
let layer = ' <g id="hatching" inkscape:label="Hatching" inkscape:groupmode="layer">\n';
|
|
@@ -204,7 +204,7 @@ export class SVGExporter {
|
|
|
204
204
|
}
|
|
205
205
|
return ` <path d="${pathData}" fill="${fill}"
|
|
206
206
|
stroke="${pattern.strokeColor}" stroke-width="${pattern.lineWeight}"
|
|
207
|
-
data-entity-id="${polygon.entityId}" data-ifc-type="${polygon.ifcType}"/>\n`;
|
|
207
|
+
data-entity-id="${polygon.entityId}" data-ifc-type="${this.escapeXml(polygon.ifcType)}"/>\n`;
|
|
208
208
|
}
|
|
209
209
|
polygonToPath(polygon, transform) {
|
|
210
210
|
let path = '';
|
package/dist/svg-exporter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg-exporter.js","sourceRoot":"","sources":["../src/svg-exporter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"svg-exporter.js","sourceRoot":"","sources":["../src/svg-exporter.ts"],"names":[],"mappings":"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"}
|