import rhinoscriptsyntax as rs import random as ran rs.DeleteObjects(rs.AllObjects()) ######################SCHLUMPFHAUSEN########################## # Mittelpunkt und Radius #cent = centerpoint radius1 = 10 # Radius des Kreises def makeBox(point1,point2,point3,point4,point5,height,cent): tp=[point1,point2,point3,point4,point5] rechteck1=rs.AddPolyline(tp) path1 = rs.AddLine([cent[0]+10,cent[1]+0,0], [cent[0]+10,cent[1]+0,height]) box1=rs.ExtrudeCurve(rechteck1,path1) rs.CapPlanarHoles(box1) rs.DeleteObjects([path1,rechteck1]) return box1 #Bodenplatte Circle1=rs.AddCircle((34,31,0),100) path1 = rs.AddLine([34,31,0], [34,31,-1]) Bodenplatte=rs.ExtrudeCurve(Circle1,path1) rs.CapPlanarHoles(Bodenplatte) #Teich wp=[(21.5,10.4,0),(28.3,18,0),(36.3,16.8,0),(43.6,2.4,0),(35,-9.6,0),(22.5,-5.9,0),(23.7,4.9,0),(21.5,10.4,0)] Teichcurve=rs.AddInterpCurve(wp, 10) path2 = rs.AddLine([21.5,10.4,0], [21.5,10.4,-0.9]) Teich=rs.ExtrudeCurve(Teichcurve,path2) Bodenplatte2=rs.BooleanDifference(Bodenplatte,Teich,True) rs.AddLayer("Bodenplatte") rs.LayerColor("Bodenplatte",(154,205,50)) rs.ObjectLayer(Bodenplatte2,"Bodenplatte") path3 = rs.AddLine([21.5,10.4,-0.2], [21.5,10.4,-0.9]) Teich_Neu=rs.ExtrudeCurve(Teichcurve,path3) rs.CapPlanarHoles(Teich_Neu) rs.AddLayer("Teich") rs.LayerColor("Teich",(92,172,238)) rs.ObjectLayer(Teich_Neu,"Teich") rs.DeleteObject(Teichcurve) #Bäume def makeTree(base_point, trunk_height, trunk_radius, crown_radius): #Stamm top_point = (base_point[0], base_point[1], base_point[2] + trunk_height) trunk = rs.AddCylinder(base_point, trunk_height, trunk_radius) #Baumkrone crown_center = (base_point[0], base_point[1], base_point[2] + trunk_height + crown_radius) crown = rs.AddSphere(crown_center, crown_radius) #Farben rs.AddLayer("Baumkrone") rs.LayerColor( "Baumkrone",(110,139,61)) rs.ObjectLayer(crown, "Baumkrone") rs.AddLayer("Baumstamm") rs.LayerColor("Baumstamm",(139,90,43)) rs.ObjectLayer(trunk,"Baumstamm") #Pilzhaus def createPilz(color_Pilzkopf,color_Pilzstamm,cent): # Kreis erstellen für Pilzstamm circle = rs.AddCircle(cent, radius1) # Linie für Form von Pilzstamm cp=[(cent[0]+10,cent[1]+0,cent[2]+0),(cent[0]+13,cent[1]+0,cent[2]+3),(cent[0]+10,cent[1]+0,cent[2]+8)] #curve points curve1=rs.AddCurve(cp,30) Pilzstamm=rs.AddSweep1(circle,[curve1],False) rs.CapPlanarHoles(Pilzstamm) rs.DeleteObject(curve1) rs.MoveObject(circle,[0,0,cent[2]+14]) dp=[(cent[0]+10,cent[1]+0,cent[2]+8),(cent[0]+13,cent[1]+0,cent[2]+8),(cent[0]+15,cent[1]+0,cent[2]+12), (cent[0]+12,cent[1]+0,cent[2]+16),(cent[0]+7,cent[1]+0,cent[2]+20),(cent[0]+4,cent[1]+0,cent[2]+27), (cent[0]+0,cent[1]+0,cent[2]+29)] #Dachpoints von Curve curve2=rs.AddInterpCurve(dp,5) #Wellige Kurve für Form von Pilzkopf #punkte=rs.AddPoints(dp) Pilzkopf=rs.AddSweep1(circle,[curve2],False) rs.CapPlanarHoles(Pilzkopf) #Schornstein sp1=[(15,0,0),(15,3,0),(19,3,0),(19,0,0),(15,0,0)] rechteck1=rs.AddPolyline(sp1) sp2=[(19,0,0),(18.8,0,0.5),(18.5,0,1.9),(18.4,0,5.4),(18.38,0.5,8.12),(18.4,0.6,10.3),(18.4,0.625,10.86),(18.4,0.625,13)] curve3=rs.AddInterpCurve(sp2,2) sp3=[(15,3,0),(15.6,3,2.9),(15.8,2.6,5.9),(16.4,2.6,10.9),(16.4,2.6,13)] curve4=rs.AddInterpCurve(sp3,1) Schornstein=rs.AddSweep2([curve3,curve4],[rechteck1], False) rs.MoveObject(Schornstein, (cent[0]-10,cent[1]+6,cent[2]+15)) rs.DeleteObjects([curve3,curve4,rechteck1]) rs.CapPlanarHoles(Schornstein) Schornstein_Top=makeBox((cent[0]+5.6,cent[1]+6.6,27.7),(cent[0]+8.8,cent[1]+6.2,27.7),(cent[0]+9.1,cent[1]+8.5,27.7),(cent[0]+5.8,cent[1]+8.9,27.7),(cent[0]+5.6,cent[1]+6.6,27.7),0.85,cent) #Tür Door1=makeBox((cent[0]+11.5,cent[1]-2.5,0),(cent[0]+11.5,cent[1]+2.5,0),(cent[0]+7.5,cent[1]+2.5,0),(cent[0]+7.5,cent[1]-2.5,0),(cent[0]+11.5,cent[1]-2.5,0),6,cent) Pilzstamm_Door=rs.BooleanDifference(Pilzstamm, Door1, True) DoorBox=makeBox((cent[0]+7.5,cent[1]-2.5,0),(cent[0]+7.5,cent[1]+2.5,0),(cent[0]+8,cent[1]+2.5,0),(cent[0]+8,cent[1]-2.5,0),(cent[0]+7.5,cent[1]-2.5,0),6,cent) DoorBox_Bottom=makeBox((cent[0]+8,cent[1]-2.5,0),(cent[0]+8,cent[1]+2.5,0),(cent[0]+9,cent[1]+2.5,0),(cent[0]+9,cent[1]-2.5,0),(cent[0]+8,cent[1]-2.5,0),1,cent) DoorBox_Top=makeBox((cent[0]+8,cent[1]-2.5,5),(cent[0]+8,cent[1]+2.5,5),(cent[0]+9,cent[1]+2.5,5),(cent[0]+9,cent[1]-2.5,5),(cent[0]+8,cent[1]-2.5,5),1,cent) DoorKnob1=rs.AddTorus((cent[0]+8.08,cent[1]+0,3),0.3,0.065,(cent[0]+8.08,cent[1]+3,3)) DoorKnob2=rs.AddTorus((cent[0]+8.08,cent[1]+0,2.6),0.4,0.1,(cent[0]+9,cent[1]+0,2.6)) Door_Box_Top=makeBox((cent[0]+7.312,cent[1]-3,5.999),(cent[0]+7.312,cent[1]+3.1,5.999),(cent[0]+11.312,cent[1]+3.1,5.999),(cent[0]+11.312,cent[1]-3,5.999),(cent[0]+7.312,cent[1]-3,5.999),0.8,cent) Door_Box_Top_Final=rs.BooleanDifference(Door_Box_Top,Pilzstamm_Door,False) rs.DeleteObject(Door_Box_Top) #rs.AddTorus() rs.RotateObjects([Pilzkopf,Pilzstamm,Pilzstamm_Door, Schornstein, Schornstein_Top, DoorBox, DoorBox_Bottom, DoorBox_Top, DoorKnob1, DoorKnob2,Door_Box_Top_Final],cent, -55) #Fenster Window1=makeBox((cent[0]+8.2,cent[1]-2,3),(cent[0]+8.2,cent[1]+1,3),(cent[0]+13,cent[1]+1,3),(cent[0]+13,cent[1]-2,3),(cent[0]+8.2,cent[1]-2,3),3,cent) Pilzstamm_Window=rs.BooleanDifference(Pilzstamm_Door, Window1, True) Window_Box=makeBox((cent[0]+8.2,cent[1]-2,3),(cent[0]+8.2,cent[1]+1,3),(cent[0]+8.7,cent[1]+1,3),(cent[0]+8.7,cent[1]-2,3),(cent[0]+8.2,cent[1]-2,3),3,cent) Window_Frame=makeBox((cent[0]+9.5,cent[1]-2,3),(cent[0]+9.5,cent[1]+1,3),(cent[0]+10,cent[1]+1,3),(cent[0]+10,cent[1]-2,3),(cent[0]+9.5,cent[1]-2,3),3,cent) Window_InnerBox_1=makeBox((cent[0]+9.5,cent[1]-1.667,4.667),(cent[0]+9.5,cent[1]-0.667,4.667),(cent[0]+10.5,cent[1]-0.667,4.667),(cent[0]+10.5,cent[1]-1.667,4.667),(cent[0]+9.5,cent[1]-1.667,4.667),1,cent) Window_InnerBox_2=rs.CopyObject(Window_InnerBox_1, (0,1.33333,0)) Window_InnerBox_3=rs.CopyObject(Window_InnerBox_1, (0,0,-1.33333)) Window_InnerBox_4=rs.CopyObject(Window_InnerBox_1, (0,1.33333,-1.33333)) Window_Frame2=rs.BooleanDifference(Window_Frame, [Window_InnerBox_1,Window_InnerBox_2,Window_InnerBox_3,Window_InnerBox_4], True) Window_Box_Top=makeBox((cent[0]+7.312,cent[1]-2.5,5.999),(cent[0]+7.312,cent[1]+1.5,5.999),(cent[0]+11.312,cent[1]+1.5,5.999),(cent[0]+11.312,cent[1]-2.5,5.999),(cent[0]+7.312,cent[1]-2.5,5.999),0.8,cent) Window_Box_Top_Final=rs.BooleanDifference(Window_Box_Top,Pilzstamm_Window,False) rs.DeleteObject(Window_Box_Top) Window_Box_Bottom=makeBox((cent[0]+7.312,cent[1]-2.5,2),(cent[0]+7.312,cent[1]+1.5,2),(cent[0]+12,cent[1]+1.5,2),(cent[0]+12,cent[1]-2.5,2),(cent[0]+7.312,cent[1]-2.5,2),1.01,cent) Window_Box_Bottom_Final=rs.BooleanDifference(Window_Box_Bottom,Pilzstamm_Window,False) rs.DeleteObject(Window_Box_Bottom) rs.RotateObjects([Window_Box,Window_Frame2,Window_Box_Top_Final,Window_Box_Bottom_Final,Pilzkopf,Pilzstamm_Window,Pilzstamm_Door, Door_Box_Top_Final,Schornstein, Schornstein_Top, DoorBox, DoorBox_Bottom, DoorBox_Top, DoorKnob1, DoorKnob2],cent, ran.randint(20,100)) #Farben color_Pilzkopf=color_Pilzkopf[ran.randint(0,len(color_Pilzkopf)-1)] color_Pilzstamm=color_Pilzstamm[ran.randint(0,len(color_Pilzstamm)-1)] layername = str(ran.randint(0,9999)) rs.AddLayer(layername + "pilzkopf") rs.LayerColor(layername + "pilzkopf", color_Pilzkopf) rs.ObjectLayer(Pilzkopf,layername + "pilzkopf") rs.DeleteObject(curve2) rs.AddLayer(layername + "pilzstamm2") rs.LayerColor(layername + "pilzstamm2", color_Pilzstamm) rs.ObjectLayer(Pilzstamm_Window,layername + "pilzstamm2") rs.AddLayer(layername + "Door") rs.LayerColor(layername + "Door",(130,92,62)) rs.ObjectLayer([Door_Box_Top_Final,DoorBox,DoorBox_Bottom,DoorBox_Top,Window_Frame2,Window_Box_Top_Final,Window_Box_Bottom_Final],layername + "Door") rs.AddLayer(layername + "DoorKnob") rs.LayerColor(layername + "DoorKnob",(165,165,165)) rs.ObjectLayer([DoorKnob1,DoorKnob2],layername + "DoorKnob") rs.AddLayer(layername + "Schornstein") rs.LayerColor(layername + "Schornstein",(223,220,203)) rs.ObjectLayer([Schornstein,Schornstein_Top],layername + "Schornstein") rs.AddLayer(layername + "Window_Box") rs.LayerColor(layername + "Window_Box",(10,10,10)) rs.ObjectLayer(Window_Box,layername + "Window_Box") #Farbenauswahl colors_stamm = [(240,230,175),(234,206,156)] colors_kopf = [(57,120,147),(178,211,181),(223,45,73),(53,137,195),(255,249,144),(165,42,42),(255,165,79),(139,134,78),(240,128,128),(139,34,82)] #Schlumpfhäuser createPilz(colors_kopf,colors_stamm,(0, 0, 0)) createPilz(colors_kopf,colors_stamm,(0, 40, 0)) createPilz(colors_kopf,colors_stamm,(20, 70, 0)) createPilz(colors_kopf,colors_stamm,(50, 100, 0)) createPilz(colors_kopf,colors_stamm,(10, -40, 0)) createPilz(colors_kopf,colors_stamm,(50, -40, 0)) createPilz(colors_kopf,colors_stamm,(60, 40, 0)) createPilz(colors_kopf,colors_stamm,(75, 0, 0)) createPilz(colors_kopf,colors_stamm,(95, 78, 0)) createPilz(colors_kopf,colors_stamm,(100, 32, 0)) #Bäume makeTree((20,20,0),25,1.1,10) makeTree((25,32,0),19,0.9,7) makeTree((-19,50,0),25,1.1,10) makeTree((-41,35,0),19,0.9,7) makeTree((65,76,0),25,1.1,10) makeTree((80,60,0),19,0.9,7) makeTree((-28,-10,0),25,1.1,10) makeTree((-40,46,0),25,1.1,10) makeTree((8,104,0),25,1.1,10) makeTree((12,94,0),19,0.9,7) makeTree((82,-34,0),25,1.1,10) makeTree((92,-23,0),19,0.9,7) makeTree((-29,-19,0),19,0.9,7) makeTree((-20,-24,0),19,0.9,7) makeTree((115,11,0),25,1.1,10) makeTree((118,21,0),19,0.9,7)