from midas_civil import *
MAPI_KEY('xxxxxxxxxxxxxx')
MAPI_BASEURL.autoURL()
bay_width = 32
bay_height = 30
bay_length = 26
no_bays = 4
bay_len_div = 3
bay_height_div = 3
gap_truss = 3
truss_div = 5
truss_centre_height = 5
Model.units('KIPS','FT')
#--------------- M A T E R I A L ------------------
Material.STEEL('Frame','ASTM(S)','A36')
#--------------- S E C T I O N ------------------
Section.DB('W16x67','H','AISC','W16x67',id=1)
Section.DB('W14x90','H','AISC','W14x90',id=2)
Section.DB('W18x65','H','AISC','W18x65',id=3)
Section.DB('W4x13','H','AISC','W4x13',id=4)
Section.DB('WT7x24','T','AISC','WT7x24',id=5)
Section.DB('WT4x9','T','AISC','WT4x9',id=6)
Section.DB('L4x4x5/16','L','AISC','L4x4x5/16',id=7)
#--------------- G E O M E T R Y ------------------
for i in range(no_bays+1):
Element.Beam.SDL([i*bay_length,0,0],[0,0,1],bay_height-gap_truss,sect=1,angle=0)
Element.Beam.SDL([i*bay_length,0,bay_height-gap_truss],[0,0,1],gap_truss,sect=1,angle=0)
Element.Beam.SDL([i*bay_length,2*bay_width,0],[0,0,1],bay_height,bay_height_div,sect=1,angle=0)
Element.Beam.SDL([i*bay_length,0,bay_height],[0,1,0],bay_width,truss_div,sect=5,group='HorzPTrussL')
Element.Beam.SDL([i*bay_length,2*bay_width,bay_height],[0,-1,0],bay_width,truss_div,sect=5,group='HorzPTrussR')
Element.Beam.SE([i*bay_length,0,bay_height],[i*bay_length,bay_width,bay_height+truss_centre_height],truss_div,group='InclinePTrussL',sect=5)
Element.Beam.SE([i*bay_length,2*bay_width,bay_height],[i*bay_length,bay_width,bay_height+truss_centre_height],truss_div,group='InclinePTrussR',sect=5)
Element.Truss.SE([i*bay_length,bay_width,bay_height],[i*bay_length,bay_width,bay_height+truss_centre_height],sect=6)
for i in range(no_bays+1):
if i in [0,no_bays]:
Element.Beam.SDL([i*bay_length,bay_width,0],[0,0,1],bay_height,bay_height_div,sect=2,angle=90)
Element.Truss.SE([i*bay_length,0,bay_height],[i*bay_length,bay_width,0],sect=7)
Element.Truss.SE([i*bay_length,0,0],[i*bay_length,bay_width,bay_height],sect=7)
else:
Element.Beam.SDL([i*bay_length,bay_width,0],[0,0,1],(bay_height_div-1)*bay_height/bay_height_div,bay_height_div-1,sect=2,angle=90)
HorzPTrussLNodeIDs = nodesInGroup('HorzPTrussL')
HorzPTrussRNodeIDs = nodesInGroup('HorzPTrussR')
InclinePTrussLNodeIDs = nodesInGroup('InclinePTrussL')
InclinePTrussRNodeIDs = nodesInGroup('InclinePTrussR')
for i in range(no_bays+1):
for j in range(truss_div-1):
Element.Truss(InclinePTrussLNodeIDs[1+j+i*(truss_div+1)],HorzPTrussLNodeIDs[1+j+i*(truss_div+1)],sect=6)
Element.Truss(InclinePTrussRNodeIDs[1+j+i*(truss_div+1)],HorzPTrussRNodeIDs[1+j+i*(truss_div+1)],sect=6)
Element.Truss(InclinePTrussLNodeIDs[1+j+i*(truss_div+1)],HorzPTrussLNodeIDs[2+j+i*(truss_div+1)],sect=6)
Element.Truss(InclinePTrussRNodeIDs[1+j+i*(truss_div+1)],HorzPTrussRNodeIDs[2+j+i*(truss_div+1)],sect=6)
for i in range(no_bays):
Element.Beam.SDL([i*bay_length,bay_width,bay_height+truss_centre_height],[1,0,0],bay_length,sect=1)
# Side TRUSS
Element.Beam.SDL([i*bay_length,0,bay_height],[1,0,0],bay_length,truss_div,group='TopSideTruss',sect=4)
Element.Beam.SDL([i*bay_length,0,bay_height-gap_truss],[1,0,0],0.5*bay_length/truss_div,group='BotSideTruss',sect=4)
Element.Beam.SDL(Element.lastLoc,[1,0,0],bay_length-bay_length/truss_div,truss_div-1,group='BotSideTruss',sect=4)
Element.Beam.SDL(Element.lastLoc,[1,0,0],0.5*bay_length/truss_div,group='BotSideTruss',sect=4)
#BRACING
if i in [0,no_bays-1]:
Element.Truss.SE([i*bay_length,2*bay_width,bay_height],[(i+1)*bay_length,2*bay_width,0],sect=7)
Element.Truss.SE([(i+1)*bay_length,2*bay_width,bay_height],[i*bay_length,2*bay_width,0],sect=7)
Element.Truss.SE([(i)*bay_length,0,bay_height],[(i+1)*bay_length,bay_width,bay_height+truss_centre_height],sect=7)
Element.Truss.SE([(i+1)*bay_length,0,bay_height],[(i)*bay_length,bay_width,bay_height+truss_centre_height],sect=7)
Element.Truss.SE([(i)*bay_length,2*bay_width,bay_height],[(i+1)*bay_length,bay_width,bay_height+truss_centre_height],sect=7)
Element.Truss.SE([(i+1)*bay_length,2*bay_width,bay_height],[(i)*bay_length,bay_width,bay_height+truss_centre_height],sect=7)
Element.Beam.SDL([i*bay_length,2*bay_width,bay_height],[1,0,0],bay_length,sect=1)
for j in range(bay_height_div-1):
Element.Beam.SDL([i*bay_length,2*bay_width,(j+1)*bay_height/bay_height_div],[1,0,0],bay_length,3,group='MezOuter',sect=3)
Element.Beam.SDL([i*bay_length,bay_width,(j+1)*bay_height/bay_height_div],[1,0,0],bay_length,3,group='MezInner',sect=3)
TopSideTrussNodeIDs = nodesInGroup('TopSideTruss')
BotSideTrussNodeIDs = nodesInGroup('BotSideTruss')
MezOuterNodeIDs = nodesInGroup('MezOuter')
MezInnerNodeIDs = nodesInGroup('MezInner')
for i in range(len(MezOuterNodeIDs)):
Element.Beam(MezOuterNodeIDs[i],MezInnerNodeIDs[i],sect=3)
for i in range(no_bays):
for j in range(truss_div):
Element.Truss(TopSideTrussNodeIDs[j+i*(truss_div)],BotSideTrussNodeIDs[1+j+i*(truss_div+1)],sect=6)
Element.Truss(TopSideTrussNodeIDs[1+j+i*(truss_div)],BotSideTrussNodeIDs[1+j+i*(truss_div+1)],sect=6)
#--------------- S U P P O R T ------------------
bottomNodeIDs = Model.Select.Box([0,0,0],[no_bays*bay_length,2*bay_width,0])
Boundary.Support(bottomNodeIDs,'fix')
#--------------- L O A D I N G ------------------
Load.SW('Self Weight')
fronNodeIDs = Model.Select.Box([0,0,0],[0,2*bay_width,bay_height+truss_centre_height])
Load.Nodal(fronNodeIDs,'Wind Load Y','',FY = 5)
SideElements = Model.Select.Box([0,2*bay_width,0],[no_bays*bay_length,2*bay_width,bay_height],'ELEM')
SideElementIDs = [elm.ID for elm in SideElements if elm.TYPE=='BEAM']
Load.Beam(SideElementIDs,'Wind Load X','',0.1,'GX')
#--------------- D A T A T O C I V I L N X ------------------
Model.create()