O software de cálculo estrutural RFEM 6 é a base de um sistema de software composto por módulos. O programa principal RFEM 6 é utilizado para definir estruturas, materiais e ações para sistemas estruturais planos e espaciais constituídos por lajes, paredes, cascas e barras. O programa também permite criar estruturas combinadas, bem como modelar sólidos e elementos de contacto.
O RSTAB 9 é um programa de cálculo de estruturas reticuladas e pórticos 3D que reflete o estado atual da tecnologia e ajuda os engenheiros de estruturas a cumprir os requisitos da engenharia civil moderna.
Costuma perder muito tempo a calcular secções? A Dlubal Software e o programa autónomo RSECTION facilitam-lhe o trabalho determinando propriedades de secções e efetuando análises de tensões para diferentes secções.
Sabe sempre de onde vem o vento? Da direção da inovação, é claro! Com o RWIND 2, dispõe de um programa que utiliza um túnel de vento digital para a simulação numérica de fluxos de vento. O programa fornece estes fluxos em torno de eventuais geometrias de edifícios e determina as cargas de vento nas superfícies.
Procura uma vista geral de zonas de cargas de neve, velocidades de vento e cargas sísmicas? Então, está no sítio certo. Os mapas de zonas de carga são adequados para a determinação rápida e fácil de cargas de neve, velocidades de vento e cargas sísmicas de acordo com o Eurocódigo e outras normas internacionais.
Gostaria de experimentar o poder dos programas da Dlubal Software? Esta é a sua oportunidade! Com a versão completa gratuita de 90 dias, pode testar exaustivamente todos os nossos programas.
A rotação de um apoio de nó é definida por meio de um sistema de coordenadas definido pelo utilizador. No exemplo a seguir, um apoio de nó é rodado 45° sobre o eixo z. Não é necessário definir um novo sistema de coordenadas através de nós. Neste caso, é suficiente utilizar a opção RotatedSystemType, que permite uma rotação espacial do apoio através de três rotações em torno dos eixos x, y e z. A rotação é introduzida em radianos:
Sub test_nodal_support()Dim iApp As RFEM5.ApplicationSet iApp = GetObject(, "RFEM5.Application")iApp.LockLicenseDim iMod As RFEM5.IModel3Set iMod = iApp.GetActiveModelOn Error GoTo e' get interface of modeldataDim iModData As RFEM5.IModelData2Set iModData = iMod.GetModelData' get interface of nodal supportDim iNs As RFEM5.INodalSupportSet iNs = iModData.GetNodalSupport(1, AtNo)' get nodal support dataDim ns As RFEM5.NodalSupportns = iNs.GetData' modify datans.ReferenceSystem = UserDefinedSystemTypens.UserDefinedReferenceSystem.Axis1 = AxisXns.UserDefinedReferenceSystem.Axis2 = AxisYns.UserDefinedReferenceSystem.Type = RotatedSystemTypens.UserDefinedReferenceSystem.RotationAngles.X = 0ns.UserDefinedReferenceSystem.RotationAngles.Y = 0ns.UserDefinedReferenceSystem.RotationAngles.Z = 45 * 3.14159265359 / 180' set nodal support dataiModData.PrepareModificationiNs.SetData nsiModData.FinishModificatione:If Err.Number <> 0 Then MsgBox Err.description, vbCritical, Err.SourceiMod.GetApplication.UnlockLicenseSet iMod = NothingEnd Sub
O programa retira o apoio de nó existente do modelo atualmente aberto e modifica-o. Uma vez que o sistema de coordenadas definido pelo utilizador não faz diretamente parte da interface INodalSupport do apoio de nó, a rotação também pode ser transferida ao criar um apoio de nó.
Os parâmetros de cálculo de um caso de carga não podem ser definidos inicialmente ao criá-lo, mas apenas depois através da interface de um caso de carga existente. Para obter a interface de um caso de carga, tem de obter primeiro as interfaces 'IModel' e 'ILoads':
Sub test_analysis_parameters()Dim iApp As RFEM5.ApplicationSet iApp = GetObject(, "RFEM5.Application")iApp.LockLicenseDim iMod As RFEM5.IModel3Set iMod = iApp.GetActiveModelOn Error GoTo e' get interface of loadsDim iLds As RFEM5.iLoadsSet iLds = iMod.GetLoads' get interface of load caseDim iLc As RFEM5.ILoadCaseSet iLc = iLds.GetLoadCase(1, AtNo)' get analysis parametersDim param_analy As RFEM5.AnalysisParametersparam_analy = iLc.GetAnalysisParameters' change analysis parametersparam_analy.Method = Postcriticalparam_analy.ModifyLoadingByFactor = Trueparam_analy.LoadingFactor = 1.5' ...' set new analysis parametersiLds.PrepareModificationiLc.SetAnalysisParameters param_analyiLds.FinishModificatione:If Err.Number <> 0 Then MsgBox Err.description, vbCritical, Err.SourceiMod.GetApplication.UnlockLicenseSet iMod = NothingEnd Sub
Utilize 'ILoads.GetLoadcase' para obter a interface para um caso de carga específico. Esta interface disponibiliza as funções 'GetAnalysisParameters' e 'SetAnalysisparameters' com as quais os parâmetros podem ser lidos e escritos.
Este mesmo procedimento também pode ser utilizado para combinações de carga.
Para eliminar elementos, existe a função "DeleteObjects()" na interface de dados do modelo. A eliminação de todas as barras tem o seguinte aspeto:
Tenha em atenção que a função "DeleteObjects" apenas funciona com o número do objeto e não com o índice do objeto. Esses números são transferidos como uma cadeia de caracteres separada por vírgulas.
Por esse motivo, foi necessário, primeiro, ir buscar todas as barras. Em seguida, o campo de barra foi executado em ciclo e todos os números da barra foram introduzidos na cadeia de caracteres.
As deformações das barras podem ser lidas através da função "GetMemberDeformations()", por exemplo. Esta função espera um número, o tipo de método de contagem para barras (número de barra/número na lista) e qual o sistema de coordenadas que deve ser utilizado. Pode selecionar se é utilizado o sistema de eixos local, o sistema de eixos principal ou o sistema de coordenadas global:
Sub test_results_member_axis()Dim iApp As RFEM5.ApplicationSet iApp = GetObject(, "RFEM5.Application")iApp.LockLicenseDim iMod As RFEM5.IModel3Set iMod = iApp.GetActiveModelOn Error GoTo e'get interface for calculationDim iCalc As RFEM5.ICalculation2Set iCalc = iMod.GetCalculation'get interface for resultsDim iRes As RFEM5.IResults2Set iRes = iCalc.GetResultsInFeNodes(LoadCaseType, 1)'get deformations in local coordinate systemDim memDefs_L() As RFEM5.MemberDeformationsmemDefs_L = iRes.GetMemberDeformations(1, AtNo, LocalMemberAxes)'get deformations in global coordinate systemDim memDefs_G() As RFEM5.MemberDeformationsmemDefs_G = iRes.GetMemberDeformations(1, AtNo, GlobalAxes)'get deformations in principal coordinate systemDim memDefs_P() As RFEM5.MemberDeformationsmemDefs_P = iRes.GetMemberDeformations(1, AtNo, LocalPrincipalAxes)e:If Err.Number <> 0 Then MsgBox Err.description, vbCritical, Err.SourceiMod.GetApplication.UnlockLicenseSet iMod = NothingEnd Sub
O programa pequeno lê as deformações locais (memDefs_L) nos eixos da barra e nos eixos principais (memDefs_P) e as deformações globais nos eixos da barra (memDefs_G).
Os parâmetros de um modelo podem ser modificados através da interface IModel (a partir de IModel3):
Sub test_parameter()Dim iApp As RFEM5.ApplicationSet iApp = GetObject(, "RFEM5.Application")iApp.LockLicenseDim j As Integerj = iApp.GetModelCountDim iMod As RFEM5.IModel3Set iMod = iApp.GetActiveModelOn Error GoTo eDim formParams() As RFEM5.FormulaParameter' get all formula parametersformParams = iMod.GetFormulaParameters' delete all formula parametersiMod.CleanFormulaParameters' set list of formula parametersReDim Preserve formParams(0 To UBound(formParams, 1) + 1)formParams(UBound(formParams, 1)).Name = "p"formParams(UBound(formParams, 1)).Unit = "m"formParams(UBound(formParams, 1)).UnitType = LengthUnitTypeformParams(UBound(formParams, 1)).Value = 0formParams(UBound(formParams, 1)).ValueType = DoubleTypeformParams(UBound(formParams, 1)).Comment = "new parameter"formParams(UBound(formParams, 1)).Formula = "b/3"formParams(UBound(formParams, 1)).RangeOfValues = "(3;5.5>"iMod.SetFormulaParameters formParamse:If Err.Number <> 0 Then MsgBox Err.description, vbCritical, Err.SourceiMod.GetApplication.UnlockLicenseSet iMod = NothingEnd Sub
Só é possível ler todos os parâmetros através da função GetFormulaParameters(). Os parâmetros modificados ou novos podem depois ser transferidos novamente como uma lista utilizando a função SetFormulaParameters(). Assim, nenhum parâmetro individual pode ser lido ou escrito.
Note que o valor "Value" relacionado com o seu tipo (ValueTyp) e a sua unidade (Unit) deve estar dentro dos limites definidos (RangeOfValues), caso contrário aparece uma mensagem de erro. Se o valor é calculado, como no exemplo, é irrelevante e o valor calculado com a fórmula (Formula) deve estar dentro dos limites, caso tenham sido definidos limites.
A opção "Ligar linhas/barras" pode ser implementada com as funções "ConnectLines()" e "ConnectMemembers()". Ambas as funções esperam uma cadeia com os números das linhas ou barras:
Sub test_connect()Dim iMod As RFEM5.modelSet iMod = GetObject(, "RFEM5.Model")iMod.GetApplication.LockLicenseOn Error GoTo eDim iModData As RFEM5.IModelData2Set iModData = iMod.GetModelData()iModData.PrepareModificationiModData.ConnectLines ("3,4")iModData.ConnectMembers ("1,2")iModData.FinishModificatione:If Err.Number <> 0 Then MsgBox Err.description, vbCritical, Err.SourceiMod.GetApplication.UnlockLicenseSet iMod = NothingEnd Sub
Neste exemplo, são ligadas as linhas 1 e 2 e é criado um nó no ponto de intersecção. O mesmo se aplica às barras 1 e 2, onde também é criado um novo nó no ponto de intersecção.
Os fatores para os comprimentos efetivos são transferidos utilizando a interface para a barra (IMember), nomeadamente a SetEffectiveLengths(). Utilize GetEffectiveLengths() para ler os dados:
// get interface to running RFEM application.iApp = Marshal.GetActiveObject("RFEM5.Application") as IApplication;iApp.LockLicense();// get interface to active RFEM model.iModel = iApp.GetActiveModel();// get interface to model data.IModelData2 iModData = iModel.GetModelData() as IModelData2;// get interface to member 1IMember iMem = iModData.GetMember(1, ItemAt.AtNo);MemberEffectiveLengths memEffLen = iMem.GetEffectiveLengths();memEffLen.No = 1;memEffLen.CheckBucklingLoad = true;memEffLen.Enabled = true;memEffLen.FactorU = 1.1;memEffLen.FactorV = 1.2;memEffLen.FactorY = 1.3;memEffLen.FactorZ = 1.4;// set new effective lengths dataiModData.PrepareModification();iMem.SetEffectiveLengths(memEffLen);iModData.FinishModification();
Tenha em atenção que apenas é possível ler as propriedades para os comprimentos efetivos (por exemplo, EffectiveLengthY) da estrutura MemberEffectiveLengths e as propriedades CriticalBucklingLoad.