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 deseadacrsc_desc ="IPE 300"
' Obtener todas las secciones de RFEMDim crscs ()Is RFEM5.CrossSectioncrscs = iModelData.GetCrossSections
' Bucle sobre todas las seccionesDim crsc_noTan largocrsc_no = -1Dim iTan largoPara i = 0To UBound (crscs, 1) ' Si la descripción de la sección es correcta, guarde el número de la secciónIf InStr (LCase (crscs (i) .Description), LCase (crsc_desc))> 0Then crsc_no = crscs (i) .No Salir paraEnd IfSiguiente i
' Salga del programa si no se encuentra la sección deseadaIf crsc_no = -1ThenErr.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 ceroDim mems_strAs Stringmems_str = vbanullstr
' Obtener todos los miembros de RFEMDim mems ()Is RFEM5.Membermems = iModelData.GetMembers
' Hacer un bucle sobre todas las barrasPara 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 cadenaIf mems (i) .EndCrossSectionNo = crsc_noThenIf mems (i) .EndCrossSectionNo = mems (i) .StartCrossSectionNoThen mems_str = mems_str & mems (i) .No & ","End IfEnd IfSiguiente i
' Salir del programa si no se encuentra ningún miembroIf mems_str = vbanullstrThenErr.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óduloDim iStec3Is STEEL_EC3.ModuleConjunto 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 existentesDim contarTan largocount = iStec3.moGetCaseCount
' Si hay algún caso, siempre elimine el primero de la tablaIf cuenta> 0ThenPara i = 0To cuenta - 1 iStec3.moDeleteCase i, AT_INDEXSiguiente iEnd 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.ICaseConjunto iStec3Case = iStec3.moSetCase (1,"Optimización")
' Establecer barras para el diseñoiStec3Case.moSetMemberList mems_str
Por último, pero no menos importante, puede introducir las combinaciones de carga deseadas:
' Establecer combinaciones de cargaDim iStec3_uls_loads (0To 2)Is STEEL_EC3.ULS_LOAD
iStec3_uls_loads (0) .DesignSituation = DS_FUNDAMENTALiStec3_uls_loads (0) .No = 1iStec3_uls_loads (0) .Type = ILOAD_GROUP
iStec3_uls_loads (1) .DesignSituation = DS_FUNDAMENTALiStec3_uls_loads (1) .No = 2iStec3_uls_loads (1) .Type = ILOAD_GROUP
iStec3_uls_loads (2) .DesignSituation = DS_FUNDAMENTALiStec3_uls_loads (2) .No = 3iStec3_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.