OSDN Git Service

fix bpy_extras
[meshio/pymeshio.git] / blender25-meshio / __init__.py
1 bl_info = {
2     "name": "meshio. (.pmd)(.mqo)",
3     "author": "ousttrue",
4     "blender": (2, 5, 7),
5     "api": 35622,
6     "location": "File > Import-Export",
7     "description": "Import-Export PMD/MQO meshes",
8     "warning": "",
9     "url": "http://meshio.sourceforge.jp/",
10     "tracker_url": "",
11     "support": 'COMMUNITY',
12     "category": "Import-Export"
13 }
14
15 # To support reload properly, try to access a package var, if it's there, reload everything
16 if "bpy" in locals():
17     import imp
18     if "import_pmd" in locals():
19         imp.reload(import_pmd)
20     if "export_pmd" in locals():
21         imp.reload(export_pmd)
22
23
24 import bpy
25 from bpy.props import StringProperty, FloatProperty, BoolProperty
26 try:
27     from io_utils import ImportHelper, ExportHelper
28 except:
29     from bpy_extras.io_utils import ImportHelper, ExportHelper
30 from . import bl25 as bl
31
32
33 '''
34 PMD IMOPORTER
35 '''
36 class ImportPmd(bpy.types.Operator, ImportHelper):
37     '''Import from PMD file format (.pmd)'''
38     bl_idname = "import_scene.mmd_pmd"
39     bl_label = 'Import PMD'
40
41     filename_ext = ".pmd"
42     filter_glob = StringProperty(default="*.pmd", options={'HIDDEN'})
43
44     def execute(self, context):
45         from . import import_pmd
46         bl.initialize('pmd_import', context.scene)
47         import_pmd._execute(**self.as_keywords(
48             ignore=("filter_glob",)))
49         bl.finalize()
50         return {'FINISHED'}
51
52 def menu_pmd_import(self, context):
53     self.layout.operator(ImportPmd.bl_idname,
54             text="MikuMikuDance model (.pmd)",
55             icon='PLUGIN'
56             )
57
58
59 '''
60 PMD EXPORTER
61 '''
62 class ExportPMD(bpy.types.Operator, ExportHelper):
63     '''Export to PMD file format (.pmd)'''
64     bl_idname = "export_scene.mmd_pmd"
65     bl_label = 'Export PMD'
66
67     filename_ext = ".pmd"
68     filter_glob = StringProperty(default="*.pmd", options={'HIDDEN'})
69
70     use_selection = BoolProperty(name="Selection Only", description="Export selected objects only", default=False)
71
72     def execute(self, context):
73         from . import export_pmd
74         bl.initialize('pmd_export', context.scene)
75         export_pmd._execute(**self.as_keywords(
76             ignore=("check_existing", "filter_glob", "use_selection")))
77         bl.finalize()
78         return {'FINISHED'}
79
80 def menu_pmd_export(self, context):
81     default_path=bpy.data.filepath.replace(".blend", ".pmd")
82     self.layout.operator(
83             ExportPMD.bl_idname,
84             text="Miku Miku Dance Model(.pmd)",
85             icon='PLUGIN'
86             ).filepath=default_path
87
88
89 '''
90 MQO IMPORTER
91 '''
92 class ImportMQO(bpy.types.Operator, ImportHelper):
93     '''Import from MQO file format (.mqo)'''
94     bl_idname = "import_scene.metasequioa_mqo"
95     bl_label = 'Import MQO'
96
97     filename_ext = ".mqo"
98     filter_glob = StringProperty(default="*.mqo", options={'HIDDEN'})
99
100     scale = bpy.props.FloatProperty(
101             name="Scale",
102             description="Scale the MQO by this value",
103             min=0.0001, max=1000000.0,
104             soft_min=0.001, soft_max=100.0, default=0.1)
105
106     def execute(self, context):
107         from . import import_mqo
108         bl.initialize('mqo_import', context.scene)
109         import_mqo._execute(**self.as_keywords(
110             ignore=("filter_glob",)))
111         bl.finalize()
112         return {'FINISHED'}
113
114 def menu_mqo_import(self, context):
115     self.layout.operator(
116             ImportMQO.bl_idname,
117             text="Metasequoia (.mqo)",
118             icon='PLUGIN'
119             )
120
121
122 '''
123 MQO EXPORTER
124 '''
125 class ExportMQO(bpy.types.Operator, ExportHelper):
126     '''Save a Metasequoia MQO file.'''
127     bl_idname = "export_scene.metasequioa_mqo"
128     bl_label = 'Export MQO'
129
130     filename_ext = ".mqo"
131     filter_glob = StringProperty(default="*.mqo", options={'HIDDEN'})
132
133     use_selection = BoolProperty(name="Selection Only", description="Export selected objects only", default=False)
134
135     scale = bpy.props.FloatProperty(
136             name="Scale",
137             description="Scale the MQO by this value",
138             min=0.0001, max=1000000.0,
139             soft_min=0.001, soft_max=100.0, default=10.0)
140
141     apply_modifier = bpy.props.BoolProperty(
142             name="ApplyModifier",
143             description="Would apply modifiers",
144             default=False)
145
146     def execute(self, context):
147         from . import export_mqo
148         export_mqo._execute(**self.as_keywords(
149             ignore=("check_existing", "filter_glob", "use_selection")))
150         return {'FINISHED'}
151
152 def menu_mqo_export(self, context):
153     default_path=bpy.data.filepath.replace(".blend", ".mqo")
154     self.layout.operator(
155             ExportMQO.bl_idname,
156             text="Metasequoia (.mqo)",
157             icon='PLUGIN'
158             ).filepath=default_path
159
160
161 '''
162 REGISTER
163 '''
164 def register():
165     bpy.utils.register_module(__name__)
166     bpy.types.INFO_MT_file_import.append(menu_pmd_import)
167     bpy.types.INFO_MT_file_export.append(menu_pmd_export)
168     bpy.types.INFO_MT_file_import.append(menu_mqo_import)
169     bpy.types.INFO_MT_file_export.append(menu_mqo_export)
170
171 def unregister():
172     bpy.utils.unregister_module(__name__)
173     bpy.types.INFO_MT_file_import.remove(menu_pmd_import)
174     bpy.types.INFO_MT_file_export.remove(menu_pmd_export)
175     bpy.types.INFO_MT_file_import.remove(menu_mqo_import)
176     bpy.types.INFO_MT_file_export.remove(menu_mqo_export)
177
178 if __name__ == "__main__":
179     register()
180