@@ -411,15 +411,11 @@ def _set_settings_defaults(self, node: Node) -> None:
411411 elif st == ST .COLOR :
412412 self ._write (f"{ setting_str } = { color_to_py_str (attr )} " )
413413 elif st == ST .MATERIAL :
414- name = str_to_py_str (attr .name )
415- self ._write (f"if { name } in bpy.data.materials:" )
416- self ._write (f"{ setting_str } = bpy.data.materials[{ name } ]" ,
417- self ._inner_indent_level + 1 )
414+ self ._set_if_in_blend_file (attr , setting_str , "materials" )
418415 elif st == ST .OBJECT :
419- name = str_to_py_str (attr .name )
420- self ._write (f"if { name } in bpy.data.objects:" )
421- self ._write (f"{ setting_str } = bpy.data.objects[{ name } ]" ,
422- self ._inner_indent_level + 1 )
416+ self ._set_if_in_blend_file (attr , setting_str , "objects" )
417+ elif st == ST .COLLECTION :
418+ self ._set_if_in_blend_file (attr , setting_str , "collections" )
423419 elif st == ST .COLOR_RAMP :
424420 self ._color_ramp_settings (node , attr_name )
425421 elif st == ST .CURVE_MAPPING :
@@ -933,6 +929,16 @@ def _set_socket_defaults(self, node: Node):
933929 self ._set_input_defaults (node )
934930 self ._set_output_defaults (node )
935931
932+ def _set_if_in_blend_file (self , attr , setting_str : str , data_type : str
933+ ) -> None :
934+ """
935+ Attempts to grab referenced thing from blend file
936+ """
937+ name = str_to_py_str (attr .name )
938+ self ._write (f"if { name } in bpy.data.{ data_type } :" )
939+ self ._write (f"{ setting_str } = bpy.data.{ data_type } [{ name } ]" ,
940+ self ._inner_indent_level + 1 )
941+
936942 def _color_ramp_settings (self , node : Node , color_ramp_name : str ) -> None :
937943 """
938944 Replicate a color ramp node
0 commit comments