Hola a todos...
viendo este foro, y los aportes de los usuarios, me gustaria hacer mi aporte...
este es un programa que revisa vigas con refuerzo en traccion y compresion...
Espero que les guste... acepto sugerencias...
Nota:
Lenguaje de programacion: Visual Basic 2005
Aplicacion para construaprende
Si les gusta el programa...
me gustaria hacer una aplicacion entre todos los foristas... alguien me pasa la bibliografia y yo programo...(luego se publica la aplicacion por aqui) me gustraria programar el calculo de una columna corta por los diversos metodos...
Saludos desde Colombia
Programa para revisar vigas doblemente reforzadas
Moderadores: mgf2004, gatogalaxi
Reglas del Foro
Favor de usar el boton de Dar Gracias
En el mensaje del usuario al que deseas agradecer
En vez de escribir gracias repetidamente
Favor de usar el boton de Dar Gracias
En el mensaje del usuario al que deseas agradecer
En vez de escribir gracias repetidamente
- IngenieroJB
- Usuario Principiante
- Mensajes: 13
- Registrado: Mar Mar 03, 2009 10:51 am
- Ubicación: Cartagena
No tienes los permisos requeridos para ver los archivos adjuntos a este mensaje.
- davidarellano
- Usuario Frecuente
- Mensajes: 198
- Registrado: Dom Oct 14, 2007 2:31 pm
- Ubicación: celaya
Excelente JB gracias; y el codigo fuente? Gracias: Ing H David Arellano carioca502000@yahoo.comIngenieroJB escribió:Hola a todos...
viendo este foro, y los aportes de los usuarios, me gustaria hacer mi aporte...
este es un programa que revisa vigas con refuerzo en traccion y compresion...
Espero que les guste... acepto sugerencias...
Nota:
Lenguaje de programacion: Visual Basic 2005
Aplicacion para construaprende
Si les gusta el programa...
me gustaria hacer una aplicacion entre todos los foristas... alguien me pasa la bibliografia y yo programo...(luego se publica la aplicacion por aqui) me gustraria programar el calculo de una columna corta por los diversos metodos...
Saludos desde Colombia
- IngenieroJB
- Usuario Principiante
- Mensajes: 13
- Registrado: Mar Mar 03, 2009 10:51 am
- Ubicación: Cartagena
Espero que te guste...davidarellano escribió: Excelente JB gracias; y el codigo fuente? Gracias: Ing H David Arellano carioca502000@yahoo.com
aqui mando el code fuente, para abrirlo necesitas tener instalado Visual Basic 2005
....
Envio el proyecto adjunto y posteo aqui el code fuente de la clase que hace esto...
Código: Seleccionar todo
Imports System.IO
Imports System.Math
Public Class Revision_Vigas
'Heredando los textos
Inherits Texto
'**************** VARIABLES PRIVADAS *****************
'*****************************************************
'almacena la base de la viga
Private Base As Single
'almacena la altura d (altura efectiva a tension en cm)
Private d_Tens As Single
'almacena la altura d' (altura efectiva a compresion en cm)
Private d_Comp As Single
'Area de Acero a Tension (AS en cm ^2)
Private As_Tens As Single
'Area de Acero a Compresion (A'S en cm ^2)
Private As_Comp As Single
'resistencia a la compresion del concreto (kg/cm^2)
Private fc_ As Single
'resistencia a la compresion del Acero (kg/cm^2)
Private fy_ As Single
'factor de seguridad fi: para vigas es 0.9
Private Fi_ As Single
'*****************************************************
'**************** VARIABLES PUBLICAS *****************
'*****************************************************
''' <summary>
''' Momento último expresado en Ton*metros
''' </summary>
''' <remarks>Nilson</remarks>
Public Mu As Single 'Momento expresado en Ton*metro
''' <summary>
''' Esfuerzo de Tension de las barras de acero expresado en kg/cm^2
''' </summary>
''' <remarks>Nilson</remarks>
Public fs_Comp As Single
''' <summary>
''' Esfuerzo de Compresion de las barras de acero expresado en kg/cm^2
''' </summary>
''' <remarks>Nilson</remarks>
Public fs_Tens As Single
''' <summary>
''' Esta es la cuantia de la sección (en decimas), valor adimensional
''' </summary>
''' <remarks>Nilson</remarks>
Public Cuantia_Calc As Single
''' <summary>
''' Cuantia mínima. Si el valor de la cuantia calculada es mayor que este, entonces el acero a compresión fluye.
''' Si la cuantia calculada es menor que este, el acero a compresion no fluye y debe calcularse por la siguiente formula:
''' f's = 6000*(c-d')/c
''' </summary>
''' <remarks></remarks>
Public Cuantia_Min As Single
''' <summary>
''' Equivale al 75% de la cuantia balanceada. Este es el valor limite de la cuantia permitida según NSR 98.
''' </summary>
''' <remarks></remarks>
Public Cuantia_Max As Single
''' <summary>
''' Cuantia Balanceada. Si la cuantia calculada es mayor que este valor, la viga es Sobre-reforzada.
''' Caso contrario, Sub-reforzada.
''' </summary>
''' <remarks></remarks>
Public Cuantia_Bal As Single
'Propiedad que almacenar valor de la base de la viga
Public Property Base_() As Single
Get
Return Base
End Get
Set(ByVal Valor As Single)
If Valor <= 0 Then
MsgBox("La base no puede ser menor o igual a cero")
Else
Base = Valor
End If
End Set
End Property
'Propiedad para la altura efectiva a tensión de la viga
Public Property Altura_Efectiva_Tension() As Single
Get
Return d_Tens
End Get
Set(ByVal Valor As Single)
If Valor <= 0 Then
MsgBox("La Altura efectiva no puede ser menor o igual a cero")
Else
d_Tens = Valor
End If
End Set
End Property
'Propiedad para la altura efectiva a compresión de la viga
Public Property Altura_Efectiva_Compresion() As Single
Get
Return d_Comp
End Get
Set(ByVal Valor As Single)
If Valor <= 0 Then
MsgBox("La Altura efectiva a compresion no puede ser menor o igual a cero")
Else
d_Comp = Valor
End If
End Set
End Property
Public Property AS_Tens_() As Single
Get
Return As_Tens
End Get
Set(ByVal Valor As Single)
If Valor < 0 Then
MsgBox("Error: Area negativa no se puede")
Else
As_Tens = Valor
End If
End Set
End Property
Public Property AS_Comp_() As Single
Get
Return As_Comp
End Get
Set(ByVal Valor As Single)
If Valor < 0 Then
MsgBox("Error: Area negativa no se puede")
Else
As_Comp = Valor
End If
End Set
End Property
Public Property fc() As Single
Get
Return fc_
End Get
Set(ByVal Valor As Single)
If Valor <= 0 Then
MsgBox("Error, este valor no puede ser menor ni igual que cero")
Else
fc_ = Valor
End If
End Set
End Property
Public Property fy() As Single
Get
Return fy_
End Get
Set(ByVal Valor As Single)
If Valor <= 0 Then
MsgBox("Error, este valor no puede ser menor ni igual que cero")
Else
fy_ = Valor
End If
End Set
End Property
Public Property Fi() As Single
Get
Return Fi_
End Get
Set(ByVal Valor As Single)
If Valor <= 0 Then
MsgBox("Error en el factor de seguridad")
Else
Fi_ = Valor
End If
End Set
End Property
''' <summary>
''' Funcion que halla la cuantia balanceada (pagina 88 del Libro Rochel tomo 1)
''' </summary>
''' <param name="fc">Resistencia del concreto expresado en kg/cm^2</param>
''' <param name="fy">Resistencia del acero expresado en kg/cm^2</param>
''' <returns>Valor de la cuantia balanceada. Valor Adimensional</returns>
''' <remarks>Nilson</remarks>
Private Function pb(ByVal fc As Single, ByVal fy As Single) As Single
Return Alfa(fc) * fc / fy * 6000 / (6000 + fy)
End Function
'Ecuacion 6.11 (pagina 88)
Private Function pnet_Max(ByVal fc As Single, ByVal fy As Single) As Single
Return 0.75 * pb(fc, fy)
End Function
'Ecuacion 7.6 (pag 108)
Private Function pnet_Min(ByVal fc As Single, ByVal fy As Single, ByVal d_Comp As Single, ByVal d_Tens As Single) As Single
pnet_Min = Alfa(fc) * fc / fy * 6000 * d_Comp / ((6000 - fy) * d_Tens)
End Function
'Funcion que halla la cuantia de la sección
Private Function pnet_Calc(ByVal As_Comp As Single, ByVal As_tens As Single, ByVal b As Single, ByVal d As Single) As Single
Return (As_tens - As_Comp) / (b * d)
End Function
Public Sub Revisar_Viga()
'Procedimiento que ejecuta la revision de la viga
Dim C_neut As Single
Dim a As Single
Dim Momento As Single 'Ton*metro
Cuantia_Min = pnet_Min(fc_, fy_, d_Comp, d_Tens)
Cuantia_Max = pnet_Max(fc_, fy_)
Cuantia_Calc = pnet_Calc(As_Comp, As_Tens, Base, d_Tens)
Cuantia_Bal = pb(fc_, fy_)
If Cuantia_Calc >= Cuantia_Min And Cuantia_Calc < Cuantia_Bal Then
fs_Comp = fy_
fs_Tens = fy_
a = (As_Tens * fs_Tens - As_Comp * fs_Comp) / (0.85 * fc_ * Base) + As_Comp / Base
C_neut = a / 0.85
'Momento exacto
Momento = Momento_Exacto(a)
Mu = Momento / 100000
ElseIf Cuantia_Calc < Cuantia_Min And Cuantia_Calc < Cuantia_Bal Then
'Sub reforzada pero el acero a compresion no fluye, entonces debe calcularse su esfuerzo
fs_Tens = fy_
C_neut = Cuadratica(0.85 ^ 2 * fc_ * Base, -(0.85 * fc_ * As_Comp + As_Tens * fs_Tens - 6000 * As_Comp), -6000 * As_Comp * d_Comp)
a = C_neut * 0.85
fs_Comp = 6000 * (C_neut - d_Comp) / C_neut
'Momento exacto
Momento = Momento_Exacto(a)
Mu = Momento / 100000
ElseIf Cuantia_Calc >= Cuantia_Min And Cuantia_Calc > Cuantia_Bal Then
fs_Comp = fy_
C_neut = Cuadratica(0.85 ^ 2 * fc_ * Base, -(0.85 * fc_ * As_Comp - As_Comp * fs_Comp - As_Tens * 6000), -As_Tens * 6000 * d_Tens)
a = C_neut * 0.85
fs_Tens = 6000 * (d_Tens - C_neut) / C_neut
'Momento exacto
Momento = Momento_Exacto(a)
Mu = Momento / 100000
ElseIf Cuantia_Calc < Cuantia_Min And Cuantia_Calc > Cuantia_Bal Then
'Acero a compresion no fluye: f's = 6000*(c-d')/c ===> por no cumplir limite minimo
'Viga sobre reforzada, Acero a tension no fluye: fs = 6000*(d-c)/c
C_neut = Cuadratica(0.85 ^ 2 * fc_ * Base, -(0.85 * fc_ * As_Comp - As_Comp * 6000 - As_Tens * 6000), -(As_Comp * 6000 * d_Comp + As_Tens * 6000 * d_Tens))
a = C_neut * 0.85
fs_Comp = 6000 * (C_neut - d_Comp) / C_neut
fs_Tens = 6000 * (d_Tens - C_neut) / C_neut
'Momento exacto
Momento = Momento_Exacto(a)
Mu = Momento / 100000
Else
MsgBox("Falta programar")
End If
End Sub
Private Function Momento_Exacto(ByVal a As Single) As Single
'Momento exacto
Momento_Exacto = Fi_ * 0.85 * fc_ * Base * a * (d_Tens - a / 2) - Fi_ * As_Comp * 0.85 * fc_ * (d_Tens - d_Comp) + Fi_ * As_Comp * fs_Comp * (d_Tens - d_Comp)
End Function
Public Sub Guardar_Datos()
'Guardando en el bloc de notas
Call EscribirDatoMATRIZ(1, 1, Me.Fi_, Dir_Bloc_Notas)
Call EscribirDatoMATRIZ(2, 1, Me.Base, Dir_Bloc_Notas)
Call EscribirDatoMATRIZ(3, 1, Me.d_Tens, Dir_Bloc_Notas)
Call EscribirDatoMATRIZ(4, 1, Me.d_Comp, Dir_Bloc_Notas)
Call EscribirDatoMATRIZ(5, 1, Me.As_Tens, Dir_Bloc_Notas)
Call EscribirDatoMATRIZ(6, 1, Me.As_Comp, Dir_Bloc_Notas)
Call EscribirDatoMATRIZ(7, 1, Me.fc_, Dir_Bloc_Notas)
Call EscribirDatoMATRIZ(8, 1, Me.fy_, Dir_Bloc_Notas)
End Sub
Public Sub Cargar_Datos(ByVal Text_Fi As TextBox, ByVal Text_Base As TextBox, _
ByVal Text_d_Tens As TextBox, ByVal Text_d_Comp As TextBox _
, ByVal Text_As_Tens As TextBox, ByVal Text_As_Comp As TextBox _
, ByVal Text_fc As TextBox, ByVal Text_fy As TextBox)
'cargando los datos desde el bloc de notas
Try
With Me
.Fi_ = LeerDatoMATRIZ(1, 1, Dir_Bloc_Notas)
Text_Fi.Text = .Fi_
.Base = LeerDatoMATRIZ(2, 1, Dir_Bloc_Notas)
Text_Base.Text = .Base
.d_Tens = LeerDatoMATRIZ(3, 1, Dir_Bloc_Notas)
Text_d_Tens.Text = .d_Tens
.d_Comp = LeerDatoMATRIZ(4, 1, Dir_Bloc_Notas)
Text_d_Comp.Text = .d_Comp
.As_Tens = LeerDatoMATRIZ(5, 1, Dir_Bloc_Notas)
Text_As_Tens.Text = .As_Tens
.As_Comp = LeerDatoMATRIZ(6, 1, Dir_Bloc_Notas)
Text_As_Comp.Text = .As_Comp
.fc_ = LeerDatoMATRIZ(7, 1, Dir_Bloc_Notas)
Text_fc.Text = .fc_
.fy_ = LeerDatoMATRIZ(8, 1, Dir_Bloc_Notas)
Text_fy.Text = .fy_
End With
Catch
MsgBox("No se cargaron los datos")
End Try
End Sub
Function Cuadratica(ByVal A_ As Single, ByVal B_ As Single, ByVal C_ As Single, Optional ByVal Positivo As Boolean = True) As Single
'funcion que devuelve la raiz de la ecuación.
'Ecuación de la forma: AX^2 + BX + C = 0
If Positivo = True Then
Cuadratica = (-B_ + Sqrt(B_ ^ 2 - 4 * A_ * C_)) / (2 * A_)
Else
Cuadratica = (-B_ - Sqrt(B_ ^ 2 - 4 * A_ * C_)) / (2 * A_)
End If
End Function
End Class
No tienes los permisos requeridos para ver los archivos adjuntos a este mensaje.
-
- Usuario Principiante
- Mensajes: 13
- Registrado: Lun Ago 24, 2009 10:15 pm
me serviria mucho...andaba buscando esto
-
- Usuario Principiante
- Mensajes: 14
- Registrado: Jue Jun 16, 2005 5:50 am
- Ubicación: barcelona
Hola. Buen aporte seria excelente loq ue propones, me gustaria enviarte el flujograma para calcular plnachas metalicas. Saludos .mi correo es gilbellys@hotmail.com
- brgallegos
- Usuario Master 1
- Mensajes: 298
- Registrado: Mié Sep 22, 2004 3:58 pm
- Ubicación: Loja
- Contactar:
Excelente programa te propongo si lo puedes modificar para hallas la capacidad pero utilizando capas de acero tanto inferior como superior
- IngenieroJB
- Usuario Principiante
- Mensajes: 13
- Registrado: Mar Mar 03, 2009 10:51 am
- Ubicación: Cartagena
Excelente, siento ausentarme por mucho tiempo, pero ya volví.... me gusta tu actitud... gracias amigo....Gilbellys escribió:Hola. Buen aporte seria excelente loq ue propones, me gustaria enviarte el flujograma para calcular plnachas metalicas. Saludos .mi correo es gilbellys@hotmail.com
Si, si lo puedo modificar, ya estoy en eso ^_^brgallegos escribió:Excelente programa te propongo si lo puedes modificar para hallas la capacidad pero utilizando capas de acero tanto inferior como superior
Cuando lo termine, lo publico...
saludos...
-
- Similar Topics
- Respuestas
- Vistas
- Último mensaje
-
- 0 Respuestas
- 408 Vistas
-
Último mensaje por wilmer BC
-
- 0 Respuestas
- 1224 Vistas
-
Último mensaje por proceso99
-
- 0 Respuestas
- 713 Vistas
-
Último mensaje por llastra
-
- 0 Respuestas
- 1226 Vistas
-
Último mensaje por Alfresevi90
-
- 0 Respuestas
- 1347 Vistas
-
Último mensaje por spraytopografico