####### DM2 - ue9 - truss type B # Raphael Wieser - Group 3 Hirschberg import rhinoscriptsyntax as rs import random as ran import fantastic_stairs_lib as fs import flipped_classroom_lib as fc rs.DeleteObjects(rs.AllObjects()) ##################################################################### #userinput spann=35.0 fieldsx=8 #subdivisions of truss - need to be multiple of 2 beamx=0.4 #max width of beam part beamz=0.4 #max thickness of beam part #derivedvalues hmin=spann/12 #minimumheight of truss if fieldsx%2==0: xdiv=fieldsx #divide by even number in x-direction else: print "ERROR please insert a number divideable by 2 as fieldsx)" exit() hmin=round(hmin,1) #round up to 1 decimal print "spann", spann #DEBUG print "hmin", hmin ##################################################################### #setup vectors for rotating objects vecx=rs.VectorAdd((0,0,0),(1,0,0)) vecy=rs.VectorAdd((0,0,0),(0,1,0)) vecz=rs.VectorAdd((0,0,0),(0,0,1)) rs.DeleteObjects(rs.AllObjects()) rs.EnableRedraw(False) ### GEOMETRY INPUT### #start middle end end up middle up start up quint = [[0,0,0],[spann/2,0,0],[spann,0,0],[spann,0,hmin],[spann/2,0,hmin*1.25],[0,0,hmin]] P0,P1,P2,P3,P4,P5 = rs.AddPoints(quint) #always arrange poinst left to right and down to up L0=rs.AddLine(P0,P1) #low left L1=rs.AddLine(P1,P2) #low right L2=rs.AddLine(P2,P3) #right L3=rs.AddLine(P4,P3) #vertical right L4=rs.AddLine(P5,P4) #up left L5=rs.AddLine(P0,P5) #vertical left def make_beam(dimy, dimz, path,insertion = (0,0,0),rotation=0,axis=None): beamoutline=rs.AddPolyline( ([0,0,0], [0,dimy,0], [0,dimy,dimz], [0,0,dimz],[0,0,0])) rs.MoveObject(beamoutline,insertion) rs.MoveObject(beamoutline,(0,-dimy/2,-dimz/2)) beam=rs.ExtrudeCurve(beamoutline,path) rs.CapPlanarHoles(beam) rs.RotateObject(beam,insertion,rotation,axis) rs.DeleteObject(beamoutline) return(beam) #end def make_vbeam(dimy, dimz, path,insertion = (0,0,0),rotation=0,axis1=-vecy,axis2=-vecz): beamoutline=rs.AddPolyline( ([0,0,0], [0,dimy,0], [0,dimy,dimz], [0,0,dimz],[0,0,0])) rs.MoveObject(beamoutline,insertion) rs.MoveObject(beamoutline,(0,-dimy/2,-dimz/2)) rs.RotateObject(beamoutline,insertion,rotation,axis1) rs.RotateObject(beamoutline,insertion,rotation,axis2) beam=rs.ExtrudeCurve(beamoutline,path) rs.CapPlanarHoles(beam) rs.DeleteObject(beamoutline) return(beam) #end #create truss untergurt = make_beam(beamx,beamz/2,L0,P0) untergurt = make_beam(beamx,beamz/2,L1,P1) obergurt = make_beam(beamx,beamz,L3,P4) obergurt = make_beam(beamx,beamz,L4,P5) #createoutermost vertical vertikalgurt=make_vbeam(beamx/2,beamx, L5, P0, 90,) rs.MoveObject(vertikalgurt,(beamx/2/2,0,0)) vertikalgurt=make_vbeam(beamx/2,beamx, L2, P2, 90,) rs.MoveObject(vertikalgurt,(-beamx/2/2,0,0)) #create diagonals diagonals=[] Upoints=[] Opoints=[] #create empty list for diagonals UpointsL=rs.DivideCurve(L0,xdiv/2) OpointsL=rs.DivideCurve(L4,xdiv/2) UpointsR=rs.DivideCurve(L1,xdiv/2) OpointsR=rs.DivideCurve(L3,xdiv/2) i=0 while i