Export Model#

../../../_images/import_from_ifc.png

In this example we will demonstrate how to:

  • Export RSTAB model as Python script.

  • Export RSTAB model to IFC file format.

import os
from math import inf
from dlubal.api import rstab, common

def define_structure() -> list:
    """Define and return a list of structural objects."""

    return [
        # Define material
        rstab.structure_core.Material(
            no=1,
            name='S235',
        ),

        # Define section
        rstab.structure_core.Section(
            no=1,
            name='HE 300 A',
            material=1,
        ),

        # Define nodes
        rstab.structure_core.Node(
            no=1,
        ),
        rstab.structure_core.Node(
            no=2,
            coordinate_1=6.0,
        ),

        # Define member
        rstab.structure_core.Member(
            no=1,
            node_start=1,
            node_end=2,
            section_start=1,
        ),

        # Define nodal support at Node 1 (fully fixed)
        rstab.types_for_nodes.NodalSupport(
            no=1,
            nodes=[1],
            spring_x=inf,
            spring_y=inf,
            spring_z=inf,
            rotational_restraint_x=inf,
            rotational_restraint_y=inf,
            rotational_restraint_z=inf,
        ),
    ]

def define_loading() -> list:
    """Define and return a list of loading objects."""

    return [
        # Static analysis settings
        rstab.loading.StaticAnalysisSettings(
            no=1,
            analysis_type=rstab.loading.StaticAnalysisSettings.ANALYSIS_TYPE_GEOMETRICALLY_LINEAR
        ),

        # Define load cases
        rstab.loading.LoadCase(
            no=1,
            static_analysis_settings=1,
        ),
        rstab.loading.LoadCase(
            no=2,
            static_analysis_settings=1,
        ),

        # Define nodal loads
        rstab.loads.NodalLoad(
            no=1,
            load_case=1,
            nodes=[2],
            load_type=rstab.loads.NodalLoad.LOAD_TYPE_COMPONENTS,
            components_force_y=5000,  # Force in Y direction (N)
            components_force_z=10000,  # Force in Z direction (N)
        ),
        rstab.loads.MemberLoad(
            no=1,
            load_case=2,
            members=[1],
            load_type=rstab.loads.MemberLoad.LOAD_TYPE_FORCE,
            magnitude=10000,
        ),

        # Define design situation
        rstab.loading.DesignSituation(
            no=1,
            design_situation_type=rstab.loading.DesignSituation.DESIGN_SITUATION_TYPE_STR_PERMANENT_AND_TRANSIENT_6_10,
        ),

        # Define load combination
        rstab.loading.LoadCombination(
            no=1,
            name='CO1',
            items =  rstab.loading.LoadCombination.ItemsTable(
                    rows=[
                        rstab.loading.LoadCombination.ItemsRow(
                            load_case=1,
                            factor=1.35,
                        ),
                        rstab.loading.LoadCombination.ItemsRow(
                            load_case=2,
                            factor=1.5,
                        )
                    ]
            ),
            design_situation=1,
        ),
        rstab.loading.LoadCombination(
            no=2,
            name='CO2',
            items =  rstab.loading.LoadCombination.ItemsTable(
                    rows=[
                        rstab.loading.LoadCombination.ItemsRow(
                            load_case=1,
                            factor=0.85,
                        ),
                        rstab.loading.LoadCombination.ItemsRow(
                            load_case=2,
                            factor=1.0,
                        )
                    ]
            ),
            design_situation=1,
        ),
    ]


"""Runs the structural analysis example."""

with rstab.Application() as rstab_app:

    # Step 1: Create a model
    rstab_app.create_model(name='cantilever')
    rstab_app.delete_all_objects()
    rstab_app.create_object_list(
        objs=define_structure() + define_loading()
    )

    # Step 2: Export the model to Python script
    rstab_app.export_to(
        filepath=os.path.abspath('./model_export.py'),
        export_attributes=common.import_export.PythonGrpcExportAttributes()
    )

    # Step 3: Export the model to IFC
    rstab_app.export_to(
        filepath=os.path.abspath('./model_export.ifc'),
        export_attributes=common.import_export.IfcExportAttributes()
    )