Le logiciel de calcul de structure RFEM 6 constitue la base d'une famille de logiciels modulaires. Le logiciel de base RFEM 6 permet de définir la structure, les matériaux et les sollicitations de structures planes et spatiales composées de barres, plaques, voiles et coques. Vous pouvez aussi travailler sur des structures combinées constituées de solides et d'éléments de contact.
Grâce à RSTAB, l'ingénieur structure a accès à un logiciel de structures filaires 3D qui répond aux exigences du calcul de structure moderne et reflète l'état actuel des techniques de construction.
Vous passez souvent trop de temps à calculer des sections ? Les logiciels Dlubal et le programme autonome RSECTION vous facilitent la tâche en déterminant et en effectuant une analyse des contraintes pour différentes sections.
Savez-vous toujours d'où vient le vent ? Du côté de l'innovation, bien sûr ! Avec RWIND 2, vous disposez d'un programme utilisant une soufflerie numérique pour la simulation numérique des flux de vent. Le programme simule ces flux autour de n'importe quelle géométrie de bâtiment et détermine les charges de vent sur les surfaces.
Vous souhaitez obtenir un aperçu des zones de charge de neige, des zones de vent et des zones sismiques ? Si tel est le cas, vous êtes au bon endroit. Utilisez notre outil de géolocalisation pour déterminer rapidement et efficacement les zones de neige, de vent et de sismicité selon l'Eurocode et d'autres normes internationales.
Souhaitez-vous tester la puissance des logiciels Dlubal Software ? C'est votre chance ! Avec la version complète gratuite de 90 jours, vous pouvez tester l'ensemble de nos logiciels.
La rotation d'un appui nodal est effectuée à l'aide d'un système de coordonnées défini par l'utilisateur. Dans l'exemple suivant, un appui nodal est en rotation à 45 ° autour de l'axe z. Il n'est pas nécessaire de définir un nouveau système de coordonnées via les nœuds. Dans ce cas, il suffit d'utiliser l'option RotatedSystemType, qui permet une rotation spatiale de l'appui via les trois rotations autour des axes x, y et z. La rotation est entrée en radians :
Sous test_appui_nodal ()Dim iApp As RFEM5.ApplicationSet iApp = GetObject(, "RFEM5.Application")iApp.LockLicenseDim iMod As RFEM5.IModel3Set iMod = iApp.GetActiveModelOn Error GoTo e'obtenir l'interface des données du modèleDim iModData As RFEM5.IModelData2Set iModData = iMod.GetModelData'obtenir l'interface de l'appui nodalDim iNs comme RFEM5.INodalSupportDéfinir iNs = iModData.GetNodalSupport (1, AtNo)'obtenir les données de l'appui nodalDim ns As RFEM5.NodalSupportns = iNs.GetData'modifier les donnéesns.ReferenceSystem = UserDefinedSystemTypens.UserDefinedReferenceSystem.Axis1 = AxisXns.UserDefinedReferenceSystem.Axis2 = AxeYns.UserDefinedReferenceSystem.Type = RotatedSystemTypens.UserDefinedReferenceSystem.RotationAngles.X = 0ns.UserDefinedReferenceSystem.RotationAngles.Y = 0ns.UserDefinedReferenceSystem.RotationAngles.Z = 45 * 3,14159265359/180'obtenir les données de l'appui nodaliModData.PrepareModificationiNs.SetData nsiModData.FinishModificatione:If Err.Number <> 0 Then MsgBox Err.description, vbCritical, Err.SourceiMod.GetApplication.UnlockLicenseSet iMod = NothingEnd Sub
Le programme prélève l'appui nodal existant du modèle actuellement ouvert puis le modifie. Le système de coordonnées défini par l'utilisateur ne faisant pas directement partie de l'interface INodalSupport de l'appui nodal, la rotation peut également être transférée lors de la création d'un appui nodal.
Les paramètres de calcul d'un cas de charge ne peuvent pas être définis initialement lors de sa création, mais uniquement par la suite à l'aide de l'interface du cas de charge existant. Pour obtenir l'interface d'un cas de charge, vous devez d'abord avoir les interfaces « IModel » et « 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
Utilisez « ILoads.GetLoadcase » pour obtenir l'interface pour un cas de charge spécifique. Cette interface contient les fonctions « GetAnalysisParameters » et « SetAnalysisparameters », qui permettent de lire et d'écrire des paramètres.
La même procédure s'applique également aux combinaisons de charges.
La fonction « DeleteObjects() » est disponible dans l'interface de données du modèle et permet d'en supprimer des éléments. Les barres sont alors supprimées comme suit :
Veuillez noter que la fonction « DeleteObjects » ne fonctionne qu'avec le numéro d'objet et non avec l'index d'objet. Ces numéros sont transférés sous forme de chaîne et séparés par des virgules.
Pour cette raison, toutes les barres doivent d'abord être récupérées. Le champ des barres est ensuite exécuté dans une boucle et tous les numéros de barre sont entrés dans la chaîne.
Les déformations des barres peuvent être lues à l'aide de la fonction « GetMemberDeformations() », par exemple. Cette fonction attend un nombre, le type de méthode de comptage des barres (numéro de barre/numéro dans la liste) et le système de coordonnées à utiliser. Vous pouvez choisir d'utiliser le système d'axes local, le système d'axes principal ou le système de coordonnées 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'obtenir l'interface pour le calculDim iCalc As RFEM5.ICalculation2Set iCalc = iMod.GetCalculation'obtenir l'interface pour les résultatsDim iRes As RFEM5.IResults2Set iRes = iCalc.GetResultsInFeNodes(LoadCaseType, 1)'obtenir les déformations dans le système de coordonnées localDim memDefs_L() As RFEM5.MemberDeformationsmemDefs_L = iRes.GetMemberDeformations(1, AtNo, LocalMemberAxes)'obtenir les déformations dans le système de coordonnées globalDim memDefs_G() As RFEM5.MemberDeformationsmemDefs_G = iRes.GetMemberDeformations(1, AtNo, GlobalAxes)'obtenir les déformations dans le système de coordonnées principalDim 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
Le petit programme lit les déformations locales (memDefs_L) dans les axes de barre et les axes principaux (memDefs_P) et les déformations globales dans les axes de barre (memDefs_G).
Une charge thermique est un type de charge surfacique et est donc appliquée comme toutes les autres charges surfaciques. Pour ce faire, vous devez d'abord obtenir l'interface avec le modèle, puis avec les charges, puis avec le cas de charge spécial :
Sub surface_temp_load_test()'obtenir l'interface du modèle ouvert et verrouiller la licence/le programmeDim iModel As RFEM5.IModel3Set iModel = GetObject(, "RFEM5.Model")iModel.GetApplication.LockLicenseOn Error GoTo eDim iModelData en tant que RFEM5.IModelData2Set iModelData = iModel.GetModelDataDim iLoa As RFEM5.iLoadsSet iLoa = iModel.GetLoadsDim iLc As RFEM5.ILoadCaseSet iLc = iLoa.GetLoadCase(1, AtNo)Dim surfLoad As RFEM5.SurfaceLoadsurfLoad.no = 1surfLoad.Type = TemperatureTypesurfLoad.Distribution = UniformTypesurfLoad.SurfaceList = "1"surfLoad.Magnitude1 = 10surfLoad.Magnitude4 = 40iLc.PrepareModificationiLc.SetSurfaceLoad surfLoadiLc.FinishModificatione: If Err.Number <> 0 Then MsgBox Err.description, , Err.SourceSet iModelData = NothingiModel.GetApplication.UnlockLicenseSet iModel = NothingEnd Sub
Pour une charge à température constante, les paramètres Magnitude1 et Magnitude4 sont utilisés, où Tc est Magnitude1 et dT est Magnitude4. Si une charge variable est appliquée, Magnitude2 et Magnitude3 sont utilisées pour les autres points de coin pour Tc et Magnitude5 et Magnitude6 pour dT.
Les paramètres d'un modèle peuvent être modifiés à l'aide de l'interface IModel (depuis 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' obtenir tous les paramètres de la formuleformParams = iMod.GetFormulaParameters' supprimer tous les paramètres de formuleiMod.CleanFormulaParameters' définir la liste des paramètres de formuleReDim 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
Il est uniquement possible de lire tous les paramètres à l'aide de la fonction GetFormulaParameters(). Les paramètres modifiés ou nouveaux peuvent ensuite être à nouveau transférés sous forme de liste à l'aide de la fonction SetFormulaParameters (). Ainsi, aucun paramètre individuel ne peut être lu ou écrit.
Il est à noter que la « Valeur » relative à son type (ValueTyp) et à son unité (Unit) doit être dans les limites définies (RangeOfValues), sinon un message d'erreur apparaît. Si la valeur est calculée, comme dans l'exemple, cela n'est pas pertinent et la valeur calculée avec la formule (Formula) doit être dans les limites, si les limites sont définies.
L'option « Connecter les lignes/barres » peut être implémentée à l'aide des fonctions « ConnectLines () » et « ConnectMembers () ». Les deux fonctions attendent une chaîne avec les numéros des lignes ou des barres :
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
Im Beispiel werden somit die Linien 1 und 2 verbunden und ein Knoten am Schnittpunkt erzeugt. Il en va de même pour les barres 1 et 2, où un nouveau nœud est créé au point d'intersection.
La fonction « SelectObjects » de l'interface IModelData (ou IModeldata2, etc.) permet de sélectionner les objets. Cette fonction a besoin du type d'objet et du/des numéro(s) d'objet sous forme de chaîne de caractères. Voici un court exemple :
Sub select_objects()Dim model As RFEM5.modelSet model = GetObject(, "RFEM5.Model")model.GetApplication.LockLicenseOn Error GoTo e Dim iModdata As IModelData2 Set iModdata = model.GetModelData ' enable Selections iModdata.EnableSelections True ' select nodes 2-3 and lines 1 and 3 iModdata.SelectObjects ModelObjectType.NodeObject, "2-3" iModdata.SelectObjects ModelObjectType.LineObject, "1,3" ' deselect nodes and lines iModdata.SelectObjects ModelObjectType.NodeObject, "" iModdata.SelectObjects ModelObjectType.LineObject, "" e: If Err.Number <> 0 Then MsgBox Err.description, , Err.Sourcemodel.GetApplication.UnlockLicenseSet iModdata = NothingSet model = NothingEnd Sub
Les sélections sont activées dans la partie supérieure, puis les nœuds 2 à 3 ainsi que les lignes 1 et 3 sont sélectionnés. Les lignes et les nœuds sont ensuite désélectionnés à l'aide d'une chaîne vide.
Si vous souhaitez lire ou modifier les objets sélectionnés, vous devez utiliser la fonction « IModelData.EnableSelections » (également disponible dans le code ci-dessus). Si la fonction est appelée avec « True », seuls les nœuds sélectionnés sont lus avec la fonction « IModelData.GetNodes() », par exemple.