Rhino to Blender issue

Hi,

On first attempt to push data from rhino 7 to blender 3 & 2.93.7 (tried both) via newly installed connectors, I get this in blender :

Python: Traceback (most recent call last):
File “C:\Users\ctlz\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\bpy_speckle\operators\streams.py”, line 273, in execute
stream_data = operations.receive(commit.referencedObject, transport)
File “C:\Users\ctlz\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\modules\specklepy\api\operations.py”, line 70, in receive
return serializer.read_json(obj_string=obj_string)
File “C:\Users\ctlz\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\modules\specklepy\serialization\base_object_serializer.py”, line 242, in read_json
return self.recompose_base(obj=obj)
File “C:\Users\ctlz\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\modules\specklepy\serialization\base_object_serializer.py”, line 300, in recompose_base
base.setattr(prop, self.handle_value(value))
File “C:\Users\ctlz\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\modules\specklepy\serialization\base_object_serializer.py”, line 321, in handle_value
obj_list = [self.handle_value(o) for o in obj]
File “C:\Users\ctlz\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\modules\specklepy\serialization\base_object_serializer.py”, line 321, in
obj_list = [self.handle_value(o) for o in obj]
File “C:\Users\ctlz\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\modules\specklepy\serialization\base_object_serializer.py”, line 335, in handle_value
return self.recompose_base(obj=obj)
File “C:\Users\ctlz\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\modules\specklepy\serialization\base_object_serializer.py”, line 300, in recompose_base
base.setattr(prop, self.handle_value(value))
File “C:\Users\ctlz\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\modules\specklepy\serialization\base_object_serializer.py”, line 335, in handle_value
return self.recompose_base(obj=obj)
File “C:\Users\ctlz\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\modules\specklepy\serialization\base_object_serializer.py”, line 284, in recompose_base
base.setattr(prop, value)
File “C:\Users\ctlz\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\modules\specklepy\objects\base.py”, line 204, in setattr
value = self._type_check(name, value)
File “C:\Users\ctlz\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\modules\specklepy\objects\base.py”, line 284, in _type_check
raise SpeckleException(
specklepy.logging.exceptions.SpeckleException: SpeckleException: Cannot set ‘RenderMaterial.name’: it expects type ‘str’, but received type ‘NoneType’

location: :-1

While Blender to Rhino works OK.

Thanks for your help!

Hey @ctlz welcome to the forum!
Most of our team is taking a well deserved break this week, we’ll be able to properly reply the next one. In the meantime a couple of questions:

  • does this happen with any geometry coming from Rhino?
  • the error message seems related to materials. Maybe a temporary workaround could be adding a basic one to your geometry in Rhino?

Hi @teocomi, thanks for your prompt reply.

Yes, it happens with any geometry.

Applied material doesn’t solve the problem.

1 Like

I am having the same error message. Please help, Thank you!

hey @ctlz and @David_Buckley ! thanks a lot for reporting this issue.

I’ve just started the build for v2.3.0 of Speckle Blender that should fix the problem! :rocket: it will be available very soon from Manager. I’ve tested it with both Revit and Rhino streams and all seems well, however please let me know if you still run into any issues.

note that this includes breaking changes for Blocks if you were using them - you’ll need to update your other connectors as well if this is the case.

2 Likes

Hey @izzylys, I’m using Rhino 2.4.0 and Blender 2.4.1.399 connectors and receiving a error retrieving the Rhino stream into Blender. I’m sending 200+ blocks from Rhino, so not sure if your last part about breaking changes applies… (is block sender working?).

Any info would be helpful!

Thanks ~

Blender Info Log Print Out

Python: Traceback (most recent call last):
File “C:\Users\Luke\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\bpy_speckle\operators\streams.py”, line 273, in execute
stream_data = operations.receive(commit.referencedObject, transport)
File “C:\Users\Luke\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\modules\specklepy\api\operations.py”, line 78, in receive
return serializer.read_json(obj_string=obj_string)
File “C:\Users\Luke\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\modules\specklepy\serialization\base_object_serializer.py”, line 265, in read_json
return self.recompose_base(obj=obj)
File “C:\Users\Luke\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\modules\specklepy\serialization\base_object_serializer.py”, line 323, in recompose_base
base.setattr(prop, self.handle_value(value))
File “C:\Users\Luke\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\modules\specklepy\serialization\base_object_serializer.py”, line 344, in handle_value
obj_list = [self.handle_value(o) for o in obj]
File “C:\Users\Luke\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\modules\specklepy\serialization\base_object_serializer.py”, line 344, in
obj_list = [self.handle_value(o) for o in obj]
File “C:\Users\Luke\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\modules\specklepy\serialization\base_object_serializer.py”, line 358, in handle_value
return self.recompose_base(obj=obj)
File “C:\Users\Luke\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\modules\specklepy\serialization\base_object_serializer.py”, line 319, in recompose_base
base.setattr(prop, self.recompose_base(obj=ref_obj))
File “C:\Users\Luke\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\modules\specklepy\serialization\base_object_serializer.py”, line 323, in recompose_base
base.setattr(prop, self.handle_value(value))
File “C:\Users\Luke\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\modules\specklepy\serialization\base_object_serializer.py”, line 344, in handle_value
obj_list = [self.handle_value(o) for o in obj]
File “C:\Users\Luke\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\modules\specklepy\serialization\base_object_serializer.py”, line 344, in
obj_list = [self.handle_value(o) for o in obj]
File “C:\Users\Luke\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\modules\specklepy\serialization\base_object_serializer.py”, line 358, in handle_value
return self.recompose_base(obj=obj)
File “C:\Users\Luke\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\modules\specklepy\serialization\base_object_serializer.py”, line 323, in recompose_base
base.setattr(prop, self.handle_value(value))
File “C:\Users\Luke\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\modules\specklepy\objects\base.py”, line 203, in setattr
value = self._type_check(name, value)
File “C:\Users\Luke\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\modules\specklepy\objects\base.py”, line 286, in _type_check
raise SpeckleException(
specklepy.logging.exceptions.SpeckleException: SpeckleException: Cannot set ‘Brep.displayValue’: it expects type ‘Mesh’, but received type ‘list’

location: :-1`

hey @lukxfnz, really sorry for missing this last week! it got a bit lost in all my notifications :sweat_smile:

I’ve just had a look and there was an update from specklepy that needed to be propagated + a lil breps bug that I didn’t spot. thanks a lot for bringing this to my attention :bug:

I’ve just triggered a build for 2.4.2.409 which should resolve this issue when it’s available shortly. please try it out and let me know if you are still running into any issues :+1:

2 Likes

Thanks @izzylys! Blocks are coming across; not sure if its a bug or how its intended to work, but I was expecting the Block instance definition to also come across from Rhino into Blender? The blocks come across as empties at the moment, if I explode the block and send it across and link the instances then it works, but was hoping this would be default behavior, or even an option?