""" Test 5 16.05.2019 www.3d-meier.de """ import c4d import math Vieleck = [] # Array für das Grundvieleck NK = 32 # Anzahl Kanten den Vielecks r = 1.0 # Radius des Vielecks Faktor = 1000 # Skalierungsfaktor c = 1.20 # Verschiebungsfaktor NS = 1000 # Anzahl Vielecke Phi = 360.0 - 720.0/(1 + math.sqrt(5)) def Drehung(z, Grad): Winkel = Grad * math.pi/180 x = z.real y = z.imag x1 = math.cos(Winkel) * x + math.sin(Winkel) * y y1 = -math.sin(Winkel) * x + math.cos(Winkel) * y return complex(x1, y1) def CreateNullobjekt(): obj = c4d.BaseObject(c4d.Onull) # Nullobjekt erzeugen obj.SetName("Sonnenblume") obj.Message(c4d.MSG_UPDATE) return obj def CreateExtrude(): extr = c4d.BaseObject(c4d.Oextrude) return extr def CreateSplineObjectV(): # Splineobjekte erzeugen obj = c4d.BaseObject(c4d.Ospline) # Anzahl Punkte des Splines obj.ResizeObject(NK*NS) # Zaehler für die Punkte zz = 0 # Vieleckdaten erzeugen z = complex(r, 0) Vieleck.append(z) for k in range(1,NK): z = Drehung(Vieleck[0], -360*k/NK) Vieleck.append(z) # Vieleckdaten dem Spline zuweisen for k in range(1,NS+1): if k%1 ==0: # Option um nur eine Spirale darzustellen for i in range(0,NK): # Vieleck nach aussen verschieben z = Vieleck[i] + complex(c * math.sqrt(k), 0) # Vieleck drehen z = Drehung(z, -k*Phi) obj.SetPoint(zz, c4d.Vector(z.real*Faktor, z.imag*Faktor, 0.0)) zz = zz + 1 # Spline in Segmente aufteilen obj.MakeVariableTag(c4d.Tsegment, NS) for i in range(0, NS): obj.SetSegment(i, NK, True) # Spline schließen obj[c4d.SPLINEOBJECT_CLOSED] = True # Name vergeben obj.SetName("Vieleck") obj.Message(c4d.MSG_UPDATE) return obj def main(): nullobj = CreateNullobjekt() extrude = CreateExtrude() splinobj1 = CreateSplineObjectV() doc.InsertObject(nullobj, None, None, True) doc.InsertObject(extrude, nullobj, None, True) doc.InsertObject(splinobj1, extrude, None, True) c4d.EventAdd() if __name__=='__main__': main()