Boolean-Ops: vereinigte Form erbt volle Attribute des ersten Elements
ringDrawing kopierte nur color/hatchId/fillColor/lineStyleId/weightMm — die neueren Attribut-Felder (background = Nachfolger von fillColor, foreground + die By-Layer/By-Object-Quellen) gingen bei Union/Difference/ Intersection verloren. Dadurch verlor z. B. eine über das Attribut-Panel rot gefüllte Fläche ihre Füllung nach dem Vereinigen. Jetzt erbt die zusammengesetzte Form das volle Erscheinungsbild des ZUERST gewählten Elements (Auswahl-Reihenfolge = Index 0). Füll-Attribute nur auf dem gefüllten Aussenring, Strich-/Ebenen-Attribute auf jedem Ring.
This commit is contained in:
@@ -85,12 +85,25 @@ function ringDrawing(src: Drawing2D, pts: Vec2[], filled: boolean): Drawing2D {
|
||||
categoryCode: src.categoryCode,
|
||||
geom: { shape: "polyline", pts, closed: true },
|
||||
};
|
||||
// Strich-/Ebenen-bezogene Attribute gelten für JEDEN Ring (Aussen wie Loch):
|
||||
// die zusammengesetzte Form erbt das volle Erscheinungsbild des Quell-
|
||||
// Elements (bei Boolean-Ops die des ERSTEN gewählten, s. unionDrawings).
|
||||
if (src.lineStyleId !== undefined) out.lineStyleId = src.lineStyleId;
|
||||
if (src.color !== undefined) out.color = src.color;
|
||||
if (src.weightMm !== undefined) out.weightMm = src.weightMm;
|
||||
if (src.strokeWeightSource !== undefined) out.strokeWeightSource = src.strokeWeightSource;
|
||||
if (filled) {
|
||||
// Füll-/Schraffur-bezogene Attribute nur auf dem gefüllten Aussenring (Löcher
|
||||
// bleiben ungefüllt). `background` ist der Nachfolger von `fillColor` und wird
|
||||
// mitgeführt, sonst ginge eine über das Attribut-Panel gesetzte Füllung (z. B.
|
||||
// rote Fläche) bei der Vereinigung verloren.
|
||||
if (src.hatchId !== undefined) out.hatchId = src.hatchId;
|
||||
if (src.fillColor !== undefined) out.fillColor = src.fillColor;
|
||||
if (src.foreground !== undefined) out.foreground = src.foreground;
|
||||
if (src.background !== undefined) out.background = src.background;
|
||||
if (src.foregroundSource !== undefined) out.foregroundSource = src.foregroundSource;
|
||||
if (src.backgroundSource !== undefined) out.backgroundSource = src.backgroundSource;
|
||||
if (src.hatchSource !== undefined) out.hatchSource = src.hatchSource;
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user