Foire Aux Questions (FAQs)

Rechercher dans la FAQ

Show Filter Hide Filter





Support 24/7

En plus de notre assistance technique (via le chat Dlubal, par exemple), notre site Web contient de nombreuses ressources pour vous aider à utiliser les produits de Dlubal Software.

Newsletter

Recevez régulièrement des informations telles que nos actualités, conseils pratiques, événements, offres et bons d'achat.

  • Réponse

    Les fichiers *.dll et *.tlb n'ont probablement pas été mis à jour correctement sur votre ordinateur. Veuillez procéder comme suit :

    1. Renommez les dossiers suivants dans Dlubal.bak :

         C:\Program Files (x86)\Common Files\Dlubal

         C:\Program Files\Common Files\Dlubal


    2. Installez à nouveau RSTAB ou RFEM.

    3. Déplacez les fichiers des nouveaux dossiers Dlubal vers les dossiers Dlubal.bak correspondants (écrasez tout).

    4. Renommez le dossier Dlubal.bak « Dlubal ».

  • Réponse

    Une coupe est généralement un élément (une barre, par exemple) et est créée comme telle. Il est nécessaire de disposer d'une interface avec les objets concernés. Il s'agit d'IModelData pour les barres et d'ISections pour les coupes. Cette interface se trouve dans IModel3 :

    Sub test_section()
    '   get interface from the opened model and lock the licence/program
        Dim iModel As RFEM5.IModel3
        Set iModel = GetObject(, "RFEM5.Model")
        iModel.GetApplication.LockLicense
        
    On Error GoTo E
        
        Dim iSecs As RFEM5.ISections
        Set iSecs = iModel.GetSections()

    Toutes les coupes créées précédemment sont d'abord supprimées, puis deux coupes sont créées.
    La première coupe doit être solide avec une surface de coupe visible (voir la Figure 01). Les données sont entrées de la même manière que dans RFEM. Une fois le type « SectionOnSectionalArea » sélectionné, les points d'angle de la coupe sont définis à l'aide de la commande « EdgePoint » et le paramètre « Vector » définit sa direction :

       '   first delete all sections
        iSecs.PrepareModification
        iSecs.DeleteObjects ("All")
        iSecs.FinishModification
        
        '   set section on solid
        Dim sec As RFEM5.Section
        sec.EdgePointA.X = 2
        sec.EdgePointA.Y = 5
        sec.EdgePointA.Z = 0
        sec.EdgePointB.X = 2
        sec.EdgePointB.Y = 8
        sec.EdgePointB.Z = 0
        
        sec.no = 1
        sec.Name = "solid section"
        sec.Plane = GlobalPlaneInPositiveX
        sec.ShowValuesInIsolines = False
        sec.Type = SectionOnSolidSectionLine
        sec.ObjectList = "1"
        
        iSecs.PrepareModification
        iSecs.SetSection sec
        iSecs.FinishModification

    La nouvelle coupe est finalement transférée dans un bloc Prepare-/FinishModification. La seconde coupe créée doit être une surface (voir la Figure 02). Pour ce faire, le type « SectionViaSurfacePlane » doit être utilisé. Outre le vecteur de direction, vous devez sélectionner le plan d'affichage des résultats de la coupe de surface. Dans l'exemple ci-dessous, le plan xy est sélectionné en définissant « GlobalPlaneInPositiveX » :

    '   set section on surface
        sec.EdgePointA.X = 2
        sec.EdgePointA.Y = 0
        sec.EdgePointA.Z = 0
        sec.EdgePointB.X = 2
        sec.EdgePointB.Y = 3
        sec.EdgePointB.Z = 0
        
        sec.no = 2
        sec.Name = "surface section"
        sec.Plane = GlobalPlaneInPositiveX
        
        sec.ShowValuesInIsolines = True
        sec.Type = SectionViaSurfacePlane
        sec.ObjectList = "1"
        
        sec.Vector.X = 0
        sec.Vector.Y = 0
        sec.Vector.Z = 1
        
        iSecs.PrepareModification
        iSecs.SetSection sec
        iSecs.FinishModification

    Il est également possible d'obtenir les résultats à l'aide de la méthode « GetResultsInSection » de l'interface « IResults2 ». Il faut ensuite obtenir les efforts tranchants sur la coupe de surface. La distribution des efforts internes est définie sur « Continue dans les surfaces » dans « ContinuousDistributionWithinObjects » :

     '   get results
        Dim iCalc As ICalculation2
        Set iCalc = iModel.GetCalculation
        
        Dim iRes As IResults2
        Set iRes = iCalc.GetResultsInFeNodes(LoadCaseType, 1)
        
        Dim secRes() As RFEM5.SectionResult
        secRes = iRes.GetResultsInSection(2, AtNo,
          ShearForceVy,ContinuousDistributionWithinObjects, False)

    La macro Excel et le fichier de test associés sont disponibles au téléchargement ci-dessous.
  • Réponse

    Afin de calculer des cas de charge, des combinaisons de charges ou de résultats uniquement comme la commande «Pour calculer ...» (voir la Figure 01), vous pouvez utiliser la méthode CalculateBatch de l'interface ICalculation. La méthode attend un champ avec le type de charge Charge pour le transfert. Cette Charge inclut le numéro de la charge et le type (une combinaison de charges, par exemple):

    Sous-batch_test ()
        
    'obtenir l'interface du modèle ouvert et verrouiller la licence/le programme
    Atténuer le iModel comme RFEM5.IModel3
    Définir iModel = GetObject (, «RFEM5.Model»)
    iModel.GetApplication.LockLicense
        

    En cas d'erreur, Aller à e
        
    'Obtenir une interface pour le calcul
    Dim iCalc As ICalculation2
        Set iCalc = iModel.GetCalculation
        
    'créer un tableau avec les types de charge
    Dim charges (3) Au chargement
    charges (0) .no = 1
    charges (0) .Type = LoadCaseType
        
    charges (1) .no = 4
    charges (1) .Type = LoadCaseType
        
    charges (2) .no = 4
    charges (2) .Type = LoadCombinationType
        
    'calculer toutes les charges du tableau en même temps
    Charges iCalc.CalculateBatch

    e:  If Err.Number <> 0 Then MsgBox Err.Description, , Err.Source
        
    Définir iModelData = Aucune
    iModel.GetApplication.UnlockLicense
    Définir iModel = Rien

    End Sub
  • Réponse

    Une imperfection est considérée comme une charge et transférée via l'interface du cas de charge. Si l'interface avec le modèle a déjà été extraite, l'interface avec les charges (ILoads) puis l'interface avec le cas de charge 1 (ILoadCase) sont récupérées si elles ont déjà été créées :

            '   set loadcases
            Dim iLoads As iLoads
            Set iLoads = model.GetLoads
            
            '   get load case
            Dim iLc1 As ILoadCase
            Set iLc1 = iLoads.GetLoadCase(1, AtNo)
            
            '   define imperfection
            Dim imperf As Imperfection
            imperf.Comment = "test"
            imperf.Direction = LocalZType
            imperf.Inclination = 200
            imperf.no = 1
            imperf.ObjectList = 1
            imperf.Precamber = 300
            imperf.PrecamberActivity = ActivityAccording_EN_1993_1_1
            
            '   set imperfection
            iLc1.PrepareModification
            iLc1.SetImperfection imperf
            iLc1.FinishModification

    Les données de l'imperfection sont alors d'abord entrées (pour la barre 1 ici), puis transférées dans un bloc Prepare-/FinishModification de l'interface du cas de charge.

  • Réponse

    Pour pouvoir modifier un élément existant, vous devez dispose de l'interface avec l'élément correspondant. Une barre est traitée dans l'exemple suivant :

        Dim iModel As RSTAB8.model
        Set iModel = GetObject(, "RSTAB8.Model")
        iModel.GetApplication.LockLicense
        
        Dim iModData As IModelData
        Set iModData = iModel.GetModelData
        
        Dim iMem As RSTAB8.IMember
        Set iMem = iModData.GetMember(1, AtNo)

    Ce code est utilisé pour obtenir l'interface avec la barre 1, qui doit déjà avoir été créée. Les données de barre peuvent ensuite être extraites à l'aide de la méthode .GetData () de l'interface.

    Si les données doivent être modifiées (comme la rotation de la barre, ici), elles peuvent être transférées vers le programme dans un bloc Prepare-/FinishModification à l'aide de la méthode .SetData () :


        Dim mem As RSTAB8.Member
        mem = iMem.GetData
        
        mem.Rotation.Angle = 0.5
        mem.Rotation.Type = RSTAB8.Angle
       
        iModData.PrepareModification
        iMem.SetData mem
        iModData.FinishModification
  • Réponse

    L'exemple de code suivant montre comment définir différents paramètres de calcul via l'interface COM. Il explique également comment définir un paramètre pour désactiver la rigidité de cisaillement :

        '   get model interface
        Set iApp = iModel.GetApplication()
        iApp.LockLicense
        
        '   get calculation interface
        Dim iCalc As RFEM5.ICalculation2
        Set iCalc = iModel.GetCalculation
        
        '   get surface bending theory
        Dim calc_bend As RFEM5.BendingTheoryType
        calc_bend = iCalc.GetBendingTheory
        
        '   get settings for nonlinearities
        Dim calc_nl As RFEM5.CalculationNonlinearities
        calc_nl = iCalc.GetNonlinearities
        
        '   get precision and tolerance settings
        Dim calc_prec As RFEM5.PrecisionAndTolerance
        calc_prec = iCalc.GetPrecisionAndTolerance
        
        '   get calculation settings
        Dim calc_sets As RFEM5.CalculationSettings
        calc_sets = iCalc.GetSettings
        
        '   get calculation options
        Dim calc_opts As RFEM5.CalculationOptions
        calc_opts = iCalc.GetOptions
        
        '   set ShearStiffness to false
        calc_opts.ShearStiffness = False
        iCalc.SetOptions calc_opts

    La macro EXCEL correspondante est disponible au téléchargement ci-dessous.
  • Réponse

    Une barre résultante est tout d'abord créée comme une barre normale :

        Dim model As RFEM5.model
        Set model = GetObject(, "RFEM5.Model")
        model.GetApplication.LockLicense

        On Error GoTo e

        Dim data As IModelData
        Set data = model.GetModelData

        Dim members(0) As RFEM5.Member
        
        members(0).No = 3
        members(0).LineNo = 12
        members(0).Type = ResultBeamType
        
        members(0).StartCrossSectionNo = 1
        members(0).EndCrossSectionNo = 1
        
        members(0).Comment = "result beam 1"

        data.PrepareModification
        data.SetMembers members
        data.FinishModification

    Ensuite, l'interface IMember doit être extraite de la barre correspondante et la méthode GetExtraData permet d'obtenir l'interface avec IResultMember. Il est alors possible de lire ou d'écrire les données de ResultMember à l'aide de cette interface. Veuillez noter qu'un bloc Prepare-/Finishmodification est requis lors de l'écriture :

        Dim iMem As IMember
        Set iMem = data.GetMember(3, AtNo)
        
        Dim iRMem As IResultBeam
        Set iRMem = iMem.GetExtraData
        
        Dim RMem As ResultBeam
        RMem = iRMem.GetData
        
        RMem.IncludeSurfaces = "1"
        RMem.IncludeSolids = "all"
        
        RMem.Integrate = WithinCuboidGeneral
        
        Dim params(0 To 3) As Double
        
        RMem.Parameters = params
        RMem.Parameters(0) = 0.5
        RMem.Parameters(1) = 0.5
        RMem.Parameters(2) = 0.1
        RMem.Parameters(3) = 0.1
        
        data.PrepareModification
        iRMem.SetData RMem
        data.FinishModification

    Veuillez trouver ci-dessus la macro Excel préparée et le fichier de test correspondant.
  • Réponse

    La friction représente une non-linéarité et peut donc être modifiée uniquement via l'interface de l'articulation de barre.

    Pour ce faire, vous devez d'abord créer l'articulation de barre, si elle n'est pas déjà disponible. L'interface IMemberHinge est ensuite dirigée vers l'articulation de barre, puis vers la non-linéarité (IFriction, ici). Les méthodes GetData et SetData permettent alors de modifier les données (ici Friction) :

    Sub SetMemberHingeFriction()

        Dim model As RFEM5.model
        Set model = GetObject(, "RFEM5.Model")
        model.GetApplication.LockLicense

        On Error GoTo e

        Dim data As IModelData
        Set data = model.GetModelData

        Dim hinge(0 To 0) As RFEM5.MemberHinge

        hinge(0).No = 1
        hinge(0).RotationalConstantX = 1
        hinge(0).RotationalConstantY = 2
        hinge(0).RotationalConstantZ = 3
        hinge(0).TranslationalConstantX = 4
        hinge(0).TranslationalConstantY = 5
        hinge(0).TranslationalConstantZ = 6
        hinge(0).Comment = "Member Hinge 1"
        
        hinge(0).TranslationalNonlinearityX = FrictionAType

        data.PrepareModification
        data.SetMemberHinges hinge
        data.FinishModification
        
        ' get interface for member hinge
        Dim imemhing As IMemberHinge
        Set imemhing = data.GetMemberHinge(1, AtNo)
        
        ' get interface for nonlinearity "friction"
        Dim iFric As IFriction
        Set iFric = imemhing.GetNonlinearity(AlongAxisX)
        
        ' get friction data
        Dim fric As Friction
        fric = iFric.GetData
        
        fric.Coefficient1 = 0.3
        
        ' set friction data
        data.PrepareModification
        iFric.SetData fric
        data.FinishModification
        
        
    e:  If Err.Number <> 0 Then MsgBox Err.Description, , Err.Source

        Set data = Nothing
        model.GetApplication.UnlockLicense
        Set model = Nothing

    End Sub


    Dans le cas de la friction Vy + Vz, le Coefficient2 est utilisé pour définir le second coefficient. Le ressort dans la boîte de dialogue de la friction est contrôlé via celui de l'articulation de barre. Dans le cas traité ici, il s'agit de TranslationalConstantX pour la direction x (voir la Figure 01).

  • Réponse

    Le calcul asynchrone est utilisé si un programme personnalisé devait uniquement ouvrir RFEM ou RSTAB et continuer à fonctionner en parallèle. Lorsque le calcul est terminé, cet événement est transmis par un délégué. Un exemple de projet Visual Studio en C# est disponible au téléchargement ci-dessous.
  • Réponse

    Cette vérification peut être effectuée automatiquement par le programme :

    • "IApplication.LockLicense()"
    • "bool isLicensed = IApplication.IsComLicensed()"
    • "IApplication.UnlockLicense()"


1 - 10 sur 26

Contactez-nous

Contactez-nous

Vous n'avez pas trouvé réponse à votre question ?
Contactez notre assistance technique gratuite par e-mail, via le chat Dlubal, sur notre forum international ou envoyez-nous votre question via notre formulaire en ligne.

+33 1 78 42 91 61

info@dlubal.fr

Premiers Pas

Premiers pas

Ici vous trouverez quelques trucs et astuces pour faciliter votre prise en main des logiciels de calcul de structure RFEM et RSTAB.

Simulation des flux d'air et génération des charges de vent

Le programme autonome RWIND Simulation vous permet de simuler les flux de vent sur des structures simples et complexes à l'aide d'une soufflerie numérique.

Les charges de vent générées qui agissent sur ces objets peuvent être importées dans RFEM et RSTAB.

Un excellent service de support technique

««Nous vous remercions pour vos précieuses informations.

Je voudrais féliciter votre équipe technique. Je suis toujours impressionné par la rapidité et la professionnalité de ces réponses. J'ai utilisé de nombreux logiciels sous contrat de support dans le domaine de l'analyse de structures, mais votre support est de loin le meilleur. "