f81f5ada246dc70e243e5be63bfdf74a4067ddd3
[blender-addons-contrib.git] / io_points_pcd / __init__.py
1 # ##### BEGIN GPL LICENSE BLOCK #####
2 #
3 #  This program is free software; you can redistribute it and/or
4 #  modify it under the terms of the GNU General Public License
5 #  as published by the Free Software Foundation; either version 2
6 #  of the License, or (at your option) any later version.
7 #
8 #  This program is distributed in the hope that it will be useful,
9 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
10 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 #  GNU General Public License for more details.
12 #
13 #  You should have received a copy of the GNU General Public License
14 #  along with this program; if not, write to the Free Software Foundation,
15 #  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 #
17 # ##### END GPL LICENSE BLOCK #####
18
19 bl_info = {
20     "name": "PCD",
21     "author": "Aurel Wildfellner",
22     "version": (0, 1),
23     "blender": (2, 5, 7),
24     "location": "File > Import-Export > Point Cloud Data",
25     "description": "Imports and Exports PCD (Point Cloud Data) files. PCD files are the default format used by  pcl (Point Cloud Library).",
26     "warning": "",
27     "wiki_url": "",
28     "tracker_url": "",
29 #    "support": 'OFFICAL',
30     "category": "Import-Export"}
31
32
33 if "bpy" in locals():
34     import imp
35     imp.reload(pcd_utils)
36 else:
37     from . import pcd_utils
38
39 import itertools
40 import os
41
42
43 import bpy
44 from bpy.props import *
45 from bpy_extras.io_utils import ExportHelper, ImportHelper
46
47
48 class ImportPCD(bpy.types.Operator, ImportHelper):
49     '''Load PCD (Point Cloud Data) files'''
50     bl_idname = "import_points.stl"
51     bl_label = "Import PCD"
52
53     filename_ext = ".pcd"
54
55     filter_glob = StringProperty(default="*.pcd", options={'HIDDEN'})
56
57     files = CollectionProperty(name="File Path",
58                           description="File path used for importing "
59                                       "the PCD file",
60                           type=bpy.types.OperatorFileListElement)
61
62     directory = StringProperty(subtype='DIR_PATH')
63
64     def execute(self, context):
65         paths = [os.path.join(self.directory, name.name) for name in self.files]
66         if not paths:
67             paths.append(self.filepath)
68
69         for path in paths:
70             pcd_utils.import_pcd(path)
71
72         return {'FINISHED'}
73
74
75
76
77 def menu_func_import(self, context):
78     self.layout.operator(ImportPCD.bl_idname, text="Point Cloud Data (.pcd)").filepath = "*.pcd"
79
80
81 def menu_func_export(self, context):
82     #self.layout.operator(ExportPLY.bl_idname, text="Point Cloud Data (.pcd)")
83     pass
84
85
86 def register():
87     bpy.utils.register_module(__name__)
88
89     bpy.types.INFO_MT_file_import.append(menu_func_import)
90     bpy.types.INFO_MT_file_export.append(menu_func_export)
91
92
93 def unregister():
94     bpy.utils.unregister_module(__name__)
95
96     bpy.types.INFO_MT_file_import.remove(menu_func_import)
97     bpy.types.INFO_MT_file_export.remove(menu_func_export)
98
99
100 if __name__ == "__main__":
101     register()
102