Dim AcadDoc As Object
Dim AcadDocEM As Object
Dim ObjLinea As Object
Dim Pt1(1 To 3) As Double
Dim Pt2(1 To 3) As Double
Dim Pt7(1 To 3) As Double
Dim Pt8(1 To 3) As Double
Dim t(1 To 12, 1 To 12) As Double
Dim kl(1 To 12, 1 To 12) As Double
Dim tt(1 To 12, 1 To 12) As Double
Dim kg(1 To 12, 1 To 12) As Double
Dim prod(1 To 12, 1 To 12) As Double
Dim mp() As Double
'MATRIZ DE PASO, APOYO PARA LA CREACIÓN DEL mc
Dim mc() As Double
'MATRIZ ENSAMBLADA Y COMPLETA DE RIGIDEZ
Dim w As Double
Dim suma As Double
Dim a As Integer
Dim b As Double
Dim h As Double
Dim c As Double
Dim d As Double
Dim e As Double
Dim X As Double
Dim Y As Double
Dim z As Double
Dim r As Double
Dim aux1 As Double
Dim aux2 As Double
Dim aux3 As Double
Dim s(1 To 10) As Double 'CREAR MATRIZ DE RIGIDEZ
Dim lsnn() As Double
'CREA LISTA DE LOS NUMEROS DE NUDOS
Dim lsx() As Double
'CREA LISTA DE COORDENADAS EN "X"
Dim lsy() As Double
'CREA LISTA DE COORDENADAS EN "Y"
Dim lsz() As Double
'CREA LISTA DE COORDENADAS EN "Z"
Dim lsne() As Double
'CREA LISTA DE LOS NUMEROS DE ELEMENTOS
Dim lsi() As Double
'CREA LISTA DE PUNTOS INICIALES DE ELEMENTOS
Dim lsj() As Double
'CREA LISTA DE PUNTOS FINALES DE ELEMENTOS
Dim lstip() As String
'CREA LISTA DE TIPOS DE ELEMENTOS
Dim lse() As Double
'CREA LISTA DE MODULOS DE ELASTICIDADES
Dim lsg() As Double
'CREA LISTA DE MODULOS DE CORTE
Dim lsu() As Double
'CREA LISTA DE COEFICIENTES DE POISSON
Dim lsb() As Double
'CREA LISTA DE BASES DE LOS ELEMENTO
Dim lsh() As Double
'CREA LISTA DE PERALTES DE LOS ELEMENTOS
Dim lsd() As Double
'CREA LISTA DE DIAMETROS DE ELEMENTOS
Dim lsarea() As Double
'CREA LISTA DE AREAS DE ELEMENTOS
Dim lin2() As Double
'CREA LISTA DE INERCIAS AL EJE 2
Dim lin3() As Double
'CREA LISTA DE INERCIAS AL EJE 3
Dim linj() As Double
'CREA LISTA DE INERCIAS POLARES
Dim lser() As Double
'CREA LISTA DE NUMEROS DE ELEMENTOS A ROTAR
Dim lsa() As Double
'CREA LISTA DE ANGULOS A ROTAR
Dim lmod() As Double
'CREA LISTA DE LONGITUDES
Dim u1x() As Double
'CREA LISTA DE COORD EN X DE U1
Dim u1y() As Double
'CREA LISTA DE COORD EN Y DE U1
Dim u1z() As Double
'CREA LISTA DE COORD EN Z DE U1
Dim u2x() As Double
'CREA LISTA DE COORD EN X DE U2
Dim u2y() As Double
'CREA LISTA DE COORD EN Y DE U2
Dim u2z() As Double
'CREA LISTA DE COORD EN Z DE U2
Dim u3x() As Double
'CREA LISTA DE COORD EN X DE U3
Dim u3y() As Double
'CREA LISTA DE COORD EN Y DE U3
Dim u3z() As Double
'CREA LISTA DE COORD EN Z DE U3
Dim aux() As Double
'CREA LISTA AUXILIAR
Dim auxx1() As Double
'CREA MATRIZ AUXILIAR 1
Dim auxx2() As Double
'CREA MATRIZ AUXILIAR 2
Dim auxx3() As Double
'CREA MATRIZ AUXILIAR A Koo
Dim auxx4() As Double
'CREA MATRIZ AUXILIAR PARA OBTENER EL Do
Dim auxx5() As Double
'CREA MATRIZ AUXILIAR PARA Kxo.Do1
Dim auxx6() As Double
'CREA MATRIZ AUXILIAR PARA Kxx.Dx
Dim mr() As Double
'CREA MATRIZ REORDENADA
Dim Qot() As Double
'CREA LA MATRIZ DE CARGAS Qot EN SCG PARA LAS
CARGAS EN TODOS LOS NUDOS (LIBRES Y APOYOS)
Dim qe(1 To 12) As Double 'VECTOR DE CARGAS EQUIVALENTES
Dim Qoe(1 To 12) As Double 'MATRIZ EN SGC PARA CARGAS EQUIVALENTES
Dim Qnudo() As Double
'MATRIZ DE CARGAS SCG EN LOS NUDOS LIBRES
Dim Koo() As Double
'MATRIZ DE RIGIDEZ Koo
Dim Kox() As Double
'MATRIZ DE RIGIDEZ Kox
Dim Kxo() As Double
'MATRIZ DE RIGIDEZ Kxo
Dim Kxx() As Double
'MATRIZ DE RIGIDEZ Kxx
Dim inv() As Double
'MATRIZ INVERSA DE LA MATRIZ Koo
Dim Do1() As Double
'DESPLAZAMIENTOS DE LOS NUDOS LIBRES
Dim Dx() As Double
'MATRIZ DE DESPLAZAMIENTOS CONOCIDOS
Dim Qx() As Double
NUDOS
'MATRIZ DE CARGAS DESCONOCIDAS - REACCIONES
Dim Qo() As Double
'MATRIZ DE CARGAS EN LOS NUDOS LIBRES EN EL SCG
Dim QxA() As Double
'MATRIZ DE CARGAS EUIVALENTES EN LOS APOYOS
Dim Qxfinal() As Double
'MATRIZ DE REACCIONES FINALES EN LOS APOYOS
Dim lapoy() As Double
'MATRIZ DE APOYOS
Dim di(1 To 12) As Double 'MATRIZ DE DESPLAZAMIENTOS EN LOS ELEMENTOS i
Dim dia(1 To 12) As Double 'MATRIZ AUXILIAR A di
Dim qoi(1 To 12) As Double 'MATRIZ DE CARGAS EN SCL, PARA GRAFICAR
Dim qfinal(1 To 12) As Double 'MATRIZ DE CARGAS FINALES EN SCL PARA
GRAFICAR
Dim qf(1 To 12) As Double 'MATRIZ DE FIJACIÓN
Dim co As Double
'CONTADOR PARA NUM DE COOR DESCONOCIDAS
Dim cx As Double
'CONTADOR PARA NUM DE COOR CONOCIDAS
Dim nx As Double
'CONTADOR PARA TOTAL DE COORDANAS
Dim apoyo() As Double
'MATRIZ COLUMNA DE LOS DATOS DE LOS APOYOS
Dim ncon() As Double
'MATRIZ DE SOLO COOR CONOCIDOS
Dim ndes() As Double
'MATRIZ DE SOLO COOR DESCONOCIDOS
Dim clibres() As Double
'MATRIZ DE COORDENADAS LIBRES
Dim Qotc() As Double
'MATRIZ COLUMNA DE Qot
Dim pb1 As Double
Dim pb2 As Double
Dim MT() As Double
'MATRIZ TOTAL DE LOS DESPLAZAMIENTOS EN SCG
Private Sub AGREGARABAJOD_Click()
Dim a
If lelem.ListIndex <> -1 Then
If Len(Trim(txtelem)) > 0 Then
a = lelem.ListIndex + 1
lelem.AddItem txtelem.Value, a
lang.AddItem txtang.Value, a
If optv.Value = True Then
ltipo.AddItem optv.Caption, a
lt.AddItem 1, a
Else
If optc.Value = True Then
ltipo.AddItem optc.Caption, a
lt.AddItem 2, a
End If
End If
le.AddItem txte.Value, a
lg.AddItem txtg.Value, a
lu.AddItem txtu.Value, a
lb.AddItem txtb.Value, a
lh.AddItem txth.Value, a
ld.AddItem txtd.Value, a
txte.SetFocus
CommandButton2.Enabled = False
cb2.Value = False
txtelem = ""
txtang = "0"
txtelem.SetFocus
End If
Else
MsgBox ("DEBES ELIGIR UN RANGO DE FILA")
End If
End Sub
Private Sub AGREGARARRIBAD_Click()
Dim a
If lelem.ListIndex <> -1 Then
If Len(Trim(txtelem)) > 0 Then
a = lelem.ListIndex
lelem.AddItem txtelem.Value, a
lang.AddItem txtang.Value, a
If optv.Value = True Then
ltipo.AddItem optv.Caption, a
lt.AddItem 1, a
Else
If optc.Value = True Then
ltipo.AddItem optc.Caption, a
lt.AddItem 2, a
End If
End If
le.AddItem txte.Value, a
lg.AddItem txtg.Value, a
lu.AddItem txtu.Value, a
lb.AddItem txtb.Value, a
lh.AddItem txth.Value, a
ld.AddItem txtd.Value, a
txte.SetFocus
CommandButton2.Enabled = False
cb2.Value = False
txtelem = ""
txtang = "0"
txtelem.SetFocus
End If
Else
MsgBox ("DEBES ELIGIR UN RANGO DE FILA")
End If
End Sub
Private Sub btmat_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
btvec.Enabled = True
End Sub
Private Sub btmatglobal_Click()
End Sub
Private Sub bttran_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
CommandButton8.Enabled = True
End Sub
Private Sub btvec_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
bttran.Enabled = True
End Sub
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
CheckBox2.Value = False
txtu.Text = "0"
txtu.Enabled = False
Else
txtu.Enabled = True
txtu.Text = ""
End If
End Sub
Private Sub CheckBox2_Click()
If CheckBox2.Value = True Then
txtg.Text = "0"
txtg.Enabled = False
Else
txtg.Enabled = True
txtg.Text = ""
End If
End Sub
Private Sub Cmbtrada_Click()
End Sub
Private Sub CMDANALIZAR_Click()
btmat_Click
btvec_Click
bttran_Click
CommandButton8_Click
CommandButton10_Click
CommandButton13_Click
CommandButton14_Click
Private Sub CommandButton10_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
CommandButton11.Enabled = True
End Sub
Private Sub CommandButton11_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
CommandButton13.Enabled = True
End Sub
Private Sub CommandButton15_Click()
Dim a
If lelem.ListIndex <> -1 Then
a = ltipo.ListIndex
ltipo.RemoveItem a
lelem.RemoveItem a
le.RemoveItem a
lg.RemoveItem a
lu.RemoveItem a
lb.RemoveItem a
lh.RemoveItem a
ld.RemoveItem a
lang.RemoveItem a
lt.RemoveItem a
txte.SetFocus
CommandButton2.Enabled = False
cb2.Value = False
Else
MsgBox ("DEBES ELIGIR UN RANGO DE FILA")
End If
End Sub
Private Sub ELIMINAR_Click()
lnum.RemoveItem lnum.ListIndex
lx.RemoveItem lx.ListIndex
ly.RemoveItem ly.ListIndex
lz.RemoveItem lz.ListIndex
txtx.SetFocus
txtx = ""
txty = ""
txtz = ""
txtx.SetFocus
CommandButton1.Enabled = False
cb1.Value = False
End Sub
Private Sub AGREGARABAJO_Click()
Dim a, b
If lx.ListIndex <> -1 Then
a = txtnum.Value
b = lnum.ListIndex + 1
lnum.AddItem a, b
lx.AddItem txtx.Value, b
ly.AddItem txty.Value, b
lz.AddItem txtz.Value, b
txtx.SetFocus
txtx = ""
txty = ""
txtz = ""
txtx.SetFocus
CommandButton1.Enabled = False
cb1.Value = False
Else
MsgBox ("DEBES SELECCIONAR LA MISMA FILA DE NUM , X, Y, Z")
End If
End Sub
Private Sub AGREGARABAJOE_Click()
Dim a, b
If lnu.ListIndex <> -1 Then
a = txtnu.Value
b = lnu.ListIndex + 1
lnu.AddItem a, b
li.AddItem txti.Value, b
lj.AddItem txtj.Value, b
txtnu.SetFocus
txti = ""
txtj = ""
CommandButton3.Enabled = False
cb3.Value = False
Else
MsgBox ("DEBES SELECCIONAR LA MISMA FILA DE NUM NUM ,i ,j")
End If
End Sub
Private Sub AGREGARARRIBAE_Click()
Dim a, b
If lnu.ListIndex <> -1 Then
a = txtnu.Value
b = lnu.ListIndex
lnu.AddItem a, b
li.AddItem txti.Value, b
lj.AddItem txtj.Value, b
txtnu.SetFocus
txti = ""
txtj = ""
CommandButton3.Enabled = False
cb3.Value = False
Else
MsgBox ("DEBES SELECCIONAR LA MISMA FILA DE NUM NUM, i, j")
End If
End Sub
Private Sub AGREGARFILA_Click()
Dim a, b
If lx.ListIndex <> -1 Then
a = txtnum.Value
b = lnum.ListIndex
lnum.AddItem a, b
lx.AddItem txtx.Value, b
ly.AddItem txty.Value, b
lz.AddItem txtz.Value, b
Else
MsgBox ("DEBES SELECCIONAR LA MISMA FILA DE NUM , X, Y, Z")
End If
End Sub
Private Sub CommandButton16_Click()
LIMPIA
End Sub
Private Sub CommandButton17_Click()
On Error GoTo NOarchivo:
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
'Creamos el objeto Connection.
'Creamos el objeto Recordset.
'Abrimos la base de datos "agenda2000.mdb".
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data
Source=C:\Users\carsa\Desktop\ANALISIS2\FORMATO\" & TextBox1.Text & ".mdb"
rs.Source = "COORDENADAS" 'Especificamos la fuente de Hoja6. En este caso la tabla
"contactos".
rs.CursorType = adOpenKeyset 'Definimos el tipo de cursor.
rs.LockType = adLockOptimistic 'Definimos el tipo de bloqueo.
rs.Open "select * from COORDENADAS", cn 'Abrimos el Recordset y lo llenamos con una
consulta SQL.
rs.MoveFirst 'Nos posicionamos en el primer registro del Recordset.
lnum.Clear
lx.Clear
ly.Clear
lz.Clear
Do Until rs.EOF 'Repite hasta que se lea todo el Recordset.
lnum.AddItem rs.Fields("NUDO")
lx.AddItem rs.Fields("X")
ly.AddItem rs.Fields("Y")
lz.AddItem rs.Fields("Z")
rs.MoveNext 'Nos movemos al siguiente registro.
Loop
MELO = 1
If MELO <> 1 Then
NOarchivo:
MsgBox ("LA BASE DE DATOS NO EXISTE")
End If
End Sub
Private Sub CommandButton18_Click()
On Error GoTo NOarchivo:
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
'Creamos el objeto Connection.
'Creamos el objeto Recordset.
'Abrimos la base de datos "agenda2000.mdb".
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data
Source=C:\Users\carsa\Desktop\ANALISIS2\FORMATO\" & TextBox1.Text & ".mdb"
rs.Source = "IDENTIFICA" 'Especificamos la fuente de Hoja6. En este caso la tabla
"contactos".
rs.CursorType = adOpenKeyset 'Definimos el tipo de cursor.
rs.LockType = adLockOptimistic 'Definimos el tipo de bloqueo.
rs.Open "select * from IDENTIFICA", cn 'Abrimos el Recordset y lo llenamos con una consulta
SQL.
rs.MoveFirst 'Nos posicionamos en el primer registro del Recordset.
lnu.Clear
li.Clear
lj.Clear
Do Until rs.EOF 'Repite hasta que se lea todo el Recordset.
lnu.AddItem rs.Fields("ELEMENTO")
li.AddItem rs.Fields("NUDO i")
lj.AddItem rs.Fields("NUDO j")
rs.MoveNext 'Nos movemos al siguiente registro.
Loop
MELO = 1
If MELO <> 1 Then
NOarchivo:
MsgBox ("LA BASE DE DATOS NO EXISTE")
End If
End Sub
Private Sub CommandButton19_Click()
On Error GoTo NOarchivo:
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
'Creamos el objeto Connection.
'Creamos el objeto Recordset.
'Abrimos la base de datos "agenda2000.mdb".
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data
Source=C:\Users\carsa\Desktop\ANALISIS2\FORMATO\" & TextBox1.Text & ".mdb"
rs.Source = "PROPIEDADES" 'Especificamos la fuente de Hoja6. En este caso la tabla
"contactos".
rs.CursorType = adOpenKeyset 'Definimos el tipo de cursor.
rs.LockType = adLockOptimistic 'Definimos el tipo de bloqueo.
rs.Open "select * from PROPIEDADES", cn 'Abrimos el Recordset y lo llenamos con una
consulta SQL.
rs.MoveFirst 'Nos posicionamos en el primer registro del Recordset.
lelem.Clear
le.Clear
lg.Clear
lu.Clear
lb.Clear
lh.Clear
ld.Clear
lang.Clear
ltipo.Clear
lt.Clear
Do Until rs.EOF 'Repite hasta que se lea todo el Recordset.
lelem.AddItem rs.Fields("ELEMENTO")
le.AddItem rs.Fields("E")
lg.AddItem rs.Fields("G")
lu.AddItem rs.Fields("U")
lb.AddItem rs.Fields("b")
lh.AddItem rs.Fields("h")
ld.AddItem rs.Fields("d")
lang.AddItem rs.Fields("ROTACION")
ltipo.AddItem rs.Fields("TIPO")
If rs.Fields("TIPO") = "COLUMNA" Then
lt.AddItem "2"
Else
lt.AddItem "1"
End If
rs.MoveNext 'Nos movemos al siguiente registro.
Loop
MELO = 1
If MELO <> 1 Then
NOarchivo:
MsgBox ("LA BASE DE DATOS NO EXISTE")
End If
End Sub
Private Sub CommandButton20_Click()
Frame5.Visible = False
For i = 1 To Hoja6.Cells(4, 9)
Label48.Caption = Hoja6.Cells(8 + i, 28)
UserForm2.lstdn.AddItem Label48
Label48.Caption = Hoja6.Cells(8 + i, 29)
UserForm2.lstdx.AddItem Label48
Label48.Caption = Hoja6.Cells(8 + i, 30)
UserForm2.lstdy.AddItem Label48
Label48.Caption = Hoja6.Cells(8 + i, 31)
UserForm2.lstdz.AddItem Label48
Label48.Caption = Hoja6.Cells(8 + i, 32)
UserForm2.lstgx.AddItem Label48
Label48.Caption = Hoja6.Cells(8 + i, 33)
UserForm2.lstgy.AddItem Label48
Label48.Caption = Hoja6.Cells(8 + i, 34)
UserForm2.lstgz.AddItem Label48
Next
For i = 1 To Hoja6.Cells(4, 10)
Label48.Caption = Hoja6.Cells(8 + i, 36)
UserForm2.lstfn.AddItem Label48
Label48.Caption = Hoja6.Cells(8 + i, 37)
UserForm2.lstfx.AddItem Label48
Label48.Caption = Hoja6.Cells(8 + i, 38)
UserForm2.lstfy.AddItem Label48
Label48.Caption = Hoja6.Cells(8 + i, 39)
UserForm2.lstfz.AddItem Label48
Label48.Caption = Hoja6.Cells(8 + i, 40)
UserForm2.lstmx.AddItem Label48
Label48.Caption = Hoja6.Cells(8 + i, 41)
UserForm2.lstmy.AddItem Label48
For i = 1 To Hoja6.Cells(4, 11)
Label48.Caption = Hoja6.Cells(8 + i, 55)
UserForm4.lstel.AddItem Label48
Label48.Caption = Hoja6.Cells(8 + i, 56)
UserForm4.lstq1.AddItem Label48
Label48.Caption = Hoja6.Cells(8 + i, 57)
UserForm4.lstq2.AddItem Label48
Label48.Caption = Hoja6.Cells(8 + i, 58)
UserForm4.lstq3.AddItem Label48
Label48.Caption = Hoja6.Cells(8 + i, 59)
UserForm4.lstq4.AddItem Label48
Label48.Caption = Hoja6.Cells(8 + i, 60)
UserForm4.lstq5.AddItem Label48
Label48.Caption = Hoja6.Cells(8 + i, 61)
UserForm4.lstq6.AddItem Label48
Label48.Caption = Hoja6.Cells(8 + i, 62)
UserForm4.lstq7.AddItem Label48
Label48.Caption = Hoja6.Cells(8 + i, 63)
UserForm4.lstq8.AddItem Label48
Label48.Caption = Hoja6.Cells(8 + i, 64)
UserForm4.lstq9.AddItem Label48
Label48.Caption = Hoja6.Cells(8 + i, 65)
UserForm4.lstq10.AddItem Label48
Label48.Caption = Hoja6.Cells(8 + i, 66)
UserForm4.lstq11.AddItem Label48
Label48.Caption = Hoja6.Cells(8 + i, 67)
UserForm4.lstq12.AddItem Label48
Next
End Sub
Private Sub CommandButton25_Click()
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXX
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXX
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX------------------------------------------------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX------BOTON PARA
GRAFICAR DIAGRAMAS EN EL AUTOCAD-----XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX------BOTON PARA
GRAFICAR DIAGRAMAS EN EL AUTOCAD-----XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX------------------------------------------------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXX
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXX
'NUMERO DE CARGAS EN ELEMENTOS
For nc = 1 To Hoja6.Cells(4, 11)
'SI HAY CARGA EN CADA ELEMENTO, ENTONCES SE COLOCA LO
SIGUIENTE
If Hoja6.Cells(8 + nc, 55) = jp Then
sss = sss + 1
Hoja8.Cells(9 + 22 * (jp - 1), 10) = sss
'BORRAR DATOS ANTERIORES DE MF FC FA
Hoja8.Cells(22 * (n - 1) + 19 + 6, 3 + m) = ""
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
'X----------SIN CARGA EN EL ELEMENTO-----------X
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
If Hoja8.Cells(13 + 22 * (n - 1), 7 + 3 * (nc - 1)) = "No" Then
'DATOS UTILIZADOS PARA ESTE TIPO DE CARGA
q=0
'LONGITUDES DESDE EL INICIO HASTA EL CORTE
Hoja8.Cells(22 * (n - 1) + 19 + 3, 3 + m) = lng
'MOMENTOS Y FUERZAS QUE SE RESTAN
fac = 0
fcc = 0
mfc = 0
mttc = 0
f33c = 0
m22c = 0
If Hoja8.Cells(13 + 22 * (n - 1), 7 + 3 * (nc - 1)) = "RECT2" Then
'DATOS UTILIZADOS PARA ESTE TIPO DE CARGA
q = -Hoja8.Cells(13 + 22 * (n - 1), 9 + 3 * (nc - 1))
'LONGITUDES DESDE EL INICIO HASTA EL CORTE
Hoja8.Cells(22 * (n - 1) + 19 + 3, 3 + m) = lng
'MOMENTOS Y FUERZAS QUE SE RESTAN
fac = 0
fcc = lng * q
mfc = q * lng * lng / 2
mttc = 0
f33c = 0
m22c = 0
If Hoja8.Cells(13 + 22 * (n - 1), 7 + 3 * (nc - 1)) = "FUPU1" Then
'DATOS UTILIZADOS PARA ESTE TIPO DE CARGA
q = Hoja8.Cells(13 + 22 * (n - 1), 9 + 3 * (nc - 1))
aa = Hoja8.Cells(13 + 22 * (n - 1), 8 + 3 * (nc - 1))
'LONGITUDES DESDE EL INICIO HASTA EL CORTE
Hoja8.Cells(22 * (n - 1) + 19 + 3, 3 + m) = lng
'MOMENTOS Y FUERZAS QUE SE RESTAN
If lng < aa Then
fac = 0
fcc = 0
mfc = 0
mttc = 0
f33c = 0
m22c = 0
End If
If lng > aa Then 'Or lng = aa Then
fac = q
fcc = 0
mfc = 0
mttc = 0
f33c = 0
m22c = 0
End If
End If
If Hoja8.Cells(13 + 22 * (n - 1), 7 + 3 * (nc - 1)) = "FUPU2" Then
'DATOS UTILIZADOS PARA ESTE TIPO DE CARGA
q = Hoja8.Cells(13 + 22 * (n - 1), 9 + 3 * (nc - 1))
aa = Hoja8.Cells(13 + 22 * (n - 1), 8 + 3 * (nc - 1))
'LONGITUDES DESDE EL INICIO HASTA EL CORTE
Hoja8.Cells(22 * (n - 1) + 19 + 3, 3 + m) = lng
'MOMENTOS Y FUERZAS QUE SE RESTAN
If lng < aa Then
fac = 0
fcc = 0
mfc = 0
mttc = 0
f33c = 0
m22c = 0
End If
If lng > aa Then 'Or lng = aa Then
fac = 0
fcc = -q
mfc = -q * (lng - aa)
mttc = 0
f33c = 0
m22c = 0
End If
End If
If Hoja8.Cells(13 + 22 * (n - 1), 7 + 3 * (nc - 1)) = "FUPU3" Then
'DATOS UTILIZADOS PARA ESTE TIPO DE CARGA
q = Hoja8.Cells(13 + 22 * (n - 1), 9 + 3 * (nc - 1))
aa = Hoja8.Cells(13 + 22 * (n - 1), 8 + 3 * (nc - 1))
'LONGITUDES DESDE EL INICIO HASTA EL CORTE
Hoja8.Cells(22 * (n - 1) + 19 + 3, 3 + m) = lng
'MOMENTOS Y FUERZAS QUE SE RESTAN
If lng < aa Then
fac = 0
fcc = 0
mfc = 0
mttc = 0
f33c = 0
m22c = 0
End If
If lng > aa Then 'Or lng = aa Then
fac = 0
fcc = 0
mfc = 0
mttc = 0
f33c = -q
m22c = -q * (lng - aa)
End If
End If
If Hoja8.Cells(13 + 22 * (n - 1), 7 + 3 * (nc - 1)) = "MOPU1" Then
'DATOS UTILIZADOS PARA ESTE TIPO DE CARGA
q = Hoja8.Cells(13 + 22 * (n - 1), 9 + 3 * (nc - 1))
aa = Hoja8.Cells(13 + 22 * (n - 1), 8 + 3 * (nc - 1))
'LONGITUDES DESDE EL INICIO HASTA EL CORTE
Hoja8.Cells(22 * (n - 1) + 19 + 3, 3 + m) = lng
'MOMENTOS Y FUERZAS QUE SE RESTAN
If lng < aa Then
fac = 0
fcc = 0
mfc = 0
mttc = 0
f33c = 0
m22c = 0
End If
If lng > aa Then 'Or lng = aa Then
fac = 0
fcc = 0
mfc = 0
mttc = -q
f33c = 0
m22c = 0
End If
End If
If Hoja8.Cells(13 + 22 * (n - 1), 7 + 3 * (nc - 1)) = "MOPU2" Then
'DATOS UTILIZADOS PARA ESTE TIPO DE CARGA
q = Hoja8.Cells(13 + 22 * (n - 1), 9 + 3 * (nc - 1))
aa = Hoja8.Cells(13 + 22 * (n - 1), 8 + 3 * (nc - 1))
'LONGITUDES DESDE EL INICIO HASTA EL CORTE
Hoja8.Cells(22 * (n - 1) + 19 + 3, 3 + m) = lng
'MOMENTOS Y FUERZAS QUE SE RESTAN
If lng < aa Then
fac = 0
fcc = 0
mfc = 0
mttc = 0
f33c = 0
m22c = 0
End If
If lng > aa Then 'Or lng = aa Then
fac = 0
fcc = 0
mfc = 0
mttc = 0
f33c = 0
m22c = -q
End If
End If
If Hoja8.Cells(13 + 22 * (n - 1), 7 + 3 * (nc - 1)) = "MOPU3" Then
'DATOS UTILIZADOS PARA ESTE TIPO DE CARGA
q = Hoja8.Cells(13 + 22 * (n - 1), 9 + 3 * (nc - 1))
aa = Hoja8.Cells(13 + 22 * (n - 1), 8 + 3 * (nc - 1))
'LONGITUDES DESDE EL INICIO HASTA EL CORTE
Hoja8.Cells(22 * (n - 1) + 19 + 3, 3 + m) = lng
'MOMENTOS Y FUERZAS QUE SE RESTAN
If lng < aa Then
fac = 0
fcc = 0
mfc = 0
mttc = 0
f33c = 0
m22c = 0
End If
If lng > aa Then 'Or lng = aa Then
fac = 0
fcc = 0
mfc = q
mttc = 0
f33c = 0
m22c = 0
End If
End If
'DEFINIR PUNTOS INICIAL Y FINAL DE CADA LINEA
Pt1(1) = x1 + 4 * sep: Pt1(2) = y1: Pt1(3) = z1
Pt2(1) = x2 + 4 * sep: Pt2(2) = y2: Pt2(3) = z2
Set ObjLinea = AcadDocEM.AddLine(Pt1, Pt2)
'ELEGIR COLOR DE LA LINEA (CELESTE)
If Hoja8.Cells(22 * (n - 1) + 25, 3 + m) > 0 Then
ObjLinea.Color = 52
End If
If Hoja8.Cells(22 * (n - 1) + 25, 3 + m) < 0 Then
ObjLinea.Color = 52
End If
'UNIR LOS PUNTOS FINALES DE CADA LINEA PARA FORMAR LA
CURVA O RECTA DE EXTREMO A EXTREMO
If m > 0 Then
Pt7(1) = aa1 + 4 * sep: Pt7(2) = aa2: Pt7(3) = aa3
Pt8(1) = x2 + 4 * sep: Pt8(2) = y2: Pt8(3) = z2
Set ObjLinea = AcadDocEM.AddLine(Pt7, Pt8)
End If
aa1 = x2
aa2 = y2
aa3 = z2
'COLOCAR VALORES EXTREMOS EN EL DIAGRAMA
If m = 0 Or m = ncort + 1 Then
Dim TextPosition1(0 To 2) As Double
TextPosition1(0) = Pt2(1)
TextPosition1(1) = Pt2(2)
TextPosition1(2) = Pt2(3)
'DEFINIR PUNTOS INICIAL Y FINAL DE CADA LINEA
Pt1(1) = x11 + 6 * sep: Pt1(2) = y11: Pt1(3) = z11
Pt2(1) = x22 + 6 * sep: Pt2(2) = y22: Pt2(3) = z22
Set ObjLinea = AcadDocEM.AddLine(Pt1, Pt2)
'ELEGIR COLOR DE LA LINEA (CELESTE)
If Hoja8.Cells(22 * (n - 1) + 24, 3 + m) > 0 Then
ObjLinea.Color = 52
End If
If Hoja8.Cells(22 * (n - 1) + 24, 3 + m) < 0 Then
ObjLinea.Color = 52
End If
'UNIR LOS PUNTOS FINALES DE CADA LINEA PARA FORMAR LA
CURVA O RECTA DE EXTREMO A EXTREMO
If m > 0 Then
Pt7(1) = aa11 + 6 * sep: Pt7(2) = aa22: Pt7(3) = aa33
Pt8(1) = x22 + 6 * sep: Pt8(2) = y22: Pt8(3) = z22
Set ObjLinea = AcadDocEM.AddLine(Pt7, Pt8)
End If
aa11 = x22
aa22 = y22
aa33 = z22
'COLOCAR VALORES EXTREMOS EN EL DIAGRAMA
If m = 0 Or m = ncort + 1 Then
TextPosition1(0) = Pt2(1)
TextPosition1(1) = Pt2(2)
TextPosition1(2) = Pt2(3)
AcadDocEM.addtext Round(Hoja8.Cells(24 + 22 * (n - 1), 3 + m),
numdecim), TextPosition1, escaltext
End If
'DEFINIR PUNTOS INICIAL Y FINAL DE CADA LINEA
Pt1(1) = x111 + 8 * sep: Pt1(2) = y111: Pt1(3) = z111
Pt2(1) = x222 + 8 * sep: Pt2(2) = y222: Pt2(3) = z222
Set ObjLinea = AcadDocEM.AddLine(Pt1, Pt2)
'ELEGIR COLOR DE LA LINEA (CELESTE)
If Hoja8.Cells(22 * (n - 1) + 23, 3 + m) > 0 Then
ObjLinea.Color = 52
End If
If Hoja8.Cells(22 * (n - 1) + 23, 3 + m) < 0 Then
ObjLinea.Color = 52
End If
'UNIR LOS PUNTOS FINALES DE CADA LINEA PARA FORMAR LA
CURVA O RECTA DE EXTREMO A EXTREMO
If m > 0 Then
Pt7(1) = aa111 + 8 * sep: Pt7(2) = aa222: Pt7(3) = aa333
Pt8(1) = x222 + 8 * sep: Pt8(2) = y222: Pt8(3) = z222
Set ObjLinea = AcadDocEM.AddLine(Pt7, Pt8)
End If
aa111 = x222
aa222 = y222
aa333 = z222
'COLOCAR VALORES EXTREMOS EN EL DIAGRAMA
If m = 0 Or m = ncort + 1 Then
TextPosition1(0) = Pt2(1)
TextPosition1(1) = Pt2(2)
TextPosition1(2) = Pt2(3)
AcadDocEM.addtext Round(Hoja8.Cells(23 + 22 * (n - 1), 3 + m),
numdecim), TextPosition1, escaltext
End If
'DEFINIR PUNTOS INICIAL Y FINAL DE CADA LINEA
Pt1(1) = x1a + 10 * sep: Pt1(2) = y1a: Pt1(3) = z1a
Pt2(1) = x2a + 10 * sep: Pt2(2) = y2a: Pt2(3) = z2a
Set ObjLinea = AcadDocEM.AddLine(Pt1, Pt2)
'ELEGIR COLOR DE LA LINEA (CELESTE)
If Hoja8.Cells(22 * (n - 1) + 28, 3 + m) > 0 Then
ObjLinea.Color = 52
End If
If Hoja8.Cells(22 * (n - 1) + 28, 3 + m) < 0 Then
ObjLinea.Color = 52
End If
'UNIR LOS PUNTOS FINALES DE CADA LINEA PARA FORMAR LA
CURVA O RECTA DE EXTREMO A EXTREMO
If m > 0 Then
Pt7(1) = aa1a + 10 * sep: Pt7(2) = aa2a: Pt7(3) = aa3a
Pt8(1) = x2a + 10 * sep: Pt8(2) = y2a: Pt8(3) = z2a
Set ObjLinea = AcadDocEM.AddLine(Pt7, Pt8)
End If
aa1a = x2a
aa2a = y2a
aa3a = z2a
'COLOCAR VALORES EXTREMOS EN EL DIAGRAMA
If m = 0 Or m = ncort + 1 Then
TextPosition1(0) = Pt2(1)
TextPosition1(1) = Pt2(2)
TextPosition1(2) = Pt2(3)
AcadDocEM.addtext Round(Hoja8.Cells(28 + 22 * (n - 1), 3 + m),
numdecim), TextPosition1, escaltext
End If
'DEFINIR PUNTOS INICIAL Y FINAL DE CADA LINEA
Pt1(1) = x1aa + 12 * sep: Pt1(2) = y1aa: Pt1(3) = z1aa
Pt2(1) = x2aa + 12 * sep: Pt2(2) = y2aa: Pt2(3) = z2aa
Set ObjLinea = AcadDocEM.AddLine(Pt1, Pt2)
'ELEGIR COLOR DE LA LINEA (CELESTE)
If Hoja8.Cells(22 * (n - 1) + 27, 3 + m) > 0 Then
ObjLinea.Color = 52
End If
If Hoja8.Cells(22 * (n - 1) + 27, 3 + m) < 0 Then
ObjLinea.Color = 52
End If
'UNIR LOS PUNTOS FINALES DE CADA LINEA PARA FORMAR LA
CURVA O RECTA DE EXTREMO A EXTREMO
If m > 0 Then
Pt7(1) = aa1aa + 12 * sep: Pt7(2) = aa2aa: Pt7(3) = aa3aa
Pt8(1) = x2aa + 12 * sep: Pt8(2) = y2aa: Pt8(3) = z2aa
Set ObjLinea = AcadDocEM.AddLine(Pt7, Pt8)
End If
aa1aa = x2aa
aa2aa = y2aa
aa3aa = z2aa
'COLOCAR VALORES EXTREMOS EN EL DIAGRAMA
If m = 0 Or m = ncort + 1 Then
TextPosition1(0) = Pt2(1)
TextPosition1(1) = Pt2(2)
TextPosition1(2) = Pt2(3)
AcadDocEM.addtext Round(Hoja8.Cells(27 + 22 * (n - 1), 3 + m),
numdecim), TextPosition1, escaltext
End If
'DEFINIR PUNTOS INICIAL Y FINAL DE CADA LINEA
Pt1(1) = x111a + 14 * sep: Pt1(2) = y111a: Pt1(3) = z111a
Pt2(1) = x222a + 14 * sep: Pt2(2) = y222a: Pt2(3) = z222a
Set ObjLinea = AcadDocEM.AddLine(Pt1, Pt2)
'ELEGIR COLOR DE LA LINEA (CELESTE)
If Hoja8.Cells(22 * (n - 1) + 26, 3 + m) > 0 Then
ObjLinea.Color = 52
End If
If Hoja8.Cells(22 * (n - 1) + 26, 3 + m) < 0 Then
ObjLinea.Color = 52
End If
'UNIR LOS PUNTOS FINALES DE CADA LINEA PARA FORMAR LA
CURVA O RECTA DE EXTREMO A EXTREMO
If m > 0 Then
Pt7(1) = aa111a + 14 * sep: Pt7(2) = aa222a: Pt7(3) = aa333a
Pt8(1) = x222a + 14 * sep: Pt8(2) = y222a: Pt8(3) = z222a
Set ObjLinea = AcadDocEM.AddLine(Pt7, Pt8)
End If
aa111a = x222a
aa222a = y222a
aa333a = z222a
'COLOCAR VALORES EXTREMOS EN EL DIAGRAMA
If m = 0 Or m = ncort + 1 Then
TextPosition1(0) = Pt2(1)
TextPosition1(1) = Pt2(2)
TextPosition1(2) = Pt2(3)
AcadDocEM.addtext Round(Hoja8.Cells(26 + 22 * (n - 1), 3 + m),
numdecim), TextPosition1, escaltext
End If
Next
Next
End Sub
Private Sub CommandButton8_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
CommandButton10.Enabled = True
End Sub
Dim a, b
Private Sub ELIMINARFILA_Click()
If lx.ListIndex <> -1 Then
a = lnum.ListIndex
lnum.RemoveItem lnum.ListIndex
lx.RemoveItem a
ly.RemoveItem a
lz.RemoveItem a
txtx.SetFocus
txtx = ""
txty = ""
txtz = ""
txtx.SetFocus
CommandButton1.Enabled = False
cb1.Value = False
Else
MsgBox ("DEBES SELECCIONAR LA MISMA FILA DE NUM , X, Y ,Z")
End If
End Sub
Private Sub ELIMINARFILAE_Click()
Dim a
If lnu.ListIndex <> -1 Then
a = lnu.ListIndex
lnu.RemoveItem a
li.RemoveItem a
lj.RemoveItem a
txtnu.SetFocus
txti = ""
txtj = ""
CommandButton3.Enabled = False
cb3.Value = False
Else
MsgBox ("DEBES SELECCIONAR LA MISMA FILA DE NUM NUM ,i ,j")
End If
End Sub
Private Sub Frame12_Click()
End Sub
Private Sub Frame12_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X
As Single, ByVal Y As Single)
Private Sub OptionButton1_Change()
If OptionButton1.Value = True Then
txtg.Enabled = True
txtu.Text = "0"
txtu.Enabled = False
txtg = ""
End If
End Sub
Private Sub OptionButton2_change()
If OptionButton2.Value = True Then
txtu.Enabled = True
txtu.Text = ""
txtg.Enabled = True
txtg.Text = "0"
txtg.Enabled = False
End If
End Sub
Private Sub OptionButton3_change()
If OptionButton3.Value = True Then
End If
End Sub
Private Sub OptionButton4_change()
If OptionButton4.Value = True Then
txtb.Text = "0"
txth.Text = "0"
txtb.Enabled = False
txth.Enabled = False
txtd.Text = ""
txtd.Enabled = True
End If
End Sub
Private Sub OptionButton5_Click()
UserForm4.CommandButton2.Enabled = True
UserForm4.CommandButton3.Enabled = False
End Sub
Private Sub OptionButton6_Click()
UserForm4.CommandButton2.Enabled = False
UserForm4.CommandButton3.Enabled = True
End Sub
Private Sub OptionButton7_Click()
CommandButton12.Enabled = False
UserForm2.CommandButton4.Enabled = False
End Sub
Private Sub OptionButton8_Click()
CommandButton12.Enabled = False
UserForm2.CommandButton3.Enabled = False
End Sub
Private Sub txtang_Change()
End Sub
Private Sub txtang_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("0123456789." & Chr(8) & Chr(13), Chr(KeyAscii)) = 0 Then
KeyAscii = 0
End If
End Sub
Private Sub txtelem_Change()
End Sub
Private Sub txtelem_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not (KeyAscii >= 48 And KeyAscii <= 57 Or KeyAscii = 8) Then
KeyAscii = 0
End If
End Sub
Private Sub txtg_Change()
End Sub
Private Sub txtg_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As
Integer)
End Sub
Private Sub txtg_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
End Sub
Private Sub txti_Change()
End Sub
Private Sub txti_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("0123456789" & Chr(8) & Chr(13), Chr(KeyAscii)) = 0 Then
KeyAscii = 0
End If
End Sub
Private Sub txtj_Change()
End Sub
Private Sub txtj_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("0123456789" & Chr(8) & Chr(13), Chr(KeyAscii)) = 0 Then
KeyAscii = 0
End If
End Sub
Private Sub txtnu_Change()
End Sub
Private Sub txtnu_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not (KeyAscii >= 48 And KeyAscii <= 57 Or KeyAscii = 8) Then
KeyAscii = 0
End If
End Sub
Private Sub txtnum_Change()
End Sub
Private Sub txtnum_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not (KeyAscii >= 48 And KeyAscii <= 57 Or KeyAscii = 8) Then
KeyAscii = 0
End If
End Sub
Private Sub txty_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As
Integer)
If KeyCode = 13 Then
txtz.SetFocus
End If
End Sub
Private Sub txtz_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As
Integer)
If KeyCode = 13 Then
btnudo.SetFocus
End If
End Sub
Private Sub txtu_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As
Integer)
If KeyCode = 13 Then
txtb.SetFocus
End If
End Sub
Private Sub txtd_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As
Integer)
If KeyCode = 13 Then
btdato.SetFocus
End If
End Sub
'____________________________________ CARGAR Y MOFICAR LOS DATOS
INICIALES DE LA ESTRUCTURA ____________________________________________
'XXXXX CALCULAR DESPUES DE INGRESAR TODOS LOS DATOS XXXXX
Private Sub btrot_Click()
btmat.Enabled = True
btvec.Enabled = True
End Sub
'XXXXX HABILITAR OPCION DE MODIFICAR XXXXX
Private Sub cb4_Click()
If cb4.Value = True Then
CommandButton4.Enabled = True
Else: CommandButton4.Enabled = False
End If
End Sub
'XXXXX MODIFICAR DATOS DE ROTACION XXXXX
Private Sub CommandButton4_Click()
lelem.AddItem txtelem.Value, lelem.ListIndex
lang.AddItem txtang.Value, lang.ListIndex
a = lelem.ListIndex
lelem.RemoveItem a
lang.RemoveItem a
txtelem = ""
txtang = ""
txtelem.SetFocus
CommandButton4.Enabled = False
cb4.Value = False
End Sub
'XXXXX CARGAR TIPO DE ELEMENTOS XXXXX
Private Sub btelem_Click()
If Len(Trim(txtnu)) > 0 Then
a = txtnu.Value
lnu.AddItem txtnu.Value
li.AddItem txti.Value
lj.AddItem txtj.Value
txtnu = a + 1
txti = ""
txtj = ""
txti.SetFocus
CommandButton3.Enabled = False
cb3.Value = False
End If
End Sub
'XXXXX HABILITAR OPCION DE MODIFICAR XXXXX
Private Sub cb3_Click()
If cb3.Value = True Then
CommandButton3.Enabled = True
Else: CommandButton3.Enabled = False
End If
End Sub
'XXXXX MODIFICAR TIPO DE ELEMENTOS XXXXX
Private Sub CommandButton3_Click()
lnu.AddItem txtnu.Value, lnu.ListIndex
li.AddItem txti.Value, li.ListIndex
lj.AddItem txtj.Value, lj.ListIndex
a = lnu.ListIndex
lnu.RemoveItem a
li.RemoveItem a
lj.RemoveItem a
txti = ""
txtj = ""
txti.SetFocus
CommandButton3.Enabled = False
cb3.Value = False
End Sub
'XXXXX CARGAR DATOS DE ELEMENTOS XXXXX
Private Sub btdato_Click()
If Len(Trim(txtelem)) > 0 Then
lelem.AddItem txtelem.Value
lang.AddItem txtang.Value
If optv.Value = True Then
ltipo.AddItem optv.Caption
lt.AddItem 1
Else
If optc.Value = True Then
ltipo.AddItem optc.Caption
lt.AddItem 2
End If
End If
le.AddItem txte.Value
lg.AddItem txtg.Value
lu.AddItem txtu.Value
lb.AddItem txtb.Value
lh.AddItem txth.Value
ld.AddItem txtd.Value
txte.SetFocus
CommandButton2.Enabled = False
cb2.Value = False
txtelem = ""
txtang = "0"
txtelem.SetFocus
End If
End Sub
'XXXXX HABILITAR OPCION DE MODIFICAR XXXXX
Private Sub cb2_Click()
If cb2.Value = True Then
CommandButton2.Enabled = True
Else: CommandButton2.Enabled = False
End If
End Sub
'XXXXX MODIFICAR DATOS DE LOS ELEMENTOS XXXXX
Private Sub CommandButton2_Click()
yon = lelem.ListIndex
If optv.Value = True Then
ltipo.AddItem optv.Caption, ltipo.ListIndex
lt.AddItem 1, yon
Else
If optc.Value = True Then
ltipo.AddItem optc.Caption, ltipo.ListIndex
lt.AddItem 2, yon
End If
End If
le.AddItem txte.Value, le.ListIndex
lg.AddItem txtg.Value, lg.ListIndex
lu.AddItem txtu.Value, lu.ListIndex
lb.AddItem txtb.Value, lb.ListIndex
lh.AddItem txth.Value, lh.ListIndex
ld.AddItem txtd.Value, ld.ListIndex
a = ltipo.ListIndex
ltipo.RemoveItem a
lt.RemoveItem a
le.RemoveItem a
lg.RemoveItem a
lu.RemoveItem a
lb.RemoveItem a
lh.RemoveItem a
ld.RemoveItem a
'XXXXX CARGAR DATOS DE LOS NUDOS XXXXX
Private Sub btnudo_Click()
If Len(Trim(txtnum)) > 0 Then
a = txtnum.Value
lnum.AddItem txtnum.Value
lx.AddItem txtx.Value
ly.AddItem txty.Value
lz.AddItem txtz.Value
txtnum = a + 1
txtx = ""
txty = ""
txtz = ""
txtx.SetFocus
CommandButton1.Enabled = False
cb1.Value = False
End If
End Sub
'XXXXX HABILITAR OPCION DE MODIFICAR XXXXX
Private Sub cb1_Click()
If cb1.Value = True Then
CommandButton1.Enabled = True
Else: CommandButton1.Enabled = False
End If
End Sub
'XXXXX MODIFICAR ELEMENTOS DE LOS NUDOS XXXXX
Private Sub CommandButton1_Click()
a = txtnum.Value
lnum.AddItem a, lnum.ListIndex
lx.AddItem txtx.Value, lx.ListIndex
ly.AddItem txty.Value, ly.ListIndex
lz.AddItem txtz.Value, lz.ListIndex
lnum.RemoveItem a
lx.RemoveItem a
ly.RemoveItem a
'_________________________________________ GENERAR LAS MATRICES DE
RIGIDEZ __________________________________________________________
'XXXXX REDIMENSIONAR LISTAS A LOS TAMAÑOS DE LAS TABLAS DE INGRESO
XXXXX
Private Sub btmat_Click()
Application.ScreenUpdating = False
ReDim lsnn(1 To lnum.ListCount) As Double
ReDim lsx(1 To lx.ListCount) As Double
ReDim lsy(1 To ly.ListCount) As Double
ReDim lsz(1 To lz.ListCount) As Double
ReDim lsne(1 To lnu.ListCount) As Double
ReDim lsi(1 To li.ListCount) As Double
ReDim lsj(1 To lj.ListCount) As Double
ReDim lstip(1 To ltipo.ListCount) As String
ReDim lse(1 To le.ListCount) As Double
ReDim lsg(1 To lg.ListCount) As Double
ReDim lsu(1 To lu.ListCount) As Double
ReDim lsb(1 To lb.ListCount) As Double
ReDim lsh(1 To lh.ListCount) As Double
ReDim lsd(1 To ld.ListCount) As Double
ReDim lshp(1 To lhp.ListCount) As Double
ReDim lsbp(1 To lbp.ListCount) As Double
ReDim lstf(1 To ltf.ListCount) As Double
ReDim lstw(1 To ltw.ListCount) As Double
ReDim lstipodeseccion(1 To ltipodeseccion.ListCount) As Double
ReDim lsarea(1 To lnu.ListCount) As Double
ReDim lin2(1 To lnu.ListCount) As Double
ReDim lin3(1 To lnu.ListCount) As Double
ReDim linj(1 To lnu.ListCount) As Double
ReDim lser(1 To lelem.ListCount) As Double
ReDim lsa(1 To lang.ListCount) As Double
'XXXXX ASIGNAR VALORES A LISTAS XXXXX
a = lnum.ListCount
For i = 1 To a
lsnn(i) = lnum.List(i - 1)
Next
For i = 1 To a
lsx(i) = lx.List(i - 1)
Next
For i = 1 To a
lsy(i) = ly.List(i - 1)
Next
For i = 1 To a
lsz(i) = lz.List(i - 1)
Next
'XXX MANDAR DATOS A EXCELL DE NUDOS XXX
Hoja1.Activate
Hoja1.Cells(4, 3) = "COORDENADAS DE LOS NUDOS"
For i = 4 To 7
For j = 3 To 7
Hoja1.Cells(i, j).Font.Bold = True
Next
Next
'PARA PONER TITULO DE COORDENADAS Y NUDOS
Hoja1.Cells(6, 4) = "NUDO"
Hoja1.Cells(6, 6) = "COORDENADAS"
Hoja1.Cells(7, 5) = "X"
Hoja1.Cells(7, 6) = "Y"
Hoja1.Cells(7, 7) = "Z"
For i = 6 To lnum.ListCount + 7
For j = 4 To 7
Hoja1.Cells(i, j).Borders.LineStyle = 1
Next
Next
' PARA IMPORTAR NUDOS, X,Y y Z DEL FORMULARIO A HOJA
For i = 1 To a
Hoja1.Cells(i + 7, 4) = lsnn(i) 'NUDOS
Next
For i = 1 To a
Hoja1.Cells(i + 7, 5) = lsx(i) 'X
Next
For i = 1 To a
Hoja1.Cells(i + 7, 6) = lsy(i) 'Y
Next
For i = 1 To a
Hoja1.Cells(i + 7, 7) = lsz(i) 'Z
Next
'PARA LA TABLA DE ELEMENTOS
a = lnu.ListCount
For i = 1 To a
'NUMERACION DE ELEMENTOS
lsne(i) = lnu.List(i - 1)
Next
For i = 1 To a
'NUDO i
lsi(i) = li.List(i - 1)
Next
For i = 1 To a
'NUDO j
lsj(i) = lj.List(i - 1)
Next
For i = 1 To a
'TIPO DE ELEMENTO
lstip(i) = lt.List(i - 1)
Next
For i = 1 To a
'MODULO DE ELASTICIDAD
lse(i) = le.List(i - 1)
Next
For i = 1 To a
'MODULO DE CORTE
If lg.List(i - 1) = 0 Then
'SI EL MODULO DE CORTE ES CERO, LO CALCULA
DESDE EL VALOR DEL POISSON
lsg(i) = le.List(i - 1) / (2 * (1 + lu.List(i - 1)))
Else
lsg(i) = lg.List(i - 1)
UTILIZA ESE VALOR
'SI EL MODULO DE CORTE ES DIFERENTE DE CERO,
End If
Next
For i = 1 To a
'COEFICIENTE DE POISSON
lsu(i) = lu.List(i - 1)
Next
For i = 1 To a
'BASE DEL ELEMENTO RECTANGULAR
lsb(i) = lb.List(i - 1)
Next
For i = 1 To a
'ALTURA DEL ELEMENTO RECTANGULAR
lsh(i) = lh.List(i - 1)
Next
For i = 1 To a
'DIAMETRO DEL ELEMENTO CIRCULAR
lsd(i) = ld.List(i - 1)
Next
For i = 1 To a
'hp del perfil
lshp(i) = lhp.List(i - 1)
Next
For i = 1 To a
'bp del perfil
lsbp(i) = lbp.List(i - 1)
Next
For i = 1 To a
lstf(i) = ltf.List(i - 1)
Next
'tf del perfil
For i = 1 To a
'tw del perfil
lstw(i) = ltw.List(i - 1)
Next
For i = 1 To a
'tipo de seccion
lstipodeseccion(i) = ltipodeseccion.List(i - 1)
Next
For i = 1 To Val(lnu.ListCount)
'AREA DEL ELEMENTO RECTANGULAR
If ltipodeseccion.List(i - 1) = 1 Then
lsarea(i) = lsh(i) * lsb(i)
End If
'AREA DEL ELEMENTO CIRCULAR
If ltipodeseccion.List(i - 1) = 2 Then
lsarea(i) = 3.14159 * ld.List(i - 1) ^ 2 / 4
End If
'AREA DEL ELEMENTO PERFIL
If ltipodeseccion.List(i - 1) = 3 Then
lsarea(i) = ((lshp(i) - lstf(i)) * lstw(i)) + (2 * lstf(i) * lsbp(i))
End If
Next
For i = 1 To Val(lnu.ListCount)
If ltipodeseccion.List(i - 1) = 1 Then
RECTANGULAR
lin2(i) = lsh(i) * lsb(i) ^ 3 / 12
lin3(i) = lsb(i) * lsh(i) ^ 3 / 12
'MOMENTO DE INERCIA EJE 2,3
End If
If ltipodeseccion.List(i - 1) = 2 Then
'MOMENTO DE INERCIA EJE 2,3 CIRCULAR
lin2(i) = 3.14159 * ld.List(i - 1) ^ 4 / 64
lin3(i) = 3.14159 * ld.List(i - 1) ^ 4 / 64
End If
If ltipodeseccion.List(i - 1) = 3 Then
If ltipodeseccion.List(i - 1) = 2 Then
linj(i) = lin2(i) + lin3(i)
End If
'PERFIL
If ltipodeseccion.List(i - 1) = 3 Then
linj(i) = ((2 * lsbp(i) * (lstf(i) ^ 3)) + (lshp(i) * (lstw(i) ^ 3))) / 3 ''''esto no es seguro
comprobar
End If
Next
For i = e + 10 To e + 13
For j = 2 To 21
Hoja1.Cells(i, j).Font.Bold = True
Next
Next
For i = e + 12 To e + 13 + a
For j = 2 To 21
Hoja1.Cells(i, j).Borders.LineStyle = 1
Next
Next
For i = 1 To a
Hoja1.Cells(i + e + 13, 2) = lsne(i)
'MANDA EL NUMERO DE ELEMENTO
Next
For i = 1 To a
Hoja1.Cells(i + e + 13, 3) = lsi(i)
'MANDA EL VALOR DE "i"
Next
For i = 1 To a
Hoja1.Cells(i + e + 13, 4) = lsj(i)
'MANDA EL VALOR DE "j"
Next
For i = 1 To a
Hoja1.Cells(i + e + 13, 5) = lstip(i)
'MANDA EL TIPO DE ELEMENTO
Next
For i = 1 To a
Hoja1.Cells(i + e + 13, 6) = lse(i)
'MANDA EL MODULO DE ELASTICIDAD
Next
For i = 1 To a
Hoja1.Cells(i + e + 13, 7) = lsg(i)
'MANDA EL MODULO DE CORTE
Next
For i = 1 To a
Hoja1.Cells(i + e + 13, 8) = lsu(i)
'MANDA EL MODULO DE POISSON
Next
For i = 1 To a
Hoja1.Cells(i + e + 13, 9) = lsb(i)
'MANDA LA BASE DEL ELEMENTO
Next
For i = 1 To a
Hoja1.Cells(i + e + 13, 10) = lsh(i)
'MANDA LA ALTURA DEL ELEMENTO
Next
For i = 1 To a
Hoja1.Cells(i + e + 13, 11) = lsd(i)
'MANDA EL DIAMETRO DEL ELEMENTO
Next
For i = 1 To a
Hoja1.Cells(i + e + 13, 12) = lshp(i)
'MANDA EL hp DEL PERFIL
Next
For i = 1 To a
Hoja1.Cells(i + e + 13, 13) = lsbp(i)
'MANDA EL bp DEL PERFIL
Next
For i = 1 To a
Hoja1.Cells(i + e + 13, 14) = lstf(i)
'MANDA EL tf DEL PERFIL
Next
For i = 1 To a
Hoja1.Cells(i + e + 13, 15) = lstw(i)
Next
'MANDA EL tw DEL PERFIL
For i = 1 To a
Hoja1.Cells(i + e + 13, 16) = lsarea(i)
'MANDA EL VALOR DEL AREA
Next
For i = 1 To a
Hoja1.Cells(i + e + 13, 17) = lin2(i)
'MANDA LA INERCIA EN 2
Next
For i = 1 To a
Hoja1.Cells(i + e + 13, 18) = lin3(i)
'MANDA LA INERCIA EN 3
Next
For i = 1 To a
Hoja1.Cells(i + e + 13, 19) = linj(i)
'MANDA LA INERCIA POLAR
Next
For i = 1 To d
'ASIGNA EL ANGULO DE ROTACION SOLO A
LOS ELEMENTOS QUE LES CORRESPONDE
b = lser(i)
Hoja1.Cells(b + e + 13, 20) = lsa(i)
Next
'XXXXX LISTA DE LONGITUDES Y VECTORES UNITARIOS U1 XXXXX
a = lnu.ListCount
ReDim lmod(1 To a) As Double
ReDim u1x(1 To a) As Double
ReDim u1y(1 To a) As Double
ReDim u1z(1 To a) As Double
For k = 1 To a
d = lsi(k)
e = lsj(k)
X = lsx(e) - lsx(d)
Y = lsy(e) - lsy(d)
z = lsz(e) - lsz(d)
lmod(k) = (X ^ 2 + Y ^ 2 + z ^ 2) ^ 0.5
u1x(k) = X / lmod(k)
u1y(k) = Y / lmod(k)
u1z(k) = z / lmod(k)
Next
For i = 1 To a
Hoja1.Cells(i + e + 13, 21) = lmod(i)
'MANDA LA longitud
Hoja6.Cells(i + 8, 71) = lmod(i)
Next
'XXXXX CARGAR MATRIZ DE RIGIDEZ XXXXX
r = lnum.ListCount + 6 * lnu.ListCount
'LA POSICION ES EN FUNCION DE TRES
VECES NUMERO DE ELEMENTOS MAS NUMERO DE NUDOS
For k = 0 To lnu.ListCount - 1
Hoja1.Cells(r + 17 + 15 * k, 3) = "MATRIZ DE RIGIDEZ DEL ELEMENTO"
Hoja1.Cells(r + 17 + 15 * k, 6) = lsne(k + 1)
For i = (r + 19 + 15 * k) To r + 30 + 15 * k
For j = 2 To 13
Hoja1.Cells(i, j) = 0
Next
Next
'XXXXX BORDES DE MATRIZ XXXXX
For i = r + 19 + 15 * k To r + 31 + 15 * k
Hoja1.Cells(i, 18).Select
With Selection
.Borders(xlEdgeLeft).LineStyle = 12
End With
Next
For i = r + 19 + 15 * k To r + 31 + 15 * k
Hoja1.Cells(i, 29).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 12
End With
Next
For i = r + 19 + 15 * k To r + 30 + 15 * k
Hoja1.Cells(i, 20).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 10
'BORDES INTERNOS VERTICALES
End With
Hoja1.Cells(i, 23).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 10
End With
Hoja1.Cells(i, 26).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 10
End With
Next
For i = 18 To 29
'BORDES INTERNOS HORIZONTALES
Hoja1.Cells(r + 22 + 15 * k, i).Select
With Selection
.Borders(xlEdgeTop).LineStyle = 10
End With
Hoja1.Cells(r + 25 + 15 * k, i).Select
With Selection
.Borders(xlEdgeTop).LineStyle = 10
End With
Hoja1.Cells(r + 28 + 15 * k, i).Select
With Selection
.Borders(xlEdgeTop).LineStyle = 10
End With
Next
Next
'XXXXX GENERAR LA MATRIZ DE TRANSFORMACION TRANSPUESTA XXXXX
r = lnum.ListCount + 6 * lnu.ListCount
'LA POSICION ES EN FUNCION DE TRES
VECES NUMERO DE ELEMENTOS MAS NUMERO DE NUDOS
For k = 0 To lnu.ListCount - 1
Hoja1.Cells(r + 17 + 15 * k, 34) = "MATRIZ TRANSPUESTA DEL ELEMENTO"
Hoja1.Cells(r + 17 + 15 * k, 37) = lsne(k + 1)
For i = (r + 19 + 15 * k) To r + 30 + 15 * k
For j = 32 To 43
Hoja1.Cells(i, j) = 0
Next
Next
For i = 0 To 3
Hoja1.Cells(r + 19 + 15 * k + 3 * i, 32 + 3 * i) = Round(u1x(k + 1), 6) '1.1
Hoja1.Cells(r + 19 + 15 * k + 3 * i, 33 + 3 * i) = Round(u2x(k + 1) * Cos(aux(k + 1) *
3.14159265359 / 180) + u3x(k + 1) * Sin(aux(k + 1) * 3.14159265359 / 180), 6) '1.2
Hoja1.Cells(r + 19 + 15 * k + 3 * i, 34 + 3 * i) = Round(-u2x(k + 1) * Sin(aux(k + 1) *
3.14159265359 / 180) + u3x(k + 1) * Cos(aux(k + 1) * 3.14159265359 / 180), 6) '1.3
Hoja1.Cells(r + 20 + 15 * k + 3 * i, 32 + 3 * i) = Round(u1y(k + 1), 6) '2.1
Hoja1.Cells(r + 20 + 15 * k + 3 * i, 33 + 3 * i) = Round(u2y(k + 1) * Cos(aux(k + 1) *
3.14159265359 / 180) + u3y(k + 1) * Sin(aux(k + 1) * 3.14159265359 / 180), 6) '2.2
Hoja1.Cells(r + 20 + 15 * k + 3 * i, 34 + 3 * i) = Round(-u2y(k + 1) * Sin(aux(k + 1) *
3.14159265359 / 180) + u3y(k + 1) * Cos(aux(k + 1) * 3.14159265359 / 180), 6) '2.3
Hoja1.Cells(r + 21 + 15 * k + 3 * i, 32 + 3 * i) = Round(u1z(k + 1), 6) '3.1
Hoja1.Cells(r + 21 + 15 * k + 3 * i, 33 + 3 * i) = Round(u2z(k + 1) * Cos(aux(k + 1) *
3.14159265359 / 180) + u3z(k + 1) * Sin(aux(k + 1) * 3.14159265359 / 180), 6) '3.2
Hoja1.Cells(r + 21 + 15 * k + 3 * i, 34 + 3 * i) = Round(-u2z(k + 1) * Sin(aux(k + 1) *
3.14159265359 / 180) + u3z(k + 1) * Cos(aux(k + 1) * 3.14159265359 / 180), 6) '3.3
Next
'XXXXX BORDES DE MATRIZ XXXXX
For i = r + 19 + 15 * k To r + 31 + 15 * k
Hoja1.Cells(i, 32).Select
With Selection
.Borders(xlEdgeLeft).LineStyle = 12
End With
Next
For i = r + 19 + 15 * k To r + 31 + 15 * k
Hoja1.Cells(i, 43).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 12
End With
Next
For i = r + 19 + 15 * k To r + 30 + 15 * k
Hoja1.Cells(i, 34).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 10
End With
Hoja1.Cells(i, 37).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 10
End With
Hoja1.Cells(i, 40).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 10
End With
'BORDES INTERNOS VERTICALES
Next
For i = 32 To 43
'BORDES INTERNOS HORIZONTALES
Hoja1.Cells(r + 22 + 15 * k, i).Select
With Selection
.Borders(xlEdgeTop).LineStyle = 10
End With
Hoja1.Cells(r + 25 + 15 * k, i).Select
With Selection
.Borders(xlEdgeTop).LineStyle = 10
End With
Hoja1.Cells(r + 28 + 15 * k, i).Select
With Selection
.Borders(xlEdgeTop).LineStyle = 10
End With
Next
Next
End Sub
'________________________________________ GENERAR LA MATRIZ DE RIGIDEZ
GLOBAL _______________________________________________-
Private Sub CommandButton8_Click()
Application.ScreenUpdating = False
r = lnum.ListCount + 6 * lnu.ListCount
'LA POSICION ES EN FUNCION DE TRES
VECES NUMERO DE ELEMENTOS MAS NUMERO DE NUDOS
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxx
'XXXXX REDIMENSIONAMIENTO DE MATRICES COMPLETAS XXXXX
ReDim mp(1 To lnum.ListCount * 6, 1 To lnum.ListCount * 6) As Double
ReDim mc(1 To lnum.ListCount * 6, 1 To lnum.ListCount * 6) As Double
For i = 1 To lnum.ListCount * 6
For j = 1 To lnum.ListCount * 6
mc(i, j) = 0
mp(i, j) = 0
Next
Next
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxx
For k = 0 To lnu.ListCount - 1
Hoja1.Cells(r + 17 + 15 * k, 48) = "MATRIZ DE RIGIDEZ GLOBAL DE"
Hoja1.Cells(r + 17 + 15 * k, 51) = lsne(k + 1)
For i = 1 To 12
For j = 1 To 12
t(i, j) = 0
kl(i, j) = 0
tt(i, j) = 0
kg(i, j) = 0
prod(i, j) = 0
Next
Next
For i = 0 To 3
'XXX MATRIZ DE TRANSFORMACION XXX
For i = 1 To 12
For j = 1 To 12
For l = 1 To 12
suma = tt(i, l) * kl(l, j) + suma
Next
prod(i, j) = suma
suma = 0
Next
Next
suma = 0
For i = 1 To 12
For j = 1 To 12
For l = 1 To 12
suma = prod(i, l) * t(l, j) + suma
Next
kg(i, j) = suma
suma = 0
Next
Next
'XXXXX LLEVAR LA MATRIZ DE RIGIDEZ GLOBAL AL EXCEL XXXXX
For i = r + 19 + 15 * k To r + 30 + 15 * k
For j = 46 To 57
Hoja1.Cells(i, j) = kg(i - (18 + r + 15 * k), j - 45)
Next
Next
'XXXXX COLOCAR LA NUMERACION A LAS MATRICES XXXXX
For l = 46 To 51
Hoja1.Cells(r + 18 + 15 * k, l) = (lsi(k + 1) - 1) * 6 + l - 45
Hoja1.Cells(r + 18 + 15 * k, l).Select
With Selection
.Font.Bold = True
.Font.Size = 9
End With
Next
For l = 52 To 57
Hoja1.Cells(r + 18 + 15 * k, l) = (lsj(k + 1) - 1) * 6 + l - 51
Hoja1.Cells(r + 18 + 15 * k, l).Select
With Selection
.Font.Bold = True
.Font.Size = 9
End With
Next
For l = r + 19 + 15 * k To r + 24 + 15 * k
Hoja1.Cells(l, 45) = (lsi(k + 1) - 1) * 6 + 1 + l - (r + 19 + 15 * k)
Hoja1.Cells(l, 45).Select
With Selection
.Font.Bold = True
.Font.Size = 9
End With
Next
For l = r + 25 + 15 * k To r + 30 + 15 * k
Hoja1.Cells(l, 45) = (lsj(k + 1) - 1) * 6 + 1 + l - (r + 25 + 15 * k)
Hoja1.Cells(l, 45).Select
With Selection
.Font.Bold = True
.Font.Size = 9
End With
Next
'XXXXX PONER MARCO A LA MATRIZ GLOBAL XXXXX
For i = r + 19 + 15 * k To r + 30 + 15 * k
Hoja1.Cells(i, 45).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 12
End With
Hoja1.Cells(i, 57).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 12
End With
Hoja1.Cells(i, 51).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 4
End With
Next
For i = 46 To 57
Hoja1.Cells(r + 24 + 15 * k, i).Select
With Selection
.Borders(xlEdgeBottom).LineStyle = 4
End With
Next
'XXXXX CREACIÓN DE LA MATRIZ DE RIGIDEZ COMPLETA XXXXX
For l = (lsi(k + 1) - 1) * 6 + 1 To lsi(k + 1) * 6
For m = (lsi(k + 1) - 1) * 6 + 1 To lsi(k + 1) * 6
a = l - (lsi(k + 1) - 1) * 6
b = m - (lsi(k + 1) - 1) * 6
mp(l, m) = kg(a, b)
Next
Next
For l = (lsi(k + 1) - 1) * 6 + 1 To lsi(k + 1) * 6
For m = (lsj(k + 1) - 1) * 6 + 1 To lsj(k + 1) * 6
a = l - (lsi(k + 1) - 1) * 6
b = m - (lsj(k + 1) - 1) * 6 + 6
mp(l, m) = kg(a, b)
mp(m, l) = kg(b, a)
Next
Next
For l = (lsj(k + 1) - 1) * 6 + 1 To lsj(k + 1) * 6
For m = (lsj(k + 1) - 1) * 6 + 1 To lsj(k + 1) * 6
a = l - (lsj(k + 1) - 1) * 6 + 6
b = m - (lsj(k + 1) - 1) * 6 + 6
mp(l, m) = kg(a, b)
Next
Next
For i = 1 To lnum.ListCount * 6
For j = 1 To lnum.ListCount * 6
mc(i, j) = mp(i, j) + mc(i, j)
Next
Next
For i = 1 To lnum.ListCount * 6
For j = 1 To lnum.ListCount * 6
mp(i, j) = 0
Next
Next
Next
End Sub
'_________________________ MATRIZ DE RIGIDEZ ENSAMBLADA EN EL EXCEL
___________________
Private Sub CommandButton10_Click()
Application.ScreenUpdating = False
'XXXXX LLEVAR MATRIZ ENSAMBLADA AL EXCEL XXXXX
For i = 5 To 5 + lnum.ListCount * 6 - 1
For j = 60 To 60 + lnum.ListCount * 6 - 1
Hoja1.Cells(i, j) = mc(i - 4, j - 59)
Next
Next
'XXXXX COLOCAR MARCO A LA MATRIZ ENSAMBLADA XXXXX
For i = 5 To 5 + lnum.ListCount * 6 - 1
Hoja1.Cells(i, 60).Select
With Selection
.Borders(xlEdgeLeft).LineStyle = 12
End With
Next
For i = 5 To 5 + lnum.ListCount * 6 - 1
Hoja1.Cells(i, 60 + lnum.ListCount * 6 - 1).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 12
End With
Next
'XXXXX NUMERACION DE MATRIZ COMPLETA XXXXX
For l = 60 To lnum.ListCount * 6 + 59
Hoja1.Cells(4, l) = l - 59
Hoja1.Cells(4, l).Select
With Selection
.Font.Bold = True
End With
Next
For l = 5 To lnum.ListCount * 6 + 4
Hoja1.Cells(l, 59) = l - 4
Hoja1.Cells(l, 59).Select
With Selection
.Font.Bold = True
End With
Next
'XXXXX REDIMENSIONAR MATRICES DE VECTORES XXXXX
a = lnu.ListCount
ReDim u2x(a) As Double
ReDim u2y(a) As Double
ReDim u2z(a) As Double
ReDim u3x(a) As Double
ReDim u3y(a) As Double
ReDim u3z(a) As Double
'XXXXX CREACION DE UNITARIOS U2 U3 XXXXX
For k = 1 To a
'XXX CUANDO SE TRABAJA CON VIGAS XXX
If lstip(k) = 1 Then
r = (u1y(k) ^ 2 + u1x(k) ^ 2) ^ 0.5
u3x(k) = u1y(k) / r
u3y(k) = -u1x(k) / r
u3z(k) = 0
u2x(k) = u3y(k) * u1z(k) - u1y(k) * u3z(k)
u2y(k) = u1x(k) * u3z(k) - u3x(k) * u1z(k)
u2z(k) = u3x(k) * u1y(k) - u1x(k) * u3y(k)
End If
'XXX CUANDO SE TRABAJA CON COLUMNAS XXX
If lstip(k) = 2 Then
r = (u1y(k) ^ 2 + u1z(k) ^ 2) ^ 0.5
u3x(k) = 0
u3y(k) = u1z(k) / r
u3z(k) = u1y(k) / r
u2x(k) = u3y(k) * u1z(k) - u1y(k) * u3z(k)
u2y(k) = u1x(k) * u3z(k) - u3x(k) * u1z(k)
u2z(k) = u3x(k) * u1y(k) - u1x(k) * u3y(k)
End If
Next
'XXXXX CARGAR LAS COMPONENTES DE LOS UNITARIOS A EXCELL XXXXX
For k = 1 To a
'XXXXX ANGULOS DE ROTACION XXXXX
ReDim aux(1 To lnu.ListCount) As Double
For i = 1 To lnu.ListCount
aux(i) = 0
Next
d = lelem.ListCount
For i = 1 To d
aux(lser(i)) = lsa(i)
Next
'XXXXX VECTORES UNITARIOS ROTADOS XXXXX
For k = 1 To a
Hoja1.Cells(4 + 3 * k, 32) = "u1"
Hoja1.Cells(4 + 3 * k, 33) = u1x(k)
'XXXXX PONER CUADRO A LOS DATOS XXXXX
For i = 4 To 6 + 3 * a
For j = 24 To 28
Hoja1.Cells(i, j).Select
With Selection
.Borders.LineStyle = 1
End With
Next
Next
For i = 4 To 6 + 3 * a
For j = 30 To 35
Hoja1.Cells(i, j).Select
With Selection
.Borders.LineStyle = 1
End With
Next
Next
End Sub
'_____________________________CREAR LA MATRIZ REORDENADA
____________________________________
Private Sub CommandButton13_Click() 'botón "MATRIZ REORDENADA"
Application.ScreenUpdating = False
'XXXXX CREAR MATRIZ DE CEROS PARA LA MATRIZ REORDENADA XXXXX
ReDim mr(1 To 6 * lnum.ListCount, 1 To 6 * lnum.ListCount) As Double
nx = 6 * lnum.ListCount
ESTRUCTURA
'NÚMERO TOTAL DE COORDENADAS EN LA
For i = 1 To lnum.ListCount
For j = 1 To lnum.ListCount
mr(i, j) = 0
Next
Next
'XXXXX CREAR LA MATRIZ DE LAS CONDICIONES INICIALES DE LOS APOYOS
XXXXX
ReDim lapoy(1 To UserForm2.lstdn.ListCount, 1 To 7) As Double
For i = 1 To UserForm2.lstdn.ListCount
lapoy(i, 1) = UserForm2.lstdn.List(i - 1)
'XXXXX PARA CREAR LA MATRIZ Qot EN SCG XXXXX
ReDim Qot(1 To lnum.ListCount, 1 To 7) As Double
For i = 1 To lnum.ListCount
Qot(i, 1) = i
For j = 2 To 7
Qot(i, j) = 0
Next
Next
'XXXXX PARA CARGAR LOS DATOS DE LAS CARGAS PUNTUALES SI LAS HAY
XXXXX
aux1 = UserForm2.lstfx.ListCount
If aux1 > 0 Then
For i = 1 To aux1
For j = 1 To lnum.ListCount
If UserForm2.lstfn.List(i - 1) = Qot(j, 1) Then
Qot(j, 2) = UserForm2.lstfx.List(i - 1)
Qot(j, 3) = UserForm2.lstfy.List(i - 1)
Qot(j, 4) = UserForm2.lstfz.List(i - 1)
Qot(j, 5) = UserForm2.lstmx.List(i - 1)
Qot(j, 6) = UserForm2.lstmy.List(i - 1)
Qot(j, 7) = UserForm2.lstmz.List(i - 1)
End If
Next
Next
End If
'XXXXX PARA COLOCAR LOS DATOS DE LAS CARGAS DISTRIBUIDAS EN LOS
ELEMENTOS XXXXX
For i = 1 To 12
For j = 1 To 12
tt(i, j) = 0
Next
Next
If UserForm4.lstel.ListCount > 0 Then
For i = 1 To UserForm4.lstel.ListCount
For j = 1 To lnu.ListCount
If UserForm4.lstel.List(i - 1) = lnu.List(j - 1) Then
'XXX HACER CEROS LA MATRIZ DE CARGAS EQUIV EN SCG (Qoe) XXX
For k = 1 To 12
Qoe(k) = 0
Next
'XXX PASAR EL VECTOR qe AL SISTEMA GLOBAL DE COORDENADAS
XXX
For k = 1 To 12
For l = 1 To 12
Qoe(k) = tt(k, l) * qe(l) + Qoe(k)
Next
Next
'XXX SUMAR LAS CARGAS EN EL SISTEMA GLOBAL A LA MATRIZ DE
CARGAS EN LOS NUDOS SGC XXX
aux1 = UserForm4.lstel.List(i - 1)
aux2 = UserForm4.lstel.List(i - 1)
For l = 2 To 7
Qot(lsi(aux1), l) = Qoe(l - 1) + Qot(lsi(aux1), l)
Qot(lsj(aux2), l) = Qoe(l + 5) + Qot(lsj(aux2), l)
Next
End If
Next
Next
End If
'XXXXX SEPARANDO LOS NUDOS LIBRES DE LOS APOYOS XXXXX
ReDim auxx1(1 To lnum.ListCount)
For i = 1 To lnum.ListCount
auxx1(i) = i
Next
For i = 1 To UserForm2.lstdn.ListCount
For j = 1 To lnum.ListCount
If UserForm2.lstdn.List(i - 1) = lnum.List(j - 1) Then
auxx1(j) = 0
End If
Next
Next
'XXX CREA MATRIX COLUMNA SÓLO DE LOS NUDOS LIBRES XXX
ReDim auxx2(1 To lnum.ListCount - UserForm2.lstdn.ListCount)
aux1 = 1
For i = 1 To lnum.ListCount
If auxx1(i) > 0 Then
auxx2(aux1) = auxx1(i)
aux1 = aux1 + 1
End If
Next
'XXXXX CREAR MATRIZ COLUMNA DE TODOS LOS APOYOS MÁS LA
NUMERACIÓN XXXXX
ReDim apoyo(1 To 6 * UserForm2.lstdn.ListCount, 2)
aux1 = 0
aux2 = 0
For i = 1 To UserForm2.lstdn.ListCount
For j = 1 To 6
apoyo(j + 6 * (i - 1), 1) = j + 6 * (lapoy(i, 1) - 1)
apoyo(j + 6 * (i - 1), 2) = lapoy(i, j + 1)
Next
Next
For i = 1 To 6 * UserForm2.lstdn.ListCount
If apoyo(i, 2) = 1000 Then
aux1 = aux1 + 1
Else
aux2 = aux2 + 1
End If
Next
'XXXXX MATRICES DE DES. CONOCIDOS Y DESCONOCIDOS XXXXX
ReDim ncon(aux2, 2) As Double
ReDim ndes(aux1, 2) As Double
'XXXXX PARA LOS VALORES CONOCIDOS XXXXX
ReDim auxx1(1 To 6 * UserForm2.lstdn.ListCount)
For i = 1 To 6 * UserForm2.lstdn.ListCount
auxx1(i) = 0
Next
For i = 1 To 6 * UserForm2.lstdn.ListCount
If apoyo(i, 2) = 1000 Then
auxx1(i) = 0
Else
auxx1(i) = apoyo(i, 1)
End If
Next
aux3 = 1
For i = 1 To 6 * UserForm2.lstdn.ListCount
If auxx1(i) > 0 Then
ncon(aux3, 1) = apoyo(i, 1)
ncon(aux3, 2) = apoyo(i, 2)
aux3 = aux3 + 1
End If
Next
'XXXXX PARA LOS VALORES DESCONOCIDOS XXXXX
ReDim auxx1(1 To 6 * UserForm2.lstdn.ListCount)
For i = 1 To 6 * UserForm2.lstdn.ListCount
auxx1(i) = 0
Next
For i = 1 To 6 * UserForm2.lstdn.ListCount
If apoyo(i, 2) < 1000 Then
auxx1(i) = 0
Else
auxx1(i) = apoyo(i, 1)
End If
Next
aux3 = 1
For i = 1 To 6 * UserForm2.lstdn.ListCount
If auxx1(i) > 0 Then
ndes(aux3, 1) = apoyo(i, 1)
aux3 = aux3 + 1
End If
Next
'XXXXX PARA COLOCAR TODOS LOS NUDOS DE DESP. DESCONOCIDOS XXXXX
ReDim auxx1(1 To 6 * lnum.ListCount)
For i = 1 To 6 * lnum.ListCount
auxx1(i) = i
Next
For i = 1 To aux1
auxx1(ndes(i, 1)) = 0
Next
For i = 1 To lnum.ListCount - UserForm2.lstdn.ListCount
For j = 1 To 6
auxx1(j + 6 * (auxx2(i) - 1)) = 0
Next
ReDim clibres(1 To co) As Double
aux3 = 1
For i = 1 To 6 * lnum.ListCount
If auxx1(i) = 0 Then
clibres(aux3) = i
aux3 = aux3 + 1
End If
Next
'XXXXX PARA CREAR LA MATRIZ REORDENADA XXXXX
'XXXXX PARA CREAR EL Koo XXXXX
For i = 1 To co
For j = 1 To co
mr(i, j) = mc(clibres(i), clibres(j))
Next
Next
'XXXXX PARA CREAR EL Kox y Kxo XXXXX
For i = 1 To co
For j = 1 To cx
mr(i, j + co) = mc(clibres(i), ncon(j, 1))
mr(j + co, i) = mc(ncon(j, 1), clibres(i))
Next
Next
'XXXXX PARA CREAR EL Kxx XXXXX
For i = 1 To cx
For j = 1 To cx
mr(i + co, j + co) = mc(ncon(i, 1), ncon(j, 1))
Next
Next
'XXXXX LLEVAR LA MATRIZ REORDENADA AL EXCEL XXXXX
For i = 5 To 4 + 6 * lnum.ListCount
For j = 62 + 6 * lnum.ListCount To 61 + 12 * lnum.ListCount
Hoja1.Cells(i, j) = mr(i - 4, j - (61 + 6 * lnum.ListCount))
Next
Next
'XXXXX NUMERACION DE MATRIZ REORDENADA XXXXX
'XXX NUMERACIÓN DE COLUMNAS XXX
For i = 1 To co
Hoja1.Cells(4, 62 + 6 * lnum.ListCount + i - 1) = clibres(i)
Hoja1.Cells(4, 62 + 6 * lnum.ListCount + i - 1).Select
With Selection
.Font.Bold = True
End With
Hoja1.Cells(4 + co, 62 + 6 * lnum.ListCount + i - 1).Select
With Selection
.Borders(xlEdgeBottom).LineStyle = 5
NUDOS LIBRES Y APOYOS
End With
Next
'PARA LÍNEA LÍMITE DE
For i = 1 To cx
Hoja1.Cells(4, 62 + 6 * lnum.ListCount + co - 1 + i) = ncon(i, 1)
Hoja1.Cells(4, 62 + 6 * lnum.ListCount + co - 1 + i).Select
With Selection
.Font.Bold = True
End With
Hoja1.Cells(4 + co, 62 + 6 * lnum.ListCount + co - 1 + i).Select
With Selection
.Borders(xlEdgeBottom).LineStyle = 5
NUDOS LIBRES Y APOYOS
'PARA LÍNEA LÍMITE DE
End With
Next
'XXX NUMERACIÓN DE FILAS XXX
For i = 1 To co
Hoja1.Cells(4 + i, 61 + 6 * lnum.ListCount) = clibres(i)
Hoja1.Cells(4 + i, 61 + 6 * lnum.ListCount).Select
With Selection
.Font.Bold = True
.Borders(xlEdgeRight).LineStyle = 12
IZQUIERDO DE NUDOS LIBRES
'PARA PONER BORDE
End With
Hoja1.Cells(4 + i, 61 + 12 * lnum.ListCount).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 12
DERECHO DE NUDOS LIBRES
'PARA PONER BORDE
End With
Hoja1.Cells(4 + i, 61 + 6 * lnum.ListCount + co).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 5
NUDOS LIBRES Y APOYOS
'PARA LÍNEA LÍMITE DE
End With
Next
For i = 1 To cx
Hoja1.Cells(4 + i + co, 61 + 6 * lnum.ListCount) = ncon(i, 1)
Hoja1.Cells(4 + i + co, 61 + 6 * lnum.ListCount).Select
With Selection
.Font.Bold = True
.Borders(xlEdgeRight).LineStyle = 12
IZQUIERDO DE APOYOS
'PARA PONER BORDE
End With
Hoja1.Cells(4 + i + co, 61 + 12 * lnum.ListCount).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 12
DERECHO DE APOYOS
'PARA PONER BORDE
End With
Hoja1.Cells(4 + i + co, 61 + 6 * lnum.ListCount + co).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 5
NUDOS LIBRES Y APOYOS
End With
Next
'XXXXX CREACIÓN DE LA MATRIZ Koo XXXXX
ReDim Koo(1 To co, 1 To co)
For i = 1 To co
For j = 1 To co
Koo(i, j) = mr(i, j)
Next
Next
'PARA LÍNEA LÍMITE DE
'XXXXX CREACIÓN DE LA MATRIZ Kox Y Kxo XXXXX
ReDim Kox(1 To co, 1 To cx)
ReDim Kxo(1 To cx, 1 To co)
For i = 1 To co
For j = co + 1 To 6 * (lnum.ListCount)
Kox(i, j - co) = mr(i, j)
Kxo(j - co, i) = mr(j, i)
Next
Next
'XXXXX CREACIÓN DE LA MATRIZ Kxx XXXXX
ReDim Kxx(1 To cx, 1 To cx)
For i = co + 1 To co + cx
For j = co + 1 To co + cx
Kxx(i - co, j - co) = mr(i, j)
Next
Next
'XXXXX CREACION DE LA MATRIZ INVERSA XXXXX
ReDim inv(1 To co, 1 To co)
ReDim auxx3(1 To co, 1 To 2 * co)
For i = 1 To co
For j = 1 To co
inv(i, j) = 0
inv(i, i) = 1
Next
Next
For i = 1 To co
For j = 1 To co
auxx3(i, j) = Koo(i, j)
auxx3(i, i + co) = 1
Next
Next
'XXX MÉTODO DE GAUSS JORDAN PARA INVERTIR MATRICES XXX
aux1 = 0
aux2 = 0
For i = 1 To co - 1
pb1 = auxx3(i, i)
For j = i + 1 To co
pb2 = auxx3(j, i)
For k = 1 To 2 * co
auxx3(j, k) = auxx3(j, k) - (pb2 / pb1) * auxx3(i, k)
Next
Next
Next
For i = 1 To co
pb1 = auxx3(i, i)
For j = 1 To 2 * co
auxx3(i, j) = auxx3(i, j) / pb1
Next
Next
For i = co To 2 Step -1
For j = i - 1 To 1 Step -1
pb2 = auxx3(j, i)
For k = 1 To 2 * co
auxx3(j, k) = auxx3(j, k) - (pb2) * auxx3(i, k)
Next
Next
Next
'XXXXX SEPARAR LA MATRIZ INVERSA XXXXX
For i = 1 To co
For j = 1 To co
inv(i, j) = auxx3(i, j + co)
Next
Next
'XXXXX CALCULAR EL Do XXXXX
ReDim auxx4(1 To co)
ReDim Dx(1 To cx)
ReDim Do1(1 To co)
ReDim Qo(1 To co)
For i = 1 To co
auxx4(i) = 0
Do1(i) = 0
Qo(i) = 0
Next
For i = 1 To cx
Dx(i) = 0
Next
For i = 1 To cx
'For j = 1 To 6
'aux1 = j + 6 * (i - 1)
Dx(i) = ncon(i, 2)
'Next
Next
For i = 1 To co
For j = 1 To cx
auxx4(i) = auxx4(i) + Kox(i, j) * Dx(j)
Next
Next
'xxxx PASAR EL Qot A UNA MATRIZ COLUMNA Qotc XXXXX
ReDim Qotc(1 To 6 * lnum.ListCount)
For i = 1 To lnum.ListCount
For j = 1 To 6
Qotc(j + 6 * (i - 1)) = Qot(i, j + 1)
Next
Next
For i = 1 To co
'For j = 1 To 6
Qo(i) = Qotc(clibres(i))
' Next
Next
'XXXXX GENERAR LA MATRIZ Do EN EL SCG XXXXX
For i = 1 To co
For j = 1 To co
Do1(i) = Do1(i) + inv(i, j) * (Qo(j) - auxx4(j))
Next
Next
'XXXXX PARA CREAR Qx XXXXX
ReDim auxx5(1 To cx)
ReDim auxx6(1 To cx)
ReDim Qx(1 To cx)
'XXXXX PARA GENERAR Kxo.Do XXXXX
For i = 1 To cx
For j = 1 To co
auxx5(i) = auxx5(i) + Kxo(i, j) * Do1(j)
Next
Next
'XXXXX PARA GENERAR Kxx.Dx XXXXX
For i = 1 To cx
For j = 1 To cx
auxx6(i) = auxx6(i) + Kxx(i, j) * Dx(j)
Next
Next
'XXXXX PARA GENERAR Qx XXXXX
For i = 1 To cx
Qx(i) = auxx5(i) + auxx6(i)
Next
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
End Sub
'________________________________ MANDAR Do Y Qx AL EXCEL
____________________ BOTÓN Do, Qx
Private Sub CommandButton14_Click()
Application.ScreenUpdating = False
'XXXXX PASAR Do AL EXCEL XXXXX
For i = 1 To co
Hoja1.Cells(i + 4, 65 + 12 * lnum.ListCount) = Do1(i)
Hoja1.Cells(i + 4, 65 + 12 * lnum.ListCount).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 12
.Borders(xlEdgeLeft).LineStyle = 12
End With
Next
'XXXXX PASAR Qx AL EXCEL XXXXX
For i = 1 To cx
Hoja1.Cells(i + 4, 68 + 12 * lnum.ListCount) = Qx(i)
Hoja1.Cells(i + 4, 68 + 12 * lnum.ListCount).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 12
.Borders(xlEdgeLeft).LineStyle = 12
End With
Next
'XXXXX COLOCAR NUMERACIÓN A Do XXXXX
Hoja1.Cells(3, 65 + 12 * lnum.ListCount) = "DESPLAZAMIENTOS SCG"
Hoja1.Cells(4, 65 + 12 * lnum.ListCount) = "Do"
Hoja1.Cells(4, 65 + 12 * lnum.ListCount).Select
With Selection
.Font.Bold = True
End With
Hoja1.Cells(3, 65 + 12 * lnum.ListCount).Select
With Selection
.Font.Bold = True
End With
For i = 1 To co
For j = 0 To 5
Hoja1.Cells(4 + i, 64 + 12 * lnum.ListCount) = clibres(i)
Hoja1.Cells(4 + i, 64 + 12 * lnum.ListCount).Select
With Selection
.Font.Bold = True
End With
Next
Next
Hoja1.Cells(4, 68 + 12 * lnum.ListCount).Select
With Selection
.Font.Bold = True
End With
Hoja1.Cells(3, 68 + 12 * lnum.ListCount).Select
With Selection
.Font.Bold = True
End With
For i = 1 To cx
For j = 0 To 5
Hoja1.Cells(4 + i, 67 + 12 * lnum.ListCount) = ncon(i, 1)
Hoja1.Cells(4 + i, 67 + 12 * lnum.ListCount).Select
With Selection
.Font.Bold = True
End With
Next
Next
'XXXXX MANDAR LA MATRIZ DE TODAS LAS CARGAS EN EL SCG AL EXCEL
XXXXX
For i = 1 To 6 * lnum.ListCount
Hoja1.Cells(8 + co + i, 65 + 12 * lnum.ListCount) = Qotc(i)
Hoja1.Cells(8 + co + i, 65 + 12 * lnum.ListCount).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 12
.Borders(xlEdgeLeft).LineStyle = 12
End With
Next
Hoja1.Cells(7 + co, 65 + 12 * lnum.ListCount) = "CARGAS EN EL SGC"
Hoja1.Cells(7 + co, 65 + 12 * lnum.ListCount).Select
With Selection
.Font.Bold = True
End With
For i = 1 To 6 * lnum.ListCount
Hoja1.Cells(8 + co + i, 64 + 12 * lnum.ListCount) = i
Hoja1.Cells(8 + co + i, 64 + 12 * lnum.ListCount).Select
With Selection
.Font.Bold = True
End With
Next
'XXXXX CARGAR LOS DATOS DE QXE XXXXX
ReDim QxA(1 To cx) As Double
For i = 1 To cx
'For j = 1 To 6
QxA(i) = Qotc(ncon(i, 1))
'Next
Next
'XXXXX PASAR QxA AL EXCEL XXXXX
For i = 1 To cx
Hoja1.Cells(i + 4, 70 + 12 * lnum.ListCount) = QxA(i)
Hoja1.Cells(i + 4, 70 + 12 * lnum.ListCount).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 12
.Borders(xlEdgeLeft).LineStyle = 12
End With
Next
Hoja1.Cells(3, 70 + 12 * lnum.ListCount) = "Q EQUIVALENTES SCG"
Hoja1.Cells(3, 70 + 12 * lnum.ListCount).Select
With Selection
.Font.Bold = True
End With
'XXXXX CALCULAR LOS VALORES DEL Qxfinales XXXXX
ReDim Qxfinal(1 To cx) As Double
For i = 1 To cx
Qxfinal(i) = Qx(i) - QxA(i)
Next
'XXXXX PASAR QxA AL EXCEL XXXXX
For i = 1 To cx
Hoja1.Cells(i + 4, 72 + 12 * lnum.ListCount) = Qxfinal(i)
Hoja1.Cells(i + 4, 72 + 12 * lnum.ListCount).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 12
.Borders(xlEdgeLeft).LineStyle = 12
End With
Next
Hoja1.Cells(3, 72 + 12 * lnum.ListCount) = "Q finles SCG"
Hoja1.Cells(3, 72 + 12 * lnum.ListCount).Select
With Selection
.Font.Bold = True
End With
'XXXXX GENERAR LA MATRIZ TOTAL DE LOS ELEMENTOS MT EN SCG XXXXX
ReDim MT(1 To 6 * lnum.ListCount, 2)
For i = 1 To co
MT(clibres(i), 1) = clibres(i)
MT(clibres(i), 2) = Do1(i)
Next
For i = 1 To cx
MT(ncon(i, 1), 1) = ncon(i, 1)
MT(ncon(i, 1), 2) = Dx(i)
Next
'XXXXX PARA GENERAR EL qi DE CADA ELEMENTO XXXXX
For i = 1 To 12
For j = 1 To 12
t(i, j) = 0
Next
Next
'XXXXX PARA CÁCULOS GENERALES XXXXX
For j = 1 To lnu.ListCount
'XXX HACER CEROS LA MATRIZ DE DESPLAZAMIENTOS LOCALES (di) XXX
For k = 1 To 12
di(k) = 0
'XXXXX CREAR EL VECTOR DE DESPLAZAMIENTOS dia XXXXX
'XXX PARA NUDOS LIBRES XXX
'For i = 1 To lnum.ListCount
'If auxx2(i) = lsi(j) Then
For k = 1 To 6
dia(k) = MT(k + 6 * (lsi(j) - 1), 2)
Next
For k = 1 To 6
dia(k + 6) = MT(k + 6 * (lsj(j) - 1), 2)
Next
'End If
'If auxx2(i) = lsj(j) Then
'For k = 1 To 6
'dia(k + 6) = Do1(k + 6 * (i - 1))
'Next
'End If
'Next
'XXX PARA LOS APOYOS XXX
'For i = 1 To UserForm2.lstdn.ListCount
'If lapoy(i, 1) = lsi(j) Then
'For k = 1 To 6
'dia(k) = Dx(k + 6 * (i - 1))
'Next
'End If
'If lapoy(i, 1) = lsj(j) Then
'For k = 1 To 6
'dia(k + 6) = Dx(k + 6 * (i - 1))
'Next
'End If
'Next
'XXXXX PASAR EL VECTOR "D" AL SISTEMA LOCAL DE COORDENADAS
XXXXX
For i = 1 To 12
For l = 1 To 12
di(i) = t(i, l) * dia(l) + di(i)
Next
Next
'XXXXX CONSEGUIR LOS q LOCALES XXXXX
For i = 1 To 12
For l = 1 To 12
kl(i, l) = 0
Next
Next
Next
For i = 1 To 12
qfinal(i) = qoi(i) - qf(i)
Next
'XXXXX COLOCAR dia, T y di EN EL EXCEL XXXXX
For i = r + 19 + 15 * (j - 1) To r + 30 + 15 * (j - 1)
For l = 61 To 72
Hoja1.Cells(i, 74) = dia(i - (18 + r + 15 * (j - 1)))
Hoja1.Cells(i, l) = t(i - (18 + r + 15 * (j - 1)), l - 60)
Hoja1.Cells(i, 76) = di(i - (18 + r + 15 * (j - 1)))
Next
Next
'XXXXX COLOCAR qoi EN EL EXCEL XXXXX
For i = r + 19 + 15 * (j - 1) To r + 30 + 15 * (j - 1)
For l = 80 To 91
Hoja1.Cells(i, 93) = qoi(i - (18 + r + 15 * (j - 1)))
Hoja1.Cells(i, l) = kl(i - (18 + r + 15 * (j - 1)), l - 79)
Next
Next
'XXXXX COLOCAR qf y qfinal EN EL EXCEL XXXXX
For i = r + 19 + 15 * (j - 1) To r + 30 + 15 * (j - 1)
Hoja1.Cells(i, 95) = -qf(i - (18 + r + 15 * (j - 1)))
Hoja1.Cells(i, 97) = qfinal(i - (18 + r + 15 * (j - 1)))
'EXPORTAR A LA HOJA 9 PARA GRAFICAS
'If i < r + 22 + 15 * (j - 1) Then
' Hoja9.Cells(17 + 13 * (j - 1) + i - r - 19 - 15 * (j - 1) + 1, 3) = qfinal(i - (18 + r + 15 *
(j - 1)))
'End If
Next
Next
'XXXXX COLOCAR TÍTULOS, NUMERACIONES, BORDES XXXXX
For j = 1 To lnu.ListCount
For i = r + 19 + 15 * (j - 1) To r + 30 + 15 * (j - 1)
'XXXXX MARCO DE LOS Di XXXXX
Hoja1.Cells(i, 74).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 12
.Borders(xlEdgeLeft).LineStyle = 12
End With
'XXXXX MARCO DE LOS di XXXXX
Hoja1.Cells(i, 76).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 12
.Borders(xlEdgeLeft).LineStyle = 12
End With
'XXXXX MARCO DE LOS qo DE FIJACIÓN XXXXX
Hoja1.Cells(i, 95).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 12
.Borders(xlEdgeLeft).LineStyle = 12
End With
'XXXXX MARCO DE LOS qfinales XXXXX
Hoja1.Cells(i, 97).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 12
.Borders(xlEdgeLeft).LineStyle = 12
End With
'XXXXX MARCO DE LOS q LOCALES XXXXX
Hoja1.Cells(i, 93).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 12
.Borders(xlEdgeLeft).LineStyle = 12
End With
'XXXX MARCO DE LA MATRIZ T XXXXX
Hoja1.Cells(i, 61).Select
With Selection
.Borders(xlEdgeLeft).LineStyle = 12
End With
Hoja1.Cells(i, 72).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 12
End With
'XXXX MARCO DE LA MATRIZ Kl XXXXX
Hoja1.Cells(i, 80).Select
With Selection
.Borders(xlEdgeLeft).LineStyle = 12
End With
Hoja1.Cells(i, 91).Select
With Selection
.Borders(xlEdgeRight).LineStyle = 12