Skip to content

Commit e666240

Browse files
committed
Merge branch 'update/group'
2 parents 0cfa55c + 3f01ff0 commit e666240

File tree

10 files changed

+54
-79
lines changed

10 files changed

+54
-79
lines changed

scripts/arrows.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
2-
import compas
31
from compas.colors import Color
42
from compas.geometry import Vector
53
from compas_viewer.viewer import Viewer

scripts/group.py

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,17 @@
1-
from compas.colors import Color
21
from compas.geometry import Box
3-
from compas.geometry import Translation
42
from compas_viewer import Viewer
53
from compas_viewer.scene import Tag
64

75
box1 = Box.from_width_height_depth(5, 1, 1)
86
box2 = Box.from_width_height_depth(1, 5, 1)
9-
t = Tag("EN", (0, 0, 0), height=50)
10-
viewer = Viewer()
11-
12-
# Simple list of objects
13-
group1 = viewer.scene.add([box1, box2, t])
7+
t = Tag("EN", (5, 0, 0), height=50)
148

159

16-
# with kwargs for each object
17-
box1 = box1.transformed(Translation.from_vector([0, 5, 0]))
18-
box2 = box2.transformed(Translation.from_vector([0, 5, 0]))
19-
group2 = viewer.scene.add([(box1, {"name": "box1", "facecolor": Color.red()}), (box2, {"name": "box2", "facecolor": Color.green()})], linecolor=Color.blue())
10+
viewer = Viewer()
2011

21-
# with nested groups
22-
box1 = box1.transformed(Translation.from_vector([0, 5, 0]))
23-
box2 = box2.transformed(Translation.from_vector([0, 5, 0]))
24-
group3 = viewer.scene.add([[box1], box2])
25-
group3.transformation = Translation.from_vector([0, 0, 5])
12+
# Just fix API for groups
13+
group1 = viewer.scene.add_group(name="group1")
14+
group1.add(box1, name="box1")
15+
group1.add(box2, name="box2")
16+
group1.add(t, name="tag")
2617
viewer.show()

scripts/tag.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,8 @@
77
t4 = Tag("Absolute height", (5, 0, 0), absolute_height=True, height=100)
88

99
viewer = Viewer()
10-
viewer.scene.add([t1, t2, t3, t4])
10+
viewer.scene.add(t1)
11+
viewer.scene.add(t2)
12+
viewer.scene.add(t3)
13+
viewer.scene.add(t4)
1114
viewer.show()

src/compas_viewer/components/layout.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,10 @@ def __init__(
9595

9696
@property
9797
def exclude_type_list(self) -> tuple[type, ...]:
98-
from compas_viewer.scene import GroupObject
98+
from compas_viewer.scene import Group
9999
from compas_viewer.scene import TagObject
100100

101-
return (GroupObject, TagObject)
101+
return (Group, TagObject)
102102

103103
def generate_layout(self) -> None:
104104
self.layout = QVBoxLayout()

src/compas_viewer/renderer/renderer.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
from compas.geometry import Frame
1515
from compas.geometry import transform_points_numpy
16+
from compas.scene import Group
1617
from compas_viewer.scene import TagObject
1718
from compas_viewer.scene.buffermanager import BufferManager
1819
from compas_viewer.scene.gridobject import GridObject
@@ -405,7 +406,8 @@ def init(self):
405406
self.grid.init()
406407

407408
for obj in self.viewer.scene.objects:
408-
obj.init()
409+
if not isinstance(obj, Group):
410+
obj.init()
409411

410412
for obj in self.viewer.scene.objects:
411413
if not isinstance(obj, TagObject):

src/compas_viewer/scene/__init__.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,7 @@
4444
from .polyhedronobject import PolyhedronObject
4545
from .geometryobject import GeometryObject
4646
from .shapeobject import ShapeObject
47-
from .groupobject import Group
48-
from .groupobject import GroupObject
47+
from .group import Group
4948
from .collectionobject import Collection
5049
from .collectionobject import CollectionObject
5150
from .bufferobject import BufferGeometry
@@ -86,7 +85,6 @@ def register_scene_objects():
8685
register(Cone, ShapeObject, context="Viewer")
8786
register(Capsule, ShapeObject, context="Viewer")
8887
register(Polyhedron, PolyhedronObject, context="Viewer")
89-
register(list, GroupObject, context="Viewer")
9088
register(Collection, CollectionObject, context="Viewer")
9189
register(BufferGeometry, BufferObject, context="Viewer")
9290

@@ -141,7 +139,6 @@ def register_scene_objects():
141139
"GeometryObject",
142140
"ShapeObject",
143141
"Group",
144-
"GroupObject",
145142
"Collection",
146143
"CollectionObject",
147144
"BufferGeometry",

src/compas_viewer/scene/group.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from compas.scene import Group as BaseGroup
2+
3+
from .sceneobject import ViewerSceneObject
4+
5+
6+
class Group(ViewerSceneObject, BaseGroup):
7+
"""A group of scene objects."""
8+
9+
pass

src/compas_viewer/scene/groupobject.py

Lines changed: 0 additions & 39 deletions
This file was deleted.

src/compas_viewer/scene/scene.py

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from compas.geometry import Geometry
1111
from compas.scene import Scene
1212

13+
from .group import Group
1314
from .sceneobject import ViewerSceneObject
1415

1516

@@ -70,16 +71,6 @@ def __init__(self, name: str = "ViewerScene", context: str = "Viewer"):
7071
self.instance_colors: dict[tuple[int, int, int], ViewerSceneObject] = {}
7172
self._instance_colors_generator = instance_colors_generator()
7273

73-
@property
74-
def visiable_objects(self) -> list[ViewerSceneObject]:
75-
def traverse(obj):
76-
for child in obj.children:
77-
if child.show:
78-
yield child
79-
yield from traverse(child)
80-
81-
return traverse(self.root)
82-
8374
@property
8475
def viewer(self):
8576
from compas_viewer import Viewer
@@ -186,3 +177,25 @@ def add(
186177
**kwargs,
187178
)
188179
return sceneobject
180+
181+
def add_group(self, name: str = None, parent: Optional[ViewerSceneObject] = None, **kwargs) -> Group:
182+
"""
183+
Add a group to the scene.
184+
185+
Parameters
186+
----------
187+
name : str, optional
188+
The name of the group.
189+
parent : :class:`compas_viewer.scene.ViewerSceneObject`, optional
190+
The parent of the group.
191+
**kwargs : dict, optional
192+
The other possible parameters to be passed to the group.
193+
194+
Returns
195+
-------
196+
:class:`compas_viewer.scene.Group`
197+
The group.
198+
"""
199+
group = Group(name=name, **kwargs)
200+
self.add(group, parent=parent)
201+
return group

src/compas_viewer/scene/sceneobject.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ def __init__(
120120
self._backfaces_buffer: [dict[str, Any]] = None # type: ignore
121121

122122
self._inited = False
123+
self.context = "Viewer"
123124

124125
@property
125126
def bounding_box(self):
@@ -135,19 +136,19 @@ def bounding_box_center(self):
135136

136137
def _read_points_data(self) -> Optional[ShaderDataType]:
137138
"""Read points data from the object."""
138-
raise NotImplementedError
139+
pass
139140

140141
def _read_lines_data(self) -> Optional[ShaderDataType]:
141142
"""Read lines data from the object."""
142-
raise NotImplementedError
143+
pass
143144

144145
def _read_frontfaces_data(self) -> Optional[ShaderDataType]:
145146
"""Read frontfaces data from the object."""
146-
raise NotImplementedError
147+
pass
147148

148149
def _read_backfaces_data(self) -> Optional[ShaderDataType]:
149150
"""Read backfaces data from the object."""
150-
raise NotImplementedError
151+
pass
151152

152153
# ==========================================================================
153154
# general

0 commit comments

Comments
 (0)