moved add_column to branches/broken_stuff/add_mesh_column.py it is broken for months...
[blender-addons-contrib.git] / add_mesh_cad_objects / general.py
1 # Stairbuilder - General
2 #
3 # General is an object for creating meshes given the verts and faces.
4 #   Stair Type (typ):
5 #       - id1 = Freestanding staircase
6 #       - id2 = Housed-open staircase
7 #       - id3 = Box staircase
8 #       - id4 = Circular staircase
9
10 # Paul "BrikBot" Marshall
11 # Created: September 19, 2011
12 # Last Modified: January 29, 2011
13 # Homepage (blog): http://post.darkarsenic.com/
14 #                       //blog.darkarsenic.com/
15 #
16 # Coded in IDLE, tested in Blender 2.61.
17 # Search for "@todo" to quickly find sections that need work.
18 #
19 # ##### BEGIN GPL LICENSE BLOCK #####
20 #
21 #  Stairbuilder is for quick stair generation.
22 #  Copyright (C) 2011  Paul Marshall
23 #
24 #  This program is free software: you can redistribute it and/or modify
25 #  it under the terms of the GNU General Public License as published by
26 #  the Free Software Foundation, either version 3 of the License, or
27 #  (at your option) any later version.
28 #
29 #  This program is distributed in the hope that it will be useful,
30 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
31 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
32 #  GNU General Public License for more details.
33 #
34 #  You should have received a copy of the GNU General Public License
35 #  along with this program.  If not, see <http://www.gnu.org/licenses/>.
36 #
37 # ##### END GPL LICENSE BLOCK #####
38
39 import bpy
40 from bpy_extras import object_utils
41 from math import atan
42 from mathutils import Vector
43
44 class General:
45     def __init__(self,rise,run,N):
46         self.stop=float(N)*Vector([run,0,rise])
47         self.slope=rise/run
48         self.angle=atan(self.slope)
49         #identical quads for all objects except stringer
50         self.faces=[[0,1,3,2],[0,1,5,4],[0,2,6,4],[4,5,7,6],[2,3,7,6],[1,3,7,5]]
51
52     def Make_mesh(self, verts, faces, name):        
53         # Create new mesh
54         mesh = bpy.data.meshes.new(name)
55
56         # Make a mesh from a list of verts/edges/faces.
57         mesh.from_pydata(verts, [], faces)
58
59         # Set mesh to use auto smoothing:
60         mesh.use_auto_smooth = True
61
62         # Update mesh geometry after adding stuff.
63         mesh.update()
64
65         return object_utils.object_data_add(bpy.context, mesh, operator=None)