Skip to content
Snippets Groups Projects
general.py 2.17 KiB
Newer Older
  • Learn to ignore specific revisions
  • # Stairbuilder - General
    #
    # General is an object for creating meshes given the verts and faces.
    #   Stair Type (typ):
    #       - id1 = Freestanding staircase
    #       - id2 = Housed-open staircase
    #       - id3 = Box staircase
    #       - id4 = Circular staircase
    # 
    # Paul "BrikBot" Marshall
    # Created: September 19, 2011
    
    Paul Marshall's avatar
    Paul Marshall committed
    # Last Modified: January 29, 2011
    
    # Homepage (blog): http://post.darkarsenic.com/
    #                       //blog.darkarsenic.com/
    #
    
    Paul Marshall's avatar
    Paul Marshall committed
    # Coded in IDLE, tested in Blender 2.61.
    
    # Search for "@todo" to quickly find sections that need work.
    #
    # ##### BEGIN GPL LICENSE BLOCK #####
    #
    
    Paul Marshall's avatar
    Paul Marshall committed
    #  Stairbuilder is for quick stair generation.
    
    #  Copyright (C) 2011  Paul Marshall
    #
    #  This program is free software: you can redistribute it and/or modify
    #  it under the terms of the GNU General Public License as published by
    #  the Free Software Foundation, either version 3 of the License, or
    #  (at your option) any later version.
    #
    #  This program is distributed in the hope that it will be useful,
    #  but WITHOUT ANY WARRANTY; without even the implied warranty of
    #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    #  GNU General Public License for more details.
    #
    #  You should have received a copy of the GNU General Public License
    #  along with this program.  If not, see <http://www.gnu.org/licenses/>.
    #
    # ##### END GPL LICENSE BLOCK #####
    
    import bpy
    from bpy_extras import object_utils
    from math import atan
    from mathutils import Vector
    
    class General:
        def __init__(self,rise,run,N):
            self.stop=float(N)*Vector([run,0,rise])
            self.slope=rise/run
            self.angle=atan(self.slope)
            #identical quads for all objects except stringer
            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]]
    
        def Make_mesh(self, verts, faces, name):        
            # Create new mesh
            mesh = bpy.data.meshes.new(name)
    
            # Make a mesh from a list of verts/edges/faces.
            mesh.from_pydata(verts, [], faces)
    
            # Set mesh to use auto smoothing:
            mesh.use_auto_smooth = True
    
            # Update mesh geometry after adding stuff.
            mesh.update()
    
            return object_utils.object_data_add(bpy.context, mesh, operator=None)