@ifc-lite/drawing-2d 1.16.2 → 1.18.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 +86 -62
- 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 -73
- package/dist/edge-extractor.js.map +1 -1
- package/dist/feature-elements.d.ts +7 -0
- package/dist/feature-elements.d.ts.map +1 -0
- package/dist/feature-elements.js +54 -0
- package/dist/feature-elements.js.map +1 -0
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -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 +63 -52
- 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/storey-bands.d.ts +80 -0
- package/dist/storey-bands.d.ts.map +1 -0
- package/dist/storey-bands.js +96 -0
- package/dist/storey-bands.js.map +1 -0
- 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 +2 -2
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* - SVG export
|
|
10
10
|
*/
|
|
11
11
|
import type { MeshData } from '@ifc-lite/geometry';
|
|
12
|
-
import type { SectionConfig, Drawing2D, DrawingLine, ProfileEntry } from './types.js';
|
|
12
|
+
import type { SectionConfig, SectionAxis, Drawing2D, DrawingLine, ProfileEntry, MeshOutline2D } from './types.js';
|
|
13
13
|
import type { SVGExportOptions } from './svg-exporter.js';
|
|
14
14
|
export interface GeneratorOptions {
|
|
15
15
|
/** Use GPU acceleration if available */
|
|
@@ -22,6 +22,14 @@ export interface GeneratorOptions {
|
|
|
22
22
|
includeEdges: boolean;
|
|
23
23
|
/** Merge collinear line segments */
|
|
24
24
|
mergeLines: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Optional winding-robust outline provider (the Rust `meshOutline2d` WASM
|
|
27
|
+
* binding, issue #979). When supplied, non-extruded geometry projects via
|
|
28
|
+
* this footprint outline instead of the normal-based mesh silhouette (which
|
|
29
|
+
* ifc-lite's unreliable winding can break). Return `null` to fall back to
|
|
30
|
+
* silhouette extraction for that mesh.
|
|
31
|
+
*/
|
|
32
|
+
outlineProvider?: (mesh: MeshData, axis: SectionAxis, flipped: boolean) => MeshOutline2D | null;
|
|
25
33
|
/** Progress callback */
|
|
26
34
|
onProgress?: (stage: string, progress: number) => void;
|
|
27
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawing-generator.d.ts","sourceRoot":"","sources":["../src/drawing-generator.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EACV,aAAa,EAEb,SAAS,EACT,WAAW,EAKX,YAAY,
|
|
1
|
+
{"version":3,"file":"drawing-generator.d.ts","sourceRoot":"","sources":["../src/drawing-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,13 +4,15 @@
|
|
|
4
4
|
import { DEFAULT_SECTION_CONFIG, makeEntityKey } from './types.js';
|
|
5
5
|
import { SectionCutter } from './section-cutter.js';
|
|
6
6
|
import { PolygonBuilder } from './polygon-builder.js';
|
|
7
|
-
import { EdgeExtractor
|
|
7
|
+
import { EdgeExtractor } from './edge-extractor.js';
|
|
8
8
|
import { HiddenLineClassifier } from './hidden-line.js';
|
|
9
9
|
import { mergeDrawingLines } from './line-merger.js';
|
|
10
10
|
import { HatchGenerator } from './hatch-generator.js';
|
|
11
11
|
import { SVGExporter } from './svg-exporter.js';
|
|
12
12
|
import { GPUSectionCutter } from './gpu-section-cutter.js';
|
|
13
13
|
import { projectProfiles } from './profile-projector.js';
|
|
14
|
+
import { getViewDirectionForPlane, outlineToProjectionLines, } from './projection-bands.js';
|
|
15
|
+
import { isFeatureElementType } from './feature-elements.js';
|
|
14
16
|
import { boundsEmpty, boundsExtendLine, lineLength, } from './math.js';
|
|
15
17
|
const DEFAULT_OPTIONS = {
|
|
16
18
|
useGPU: true,
|
|
@@ -95,64 +97,72 @@ export class Drawing2DGenerator {
|
|
|
95
97
|
depth: 0,
|
|
96
98
|
}));
|
|
97
99
|
// ─────────────────────────────────────────────────────────────────────────
|
|
98
|
-
// STAGE 4:
|
|
100
|
+
// STAGE 4: Construction Projection Lines (issue #979)
|
|
101
|
+
//
|
|
102
|
+
// Project geometry BEYOND the cut into two architectural bands:
|
|
103
|
+
// • below the cut → VISIBLE (thin solid)
|
|
104
|
+
// • above the cut → OVERHEAD (dashed, carried as `visibility:'hidden'`)
|
|
105
|
+
//
|
|
106
|
+
// Sources, picked per element to avoid double-drawing the same wall:
|
|
107
|
+
// • extruded-area solids → clean profile boundaries (`projectProfiles`)
|
|
108
|
+
// • everything else → mesh SILHOUETTE outline (NOT crease edges,
|
|
109
|
+
// which draw every tessellation facet). Runs only when `includeEdges`.
|
|
99
110
|
// ─────────────────────────────────────────────────────────────────────────
|
|
100
111
|
let projectionLines = [];
|
|
101
|
-
|
|
102
|
-
if (opts.includeProjection || opts.includeEdges) {
|
|
112
|
+
if (opts.includeProjection) {
|
|
103
113
|
report('edges', 0);
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
114
|
+
const bands = {
|
|
115
|
+
below: config.projectionBelowDepth ?? config.projectionDepth,
|
|
116
|
+
above: config.projectionAboveDepth ?? config.projectionDepth,
|
|
117
|
+
};
|
|
118
|
+
// Feature elements (IfcOpeningElement & the void/feature family) are
|
|
119
|
+
// boolean operands, not building structure — they must never project
|
|
120
|
+
// (issue #979 follow-up). Filter them from BOTH the profile path and the
|
|
121
|
+
// silhouette path: dropping them only from profiles would push them onto
|
|
122
|
+
// the silhouette path (they'd fall out of `coveredKeys` and their raw
|
|
123
|
+
// mesh would then be silhouetted), so the two must be filtered together.
|
|
124
|
+
// The Rust extractor already skips them at the source, but a CI-lagged
|
|
125
|
+
// WASM bundle can still emit opening profiles, and opening MESHES always
|
|
126
|
+
// reach `meshes` — so this TS filter is the load-bearing guard.
|
|
127
|
+
const projectionProfiles = profiles?.filter((p) => !isFeatureElementType(p.ifcType));
|
|
128
|
+
// Per-element dedup: elements with an extracted profile take their
|
|
129
|
+
// projection from the clean profile path only; the silhouette fallback
|
|
130
|
+
// skips them.
|
|
131
|
+
const coveredKeys = new Set();
|
|
132
|
+
if (projectionProfiles && projectionProfiles.length > 0) {
|
|
133
|
+
for (const profile of projectionProfiles) {
|
|
134
|
+
coveredKeys.add(makeEntityKey(profile.modelIndex, profile.expressId));
|
|
135
|
+
}
|
|
136
|
+
projectionLines.push(...projectProfiles(projectionProfiles, config.plane, bands));
|
|
107
137
|
}
|
|
108
138
|
if (opts.includeEdges) {
|
|
109
|
-
//
|
|
110
|
-
//
|
|
111
|
-
|
|
112
|
-
//
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
const
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
...
|
|
132
|
-
|
|
133
|
-
];
|
|
139
|
+
// Outline for non-extruded geometry (roofs, stairs, site, BReps) with
|
|
140
|
+
// no extracted profile — the elements issue #979 specifically calls
|
|
141
|
+
// out. Prefer the winding-robust Rust `meshOutline2d` footprint when an
|
|
142
|
+
// outlineProvider is supplied; fall back per-mesh to the normal-based
|
|
143
|
+
// silhouette (which can break on ifc-lite's unreliable winding).
|
|
144
|
+
const meshesForSilhouette = meshes.filter((m) => !isFeatureElementType(m.ifcType) &&
|
|
145
|
+
!coveredKeys.has(makeEntityKey(m.modelIndex ?? 0, m.expressId)));
|
|
146
|
+
const viewDir = getViewDirectionForPlane(config.plane);
|
|
147
|
+
for (const mesh of meshesForSilhouette) {
|
|
148
|
+
const outline = opts.outlineProvider
|
|
149
|
+
? opts.outlineProvider(mesh, config.plane.axis, config.plane.flipped)
|
|
150
|
+
: null;
|
|
151
|
+
if (outline && outline.contours.length > 0) {
|
|
152
|
+
projectionLines.push(...outlineToProjectionLines(outline, {
|
|
153
|
+
entityId: mesh.expressId,
|
|
154
|
+
ifcType: mesh.ifcType ?? 'Unknown',
|
|
155
|
+
modelIndex: mesh.modelIndex ?? 0,
|
|
156
|
+
}, config.plane, bands));
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
const edges = this.edgeExtractor.extractEdges(mesh);
|
|
160
|
+
const silhouettes = this.edgeExtractor.extractSilhouettes(edges, viewDir);
|
|
161
|
+
projectionLines.push(...this.edgeExtractor.edgesToProjectionLines(silhouettes, config.plane, bands));
|
|
162
|
+
}
|
|
134
163
|
}
|
|
135
164
|
}
|
|
136
|
-
|
|
137
|
-
// No edge extraction requested, but projection is enabled.
|
|
138
|
-
// Use crease-edge fallback for entities not covered by profile extraction.
|
|
139
|
-
const profileKeys = new Set((profiles ?? []).map((profile) => makeEntityKey(profile.modelIndex, profile.expressId)));
|
|
140
|
-
const allEdges = this.edgeExtractor.extractEdgesFromMeshes(meshes);
|
|
141
|
-
const projectionEdges = this.edgeExtractor.filterEdgesByDepth(allEdges, config.plane.axis, config.plane.position, config.projectionDepth, config.plane.flipped);
|
|
142
|
-
const creaseEdges = projectionEdges.filter((e) => {
|
|
143
|
-
if (e.type !== 'crease')
|
|
144
|
-
return false;
|
|
145
|
-
if (profileKeys.size === 0)
|
|
146
|
-
return true;
|
|
147
|
-
return !profileKeys.has(makeEntityKey(e.modelIndex, e.entityId));
|
|
148
|
-
});
|
|
149
|
-
projectionLines = [
|
|
150
|
-
...projectionLines,
|
|
151
|
-
...this.edgeExtractor.edgesToDrawingLines(creaseEdges, config.plane.axis, config.plane.flipped, 'projection', config.plane.position),
|
|
152
|
-
];
|
|
153
|
-
}
|
|
154
|
-
// Filter out outlier lines that are abnormally long (likely artifacts)
|
|
155
|
-
// Use cut polygon bounds to determine reasonable max line length
|
|
165
|
+
// Drop outlier lines abnormally longer than the cut area (artifacts).
|
|
156
166
|
const cutBounds = this.computeBounds(cutLines);
|
|
157
167
|
if (cutBounds.min.x < cutBounds.max.x && cutBounds.min.y < cutBounds.max.y) {
|
|
158
168
|
const boundsWidth = cutBounds.max.x - cutBounds.min.x;
|
|
@@ -160,7 +170,6 @@ export class Drawing2DGenerator {
|
|
|
160
170
|
const boundsDiagonal = Math.sqrt(boundsWidth * boundsWidth + boundsHeight * boundsHeight);
|
|
161
171
|
// Allow lines up to 1.5x the diagonal of the cut area
|
|
162
172
|
const maxLineLength = boundsDiagonal * 1.5;
|
|
163
|
-
silhouetteLines = silhouetteLines.filter((line) => lineLength(line.line) <= maxLineLength);
|
|
164
173
|
projectionLines = projectionLines.filter((line) => lineLength(line.line) <= maxLineLength);
|
|
165
174
|
}
|
|
166
175
|
report('edges', 1);
|
|
@@ -168,18 +177,33 @@ export class Drawing2DGenerator {
|
|
|
168
177
|
// ─────────────────────────────────────────────────────────────────────────
|
|
169
178
|
// STAGE 5: Hidden Line Removal
|
|
170
179
|
// ─────────────────────────────────────────────────────────────────────────
|
|
171
|
-
let allLines = [...cutLines, ...projectionLines
|
|
172
|
-
if (opts.includeHiddenLines &&
|
|
180
|
+
let allLines = [...cutLines, ...projectionLines];
|
|
181
|
+
if (opts.includeHiddenLines && projectionLines.length > 0) {
|
|
173
182
|
report('hidden', 0);
|
|
174
183
|
// Compute bounds for depth buffer
|
|
175
184
|
const bounds = this.computeBounds(allLines);
|
|
176
|
-
//
|
|
177
|
-
|
|
178
|
-
//
|
|
179
|
-
|
|
180
|
-
const
|
|
181
|
-
//
|
|
182
|
-
|
|
185
|
+
// The depth buffer must cover everything projection can emit — including
|
|
186
|
+
// the (possibly wider) construction-projection bands — or in-band lines
|
|
187
|
+
// beyond projectionDepth would be classified against an incomplete buffer
|
|
188
|
+
// and wrongly stay visible because their occluders were never rasterized.
|
|
189
|
+
const occluderDepth = Math.max(config.projectionDepth, config.projectionBelowDepth ?? config.projectionDepth, config.projectionAboveDepth ?? config.projectionDepth);
|
|
190
|
+
// Build depth buffer and classify lines. The occluder set deliberately
|
|
191
|
+
// keeps the FULL `meshes` (incl. feature-element/opening meshes that are
|
|
192
|
+
// filtered out of projection above): an opening mesh is coincident with
|
|
193
|
+
// the void in its host wall, which writes the same depth, so it never
|
|
194
|
+
// changes occlusion — and dropping it could only ever REVEAL a
|
|
195
|
+
// through-wall line that should stay hidden. Don't "tidy" this to the
|
|
196
|
+
// filtered set.
|
|
197
|
+
this.hiddenLineClassifier.buildDepthBuffer(meshes, config.plane.axis, config.plane.position, occluderDepth, config.plane.flipped, bounds);
|
|
198
|
+
// Occlusion only DOWNGRADES visible → hidden; it can never reveal an
|
|
199
|
+
// already-dashed OVERHEAD line. So classify the visible (below-cut)
|
|
200
|
+
// projection lines and pass overhead lines through unchanged — otherwise
|
|
201
|
+
// an unoccluded overhead beam would be re-marked 'visible' (solid).
|
|
202
|
+
const toClassify = allLines.filter((l) => l.category !== 'cut' && l.visibility === 'visible');
|
|
203
|
+
const passthrough = allLines.filter((l) => l.category !== 'cut' && l.visibility !== 'visible');
|
|
204
|
+
const classifiedLines = this.hiddenLineClassifier.applyVisibility(toClassify);
|
|
205
|
+
// Recombine with cut lines (always visible) + overhead pass-through.
|
|
206
|
+
allLines = [...cutLines, ...classifiedLines, ...passthrough];
|
|
183
207
|
report('hidden', 1);
|
|
184
208
|
}
|
|
185
209
|
// ─────────────────────────────────────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawing-generator.js","sourceRoot":"","sources":["../src/drawing-generator.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAyB/D,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAoB,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAyB,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EACL,WAAW,EAEX,gBAAgB,EAEhB,UAAU,GACX,MAAM,WAAW,CAAC;AAqBnB,MAAM,eAAe,GAAqB;IACxC,MAAM,EAAE,IAAI;IACZ,kBAAkB,EAAE,IAAI;IACxB,iBAAiB,EAAE,IAAI;IACvB,YAAY,EAAE,IAAI;IAClB,UAAU,EAAE,IAAI;CACjB,CAAC;AAQF,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E,MAAM,OAAO,kBAAkB;IACrB,SAAS,GAA4B,IAAI,CAAC;IAC1C,SAAS,GAAyB,IAAI,CAAC;IACvC,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;IACtC,aAAa,GAAG,IAAI,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB;IAC1D,oBAAoB,GAAG,IAAI,oBAAoB,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;IACtC,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IAEhC,SAAS,GAAqB,IAAI,CAAC;IACnC,WAAW,GAAG,KAAK,CAAC;IAE5B;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,SAAqB;QACpC,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC;YACjD,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB;QAC9D,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CACZ,MAAkB,EAClB,MAAqB,EACrB,UAAqC,EAAE,EACvC,QAAyB;QAEzB,MAAM,IAAI,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,OAAO,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEpC,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,QAAgB,EAAE,EAAE;YACjD,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACrC,CAAC,CAAC;QAEF,4EAA4E;QAC5E,2BAA2B;QAC3B,4EAA4E;QAC5E,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAErB,IAAI,WAAyB,CAAC;QAE9B,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACjF,mEAAmE;YACnE,gEAAgE;YAChE,kEAAkE;YAClE,gEAAgE;YAChE,cAAc;YACd,WAAW,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,gEAAgE;YAChE,iEAAiE;YACjE,0DAA0D;YAC1D,gEAAgE;YAChE,uDAAuD;YACvD,IAAI,CAAC,SAAS,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACjD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACnD,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC;QACnC,CAAC;QAED,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAErB,4EAA4E;QAC5E,kCAAkC;QAClC,4EAA4E;QAC5E,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAEtB,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAEnE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAEtB,4EAA4E;QAC5E,iDAAiD;QACjD,4EAA4E;QAC5E,MAAM,QAAQ,GAAkB,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACxD,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE;YAC1C,QAAQ,EAAE,KAAqB;YAC/B,UAAU,EAAE,SAAkB;YAC9B,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,KAAK,EAAE,CAAC;SACT,CAAC,CAAC,CAAC;QAEJ,4EAA4E;QAC5E,8CAA8C;QAC9C,4EAA4E;QAC5E,IAAI,eAAe,GAAkB,EAAE,CAAC;QACxC,IAAI,eAAe,GAAkB,EAAE,CAAC;QAExC,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAChD,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAEnB,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC9D,yEAAyE;gBACzE,eAAe,GAAG,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;YACpF,CAAC;YAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,yEAAyE;gBACzE,wCAAwC;gBACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;gBAEnE,mCAAmC;gBACnC,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAC3D,QAAQ,EACR,MAAM,CAAC,KAAK,CAAC,IAAI,EACjB,MAAM,CAAC,KAAK,CAAC,QAAQ,EACrB,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,KAAK,CAAC,OAAO,CACrB,CAAC;gBAEF,8CAA8C;gBAC9C,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAE1E,sBAAsB;gBACtB,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;gBAEpF,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CACtD,WAAW,EACX,MAAM,CAAC,KAAK,CAAC,IAAI,EACjB,MAAM,CAAC,KAAK,CAAC,OAAO,EACpB,YAAY,EACZ,MAAM,CAAC,KAAK,CAAC,QAAQ,CACtB,CAAC;gBAEF,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBAC3B,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CACxF,CAAC;oBACF,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;wBAClD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;4BACzD,OAAO,KAAK,CAAC;wBACf,CAAC;wBACD,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;4BAC3B,OAAO,IAAI,CAAC;wBACd,CAAC;wBACD,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACzE,CAAC,CAAC,CAAC;oBAEH,eAAe,GAAG;wBAChB,GAAG,eAAe;wBAClB,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CACvC,WAAW,EACX,MAAM,CAAC,KAAK,CAAC,IAAI,EACjB,MAAM,CAAC,KAAK,CAAC,OAAO,EACpB,YAAY,EACZ,MAAM,CAAC,KAAK,CAAC,QAAQ,CACtB;qBACF,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAClC,2DAA2D;gBAC3D,2EAA2E;gBAC3E,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CACxF,CAAC;gBACF,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;gBACnE,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAC3D,QAAQ,EACR,MAAM,CAAC,KAAK,CAAC,IAAI,EACjB,MAAM,CAAC,KAAK,CAAC,QAAQ,EACrB,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,KAAK,CAAC,OAAO,CACrB,CAAC;gBACF,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC/C,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;wBAAE,OAAO,KAAK,CAAC;oBACtC,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC;wBAAE,OAAO,IAAI,CAAC;oBACxC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACnE,CAAC,CAAC,CAAC;gBACH,eAAe,GAAG;oBAChB,GAAG,eAAe;oBAClB,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CACvC,WAAW,EACX,MAAM,CAAC,KAAK,CAAC,IAAI,EACjB,MAAM,CAAC,KAAK,CAAC,OAAO,EACpB,YAAY,EACZ,MAAM,CAAC,KAAK,CAAC,QAAQ,CACtB;iBACF,CAAC;YACJ,CAAC;YAED,uEAAuE;YACvE,iEAAiE;YACjE,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC3E,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBACtD,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,YAAY,CAAC,CAAC;gBAC1F,sDAAsD;gBACtD,MAAM,aAAa,GAAG,cAAc,GAAG,GAAG,CAAC;gBAE3C,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,CAAC;gBAC3F,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,CAAC;YAC7F,CAAC;YAED,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACrB,CAAC;QAED,4EAA4E;QAC5E,+BAA+B;QAC/B,4EAA4E;QAC5E,IAAI,QAAQ,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,eAAe,EAAE,GAAG,eAAe,CAAC,CAAC;QAErE,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;YAC1F,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAEpB,kCAAkC;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAE5C,wCAAwC;YACxC,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CACxC,MAAM,EACN,MAAM,CAAC,KAAK,CAAC,IAAI,EACjB,MAAM,CAAC,KAAK,CAAC,QAAQ,EACrB,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,KAAK,CAAC,OAAO,EACpB,MAAM,CACP,CAAC;YAEF,8BAA8B;YAC9B,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC;YACrE,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;YAEnF,4CAA4C;YAC5C,QAAQ,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,eAAe,CAAC,CAAC;YAE7C,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC;QAED,4EAA4E;QAC5E,wBAAwB;QACxB,4EAA4E;QAC5E,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YACrB,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YACvC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACvB,CAAC;QAED,4EAA4E;QAC5E,WAAW;QACX,4EAA4E;QAC5E,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAEvD,wBAAwB;QACxB,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,MAAM,CAAC;QACzE,MAAM,mBAAmB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,MAAM,CAAC;QACvF,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;QACjF,MAAM,mBAAmB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,MAAM,CAAC;QAEvF,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAEtB,OAAO;YACL,MAAM;YACN,KAAK,EAAE,QAAQ;YACf,WAAW;YACX,kBAAkB,EAAE,EAAE,EAAE,gDAAgD;YACxE,MAAM;YACN,KAAK,EAAE;gBACL,YAAY;gBACZ,mBAAmB;gBACnB,eAAe;gBACf,mBAAmB;gBACnB,YAAY,EAAE,WAAW,CAAC,MAAM;gBAChC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;gBACxE,gBAAgB;aACjB;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,OAAkB,EAAE,OAA0B;QACtD,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,OAAkB;QACjC,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CACtD,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CACrB,CAAC;QAEF,MAAM,UAAU,GAAkB,EAAE,CAAC;QACrC,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;YAClC,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACrC,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,QAAQ,EAAE,YAAY;oBACtB,UAAU,EAAE,SAAS;oBACrB,QAAQ,EAAE,SAAS,CAAC,QAAQ;oBAC5B,OAAO,EAAE,SAAS,CAAC,OAAO;oBAC1B,UAAU,EAAE,SAAS,CAAC,UAAU;oBAChC,KAAK,EAAE,CAAC;iBACT,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,KAAoB;QACxC,IAAI,MAAM,GAAG,WAAW,EAAE,CAAC;QAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,GAAG,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;CACF;AAED,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAqB,EACrB,QAAgB,EAChB,UAAiD,EAAE;IAEnD,OAAO;QACL,KAAK,EAAE;YACL,IAAI;YACJ,QAAQ;YACR,OAAO,EAAE,KAAK;SACf;QACD,GAAG,sBAAsB;QACzB,GAAG,OAAO;KACX,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAkB,EAClB,SAAiB,EACjB,OAAmC;IAEnC,MAAM,SAAS,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;QAE7B,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE;YACjD,eAAe,EAAE,CAAC,EAAE,qBAAqB;YACzC,KAAK,EAAE,GAAG;SACX,CAAC,CAAC;QAEH,OAAO,MAAM,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAkB,EAClB,IAAe,EACf,QAAgB,EAChB,OAAmC;IAEnC,MAAM,SAAS,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;QAE7B,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE;YACjD,eAAe,EAAE,EAAE;YACnB,KAAK,EAAE,GAAG;SACX,CAAC,CAAC;QAEH,OAAO,MAAM,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"drawing-generator.js","sourceRoot":"","sources":["../src/drawing-generator.ts"],"names":[],"mappings":"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"}
|
package/dist/edge-extractor.d.ts
CHANGED
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
* - Silhouette edges (contour edges for a given view direction)
|
|
8
8
|
*/
|
|
9
9
|
import type { MeshData } from '@ifc-lite/geometry';
|
|
10
|
-
import type { Vec3, EdgeData, DrawingLine,
|
|
10
|
+
import type { Vec3, EdgeData, DrawingLine, SectionPlaneConfig } from './types.js';
|
|
11
|
+
import { type ProjectionBandDepths } from './projection-bands.js';
|
|
11
12
|
export declare class EdgeExtractor {
|
|
12
13
|
/** Crease angle threshold in radians */
|
|
13
14
|
private creaseAngle;
|
|
@@ -16,32 +17,26 @@ export declare class EdgeExtractor {
|
|
|
16
17
|
* Extract all feature edges from a mesh
|
|
17
18
|
*/
|
|
18
19
|
extractEdges(mesh: MeshData): EdgeData[];
|
|
19
|
-
/**
|
|
20
|
-
* Extract edges from multiple meshes
|
|
21
|
-
*/
|
|
22
|
-
extractEdgesFromMeshes(meshes: MeshData[]): EdgeData[];
|
|
23
20
|
/**
|
|
24
21
|
* Extract silhouette edges for a given view direction
|
|
25
22
|
* Silhouette edges are where one adjacent face is front-facing and the other is back-facing
|
|
26
23
|
*/
|
|
27
24
|
extractSilhouettes(edges: EdgeData[], viewDirection: Vec3): EdgeData[];
|
|
28
25
|
/**
|
|
29
|
-
* Convert edges
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
26
|
+
* Convert silhouette edges into band-classified construction-projection
|
|
27
|
+
* lines (issue #979). Each edge is classified by its own endpoints:
|
|
28
|
+
* - below the cut → `visibility: 'visible'` (thin solid)
|
|
29
|
+
* - above the cut → `visibility: 'hidden'` (dashed)
|
|
30
|
+
* - outside both bands → dropped
|
|
31
|
+
*
|
|
32
|
+
* Projection uses the SAME basis as the section cutter
|
|
33
|
+
* (`projectPointForPlane`), so silhouette lines coincide with cut polygons.
|
|
34
|
+
* Emitted as `category: 'projection'` (the issue's "thin solid projected
|
|
35
|
+
* edge"), not the heavier `silhouette` weight.
|
|
37
36
|
*/
|
|
38
|
-
|
|
37
|
+
edgesToProjectionLines(edges: EdgeData[], plane: SectionPlaneConfig, depths: ProjectionBandDepths): DrawingLine[];
|
|
39
38
|
private getVertex;
|
|
40
39
|
private computeFaceNormal;
|
|
41
40
|
private registerEdge;
|
|
42
41
|
}
|
|
43
|
-
/**
|
|
44
|
-
* Get view direction from section axis
|
|
45
|
-
*/
|
|
46
|
-
export declare function getViewDirection(axis: 'x' | 'y' | 'z', flipped: boolean): Vec3;
|
|
47
42
|
//# sourceMappingURL=edge-extractor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge-extractor.d.ts","sourceRoot":"","sources":["../src/edge-extractor.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"edge-extractor.d.ts","sourceRoot":"","sources":["../src/edge-extractor.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AA4BlF,OAAO,EACL,KAAK,oBAAoB,EAK1B,MAAM,uBAAuB,CAAC;AAuC/B,qBAAa,aAAa;IACxB,wCAAwC;IACxC,OAAO,CAAC,WAAW,CAAS;gBAEhB,kBAAkB,GAAE,MAAW;IAI3C;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,EAAE;IA+ExC;;;OAGG;IACH,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,GAAG,QAAQ,EAAE;IA6BtE;;;;;;;;;;;OAWG;IACH,sBAAsB,CACpB,KAAK,EAAE,QAAQ,EAAE,EACjB,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,oBAAoB,GAC3B,WAAW,EAAE;IAgDhB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,YAAY;CAoBrB"}
|
package/dist/edge-extractor.js
CHANGED
|
@@ -1,7 +1,42 @@
|
|
|
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 { vec3, vec3Sub, vec3Cross, vec3Normalize, vec3Dot,
|
|
4
|
+
import { vec3, vec3Sub, vec3Cross, vec3Normalize, vec3Dot, vec3Lerp, EPSILON, } from './math.js';
|
|
5
|
+
/**
|
|
6
|
+
* Clip a segment to the depth window `[lo, hi]` in flip-adjusted depth.
|
|
7
|
+
* `d0`/`d1` are the endpoint depths; returns the `[t0, t1]` parameter range
|
|
8
|
+
* (0 = start, 1 = end) inside the window, or `null` if the segment is entirely
|
|
9
|
+
* outside it. A segment parallel to the plane is in-or-out as a whole.
|
|
10
|
+
*/
|
|
11
|
+
function clipSegmentDepth(d0, d1, lo, hi) {
|
|
12
|
+
const dd = d1 - d0;
|
|
13
|
+
if (Math.abs(dd) < 1e-12) {
|
|
14
|
+
return d0 >= lo && d0 <= hi ? [0, 1] : null;
|
|
15
|
+
}
|
|
16
|
+
const ta = (lo - d0) / dd;
|
|
17
|
+
const tb = (hi - d0) / dd;
|
|
18
|
+
const t0 = Math.max(0, Math.min(ta, tb));
|
|
19
|
+
const t1 = Math.min(1, Math.max(ta, tb));
|
|
20
|
+
return t0 <= t1 ? [t0, t1] : null;
|
|
21
|
+
}
|
|
22
|
+
import { classifySegmentBand, bandVisibility, projectPointForPlane, signedDepth, } from './projection-bands.js';
|
|
23
|
+
/**
|
|
24
|
+
* Dot-product deadband for the silhouette test (issue #979).
|
|
25
|
+
*
|
|
26
|
+
* A silhouette edge separates a face that is front-facing (normal points
|
|
27
|
+
* toward the viewer, `dot < -ε`) from one that is NOT front-facing. For an
|
|
28
|
+
* axis-aligned box viewed straight down — the common floor-plan case — the top
|
|
29
|
+
* face is front-facing while the four side faces are exactly perpendicular
|
|
30
|
+
* (`dot ≈ 0`); the footprint outline is precisely the top-vs-side edges, so
|
|
31
|
+
* "not front-facing" must include the perpendicular (deadband) faces, not just
|
|
32
|
+
* strictly-back ones.
|
|
33
|
+
*
|
|
34
|
+
* The deadband must be larger than f32 normal noise so two perpendicular side
|
|
35
|
+
* faces (`dot ≈ 0`) are classified identically and their shared vertical edge
|
|
36
|
+
* doesn't flicker as a spurious silhouette. 1e-4 (~0.006°) absorbs the noise
|
|
37
|
+
* without excluding any genuinely tilted face (e.g. a pitched roof).
|
|
38
|
+
*/
|
|
39
|
+
const SILHOUETTE_EPSILON = 1e-4;
|
|
5
40
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
6
41
|
// EDGE EXTRACTOR CLASS
|
|
7
42
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
@@ -79,17 +114,6 @@ export class EdgeExtractor {
|
|
|
79
114
|
}
|
|
80
115
|
return edges;
|
|
81
116
|
}
|
|
82
|
-
/**
|
|
83
|
-
* Extract edges from multiple meshes
|
|
84
|
-
*/
|
|
85
|
-
extractEdgesFromMeshes(meshes) {
|
|
86
|
-
const allEdges = [];
|
|
87
|
-
for (const mesh of meshes) {
|
|
88
|
-
const edges = this.extractEdges(mesh);
|
|
89
|
-
allEdges.push(...edges);
|
|
90
|
-
}
|
|
91
|
-
return allEdges;
|
|
92
|
-
}
|
|
93
117
|
/**
|
|
94
118
|
* Extract silhouette edges for a given view direction
|
|
95
119
|
* Silhouette edges are where one adjacent face is front-facing and the other is back-facing
|
|
@@ -107,58 +131,65 @@ export class EdgeExtractor {
|
|
|
107
131
|
}
|
|
108
132
|
const dot0 = vec3Dot(edge.face0Normal, normalizedView);
|
|
109
133
|
const dot1 = vec3Dot(edge.face1Normal, normalizedView);
|
|
110
|
-
// Silhouette: one face
|
|
111
|
-
|
|
134
|
+
// Silhouette: exactly one adjacent face is front-facing (normal toward
|
|
135
|
+
// the viewer). "Not front-facing" deliberately includes perpendicular
|
|
136
|
+
// (deadband) faces so the top-vs-side outline edges of an axis-aligned
|
|
137
|
+
// box survive, while two perpendicular side faces (both not-front) don't
|
|
138
|
+
// flicker into a spurious silhouette under f32 noise. See
|
|
139
|
+
// SILHOUETTE_EPSILON.
|
|
140
|
+
const front0 = dot0 < -SILHOUETTE_EPSILON;
|
|
141
|
+
const front1 = dot1 < -SILHOUETTE_EPSILON;
|
|
142
|
+
return front0 !== front1;
|
|
112
143
|
});
|
|
113
144
|
}
|
|
114
145
|
/**
|
|
115
|
-
* Convert edges
|
|
146
|
+
* Convert silhouette edges into band-classified construction-projection
|
|
147
|
+
* lines (issue #979). Each edge is classified by its own endpoints:
|
|
148
|
+
* - below the cut → `visibility: 'visible'` (thin solid)
|
|
149
|
+
* - above the cut → `visibility: 'hidden'` (dashed)
|
|
150
|
+
* - outside both bands → dropped
|
|
151
|
+
*
|
|
152
|
+
* Projection uses the SAME basis as the section cutter
|
|
153
|
+
* (`projectPointForPlane`), so silhouette lines coincide with cut polygons.
|
|
154
|
+
* Emitted as `category: 'projection'` (the issue's "thin solid projected
|
|
155
|
+
* edge"), not the heavier `silhouette` weight.
|
|
116
156
|
*/
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
157
|
+
edgesToProjectionLines(edges, plane, depths) {
|
|
158
|
+
const lines = [];
|
|
159
|
+
// Band window in flip-adjusted depth: visible [-below, 0] ∪ overhead [0, above].
|
|
160
|
+
const windowLo = -depths.below;
|
|
161
|
+
const windowHi = depths.above;
|
|
162
|
+
for (const edge of edges) {
|
|
163
|
+
const d0 = signedDepth(edge.v0, plane);
|
|
164
|
+
const d1 = signedDepth(edge.v1, plane);
|
|
165
|
+
// Clip the 3D segment to the band window first, so a long sloped roof /
|
|
166
|
+
// stair / ramp edge with only a small in-band overlap doesn't get
|
|
167
|
+
// projected full-length outside the configured projection window.
|
|
168
|
+
const clip = clipSegmentDepth(d0, d1, windowLo, windowHi);
|
|
169
|
+
if (!clip)
|
|
170
|
+
continue;
|
|
171
|
+
const a = vec3Lerp(edge.v0, edge.v1, clip[0]);
|
|
172
|
+
const b = vec3Lerp(edge.v0, edge.v1, clip[1]);
|
|
173
|
+
const visibility = bandVisibility(classifySegmentBand(a, b, plane, depths));
|
|
174
|
+
if (visibility === null)
|
|
175
|
+
continue;
|
|
176
|
+
const start = projectPointForPlane(a, plane);
|
|
177
|
+
const end = projectPointForPlane(b, plane);
|
|
178
|
+
// Skip degenerate (zero-length) projected segments.
|
|
179
|
+
if (Math.abs(start.x - end.x) < EPSILON && Math.abs(start.y - end.y) < EPSILON) {
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
lines.push({
|
|
129
183
|
line: { start, end },
|
|
130
|
-
category,
|
|
131
|
-
visibility
|
|
184
|
+
category: 'projection',
|
|
185
|
+
visibility,
|
|
132
186
|
entityId: edge.entityId,
|
|
133
187
|
ifcType: edge.ifcType,
|
|
134
188
|
modelIndex: edge.modelIndex,
|
|
135
|
-
depth,
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* Filter edges that are within a depth range from the section plane.
|
|
141
|
-
* Includes edges where:
|
|
142
|
-
* - Either endpoint is within range
|
|
143
|
-
* - The edge crosses through the depth band (one endpoint before, one after)
|
|
144
|
-
*/
|
|
145
|
-
filterEdgesByDepth(edges, axis, sectionPosition, maxDepth, flipped) {
|
|
146
|
-
return edges.filter((edge) => {
|
|
147
|
-
const d0 = edge.v0[axis] - sectionPosition;
|
|
148
|
-
const d1 = edge.v1[axis] - sectionPosition;
|
|
149
|
-
// Define the valid depth range
|
|
150
|
-
// When not flipped: [0, maxDepth] (positive direction from plane)
|
|
151
|
-
// When flipped: [-maxDepth, 0] (negative direction from plane)
|
|
152
|
-
const rangeMin = flipped ? -maxDepth : 0;
|
|
153
|
-
const rangeMax = flipped ? 0 : maxDepth;
|
|
154
|
-
// Check if endpoints are within range
|
|
155
|
-
const inRange0 = d0 >= rangeMin && d0 <= rangeMax;
|
|
156
|
-
const inRange1 = d1 >= rangeMin && d1 <= rangeMax;
|
|
157
|
-
// Check if edge crosses the depth band
|
|
158
|
-
// This happens when one endpoint is before rangeMin and the other is after rangeMax
|
|
159
|
-
const crossesBand = (d0 < rangeMin && d1 > rangeMax) || (d1 < rangeMin && d0 > rangeMax);
|
|
160
|
-
return inRange0 || inRange1 || crossesBand;
|
|
161
|
-
});
|
|
189
|
+
depth: 0,
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
return lines;
|
|
162
193
|
}
|
|
163
194
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
164
195
|
// PRIVATE HELPERS
|
|
@@ -188,21 +219,4 @@ export class EdgeExtractor {
|
|
|
188
219
|
edgeMap.get(key).faceIndices.push(faceIndex);
|
|
189
220
|
}
|
|
190
221
|
}
|
|
191
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
192
|
-
// UTILITY FUNCTIONS
|
|
193
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
194
|
-
/**
|
|
195
|
-
* Get view direction from section axis
|
|
196
|
-
*/
|
|
197
|
-
export function getViewDirection(axis, flipped) {
|
|
198
|
-
const sign = flipped ? 1 : -1;
|
|
199
|
-
switch (axis) {
|
|
200
|
-
case 'x':
|
|
201
|
-
return { x: sign, y: 0, z: 0 };
|
|
202
|
-
case 'y':
|
|
203
|
-
return { x: 0, y: sign, z: 0 };
|
|
204
|
-
case 'z':
|
|
205
|
-
return { x: 0, y: 0, z: sign };
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
222
|
//# sourceMappingURL=edge-extractor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge-extractor.js","sourceRoot":"","sources":["../src/edge-extractor.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAa/D,OAAO,EACL,IAAI,EACJ,OAAO,EACP,SAAS,EACT,aAAa,EACb,OAAO,
|
|
1
|
+
{"version":3,"file":"edge-extractor.js","sourceRoot":"","sources":["../src/edge-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether `ifcType` is an `IfcFeatureElement` subtype (an opening/void/feature
|
|
3
|
+
* operand) that must be excluded from construction projection. `undefined`/
|
|
4
|
+
* unknown types are treated as real geometry (not a feature element).
|
|
5
|
+
*/
|
|
6
|
+
export declare function isFeatureElementType(ifcType: string | undefined | null): boolean;
|
|
7
|
+
//# sourceMappingURL=feature-elements.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-elements.d.ts","sourceRoot":"","sources":["../src/feature-elements.ts"],"names":[],"mappings":"AA8CA;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAGhF"}
|