Interfaz COM en VBA | 2.1 Creación de una barra

Artículo técnico

Este artículo fue traducido por el Traductor de Google

Ver texto original

La primera parte de la serie de artículos sobre la interfaz COM describió la apertura y creación de un modelo en RFEM. La segunda parte explica la creación y modificación de elementos en un ejemplo de una barra. Los elementos que se describen en la parte 1 no se explicarán aquí de nuevo.

Primario

Un miembro en RFEM consta de varios elementos que son más o menos dependientes entre sí. Si falta uno de estos elementos, no se puede crear el miembro. Se debe respetar la siguiente estructura.

Figura 01 - Jerarquía de elementos de un miembro

Para poder crear dicho elemento, debe obtener la interfaz para los datos estructurales:

'Obtener interfaz para datos del modelo.
Dim iModelData As iModelData

Conjunto iModelData = iModel.GetModelData ()

Esta interfaz le permite finalmente transferir los datos a RFEM.

Modo de edición

Una vez que los datos en RFEM deben modificarse o crearse, RFEM debe cambiarse al modo de edición. Por ejemplo, no es posible realizar ningún cálculo en este modo, y los datos transferidos solo están disponibles después de salir del modo. Es necesario utilizar el método PrepareModification () para cambiar al modo de edición y FinishModification () para salir del modo:

'Transferir elementos al modo de edición.
iModelData.PrepareModification
'...
iModelData.FinishModification

Crear elementos

El objetivo es crear un miembro de la sección IPE 100 y el acero estructural S235 desde el punto P0 (0,0,0) hasta el punto P1 (1,0,0). Primero, es necesario crear nodos. En el siguiente ejemplo, se utiliza una matriz, ya que representa la mayor flexibilidad para modificaciones adicionales del programa:

'Crear nodos.
Dim nodeList (0 Hasta 1)As RFEM5.Node
nodeList (0) .RefObjectNo = 0
nodeList (0) .No = 1
nodeList (0) .X = 0 #
nodeList (0) .Y = 0 #
nodeList (0) .Z = 0 #

nodeList (1) .RefObjectNo = 0
nodeList (1) .No = 2
nodeList (1) .X = 1 #
nodeList (1) .Y = 0 #
nodeList (1) .Z = 0 #

iModelData.PrepareModification
iModelData.SetNodes nodeList
iModelData.FinishModification

Como ya se mencionó anteriormente, la matriz que incluye los datos del nodo se transfiere mediante los métodos PrepareModification () y FinishModification (). Para la numeración, el siguiente hecho es importante: Cuando se va a transferir un nuevo elemento que ya incluye los números de referencia, los elementos existentes no se sobrescriben, pero el elemento se agrega al final de la lista. Si introduce un cero, el elemento se establece automáticamente en la siguiente ubicación libre.

El proceso de creación de líneas es similar, con la pequeña diferencia de referirse a los nodos, por supuesto. La lista de nodos se transfiere como una cadena exactamente como en RFEM:

'Crear líneas.
Dim lineList (0 Hasta 0) As RFEM5.Line
lineList (0) .nodeList = "1,2"
lineList (0) .Type = LineType.PolylineType

'Transferir elementos al modo de edición.
iModelData.PrepareModification
iModelData.SetLines lineList
iModelData.FinishModification

Modificar elementos

Para crear una sección, primero es necesario crear un material. En un nuevo modelo RFEM, los materiales del modelo creado previamente siempre se usan primero. Para asegurarse de que se utiliza el material relevante, debe eliminar o cambiar todos los materiales existentes. Eliminar todos los materiales existentes y crear un nuevo material es la forma más fácil en este caso. A diferencia de la creación de nuevos elementos, la interfaz de los elementos individuales debe activarse en caso de eliminación o modificación. Los pasos son los siguientes:

'Obtener el número de materiales existentes.
Dim num Como entero
num = iModelData.GetMaterialCount

'Bucle sobre materiales existentes.
iModelData.PrepareModification
Dim IComo entero
Para i = 0Hasta num - 1
'Obtener interfaz con el material.
Dim iMat As RFEM5.Material
Conjunto iMat = iModelData.GetMaterial (i, AtIndex)
'Eliminar material.
iMat.Delete
Siguiente I
iModelData.FinishModification

Puede obtener la interfaz de un material mediante el número de material relevante (AtNo) o mediante el índice en la lista de todos los materiales. A diferencia del número de material, el índice comienza en cero y no tiene huecos.

Miembro final

Después de eliminar todos los materiales, puede crear un nuevo material. Al igual que en RFEM, aquí también es posible transferir directamente el material de la biblioteca de materiales mediante su nombre. Para esto, la cadena correspondiente se ingresa utilizando la propiedad TextID (para más detalles, ver RF ‑ COM 5.chm en SDK):

'Crear nuevo material desde la biblioteca de materiales.
Dim esteras (0 Hasta 0) As RFEM5.Material
esteras (0) .TextID = "NameID | Steel S 235 @ TypeID | STEEL @ StandardID | DIN EN 1993-1-1-10"
esteras (0) .No = 1

'Transferir elementos al modo de edición.
iModelData.PrepareModification
Alfombras iModelData.SetMaterials
iModelData.FinishModification
Se crea una sección transversal de la misma manera que el material. Además, se especifica el número de material:
'Crear una nueva sección de la biblioteca.
Dim crs (0 Hasta 0) As RFEM5.CrossSection
crs (0) .TextID = "IPE 100"
crs (0) .MaterialNo = 1
crs (0) .No = 1

'Transferir elementos al modo de edición.
iModelData.PrepareModification
iModelData.SetCrossSections crs
iModelData.FinishModification
Como se han creado todos los elementos del miembro, el miembro se puede transferir ahora:
'Crear nuevo miembro.
Dim mems (0 Hasta 0) As RFEM5.Miembro
mems (0) .LíneaNo = 1
mems (0) .StartCrossSectionNo = 1
mems (0) .No = 1

'Transferir elementos al modo de edición.
iModelData.PrepareModification
iModelData.SetMembers mems
iModelData.FinishModification

Al igual que en RFEM, aquí también es suficiente especificar la sección al inicio del miembro. No es necesario crear una versión final de miembro, ya que se supone automáticamente que es rígida.

Optimización

Hasta ahora, el modo de edición se ha recuperado para cada elemento individualmente. Para aumentar la velocidad de procesamiento de datos, puede transferir todos los elementos dentro de un modo de edición, Las excepciones son la eliminación de materiales y la creación de nuevos materiales. En este caso, debe usar dos bloques separados, ya que no es posible eliminar y crear elementos dentro de un bloque:

'Eliminar elementos en modo edición.
iModelData.PrepareModification
Dim IComo entero
Para i = 0Hasta num - 1
'Obtener interfaz con el material.
Dim iMat As RFEM5.Material
Conjunto iMat = iModelData.GetMaterial (i, AtIndex)
'Eliminar material.
iMat.Delete
Siguiente I
iModelData.FinishModification

'Transferir elementos al modo de edición.
iModelData.PrepareModification

iModelData.SetNodes nodeList
iModelData.SetLines lineList
Alfombras iModelData.SetMaterials
iModelData.SetCrossSections crs
iModelData.SetMembers mems

iModelData.FinishModification

Resumen y vista general

Los procedimientos explicados en este artículo son la base de todos los elementos estructurales que se pueden transferir a través de COM. Una excepción son los lanzamientos de miembros no lineales o los apoyos nodales que incluyen anidamiento adicional. Estos elementos se explicarán en los siguientes artículos de esta serie.

Descargas

Enlaces

Contacte con nosotros

¿Tiene preguntas o necesita asesoramiento?
Contacte con nosotros a través de nuestro servicio de asistencia gratuito por correo electrónico, chat o fórum, o encuentre varias soluciones sugeridas y consejos útiles en nuestra página de preguntas más frecuentes (FAQ).

+34 911 438 160

info@dlubal.com

RFEM Programa principal
RFEM 5.xx

Programa principal

Software de ingeniería estructural de análisis por elementos finitos (AEF) para sistemas estructurales planos o espaciales compuestos de barras, placas, muros, láminas, sólidos y elementos de contacto

Precio de la primera licencia
3.540,00 USD
RFEM Otros
RF-COM 5.xx

Módulo adicional

Interfaz programable (API) basada en tecnología COM

Precio de la primera licencia
580,00 USD