Browse Source

Avoid using object operators for TextCurve conversions.

pull/196/head
Adam Johnson 4 years ago
parent
commit
e1b9537886
Signed by: Hoikas
GPG Key ID: 0B6515D6FF6F271E
  1. 15
      korman/exporter/convert.py
  2. 17
      korman/exporter/utils.py

15
korman/exporter/convert.py

@ -273,18 +273,9 @@ class Exporter:
self.report.msg("No material(s) on the ObData, so no drawables", indent=1) self.report.msg("No material(s) on the ObData, so no drawables", indent=1)
def _export_font_blobj(self, so, bo): def _export_font_blobj(self, so, bo):
self.report.msg("Converting font to mesh for export") self.animation.convert_object_animations(bo, so)
bpy.ops.object.select_all(action='DESELECT') with utils.temporary_mesh_object(bo) as meshObj:
bpy.context.scene.objects.active = bo self._export_mesh_blobj(so, meshObj)
bo.select = True
convertible = bpy.ops.object.convert.poll()
if convertible:
bpy.ops.object.convert(target='MESH', keep_original= True)
convertedFont = bpy.context.active_object
self._export_mesh_blobj(so, convertedFont)
bpy.ops.object.delete()
else:
self.report.msg("not convertible, skipping...")
def _export_referenced_node_trees(self): def _export_referenced_node_trees(self):
self.report.progress_advance() self.report.progress_advance()

17
korman/exporter/utils.py

@ -92,3 +92,20 @@ def bmesh_object(name : str):
bm.to_mesh(mesh) bm.to_mesh(mesh)
finally: finally:
bm.free() bm.free()
@contextmanager
def temporary_mesh_object(source : bpy.types.Object) -> bpy.types.Object:
"""Creates a temporary mesh object from a nonmesh object that will only exist for the duration
of the context."""
assert source.type != "MESH"
obj = bpy.data.objects.new(source.name, source.to_mesh(bpy.context.scene, True, "RENDER"))
obj.draw_type = "WIRE"
obj.matrix_basis, obj.matrix_world = source.matrix_basis, source.matrix_world
obj.parent = source.parent
bpy.context.scene.objects.link(obj)
try:
yield obj
finally:
bpy.data.objects.remove(obj)

Loading…
Cancel
Save