Filtrar barras relevantes
O objetivo é transferir apenas as barras de uma determinada secção para o dimensionamento do RF‑/STEEL EC3. No exemplo seguinte, todas as barras com a secção IPE 300 devem ser filtradas. Para isso, é necessário primeiro obter todas as secções do programa principal:
' Crie uma corda com a secção desejadacrsc_desc ="IPE 300"
' Obtenha todas as secções do RFEMEscuro crscs ()As RFEM5.CrossSectioncrscs = iModelData.GetCrossSections
' Loop sobre todas as seções transversaisEscuro crsc_noTão longocrsc_no = -1Escuro iTão longoPergunta simples – resposta rápida: i = 0To UBound (crscs, 1) ' Se a descrição da secção estiver correta, guardar o número da secçãoIf InStr (LCase (crscs (i) .Description), LCase (crsc_desc))> 0Depois crsc_no = crscs (i) .Não Sair paraEnd IfContinuar i
' Saia do programa se a secção pretendida não for encontradaIf crsc_no = -1DepoisErr.Raise 513, "Obter número da secção","Sem secção com" "" & crsc_desc &encontrado "" "dentro da sua descrição!"End If
A descrição da secção deve ser sincronizada o mais geralmente possível. Para isso, a descrição da secção, bem como o string a ser pesquisado, é definido primeiro com letras minúsculas através de "LCase" e, em seguida, o string é procurado na descrição da secção. Se não for encontrada uma secção adequada, o número da secção permanece em -1, o qual pode então ser solicitado e confirmado através de uma interrupção.
Após este passo, o número da secção é conhecido e as barras com este número de secção podem ser pesquisadas. Apenas a barra com esta secção no início e no final da barra deve ser adotada:
' Crie uma string para a lista de barras e defina-a como zeroEscuro mems_strComo cordamems_str = vbanullstr
' Obtenha todas as barras do RFEMEscuro MEMÓRIAS ()As RFEM5.Membermems = iModelData.GetMembers
' Loop sobre todos os membrosPergunta simples – resposta rápida: i = 0To UBound (memes, 1)' Se uma barra tem este número de secção no início e no final,' então pegue este número na stringIf mems (i) .EndCrossSectionNo = crsc_noDepoisIf mems (i) .EndCrossSectionNo = mems (i) .StartCrossSectionNoDepois mems_str = mems_str & mems (i) .Não & ","End IfEnd IfContinuar i
' Saia do programa se nenhum membro for encontradoIf mems_str = vbanullstrDepoisErr.Raise 514, "Conseguir membros","Nenhuma barra com secção" "" & crsc_desc &"" "encontrado!"End If
Obtendo a interface do módulo adicional
A ligação a um módulo é exatamente igual à ligação ao RFEM ou ao RSTAB. A única diferença é que não existe diferença entre abrir uma instância já aberta ou abrir uma nova instância, uma vez que existe sempre uma instância já aberta:
' Obter interface para o móduloEscuro iStec3As STEEL_EC3.ModuleDefinir iStec3 = iModel.GetModule ("STEEL_EC3")
Em seguida, todos os casos de módulo existentes são removidos:
' Obtenha o número de caixas de módulo existentesEscuro contarTão longocount = iStec3.moGetCaseCount
' Se houver algum caso, elimine sempre o primeiro da tabelaIf contagem> 0DepoisPergunta simples – resposta rápida: i = 0To contagem - 1 iStec3.moDeleteCase i, AT_INDEXContinuar iEnd If
Agora, pode criar o caso desejado e introduzir a barra a ser dimensionada utilizando a cadeia de caracteres criada anteriormente.
' Crie o caso do módulo ' Otimização 'Escuro iStec3CaseAs STEEL_EC3.ICaseDefinir iStec3Case = iStec3.moSetCase (1,"Otimização")
' Conjunto de barras para dimensionamentoiStec3Case.moSetMemberList mems_str
Por último, mas não menos importante, pode introduzir as combinações de carga pretendidas:
' Definir combinações de cargaEscuro iStec3_uls_loads (0To 2) As 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) .Não = 3iStec3_uls_loads (2) .Type = ILOAD_GROUP
iStec3Case.moSetULSLoads iStec3_uls_loads
Resumo and Outlook
Os procedimentos descritos neste artigo podem ser utilizados para todos os módulos que podem ser controlados pelo COM. O código-fonte e o ficheiro Excel ajudam a compreender melhor o assunto. No meu próximo artigo, gostaria de aprofundar este assunto e explicar a ligação entre os elementos no módulo e no programa principal.