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] #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)] noteVec1 = [0,0,0] noteVec2 = rs.VectorAdd(noteVec1,rs.VectorScale(xVec,500)) noteVecs =[noteVec1,noteVec2] noteLines = rs.AddCurve(noteVex,1) notecrv = rs.DivideCurve(noteLines,100,0) rs.DeleteObject(noteLines) notepnts2 = [] for i in range(len(notecrv)): if i <30: notecrv2 = notecrv[i] notepnts2.append(notecrv2) else: ver = random.uniform(0,0.1*i) notecrv2 = rs.VectorAdd(notecrv[i],rs.VectorScale(zVec,ver)) notepnts2.append(notecrv2) gespnts = [] for i in range (5): notepnts4 = [] for j in range(len(notepnts2)): notepnts3 = rs.VectorAdd(notepnts2[j],rs.VectorScale(zVec,i*4)) gespnts.append(notepnts3) if j <85: notepnts4.append(notepnts3) crvGeb = rs.AddInterpCurve(notepnts4,3) 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)) def notes(type,pos,ver,normVec): #Verformungsgrad pZ1 = [0,0,0] #Notenknopf pO = [] for i in range (4): if i==0 or i==2: abs = zVec else: abs = rs.VectorScale(zVec,2) p2 = rs.VectorAdd(pZ1,rs.VectorRotate(rs.VectorScale(abs,2),90*i,normVec)) 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]) rs.AddInterpCurve(pntsBod,3,start_tangent = tanVec,end_tangent = tanVec) pH1 = rs.VectorAdd(pntsBod[3],rs.VectorScale(zVec,20)) #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) pntsHals2.append(crvHals4) rs.DeleteObject(crvHals) rs.AddLine(pntsHals[-1],pntsHals2[-1]) rs.AddInterpCurve(pntsHals,3) rs.AddInterpCurve(pntsHals2,3) if type == 3: for i in range (30): rs.AddLine(pntsBod[random.randrange(0,7,1)],pntsBod[random.randrange(8,16,1)]) dm.newEmptyLayer("notes",[0,0,255]) for i in range(20): ver = i*0.05 pos = rs.VectorAdd(gespnts[i*5],rs.VectorScale(zVec,random.randrange(-2,20,2))) notetype = random.randrange(0,4,1) notes(notetype,pos,ver,normVec) rs.EnableRedraw(1)