import rhinoscriptsyntax as rs import random, time, sys ### sys.path.append("P:\WWW\ultimum\DM2") ### import DM_lib as dm ### reload( dm ) rs.EnableRedraw(0) dm.printDisplay(1) rs.ViewDisplayMode(rs.CurrentView(), "wireframe") reload(dm) dm.newEmptyLayer("lines",[255,0,0]) #VecSetUp xVec = [1,0,0] zVec = [0,0,1] yVec = [0,1,0] normVec = dm.normVec3pnts(dm.getUnoCoord(0,0,0),dm.getUnoCoord(1,0,0),dm.getUnoCoord(1,0,1)) tanVec = dm.normVec3pnts(dm.getUnoCoord(0,0,0),dm.getUnoCoord(0,1,0),dm.getUnoCoord(0,1,1)) #Parameter noteanz = 67 noteanz2 = 15 divanz = 300 ende = 251 #Notenlinien #noteVex = [dm.getUnoCoord(10, 0, 0),dm.getUnoCoord(0, 0, 4),dm.getUnoCoord(0, 3, 8),dm.getUnoCoord(10, 3, 12),dm.getUnoCoord(10, 0, 14),dm.getUnoCoord(0, 0, 20),dm.getUnoCoord(0, 3, 22),dm.getUnoCoord(10, 3, 28),dm.getUnoCoord(10, 0, 30),dm.getUnoCoord(0, 0, 35)] noteVex2 = [dm.getUnoCoord(10, 0, 0),dm.getUnoCoord(0, 0, 2),dm.getUnoCoord(0, 3, 3),dm.getUnoCoord(10, 3, 5),rs.VectorAdd(dm.getUnoCoord(10, 0, 6),rs.VectorScale(zVec,0.0001))] noteVex3 = [] for j in range(6): for i in range(len(noteVex2)): noteVexLoop = rs.VectorAdd(noteVex2[i],rs.VectorScale(-rs.VectorSubtract(dm.getUnoCoord(10,0,0),dm.getUnoCoord(10,0,6)),j)) noteVex3.append(noteVexLoop) #rs.AddPoints(noteVex3) noteVec1 = [0,0,0] noteVec2 = rs.VectorAdd(noteVec1,rs.VectorScale(xVec,500)) noteVecs =[noteVec1,noteVec2] noteLines = rs.AddCurve(noteVex3,1) notecrv = rs.DivideCurve(noteLines,divanz,0) rs.DeleteObject(noteLines) notepnts2 = [] for i in range(len(notecrv)): if i <100: notecrv2 = notecrv[i] notepnts2.append(notecrv2) elif i 0: rotVec = normVec elif disp2 <1 and disp2 >-1: rotVec = rs.VectorRotate(normVec,90,zVec) elif disp3 <1 and disp3 >0: rotVec = -normVec else: rotVec = rs.VectorRotate(-normVec,90,zVec) p2 = rs.VectorAdd(pZ1,rs.VectorRotate(rs.VectorScale(abs,1),90*i,rotVec)) pO.append(p2) pO.append(pO[0]) crvB = rs.AddInterpCurve(pO,3,start_tangent = tanVec,end_tangent = tanVec) crvpnts = rs.DivideCurve(crvB,16,0) rs.DeleteObject(crvB) pntsBod = [] for i in range(len(crvpnts)): crvpnts2 = rs.VectorAdd(rs.VectorScale(rs.VectorAdd(pZ1,crvpnts[i]),random.uniform(1,(ver/2)+1)),pos) pntsBod.append(crvpnts2) pntsBod.append(pntsBod[0]) kopf = rs.AddInterpCurve(pntsBod,3,start_tangent = tanVec,end_tangent = tanVec) rs.ObjectPrintWidth(kopf,0.2) pH1 = rs.VectorAdd(pntsBod[3],rs.VectorScale(zVec,8)) #Hals if type ==2 or type ==3: pntHals = [pntsBod[3],pH1] crvHals = rs.AddCurve(pntHals,1) crvHals2 = rs.DivideCurve(crvHals,10,0) pntsHals = [] pntsHals.append(pntsBod[3]) pntsHals2 = [] pntsHals2.append(pntsBod[4]) pntsHalsZ = [] for i in range(1,10): crvHals3 = rs.VectorAdd(crvHals2[i],rs.VectorScale(xVec,random.uniform(-ver,ver))) pntsHalsZ.append(crvHals3) pntsHals.append(crvHals3) for i in range(9): crvHals4 = rs.VectorAdd(pntsHalsZ[i],tanVec/5) pntsHals2.append(crvHals4) rs.DeleteObject(crvHals) halsline = rs.AddLine(pntsHals[-1],pntsHals2[-1]) halscrv1 = rs.AddInterpCurve(pntsHals,3) halscrv2 = rs.AddInterpCurve(pntsHals2,3) rs.ObjectPrintWidth(halsline,0.2) rs.ObjectPrintWidth(halscrv1,0.2) rs.ObjectPrintWidth(halscrv2,0.2) if type == 3: for i in range (30): kritzel = rs.AddLine(pntsBod[random.randrange(0,7,1)],pntsBod[random.randrange(8,16,1)]) rs.ObjectPrintWidth(kritzel,0.2) dm.newEmptyLayer("notes",[0,0,255]) #Notenverteilung fest zu fluessig for i in range(noteanz): ver = i*0.02 pos = rs.VectorAdd(gespnts[(i*4+2)],rs.VectorScale(zVec,random.randrange(-1,10,1))) notetype = random.randrange(0,4,1) notes(notetype,pos,ver,normVec) #Notenverteilung gasfoermig for i in range(noteanz2): ver = 2 pos = rs.VectorAdd(gespnts[(i*2+250)],rs.VectorScale(zVec,random.randrange(-10,10,1))) notetype = random.randrange(0,4,1) notes(notetype,pos,ver,normVec) rs.EnableRedraw(1)