I had a little break from Blender but now its time to go back and see what devs have been doing. I just converted my old pyramidaze script for 2.55. It is REALLY simple but it was my first python script back in 2006 :)
It just iterates through selected faces of the object and adds a pyramid top of them (see image above).
Here is 2.55 version:
#********************************************************************************************** #pyramidaze.py # - This script adds a "pyramid" over every selected face # # - Open this file in the Blender's text window # - Select faces # - set settings (see below) # - run script (Alt + P) # # there is nothing special in this script but it shows how to iterate # through all faces in selected object, how to get normal and how to create new mesh object. # # Feel free to use this script any way you like, I'm sure this is very useful ;) # #Ari Hayrinen 29.11.2006 # updated for Blender 2.55 20.12.2010 #www.opendimension.org/blender_en # # TODO: # - GUI # #************************************************************************************************* import bpy import mathutils #************************************************************************************************ # settings #************************************************************************************************ py_height = 1 # pyramid height if use_area is 0, negative value inverts pyramid use_area = 1 # if 1, uses face area as pyramid height area_multi = 1 # multiplier for face area, negative values inverts pyramid #******************************************************************************** #main #********************************************************************************* objekti = bpy.context.active_object scene = bpy.context.scene # list for new faces coords = [] faces = [] # counter so we know where to add new faces verts = 0 vertices = objekti.data.vertices # let's go through all faces in selected object for face in objekti.data.faces: #use only selected faces if face.select: center = face.center #number of vertices vco = len(face.vertices) if use_area: py_height = face.area * area_multi #multiple normal with pyramid height and add result to the center of the face center.x = center.x + face.normal[0] * py_height center.y = center.y + face.normal[1] * py_height center.z = center.z + face.normal[2] * py_height #create vertices coords.append([center.x,center.y,center.z]) verts +=1 for i in range(vco): coords.append(vertices[face.vertices[i]].co) verts +=1 #create triangles cco = vco + 1 # number of created vertices for j in range(vco): if j < (vco-1): faces.append([verts-cco, verts-(cco-(j+1)), verts-(vco-j-1)]) else: faces.append([verts-cco, verts-(cco-(j+1)), verts-(cco-1)]) # Create new mesh block and add faces to it mesh = bpy.data.meshes.new('myMesh') mesh.from_pydata(coords,"",faces) mesh.update() new_obj = bpy.data.objects.new("koe", mesh) scene.objects.link(new_obj) new_obj.location = objekti.location
Ei kommentteja:
Lähetä kommentti