Skip to content

Commit 7a16821

Browse files
committed
register artists only once
1 parent 5cbb2b8 commit 7a16821

File tree

3 files changed

+68
-41
lines changed

3 files changed

+68
-41
lines changed

src/compas_ghpython/artists/__init__.py

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -111,19 +111,25 @@ def verify_gh_context():
111111
return False
112112

113113

114+
artists_registered = False
115+
116+
114117
@plugin(category='factories', pluggable_name='new_artist', requires=['ghpythonlib', verify_gh_context])
115118
def new_artist_gh(cls, *args, **kwargs):
116119
# "lazy registration" seems necessary to avoid item-artist pairs to be overwritten unintentionally
117-
118-
GHArtist.register(Circle, CircleArtist)
119-
GHArtist.register(Frame, FrameArtist)
120-
GHArtist.register(Line, LineArtist)
121-
GHArtist.register(Point, PointArtist)
122-
GHArtist.register(Polyline, PolylineArtist)
123-
GHArtist.register(Mesh, MeshArtist)
124-
GHArtist.register(Network, NetworkArtist)
125-
GHArtist.register(VolMesh, VolMeshArtist)
126-
GHArtist.register(RobotModel, RobotModelArtist)
120+
global artists_registered
121+
122+
if not artists_registered:
123+
GHArtist.register(Circle, CircleArtist)
124+
GHArtist.register(Frame, FrameArtist)
125+
GHArtist.register(Line, LineArtist)
126+
GHArtist.register(Point, PointArtist)
127+
GHArtist.register(Polyline, PolylineArtist)
128+
GHArtist.register(Mesh, MeshArtist)
129+
GHArtist.register(Network, NetworkArtist)
130+
GHArtist.register(VolMesh, VolMeshArtist)
131+
GHArtist.register(RobotModel, RobotModelArtist)
132+
artists_registered = True
127133

128134
data = args[0]
129135

src/compas_plotters/artists/__init__.py

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -71,19 +71,34 @@
7171
from .networkartist import NetworkArtist
7272

7373

74-
@plugin(category='factories', pluggable_name='new_artist', trylast=True, requires=['matplotlib'])
74+
def verify_not_blender():
75+
try:
76+
import bpy # noqa: F401
77+
except ImportError:
78+
return True
79+
else:
80+
return False
81+
82+
83+
artists_registered = False
84+
85+
86+
@plugin(category='factories', pluggable_name='new_artist', trylast=True, requires=['matplotlib', verify_not_blender])
7587
def new_artist_plotter(cls, *args, **kwargs):
7688
# "lazy registration" seems necessary to avoid item-artist pairs to be overwritten unintentionally
77-
78-
PlotterArtist.register(Point, PointArtist)
79-
PlotterArtist.register(Vector, VectorArtist)
80-
PlotterArtist.register(Line, LineArtist)
81-
PlotterArtist.register(Polyline, PolylineArtist)
82-
PlotterArtist.register(Polygon, PolygonArtist)
83-
PlotterArtist.register(Circle, CircleArtist)
84-
PlotterArtist.register(Ellipse, EllipseArtist)
85-
PlotterArtist.register(Mesh, MeshArtist)
86-
PlotterArtist.register(Network, NetworkArtist)
89+
global artists_registered
90+
91+
if not artists_registered:
92+
PlotterArtist.register(Point, PointArtist)
93+
PlotterArtist.register(Vector, VectorArtist)
94+
PlotterArtist.register(Line, LineArtist)
95+
PlotterArtist.register(Polyline, PolylineArtist)
96+
PlotterArtist.register(Polygon, PolygonArtist)
97+
PlotterArtist.register(Circle, CircleArtist)
98+
PlotterArtist.register(Ellipse, EllipseArtist)
99+
PlotterArtist.register(Mesh, MeshArtist)
100+
PlotterArtist.register(Network, NetworkArtist)
101+
artists_registered = True
87102

88103
data = args[0]
89104

src/compas_rhino/artists/__init__.py

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,9 @@ def verify_rhino_context():
152152
return False
153153

154154

155+
artists_registered = False
156+
157+
155158
@plugin(category='drawing-utils', pluggable_name='clear', requires=['Rhino', verify_rhino_context])
156159
def clear_rhino():
157160
compas_rhino.clear()
@@ -165,26 +168,29 @@ def redraw_rhino():
165168
@plugin(category='factories', pluggable_name='new_artist', requires=['Rhino', verify_rhino_context])
166169
def new_artist_rhino(cls, *args, **kwargs):
167170
# "lazy registration" seems necessary to avoid item-artist pairs to be overwritten unintentionally
168-
169-
RhinoArtist.register(Circle, CircleArtist)
170-
RhinoArtist.register(Frame, FrameArtist)
171-
RhinoArtist.register(Line, LineArtist)
172-
RhinoArtist.register(Plane, PlaneArtist)
173-
RhinoArtist.register(Point, PointArtist)
174-
RhinoArtist.register(Polygon, PolygonArtist)
175-
RhinoArtist.register(Polyline, PolylineArtist)
176-
RhinoArtist.register(Vector, VectorArtist)
177-
RhinoArtist.register(Box, BoxArtist)
178-
RhinoArtist.register(Capsule, CapsuleArtist)
179-
RhinoArtist.register(Cone, ConeArtist)
180-
RhinoArtist.register(Cylinder, CylinderArtist)
181-
RhinoArtist.register(Polyhedron, PolyhedronArtist)
182-
RhinoArtist.register(Sphere, SphereArtist)
183-
RhinoArtist.register(Torus, TorusArtist)
184-
RhinoArtist.register(Mesh, MeshArtist)
185-
RhinoArtist.register(Network, NetworkArtist)
186-
RhinoArtist.register(VolMesh, VolMeshArtist)
187-
RhinoArtist.register(RobotModel, RobotModelArtist)
171+
global artists_registered
172+
173+
if not artists_registered:
174+
RhinoArtist.register(Circle, CircleArtist)
175+
RhinoArtist.register(Frame, FrameArtist)
176+
RhinoArtist.register(Line, LineArtist)
177+
RhinoArtist.register(Plane, PlaneArtist)
178+
RhinoArtist.register(Point, PointArtist)
179+
RhinoArtist.register(Polygon, PolygonArtist)
180+
RhinoArtist.register(Polyline, PolylineArtist)
181+
RhinoArtist.register(Vector, VectorArtist)
182+
RhinoArtist.register(Box, BoxArtist)
183+
RhinoArtist.register(Capsule, CapsuleArtist)
184+
RhinoArtist.register(Cone, ConeArtist)
185+
RhinoArtist.register(Cylinder, CylinderArtist)
186+
RhinoArtist.register(Polyhedron, PolyhedronArtist)
187+
RhinoArtist.register(Sphere, SphereArtist)
188+
RhinoArtist.register(Torus, TorusArtist)
189+
RhinoArtist.register(Mesh, MeshArtist)
190+
RhinoArtist.register(Network, NetworkArtist)
191+
RhinoArtist.register(VolMesh, VolMeshArtist)
192+
RhinoArtist.register(RobotModel, RobotModelArtist)
193+
artists_registered = True
188194

189195
data = args[0]
190196

0 commit comments

Comments
 (0)