####### DM2 - ue9 - Truss Type A # 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### quad = [[0,0,0],[spann,0,0],[spann,0,hmin],[0,0,hmin]] P0,P1,P2,P3 = rs.AddPoints(quad) L0=rs.AddLine(P0,P1) L1=rs.AddLine(P1,P2) L2=rs.AddLine(P3,P2) L3=rs.AddLine(P0,P3) 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) obergurt = make_beam(beamx,beamz,L2,P3) #createoutermost vertical vertikalgurt=make_vbeam(beamx/2,beamx, L3, P0, 90,) rs.MoveObject(vertikalgurt,(beamx/2/2,0,0)) vertikalgurt=make_vbeam(beamx/2,beamx, L3, P1, 90,) rs.MoveObject(vertikalgurt,(-beamx/2/2,0,0)) #create other verticals for i in range(xdiv-1): vertikalgurt=make_vbeam(beamx/4,beamx, L3, P0, 90,) #rs.MoveObject(vertikalgurt,(beamx/4,0)) vdist=spann/xdiv rs.MoveObject(vertikalgurt,(vdist+vdist*i,0,0)) # ##create diagonals # diagonals=[] #create empty list for diagonals #for i in range(xdiv): # Upoints=rs.DivideCurve(L0,xdiv) # Opoints=rs.DivideCurve(L2,xdiv) # pipeline=diagonalline=rs.AddLine(Upoints[i],Opoints[i+1]) # pipe=rs.AddPipe(pipeline,0,beamz/10,cap=1) # rs.MoveObject(pipe,(0,-beamz/20,0)) # diagonals.append(pipe) #create diagonals diagonals=[] #create empty list for diagonals Upoints=rs.DivideCurve(L0,xdiv) Opoints=rs.DivideCurve(L2,xdiv) i=0 while i