Compare commits
2 Commits
knoxmakers
...
knoxmakers
| Author | SHA1 | Date | |
|---|---|---|---|
| 337b00601a | |||
| ee650f2b71 |
@@ -82,6 +82,16 @@ def point_at_length(path, target_length):
|
|||||||
return (last_point[0], last_point[1]), (1.0, 0.0)
|
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):
|
def pattern_along_path(path, num_items, item_width, start_offset, spacing, create_shape_fn):
|
||||||
|
|
||||||
if isinstance(path, str):
|
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]))
|
angle = math.degrees(math.atan2(tangent[1], tangent[0]))
|
||||||
|
|
||||||
item = create_shape_fn(i)
|
item = create_shape_fn(i)
|
||||||
|
_apply_placement(item, point[0], point[1], angle)
|
||||||
transform = Transform()
|
|
||||||
transform.add_translate(point[0], point[1])
|
|
||||||
transform.add_rotate(angle)
|
|
||||||
|
|
||||||
item.transform = transform
|
|
||||||
items.append(item)
|
items.append(item)
|
||||||
|
|
||||||
elif spacing == "endpoints":
|
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]))
|
angle = math.degrees(math.atan2(tangent[1], tangent[0]))
|
||||||
|
|
||||||
item = create_shape_fn(i)
|
item = create_shape_fn(i)
|
||||||
|
_apply_placement(item, point[0], point[1], angle)
|
||||||
transform = Transform()
|
|
||||||
transform.add_translate(point[0], point[1])
|
|
||||||
transform.add_rotate(angle)
|
|
||||||
|
|
||||||
item.transform = transform
|
|
||||||
items.append(item)
|
items.append(item)
|
||||||
|
|
||||||
elif spacing == "simple":
|
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]))
|
angle = math.degrees(math.atan2(tangent[1], tangent[0]))
|
||||||
|
|
||||||
item = create_shape_fn(i)
|
item = create_shape_fn(i)
|
||||||
|
_apply_placement(item, point[0], point[1], angle)
|
||||||
transform = Transform()
|
|
||||||
transform.add_translate(point[0], point[1])
|
|
||||||
transform.add_rotate(angle)
|
|
||||||
|
|
||||||
item.transform = transform
|
|
||||||
items.append(item)
|
items.append(item)
|
||||||
|
|
||||||
return items
|
return items
|
||||||
|
|||||||
Reference in New Issue
Block a user