def secAngular(tipo,tam): # Genera la sección de un perfil metálico en L # La nomenclatura empleada para las dimensiones es la del prontuario de # estructuras metálicas del CEDEX # tipo: L, LD u otro perfil angular definido en PerfilesMetalicos.py # tam: tamaño que define el perfil ('120?2', '100?5?', ...) a=eval(tipo)[tam]['a'] b=eval(tipo)[tam]['b'] e=eval(tipo)[tam]['e'] r=eval(tipo)[tam]['r'] r1=eval(tipo)[tam]['r1'] cx=eval(tipo)[tam]['cx'] cy=eval(tipo)[tam]['cy'] p1=Base.Vector(-(b-cy),-cx) p2=Base.Vector(cy,-cx) p3=Base.Vector(cy,a-cx) l1=Part.makePolygon([p1,p2,p3]) p4=p3.add(Base.Vector(-e,0)) p5=p4.add(Base.Vector(0,-(a-e)/2.0)) l2=Geometria2D.fillet2D(p3,p4,p4,p5,r1) p6=p5.add(Base.Vector(0,-(a-e)/2.0)) p7=p6.add(Base.Vector(-(b-e)/2.0,0)) l3=Geometria2D.fillet2D(p5,p6,p6,p7,-r) p8=p7.add(Base.Vector(-(b-e)/2.0,0)) l4=Geometria2D.fillet2D(p7,p8,p8,p1,r1) secPerfil=Part.Face(Part.Wire([l1,l2,l3,l4])) secPerfil.rotate(Base.Vector(0,0,0),Base.Vector(1,0,0),90) return secPerfil
def secU(tipo,tam): # Genera la sección de un perfil metálico U # La nomenclatura empleada para las dimensiones es la del prontuario de # estructuras metálicas del CEDEX # tipo: UPN o cualquier otro U definido en el fichero PerfilesMetalicos.py # tam: tamaño que define el perfil (80, 100, 120 , ...) h=eval(tipo)[tam]['h'] b=eval(tipo)[tam]['b'] e=eval(tipo)[tam]['e'] e1=eval(tipo)[tam]['e1'] r1=eval(tipo)[tam]['r1'] e2=eval(tipo)[tam]['e2'] h1=eval(tipo)[tam]['h1'] p1=Base.Vector(b-e2,h/2.0) p2=Base.Vector(-e2,h/2.0) p3=Base.Vector(-e2,-h/2.0) p4=Base.Vector(b-e2,-h/2.0) l1=Part.makePolygon([p1,p2,p3,p4]) p5=Base.Vector(b-e2,-h/2.0+e1) p6=p5.add(Base.Vector(-(b-e-e1)/2.0,(h/2.0-h1/2.0-2*e1)/2.0)) l2=Geometria2D.fillet2D(p4,p5,p5,p6,r1) p7=p6.add(Base.Vector(-(b-e-e1)/2.0,(h/2.0-h1/2.0-2*e1)/2.0)) p8=Base.Vector(-e2+e,-h1/2.0) pmed=Base.Vector(-e2+e,0) l3=Geometria2D.fillet2D(p6,p7,p8,pmed,-e1) p12=Base.Vector(b-e2,h/2.0-e1) p11=p12.add(Base.Vector(-(b-e-e1)/2.0,-(h/2.0-h1/2.0-2*e1)/2.0)) l4=Geometria2D.fillet2D(p1,p12,p12,p11,-r1) p10=p11.add(Base.Vector(-(b-e-e1)/2.0,-(h/2.0-h1/2.0-2*e1)/2.0)) p9=Base.Vector(-e2+e,h1/2.0) l5=Geometria2D.fillet2D(p11,p10,p9,pmed,e1) secPerfil=Part.Face(Part.Wire([l1,l2,l3,l4,l5])) secPerfil.rotate(Base.Vector(0,0,0),Base.Vector(1,0,0),90) return secPerfil
def secConformado(tipo,tam): # Genera la sección de un perfil conformado LF, UF, CF, OF, ZF # La nomenclatura empleada para las dimensiones es la de la EAE (anejos de la parte 2) # tam: tamaño que define el perfil (por ejemplo: '50.25.3') e=eval(tipo)[tam]['e'] r=eval(tipo)[tam]['r'] rext=r+e if ('LF' in tipo) or ('CF' in tipo) or ('OF' in tipo): a=eval(tipo)[tam]['a'] b=eval(tipo)[tam]['b'] if 'UF' in tipo: b=eval(tipo)[tam]['b'] if ('UF' in tipo) or ('CF' in tipo) or ('OF' in tipo): h=eval(tipo)[tam]['h'] c=eval(tipo)[tam]['c'] if ('LF' in tipo) or ('ZF' in tipo): c1=eval(tipo)[tam]['c1'] c2=eval(tipo)[tam]['c2'] if 'ZF' in tipo: h=eval(tipo)[tam]['h'] b1=eval(tipo)[tam]['b1'] b2=eval(tipo)[tam]['b2'] a1=eval(tipo)[tam]['a1'] a2=eval(tipo)[tam]['a2'] if 'LF' in tipo: pieza1=Part.makePlane(e,a-rext,Base.Vector(-c2,-(c1-rext))) pieza2=Geometria2D.arcoCoronaCircular(r,rext,Base.Vector(-(c2-rext),-(c1-rext)),180,270) pieza3=Part.makePlane(b-rext,e,Base.Vector(-(c2-rext),-c1)) secPerfil=pieza1.fuse(pieza2.fuse(pieza3)) elif 'UF' in tipo: pieza1=Part.makePlane(b-rext,e,Base.Vector(-(c-rext),h/2.0-e)) pieza2=Geometria2D.arcoCoronaCircular(r,rext,Base.Vector(-(c-rext),h/2.0-rext),90,180) pieza3=Part.makePlane(e,h-2*rext,Base.Vector(-c,-(h/2.0-rext))) pieza4=Geometria2D.arcoCoronaCircular(r,rext,Base.Vector(-(c-rext),-(h/2.0-rext)),180,270) pieza5=Part.makePlane(b-rext,e,Base.Vector(-(c-rext),-h/2.0)) secPerfil=pieza1.fuse(pieza2.fuse(pieza3.fuse(pieza4.fuse(pieza5)))) elif 'CF' in tipo: pieza1=Part.makePlane(e,a-rext,Base.Vector(b-c-e,h/2.0-a)) pieza2=Geometria2D.arcoCoronaCircular(r,rext,Base.Vector(b-c-rext,h/2.0-rext),0,90) pieza3=Part.makePlane(b-2*rext,e,Base.Vector(-(c-rext),h/2.0-e)) pieza4=Geometria2D.arcoCoronaCircular(r,rext,Base.Vector(-(c-rext),h/2.0-rext),90,180) pieza5=Part.makePlane(e,h-2*rext,Base.Vector(-c,-(h/2.0-rext))) pieza6=Geometria2D.arcoCoronaCircular(r,rext,Base.Vector(-(c-rext),-(h/2.0-rext)),180,270) pieza7=Part.makePlane(b-2*rext,e,Base.Vector(-(c-rext),-h/2.0)) pieza8=Geometria2D.arcoCoronaCircular(r,rext,Base.Vector(b-c-rext,-(h/2.0-rext)),270,0) pieza9=Part.makePlane(e,a-rext,Base.Vector(b-c-e,-(h/2.0-rext))) secPerfil=pieza1.fuse(pieza2.fuse(pieza3.fuse(pieza4.fuse(pieza5.fuse(pieza6.fuse(pieza7.fuse(pieza8.fuse(pieza9)))))))) elif 'OF' in tipo: pieza1=Part.makePlane(a-rext,e,Base.Vector(-(a+b/2.0-e),-c)) pieza2=Geometria2D.arcoCoronaCircular(r,rext,Base.Vector(-b/2.0-r,-c+rext),270,360) pieza3=Part.makePlane(e,h-2*rext,Base.Vector(-b/2.0,-(c-rext))) pieza4=Geometria2D.arcoCoronaCircular(r,rext,Base.Vector(-(b/2.0-rext),h-c-rext),90,180) pieza5=Part.makePlane(b-2*rext,e,Base.Vector(-(b/2.0-rext),h-c-e)) pieza6=Geometria2D.arcoCoronaCircular(r,rext,Base.Vector(b/2.0-rext,h-c-rext),0,90) pieza7=Part.makePlane(e,h-2*rext,Base.Vector(b/2.0-e,-(c-rext))) pieza8=Geometria2D.arcoCoronaCircular(r,rext,Base.Vector(b/2.0+r,-c+rext),180,270) pieza9=Part.makePlane(a-rext,e,Base.Vector(b/2.0+r,-c)) secPerfil=pieza1.fuse(pieza2.fuse(pieza3.fuse(pieza4.fuse(pieza5.fuse(pieza6.fuse(pieza7.fuse(pieza8.fuse(pieza9)))))))) elif 'ZF' in tipo: pieza1=Part.makePlane(e,a1-rext,Base.Vector(-(b1-c2),c1-a1)) pieza2=Geometria2D.arcoCoronaCircular(r,rext,Base.Vector(-(b1-c2-rext),c1-rext),90,180) pieza3=Part.makePlane(b1-2*rext,e,Base.Vector(-(b1-c2-rext),c1-e)) pieza4=Geometria2D.arcoCoronaCircular(r,rext,Base.Vector(c2-rext,c1-rext),0,90) pieza5=Part.makePlane(e,h-2*rext,Base.Vector(c2-e,-(h-c1-rext))) pieza6=Geometria2D.arcoCoronaCircular(r,rext,Base.Vector(c2-e+rext,-(h-c1-rext)),180,270) pieza7=Part.makePlane(b2-2*rext,e,Base.Vector(c2-e+rext,-(h-c1))) pieza8=Geometria2D.arcoCoronaCircular(r,rext,Base.Vector(c2-e+b2-rext,-(h-c1-rext)),270,360) pieza9=Part.makePlane(e,b2-rext,Base.Vector(c2-e+b2-e,-(h-c1-rext))) secPerfil=pieza1.fuse(pieza2.fuse(pieza3.fuse(pieza4.fuse(pieza5.fuse(pieza6.fuse(pieza7.fuse(pieza8.fuse(pieza9)))))))) secPerfil.rotate(Base.Vector(0,0,0),Base.Vector(1,0,0),90) return secPerfil