ec150226c579559e37293ab623523736c3274e88
[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     "api": 37304,
25     "location": "File > Import-Export > Point Cloud Data",
26     "description": "Imports and Exports PCD (Point Cloud Data) files. PCD files are the default format used by  pcl (Point Cloud Library).",
27     "warning": "",
28     "wiki_url": "",
29     "tracker_url": "",
30 #    "support": 'OFFICAL',
31     "category": "Import-Export"}
32
33
34 if "bpy" in locals():
35     import imp
36     imp.reload(pcd_utils)
37 else:
38     from . import pcd_utils
39
40 import itertools
41 import os
42
43
44 import bpy
45 from bpy.props import *
46 from bpy_extras.io_utils import ExportHelper, ImportHelper
47
48
49 class ImportPCD(bpy.types.Operator, ImportHelper):
50     '''Load PCD (Point Cloud Data) files'''
51     bl_idname = "import_points.stl"
52     bl_label = "Import PCD"
53
54     filename_ext = ".pcd"
55
56     filter_glob = StringProperty(default="*.pcd", options={'HIDDEN'})
57
58     files = CollectionProperty(name="File Path",
59                           description="File path used for importing "
60                                       "the PCD file",
61                           type=bpy.types.OperatorFileListElement)
62
63     directory = StringProperty(subtype='DIR_PATH')
64
65     def execute(self, context):
66         paths = [os.path.join(self.directory, name.name) for name in self.files]
67         if not paths:
68             paths.append(self.filepath)
69
70         for path in paths:
71             pcd_utils.import_pcd(path)
72
73         return {'FINISHED'}
74
75
76
77
78 def menu_func_import(self, context):
79     self.layout.operator(ImportPCD.bl_idname, text="Point Cloud Data (.pcd)").filepath = "*.pcd"
80
81
82 def menu_func_export(self, context):
83     #self.layout.operator(ExportPLY.bl_idname, text="Point Cloud Data (.pcd)")
84     pass
85
86
87 def register():
88     bpy.utils.register_module(__name__)
89
90     bpy.types.INFO_MT_file_import.append(menu_func_import)
91     bpy.types.INFO_MT_file_export.append(menu_func_export)
92
93
94 def unregister():
95     bpy.utils.unregister_module(__name__)
96
97     bpy.types.INFO_MT_file_import.remove(menu_func_import)
98     bpy.types.INFO_MT_file_export.remove(menu_func_export)
99
100
101 if __name__ == "__main__":
102     register()
103