diff --git a/butils.py b/butils.py index 9e22e7f..50d285d 100644 --- a/butils.py +++ b/butils.py @@ -678,6 +678,11 @@ def set_text_on_curve(text_properties, recursive=True): if len(text_properties.text) != len(text_properties.glyphs): regenerate = True + # blender bug + # https://projects.blender.org/blender/blender/issues/100661 + if mom.data.use_path: + regenerate = True + # if we regenerate.... delete objects if regenerate: completely_delete_objects(glyph_objects) @@ -749,7 +754,12 @@ def set_text_on_curve(text_properties, recursive=True): location, tangent, spline_index = calc_point_on_bezier_curve(mom, advance, True, True) if spline_index != previous_spline_index: is_newline = True - ob.location = mom.matrix_world @ (location + text_properties.translation) + + if regenerate: + ob.location = mom.matrix_world @ (location + text_properties.translation) + else: + ob.location = (location + text_properties.translation) + if not text_properties.ignore_orientation: mask = [0] input_rotations = [mathutils.Vector((0.0, 0.0, 0.0))] @@ -765,7 +775,10 @@ def set_text_on_curve(text_properties, recursive=True): ob.rotation_mode = 'QUATERNION' q = mathutils.Quaternion() q.rotate(text_properties.orientation) - ob.rotation_quaternion = (mom.matrix_world @ motor[0] @ q.to_matrix().to_4x4()).to_quaternion() + if regenerate: + ob.rotation_quaternion = (mom.matrix_world @ motor[0] @ q.to_matrix().to_4x4()).to_quaternion() + else: + ob.rotation_quaternion = (motor[0] @ q.to_matrix().to_4x4()).to_quaternion() else: q = mathutils.Quaternion() q.rotate(text_properties.orientation) @@ -812,6 +825,8 @@ def set_text_on_curve(text_properties, recursive=True): if regenerate: mom.select_set(True) + # https://projects.blender.org/blender/blender/issues/100661 + mom.data.use_path = False mom[f"{utils.prefix()}_type"] = "textobject" mom[f"{utils.prefix()}_linked_textobject"] = text_properties.text_id mom[f"{utils.prefix()}_font_name"] = text_properties.font_name