Interfaz COM en VBA | 4.1 Optimización de cuadros

Artículo técnico

Las partes 4.1 y 4.2 de la serie tratan sobre la optimización de un marco con la ayuda del módulo adicional RF- / STEEL EC3. La quinta parte cubre la conexión del módulo y la recuperación de barras relevantes. Los elementos que ya han sido explicados en las partes anteriores no serán discutidos nuevamente.

Fig. 01 - Sistema

Filtrar las barras relevantes

El objetivo debe ser que solo las barras de una determinada sección transversal sean tomadas en el dimensionamiento del módulo EC3. Para el siguiente ejemplo, todas las barras con la sección transversal "IPE 300" se deben filtrar. Para este propósito, primero se obtienen todas las secciones transversales del programa principal:

' Zeichenkette des gewünschten Querschnitts anlegen
Dim crsc_desc As String
crsc_desc = "IPE 300"

' Alle Querschnitte aus RFEM holen
Dim crscs() As RFEM5.CrossSection
crscs = iModelData.GetCrossSections

' Schleife über alle Querschnitte
Dim crsc_no As Long
crsc_no = -1
DimAs Long
For i = 0 To UBound(crscs, 1)
' Wenn die Querschnittsbezeichung stimmt, Querschnittsnummer speichern
If InStr(LCase(crscs(i).Description), LCase(crsc_desc)) > 0 Then
crsc_no = crscs(i).No
Exit For
End If
Next i

' Programm beenden, wenn der gewünschte Querschnitt nicht gefunden wurde
If crsc_no = -1 Then
Err.Raise 513, "Get cross-section number" , "No cross-section with "" " & crsc_desc & " "" within its description found!"
End If

El ajuste de la designación de la sección transversal debe ser lo más general posible. Para este propósito, la designación de la sección transversal, así como la cadena de caracteres que se debe buscar, primero se establece en letras minúsculas a través de "LCase" y luego se busca la cadena de caracteres en la designación de la sección transversal. Si no se encontró una sección transversal coincidente, el número de la sección transversal permanece en -1, que luego puede consultarse y confirmarse con un aborto.

Después de este paso, se conoce el número de sección transversal y se pueden buscar las barras con este número de sección transversal. Solo deben tomarse las barras que tienen esta sección transversal al principio y al final:

' Zeichenkette für Stabliste anlegen und zu null setzen
Dim mems_str As String
mems_str = vbanullstr

' Alle Stäbe aus RFEM holen
Dim mems() As RFEM5.Member
mems = iModelData.GetMembers

' Schleife über alle Stäbe
For i = 0 To UBound(mems, 1)
' Wenn ein Stab diese Querschnittsnummer am Anfang und am Ende hat,
' dann wird dessen Nummer in die Zeichenkette übernommen
If mems(i).EndCrossSectionNo = crsc_no Then
If mems(i).EndCrossSectionNo = mems(i).StartCrossSectionNo Then
mems_str = mems_str & mems(i).No & ","
End If
End If
Next i

' Programm beenden, wenn kein Stab gefunden wurde
If mems_str = vbanullstr Then
Err.Raise 514, "Get members" , "No member with cross-section "" " & crsc_desc & " "" found!"
End If

Accede a la interfaz del módulo adicional.

La conexión a un módulo es como la conexión a RFEM o RSTAB. La única diferencia es que no hay distinción entre abrir una instancia ya abierta o abrir una nueva instancia, ya que siempre hay una instancia ya abierta:

' Interface für Modul holen
Dim iStec3 As STEEL_EC3.Module
Set iStec3 = iModel.GetModule( "STEEL_EC3" )

Als nächstes werden alle vorhandenen Modulfälle gelöscht:

' Anzahl der vorhandenen Modulfälle holen
Dim count As Long
count = iStec3.moGetCaseCount

' Falls Fälle vorhanden sind, immer den ersten in der Tabelle löschen
If count > 0 Then
For i = 0 To count - 1
iStec3.moDeleteCase i, AT_INDEX
Next i
End If

Luego, se puede crear el caso deseado y se pueden ingresar las barras para el diseño a través de la cadena creada anteriormente:

' Modulfall "Optimization" anlegen
Dim iStec3Case As STEEL_EC3.ICase
Set iStec3Case = iStec3.moSetCase(1, "Optimization" )

' Stäbe für Bemessung setzen
iStec3Case.moSetMemberList mems_str

Finalmente, se agregan las combinaciones de carga deseadas:

' Lastkombinationen setzen
Dim iStec3_uls_loads(0 To 2) As STEEL_EC3.ULS_LOAD

iStec3_uls_loads(0).DesignSituation = DS_FUNDAMENTAL
iStec3_uls_loads(0).No = 1
iStec3_uls_loads(0).Type = ILOAD_GROUP

iStec3_uls_loads(1).DesignSituation = DS_FUNDAMENTAL
iStec3_uls_loads(1).No = 2
iStec3_uls_loads(1).Type = ILOAD_GROUP

iStec3_uls_loads(2).DesignSituation = DS_FUNDAMENTAL
iStec3_uls_loads(2).No = 3
iStec3_uls_loads(2).Type = ILOAD_GROUP

iStec3Case.moSetULSLoads iStec3_uls_loads

Resumen y perspectivas

Los procedimientos presentados aquí son representativos de todos los módulos que se pueden controlar con COM. El código fuente y el archivo de Excel ayudan a entender el tema aún mejor. En el siguiente artículo, profundizaremos y crearemos el vínculo entre los elementos en el módulo y en el programa principal.

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 Estructuras de acero y aluminio
RF-STEEL EC3 5.xx

Módulo adicional

Cálculo de barras de barras de acero según Eurocódigo 3

Precio de la primera licencia
1.480,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