""" Ruled Rotor Cylindroid 12.04.2020 """ import c4d import math # Variablen und Konstanten dialog_title = 'Ruled Rotor Cylindroid' a = 1 # Konstante a b = 2 # Konstante b n = 2 # Konstante n uMin = 0.0 # Bereich u uMax = 2*math.pi # Bereich u vMin = 1.0 # Bereich v vMax = 2.0 # Bereich v Nu = 150 # Anzahl Punkte u Nv = 10 # Anzahl Punkte v Faktor = 25 # Skalierungsfaktor def CreatePolygonObject(): # Polygonobjekt erzeugen obj = c4d.BaseObject(c4d.Opolygon) obj.ResizeObject(Nu*(Nv+1), Nu*Nv) obj.SetName(dialog_title) # Variablen zz=0 # Zaehler # Segmentbreiten berechnen du=(uMax-uMin)/Nu dv=(vMax-vMin)/Nv # Punkte erzeugen for i in xrange(0,Nu): for j in xrange(0,Nv+1): # Berechnung der Parameter u=uMin+i*du v=vMin+j*dv # Berechnung der Koordinaten x=(a + b*math.sin(n*u))*math.cos(u) - v*math.sin(u) y=(a + b*math.sin(n*u))*math.sin(u) + v*math.cos(u) z=b*math.cos(n*u) # Punkt speichern obj.SetPoint(zz, c4d.Vector(x*Faktor,y*Faktor,z*Faktor)) # Zaehler erhoehen zz=zz+1 # Polygone erzeugen zz=0 # Zaehler zuruecksetzen for j in xrange(0,Nv): for i in xrange(0,Nu-1): # Punkte fuer ein Quadrat definieren P1=i*(Nv+1)+j P2=i*(Nv+1)+j+1 P3=(i+1)*(Nv+1)+j+1 P4=(i+1)*(Nv+1)+j # Quadrat speichern obj.SetPolygon(zz, c4d.CPolygon(P1,P2,P3,P4)) # Zaehler erhoehen zz=zz+1 # Laengsnaht schliessen for j in xrange(0,Nv): # Punkte fuer ein Quadrat definieren P1=j P2=j+1 P4=(Nu-1)*(Nv+1)+j P3=(Nu-1)*(Nv+1)+j+1 # Quadrat speichern obj.SetPolygon(zz, c4d.CPolygon(P4,P3,P2,P1)) # Zaehler erhoehen zz=zz+1 # obj.Message(c4d.MSG_UPDATE) return obj def main(): plyobj = CreatePolygonObject() doc.InsertObject(plyobj, None, None, True) c4d.EventAdd() if __name__=='__main__': main()