abrasion/blender/addon.py

56 lines
1.5 KiB
Python

import importlib
import bpy
from abrasion.blender.export import export
def console_print(context, *args, **kwargs):
for a in context.screen.areas:
if a.type != 'CONSOLE':
continue
c = {}
c['area'] = a
c['space_data'] = a.spaces.active
c['region'] = a.regions[-1]
c['window'] = context.window
c['screen'] = context.screen
s = " ".join([str(arg) for arg in args])
for line in s.split("\n"):
line = '[abrasion] ' + line
bpy.ops.console.scrollback_append(c, text=line)
class OUTLINER_OT_collection_abrasion(bpy.types.Operator):
"""Foo."""
bl_idname = "outliner.collection_abrasion"
bl_label = "Export Abrasion Q3M"
@classmethod
def poll(cls, context):
return context.collection is not None
def execute(self, context):
export(
context,
context.collection.all_objects.values(),
context.collection.name,
)
return {'FINISHED'}
def menu_func(self, context):
layout = self.layout
layout.separator()
layout.operator(OUTLINER_OT_collection_abrasion.bl_idname)
def register():
bpy.utils.register_class(OUTLINER_OT_collection_abrasion)
bpy.types.OUTLINER_MT_collection.append(menu_func)
print("Abrasion: Registered.")
def unregister():
bpy.utils.unregister_class(OUTLINER_OT_collection_abrasion)
bpy.types.OUTLINER_MT_collection.remove(menu_func)
print("Abrasion: Unregistered.")