Frequently Asked Questions (FAQ)

Helpful Questions & Answers

  • Frequently Asked Questions (FAQs)

Search FAQ

Show Filter Hide Filter

Customer Support 24/7

In addition to personal support, we offer resources 24/7 through our website.


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

1 - 10 of 46

Sort by:


  • Answer

    In order to be able to assign an eccentricity to a member, it is usually necessary to create it before setting the member.

    Another approach is shown in the following example. First, the eccentricity is created and then assigned to an existing member via its interface:

    Sub SetEccentricity()

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

    On Error GoTo e

    Dim iModData As RFEM5.iModelData
    Set iModData = model.GetModelData

    '   create eccentricity
    Dim eccens(0 To 0) As RFEM5.MemberEccentricity
    eccens(0).No = 1
    eccens(0).Comment = "test eccentricity"

    eccens(0).ReferenceSystem = LocalSystemType

    eccens(0).Start.X = 0
    eccens(0).Start.Y = 0
    eccens(0).Start.Z = 0

    eccens(0).End.X = 0
    eccens(0).End.Y = 0
    eccens(0).End.Z = 0

    eccens(0).HingeAtEndNode = False
    eccens(0).HingeAtStartNode = False

    eccens(0).HorizontalAlignment = Middle
    eccens(0).VerticalAlignment = Bottom

    eccens(0).TransverseOffset = True
    eccens(0).ReferenceObjectNo = 2
    eccens(0).ReferenceObjectType = MemberObject
    eccens(0).HorizontalAxisOffset = Middle
    eccens(0).VerticalAxisOffset = Top

    eccens(0).StartAdjoiningMembersOffset = False
    eccens(0).EndAdjoiningMembersOffset = False

    iModData.SetMemberEccentricities eccens

    '   add eccentricity to member
    Dim iMem As RFEM5.IMember
    Set iMem = iModData.GetMember(1, AtNo)

    Dim mem As RFEM5.Member
    mem = iMem.GetData

    mem.EccentricityNo = 1

    iMem.SetData mem

    e:      If Err.Number <> 0 Then MsgBox Err.Description, , Err.Source


    End Sub

    Member eccentricities can only be transferred as a field; for this purpose, a field with only one element has been created. In the attached image, the individual elements are itemized with reference to the graphical elements.

  • Answer

    The following VBA macro shows the creation of a nodal support with a nonlinearity diagram. The source code can be found under Downloads.

    Sub SetNSupports()
    Dim model As RFEM5.model
    Dim data As IModelData
    Dim support(0) As RFEM5.NodalSupport
    Dim ISup As RFEM5.INodalSupport
    Dim ISupDia As RFEM5.INonlinearityDiagram
    Dim nlDiag As NonlinearityDiagram
    Dim zone(2, 1) As Double
        Set model = GetObject(, "RFEM5.Model")

        On Error GoTo e

        Set data = model.GetModelData
        support(0).No = 1
        support(0).nodelist = "1"
        support(0).SupportNonlinearityX = WorkingDiagramType
        support(0).SupportConstantY = -1
        support(0).SupportConstantZ = -1
        support(0).RestraintConstantX = -1
        support(0).RestraintConstantY = -1
        support(0).RestraintConstantZ = -1

        data.SetNodalSupports support

        Set ISup = data.GetNodalSupport(1, AtNo)
        Set ISupDia = ISup.GetNonlinearity(AlongAxisX)

        zone(0, 0) = 0
        zone(0, 1) = 0
        zone(1, 0) = 1
        zone(1, 1) = 2
        zone(2, 0) = 3
        zone(2, 1) = 4

        nlDiag.PositiveZoneType = DiagramAfterLastStepType.StopDiagramType
        nlDiag.PositiveZone = zone
        nlDiag.Symmetric = True

        ISupDia.SetData nlDiag
    e:  If Err.Number <> 0 Then MsgBox Err.Description, , Err.Source

        Set data = Nothing
        Set model = Nothing

    End Sub
  • Answer

    To delete elements, there is the "DeleteObjects()" function in the model data interface. Deleting all members is then as follows:

    Sub test_delete_objects()

    Dim iApp As RFEM5.Application
    Set iApp = GetObject(, "RFEM5.Application")


    Dim iMod As RFEM5.IModel3
    Set iMod = iApp.GetActiveModel

    On Error GoTo e

        '   get interface for model data
        Dim iModData As RFEM5.IModelData2
        Set iModData = iMod.GetModelData
        '   get all members
        Dim mems() As RFEM5.Member
        mems() = iModData.GetMembers
        '   create member list
        Dim mem_list As String
        Dim i As Integer
        For i = 0 To UBound(mems, 1)
            mem_list = mem_list & mems(i).no & ","
        '   delete members
        iModData.DeleteObjects MemberObject, mem_list

    If Err.Number <> 0 Then MsgBox Err.description, vbCritical, Err.Source

    Set iMod = Nothing

    End Sub

    Please note that the "DeleteObjects" function only works with the object number and not with the object index. These numbers are transferred as a string, separated by commas.

    For this reason, all members had to be fetched first. Then the member field was looped through and all member numbers were entered in the string.

  • Answer

    The deformations of members can be read out by using the "GetMemberDeformations()" function, for example. This function expects a number, the type of the counting method for members (member number/number in the list), and which coordinate system should be used. You can select whether the local axis system, the principal axis system, or the global coordinate system is used:

    Sub test_results_member_axis()

    Dim iApp As RFEM5.Application
    Set iApp = GetObject(, "RFEM5.Application")


    Dim iMod As RFEM5.IModel3
    Set iMod = iApp.GetActiveModel

    On Error GoTo e

    'get interface for calculation
    Dim iCalc As RFEM5.ICalculation2
    Set iCalc = iMod.GetCalculation

    'get interface for results
    Dim iRes As RFEM5.IResults2
    Set iRes = iCalc.GetResultsInFeNodes(LoadCaseType, 1)

    'get deformations in local coordinate system
    Dim memDefs_L() As RFEM5.MemberDeformations
    memDefs_L = iRes.GetMemberDeformations(1, AtNo, LocalMemberAxes)

    'get deformations in global coordinate system
    Dim memDefs_G() As RFEM5.MemberDeformations
    memDefs_G = iRes.GetMemberDeformations(1, AtNo, GlobalAxes)

    'get deformations in principal coordinate system
    Dim memDefs_P() As RFEM5.MemberDeformations
    memDefs_P = iRes.GetMemberDeformations(1, AtNo, LocalPrincipalAxes)


    If Err.Number <> 0 Then MsgBox Err.description, vbCritical, Err.Source

    Set iMod = Nothing

    End Sub

    The small program reads out the local deformations (memDefs_L) in the member axes and the principal axes (memDefs_P) and the global deformations in the member axes (memDefs_G).

  • Answer

    The parameters of a model can be modified by using the IModel interface (as of IModel3):

    Sub test_parameter()

    Dim iApp As RFEM5.Application
    Set iApp = GetObject(, "RFEM5.Application")


    Dim j As Integer
    j = iApp.GetModelCount

    Dim iMod As RFEM5.IModel3
    Set iMod = iApp.GetActiveModel

    On Error GoTo e

    Dim formParams() As RFEM5.FormulaParameter

    '   get all formula parameters
    formParams = iMod.GetFormulaParameters

    '   delete all formula parameters

    '   set list of formula parameters
    ReDim 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 = LengthUnitType
    formParams(UBound(formParams, 1)).Value = 0
    formParams(UBound(formParams, 1)).ValueType = DoubleType
    formParams(UBound(formParams, 1)).Comment = "new parameter"
    formParams(UBound(formParams, 1)).Formula = "b/3"
    formParams(UBound(formParams, 1)).RangeOfValues = "(3;5.5>"

    iMod.SetFormulaParameters formParams


    If Err.Number <> 0 Then MsgBox Err.description, vbCritical, Err.Source
    Set iMod = Nothing

    End Sub

    It is only possible to read out all parameters by using the GetFormulaParameters() function. The modified or new parameters can then be transferred again as a list with the SetFormulaParameters() function. Thus, no individual parameters can be read out or written.

    It should be noted that the "Value" related to its type (ValueTyp) and its unit (Unit) must be within the defined limits (RangeOfValues), otherwise an error message appears. If the value is calculated, as in the example, it is irrelevant and the value calculated with the formula (Formula) must be within the limits, if the limits are defined.

  • Answer

    The "Connect Lines/Members" option can be implemented with the "ConnectLines()" and "ConnectMembers()" functions. Both functions expect a string with the numbers of the lines or members:

    Sub test_connect()

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


    On Error GoTo e

    Dim iModData As RFEM5.IModelData2
    Set iModData = iMod.GetModelData()

    iModData.ConnectLines ("3,4")
    iModData.ConnectMembers ("1,2")


    If Err.Number <> 0 Then MsgBox Err.description, vbCritical, Err.Source
    Set iMod = Nothing

    End Sub

    In this example, Line 1 and Line 2 are connected and a node is created at the intersection point. The same applies to Member 1 and Member 2, where a new node is also created at the intersection point.

  • Answer

    Just like all other results, the resultant of a section can be read out via IModel3 → ICalculation2 → IResults2. The interface to the results is provided by the GetResultant function, which then returns the ResultantForce structure when specifying the section number and the type of the result distribution. This structure includes, among other things, the forces and moments as vectors:

    Sub GetResultantSection()
        Dim iApp As RFEM5.Application
        Dim iModel As RFEM5.model
        Set iModel = GetObject(, "RFEM5.Model")

        On Error GoTo e

        '   get interface from model
        Set iApp = iModel.GetApplication

        '   get interface from calculation
        Dim iCalc As RFEM5.ICalculation2
        Set iCalc = iModel.GetCalculation

        '   get interface from results from loadcase 1
        Dim iRes As RFEM5.IResults2
        Set iRes = iCalc.GetResultsInFeNodes(LoadCaseType, 1)

        '   get Resultant
        Dim section_resultant As ResultantForce
        section_resultant = iRes.GetResultant(1, AtNo, ConstantDistributionOnElements)

    If Err.Number <> 0 Then
        MsgBox Err.Number & " " & Err.description
    End If

    If Not iApp Is Nothing Then
    End If

    End Sub
  • Answer

    In the FAQ downloads, you will find a sample code of how to set the NURBS surfaces. The knot vector KnotsX, KnotsY determines how the control points affect the NURBS curve. The number of knots is equal to the number of nodes plus order.

  • Answer

    For the programming using the COM interface, a nodal support has the "ReferenceSystem" and "UserDefinedReferenceSystem" properties. "ReferenceSystem" allows you to define the type of the user-defined coordinate system (for example, "Rotated" or "Coordinate System"), and depending on which type has been selected, this type is then defined via "UserDefinedReferenceSystem."

    In the following example, the "Coordinate system" was set as the type and a user-defined coordinate system was also created for it:

    //  create user defined coordinate system
    IGuideObjects iGuide = iModel.GetGuideObjects();

    //  delete cosy No 2
    UserCoordinateSystem[] csList = iGuide.GetCoordinateSystems();
    if (csList.Length > 1)
        for (int i = 0; i < csList.Length; ++i)
            if (csList[i].No == 2)
                iGuide.DeleteObjects(GuideObjectType.CoordinateSystemObject, "2");

    //  define new cosy No 2
    UserCoordinateSystem uCs = new UserCoordinateSystem();
    uCs.Name = "test";
    uCs.Comment = "test";
    uCs.No = 2;
    uCs.IsValid = true;

    uCs.Origin.X = 1;
    uCs.Origin.Y = 0;
    uCs.Origin.Z = 1;

    uCs.Point1.X = 2;
    uCs.Point1.Y = 0;
    uCs.Point1.Z = 1;

    uCs.Point2.X = 1;
    uCs.Point2.Y = 1;
    uCs.Point2.Z = 2;

    //  set cosy No 2

    //  create nodal support with user defined cosy
    NodalSupport ns = new NodalSupport();

    ns.SupportConstantX = -1;
    ns.SupportConstantY = -1;
    ns.SupportConstantZ = -1;

    ns.RestraintConstantX = -1;
    ns.RestraintConstantY = 0;
    ns.RestraintConstantZ = -1;

    ns.Comment = "user defined cosy";
    ns.NodeList = "1";
    ns.ReferenceSystem = ReferenceSystemType.UserDefinedSystemType;

    ns.UserDefinedReferenceSystem.ObjectNo = 2;
    ns.UserDefinedReferenceSystem.Type = UserDefinedAxisSystemType.DefinedCoordinateSystemType;


    To be able to create the coordinate system, the interface for the guide objects is required: 'IGuideObjects'. With the "DeleteObjects()" function, an existing coordinate system of Number 2 is first deleted and a new one is created with "SetCoordinateSystem()." Please note the "Prepare/Finish-Modification" block to be able to transfer the new element.

    The nodal support is transferred via the "IModelData" interface. Again, the "Prepare/Finish-Modification" block is required.

  • Answer

    StandardID and AnnexID can be easily displayed at any time by using the following macro:


    You can find this macro in the archive of the product website (see Links).

    Here is an overview of the current attachments:

    StandardID AnnexID Name

    DIN 0 Germany

    ÖNORM 1 Austria

    CSN 2 Czech Republic

    STN 3 Slovakia

    PN 4 Poland

    SIST 5 Slovenia

    DK 6 Denmark

    UNI 7 Italy

    NEN 8 Netherlands

    SFS 9 Finland

    SS 10 Sweden

    NF 11 France

    BS 12 United Kingdom

    CEN 13 European Union

    BDS 14 Bulgaria

    CYS 15 Cyprus

    LST 16 Lithuania

    SR 17 Romania

    SS 18 Singapore

    NBN 19 Belgium

    NP 20 Portugal

    UNE 21 Spain

    MAL 22 Malaysia

    NS 23 Norway

    LU 24 Luxembourg

    ELOT 25 Greece

1 - 10 of 46

Contact us

Contact 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

First steps

First steps

We provide information and tips to help you get started with the basic program RFEM and RSTAB.

Wind Simulation & Wind Load Generation

With the stand -alone program RWIND Simulation, you can simulate wind flows around simple or complex structures 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.”