def chapaAgSCgen(vOrigenL,vDirXL,vDirYL,vDirZL,listaCoordChapaL,listaCoordAgujL,espesorChapa,diamAguj): # Devuelve un chapa con agujeros en un sistema de coordenadas general, definido por: # vOrigenL: vector que define el pto. origen del sistema de coordenadas local # vDirXL: vector en la dirección X del SC local # vDirYL: vector en la dirección Y del SC local # vDirZL: vector en la dirección Z del SC local # listaCoordChapaL: ptos. ordenados para definir la base de la chapa (que estará contenida en el plano XY local). Las coordenadas de estos ptos. se dan en el SC local en la forma: [[x1,y1],[x2,y2],[x3,y3],...]. # listaCoordAgujL: ptos. para definir los centros de los agujeros. Las coordenadas de estos ptos. se dan en el SC local en la forma: [[x1,y1],[x2,y2],[x3,y3],...]. # espesorChapa: espesor de la chapa (en dirección vDirZL) # diamAguj: diámetro de los agujeros placa=Geometria3D.prismaSCgen(vOrigenL,vDirXL,vDirYL,vDirZL,listaCoordChapaL,espesorChapa) vDirXL.normalize() #vector de dirección X local vDirYL.normalize() #vector de dirección Y local vDirZL.normalize() #vector de dirección Z local for i in range(0,len(listaCoordAgujL)): vuX=Base.Vector(vDirXL.x,vDirXL.y,vDirXL.z) vuY=Base.Vector(vDirYL.x,vDirYL.y,vDirYL.z) centro=vOrigenL.add(vuX.multiply(listaCoordAgujL[i][0])).add(vuY.multiply(listaCoordAgujL[i][1])) aguj=Part.makeCylinder(diamAguj/2.0,espesorChapa,centro,vDirZL) placa=placa.cut(aguj) return placa
#Rigidizadores en el plano del ala de la viga Pto1=Base.Vector(eAlmaPerfilPilar/2.0,0,cantoPerfilVAtado1/2.0-eRigAla) auxX=(cantoPerfilPilar-2*eAlaPerfilPilar)/2.0 auxY=(anchoPerfilPilar-eAlmaPerfilPilar)/2.0 vOrigenL=Pto1 vDirXL=Base.Vector(0,1,0) vDirYL=Base.Vector(1,0,0) vDirZL=Base.Vector(0,0,1) listaCoordChapaL=[[-auxX+rPerfilPilar,0],[-auxX,rPerfilPilar],[-auxX,auxY],[auxX,auxY],[auxX,rPerfilPilar],[auxX-rPerfilPilar,0]] listaCoordAgujL=[] espesorChapa=eRigAla diamAguj=0 rig1=Metalicas.chapaAgSCgen(vOrigenL,vDirXL,vDirYL,vDirZL,listaCoordChapaL,listaCoordAgujL,espesorChapa,diamAguj) vOrigenL=Geometria3D.simYZPto(Pto1) vDirXL=Base.Vector(0,1,0) vDirYL=Base.Vector(-1,0,0) vDirZL=Base.Vector(0,0,1) listaCoordChapaL2=Geometria3D.simYZlistaCoord(listaCoordChapaL) listaCoordAgujL=[] espesorChapa=eRigAla diamAguj=0 rig2=Metalicas.chapaAgSCgen(vOrigenL,vDirXL,vDirYL,vDirZL,listaCoordChapaL2,listaCoordAgujL,espesorChapa,diamAguj) Pto1=Geometria3D.simXYPto(Pto1) vOrigenL=Pto1 vDirXL=Base.Vector(0,1,0) vDirYL=Base.Vector(1,0,0) vDirZL=Base.Vector(0,0,-1)
ptoFin=Base.Vector(0,Lpieza/2,0) perfil=tipoPerfil tamPerfil=idPerfil incrIni=-holguraJunta/2 incrFin=0 giroSec=0 corr2=Metalicas.barra2Ptos(ptoIni,ptoFin,perfil,tamPerfil,incrIni,incrFin,giroSec) pieza=pieza.fuse(corr2) #Cubrejuntas ala superior vOrigenL=Base.Vector(0,0,cantoPerfil/2) vDirXL=Base.Vector(1,0,0) vDirYL=Base.Vector(0,1,0) vDirZL=Base.Vector(0,0,1) listaCoordL=[[-dimXCubrejAlas/2,-dimYCubrejAlas/2],[dimXCubrejAlas/2,-dimYCubrejAlas/2],[dimXCubrejAlas/2,dimYCubrejAlas/2],[-dimXCubrejAlas/2,dimYCubrejAlas/2]] altura=espCubrejAlas cubrjAlaSup=Geometria3D.prismaSCgen(vOrigenL,vDirXL,vDirYL,vDirZL,listaCoordL,altura) pieza=pieza.fuse(cubrjAlaSup) #Cubrejuntas ala inferior vOrigenL=Base.Vector(0,0,-cantoPerfil/2-espCubrejAlas) vDirXL=Base.Vector(1,0,0) vDirYL=Base.Vector(0,1,0) vDirZL=Base.Vector(0,0,1) listaCoordL=[[-dimXCubrejAlas/2,-dimYCubrejAlas/2],[dimXCubrejAlas/2,-dimYCubrejAlas/2],[dimXCubrejAlas/2,dimYCubrejAlas/2],[-dimXCubrejAlas/2,dimYCubrejAlas/2]] altura=espCubrejAlas cubrjAlaInf=Geometria3D.prismaSCgen(vOrigenL,vDirXL,vDirYL,vDirZL,listaCoordL,altura) pieza=pieza.fuse(cubrjAlaInf) #Cubrejuntas alma dorsal vOrigenL=Base.Vector(-eAlmaPerfil/2,0,0) vDirXL=Base.Vector(0,1,0) vDirYL=Base.Vector(0,0,1) vDirZL=Base.Vector(-1,0,0)
perfil=tipoPerfil tamPerfil=idPerfil incrIni=0 incrFin=0 giroSec=0 pilar=Metalicas.barra2Ptos(ptoIni,ptoFin,perfil,tamPerfil,incrIni,incrFin,giroSec) pieza=pilar #Placa base vOrigenL=Base.Vector(xminPlaca,yminPlaca,0) vDirXL=Base.Vector(1,0,0) vDirYL=Base.Vector(0,1,0) vDirZL=Base.Vector(0,0,1) listaCoordL=[[0,0],[dimXPlaca,0],[dimXPlaca,dimYPlaca],[0,dimYPlaca]] altura=ePlaca placa=Geometria3D.prismaSCgen(vOrigenL,vDirXL,vDirYL,vDirZL,listaCoordL,altura) pieza=pieza.fuse(placa) #Soldaduras ##de alas pieza1=pieza pieza2=pieza eGarganta=eGargantaAlas longitud=bAlaPerfil centroArista=Base.Vector(0,-cantoPerfil/2,ePlaca) vDireccion=Base.Vector(1,0,0) sold=Metalicas.soldadura(pieza1,pieza2,eGarganta,longitud,centroArista,vDireccion) pieza=pieza.fuse(sold) centroArista=Base.Vector(0,cantoPerfil/2,ePlaca) sold=Metalicas.soldadura(pieza1,pieza2,eGarganta,longitud,centroArista,vDireccion)
incrFin=0 giroSec=0 pilar=Metalicas.barra2Ptos(ptoIni,ptoFin,perfil,tamPerfil,incrIni,incrFin,giroSec) pieza=pilar #Viga de atado ptoIni=Base.Vector(anchoPerfilPilar/2.0+holgAlaPilarVAtado,0,0) ptoFin=Base.Vector(LVAtado,0,0) perfil=tipoPerfilVAtado tamPerfil=idPerfilVAtado incrIni=0 incrFin=0 giroSec=0 vatado=Metalicas.barra2Ptos(ptoIni,ptoFin,perfil,tamPerfil,incrIni,incrFin,giroSec) pieza=pieza.fuse(vatado) ptoIni=Geometria3D.simYZPto(ptoIni) ptoFin=Geometria3D.simYZPto(ptoFin) perfil=tipoPerfilVAtado tamPerfil=idPerfilVAtado incrIni=0 incrFin=0 giroSec=0 vatado=Metalicas.barra2Ptos(ptoIni,ptoFin,perfil,tamPerfil,incrIni,incrFin,giroSec) pieza=pieza.fuse(vatado) #Rigidizadores en el plano del ala de la viga Pto1=Base.Vector(eAlmaPerfilPilar/2.0,0,cantoPerfilVAtado/2.0-eRigAla) auxX=(cantoPerfilPilar-2*eAlaPerfilPilar)/2.0 auxY=(anchoPerfilPilar-eAlmaPerfilPilar)/2.0 vOrigenL=Pto1
pieza=diag1 #Diagonal 2 ptoIni=Base.Vector(eCartelasExtremas/2+cdgDiag2,-LDiag2/2*math.sin(math.radians(angVertDiag2)),-LDiag2/2*math.cos(math.radians(angVertDiag2))) ptoFin=Base.Vector(eCartelasExtremas/2+cdgDiag2,LDiag2/2*math.sin(math.radians(angVertDiag2)),LDiag2/2*math.cos(math.radians(angVertDiag2))) perfil=tipoPerfilDiag2 tamPerfil=idPerfilDiag2 incrIni=0 incrFin=0 giroSec=0 diag2=Metalicas.barra2Ptos(ptoIni,ptoFin,perfil,tamPerfil,incrIni,incrFin,giroSec) pieza=pieza.fuse(diag2) #Agujero para manguito #no está programado #****Representación en planos Pieza=FreeCAD.ActiveDocument.addObject("Part::Feature","Pieza") Pieza.Shape=pieza FreeCADGui.Selection.addSelection(Pieza) Geometria3D.vistasIsom(App,escala,Pieza) ocultas='s' SupInf='Sup' Geometria3D.vistaPlanta(App,escala,Pieza,ocultas,SupInf) AntPost='Ant' Geometria3D.vistaFront(App,escala,Pieza,ocultas,AntPost) IzqDer='Der' Geometria3D.vistaLat(App,escala,Pieza,ocultas,IzqDer)
muro2 = Part.makeBox(eMuro2, galiboYmuros, hMuros, esq1.add(Base.Vector(-eMuro2, eMuro1, 0))) muro3 = Part.makeBox(eMuro1, galiboYmuros, hMuros, esq2.add(Base.Vector(0, eMuro1, 0))) muro4 = Part.makeBox(galiboXmuros + eMuro1 + eMuro2, eMuro1, hMuros, esq2.add(Base.Vector(0, eMuro1 + galiboYmuros, 0))) muros = muro1.fuse(muro2.fuse(muro3.fuse(muro4))) # Part.show(muros) # Dibujo pilar esquina = Base.Vector(-dimXPilar / 2, -dEjesPilares / 2 - dimYPilar / 2, 0) pilar1 = Part.makeBox(dimXPilar, dimYPilar, dimZPilar, esquina) vOrigenL = esquina.add(Base.Vector(0, dimYPilar, dimZPilar)) vDirXL = Base.Vector(0, 1, 0) vDirYL = Base.Vector(0, 0, 1) vDirZL = Base.Vector(1, 0, 0) listaCoordL = [[0, 0], [dimYMensula, 0], [dimYMensula, -dimZ1Mensula], [0, -dimZ1Mensula - dimZ2Mensula]] altura = dimXPilar mensula = Geometria3D.prismaSCgen(vOrigenL, vDirXL, vDirYL, vDirZL, listaCoordL, altura) pilar = pilar1.fuse(mensula) # Dibujo de la placa base de la bayoneta centroPlaca = Base.Vector(0, -dEjesPilares / 2 - dimYPilar / 2 + dimYPAB / 2, dimZPilar - dimZPAB) vDirXL = Base.Vector(1, 0, 0) vDirYL = Base.Vector(0, 1, 0) vDirZL = Base.Vector(0, 0, 1) listaCoordChapaL = [ [-dimXPAB / 2, -dimYPAB / 2], [dimXPAB / 2, -dimYPAB / 2], [dimXPAB / 2, dimYPAB / 2], [-dimXPAB / 2, dimYPAB / 2], ] placaCabPilar = Geometria3D.prismaSCgen(centroPlaca, vDirXL, vDirYL, vDirZL, listaCoordChapaL, dimZPAB) # Part.show(placaCabPilar)
anchoChap=dEjesVcarrVac-anchoPerfilVcarr/2.0-anchoPerfilViga/2.0+slpChapaVcarr+slpChapaViga largoChap=2*LViga vOrigenL=Base.Vector(-anchoPerfilViga/2.0+slpChapaViga,-LViga,cantoPerfilViga/2.0) vDirXL=Base.Vector(-1,0,0) vDirYL=Base.Vector(0,1,0) vDirZL=Base.Vector(0,0,1) listaCoordChapaL=[[0,0],[anchoChap,0],[anchoChap,largoChap],[0,largoChap]] listaCoordAgujL=[] espesorChapa=eChapaCab diamAguj=0 chapa=Metalicas.chapaAgSCgen(vOrigenL,vDirXL,vDirYL,vDirZL,listaCoordChapaL,listaCoordAgujL,espesorChapa,diamAguj) pieza=pieza.fuse(chapa) arriostr.add(pieza) Part.show(arriostr) #****Representación en planos Pieza=FreeCAD.ActiveDocument.addObject("Part::Feature","Pieza") Pieza.Shape=arriostr FreeCADGui.Selection.addSelection(Pieza) Geometria3D.vistasIsom(App,escala,Pieza) ocultas='n' Geometria3D.vistaPlanta(App,escala,Pieza,ocultas,'Sup') Geometria3D.vistaFront(App,escala,Pieza,ocultas,'Ant') Geometria3D.vistaLat(App,escala,Pieza,ocultas,'Izq')