# spirale logaritmica # ro=a*e^(b*alfa) import math import rhinoscriptsyntax as rs import f_GetTabella2 def spirale(): titolo="Spirale Logaritmica" descrizione="Immetti i dati" param=["Valore di A","Rapporto incremento","Numero giri","Incremento Z per giro","angolo iniziale"] arrValue=[str(1),str(1.5),str(5),str(0),str(0)] newArrValue=f_GetTabella2.GetTabella(param,arrValue,titolo,descrizione) rs.EnableRedraw(False) if newArrValue!=None: # se non viene ritornato nulla # newArrValue e un array di (param,valori,titolo,descrizione) valori=newArrValue[1] # valori sono i nuovi valori restituiti da propertyListBox f_GetTabella2.SetTabella(param,valori,titolo) div=40. # divisioni per giro a=float(valori[0]) k=float(valori[1]) b=math.log(k)/(2*math.pi) giri=float(valori[2]) incZ=float(valori[3]) ang=float(valori[4])/360*div angolo=int(ang) # rs.MessageBox(str(angolo)) angolo=percentuale angolare di ndiv pg=math.pi ne=math.e ss=math.exp(1) print ss kkk=abs(giri*div) kk=int(kkk) print angolo print angolo+kk+1 arrP=[] for i in range(angolo,angolo+kk+1): alfa=math.pi*2/div*i ro=a*math.exp(b*alfa) x=ro*math.cos(alfa) if giri>=0: y=ro*math.sin(alfa) else: y=-ro*math.sin(alfa) p=[x,y,(i-angolo)*incZ/div] arrP.append(p) spir=rs.AddInterpCurve(arrP,3) # crea spirale rs.EnableRedraw(True) spirale()