Example #1
0
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