Mash-Rotation-Problem

Scripting in Blender with Python, and working on the API

Moderators: jesterKing, stiv

Post Reply
Modestiny
Posts: 1
Joined: Fri Dec 22, 2006 1:40 am

Mash-Rotation-Problem

Post by Modestiny » Fri Dec 22, 2006 1:52 am

Hi,

have some problems with blender-python. I have wrote a script wich create a mesh-object, duplicates it, rotate the second 90 degrees and join the second to the first object. At next step the joined object should be rotate 45 degrees. But when I'm going to 3D-Window the joined object wasn't rotated.

Did anybody know what it is?

Thanx

Here the code:

Code: Select all

from Blender import *
from math import *
from Blender.Mathutils import *

omega = 1.618
dia = 0.025
floor_width = 1
floor_height = 2
pillar_rows = 2
pillar_cols = 2
rad = pi / 180
	
def create_bow(sc, ri, deg, num):
	c = (float(dia) * pi) / float(12)
	a = (c * omega) / 2
	b = omega * a * 2
	n = 0
	t1 = Mesh.New("Bow_Mash")
	r = sqrt(ri * ri * 2) / 2 - dia / 2
	for s in range(num):
		LocX = (r * sin(((deg * rad) / (num - 1)) * n))# + (2 * a + c)
		LocY = (r * cos(((deg * rad) / (num - 1)) * n))# + b
		bX = (b * sin(((deg * rad) / (num - 1)) * n))
		bY = (b * cos(((deg * rad) / (num - 1)) * n))
		points = [[0, LocY + bY, LocX + bX], [a, LocY, LocX], [a + c, LocY, LocX], [(2 * a + c), LocY + bY, LocX + bX]]
		t1.verts.extend(points)
		edge = [[n * 4 + 0, n * 4 + 1], [n * 4 + 1, n * 4 + 2], [n * 4 + 2, n * 4 + 3]]
		t1.edges.extend(edge)
		if(n > 0):
			t1.edges.extend([[old[0][0], edge[0][0]], [old[0][1], edge[0][1]], [old[1][1], edge[1][1]], [old[2][1], edge[2][1]]])
		old = edge
		n = n + 1
	Mesh.Mode(Mesh.SelectModes['VERTEX'])
	for v in t1.verts:
		v.sel = 1
	ob = Object.New("Mesh", "Bow")
	ob.link(t1)
	sc.link(ob)
	t1.fill()
	return(ob, a, c)  	

def make_cross(sc, ob, a, c):
	Window.EditMode(0)
	for o in Object.GetSelected():
		o.sel = 0
	ob.sel = 1
	Object.Duplicate(1)
	aob = sc.getActiveObject()
	aob.RotZ = 90 * rad
	ob.LocX = -((2 * a + c) / 2)
	aob.LocY = -((2 * a + c) / 2)
	ob.join([aob])
	ob.setEuler([0.0, 0.0, 45.0 * rad])
	ob.LocX = 0.5
	ob.makeDisplayList()
	Window.RedrawAll()
	sc.unlink(aob)
						

print "Dom-Script started..."
sc = Scene.GetCurrent()
(ob, a, c) = create_bow(sc, floor_width, 180, 16)
make_cross(sc, ob, a, c)
Window.RedrawAll()
print "Dom-Script finished"

Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests