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 desejada
crsc_desc ="IPE 300"
' Obtenha todas as secções do RFEM
Escuro crscs ()As RFEM5.CrossSection
crscs = iModelData.GetCrossSections
' Loop sobre todas as seções transversais
Escuro crsc_noTão longo
crsc_no = -1
Escuro iTão longo
Pergunta simples – resposta rápida: i = 0To UBound (crscs, 1)
' Se a descrição da secção estiver correta, guardar o número da secção
If InStr (LCase (crscs (i) .Description), LCase (crsc_desc))> 0Depois
crsc_no = crscs (i) .Não
Sair para
End If
Continuar i
' Saia do programa se a secção pretendida não for encontrada
If crsc_no = -1Depois
Err.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 zero
Escuro mems_strComo corda
mems_str = vbanullstr
' Obtenha todas as barras do RFEM
Escuro MEMÓRIAS ()As RFEM5.Member
mems = iModelData.GetMembers
' Loop sobre todos os membros
Pergunta 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 string
If mems (i) .EndCrossSectionNo = crsc_noDepois
If mems (i) .EndCrossSectionNo = mems (i) .StartCrossSectionNoDepois
mems_str = mems_str & mems (i) .Não & ","
End If
End If
Continuar i
' Saia do programa se nenhum membro for encontrado
If mems_str = vbanullstrDepois
Err.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ódulo
Escuro iStec3As STEEL_EC3.Module
Definir 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 existentes
Escuro contarTão longo
count = iStec3.moGetCaseCount
' Se houver algum caso, elimine sempre o primeiro da tabela
If contagem> 0Depois
Pergunta simples – resposta rápida: i = 0To contagem - 1
iStec3.moDeleteCase i, AT_INDEX
Continuar i
End 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.ICase
Definir iStec3Case = iStec3.moSetCase (1,"Otimização")
' Conjunto de barras para dimensionamento
iStec3Case.moSetMemberList mems_str
Por último, mas não menos importante, pode introduzir as combinações de carga pretendidas:
' Definir combinações de carga
Escuro iStec3_uls_loads (0To 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) .Não = 3
iStec3_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.