1023x
001571
2020-07-20

[ES] KB 001639 | Transformación de un nervio en un modelo de superficie con viga de resultados utilizando VBA

Tema:
Transformación de un nervio en un modelo de superficie con viga de resultados utilizando VBA

Por favor, tenga en cuenta:
Si un nervio es parte de un cálculo no lineal o está conectado rígidamente a los muros siguientes, para el modelado se debe usar una superficie en lugar de una barra. Para que el nervio se pueda diseñar todavía como una barra, se necesita una barra de resultados con la excentricidad correcta, la cual transforma los esfuerzos internos de la superficie en esfuerzos internos de la barra.

Descripción:
Ya que el modelado de dicho nervio basado en una superficie con la viga de resultados es bastante más complicado que crear un elemento del tipo nervio, el siguiente programa en EXCEL-VBA convertirá el nervio basado en una barra en un modelo de superficie incluyendo la viga de resultados.

Para transformar un nervio en un modelo de superficie, son necesarios los siguientes pasos:

1.
Leer los parámetros del nervio (sección, orientación, etc.)

  1. 2.

Crear la superficie del nervio

  1. 3.

crear viga de resultados

  1. 4.

Eliminar la barra del nervio

A continuación, mostraremos extractos del código fuente completo como ejemplos. Puede descargar el código completo al final de este artículo.

Leer los parámetros del nervio

Tiene la opción de seleccionar el nervio a transformar seleccionándolo desde la interfaz del programa. Para esto, es necesario trabajar con la función EnableSelections. Mientras EnableSelections esté activado con true, solo se leerán los elementos seleccionados de RFEM. La lectura de la barra seleccionada es la siguiente.

' get interface of active model
Set iMod = iApp.GetActiveModel

' get interface of (structural) model data
Dim iModData As RFEM5.IModelData2
Set iModData = iMod.GetModelData

' get selected member
iModData.EnableSelections True

Dim mems() As RFEM5.Member
Dim selMem As RFEM5.Member
mems = iModData.GetMembers
selMem = mems(0)

iModData.EnableSelections False

Se necesitan los siguientes parámetros para el modelado del nervio:

Sección del nervio, números de superficies y anchos eficaces
Orientación del nervio
Material del nervio

En RFEM, un nervio es un tipo de barra. Cuando utiliza la programación a través de la interfaz COM, debe obtener los datos de un nervio a través de dos interfaces diferentes. Por un lado, está la interfaz para la barra y, por otro lado, está la interfaz para el nervio. La interfaz con un nervio se puede obtener a través de IModelData.GetRib. GetRib espera el número de nervio contenido en la barra a través de Member.RibNo.

' get parameters of rib
' #####################
Dim iRb As RFEM5.IRib
Set iRb = iModData.GetRib(selMem.RibNo, AtNo)

Dim selRb As RFEM5.Rib
selRb = iRb.GetData

Dim rbCrsc As RFEM5.RibCrossSection
rbCrsc = iRb.GetRibCrossSection

La interfaz con el nervio ofrece dos elementos diferentes: los datos generales del nervio a través de la estructura y los datos de su sección a través de RibCrossSection. El nervio contiene los números de superficie, su posición y los anchos eficaces. RibCrossSection contiene la descripción y las dimensiones de la sección interna del nervio, que también se utiliza en RF-CONCRETE Members (ITCU).

Además, se necesita la orientación, que está disponible a través del sistema de ejes local de la barra. Puede acceder al sistema de ejes a través de la interfaz para la barra. La función IMemer.GetLocalCoordinateSystem devuelve la estructura CoordinateSystem.

Dim cosy As RFEM5.CoordinateSystem
cosy = iModData.GetMember(selMem.no, AtNo).GetLocalCoordinateSystem(0#).GetData

GetLocalCoordinateSystem todavía espera la posición x de la barra, que se ha establecido en 0,0 o el inicio aquí. Además de los parámetros mencionados, también se requiere el material de la barra, que se puede obtener a través de su sección transversal.

Dim selCrsc As RFEM5.CrossSection
selCrsc = iModData.GetCrossSection(selMem.StartCrossSectionNo, AtNo).GetData

Crear la superficie del nervio

El programa está creado inicialmente para nervios rectos en el lado z positivo. Ya que el nervio también puede estar en planos oblicuos, debe crear la superficie utilizando la orientación de la barra. La variable cosy para el sistema de ejes local de la barra incluye el vector de dirección para el eje z cosy.AxisZ local con sus tres valores x, y, z. Este vector se normaliza de forma que, multiplicado por la altura del nervio, indica la distancia y dirección del borde inferior del nervio. Para las líneas de contorno de la superficie del nervio, este vector se multiplica por su altura y se agrega al nudo inicial y final. Esto da como resultado los dos nudos extremos de la línea de borde inferior de la superficie del nervio. Tenga en cuenta lo siguiente: la altura del nervio también incluye la mitad del espesor de la superficie del ancho eficaz. Para simplificar, solo se usa el espesor de la superficie del primer lado (-y en el sistema de ejes local) desde la sección del nervio (UpperLeftFlangeThickness). Después de que los nudos estén disponibles, puede generar el contorno...