Filtrado de miembros relevantes
El objetivo es transferir sólo las barras de una determinada sección al cálculo de RF-/STEEL EC3. En el siguiente ejemplo, se deben filtrar todas las barras con la sección IPE 300. Para esto, es necesario obtener primero todas las secciones del programa principal:
' Cree una cadena de una sección deseada
crsc_desc ="IPE 300"
' Obtener todas las secciones de RFEM
Dim crscs ()Is RFEM5.CrossSection
crscs = iModelData.GetCrossSections
' Bucle sobre todas las secciones
Dim crsc_noTan largo
crsc_no = -1
Dim iTan largo
Para i = 0To UBound (crscs, 1)
' Si la descripción de la sección es correcta, guarde el número de la sección
If InStr (LCase (crscs (i) .Description), LCase (crsc_desc))> 0Then
crsc_no = crscs (i) .No
Salir para
End If
Siguiente i
' Salga del programa si no se encuentra la sección deseada
If crsc_no = -1Then
Err.Raise 513, "Obtener número de sección","Sin sección con" "" & crsc_desc &"" "dentro de su descripción encontrada!"
End If
La descripción de la sección se debe sincronizar de la forma más general posible. Para esto, la descripción de la sección y la cadena que se va a buscar se establecen en minúsculas primero mediante "LCase" y luego se busca la cadena en la descripción de la sección. Si no se encuentra una sección adecuada, el número de la sección permanece en -1, que luego se puede solicitar y confirmar mediante una interrupción.
Después de este paso, se conoce el número de la sección y se pueden buscar las barras con este número de sección. Solo se debe adoptar la barra con esta sección al inicio y al final de la barra:
' Crear una cadena para la lista de barras y ponerla a cero
Dim mems_strAs String
mems_str = vbanullstr
' Obtener todos los miembros de RFEM
Dim mems ()Is RFEM5.Member
mems = iModelData.GetMembers
' Hacer un bucle sobre todas las barras
Para i = 0To UBound (notas, 1)
' Si una barra tiene este número de sección al principio y al final,
' luego tome este número en la cadena
If mems (i) .EndCrossSectionNo = crsc_noThen
If mems (i) .EndCrossSectionNo = mems (i) .StartCrossSectionNoThen
mems_str = mems_str & mems (i) .No & ","
End If
End If
Siguiente i
' Salir del programa si no se encuentra ningún miembro
If mems_str = vbanullstrThen
Err.Raise 514, "Obtener miembros","Ninguna barra con sección" "" & crsc_desc &"" "¡Encontrado!"
End If
Obtener la interfaz del módulo adicional
El enlace a un módulo es exactamente el mismo que el enlace a RFEM o RSTAB. La única diferencia es que no hay diferencia entre abrir una instancia ya abierta o abrir una nueva instancia, ya que siempre hay una instancia ya abierta:
' Obtener interfaz para el módulo
Dim iStec3Is STEEL_EC3.Module
Conjunto iStec3 = iModel.GetModule ("STEEL_EC3")
A continuación, se eliminan todos los casos de módulos existentes:
' Obtener el número de casos de módulos existentes
Dim contarTan largo
count = iStec3.moGetCaseCount
' Si hay algún caso, siempre elimine el primero de la tabla
If cuenta> 0Then
Para i = 0To cuenta - 1
iStec3.moDeleteCase i, AT_INDEX
Siguiente i
End If
Ahora, puede crear el caso deseado e introducir la barra a diseñar utilizando la cadena creada anteriormente.
' Cree el caso del módulo ' Optimización '
Dim iStec3CaseIs STEEL_EC3.ICase
Conjunto iStec3Case = iStec3.moSetCase (1,"Optimización")
' Establecer barras para el diseño
iStec3Case.moSetMemberList mems_str
Por último, pero no menos importante, puede introducir las combinaciones de carga deseadas:
' Establecer combinaciones de carga
Dim iStec3_uls_loads (0To 2)Is 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 perspectiva
Los procedimientos descritos en este artículo se pueden usar para todos los módulos que se pueden controlar mediante COM. El código fuente y el archivo de Excel ayudan a comprender mejor el tema. En mi próximo artículo, me gustaría profundizar en este tema y explicar el enlace entre los elementos en el módulo y en el programa principal.