Frequently Asked Questions (FAQ)

Search FAQ

Show Filter Hide Filter

Customer Support 24/7

Knowledge Base

In addition to our technical support (e.g. via email, chat), we also offer an extensive range of free online services available 24/7 on our website.


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

1 - 10 of 92

Sort by:


  • Answer

    The following code displays all elements of the STEEL EC3 add-on module that can be modified via the COM interface:

    //  get interface to active model
    iModel = iApp.GetActiveModel();

    //  get interface to STEEL EC3 module
    IModule module = iModel.GetModule("STEEL_EC3") as Dlubal.STEEL_EC3.IModule;

    //  get interface to module case
    ICase iStEC3case = module.moGetCase(1, Dlubal.STEEL_EC3.ITEM_AT.AT_NO);

    //  get ultimate limit state options (Details > Ultimate Limit State)
    ULS_OPTIONS optsULS = iStEC3case.moGetULSOptions();

    //  get options for stability design (Details > Stability)
    STABILITY_OPTIONS optsStab = iStEC3case.moGetStabilityOptions();

    //  get options for serviceability design (Details > Serviceabiltiy)
    SERVICEABILITY_DEFORMATION_TYPE optsServDef = iStEC3case.moGetServiceabilityOptions();

    //  get fire resistance options (Details > Fire Resistance)
    FIRE_RESISTANCE_OPTIONS optsFire = iStEC3case.moGetFireResistanceOptions();

    //  get other options (Details > General)
    OTHER_OPTIONS optsOther = iStEC3case.moGetOtherOptions();

    //  get national annex (e.g. DIN, CEN, ...)
    NATIONAL_ANNEX natAn = iStEC3case.moGetNationalAnnex();

    //  get interface for national annex details
    INationalAnnex iNatAn =  iStEC3case.moGetNationalAnnexOptions();

    //  get base data for national annex
    NATIONAL_ANNEX_OPTIONS_BASE natAnBase = iNatAn.moGetBaseOptions();

    //  get data for general method from national annex
    NATIONAL_ANNEX_OPTIONS_GM natAnGM = iNatAn.moGetGMOptions();

    //  get data for lateral-torsional buckling from national annex

    //  get data for stainless steel from national annex
    NATIONAL_ANNEX_OPTIONS_STEEL natAnSTEEL = iNatAn.moGetSteelOptions();

    The corresponding elements in the parameter dialog box of the add-on module are shown in Figure 02.

  • Answer

    The load within this area is not taken into account, which can be clearly seen in the example in Figure 01. Here, a homogeneous temperature load (Tc only) was applied, which leads to stress peaks, although the surface can freely strain.

    If it is important to consider the load, you can also model the support manually. To do this, simply create an opening of the size of the column and create a new surface corresponding to the surrounding surface (see Figure 02). The values for the spring stiffnesses can be found in the dialog box (see Figure 03).

    A surface loaded in this way is then also without stress in the case of a temperature load, as shown in Figure 04.

  • Answer

    The factors for the effective lengths are transferred by using the interface for the member (IMember), which is called SetEffectiveLengths(). Use GetEffectiveLengths() to read out the data:

    // get interface to running RFEM application.
    iApp = Marshal.GetActiveObject("RFEM5.Application") as IApplication;

    // get interface to active RFEM model.
    iModel = iApp.GetActiveModel();

    // get interface to model data.
    IModelData2 iModData = iModel.GetModelData() as IModelData2;

    // get interface to member 1
    IMember 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 data

    Please note that it is only possible to read out the properties for the effective lengths (for example, EffectiveLengthY) of the MemberEffectiveLengths structure and the CriticalBucklingLoad property.

  • Answer

    Since the boundary surfaces of contact solids can only be of the Null Surface type, it is necessary to model additional surfaces with a section. The following is an example for this.

    There is a reinforcement of a plate with an additional plate. Both plates are connected by means of a contact solid:

    Image 01 - Example Model with Reinforcing Plate and Contact Solid

    Image 02 - Contact Solids Between Base Plate and Reinforcing Plate

    In order to simulate a weld, borders are required on both plates:

    Image 03 - Additional Border Around Reinforcing Plate and Base Plate

    You can simply create the bottom border by inserting a new rectangular surface. In this case, the program asks whether the surface should be integrated into the base surface, which must be confirmed by clicking Yes. There are then two openings in the bottom surface; one in the outermost surface where lies the surface for the border, and another in the surface for the border where lies the bottom surface of the contact solid:

    Image 04 - Bottom Border Created by Further Opening

    For the upper border, it is also necessary to create a new surface, and the opening to the upper surface of the contact solid must be inserted manually:

    Image 05 - Upper Border Created by Rectangular Surface with Opening

    After creating the borders, you can insert the actual surfaces for the weld:

    Image 06 - Connection Surfaces (Weld) Between Reinforcement and Base Plate

    If the reinforcing plate is subjected to tension now, the modeled weld transfers the tension stresses:

    Image 07 - Normal Forces in Weld Under Tensile Stress

  • 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

    According to DIN EN 1993‑1‑1:2010‑12 [1], Annex BB.1.1, the buckling length may be used in the individual bracing under certain conditions. This means that in this case, the individual members, not a set of members, can be applied with the effective length factors specified in the standard.

    Since this approach only considers the local failure, it is necessary to analyze the global failure of the entire structure. For this design, the set of members must have the corresponding imperfection. Under certain conditions, the design can be performed on single members, depending on the model (for example, a tower), or the set of members must be analyzed for a failure from the plane (the truss), as in the attached example.

  • Answer

    The reference system can be changed both in the graphical display in the Project Navigator (see Figure 01) or in the tabular results in the add-on module (Figure 02).

    Figure 03 shows the different deformations of a structural system. On both sides, Construction Stages 2 to 4 are displayed from top to bottom, referring to the undeformed system (initial state) on the left and to the respective construction stage on the right.

  • 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

  • Answer

    Yes, it is possible to create visibilities via the COM interface (RF‑COM3 / RS‑COM6). In the following code, the elements are first selected for a visibility. This is done via Selections. First, activate them with "rfEnableSelections," then you can use "rfSelectObjects" to select the objects:

    Sub set_visibility()
    ' get interface from the opened model and lock the licence/program
    Dim iModel As RFEM3.IrfStructure3
    Set iModel = GetObject(, "RFEM3.Structure")
    On Error GoTo e
    ' get interface for modeldata
    Dim iModdata As RFEM3.IrfStructuralData4
    Set iModdata = iModel.rfGetStructuralData
    iModdata.rfEnableSelections True
    iModdata.rfSelectObjects STR_MEMBER, "1-2"
    'iModdata.rfSelectObjects STR_MEMBERS_SET, "1"
    'iModdata.rfSelectObjects STR_NODE_SUPPORT, "1"
    ' get interface for view
    Dim iView As RFEM3.IrfView2
    Set iView = iModel.rfGetActiveView
    iView.rfSetPartialView "test|view"
    'iView.rfSelectPartialView "test|view", PVM_SHOW, True, True
    e: If Err.Number <> 0 Then MsgBox Err.description, , Err.Source
    Set iModel = Nothing

    End Sub

    You can use the "iView" interface and the "rfSetPartialView" command to create a visibility. The description is especially important here. The separator "|" ensures that the visibility with the "view" name is created in the "test" group.

    In the code, you can find further alternative commented commands. Please note the "rfSelectPartialView" command, which allows you to activate the visibility. This visibility is then displayed, for example, directly in RFEM (PVM_SHOW), depending on the set command.

  • Answer

    For selecting objects, there is the "SelectObjects" function in the IModelData interface (or IModeldata2 and the like). The function expects the object type and the object number(s) as a string. Here is a short example:

    Sub select_objects()

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

    On 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.Source

    Set iModdata = Nothing
    Set model = Nothing

    End Sub

    In the upper part, the selections are activated, and then Nodes 2 to 3 and Lines 1 and 3 are selected. Then, the lines and nodes are deselected by an empty string.

    If you want to read or modify selected objects, you need the "IModelData.EnableSelections" function (can also be found above in the code). If the function is retrieved with "True," only the selected nodes are obtained with the "IModelData.GetNodes ()" function, for example.

1 - 10 of 92

Contact us

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 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 for the valuable information.

I would like to pay a compliment to your support team. I am always impressed how quickly and professionally the questions are answered. I have used a lot of software with a support contract in the field of structural analysis, but your support is by far the best. ”