Guides and Articles

Use this documentation when building your Tekla Structures apps

Tekla Structures 17.0 Open API Release Notes

Updated: 13 May 2019

This document explains new features, fixes and improvements in Tekla Open API 17.0.

Model API content frozen


  • The goal of the API content freeze is that modeling applications and plug-ins will then work with future Tekla Structures versions without recompilation. The freezing is valid until compatibility is broken due to a mandatory reason such as upgrading the API assemblies to a newer .NET framework version.

The scope

  • The API content freeze concerns the following assemblies in the API:
    • Tekla.Structures.dll
    • Tekla.Structures.Model.dll
    • Tekla.Structures.Plugin.dll
    • Tekla.Structures.Dialog.dll
    • Tekla.Structures.Datatype.dll

What does it mean in practice?

  • In practice, the freezing means that the public properties and methods of public classes in 17.0 will not change with future versions in the above assemblies. However, new classes or new properties or methods to existing classes can still be added.

How is compatibility achieved?

  • Compatibility will be handled using configuration files. For plug-ins this happens automatically, but for applications the “bindingRedirect” element must be added to the application configuration file (app.config). For example: 
    <assemblyIdentity name="Tekla.Structures” publicKeyToken="2f04dbe497b71114” culture="neutral" /> 
    <bindingRedirect oldVersion=”” newVersion=”"/> 

.NET Framework 4.0 and other general changes

.NET Framework 4.0

  • Tekla Open API now uses the .NET Framework version 4.0.

API architecture clarified

  • Obsolete methods and constructors (listed later in this document) have been removed.
  • Dependencies between assemblies have been reduced. Now it is easier to implement a drawing application without using the Tekla.Structures.Model assembly.
  • The GetAdvancedOption method has been moved from the Tekla.Structures.Model namespace to the Tekla.Structures namespace. A new TeklaStructuresSettings class provides methods to inquire advanced options.
  • The GetSelectedObjects method has been moved from the Tekla.Structures.Model namespace to the Tekla.Structures.Model.UI namespace. The method can now be found from the ModelObjectSelector class.
  • The ModuleManager class has been moved from the Tekla.Structures.Model namespace to the Tekla.Structures namespace.
  • The GetCurrentProgramVersion method has been moved from the Model class in the Tekla.Structures.Model assembly to the TeklaStructuresInfo class in the Tekla.Structures assembly.
  • The AnalysisResult class has been moved from the Model assembly to the Analysis assembly.

Remoting exception thrown

  • A RemotingException is now thrown if the remote connection to Tekla Structures fails.


  • The log file “dotlog.txt” doesn’t exist anymore in the \nt\bin folder. Loaded plug-ins and their assemblies are now written to the Tekla Structures log file.

Tekla.Structures Assembly

GetAngleBetween  method improved

  • Previously, the GetAngleBetween method in the Vector class worked only with angles bigger than 2.56 degrees; now the tolerance is 0.8 degrees.

Tekla.Structures.Plugins Assembly

UDAs can be added to a plug-in

  • The Identifier property has been added to the PluginBase and ConnectionBase classes. The property can be used to store custom properties as UDAs to a plug-in inside the Run method.

Plug-in symbol added

  • The symbol is now drawn and visible by default in all model plug-ins with Forms dialogs. For plug-ins with inp dialog definition the symbol visibility can be defined in the inp file by adding the line: draw
    (1, 50.0, 50.0, 0.0, 0.0)

Max 10 input definitions

  • Maximum number (10) checking has been added for input definitions in the <List>InputDefinition for PluginBase components.

Tekla.Structures.Model Assembly

Fields changed to properties

  • All fields of the Model assembly classes have been changed to properties.

Obsolete constructor removed

  • The Model constructor with the bool parameter SkipChannelCreation has now been removed (the constructor was marked as obsolete earlier). Use Model() instead.

Obsolete methods removed

  • The Open method, which was earlier marked as obsolete, has now been removed. Use methods in Tekla.Structures.Model.Operations instead.
  • The obsolete method SaveAsWebModel has been removed. Use methods in Tekla.Structures.Model.Operations instead.

PickFace added

  • The PickFace method returns a PickInput instance that contains the face points and the object. Please see the code example in the PickInput class documentation.

ComponentInput implements ICollection

  • The ComponentInput class now implements the ICollection interface. The InputItem class can be used with the PickInput class in face picking. For example: 
    ComponentInput ComponentSel = C.GetComponentInput();
    IEnumerator Enumerator = ComponentSel.GetEnumerator();
    while (Enumerator.MoveNext()) 
        InputItem ObjectInput = Enumerator.Current as InputItem; 
        if (ObjectInput.GetInputType() == InputItem.InputTypeEnum.INPUT_1_OBJECT) 
            Beam BeamInput = ObjectInput.GetData() as Beam; 
  •  The maximum number of InputItems in ComponentInput is 10.

Class for edge chamfers added

  • The EdgeChamfer class has been added. With the new class you can define how the part edge is chamfered. For example: 
    Point Point = new Point(0, 0, 0); 
    Point Point2 = new Point(1000, 0, 0); 
    Beam Beam = new Beam(); 
    Beam.StartPoint = Point; 
    Beam.EndPoint = Point2; 
    Beam.Profile.ProfileString = "400*400"; 
    Beam.Finish = "PAINT"; 
    EdgeChamfer EdgeChamfer = new EdgeChamfer(new Point(0, -100, 0), new Point(0, 200, 0)); EdgeChamfer.FirstChamferEndType = EdgeChamfer.ChamferEndTypeEnum.BEVELLED; 
    EdgeChamfer.FirstBevelDimension = 50; 
    EdgeChamfer.Chamfer.X = 20; 
    EdgeChamfer.Chamfer.Y = 20; 
    EdgeChamfer.Father = Beam; 

Insert, delete and get phases

  • The Insert and Delete methods have been added to the Phase class.
  • The GetPhases method was added to the Model class. The method returns a PhaseCollection instance.

Display prompt

  • Access to the Tekla Structures message panel is now possible by using the DisplayPrompt method in the Operation class.

Checking numbering

  • The IsNumberingUpToDate method has been added to the Operation class.

Return value of rebar group splitting changed

  • The Split method for rebar groups, located in the Operation class, splits the rebar group and creates a new one in the given position. Earlier the method returned a boolean value, but now the method returns the created RebarGroup instance if the splitting was successful.

Fetching objects by type

  • Now it is possible to fetch objects by their type by using the GetAllObjectsWithType method in the ModelObjectSelector class. For example: 
    ModelObjectEnumerator myEnum = myModel.GetModelObjectSelector().GetAllObjectsWithType(new System.Type[] { typeof(Part) , typeof(BoltGroup) });

Exceptions improved

  • The Material and Profile properties need to have some information before inserting/modifying a Part, otherwise an ArgumentException is thrown.
  • An ArgumentNullException has been added to HierarchicObject, Task and HierarchicDefinition constructors.

Stitched weld

  • Now it is possible to choose the weld technique: stitched weld or not stitched weld. "Intermittent" properties for above and below lines have been removed. Now the weld is considered to be intermittent if the pitch value is greater than zero.

Question and warning dialogs removed

  • The modal dialog "Assembly structure includes weldings or bolts. Delete weldings and bolts?" is not shown anymore when trying to remove or add a part to an assembly. The methods fail if there are workshop welds/bolts.
  • Modal warning dialogs do not appear anymore when combining parts; the warnings are ignored.

Class property added to components

  • The Class property has been added to the Connection, Detail and Seam classes.

Seams without secondaries

  • Seams without any secondaries are now supported.

Getting objects by bounding box changed

  • The GetObjectsByBoundingBox method in the ModelObjectSelector class has been changed to work in the current work plane. Earlier, the bounding box axis stayed oriented to the global plane, which caused the method to grab several more objects when trying to set the bounding box to a skew plane.

ProjectInfo improved

  • The ProjectInfo class now contains the Info1 and Info2 properties which appear in the Project Properties dialog in Tekla Structures.

Clip plane support added

  • A new class ClipPlane has been added. The class contains the following methods:
    • Insert     - Creates a new clip plane to the view
    • Delete   - Deletes a clip plane from the view.
    • Modify  - Modifies the clip plane position in the view.
  • The GetClipPlanes method for getting all the clip planes from the view has been added to the View class. A new class ClipPlaneCollection has also been added.

ModelHistory class changed

  • The ModelHistory class now supports multiuser models. The class has also been changed to be a static class.
  • The method names have been changed to follow the naming convention in the ModelObjectSelector: “GetAllModifiedAfterModStamp” -> “GetModifiedObjects”.
  • The new method names are:
    • GetModifiedObjects(ModificationStamp ModStamp)
    • GetModifiedObjectsWithType(ModificationStamp ModStamp, ModelObject.ModelObjectEnum Enum)
  • Methods to retrieve deleted objects have been added:
    • GetDeletedObjects(ModificationStamp ModStamp)
    • GetDeletedObjectsWithType(ModificationStamp ModStamp, ModelObject.ModelObjectEnum Enum)

Beam. Type added

  • The Type property has been added to the Beam class for identifying the beam types column, pad footing and strip footing in the selection and creation of beams. In the creation, the Type must be initialized in the constructor.

Other fixes

  • Beams that use the plate profile and are created with components can now be selected correctly.
  • It is now possible to change the number of points a contour plate has. Earlier, the modification of a contour plate failed if the number of points was changed.
  • Now it is possible to select nonparallel tapered curved rebar groups. Earlier, the “Object cannot be selected” exception was thrown.
  • The PrimaryAxisDirection vector in the Load class is normalized when inserting/modifying Load objects.
  • A new solid creation type (PLANECUTTED) has been added to the Solid class. When the type is used, the solid consists of the raw solid, fittings and cut planes.

Tekla.Structures.Drawing Assembly

Obsolete constructor removed

  • The obsolete DrawingHandler constructor with the bool parameter SkipChannelCreation has now been removed (the constructor was marked as obsolete earlier). Use DrawingHandler () instead.

Obsolete AttributeFile property removed

  • The duplicate attribute file name property has been removed from the View class. The LoadAttributes method in the ViewAttributes class should be used instead.

Including part count in the tag

  • The IncludePartCountInTag property has been added to the StraightDimensionSetAttributes class.

Class for linking dimension lines added

  • A new class DimensionLink has been added.

Filtering by ReinforcementBase

  • Support for filtering by ReinforcementBase has been added.

Other fixes

  • Changing mark properties caused unwanted free-placing of marks in some cases. This has been fixed. Earlier the attribute file was not loaded correctly on view insertion. This has been fixed.

Tekla.Structures.Datatypes Assembly

Parsing distances improved

  • The Distance.Parse method now supports CurrentCulture and InvariantCulture.

Tekla.Structures.Dialog Assembly

AutoDefaults supported

  • AutoDefaults are now supported in plug-in connections with PluginFormBase dialogs


  •  Now the LoadAttributes method works correctly for plug-ins with PluginFormBase dialogs.
  • Profiles with brackets are now written properly in the ProfileSelectionForm.
  • Decimal values are now using dots instead of commas.

Tekla.Structures.Catalogs Assembly

Method removed

  • The method CreateRemotingChannel in the CatalogHandler class has been removed.

Getting profile names faster

  • The SelectInstances property has been added to the ProfileItemEnumerator class. It is now possible to loop through the items, getting their names, without selecting each one of them. This feature is good for cases where only the name is necessary because then the enumeration is faster.

RebarItem improved

  • The rebar item now includes all the properties available in the catalog such as the actual diameter and weight.
  • The bending radius had a wrong type (string), but it has now been fixed and the type is double.
  • The RebarItem.Select method has been implemented.

MeshItem improved

  • The mesh item property types have now been changed to follow the data types in the mesh catalog.
  • The MeshItem.Select method has been implemented.
  • Units are now returned in millimeters.

Normal folder search order

  • Rebar and mesh catalogs are now searched for in the model folder, XS_PROJECT, XS_FIRM, and XS_PROFDB.

Tekla.Structures.Analysis Assembly

Obsolete constructor removed

  • The Analysis constructor with the bool parameter SkipChannelCreation has now been removed (the constructor was marked as obsolete earlier). Use Analysis() instead.

AnalysisModel class fixes

  • Insert: Refreshes the model and adds the model to the analysis models dialog table.
  • Delete: Removes the model from the analysis models dialog table.
  • Select: Refreshes the model.
  • The enumeration of analysis models does not select the models. Only the model identifier and name are retrieved.

AnalysisModelHandler class added

  • It is now possible to set and get the active analysis model, and to modify the analysis model content.
         GetActiveModel          Gets the current active model.
         SetActiveModel   Sets the active model.
         AddPart   Adds a (physical) part to the analysis model.
         RemovePart   Removes a (physical part to the analysis model.
         AddLoad   Adds a load to the analysis model.
         RemoveLoad   Removes a load from the analysis model.