The StruXML file is used to store object data such as geometry and loads of the model. StruXML is also the format used to exchange models with Revit and Tekla. Any FEM-Design 3D Structure model can be saved as StruXML and any StruXML file can easily be opened in a text editor where it can be inspected and modified.

Open/import a StruXML-file

To open or import a StruXML-file use the File > Open-command

1584369822516-194.png

Save existing model as StruXML

An existing FEM-Design model can easily be saved as a StruXML file by going to File>Save as... and selecting StruSoft common structure XML file (*.struxml) in the Save as type dialog.

image-20200210154817-1.png

Model as StruXML

As we save a model as StruXML we can start to disect the model by reading the code.

Model

The StruXML code below describes a simply supported beam with a length of 5 meters, a rectangular cross-section 200x500, and a concrete C30/37 material:

<database struxml_version="01.00.000" source_software="FEM-Design 19.00.001" start_time="1970-01-01T00:00:00.000" end_time="2020-02-10T14:16:29.000" guid="e211356e-5f99-4a37-a005-d6c326834e45" convertid="00000000-0000-0000-0000-000000000000" standard="EC" country="S" xmlns="urn:strusoft">
<entities>
 <bar name="B.1" type="beam" guid="72f97ae8-dae3-4106-a86d-c6e9485c0354" last_change="2020-02-10T14:16:29.000" action="added">
  <bar_part guid="3641e177-f9b7-41ec-8eea-62d274c21f64" last_change="2020-02-10T14:16:29.000" action="added" name="B.1.1" complex_material="6e4dcf1d-5801-45cc-99ae-c661ec27ce72" complex_section="2dc61ff1-429f-43c2-ba23-90968f8e933e" ecc_calc="true">
   <curve type="line">
    <point x="0" y="0" z="0"></point>
    <point x="5" y="0" z="0"></point>
   </curve>
   <local-y x="0" y="1" z="0"></local-y>
   <connectivity m_x="true" m_y="true" m_z="true" r_x="true" r_y="true" r_z="true"></connectivity>
   <connectivity m_x="true" m_y="true" m_z="true" r_x="true" r_y="true" r_z="true"></connectivity>
   <eccentricity use_default_physical_alignment="true">
    <analytical x="0" y="0" z="0"></analytical>
    <analytical x="0" y="0" z="0"></analytical>
    <physical x="0" y="0" z="-0.25"></physical>
    <physical x="0" y="0" z="-0.25"></physical>
   </eccentricity>
   <end></end>
  </bar_part>
  <end></end>
 </bar>
 <supports>
  <point_support guid="fba5197e-6d85-4b07-8a6e-053bb0f4f6f0" last_change="2020-02-10T14:08:41.000" action="added" name="S.1">
   <group>
    <local_x x="1" y="0" z="0"></local_x>
    <local_y x="0" y="1" z="0"></local_y>
    <rigidity>
     <motions x_neg="10000000000" x_pos="10000000000" y_neg="10000000000" y_pos="10000000000" z_neg="10000000000" z_pos="10000000000"></motions>
     <rotations x_neg="0" x_pos="0" y_neg="0" y_pos="0" z_neg="0" z_pos="0"></rotations>
    </rigidity>
   </group>
   <position x="0" y="0" z="0"></position>
  </point_support>
  <point_support guid="4adba974-d671-4d2f-94db-b4305e76b830" last_change="2020-02-10T14:08:48.000" action="added" name="S.2">
   <group>
    <local_x x="1" y="0" z="0"></local_x>
    <local_y x="0" y="1" z="0"></local_y>
    <rigidity>
     <motions x_neg="0" x_pos="0" y_neg="10000000000" y_pos="10000000000" z_neg="10000000000" z_pos="10000000000"></motions>
     <rotations x_neg="0" x_pos="0" y_neg="0" y_pos="0" z_neg="0" z_pos="0"></rotations>
    </rigidity>
   </group>
   <position x="5" y="0" z="0"></position>
  </point_support>
 </supports>
</entities>
<sections>
 <section guid="90bb4365-64f2-4293-bcef-d389d5b0ff96" last_change="1970-01-01T00:00:00.000" action="added" name="Concrete sections, Rectangle, 200x500" type="custom" fd-mat="3" fd_name_code="Concrete sections" fd_name_type="Rectangle" fd_name_size="200x500">
  <region_group>
   <region>
    <contour>
     <edge type="line">
      <point x="-0.1" y="-0.25" z="0"></point>
      <point x="0.1" y="-0.25" z="0"></point>
      <normal x="0" y="1" z="0"></normal>
     </edge>
     <edge type="line">
      <point x="0.1" y="-0.25" z="0"></point>
      <point x="0.1" y="0.25" z="0"></point>
      <normal x="-1" y="0" z="0"></normal>
     </edge>
     <edge type="line">
      <point x="0.1" y="0.25" z="0"></point>
      <point x="-0.1" y="0.25" z="0"></point>
      <normal x="0" y="-1" z="0"></normal>
     </edge>
     <edge type="line">
      <point x="-0.1" y="0.25" z="0"></point>
      <point x="-0.1" y="-0.25" z="0"></point>
      <normal x="1" y="0" z="0"></normal>
     </edge>
    </contour>
   </region>
  </region_group>
  <end></end>
 </section>
 <complex_section guid="2dc61ff1-429f-43c2-ba23-90968f8e933e" last_change="1970-01-01T00:00:00.000" action="added">
  <section pos="0" guid="90bb4365-64f2-4293-bcef-d389d5b0ff96">
   <ecc x="0" y="0" z="0"></ecc>
   <end></end>
  </section>
  <section pos="1" guid="90bb4365-64f2-4293-bcef-d389d5b0ff96">
   <ecc x="0" y="0" z="0"></ecc>
   <end></end>
  </section>
 </complex_section>
</sections>
<materials>
 <material guid="6e4dcf1d-5801-45cc-99ae-c661ec27ce72" last_change="2013-07-19T10:00:42.000" action="added" standard="EC" country="S" name="C30/37">
  <concrete mass="2.54842" E_0="33000000" E_1="33000000" E_2="33000000" nu_0="0.2" nu_1="0.2" nu_2="0.2" alfa_0="0.00001" alfa_1="0.00001" alfa_2="0.00001" G_0="13750000" G_1="13750000" G_2="13750000" Fck="30" Fck_cube="37" Fctk="2" Fctm="2.9" Ecm="33000" gammaC_0="1.5" gammaC_1="1.2" gammaCE="1.2" gammaS_0="1.15" gammaS_1="1" alfaCc="1" alfaCt="1" Fcd_0="20" Fcd_1="25" Fctd_0="1.33333333333333" Fctd_1="1.66666666666667" Ecd_0="22000" Ecd_1="27500" Epsc2="0.002" Epscu2="0.0035" Epsc3="0.00175" Epscu3="0.0035" environment="0" creep="0" shrinkage="0" nu="0.2" alfa="0.00001"></concrete>
 </material>
</materials>
<end></end>
</database>

Database

The StruXML model contains a document element (root element) called database. This element contains all other elements that define the model. Elements that are contained within another element are usually called child elements or children.

<database struxml_version="01.00.000" source_software="FEM-Design 19.00.001" start_time="1970-01-01T00:00:00.000" end_time="2020-02-10T14:16:29.000" guid="e211356e-5f99-4a37-a005-d6c326834e45" convertid="00000000-0000-0000-0000-000000000000" standard="EC" country="S" xmlns="urn:strusoft">
  <entities>
     <!-- This  child element contains the bar and the two supports -->
  </entities>
  <sections>
     <!-- This child element contains the section of the bar -->
  </sections>
  <materials>
     <!-- This child element contains the material of the bar -->
  </materials>
</database>

Bar

The first element in the StruXML model is a bar named B.1. This element is contained within the entities element and is therefore a child of the parent element entities. This bar element contains a another element called bar_part which contains most of the information about the bar such as material, section, geometry (curve) and much more. The material and section are just references to other elements within the StruXML code. These references are guid references. A guid is what is called a globally unique identifier.

<bar name="B.1" type="beam" guid="72f97ae8-dae3-4106-a86d-c6e9485c0354" last_change="2020-02-10T14:16:29.000" action="added">
  <bar_part guid="3641e177-f9b7-41ec-8eea-62d274c21f64" last_change="2020-02-10T14:16:29.000" action="added" name="B.1.1" complex_material="6e4dcf1d-5801-45cc-99ae-c661ec27ce72" complex_section="2dc61ff1-429f-43c2-ba23-90968f8e933e" ecc_calc="true">
   <curve type="line">
    <point x="0" y="0" z="0"></point>
    <point x="5" y="0" z="0"></point>
   </curve>
   <local-y x="0" y="1" z="0"></local-y>
   <connectivity m_x="true" m_y="true" m_z="true" r_x="true" r_y="true" r_z="true"></connectivity>
   <connectivity m_x="true" m_y="true" m_z="true" r_x="true" r_y="true" r_z="true"></connectivity>
   <eccentricity use_default_physical_alignment="true">
    <analytical x="0" y="0" z="0"></analytical>
    <analytical x="0" y="0" z="0"></analytical>
    <physical x="0" y="0" z="-0.25"></physical>
    <physical x="0" y="0" z="-0.25"></physical>
   </eccentricity>
   <end></end>
  </bar_part>
  <end></end>
 </bar>

Point supports

After the bar element we can find an element called supports that contain the point supports of the model. These point supports are named S.1 and S.2. We can read out where they are placed by looking at the position element. Moreover, we can inspect the motion and rotation springs of the point supports. It is possible to identify that S.2 has the motion spring in positive and negative x-direction set to 0.

<supports>
  <point_support guid="fba5197e-6d85-4b07-8a6e-053bb0f4f6f0" last_change="2020-02-10T14:08:41.000" action="added" name="S.1">
   <group>
    <local_x x="1" y="0" z="0"></local_x>
    <local_y x="0" y="1" z="0"></local_y>
    <rigidity>
     <motions x_neg="10000000000" x_pos="10000000000" y_neg="10000000000" y_pos="10000000000" z_neg="10000000000" z_pos="10000000000"></motions>
     <rotations x_neg="0" x_pos="0" y_neg="0" y_pos="0" z_neg="0" z_pos="0"></rotations>
    </rigidity>
   </group>
   <position x="0" y="0" z="0"></position>
  </point_support>
  <point_support guid="4adba974-d671-4d2f-94db-b4305e76b830" last_change="2020-02-10T14:08:48.000" action="added" name="S.2">
   <group>
    <local_x x="1" y="0" z="0"></local_x>
    <local_y x="0" y="1" z="0"></local_y>
    <rigidity>
     <motions x_neg="0" x_pos="0" y_neg="10000000000" y_pos="10000000000" z_neg="10000000000" z_pos="10000000000"></motions>
     <rotations x_neg="0" x_pos="0" y_neg="0" y_pos="0" z_neg="0" z_pos="0"></rotations>
    </rigidity>
   </group>
   <position x="5" y="0" z="0"></position>
  </point_support>
 </supports>

Sections

The sections element contains all referenced sections of a model. In the StruXML model we can find the complex_section that is referenced by the bar_part as well as the base section which is referenced by this complex_section. A complex_section is simply a definition of the start and end section of a bar. In this specific case the complex_section references the base section two times as the bar star and end section is the same. The base section referenced is named  Concrete sections, Rectangle, 200x500.

<sections>
 <section guid="90bb4365-64f2-4293-bcef-d389d5b0ff96" last_change="1970-01-01T00:00:00.000" action="added" name="Concrete sections, Rectangle, 200x500" type="custom" fd-mat="3" fd_name_code="Concrete sections" fd_name_type="Rectangle" fd_name_size="200x500">
  <region_group>
   <region>
    <contour>
     <edge type="line">
      <point x="-0.1" y="-0.25" z="0"></point>
      <point x="0.1" y="-0.25" z="0"></point>
      <normal x="0" y="1" z="0"></normal>
     </edge>
     <edge type="line">
      <point x="0.1" y="-0.25" z="0"></point>
      <point x="0.1" y="0.25" z="0"></point>
      <normal x="-1" y="0" z="0"></normal>
     </edge>
     <edge type="line">
      <point x="0.1" y="0.25" z="0"></point>
      <point x="-0.1" y="0.25" z="0"></point>
      <normal x="0" y="-1" z="0"></normal>
     </edge>
     <edge type="line">
      <point x="-0.1" y="0.25" z="0"></point>
      <point x="-0.1" y="-0.25" z="0"></point>
      <normal x="1" y="0" z="0"></normal>
     </edge>
    </contour>
   </region>
  </region_group>
  <end></end>
 </section>
 <complex_section guid="2dc61ff1-429f-43c2-ba23-90968f8e933e" last_change="1970-01-01T00:00:00.000" action="added">
  <section pos="0" guid="90bb4365-64f2-4293-bcef-d389d5b0ff96">
   <ecc x="0" y="0" z="0"></ecc>
   <end></end>
  </section>
  <section pos="1" guid="90bb4365-64f2-4293-bcef-d389d5b0ff96">
   <ecc x="0" y="0" z="0"></ecc>
   <end></end>
  </section>
 </complex_section>
</sections>

Materials

The materials element contains all referenced materials of a model. In the StruXML code we can find one material named C30/37 with according material properties.

 <materials>
 <material guid="6e4dcf1d-5801-45cc-99ae-c661ec27ce72" last_change="2013-07-19T10:00:42.000" action="added" standard="EC" country="S" name="C30/37">
  <concrete mass="2.54842" E_0="33000000" E_1="33000000" E_2="33000000" nu_0="0.2" nu_1="0.2" nu_2="0.2" alfa_0="0.00001" alfa_1="0.00001" alfa_2="0.00001" G_0="13750000" G_1="13750000" G_2="13750000" Fck="30" Fck_cube="37" Fctk="2" Fctm="2.9" Ecm="33000" gammaC_0="1.5" gammaC_1="1.2" gammaCE="1.2" gammaS_0="1.15" gammaS_1="1" alfaCc="1" alfaCt="1" Fcd_0="20" Fcd_1="25" Fctd_0="1.33333333333333" Fctd_1="1.66666666666667" Ecd_0="22000" Ecd_1="27500" Epsc2="0.002" Epscu2="0.0035" Epsc3="0.00175" Epscu3="0.0035" environment="0" creep="0" shrinkage="0" nu="0.2" alfa="0.00001"></concrete>
 </material>
</materials>

XML Schema

The StruXML format comes with a XML Schema that describes this specific XML type.

Latest version

January 2019

StruXML SchemaDownload 

Disclaimer: All example files, wrappers and documentation are for illustrative and educational purposes and may not interact with FEM-Design in a reliable way depending on your version, installation and content of the files. Furthermore, StruSoft won´t guarantee full support of the API functions since they are customizable by the customer.

Tags: API
Created by Isak Björhag on 2020/02/07 13:18
Copyright 2019 StruSoft AB
FEM-Design Wiki