""" Kachelung 65 06.12.2015 """ import c4d import math # Variablen und Konstanten N = 5 # Anzahl Punkte pro Kante r = 1.0 # Kantenlaenge h = 0.5 * math.sqrt(3.0) * r # Hoehe Dreieck riv = r/(2.0*math.tan(math.pi/24.0)) # Inkreisradius 24-eck ruv = r/(2*math.sin(math.pi/24.0)) # Umkreisradius 24-eck ria = r/(2.0*math.tan(math.pi/8.0)) # Inkreisradius 8-eck rua = r/(2*math.sin(math.pi/8.0)) # Umkreisradius 8-eck a = r*math.cos(5*math.pi/24.0) # Daten Raute 1 und 4 b = r*math.sin(5*math.pi/24.0) # Daten Raute 1 und 4 c = r*math.cos(5*math.pi/12.0) # Daten Raute 2 und 5 d = r*math.sin(5*math.pi/12.0) # Daten Raute 2 und 5 w3 = 45 # kleiner Winkel der Raute 3 und 7 e = r*math.cos(w3*math.pi/360.0) # Daten Raute 3 und 7 f = r*math.sin(w3*math.pi/360.0) # Daten Raute 3 und 7 w6 = 15 # kleiner Winkel der Raute 6 l = r*math.cos(w6*math.pi/360.0) # Daten Raute 6 m = r*math.sin(w6*math.pi/360.0) # Daten Raute 6 Abstand_x = 0.5*math.sqrt(2.0)*(2*riv + 2*ria) Abstand_y = Abstand_x NS = 3 # Anzahl Wiederholungen in eine Rchtung if NS%2 ==0: # nur ungerade NS zulassen NS = NS +1 Faktor = 1000 # Skalierungsfaktor Achteck = [] Raute1 = [] Raute2 = [] Raute3 = [] Raute4 = [] Raute5 = [] Raute6 = [] Raute7 = [] Viereck1 = [] Viereck2 = [] Dreieck1 = [] Dreieck2 = [] Dreieck3 = [] Dreieck4 = [] #Inversion = True Inversion = False def Invers(z): return 1/(z + complex(0.001, 0.001)) def CreateNullobjekt(): obj = c4d.BaseObject(c4d.Onull) # Nullobjekt erzeugen obj.SetName("Kachelung 65") obj.Message(c4d.MSG_UPDATE) return obj 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) # Dreiecke 4 ****************************************************************************** def CreateSplineObjectD4(): obj = c4d.BaseObject(c4d.Ospline) # Splineobjekt erzeugen obj.ResizeObject(N*3*(2*NS+1)*(2*NS+1)*4) dt= r/N zz = 0 # Zaehler Punkte # Dreiecksdaten erzeugen for i in range(0,N): z = complex( -0.5 *r + i * dt, 0) Dreieck4.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, 120) + complex(0.5*r, 0) Dreieck4.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, -120) + complex(0, -h) Dreieck4.append(z) # Dreieck verschieben for i in range(0,3*N): Dreieck4[i] = Dreieck4[i] + complex(r + r*math.sqrt(2.0) + h + c, 0.5*r + d + h) # Dreieck spiegeln for i in range(0,3*N): z = complex(Dreieck4[i].real, -Dreieck4[i].imag) Dreieck4.append(z) # Dreiecke duplizieren und drehen for i in range(0,3*N*2): z = Drehung(Dreieck4[i], -90) Dreieck4.append(z) for k in range(0,2*NS+1): y0 = -Abstand_y*NS + k*Abstand_y for j in range(0,2*NS+1): x0 = -Abstand_x*NS + j*Abstand_x for i in range(0,3*N*4): z = Dreieck4[i] + complex(x0, y0) if Inversion: z = Invers(z) obj.SetPoint(zz, c4d.Vector(z.real*Faktor, z.imag*Faktor, 0.0)) zz = zz + 1 obj.MakeVariableTag(c4d.Tsegment, (2*NS+1)*(2*NS+1)*4) for i in range(0, (2*NS+1)*(2*NS+1)*4): obj.SetSegment(i, 3*N, True) obj[c4d.SPLINEOBJECT_CLOSED] = True obj.SetName("Dreiecke 4") obj.Message(c4d.MSG_UPDATE) return obj # Vierecke 2 *************************************************************************************** def CreateSplineObjectQ2(): obj = c4d.BaseObject(c4d.Ospline) # Splineobjekt erzeugen obj.ResizeObject(N*4*(2*NS+1)*(2*NS+1)*2) dt= r/N zz = 0 # Zaehler Punkte # Viereckdaten erzeugen for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, -45) + complex(-r/math.sqrt(2.0), 0) Viereck2.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, 45) + complex(0, r/math.sqrt(2.0)) Viereck2.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, 135) + complex(r/math.sqrt(2.0), 0) Viereck2.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, -135) + complex(0, -r/math.sqrt(2.0)) Viereck2.append(z) # Viereck verschieben for i in range(0,4*N): Viereck2[i] = Viereck2[i] + complex(r + r/math.sqrt(2.0), 0) # Viereck duplizieren und drehen for i in range(0,4*N): z = Drehung(Viereck2[i], -45) Viereck2.append(z) # Vierecke verschieben for i in range(0,4*N*2): Viereck2[i] = Viereck2[i] + Dreieck4[3*N*3] for k in range(0,2*NS+1): y0 = -Abstand_y*NS + k*Abstand_y for j in range(0,2*NS+1): x0 = -Abstand_x*NS + j*Abstand_x for i in range(0,4*N*2): z = Viereck2[i] + complex(x0, y0) if Inversion: z = Invers(z) obj.SetPoint(zz, c4d.Vector(z.real*Faktor, z.imag*Faktor, 0.0)) zz = zz + 1 obj.MakeVariableTag(c4d.Tsegment, (2*NS+1)*(2*NS+1)*2) for i in range(0, (2*NS+1)*(2*NS+1)*2): obj.SetSegment(i, 4*N, True) obj[c4d.SPLINEOBJECT_CLOSED] = True obj.SetName("Vierecke 2") obj.Message(c4d.MSG_UPDATE) return obj # Rauten 7 *************************************************************************************** def CreateSplineObjectR7(): obj = c4d.BaseObject(c4d.Ospline) # Splineobjekt erzeugen obj.ResizeObject(N*4*(2*NS+1)*(2*NS+1)*4) dt= r/N zz = 0 # Zaehler Punkte # Rautendaten erzeugen for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, -w3/2.0) Raute7.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, w3/2.0) + complex(e, f) Raute7.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, 180 - w3/2.0) + complex(2*e, 0) Raute7.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, -180 + w3/2.0) + complex(e, -f) Raute7.append(z) # Raute drehen for i in range(0,4*N): Raute7[i] = Drehung(Raute7[i], -w3/2.0) # Raute duplizieren und drehen for i in range(0,4*N): z = Drehung( Raute7[i], -45) Raute7.append(z) for i in range(0,4*N): z = Drehung( Raute7[i], 45) Raute7.append(z) # Raute duplizieren und drehen for i in range(0,4*N): z = Drehung( Raute7[i], w3/2.0) Raute7.append(z) # Raute verschieben for i in range(4*N*3,4*N*4): Raute7[i] = Raute7[i] + complex(-e, 0) # Raute drehen und verschieben for i in range(4*N*3,4*N*4): Raute7[i] = Drehung(Raute7[i], 90) + complex(2*e + f, 0) # Raute drehen for i in range(4*N*3,4*N*4): Raute7[i] = Drehung(Raute7[i], -w3/2.0) # Raute verschieben for i in range(0,4*N*4): Raute7[i] = Raute7[i] + Dreieck4[3*N*3] for k in range(0,2*NS+1): y0 = -Abstand_y*NS + k*Abstand_y for j in range(0,2*NS+1): x0 = -Abstand_x*NS + j*Abstand_x for i in range(0,4*N*4): z = Raute7[i] + complex(x0, y0) if Inversion: z = Invers(z) obj.SetPoint(zz, c4d.Vector(z.real*Faktor, z.imag*Faktor, 0.0)) zz = zz + 1 obj.MakeVariableTag(c4d.Tsegment, (2*NS+1)*(2*NS+1)*4) for i in range(0, (2*NS+1)*(2*NS+1)*4): obj.SetSegment(i, 4*N, True) obj[c4d.SPLINEOBJECT_CLOSED] = True obj.SetName("Rauten 7") obj.Message(c4d.MSG_UPDATE) return obj # Rauten 6 *************************************************************************************** def CreateSplineObjectR6(): obj = c4d.BaseObject(c4d.Ospline) # Splineobjekt erzeugen obj.ResizeObject(N*4*(2*NS+1)*(2*NS+1)*4) dt= r/N zz = 0 # Zaehler Punkte # Rautendaten erzeugen for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, -w6/2.0) Raute6.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, w6/2.0) + complex(l, m) Raute6.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, 180 - w6/2.0) + complex(2*l, 0) Raute6.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, -180 + w6/2.0) + complex(l, -m) Raute6.append(z) # Raute drehen for i in range(0,4*N): Raute6[i] = Drehung(Raute6[i], -90-w6/2.0) # Rauten duplizieren und drehen for i in range(0,4*N): z = Drehung( Raute6[i], 15) Raute6.append(z) # Rauten verschieben for i in range(0,4*N*2): Raute6[i] = Raute6[i] + complex(r + r*math.sqrt(2.0) + h + c, -0.5*r - d) # Rauten drehen und duplizieren for i in range(0,4*N*2): z = Drehung(Raute6[i], -90) Raute6.append(z) for k in range(0,2*NS+1): y0 = -Abstand_y*NS + k*Abstand_y for j in range(0,2*NS+1): x0 = -Abstand_x*NS + j*Abstand_x for i in range(0,4*N*4): z = Raute6[i] + complex(x0, y0) if Inversion: z = Invers(z) obj.SetPoint(zz, c4d.Vector(z.real*Faktor, z.imag*Faktor, 0.0)) zz = zz + 1 obj.MakeVariableTag(c4d.Tsegment, (2*NS+1)*(2*NS+1)*4) for i in range(0, (2*NS+1)*(2*NS+1)*4): obj.SetSegment(i, 4*N, True) obj[c4d.SPLINEOBJECT_CLOSED] = True obj.SetName("Rauten 6") obj.Message(c4d.MSG_UPDATE) return obj # Rauten 5 *************************************************************************************** def CreateSplineObjectR5(): obj = c4d.BaseObject(c4d.Ospline) # Splineobjekt erzeugen obj.ResizeObject(N*4*(2*NS+1)*(2*NS+1)*2) dt= r/N zz = 0 # Zaehler Punkte # Rautendaten erzeugen for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, -75) + complex(-c, 0) Raute5.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, 75) + complex(0, d) Raute5.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, 105) + complex(c, 0) Raute5.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, -105) + complex(0, -d) Raute5.append(z) # Raute verschieben for i in range(0,4*N): Raute5[i] = Raute5[i] + complex(r + r*math.sqrt(2.0) + h + c, 0.5*r) # Raute drehen und duplizieren for i in range(0,4*N): z = Drehung(Raute5[i], -90) Raute5.append(z) for k in range(0,2*NS+1): y0 = -Abstand_y*NS + k*Abstand_y for j in range(0,2*NS+1): x0 = -Abstand_x*NS + j*Abstand_x for i in range(0,4*N*2): z = Raute5[i] + complex(x0, y0) if Inversion: z = Invers(z) obj.SetPoint(zz, c4d.Vector(z.real*Faktor, z.imag*Faktor, 0.0)) zz = zz + 1 obj.MakeVariableTag(c4d.Tsegment, (2*NS+1)*(2*NS+1)*2) for i in range(0, (2*NS+1)*(2*NS+1)*2): obj.SetSegment(i, 4*N, True) obj[c4d.SPLINEOBJECT_CLOSED] = True obj.SetName("Rauten 5") obj.Message(c4d.MSG_UPDATE) return obj # Rauten 4 *************************************************************************************** def CreateSplineObjectR4(): obj = c4d.BaseObject(c4d.Ospline) # Splineobjekt erzeugen obj.ResizeObject(N*4*(2*NS+1)*(2*NS+1)*8) dt= r/N zz = 0 # Zaehler Punkte # Rautendaten erzeugen for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, 37.5) Raute4.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, -37.5) + complex(a, -b) Raute4.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, -142.5) + complex(2*a, 0) Raute4.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, 142.5) + complex(a, b) Raute4.append(z) # Raute drehen for i in range(0,4*N): Raute4[i] = Drehung(Raute4[i], 67.5) # Raute spiegeln for i in range(0,4*N): z = complex(Raute4[i].real, -Raute4[i].imag) Raute4.append(z) # Rauten verschieben for i in range(0,4*N*2): Raute4[i] = Raute4[i] + complex(+r + r*math.sqrt(2.0) + 2*c, 0) # Rauten drehen for i in range(0,4*N*2): Raute4[i] = Drehung(Raute4[i], -45) # Rauten duplizieren und drehen for k in range(1,4): for i in range(0,4*N*2): z = Drehung(Raute4[i], -90*k) Raute4.append(z) for k in range(0,2*NS+1): y0 = -Abstand_y*NS + k*Abstand_y for j in range(0,2*NS+1): x0 = -Abstand_x*NS + j*Abstand_x for i in range(0,4*N*8): z = Raute4[i] + complex(x0, y0) if Inversion: z = Invers(z) obj.SetPoint(zz, c4d.Vector(z.real*Faktor, z.imag*Faktor, 0.0)) zz = zz + 1 obj.MakeVariableTag(c4d.Tsegment, (2*NS+1)*(2*NS+1)*8) for i in range(0, (2*NS+1)*(2*NS+1)*8): obj.SetSegment(i, 4*N, True) obj[c4d.SPLINEOBJECT_CLOSED] = True obj.SetName("Rauten 4") obj.Message(c4d.MSG_UPDATE) return obj # Rauten 3 *************************************************************************************** def CreateSplineObjectR3(): obj = c4d.BaseObject(c4d.Ospline) # Splineobjekt erzeugen obj.ResizeObject(N*4*(2*NS+1)*(2*NS+1)*8) dt= r/N zz = 0 # Zaehler Punkte # Rautendaten erzeugen for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, -w3/2.0) Raute3.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, w3/2.0) + complex(e, f) Raute3.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, 180 - w3/2.0) + complex(2*e, 0) Raute3.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, -180 + w3/2.0) + complex(e, -f) Raute3.append(z) # Raute drehen for i in range(0,4*N): Raute3[i] = Drehung(Raute3[i], -w3/2.0) # Rauten duplizieren und drehen for k in range(1,8): for i in range(0,4*N): z = Drehung( Raute3[i], -45*k) Raute3.append(z) for k in range(0,2*NS+1): y0 = -Abstand_y*NS + k*Abstand_y for j in range(0,2*NS+1): x0 = -Abstand_x*NS + j*Abstand_x for i in range(0,4*N*8): z = Raute3[i] + complex(x0, y0) if Inversion: z = Invers(z) obj.SetPoint(zz, c4d.Vector(z.real*Faktor, z.imag*Faktor, 0.0)) zz = zz + 1 obj.MakeVariableTag(c4d.Tsegment, (2*NS+1)*(2*NS+1)*8) for i in range(0, (2*NS+1)*(2*NS+1)*8): obj.SetSegment(i, 4*N, True) obj[c4d.SPLINEOBJECT_CLOSED] = True obj.SetName("Rauten 3") obj.Message(c4d.MSG_UPDATE) return obj # Dreiecke 3 ****************************************************************************** def CreateSplineObjectD3(): obj = c4d.BaseObject(c4d.Ospline) # Splineobjekt erzeugen obj.ResizeObject(N*3*(2*NS+1)*(2*NS+1)*8) dt= r/N zz = 0 # Zaehler Punkte # Dreiecksdaten erzeugen for i in range(0,N): z = complex( -0.5 *r + i * dt, 0) Dreieck3.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, 120) + complex(0.5*r, 0) Dreieck3.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, -120) + complex(0, -h) Dreieck3.append(z) # Dreieck verschieben for i in range(0,3*N): Dreieck3[i] = Dreieck3[i] + complex(-0.5*r, 0) # Dreieck duplizieren, drehen und verschieben for i in range(0,3*N): z = Drehung(Dreieck3[i], -90) + complex(0, r) Dreieck3.append(z) # Dreiecke verschieben for i in range(0,6*N): Dreieck3[i] = Dreieck3[i] + complex(r + r/math.sqrt(2.0), -r - r/math.sqrt(2.0)) # Dreiecke duplizieren und drehen for k in range(1,4): for i in range(0,3*N*2): z = Drehung(Dreieck3[i], -90*k) Dreieck3.append(z) for k in range(0,2*NS+1): y0 = -Abstand_y*NS + k*Abstand_y for j in range(0,2*NS+1): x0 = -Abstand_x*NS + j*Abstand_x for i in range(0,3*N*8): z = Dreieck3[i] + complex(x0, y0) if Inversion: z = Invers(z) obj.SetPoint(zz, c4d.Vector(z.real*Faktor, z.imag*Faktor, 0.0)) zz = zz + 1 obj.MakeVariableTag(c4d.Tsegment, (2*NS+1)*(2*NS+1)*8) for i in range(0, (2*NS+1)*(2*NS+1)*8): obj.SetSegment(i, 3*N, True) obj[c4d.SPLINEOBJECT_CLOSED] = True obj.SetName("Dreiecke 3") obj.Message(c4d.MSG_UPDATE) return obj # Vierecke 1 *************************************************************************************** def CreateSplineObjectQ1(): obj = c4d.BaseObject(c4d.Ospline) # Splineobjekt erzeugen obj.ResizeObject(N*4*(2*NS+1)*(2*NS+1)*8) dt= r/N zz = 0 # Zaehler Punkte # Viereckdaten erzeugen for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, -45) + complex(-r/math.sqrt(2.0), 0) Viereck1.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, 45) + complex(0, r/math.sqrt(2.0)) Viereck1.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, 135) + complex(r/math.sqrt(2.0), 0) Viereck1.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, -135) + complex(0, -r/math.sqrt(2.0)) Viereck1.append(z) # Viereck verschieben for i in range(0,4*N): Viereck1[i] = Viereck1[i] + complex(r + r/math.sqrt(2.0), 0) # Viereck duplizieren und drehen for k in range(1,8): for i in range(0,4*N): z = Drehung(Viereck1[i], -45*k) Viereck1.append(z) for k in range(0,2*NS+1): y0 = -Abstand_y*NS + k*Abstand_y for j in range(0,2*NS+1): x0 = -Abstand_x*NS + j*Abstand_x for i in range(0,4*N*8): z = Viereck1[i] + complex(x0, y0) if Inversion: z = Invers(z) obj.SetPoint(zz, c4d.Vector(z.real*Faktor, z.imag*Faktor, 0.0)) zz = zz + 1 obj.MakeVariableTag(c4d.Tsegment, (2*NS+1)*(2*NS+1)*8) for i in range(0, (2*NS+1)*(2*NS+1)*8): obj.SetSegment(i, 4*N, True) obj[c4d.SPLINEOBJECT_CLOSED] = True obj.SetName("Vierecke 1") obj.Message(c4d.MSG_UPDATE) return obj # Dreiecke 2 ****************************************************************************** def CreateSplineObjectD2(): obj = c4d.BaseObject(c4d.Ospline) # Splineobjekt erzeugen obj.ResizeObject(N*3*(2*NS+1)*(2*NS+1)*4) dt= r/N zz = 0 # Zaehler Punkte # Dreiecksdaten erzeugen for i in range(0,N): z = complex(-0.5*r + i * dt, 0) Dreieck2.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, -120) + complex(0.5*r, 0) Dreieck2.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, 120) + complex(0, h) Dreieck2.append(z) # Dreieck verschieben for i in range(0,3*N): Dreieck2[i] = Dreieck2[i] + complex(0, -h -r - r*math.sqrt(2.0) - 2*c) # Dreiecke drehen for i in range(0,3*N): Dreieck2[i] = Drehung(Dreieck2[i], 45) # Dreieck duplizieren und drehen for k in range(1,4): for i in range(0,3*N): z = Drehung(Dreieck2[i], -90*k) Dreieck2.append(z) for k in range(0,2*NS+1): y0 = -Abstand_y*NS + k*Abstand_y for j in range(0,2*NS+1): x0 = -Abstand_x*NS + j*Abstand_x for i in range(0,3*N*4): z = Dreieck2[i] + complex(x0, y0) if Inversion: z = Invers(z) obj.SetPoint(zz, c4d.Vector(z.real*Faktor, z.imag*Faktor, 0.0)) zz = zz + 1 obj.MakeVariableTag(c4d.Tsegment, (2*NS+1)*(2*NS+1)*4) for i in range(0, (2*NS+1)*(2*NS+1)*4): obj.SetSegment(i, 3*N, True) obj[c4d.SPLINEOBJECT_CLOSED] = True obj.SetName("Dreiecke 2") obj.Message(c4d.MSG_UPDATE) return obj # Rauten 2 *************************************************************************************** def CreateSplineObjectR2(): obj = c4d.BaseObject(c4d.Ospline) # Splineobjekt erzeugen obj.ResizeObject(N*4*(2*NS+1)*(2*NS+1)*4) dt= r/N zz = 0 # Zaehler Punkte # Rautendaten erzeugen for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, -75) + complex(-c, 0) Raute2.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, 75) + complex(0, d) Raute2.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, 105) + complex(c, 0) Raute2.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, -105) + complex(0, -d) Raute2.append(z) # Raute verschieben for i in range(0,4*N): Raute2[i] = Raute2[i] + complex(r + r*math.sqrt(2.0) + c, 0) # Raute drehen for i in range(0,4*N): Raute2[i] = Drehung(Raute2[i], -45) # Rauten duplizieren und drehen for k in range(1,4): for i in range(0,4*N): z = Drehung(Raute2[i], -90*k) Raute2.append(z) for k in range(0,2*NS+1): y0 = -Abstand_y*NS + k*Abstand_y for j in range(0,2*NS+1): x0 = -Abstand_x*NS + j*Abstand_x for i in range(0,4*N*4): z = Raute2[i] + complex(x0, y0) if Inversion: z = Invers(z) obj.SetPoint(zz, c4d.Vector(z.real*Faktor, z.imag*Faktor, 0.0)) zz = zz + 1 obj.MakeVariableTag(c4d.Tsegment, (2*NS+1)*(2*NS+1)*4) for i in range(0, (2*NS+1)*(2*NS+1)*4): obj.SetSegment(i, 4*N, True) obj[c4d.SPLINEOBJECT_CLOSED] = True obj.SetName("Rauten 2") obj.Message(c4d.MSG_UPDATE) return obj # Achtecke **************************************************************************** def CreateSplineObjectA(): # Splineobjekte erzeugen obj = c4d.BaseObject(c4d.Ospline) obj.ResizeObject(N*8*(2*NS+1)*(2*NS+1)*2) dt= r/N # Unterteilung Kante zz = 0 # Zaehler Punkte # Siebeneckdaten erzeugen for i in range(0,N): z = complex(ria, -0.5 * r + i * dt) Achteck.append(z) for k in range(1,8): for j in range(0,N): z = Drehung(Achteck[j], -360*k/8.0) Achteck.append(z) # Achteck verschieben for i in range(0,8*N): Achteck[i] = Achteck[i] + complex(riv + ria, 0) # Achteck drehen for i in range(0,8*N): Achteck[i] = Drehung(Achteck[i], 45.0) # Achteck spiegeln for i in range(0,8*N): z = complex(Achteck[i].real, -Achteck[i].imag) Achteck.append(z) for k in range(0,2*NS+1): y0 = -Abstand_y*NS + k*Abstand_y for j in range(0,2*NS+1): x0 = -Abstand_x*NS + j*Abstand_x for i in range(0,8*N*2): z = Achteck[i] + complex(x0, y0) if Inversion: z = Invers(z) obj.SetPoint(zz, c4d.Vector(z.real*Faktor, z.imag*Faktor, 0.0)) zz = zz + 1 obj.MakeVariableTag(c4d.Tsegment, (2*NS+1)*(2*NS+1)*2) for i in range(0, (2*NS+1)*(2*NS+1)*2): obj.SetSegment(i, 8*N, True) obj[c4d.SPLINEOBJECT_CLOSED] = True obj.SetName("Achtecke") obj.Message(c4d.MSG_UPDATE) return obj # Rauten 1 *************************************************************************************** def CreateSplineObjectR1(): obj = c4d.BaseObject(c4d.Ospline) # Splineobjekt erzeugen obj.ResizeObject(N*4*(2*NS+1)*(2*NS+1)*8) dt= r/N zz = 0 # Zaehler Punkte # Rautendaten erzeugen for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, 37.5) Raute1.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, -37.5) + complex(a, -b) Raute1.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, -142.5) + complex(2*a, 0) Raute1.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, 142.5) + complex(a, b) Raute1.append(z) # Raute drehen for i in range(0,4*N): Raute1[i] = Drehung(Raute1[i], -7.5) # Raute verschieben for i in range(0,4*N): Raute1[i] = Raute1[i] + complex(r + 0.5*r* math.sqrt(2.0), -0.5*r* math.sqrt(2.0)) # Raute spiegeln for i in range(0,4*N): z = complex(Raute1[i].real, -Raute1[i].imag) Raute1.append(z) # Rauten duplizieren und drehen for k in range(1,4): for i in range(0,4*N*2): z = Drehung( Raute1[i], -90*k) Raute1.append(z) for k in range(0,2*NS+1): y0 = -Abstand_y*NS + k*Abstand_y for j in range(0,2*NS+1): x0 = -Abstand_x*NS + j*Abstand_x for i in range(0,4*N*8): z = Raute1[i] + complex(x0, y0) if Inversion: z = Invers(z) obj.SetPoint(zz, c4d.Vector(z.real*Faktor, z.imag*Faktor, 0.0)) zz = zz + 1 obj.MakeVariableTag(c4d.Tsegment, (2*NS+1)*(2*NS+1)*8) for i in range(0, (2*NS+1)*(2*NS+1)*8): obj.SetSegment(i, 4*N, True) obj[c4d.SPLINEOBJECT_CLOSED] = True obj.SetName("Rauten 1") obj.Message(c4d.MSG_UPDATE) return obj # Dreiecke 1 ****************************************************************************** def CreateSplineObjectD1(): obj = c4d.BaseObject(c4d.Ospline) # Splineobjekt erzeugen obj.ResizeObject(N*3*(2*NS+1)*(2*NS+1)*12) dt= r/N zz = 0 # Zaehler Punkte # Dreiecksdaten erzeugen for i in range(0,N): z = complex( -0.5 *r + i * dt, riv) Dreieck1.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, -120) + complex(0.5*r, riv) Dreieck1.append(z) for i in range(0,N): z = complex(i * dt, 0) z = Drehung(z, 120) + complex(0, riv + h) Dreieck1.append(z) # Dreieck duplizieren und drehen for i in range(0,3*N): z = Drehung(Dreieck1[i], 360/24.0) Dreieck1.append(z) for i in range(0,3*N): z = Drehung(Dreieck1[i], -360/24.0) Dreieck1.append(z) # Dreiecke verschieben for i in range(0,3*N*3): Dreieck1[i] = Dreieck1[i] + complex(0, -riv -r - h - r*math.sqrt(2.)) # Dreiecke duplizieren und drehen for k in range(1,4): for i in range(0,3*N*3): z = Drehung(Dreieck1[i], -90*k) Dreieck1.append(z) for k in range(0,2*NS+1): y0 = -Abstand_y*NS + k*Abstand_y for j in range(0,2*NS+1): x0 = -Abstand_x*NS + j*Abstand_x for i in range(0,3*N*12): z = Dreieck1[i] + complex(x0, y0) if Inversion: z = Invers(z) obj.SetPoint(zz, c4d.Vector(z.real*Faktor, z.imag*Faktor, 0.0)) zz = zz + 1 obj.MakeVariableTag(c4d.Tsegment, (2*NS+1)*(2*NS+1)*12) for i in range(0, (2*NS+1)*(2*NS+1)*12): obj.SetSegment(i, 3*N, True) obj[c4d.SPLINEOBJECT_CLOSED] = True obj.SetName("Dreiecke 1") obj.Message(c4d.MSG_UPDATE) return obj def main(): nullobj = CreateNullobjekt() slinobj11 = CreateSplineObjectD4() slinobj10 = CreateSplineObjectR6() slinobj1 = CreateSplineObjectR4() slinobj2 = CreateSplineObjectR5() slinobj3 = CreateSplineObjectQ1() slinobj13 = CreateSplineObjectQ2() slinobj4 = CreateSplineObjectR1() slinobj5 = CreateSplineObjectR2() slinobj12 = CreateSplineObjectR7() slinobj9 = CreateSplineObjectR3() slinobj6 = CreateSplineObjectD1() slinobj7 = CreateSplineObjectD2() slinobj8 = CreateSplineObjectD3() doc.InsertObject(nullobj, None, None, True) doc.InsertObject(slinobj11, nullobj, None, True) doc.InsertObject(slinobj8, nullobj, None, True) doc.InsertObject(slinobj7, nullobj, None, True) doc.InsertObject(slinobj6, nullobj, None, True) doc.InsertObject(slinobj12, nullobj, None, True) doc.InsertObject(slinobj10, nullobj, None, True) doc.InsertObject(slinobj2, nullobj, None, True) doc.InsertObject(slinobj1, nullobj, None, True) doc.InsertObject(slinobj9, nullobj, None, True) doc.InsertObject(slinobj5, nullobj, None, True) doc.InsertObject(slinobj4, nullobj, None, True) doc.InsertObject(slinobj13, nullobj, None, True) doc.InsertObject(slinobj3, nullobj, None, True) c4d.EventAdd() if __name__=='__main__': main()