From 7d4806903b0244a15177c678d1724a2eba0b64bb Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Sat, 12 Apr 2025 10:41:46 +0200 Subject: [PATCH] Fix #1353 --- addons/io_scene_gltf2/blender/com/extras.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/addons/io_scene_gltf2/blender/com/extras.py b/addons/io_scene_gltf2/blender/com/extras.py index 2754f95ac..45b4897c7 100644 --- a/addons/io_scene_gltf2/blender/com/extras.py +++ b/addons/io_scene_gltf2/blender/com/extras.py @@ -89,11 +89,26 @@ def set_extras(blender_element, extras, exclude=[]): if custom_property in exclude: continue + secured_custom_property = _set_unique_name(blender_element, custom_property) + try: - blender_element[custom_property] = value + blender_element[secured_custom_property] = value except Exception: # Try to convert to string try: - blender_element[custom_property] = str(value) + blender_element[secured_custom_property] = str(value) except Exception: print('Error setting property %s to value of type %s' % (custom_property, type(value))) + +def _set_unique_name(blender_element, name): + if len(name) >= 64: + + # Find the first available name of form truncated_name.XXX, + + suffix = 1 + name = name[:59] + '.' + str(suffix).zfill(3) + while name in blender_element.keys(): + suffix += 1 + name = name[:59] + '.' + str(suffix).zfill(3) + return name + return name