From 337b00601a082bfcdd73ec0b19d900279ad616ce Mon Sep 17 00:00:00 2001 From: haxbot Date: Sun, 21 Jun 2026 09:22:22 +0000 Subject: [PATCH] bundle: update (2026-06-21) --- extensions/botbox3000/placements.py | 31 ++++++++++++----------------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/extensions/botbox3000/placements.py b/extensions/botbox3000/placements.py index 4cb56b9..e850688 100644 --- a/extensions/botbox3000/placements.py +++ b/extensions/botbox3000/placements.py @@ -82,6 +82,16 @@ def point_at_length(path, target_length): return (last_point[0], last_point[1]), (1.0, 0.0) +def _apply_placement(item, x, y, angle): + # Bake placement into the path data; leaving it as a transform attr lets + # Inkscape shift the shape on ungroup (near-identity matrices lose the X translate). + transform = Transform() + transform.add_translate(x, y) + transform.add_rotate(angle) + item.path = item.path.transform(transform) + return item + + def pattern_along_path(path, num_items, item_width, start_offset, spacing, create_shape_fn): if isinstance(path, str): @@ -104,12 +114,7 @@ def pattern_along_path(path, num_items, item_width, start_offset, spacing, creat angle = math.degrees(math.atan2(tangent[1], tangent[0])) item = create_shape_fn(i) - - transform = Transform() - transform.add_translate(point[0], point[1]) - transform.add_rotate(angle) - - item.transform = transform + _apply_placement(item, point[0], point[1], angle) items.append(item) elif spacing == "endpoints": @@ -120,12 +125,7 @@ def pattern_along_path(path, num_items, item_width, start_offset, spacing, creat angle = math.degrees(math.atan2(tangent[1], tangent[0])) item = create_shape_fn(i) - - transform = Transform() - transform.add_translate(point[0], point[1]) - transform.add_rotate(angle) - - item.transform = transform + _apply_placement(item, point[0], point[1], angle) items.append(item) elif spacing == "simple": @@ -138,12 +138,7 @@ def pattern_along_path(path, num_items, item_width, start_offset, spacing, creat angle = math.degrees(math.atan2(tangent[1], tangent[0])) item = create_shape_fn(i) - - transform = Transform() - transform.add_translate(point[0], point[1]) - transform.add_rotate(angle) - - item.transform = transform + _apply_placement(item, point[0], point[1], angle) items.append(item) return items