Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Handle vtkActors
  • Loading branch information
adam-urbanczyk committed Dec 6, 2024
commit e97ed36b90c87d1166c25425bfc1841ed5ca3301
18 changes: 13 additions & 5 deletions cadquery/vis.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ def _split_showables(objs) -> Tuple[List[ShapeLike], List[Vector], List[Location
rv_s: List[ShapeLike] = []
rv_v: List[Vector] = []
rv_l: List[Location] = []
rv_a: List[vtkActor] = []

for el in objs:
if instance_of(el, ShapeLike):
Expand All @@ -66,21 +67,24 @@ def _split_showables(objs) -> Tuple[List[ShapeLike], List[Vector], List[Location
rv_v.append(el)
elif isinstance(el, Location):
rv_l.append(el)
elif isinstance(el, vtkActor):
rv_a.append(el)
elif isinstance(el, list):
tmp1, tmp2, tmp3 = _split_showables(el) # split recursively
tmp1, tmp2, tmp3, tmp4 = _split_showables(el) # split recursively

rv_s.extend(tmp1)
rv_v.extend(tmp2)
rv_l.extend(tmp3)
rv_a.extend(tmp4)

return rv_s, rv_v, rv_l
return rv_s, rv_v, rv_l, rv_a


def _to_vtk_pts(
vecs: List[Vector], size: float = DEFAULT_PT_SIZE, color: str = DEFAULT_PT_COLOR
) -> vtkActor:
"""
Convert vectors to vtkActor.
Convert Vectors to vtkActor.
"""

rv = vtkActor()
Expand Down Expand Up @@ -110,7 +114,7 @@ def _to_vtk_pts(

def _to_vtk_axs(locs: List[Location], scale: float = 0.1) -> vtkActor:
"""
Convert vectors to vtkActor.
Convert Locations to vtkActor.
"""

rv = vtkAssembly()
Expand Down Expand Up @@ -142,7 +146,7 @@ def show(
"""

# split objects
shapes, vecs, locs = _split_showables(objs)
shapes, vecs, locs, acts = _split_showables(objs)

# construct the assy
assy = _to_assy(*shapes, alpha=alpha)
Expand Down Expand Up @@ -209,6 +213,10 @@ def show(
renderer.AddActor(pts)
renderer.AddActor(axs)

# add other vtk actors
for a in acts:
renderer.AddActor(a)

# initialize and set size
inter.Initialize()
win.SetSize(*win.GetScreenSize())
Expand Down