Quarter = Body + Filled + Flange1 + Flange2 + Flange3 Half = Quarter + Quarter.mirror(1).reverse() Full = Half + Half.mirror(0).reverse() draw(Full,color=red) method = ask("Choose extrude method:",['Cancel','Sweep','Connect']) if method == 'Cancel': exit() nodesF,elemsF = Full.feModel() if method == 'Sweep': path = simple.line([0,0,0],[0,0,l],el) nodesF = nodesF.rollAxes(1) nodes,elems = mesh.sweepGrid(nodesF,elemsF,path,a1='last',a2='last') else: nodesF1 = nodesF.trl([0,0,l])#.scale(2) nodes,elems = mesh.connectMesh(nodesF,nodesF1,elemsF,el) smooth() clear() Beam = Formex(nodes[elems].reshape(-1,8,3),eltype='Hex8') draw(Beam,color='red',linewidth=2) # End
etf = 5 #number of elements over the thickness of the flange ewf = 8 #number of elements over half of the width of the flange er = 6 #number of elements in the circular segment Body = simple.rectangle(etb,ehb,tw/2.,h/2.-tf-r) Flange1 = simple.rectangle(er/2,etf-etb,tw/2.+r,tf-tw/2.).translate([0.,h/2.-(tf-tw/2.),0.]) Flange2 = simple.rectangle(ewf,etf-etb,b/2.-r-tw/2.,tf-tw/2.).translate([tw/2.+r,h/2.-(tf-tw/2.),0.]) Flange3 = simple.rectangle(ewf,etb,b/2.-r-tw/2.,tw/2.).translate([tw/2.+r,h/2.-tf,0.]) c1a = simple.line([0,h/2-tf-r,0],[0,h/2-tf+tw/2,0],er/2) c1b = simple.line([0,h/2-tf+tw/2,0],[tw/2+r,h/2-tf+tw/2,0],er/2) c1 = c1a + c1b c2 = simple.circle(90./er,0.,90.).mirror(0).scale(r).translate([tw/2+r,h/2-tf-r,0]) Filled = simple.connectCurves(c2,c1,etb) Quarter = Body + Filled + Flange1 + Flange2 + Flange3 Half = Quarter + Quarter.mirror(1).reverse() Beam = Half + Half.mirror(0).reverse() nodesQuad,elemsQuad = Beam.rollAxes(1).feModel() path = simple.line([0,0,0],[0,0,l],el) nodes,elems = mesh.sweepGrid(nodesQuad,elemsQuad,path,a1='last',a2='last') smooth() clear() draw(Formex(nodes[elems].reshape(-1,8,3),eltype='Hex8'),color='red',linewidth=2) # End