Subido por Daysi Barros

Informe Programa Armaduras

Anuncio
Contenido
Ingreso de Datos ................................................................................................................................. 2
Ingreso de Plantilla SlopedTruss ..................................................................................................... 3
Ingreso de Plantilla VerticalTruss .................................................................................................... 4
Análisis................................................................................................................................................. 6
Análisis Lineal .................................................................................................................................. 6
Obtención de GDL libres y restringidos: ...................................................................................... 6
Fuerzas de Empotramiento: ........................................................................................................ 7
Análisis No lineal ............................................................................................................................. 9
Análisis No lineal por pasos ......................................................................................................... 9
Análisis No lineal rápido ............................................................................................................ 10
Resultados ......................................................................................................................................... 11
Ejemplo 1....................................................................................................................................... 11
Datos de entrada ....................................................................................................................... 11
Comparación Fuerzas Axiales .................................................................................................... 11
Comparación Desplazamientos ................................................................................................. 12
Comparación Reacciones .......................................................................................................... 13
Ejemplo 2....................................................................................................................................... 13
Datos de entrada ....................................................................................................................... 13
Comparación Fuerzas Axiales .................................................................................................... 14
Comparación Desplazamientos ................................................................................................. 15
Comparación Reacciones .......................................................................................................... 15
Ejemplo 3....................................................................................................................................... 16
Importación desde SAP2000 ..................................................................................................... 16
Comparación Fuerzas Axiales .................................................................................................... 17
Comparación Desplazamientos ................................................................................................. 17
Comparación Reacciones .......................................................................................................... 18
Ejemplo No lineal .......................................................................................................................... 18
Análisis paso a paso................................................................................................................... 19
Análisis rápido ........................................................................................................................... 20
Guardar Información ......................................................................................................................... 20
1
Ingreso de Datos
Se puede utilizar la opción “En Blanco” para ingresar los datos desde cero. También se pueden
utilizar plantillas para generar la matriz de coordenadas y conectividad de una manera más eficaz.
La Figura 1 muestra las opciones que tiene el programa para empezar un análisis nuevo.
Figura 1. Menú Archivo Nuevo
El ingreso de Datos de una armadura nueva se realiza de acuerdo al Diagrama de Flujo 1:
INICIO
Escoger Opción
"Nuevo"
Leer:
- Número de Divisiones
- Longitud de División
- Altura
- Materiales
- Secciones
"Nuevo" = "En Blanco"
Leer:
- Coordenadas
- Conectividad
- Condicion de nodos
- Fuerzas nodales
- Cargas Distribuidas
- Cambios de
Temperatura
- Errores de
Fabricación
- Materiales
- Secciones
Crear:
- Coordenadas
- Conectividad
- Condición de nodos
Leer:
- Fuerzas nodales
- Cargas Distribuidas
- Cambios de
Temperatura
- Errores de Fabricación
FIN
Diagrama de Flujo 1. Ingreso de Datos
A continuación, se muestra el código de la ventana Plantillas con el cual se recogen los datos:
function BotonOK_Callback(hObject, eventdata, handles)
handles.divisiones=str2num(get(handles.editDivisiones,'String'));
handles.X=str2num(get(handles.editX,'String'));
handles.Y=str2num(get(handles.editY,'String'));
handles.Restr=get(handles.checkRestraints,'Value');
handles.sec=get(handles.TablaSecciones,'Data');
handles.mat=get(handles.TablaMateriales,'Data');
handles.secChord=get(handles.menuSeccionChords,'value');
handles.secBrace=get(handles.menuSeccionBraces,'value');
handles.matChord=get(handles.menuMaterialChords,'value');
handles.matBrace=get(handles.menuMaterialBraces,'value');
setappdata(0,'Variables',handles);%Envia variables a la ventana dibujarestructura
close(Plantillas)
%cierra la ventana Plantillas
2
Ingreso de Plantilla SlopedTruss
La Figura 2 muestra la ventana en donde se recogen los datos necesarios para generar la geometría
y propiedades de la armadura.
Figura 2. Plantilla SlopedTruss
A continuación, se indica parte del código de la ventana dibujarestructura para generar la armadura
denominada SlopedTruss:
function BotonSlopedTruss_Callback(hObject, eventdata, handles)
setappdata(0,'tipo',1);
%Envia a la ventana Plantillas: tipo Sloped
uiwait(Plantillas)
%Abre la ventana Plantillas
variables=getappdata(0,'Variables');
%Recibe variables de la ventana Plantillas
%Nombra las variables necesarias
divisiones=variables.divisiones;
X=variables.X;
Y=variables.Y;
Restr=variables.Restr;
sec=variables.sec;
mat=variables.mat;
secChord=variables.secChord;
secBrace=variables.secBrace;
matChord=variables.matChord;
matBrace=variables.matBrace;
%Calcula el número de nodos y Elementos de la plantilla
numNodos=2*divisiones+1;
numElem=2*numNodos-3;
%Establece condiciones en los nodos y las restricciones de desplazamiento
cond=NaN(numNodos,3);
cond(:,1)=[1:1:numNodos];
if Restr ==1
cond(1,2)=0;
cond(1,3)=0;
cond(divisiones+1,3)=0;
end
%Coordenadas
coor=zeros(numNodos,3);
conec=zeros(numElem,5);
for i=1:divisiones+1
coor(i,1)=i;coor(i,2)=X*(i-1);coor(i,3)=0;
end
for i=divisiones+2:numNodos
coor(i,1)=i;coor(i,2)=X/2+X*(i-(divisiones+2));coor(i,3)=Y;
end
3
%Chords
for i=1:divisiones
conec(i,1)=i;
conec(i,2)=i;
conec(i,3)=i+1;
conec(i,4)=mat(matChord,1);
conec(i,5)=sec(secChord,1);
end
for i=divisiones+1:(divisiones*2-1)
conec(i,1)=i;
conec(i,2)=i+1;
conec(i,3)=i+2;
conec(i,4)=mat(matChord,1);
conec(i,5)=sec(secChord,1);
end
%Braces
c=1;
for i=divisiones*2:(divisiones*3-1)
conec(i,1)=i;
conec(i,2)=c;
conec(i,3)=1+c+divisiones;
conec(i,4)=mat(matBrace,1);
conec(i,5)=sec(secBrace,1);
j=i+divisiones;
conec(j,1)=j;
conec(j,2)=c+1;
conec(j,3)=1+c+divisiones;
conec(j,4)=mat(matBrace,1);
conec(j,5)=sec(secBrace,1);
c=c+1;
end
Ingreso de Plantilla VerticalTruss
La Figura 3 muestra la ventana en donde se recogen los datos necesarios para generar la geometría
y propiedades de la armadura.
Figura 3. Plantilla VerticalTruss
A continuación, se indica parte del código de la ventana dibujarestructura para generar la armadura
denominada VerticalTruss:
4
function BotonVerticalTruss_Callback(hObject, eventdata, handles)
setappdata(0,'tipo',2);
%Envia a ventana Plantillas: tipo Vertical
uiwait(Plantillas)
%Abre la ventana Plantillas
variables=getappdata(0,'Variables');
%Recibe variables de la ventana Plantillas
divisiones=variables.divisiones;
X=variables.X;
Y=variables.Y;
Restr=variables.Restr;
sec=variables.sec;
mat=variables.mat;
secChord=variables.secChord;
secBrace=variables.secBrace;
matChord=variables.matChord;
matBrace=variables.matBrace;
numNodos=2*(divisiones+1);
numElem=5*divisiones+1;
%Establece condiciones en los nodos y las restricciones de desplazamiento
cond=NaN(numNodos,3);
cond(:,1)=[1:1:numNodos];
if Restr ==1
cond(1,2)=0;
cond(1,3)=0;
cond(divisiones+1,3)=0;
end
%Coordenadas
coor=zeros(numNodos,3);
conec=zeros(numElem,5);
for i=1:divisiones+1
coor(i*2-1,1)=i*2-1;
coor(i*2-1,2)=X*(i-1);
coor(i*2-1,3)=0;
coor(i*2,1)=i*2;
coor(i*2,2)=X*(i-1);
coor(i*2,3)=Y;
end
%Chords
for i=1:divisiones+1
conec(i,1)=i;
conec(i,2)=i*2-1;
conec(i,3)=i*2;
conec(i,4)=mat(matChord,1);
conec(i,5)=sec(secChord,1);
end
c=1;
for i=divisiones+2:(divisiones*3+1)
conec(i,1)=i;
conec(i,2)=c;
conec(i,3)=c+2;
conec(i,4)=mat(matChord,1);
conec(i,5)=sec(secChord,1);
c=c+1;
end
c=1; %Braces
for i=divisiones*3+2:(divisiones*4+1)
conec(i,1)=i;
conec(i,2)=c;
conec(i,3)=c+3;
conec(i,4)=mat(matBrace,1);
conec(i,5)=sec(secBrace,1);
c=c+2;
end
c=1;
for i=divisiones*4+2:numElem
c=c+2;
conec(i,1)=i;
conec(i,2)=c;
conec(i,3)=c-1;
conec(i,4)=mat(matBrace,1);
conec(i,5)=sec(secBrace,1);
end
5
Análisis
El programa cuenta con la opción de realizar el análisis lineal de la armadura y también se puede
obtener la curva pushover.
Figura 4. Menú de Análisis
Análisis Lineal
El análisis lineal se realiza de acuerdo al Diagrama de Flujo 2.
INICIO
Leer:
- Coordenadas
- Conectividad
- Condicion de nodos
- Fuerzas nodales
- Cargas Distribuidas
- Cambios de
Temperatura
- Errores de
Fabricación
- Materiales
- Secciones
Obtener:
- GDL Libres P
- GDL Restringidos S
Ordenar:
- Desplazamientos U
- Fuerzas nodales F
- Fuerzas de Empotramiento
- Fuerzas nodales F
- Matriz de Rígidez
Desplazamientos:Up=Kpp
(Fp Kps Us)
Reacciones:Fs=Ksp Up + Kss Us
Femp
Calcular Fuerzas en elementos
- Ejes Globales
- Ejes Locales
FIN
Diagrama de Flujo 2. Análisis Lineal
Entre las partes más importantes del análisis lineal se encuentran la obtención y definición de los
grados de libertad libres y restringidos, con los cuales se pueden definir los desplazamientos
conocidos y desconocidos, así como también las fuerzas aplicadas y las reacciones a encontrar. Otro
punto importante es la transformación de las cargas en los elementos a reacciones nodales.
Obtención de GDL libres y restringidos:
Los GDL libres y restringidos se obtienen de acuerdo al código de la ventana dibujarestructura:
6
function BotonCalcularLineal_Callback(hObject, eventdata, handles)
coor=get(handles.TablaCoordenadas,'Data');
cond=get(handles.TablaCondiciones,'Data');
% “cond”: matriz de desplazamientos nodales donde los valores NaN indican GDL libres
numNodos=size(coor,1);
% Determina el número de nodos
cont=1;
restringidos=cond;
restringidos(restringidos==0)=1;
% Transforma desplazamiento 0 a valor 1
restringidos=restringidos./restringidos;
% Factoriza todos los desplazamientos
restringidos(isnan(restringidos))=0;
% Transforma valores NaN a 0
for i=1:size(cond,1)
% Crea el vector de GDL restringidos
GDL_Restricciones(cont)=(cond(i,1)*2-1)*restringidos(i,2);
cont=cont+1;
GDL_Restricciones(cont)=(cond(i,1)*2)*restringidos(i,3);
cont=cont+1;
end
GDL_Restricciones(GDL_Restricciones==0)=[]; % Elimina valores 0 de los restringidos
GDL_Libres=1:2*numNodos;
GDL_Libres(GDL_Restricciones)=[];
% vector de GDL libres
Fuerzas de Empotramiento:
Las fuerzas de empotramiento se determinan de acuerdo al Diagrama de Flujo 3:
INICIO
Desde i =1
hasta número de
elementos
Fin de Bucle For
Fuerzas nodales
+
Fuerzas de Empotramiento
Obtener propiedades del elemento i
FIN
pos_elem_CD=cargas distribuidas en elemento i
pos_elem_Temp=cambios de temperatura en elemento i
pos_elem_Fab=errores de fabricación en elemento i
Desde j =1 hasta
número de cargas distribuídas
en elemento i
Fin de Bucle For
Desde j =1 hasta
número de cambios de temperatura
en elemento i
-xoj = 0
-x1j = Longitud_i
-y0j = Carga en nodo inicial
-y1j = Carga en nodo final
-m = (y1j
y0j) / (x1j x0j)
-y = y0j + m (x
x0j)
-R1= resolver la integral
-R2= carga total j
R1
Fin
de
Bucle
For
R1 = Tj E_i alfa_i Area_i
R2 = R1
Asignar Reacciones a Rtemp_i a los GDL axiales
F_eq_temp_i = F_eq_temp_i + {B}i ' Rtemp_i
Asignar Reacciones a Rdist_i a los GDL
axiales
F_eq_dist_i = F_eq_dist_i + {B}i ' Rdist_i
Actualizar Fuerzas de
Empotramiento
Fin de
Bucle For
Desde j =1 hasta
número de errores de fabricación
en elemento i
R1 = Lj E_i Area_i Longitud_i
R2 = R1
Asignar Reacciones a Rfab_i a los GDL axiales
F_eq_fab_i = F_eq_fab_i + {B}i ' Rfab_i
Diagrama de Flujo 3. Fuerzas de Empotramiento
7
El código utilizado para determinar las fuerzas de empotramiento se encuentra programado en la
ventana dibujarestructura y se puede visualizar a continuación:
for i=1:numElem
A=sec(conec(i,5),2);
E=mat(conec(i,4),2);
alfa=mat(conec(i,4),3);
xy=coor(new_conec(i,3) ,2:3)-coor(new_conec(i,2) ,2:3);
[theta_rad,L(i)] = cart2pol(xy(1),xy(2));
theta(i) = radtodeg(theta_rad);
B={};
B{i}= [cosd(theta(i)) sind(theta(i))
0
0
-sind(theta(i)) cosd(theta(i))
0
0
0
0
cosd(theta(i)) sind(theta(i))
0
0
-sind(theta(i)) cosd(theta(i))] ;
try
pos_elem_CD=find(CD(:,1)==i);
for j = 1:size(pos_elem_CD,1)
pos_carga=pos_elem_CD(j,1);
x0=0;
y0=CD(pos_carga,3);
x1=L(i);
y1=CD(pos_carga,5);
syms x
syms r1
l=L(i);
m=((y1-y0)/(x1-x0));
y=y0+m*(x-x0);
areadistri =int(y,x,0,l);
R1=solve(int((r1-int(y,x)),x,0,l),r1);
R2=(areadistri-R1);
Rdist(1,i)=R1;
Rdist(3,i)=R2;
Feq_Dist(i,:)=Feq_Dist(i,:)+((B{i}'*Rdist(:,i)))';
end
end
try
pos_elem_Temp=find(Temp(:,1)==i);
for j = 1:size(pos_elem_Temp,1)
pos_carga=pos_elem_Temp(j,1);
deltaT=Temp(pos_carga,2);
R1=-deltaT*E*alfa*A;
R2=-R1;
Rtemp(1,i)=R1;
Rtemp(3,i)=R2;
Feq_Temp(i,:)=Feq_Temp(i,:)+((B{i}'*Rtemp(:,i)))';
end
end
try
pos_elem_Fab=find(Fab(:,1)==i);
for j = 1:size(pos_elem_Fab,1)
pos_carga=pos_elem_Fab(j,1);
deltaL=Fab(pos_carga,2);
R1=-deltaL*E*A/L(i);
R2=-R1;
Rfab(1,i)=R1;
Rfab(3,i)=R2;
Feq_Fab(i,:)=Feq_Fab(i,:)+((B{i}'*Rfab(:,i)))';
end
end
Rs(1,Con_aux(i,3))=Rs(1,Con_aux(i,3))+Feq_Temp(i,1)+Feq_Dist(i,1)+Feq_Fab(i,1);
Rs(1,Con_aux(i,4))=Rs(1,Con_aux(i,4))+Feq_Temp(i,2)+Feq_Dist(i,2)+Feq_Fab(i,2);
Rs(1,Con_aux(i,5))=Rs(1,Con_aux(i,5))+Feq_Temp(i,3)+Feq_Dist(i,3)+Feq_Fab(i,3);
Rs(1,Con_aux(i,6))=Rs(1,Con_aux(i,6))+Feq_Temp(i,4)+Feq_Dist(i,4)+Feq_Fab(i,4);
end
F=F+Rs';
8
Análisis No lineal
Análisis No lineal por pasos
El análisis No lineal paso a paso se ejecuta de acuerdo al Diagrama de Flujo 4:
INICIO
Leer:
- Coordenadas
- Conectividad
- Condicion de nodos
- Fuerzas nodales
- Cargas Distribuidas
- Cambios de
Temperatura
- Errores de Fabricación
- Materiales
- Secciones
Obtener:
- GDL Libres P
- GDL Restringidos S
pasos = 1
flag = 0
Obtener para cada elemento:
- Longitud
- Area
- Modulo de Elasticidad
- Esfuerzo de Fluencia
flag = 0
Y pasos
límite
de pasos
Ordenar:
- Fuerzas nodales F
NO (Fin de Bucle While)
SI
Graficar curva Pushover
( F vs U )
GDL seleccionado
Calcular K de cada elemento
Calcular K de la armadura
deltaUp=Kpp deltaFp
Upasos+1 = deltaU + Upasos
Fpasos+1 = deltaF + Fpasos
FIN
Fin de Bucle For
Desde i = 1
hasta número de
elementos
Contar cuantos
elementos han fluído
SI
Calcular:
- Fuerza en elemento i
- Esfuerzoi = Fuerzai /Areai
Han fluído
todos los
elementos?
Esfuerzoi >=Fy i
flag =1
NO
SI
pasos=pasos+1
Reducir E i
Diagrama de Flujo 4. Análisis No lineal paso a paso
9
NO
Análisis No lineal rápido
El análisis No lineal rápido se ejecuta de acuerdo al Diagrama de Flujo 5:
INICIO
Leer:
- Coordenadas
- Conectividad
- Condicion de nodos
- Fuerzas nodales
- Cargas Distribuidas
- Cambios de
Temperatura
- Errores de Fabricación
- Materiales
- Secciones
Obtener:
- GDL Libres P
- GDL Restringidos S
Ordenar:
- Fuerzas nodales F
Obtener para cada elemento:
- Longitud
- Area
- Modulo de Elasticidad
- Esfuerzo de Fluencia
pasos = 1
flag = 0
F_aux 1,1=0
flag = 0
Y pasos
número de
elementos
NO (Fin de Bucle While)
SI
Graficar curva Pushover
( F vs U )
GDL seleccionado
Calcular K de cada elemento
Calcular K de la armadura
deltaUp=Kpp deltaFp
Upasos+1 = deltaU
FIN
Desde i = 1
hasta número de
elementos
Fin de Bucle For
Calcular:
- Fuerza en elemento i
- Límitei = fy i Areai
- factori=Límitei F_aux i,pasos )/Fuerzai
Fin de
Bucle
For
Han fluído
todos los
elementos?
SI
flag =1
Fuerza= min(factor)*Fp
deltaUp=Kpp Fuerza
Upasos+1 = deltaU+Upasos
Fpasos+1 = Fuerza+Fpasos
Reducir E de Elementos que fluyen
Desde i = 1
hasta número de
elementos
Calcular:
- Fuerza en elemento i
- Límite= fy i Areai
- F1 = Fuerzai +F_aux i,pasos
- F_aux i,pasos+1= min(F1,Límite)
NO
pasos=pasos+1
Diagrama de Flujo 5. Análisis No lineal Rápido
10
Resultados
Ejemplo 1
Datos de entrada
-
Coordenadas
Conectividad
Condiciones en los nodos
Movimiento del suelo de 0,5m en el nodo 2 en la dirección Y
Fuerzas Verticales aplicadas en los nodos 9 y 10
Carga distribuida en el elemento 11
Variaciones de temperatura en elementos 13 y 18
Error de Fabricación en elemento 5
Dos tipos de secciones y un solo material
A continuación, se muestran los datos ingresados en la ventana dibujarestructura del programa
desarrollado en MATLAB (Figura 5)
Figura 5. Datos de entrada del Ejemplo 1 en el programa
Comparación Fuerzas Axiales
A continuación (Figura 6), se indican los diagramas de fuerzas obtenidos en SAP2000 y en MATLAB,
además se resaltan las fuerzas del elemento 12.
11
Figura 6. Comparación de Fuerzas Axiales del Ejemplo 1
Comparación Desplazamientos
A continuación, se muestran los resultados de los desplazamientos, se puede visualizar la
comparación de los desplazamientos obtenidos para el nodo 9 (Figura 7).
Figura 7. Comparación de Desplazamientos del Ejemplo 1
12
Comparación Reacciones
A continuación, se muestran las reacciones obtenidas al analizar el Ejemplo 1 (Figura 8)
Figura 8. Comparación de Reacciones del Ejemplo 1
Ejemplo 2
Datos de entrada
-
Coordenadas
Conectividad
Condiciones en los nodos
Movimiento del apoyo de 0,3m en el nodo 10 en la dirección X
Fuerzas Nodales aplicadas en los nodos 1, 2 y 5
Cargas distribuidas en los elementos 3, 4 y 14
Variaciones de temperatura en elementos 20 y 21
Error de Fabricación en los elementos 2 y 6
Dos tipos de secciones y un solo material
A continuación, se muestran los datos ingresados en la ventana dibujarestructura del programa
desarrollado en MATLAB (Figura 9)
13
Figura 9. Datos de entrada del Ejemplo 2 en el programa
Comparación Fuerzas Axiales
A continuación (Figura 10), se indican los diagramas de fuerzas obtenidos en SAP2000 y en MATLAB,
además se resaltan las fuerzas del elemento 16.
Figura 10. Comparación de Fuerzas Axiales del Ejemplo 2
14
Comparación Desplazamientos
A continuación, se muestran los resultados de los desplazamientos, se puede visualizar la
comparación de los desplazamientos obtenidos para el nodo 8 (Figura 11).
Figura 11. Comparación de Desplazamientos del Ejemplo 2
Comparación Reacciones
A continuación, se muestran las reacciones obtenidas al analizar el Ejemplo 2 (Figura 12).
Figura 12. Comparación de Reacciones del Ejemplo 2
15
Ejemplo 3
Importación desde SAP2000
Para este ejemplo se ha utilizado la opción de importar un archivo de Excel generado desde
SAP2000. La opción de importación se puede apreciar en la Figura 13
Figura 13. Importar archivos desde SAP2000
-
Coordenadas
Conectividad
Condiciones en los nodos
Movimiento del suelo en el nodo 1: 0.5m en la dirección X y 1m en la dirección Y
Fuerzas Verticales aplicadas en los nodos 12, 14, 16, 18, 20, 22
Cargas distribuidas en los elementos 22, 23, 24 y 26
Variaciones de temperatura en elementos 8, 9, 10, 11, 38, 39, 40 y 41
Error de Fabricación en elemento 26
Dos tipos de secciones y un solo material
A continuación, se muestran los datos ingresados en la ventana dibujarestructura (Figura 14)
Figura 14. Datos de entrada del Ejemplo 3 en el programa
16
Comparación Fuerzas Axiales
A continuación (Figura 15), se indican los diagramas de fuerzas obtenidos en SAP2000 y en MATLAB,
además se resaltan las fuerzas del elemento 36.
Figura 15.Comparación de Fuerzas Axiales del Ejemplo 3
Comparación Desplazamientos
A continuación, se muestran los resultados de los desplazamientos, se puede visualizar la
comparación de los desplazamientos obtenidos para el nodo 9 (Figura 16).
Figura 16. Comparación de Desplazamientos del Ejemplo 3
17
Comparación Reacciones
A continuación, se muestran las reacciones obtenidas al analizar el Ejemplo 3 (Figura 17).
Figura 17. Comparación de Reacciones del Ejemplo 3
Ejemplo No lineal
En la Figura 18 se muestran los datos ingresados al programa para ejecutar el análisis no lineal:
Figura 18. Datos de entrada para el Ejemplo de análisis No lineal
Una vez que se ejecute cualquiera de las dos opciones de análisis no lineal, el programa solicita un
factor necesario para reducir la rigidez de cada elemento que fluye (Figura 19)
Figura 19. Ventana de ingreso de Factor de reducción de Rígidez
18
Una vez finalizado el análisis, se solicita el nodo y dirección para la curva pushover (Figura 20):
Figura 20. Información requerida del nodo de control
Análisis paso a paso
Figura 21. Curva Pushover obtenida del análisis no lineal paso a paso
19
Análisis rápido
Figura 22. Curva Pushover obtenida del análisis no lineal rápido
Guardar Información
El programa tiene las opciones de guardar los datos ingresados (Figura 23) en caso de que se
requieran utilizar nuevamente y se pueden abrir buscándolos en el directorio de la computadora.
Figura 23. Opciones de guardado de la información de las armaduras
20
Descargar