2168x
001379
2016-12-20

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

Im ersten Teil der Serie ging es um das Öffnen und Erstellen eines Modells in RFEM. Im zweiten Teil soll es am Beispiel eines Stabes um das Anlegen und Verändern von Elementen gehen. Die Elemente aus Teil 1 werden daher nicht erneut angesprochen.

Fundamentos básicos

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.

Para poder crear este tipo de elementos, debe obtener la interfaz para los datos estructurales:

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

Conjunto iModelData = iModel.GetModelData ()

Esta interfaz le permite finalmente transferir los datos a RFEM.

Modo de edición

Una vez que se van a modificar o crear los datos en RFEM, se debe cambiar RFEM al modo de edición. Por ejemplo, es imposible realizar cálculos 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 una barra con la sección IPE 100 y acero estructural S235 desde el punto P0 (0,0,0) al 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 To 1)Is 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 se mencionó anteriormente, la matriz que incluye los datos del nudo se transfiere utilizando 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, sino que 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 nudos, por supuesto. La lista de nodos se transfiere como una cadena exactamente como en RFEM:

'Crear líneas.
Dim lineList (0 To 0) Is 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 se debe activar 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 = 0To num - 1
'Obtener interfaz con el material.
Dim iMat Is RFEM5.Material
Conjunto iMat = iModelData.GetMaterial (i, AtIndex)
'Eliminar material.
iMat.Delete
Siguiente i
iModelData.FinishModification

Puede obtener la interfaz de un material a través del 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.

Finalización de barra

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

'Crear nuevo material desde la biblioteca de materiales.
Dim esteras (0 To 0) Is 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 To 0) Is 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 To 0) Is 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 de la barra. No es necesario crear una liberación en el extremo de la barra, ya que se asume 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 es imposible eliminar y crear elementos dentro de un bloque:

'Eliminar elementos en modo edición.
iModelData.PrepareModification
Dim iComo entero
Para i = 0To num - 1
'Obtener interfaz con el material.
Dim iMat Is 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 forman la base para todos los elementos estructurales que se pueden transferir a través de COM. Las liberaciones de barras no lineales o los apoyos en nudo, que incluyen un anidamiento adicional, son excepciones. Estos elementos se explicarán en los siguientes artículos de esta serie.


Autor

El Sr. Günthel proporciona soporte técnico para los clientes de Dlubal Software y se ocupa de sus solicitudes.

Enlaces
Descargas


;