compas-dev / compas

Core packages of the COMPAS framework.
https://compas.dev/compas/
MIT License
305 stars 104 forks source link

`Runtime error (NotSupportedException)` in Grasshopper when using `draw_labels` #1354

Open chenkasirer opened 2 months ago

chenkasirer commented 2 months ago

Getting a runtime error when trying to draw a text label in Rhino with Grasshopper.

Can be reproduced by running the following code in a GHPython component:

from compas_rhino.utilities import draw_labels

draw_labels([{"pos": [0, 0, 0], "text": "this is a text"}])

The full error:

Runtime error (NotSupportedException): This type of object is not supported in Grasshopper, so this Python script cannot create it. You might want to use 'scriptcontext.doc = Rhino.RhinoDoc.ActiveDoc' to use the Rhino doc, instead? If you do, remember to restore it: 'scriptcontext.doc = ghdoc'.

Traceback:
  line 110, in draw_labels, "C:\Users\ckasirer\AppData\Roaming\McNeel\Rhinoceros\7.0\scripts\compas_rhino\utilities\drawing.py"
  line 57, in wrapper, "C:\Users\ckasirer\AppData\Roaming\McNeel\Rhinoceros\7.0\scripts\compas_rhino\utilities\drawing.py"
  line 3, in script

Desktop (please complete the following information):

Additional context The suggested solution in the error (setting scriptcontext.doc to RhinoDoc.ActiveDoc) doesn't produce a different result. However, this code works:

import Rhino

text = Rhino.Geometry.TextDot("this is a text", Rhino.Geometry.Point3d(0, 0, 0))
Rhino.RhinoDoc.ActiveDoc.Objects.AddTextDot(text)

image

tomvanmele commented 2 months ago

i guess the question is if GH components should create baked text dots...

chenkasirer commented 2 months ago

Ahh that's a good point. Was so annoyed at this not working (was the support removed? I vaguely recall this used to work..) that I didn't even notice it's baked..