Schraffur + Schichtfugen als 0.02-mm-Haarlinien im einheitlichen Neutralschwarz
Schraffurlinien verlassen den screenPx-Sonderpfad und laufen wie jede andere Linie durch die Papier-mm-Pipeline (glPlan, SVG, PDF): im Display konstante Haarlinie (paperScaleForGl-Kehrwert von meet), im Print echte 0.02 mm - deckungsgleich mit den Schichtfugen in beiden Modi. - POCHE_STROKE #2b3039 -> #1a1a1a: kein Blaustich mehr, gleicher Neutralton wie die Schraffur (Wände/Öffnungen/Decken/Treppen). - Schichtfuge LAYER_LINE_MM 0.13 -> 0.02 (Haarlinie). - Schraffur-Stift hatch-hair/hatch-dash 0.05 -> 0.02. - Wand-Umriss Kategorie 20 lw 0.5 -> 0.35 (Standard-Aussenlinie war zu dick). - SVG-Schraffur nutzt HAIRLINE_PX/printStrokeVb statt hatchStrokePx; PDF-Export echte mm statt widthScreen.
This commit is contained in:
@@ -57,8 +57,10 @@ export interface RPolyline {
|
||||
z: number;
|
||||
/**
|
||||
* true: `widthMm` trägt BILDSCHIRM-Einheiten (viewBox-px, zoom-skalierend)
|
||||
* statt Papier-mm — für Schraffur-Striche, deren Breite im SVG an die
|
||||
* Musterkachel gekoppelt ist (`hatchStrokePx`), nicht an Papier-mm.
|
||||
* statt Papier-mm. Aktuell von keinem Primitiv mehr gesetzt — auch die
|
||||
* Schraffur läuft inzwischen als gewöhnlicher Papier-mm-Stift (0.02 mm,
|
||||
* gleiche Tinte wie die Wand-Schichtfugen). Feld bleibt für etwaige
|
||||
* zukünftige Bildschirm-gekoppelte Linien erhalten.
|
||||
*/
|
||||
widthScreen?: boolean;
|
||||
}
|
||||
@@ -376,11 +378,10 @@ export function planToRenderScene(plan: Plan, paperScaleN: number = STAMP_DEFAUL
|
||||
undefined,
|
||||
p.greyed,
|
||||
);
|
||||
// Strichbreite wie das SVG-Muster (`hatchStrokePx`): in viewBox-px, an
|
||||
// die Kachel gekoppelt und mit dem Zoom skalierend — NICHT Papier-mm
|
||||
// (sonst wird die Schraffur bei kleinen Masstäben zur Haarlinie).
|
||||
// Strichbreite: ein GEWÖHNLICHER Papier-mm-Stift (0.02 mm), wie jede
|
||||
// andere Linie — nicht mehr an die Musterkachel/Bildschirm-px
|
||||
// gekoppelt (siehe RPolyline.widthScreen-Kommentar).
|
||||
const hatchMm = p.hatch.lineWeight > 0 ? p.hatch.lineWeight : 0.13;
|
||||
const hatchPx = Math.max(0.6, hatchMm * (1 / 0.13));
|
||||
const runs = applyDashRuns(buildHatchRuns(p.pts, p.hatch), p.hatch.dash);
|
||||
// Alle Musterläufe eines Polygons teilen EIN z (überlappen einander nicht).
|
||||
const hatchZ = zc++;
|
||||
@@ -389,8 +390,7 @@ export function planToRenderScene(plan: Plan, paperScaleN: number = STAMP_DEFAUL
|
||||
polylines.push({
|
||||
pts: run.map((v) => [v.x, v.y]),
|
||||
color: hatchCol,
|
||||
widthMm: hatchPx,
|
||||
widthScreen: true,
|
||||
widthMm: hatchMm,
|
||||
z: hatchZ,
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user