Interfaz COM en VBA | 2.1 Creando Miembro

Artículo técnico

La primera parte de la serie de artículos sobre la interfaz COM describe cómo abrir y crear un modelo en RFEM. La segunda parte explica cómo crear y modificar elementos en un ejemplo de un miembro. Los elementos descritos en la Parte 1 no se explicarán aquí nuevamente.

lo esencial

Una barra en RFEM consiste en varios elementos, que dependen más o menos unos de otros. Si falta uno de estos elementos, no se puede crear el pentagrama. La siguiente jerarquía debe ser observada.

1 - Jerarquía de elementos de un bastón.

Para poder crear un elemento de este tipo, la interfaz (Inglés: Interfaz) para los datos estructurales (Inglés: Datos estructurales) debe ser recuperada:

' Interface für Modelldaten holen.
Dim iModelData As iModelData
Set iModelData = iModel.GetModelData()

Esta interfaz finalmente permite la transferencia de datos a RFEM.

El modo de edición

Tan pronto como los datos se cambien o creen en RFEM, RFEM se debe cambiar a un modo de procesamiento. En este modo, por ejemplo, no se puede realizar ningún cálculo y los datos transferidos también están disponibles solo después de la terminación. Para cambiar al procesamiento, se debe usar el método PrepareModification () y para dejar FinishModification ():

' Elemente im Bearbeitungsmodus übergeben.
iModelData.PrepareModification
' ...
iModelData.FinishModification

Crear elementos

El objetivo es producir una varilla con la sección IPE 100, acero estructural S235, desde el punto P0 (0,0,0) hasta el punto P1 (1,0,0). Para esto, primero se deben crear los nodos. El siguiente ejemplo utiliza una matriz porque proporciona la mayor flexibilidad para futuros cambios de programa:

' Knoten anlegen.
Dim nodeList(0 To 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 se mencionó anteriormente, la matriz de datos de nodo luego se pasa dentro de los métodos PrepareModification () y FinishModification (). El siguiente hecho es importante para la numeración: si un elemento nuevo se transfiere y el número especificado allí ya existe, entonces los elementos existentes no se sobrescriben, pero el elemento se anexa al final de la lista. Al ingresar un cero, el elemento se establece automáticamente en la siguiente vacante.

La creación de las líneas es análoga a la pequeña diferencia de que aquí, por supuesto, se debe hacer referencia a los nodos. La lista de nodos se pasa como una cadena, al igual que en RFEM:

' Linien anlegen.
Dim lineList(0 To 0) As RFEM5.Line
lineList(0).nodeList = "1,2"
lineList(0).Type = LineType.PolylineType

' Elemente im Bearbeitungsmodus übergeben.
iModelData.PrepareModification
iModelData.SetLines lineList
iModelData.FinishModification

Cambiar elementos

La creación de la sección transversal primero requiere la creación del material. En un nuevo modelo RFEM, los materiales del último modelo creado siempre se usan primero. Para asegurarse de que se utiliza el material deseado, primero se deben eliminar o cambiar todos los materiales existentes. La eliminación de todos los materiales existentes y la creación de un nuevo material es la forma más fácil. En contraste con la creación de nuevos elementos, al eliminar o cambiar, se debe abordar la interfaz de los elementos individuales. Para ello, proceda de la siguiente manera:

' Anzahl der vorhandenen Materialien holen.
Dim num As Integer
num = iModelData.GetMaterialCount

' Schleife über vorhandene Materialien.
iModelData.PrepareModification
DimAs Integer
For i = 0 To num - 1
' Schnittstelle zum Material holen.
Dim iMat As RFEM5.IMaterial
Set iMat = iModelData.GetMaterial(i, AtIndex)
' Material löschen.
iMat.Delete
Next i
iModelData.FinishModification

La interfaz de un material se recupera mediante su número de material (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 espacios.

Personal de acabado

Ahora que se han eliminado todos los materiales, se puede crear un nuevo material. Al igual que en RFEM, el material también puede dirigirse directamente desde la biblioteca de materiales por su nombre. Para hacer esto, ingrese la cadena de caracteres correspondiente usando la propiedad TextID (para más detalles, vea RF-COM-5.chm en el SDK):

' Neues Material aus Bibliothek anlegen.
Dim mats(0 To 0) As RFEM5.Material
mats(0).TextID = "NameID|Baustahl S 235@TypeID|STEEL@NormID|DIN EN 1993-1-1-10"
mats(0).No = 1

' Elemente im Bearbeitungsmodus übergeben.
iModelData.PrepareModification
iModelData.SetMaterials mats
iModelData.FinishModification
Ebenso wie das Material wird auch der Querschnitt angelegt. Zusätzlich wird noch die Materialnummer angegeben:
' Neuen Querschnitt aus Bibliothek anlegen.
Dim crs(0 To 0) As RFEM5.CrossSection
crs(0).TextID = "IPE 100"
crs(0).MaterialNo = 1
crs(0).No = 1

' Elemente im Bearbeitungsmodus übergeben.
iModelData.PrepareModification
iModelData.SetCrossSections crs
iModelData.FinishModification
Da nun alle Elemente für den Stab angelegt wurden, kann jetzt der Stab übergeben werden:
' Neuen Stab anlegen.
Dim mems(0 To 0) As RFEM5.Member
mems(0).LineNo = 1
mems(0).StartCrossSectionNo = 1
mems(0).No = 1

' Elemente im Bearbeitungsmodus übergeben.
iModelData.PrepareModification
iModelData.SetMembers mems
iModelData.FinishModification

Al igual que con RFEM, la especificación de la sección transversal al principio de la barra es suficiente y no es necesario crear la unión del extremo de la barra, pero se asume automáticamente que es rígida.

optimización

Anteriormente, el modo de edición se llamaba para cada lista de elementos individualmente. Para aumentar la velocidad de procesamiento, puede pasar todos los elementos dentro de un modo de edición. Las excepciones son la eliminación de los materiales y la creación del nuevo material. Aquí se deben usar dos bloques separados porque los elementos no se pueden eliminar ni crear dentro de un bloque:

' Elemente im Bearbeitungsmodus löschen.
iModelData.PrepareModification
DimAs Integer
For i = 0 To num - 1
' Schnittstelle zum Material holen.
Dim iMat As RFEM5.IMaterial
Set iMat = iModelData.GetMaterial(i, AtIndex)
' Material löschen.
iMat.Delete
Next i
iModelData.FinishModification

' Elemente im Bearbeitungsmodus übergeben.
iModelData.PrepareModification

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

iModelData.FinishModification

Resumen y perspectivas

Los procedimientos presentados forman la base de todos los elementos estructurales que pueden abordarse a través de COM. Una excepción son las juntas de extremo de varilla no lineales o los cojinetes nodales, que contienen nidos adicionales. Por este motivo, las próximas aportaciones abordarán estos elementos.

Descargas

Enlaces

Contacte con nosotros

Contacte con Dlubal Software

¿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