Frequently Asked Questions (FAQ)

Search FAQ




Customer Support 24/7

Knowledge Base

In addition to our technical support (e.g. via chat), you’ll find resources on our website that may help you with your design using Dlubal Software.

Newsletter

Receive information including news, useful tips, scheduled events, special offers, and vouchers on a regular basis.

  • Answer

    An imperfection is considered a load and is transferred via the interface of the load case. Provided that the interface to the model has already been imported, the interface to the loads (ILoads) followed by the interface to load case 1 (ILoadCase) will subsequently be imported, if it has already been created before:

            '   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

    The data of the imperfection is then filled out first, here for member 1, and then transferred within a Prepare-/FinishModification block of the load case Interfaces.

  • Answer

    To modify an existing element, you have to get the interface to the corresponding element, shown here using a member as an example:

        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)

    Use this code to get the interface to member 1, which must already be created. Then, you can use the .GetData () method of the interface to get the member data.

    If you want to modify data (such as the member rotation here), you can subsequently transfer it to the program within a Prepare-/FinishModification block with the method .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
  • Answer

    The following code shows how to get different calculation parameters via the COM interface. It also demonstrates how to specify a setting for deactivating shear stiffness:

        '   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 calculate options
        Dim calc_opts As RFEM5.CalculationOptions
        calc_opts = iCalc.GetOptions
        
        '   set ShearStiffness to false
        calc_opts.ShearStiffness = False
        iCalc.SetOptions calc_opts

    In the annex, there is an EXCEL macro to download.
  • Answer

    First, a result beam is created exactly like a normal member:

        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

    Then, the interface IMember has to be taken from the corresponding member, and the GetExtraData method is used to get the interface to IResultMember. This interface can now be used to read or write the ResultMember data. Please note that a Prepare-/Finishmodification block is required when writing:

        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

    The completed EXCEL macro and the corresponding test file are attached.
  • Answer

    Friction represents a non-linearity and can therefore only be modified via the interface to the member end release hinge.

    For this purpose, the member end release must be created first, if not already available. Then, the IMemberHinge interface is brought to the member end release and then to the non-linearity (here IFriction). Then, you can use the methods GetData and SetData to modify the data (here 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


    In the case of the friction Vy + Vz, the Coefficient2 is used to set the second coefficient. The spring constant in the Friction dialog box is controlled by the translational spring of the member end release. In the concrete case, this is TranslationalConstantX for the X-direction (see Figure 01).

  • Answer

    The asynchronous calculation is used if a self-created program should only open or continue RFEM or RSTAB. When the calculation is complete, the event is transferred via a delegate. You can find a C# example in a Visual Studio project in the download area below.
  • Answer

    This check can be queried automatically via

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


  • Answer

    Yes, it is possible to create nodal releases via the COM interface. Here is an example:

    Sub nodal_release ()

    Dim iApp As RFEM5.Application
    Dim iModel As RFEM5.model
        
    On Error GoTo e
        
    Set iApp = GetObject (, "RFEM5.Application")
    iApp.LockLicense
            
    test = iApp.GetModelCount
    Set iModel = iApp.GetModel (0)
            
    Dim iModeldata As RFEM5.iModeldata
    Set iModeldata = iModel.GetModelData
            
            
            '   for setting a nodal release a member hinge is needed
            '   the object for the axis system could not be the same with the released one
    Dim nodRel As NodalRelease
    nodRel.Location = OriginalLocationType
    nodRel.AxisSystem = LocalFromLine
    nodRel.AxisSystemFromObjectNo = 2
    nodRel.Comment = "test nodal release"
    nodRel.MemberHingeNo = 1
    nodRel.NodeNo = 1
    nodRel.ReleasedMembers = 1
            
    iModeldata.PrepareModification
    iModeldata.SetNodalRelease nodRel
    iModeldata.FinishModification
            
            
    e: If Err.Number <> 0 Then MsgBox Err.description,, Err.Source
        
    iApp.UnlockLicense


    End Sub


    Please note that the local axis system may not refer to the same elements as the ones that are released.

  • Answer

    To transfer several elements, you first have to create a field (array) in VBA:

    Dim nodes (0 to 2) as RFEM5.Node

    Then, you can transfer all nodes at once to the field (here three elements 0,1,2) with the method IModelData.SetNodes ().

    These methods are also available e.g. for the following structural elements:

    IModelData.SetLines ()
    IModelData.SetMembers ()
    IModelData.SetSurfaces ()
  • Answer

    The main object is not a line object but an object of the type NurbSpline.
    Here is a short example for creating a NURBS (Non-Uniform Rational B-Spline):

    '------------------------------------------------- -------------------------------------------------
    Sub nurbs_test ()
    '------------------------------------------------- -------------------------------------------------

    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

    'define array of nodes
    Dim nodes (0 To 2) As RFEM5.Node
        
    nodes (0) .No = 1
    nodes (0) .Type = Default
    nodes (0) .CS = Cartesian
    nodes (0) .X = 1
    nodes (0) .Y = 1
    nodes (0) .Z = 0

    nodes (1) .No = 2
    nodes (1) .Type = Default
    nodes (1) .CS = Cartesian
    nodes (1) .X = 2
    nodes (1) .Y = 1
    nodes (1) .Z = -1
        
    nodes (2) .No = 3
    nodes (2) .Type = Default
    nodes (2) .CS = Cartesian
    nodes (2) .RefObjectNo = 2
    nodes (2) .X = 0
    nodes (2) .Y = 1
    nodes (2) .Z = 0
        
    Dim darr1 (0 To 5) As Double
    darr1 (0) = 1
    darr1 (1) = 2
    darr1 (2) = 3
    darr1 (3) = 4
    darr1 (4) = 5
    darr1 (5) = 6
        
    Dim darr2 (0 To 2) As Double
    darr2 (0) = 1
    darr2 (1) = 1
    darr2 (2) = 1
        
    Dim ns As NurbSpline
    ns.General.No = 2
    ns.General.Type = NurbSplineType
    ns.General.NodeList = "1,2,3"
    ns.General.Comment = "line 2"
    ns.Knots = darr1
    ns.Order = 3
    ns.Weights = darr2
        
    data.PrepareModification
    data.SetNodes nodes
    data.SetNurbSpline ns
    e: data.FinishModification
    If Err.Number <> 0 Then MsgBox Err.Description,, Err.Source

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

    End Sub

1 - 10 of 23

Contact us

Contact to Dlubal

Did you find your question?
If not, contact us via our free e-mail, chat, or forum support, or send us your question via the online form.

+49 9673 9203 0

info@dlubal.com

First Steps

First steps

We provide hints and tips to help you get started with the main programs RFEM and RSTAB.

Wind Simulation & Wind Load Generation

With the stand-alone program RWIND Simulation, wind flows around simple or complex structures can be simulated by means of a digital wind tunnel.

The generated wind loads acting on these objects can be imported to RFEM or RSTAB.

Your support is by far the best

“Thank you very much for the useful information.

I would like to pay a compliment to your support team. I am always impressed how quickly and professionally the questions are answered. In the industry of structural analysis, I use several software including service contract, but your support is by far the best.”