Grasshopper-Tekla Live Link FAQ

Tekla Structures
Not version-specific
Tekla Structures
Environment
Not environment-specific

The Grasshopper-Tekla live link setup and documentation can be found here.

Back to top

A: The Grasshopper-Tekla Live Link is a set of components that installs into the Grasshopper UI. When these components are used in a Grasshopper definition they will create and modify objects in Tekla Structures.

Image
Grasshopper Tekla Live Link


Setup and documentation for the link: https://support.tekla.com/help/tekla-structures/not-version-specific/grasshopperteklalink

 

Back to top

A: The Grasshopper Tekla Drawing link lets you manipulate Tekla drawings using Grasshopper. It's an open source project by Grzegorz Olszewski, check it out here:

For installation you'll find downloadable Releases on the right hand side.

 

Back to top

Q: What is the Grasshopper Component?

A: The Grasshopper Component offers an optional way to trigger a Grasshopper definition without having Rhino or Grasshopper visible. It uses the the Rhino.Inside technology which requires Rhino 7 or newer.

The Grasshopper Component is a Tekla Structures plugin that shows up in the Component Catalog in Tekla Structures. It looks and behaves like a traditional Tekla custom component, but can trigger any Grasshopper definition in the background. Grasshopper then creates the objects in Tekla Structures, using the Grasshopper Tekla live link.

Image
Grasshopper Component


Setup and documentation for the GH component: https://support.tekla.com/help/tekla-structures/not-version-specific/ts-grasshopper-component

The rest of this FAQ primarily concerns the GH-Tekla live link.

 

Back to top

Q: What version of Rhino should I use?

A: The Grasshopper-Tekla live link works with both Rhino 6, Rhino 7 and Rhino 8 (see below).

  • If upgrading your Rhino version, you don’t need to re-install the link.
  • For Rhino 8, you need to make Rhino 8 use the .Net Framework - use the SetDotNetRuntime command in Rhino and set it to NETFramework, then restart Rhino.
  • Rhino download here: https://www.rhino3d.com/download/rhino-for-windows/evaluation

The previously mentioned Grasshopper Component works with Rhino 7 or newer.
 

Back to top

A: Yes, you just need to make Rhino 8 use the .Net Framework.

  • Use the SetDotNetRuntime command in Rhino and set it to NETFramework, then restart Rhino.


The Grasshopper Component requires at least Rhino 8.5 and needs to be updated to version 1.4 to work properly. It will then offer an option to use Rhino 8 within the dialog. Grab the latest version from Tekla Warehouse:

https://warehouse.tekla.com/#/catalog/details/94b0cde2-3aab-4e50-b983-e6273a44e0b1

 

Back to top

A: Yes. Starting version 1.18, you can install the link for several Tekla versions in parallel. See the next question about updating the link for installation instructions.

If several versions are installed, Grasshopper will show a list of them and ask which one to use each time Grasshopper is launched. 

 

Back to top

A: Starting version 1.18, you can install the link for several Tekla versions in parallel. If several versions are installed, Grasshopper will show a list of them and ask which one to use each time Grasshopper is launched.

To install a version, unpack the content of the installation zip package to any location on the disk and run GrasshopperTeklaLink.Setup.exe. Keep Rhino closed during the setup. Do this for every version you'd like to install.

Sometimes you might not have permission to run the Setup.exe file. For manual installation/update of 1.18 or newer, put both GrasshopperTeklaLink.[TeklaVersion].dll and GrasshopperTeklaLink.Loader.gha into the Grasshopper Libraries folder. See the Installation Instructions text file in the zip package for details.

The file structure when multiple versions are installed might look like this:

Image
GH link files

 

 

 

 

 

 

 

For older link versions that don't have a Setup.exe you need to replace the link .gha file in order to update the link or switch to target another Tekla version.

  1. In Grasshopper, click File > Special Folders > Components Folder to open the Libraries folder.
  2. Close Grasshopper and Rhino, and replace GrasshopperTeklaLink.gha (or GrasshopperTeklaLink.Loader.gha) in the Libraries folder with the new version .gha file from the installation package. If there's a GrasshopperTeklaLink.ghlink file in the folder, delete it.
  3. Launch Grasshopper again
  4. If the new link version targets another Tekla Structures version, the Grasshopper components (including any already inserted ones) will now interact with the new Tekla version instead.

 

Back to top

Q: Why doesn't the Tekla tab or components show up in Grasshopper?

A: If the Tekla tab doesn’t show up, the link file might be blocked as it’s downloaded from the internet. To unblock the file,

  1. Navigate to the folder containing the .gha file. Per default this is the Grasshopper Libraries folder (in Grasshopper, click File > Special Folders > Components Folder). For version 2024.1.16 and 17, the .gha might be located the Tekla Structures bin folder.
  2. For each file named GrasshopperTeklaLink.Loader.gha, GrasshopperTeklaLink.[versionnumber].dll or GrasshopperTeklaLink.gha, right-click the file and click Properties. You might not have all files depending on the version.
  3. Under the General tab, click on the Unblock button, and click OK. (If you don’t see an Unblock button, the file is not blocked.)
  4. Restart Rhino/Grasshopper. The Tekla tab should now be visible in Grasshopper.

 

If the files are unblocked but still nothing gets loaded, check if there are any error messages in the Rhino command history window or command prompt.

 

The link might fail to load if you try to use an Educational version of the link with the full Tekla version or vice versa.

 

If using Rhino 8, you will need to make Rhino 8 use the .Net Framework if you haven't done so already - use the SetDotNetRuntime command in Rhino and set it to NETFramework, then restart Rhino.

 

Another (rarer) reason the link fails to load is be that memory loading using COFF is turned off.

  1. Type GrasshopperDeveloperSettings into the Rhino command prompt.
  2. Check the memory load checkbox and hit OK. 

    Image
    GH Memory load
  3. Restart Rhino/Grasshopper. The Tekla tab should now be visible in Grasshopper.

In even rarer cases you might need to uncheck this option instead.

 

Back to top

Q: Why do my inserted Tekla components turn red?

A: Usually, the object creating components turn red when they fail to communicate with Tekla Structures, or if some of the inputs are bad. Check the balloon tip at the top right of the component for any error messages that might help you figure out what's wrong.

Here are some general things to check if the Tekla connection seems to be the issue.

  • Make sure you launch Tekla Structures and open a model first, and then launch Rhino and Grasshopper. Otherwise the API link can't be established.
  • Make sure you have installed a version of the link that matches the Tekla Structures version you are using. If needed you can re-install the link as per the instructions on the help page.
  • Make sure you're not using the Viewer or Planner configuration of Tekla Structures, or the Carbon license, as you can't create objects with these.
  • If using Rhino 8, make sure you have performed the SetDotNetRuntime command in Rhino and set it to NETFramework, then restarted Rhino.
  • You might have another Rhino or Grasshopper plugin installed that references another version or service pack of Tekla Structures, and that plugin got loaded first. Something like the Tekla Drawing Link or Geometry Gym's Tekla plugin. This might cause the link to target the wrong Tekla version.

 

Back to top

A: If the components fail to create anything in the Tekla Structures view, here are some things to check.

  • If the components have turned red, check the previous question about red components.
  • Check if there are any generated objects listed at the output of the Tekla components in Grasshopper.
    • If there are objects listed in Grasshopper, right-click the component and click Zoom to objects in Tekla to move the Tekla view to the objects.
  • If you can't see the objects in Tekla, make sure to set the work area in Tekla Structures to the entire model (right-click the Tekla view -> Set work area to entire model) and adjust the view depth so it's large enough to include any generated geometry (right-click the view -> Properties... -> Increase the view depth both up and down by adding a few 0:s).
  • If still nothing shows up, check that the profiles and grades you're using for the Tekla components exist in your environment and change them if not. If you haven't set the profile etc yourself the default values apply, but these might also be missing from your environment (in that case you might want to change them from the Grasshopper menu: Tekla > Default Attributes...).

 

Back to top

Q: Why do I get the message "System.MethodAccessException: Current Tekla Structures module configuration does not allow this operation" when inserting a Tekla GH-component?

Image
ConfigurationException.png


A: This happens if you use the Viewer or Planner configuration of Tekla Structures, or the Carbon license. The link requires a modelling license. Also make sure you pick a modelling configuration on startup.
 

Back to top

Q: Can I shut down Rhino/Grasshopper and Tekla and later continue where I left off?

A: Yes, the inserted Grasshopper components will reconnect with the objects in the Tekla model the next time you open Grasshopper.

  • Remember to save both the the model and the Grasshopper definition before closing, to avoid getting duplicated objects in the model.
  • When starting work again, make sure you open the model first and then launch Grasshopper.
  • The object mapping information is stored in the 'Grasshopper' subfolder of the Tekla model folder.

 

Back to top

Q: Can I view the model without Grasshopper?

A: Yes, you can open the Tekla model without launching Grasshopper or even having it installed and the geometry is still there. If you can't see anything, try fitting the view area to the whole model and adjust the view depth both up and down from the view properties.

  • Note that any modifications you make to the generated objects might be reset the next time you run the Grasshopper definition (to avoid this, you can Bake the objects to Tekla from the Grasshopper components' right-click menu).

 

Back to top

Q: Can I work in Imperial units?

A: Yes. For geometry, the Tekla components will use the units of the currently open Rhino document, and translate that to the units of the currently open Tekla model.

  • The scale is read whenever a Rhino document is created or opened (so you'd need to re-open the document if changing the scale from the document settings).
  • Certain attribute inputs like parametric profile sections might need to be in mm even if the Tekla and Rhino models are using something else like feet and inches. Scale accordingly.
  • If the Rhino document is changed, points picked in Tekla will use the new scale. However referenced or internalized Rhino/Grasshopper point and geometry values won't adapt. Keep this in mind if reusing a script from a different system.
    • E.g the example definitions are created using metric (mm) units, so this means the slider values etc might need to be adjusted if viewed with imperial units.

 

Back to top

Q: How can I make a copy of the Grasshopper file so that the copy creates new objects instead of updating the existing ones?

A: If you copy a Grasshopper definition file, the copy will still map to and update the original objects in Tekla Structures. This is useful for backups or model sharing but not always desired.

To duplicate a GH definition so that new objects are generated by the copy, you'd need to copy the GH components into a new GH definition (rather than copying the file itself). This gives the GH components new GUIDs and they will create new objects in Tekla.

It's quickly done using keyboard shortcuts:

  1. Ctrl+A select all
  2. Ctrl+C copy all
  3. Ctrl+N new GH file
  4. Ctrl+V paste all
  5. Ctrl+S save the new file

The new file will now generate and refer to new Tekla objects.

 

Back to top

Q: Why do I suddenly get duplicated objects in my Tekla model? 

A: Here is a list of things that might cause the mapping to break between Grasshopper and Tekla, resulting in changing GUIDs or duplicated objects:

  • Undoing in Tekla rather than Grasshopper (e.g. pressing Ctrl+Z with the Tekla window active, this could easily happen subconsciously)
    • Objects that have been removed by GH might be brought back by Tekla and have no connection to the GH script any more.
  • Copying a Tekla component within Grasshopper
    • This creates new objects in Tekla in the same location as the old ones (as it should). The new objects will be left behind if you delete the new component in GH (both if you delete the component manually or by undoing the copying).
  • Cutting and pasting a Tekla component within Grasshopper
    • Will create duplicated objects, since when you paste the component GH actually inserts a new component with a new instance GUID (so no connection to the old component can be derived).
  • Clustering and then un-clustering Tekla components
    • When you cluster an object creating component, it will continue to modify the same Tekla objects that it originally created. But if you then explode the cluster again, you will get duplicated objects, since Grasshopper gives new GUIDs to the extracted components. Similarly, if you open a backup from before the objects were clustered, the backup will generate new objects.
  • Not saving the GH script before closing
    • Objects that were created by new GH components that weren't saved with the script will remain in the Tekla model.
  • Not saving the Tekla model before closing
    • Tekla objects that have been removed by GH will be re-loaded into the Tekla model when reopening, and don't belong to a GH component any more.
  • Losing the API connection - can happen e.g. if Tekla or Rhino/GH is being unresponsive for too long during a solution (or more rarely under a number of unpredictable circumstances).
    • This usually means the mapping can't be updated between GH and Tekla, so continuing to work with the GH script might break the mapping.
    • There should appear warnings on the GH components if this seems to happen, in which case you'd need to restart Rhino before continuing.
    • This state is tricky to replicate, so the warnings might not always be triggered. Let us know if you find a way to replicate situations where the mapping breaks!

Of course, having regular backups of both the definitions and the Tekla model (including the Grasshopper subfolder) helps if things go really south.
 

Back to top

Q: Can I put my Tekla components inside a cluster?

A: Yes, starting version 1.17 you can put any component from the Grasshopper-Tekla link inside a cluster. 

  • When you cluster an object creating component, it will continue to modify the same Tekla objects that it originally created.
  • Subsequent copies of the cluster will generate new objects, as expected.
  • NOTE: If you explode a cluster, you will get duplicated objects, since Grasshopper gives new GUIDs to the extracted components.
  • NOTE: If you cluster a component, and then open a backup of the definition containing a pre-clustered version of the component, that pre-clustered component will create new objects when it's solved. If you then re-open the definition with the clustered version and make a copy of the cluster with the clustered component, the cluster copy will hi-jack the new objects created by the pre-clustered version.
  • NOTE: Putting Tekla components in clusters means that the mapping files (in the Grasshopper subfolder of the Tekla model folder) for the clustered components will use 23 more chars than previously. Paths in the Windows API (and Tekla) can be max 260 chars.

 

Back to top

Q: Why do the Tekla components handle matching of tree inputs differently from how standard Grasshopper components do the matching?

A: Most Tekla components read in every input at once as trees or lists to be able to perform batch operations when reading/writing guids to file, updating the Tekla model etc. Otherwise execution would be much slower. As a side effect the components can't take advantage of Grasshopper's default mapping behavior and instead often resort to flattening every input (and then rebuild the tree structure for the output).
 
The workaround when the behavior seem inconsistent is to craft the input lists/trees to have an equal number of entries, so that they can all be paired off correctly. You can match the length of your inputs (number of input elements in each tree) by duplicating the inputs you need in the smaller trees using the Duplicate Data component, measuring the reference list lengths with the List Length component. The Trim Tree component might in some cases be used on the longer tree depending on what level you'd like to match, and sometimes you need to be a bit clever with graftings and flattenings.

For certain components like Rebar Group and Component the input matching can be particularly tricky, since these components need to support one-to-one, many-to-one and many-to-many relationships, and each group or component can have multiple input shapes or secondaries. See the question about inserting multiple connections later in this FAQ.
 

Back to top

Q: Why doesn't the output structure of my Tekla component seem to match the input tree structure?

A: If there are empty branches or null objects in the input, some branches may be missing from the output structure.

  • If the output structure seems wrong or flattened for some other reason, you can use the Unflatten Tree component on the output with the input tree as the guide.

 

Back to top

Q: How can I read properties or UDA:s from an existing Tekla part?

A: To extract information from existing Tekla objects, reference them into the Grasshopper definition. Then:

  • For report properties, use the Get Property component.
  • For UDA:s, use the Get UDA value or Get All UDAs component. Get Property should also work for UDAs.
  • For other attributes like profile, class, position, numbering etc as well as the geometry use the Deconstruct and Expand components.
  • For extracting solid geometry use the components Convert to Brep or Convert to Mesh (faster).

 

Back to top

Q: Why can't I set UDA:s for my parts with the Attributes or Set UDAs component? The component goes red or the value simply doesn't show up in Tekla where I expect.

A: Some things to look out for:

  • Make sure you're using the right syntax to set the attributes, if you aren't using the Construct UDA component. There's further info in the help and in the UDA input tooltip. If the component is red there might be some useful error information in the balloon tooltip.
    • Syntax example:
      MyStringUDA "my user text"
      MyIntegerUDA 3
      MyFloatUDA 12.5
    • To set multiple UDAs to a single object, they need to be input as multiline data and not as a list. UDAs in a list will be sequentially assigned to different objects.
  • Make sure you're using the right type for the UDA.
    • Make sure that the UDA value you're setting has the type (string/double/int) that Tekla expects.
    • In general, any UDA can be set as either a string, a double or an int and Tekla won't complain. However the dialogs and reports in Tekla that use the UDA will expect it to be one specific type, so you need to use the correct one.
    • Use the Construct UDA component to easily create an UDA with any type, or see the syntax in the help or in the UDA input tooltip on how the UDA type can be specified as a text input.
  • Make sure you're using the right name for the UDA.
    • You can set an UDA with any name from Grasshopper and it will be written to the db, but if you want a new UDA to show up in the User-defined attributes dialog in Tekla the UDA needs to be specified in objects.inp: https://support.tekla.com/doc/tekla-structures/2023/sys_customizing_uda
    • The UDA names are case-sensitive, so there's a difference between "Comment" and "comment".
    • If setting existing UDA fields, note that the name is generally _not_ the label that you see in the User-defined attributes dialog. Instead, you need to find out the actual name of the UDA that's backing the field.
      • To get the name of an existing UDA field, use the Get All UDAs component
        1. Insert an object manually into Tekla Structures
        2. In the User-defined attributes dialog, set a value in the field you're interested in
        3. Reference the object into Grasshopper and use the Get All UDAs component to read the UDA name
      • Alternatively, save a preset and check the UDA names from there.

        1. In the User-defined attributes dialog, set a value in the field you're interested in
        2. Save the part attributes as a preset
        3. Open the preset file (located in [modelfolder]/attributes, the one that has the extension .more contains the UDA:s) in a text editor
        4. Locate your value
          -> The name before the value is your UDA name
           
        Image
        Get-UDA-Name.png

 

Back to top

Q: Why do the edges of my plate or slab look all weird and jagged?

A: If the boundary you feed to the Plate or Slab component is doing a lot of twists and turns, the default maximum of control points that gets added in Tekla (99) might not be enough.

  • In that case, right-click the icon/text of the inserted component in Grasshopper and increase the point limit from the context menu. Keep in mind that more than 99 points quickly drains performance without producing a much better output if the boundaries are smooth and simple.

 

Back to top

Q: Why can't i area select bolts or reference objects when I try to reference them from Tekla?

A: This is an API limitation.

Using version 1.19 or newer, you can area select the objects in Tekla before referencing them into Grasshopper:

  • When referencing objects with 'Model Object' or other Tekla params, the params will first try to read in currently selected Tekla objects from the model.
  • In case nothing valid is selected in the model, the user is asked to select objects as before.

 

Back to top

Q: Why do I get the message "Solution exception:Cannot construct an arc with three points in a line" when trying to create a lofted plate between two arcs?

Image
image.png


A: This is a tolerance or rounding issue on the Tekla side, where Tekla (incorrectly) assumes the three points are co-linear when in reality they are part of an arc with really big radius. It’s been reported and awaits a fix.

  • Meanwhile one solution is to move the middle point of the arc one or a couple of millimeters, so that Tekla is able to create the arc and the lofted plate.
  • If your lofted plates are large, the required movement can be quite substantial. In this case an alternative solution could be to convert the arc to a polyline (Curve To Polyline) prior to feeding it into the Lofted Plate component.

 

Back to top

Q: How can I control the orientation of my rebar hooks?

A: If your rebars are straight, Tekla doesn't always know which way the hooks are supposed to point. In that case you can add a middle point onto your rebar centerlines or shapes in Grasshopper and move it sideways a mm or so. This results in a triangle (start point - middle - end point) that fixes the plane of the rebar and thus the orientation of the hooks. As long as the deviation in the middle is small and within the tolerance, Tekla will still consider these bars as straight.
 

Back to top

Q: How can I create a steel assembly that’s “flat”, i.e. the parts are added directly rather than as sub-assemblies?

A: Use the Cast Unit component instead of the Assembly component, with the steel parts as input.
 

Back to top

Q: Why do I get the message "Solution exception:Could not load type 'Tekla.Structures.Geometry3d.FacetedBrepWithNormals [...]" when trying to create an Item?

A: The message means that you don't have the correct Service Packs for Tekla Structures installed and therefore can't create Items with the link. The link for Tekla Structures 2017 requires 2017 SP5 or newer, the link for Tekla Structures 2017i requires 2017i SP1 or newer. You need to upgrade Tekla Structures with a supported Service Pack, then it will work correctly. In later Tekla versions no specific Service Pack is required.
 

Back to top

Q: Why can't I create (solid) items from my Grasshopper/Rhino breps? The items are showing up as either non-solid or not at all.

A: To create solid items, the Rhino/Grasshopper breps need to be convertible to valid/good closed meshes. 

When transferring a brep to Tekla, the brep is automatically meshed by the Rhino API using standard coarse settings. Note that the structure of the mesh will depend on how the brep has been created. Even if the brep looks good in Rhino/Grasshopper, the resulting mesh can be invalid (e.g. it can contain non-manifold geometry, missing faces or duplicated points). This will prevent Tekla form using the mesh to create a valid and/or closed item. To identify issues you can try to mesh the brep yourself as in point 3 below.

Suggestions:

  1. If creating the breps by lofting or sweeping
    • Make sure your section/rail curves don't contain double points (the Simplify Curve component can be used to resolve this).
    • Note that the section curves usually need to be completely planar if you want to cap the brep (check with the IsPlanar component).
  2. Make sure the brep or resulting mesh isn't self-intersecting.
    • E.g. tight bends can cause this.
  3. Do the conversion to a mesh yourself in Rhino (Mesh command) or Grasshopper (Mesh Brep component) and use that as the geometry input for the Item component.
    • Try different settings for e.g. Minimum edge length (as edges shorter than 1-2 mm are difficult for Tekla to handle).
    • Check the resulting mesh with the Check command in Rhino to find any anomalies.
      • The MeshRepair command can solve some of the found issues.
      • The ShowEdges command can help you find and visualize naked edges (indicating problem areas).
      • The AlignMeshVertices command can help you get rid of small and problematic faces.
      • In general you should keep working on the mesh until the Check command shows that this is a good mesh.
    • ​In some cases the check can return "This is a good mesh" but the mesh still can't be used to create an item in Tekla.
      • If there are additional warnings/"Important things to consider" like intersecting faces that prevents solid creation, try to get rid of those. You might need to recreate the Mesh with different settings.
      • Another reason for failure can be very small/thin triangles. Try using the AlignMeshVertices command with different DistanceToAdjust parameters before transferring the mesh. After this you might need to run the MeshRepair command again.

 

Back to top

Q: Why do my generated items seem triangulated in the model and in drawings (and not smooth as in Rhino)?

A: Tekla doesn't handle breps as NURBs, and so breps are automatically converted to triangulated polymeshes before being imported to Tekla as items. Any internal lines are hidden in Tekla by default, but the imported surfaces still consist of triangles and polygons that may show up.

  • To get a finer meshing, you can right-click the Item component and select the "Smooth" meshing option.
  • For full control, you can mesh the breps yourself in Rhnio (Mesh command) or Grasshopper (Mesh Brep component) and feed the resulting mesh to the Item component for transfer to Tekla. This way you can get the item as smooth or coarse as you desire.

 

Back to top

Q: How can I assign custom shape names to the items I create through Grasshopper?

A: The Grasshopper-Tekla link assigns a random shape name (based on a unique GUID) to any shape it creates when inserting an item using the Item component. The shape name needs to be unique to avoid conflicts, therefore as a safeguard there's no way to override the automatic naming directly using only the Item component.

However, setting a custom shape name can be done using the Create Shape component like this:
 

Image
image.png


Side note: This is also a much more efficient way of inserting items in case they all have the same shape

 

  • Only one shape gets created and added to the Tekla Structures database
  • Item copies are then created by feeding a list of points/lines to the Line input of the Item component).

 

Back to top

Q: Why can't I insert my connection/detail/plugin with the Component component?

A: Some possibilities:

  • Most likely you're not having the correct input sequence. Especially plugins can require non-intuitive inputs using the Component Input component. In these cases the input sequence might be tricky to find out since the required input order in Grasshopper/Tekla API might be different from the input order you would use when inserting the component manually in Tekla. There can be a subtle differences as well, for example an input of two points might need to be given as either a list of two points or as two single points in separate inputs. See the question below on how to find out the correct input sequence.
    • Note that custom parts always require two input points in the API (see below)
    • If trying to insert a plugin that can accept a group of several input objects, and only one input object is provided in Grasshopper, you might need to duplicate that object to create a list. See an example in How to find the correct input sequence below.
  • There might already exist a (valid or invalid) connection at that location, either created by the current component or by another component.
    1. Select the Component component and check if anything is selected in the Tekla model. If so, delete it. Then re-trigger the Component component by double-clicking it.
    2. Filter out and delete any already inserted connections directly in the Tekla model. Then re-trigger the Component component by double-clicking it.

 

Back to top

Q: Why can't I insert my custom part with the Component component?

A: A custom part requires you to provide two input points for the Component component in Grasshopper, even if the part is inserted using just one click in the Tekla UI. For these single-point custom parts the second point can usually be a point straight above the first point.
 

Back to top

Q: How can I find out the correct input sequence for my connection/detail/plugin?

A: Insert the connection/detail/plugin manually into Tekla Structures, then reference it into Grasshopper and use the Deconstruct Component component. The input can be determined by examining the outputs named Input types and Inputs.

Here's an example using the Floor Layout component:

 

Image
FloorLayoutInput.png


From this we can see that we should use 5 inputs for the Plugin Input component (turns out these inputs correspond to the origin, x-axis, y-axis, outline and optionally z-axis) when inserting this plugin from Grasshopper. Note that this input sequence is different from what we would pick when inserting the plugin manually through the Tekla UI. This is common for how certain plugins behave when inserting them through the API.

Note that if a plugin input type is N Objects, it means that a list of objects is expected when inserting the plugin through Grasshopper. Therefore, in case we have only one input object we need to create a list by duplicating the object. Here's an example using the Radial array tool:

Image
Grasshopper Radial Array Tool

 

Back to top

Q: How can I insert multiple connections/details/plugins? No matter what I try, I get too many or too few connections or they show up in the wrong places.

A: If you're trying to add many connections to many members simultaneously it can sometimes be tricky to set the input and attributes for the Component component in the right way. Because of the different ways you can connect members (one-to-one, many-to-one, many-to-many, and each case with one or multiple secondaries) it's not always even possible for the component alone to match up the inputs in the desired way, no matter how you try to flatten or graft the inputs.

The workaround is to craft the geometry inputs like main part and secondaries (and the attributes input if needed) to have an equal number of items or branches, so that they can be paired off correctly with each other. This means that each element in e.g. the Main part input list should have a corresponding element at the same position in all the other input lists (if the connection uses multiple secondaries or multiple points, the corresponding element would be a branch/group of objects).

You can match the length of your inputs (number of input elements) by duplicating the data in the input with the smaller set of data using the Duplicate Data component, measuring the longer list lengths with the List Length component. The Trim Tree component might in some cases be used on the larger input depending on what level you'd like to match, and sometimes you need to be a bit clever with graftings and flattenings. Finally the Cross Reference component can be used to create pairs from two lists of input that should all be connected together (i.e. for something similar to a mesh of beams).

Here's an example with some different connection scenarios and how you might set up the input for them:
https://drive.google.com/file/d/15KBYP-mzcyxCZGjp7RWvXhPu6iMlDx-Z/view?usp=sharing

Note that this example was made with the Default environment. If you open it with something else the profiles and connections might not exist in the environment, in which case you need to swap them out for something else that's appropriate.

 

Image
InsertConnections_Example.png

 

Back to top

Q: How can I find the correct attribute names to use with a Tekla connection/detail/plugin?

A: Similar to UDA:s, note that the attribute name is generally _not_ the label that you see in the connection/detail/plugin dialog. Instead, you need to find out the actual name of the attribute that's backing the field.

The easiest way to find out the attribute name is use the Deconstruct Component component in Grasshopper.

  1. Insert the plugin/connection/detail manually into Tekla Structures
  2. In the plugin dialog, fill in a value in the field you're interested in and modify the component
  3. Reference the plugin into Grasshopper
  4. Use the Deconstruct Component component to view the attribute names
  5. Locate your value
    -> The name before the value is your attribute name 

    Image
    Get-Attribute-Name-0.png


Or save a preset for the Tekla plugin/connection/detail and check the atribute names from there

  1. Insert the plugin/connection/detail manually into Tekla Structures
  2. In the plugin dialog, fill in a value in the field you're interested in
  3. Save the plugin attributes as a preset
  4. Open the preset file (located in [modelfolder]/attributes) in a text editor
  5. Locate your value
    -> The name before the value is your attribute name. 

    Image
    Get-Attribute-Name-1.png

A third alternative is to use the extension Component Variable Importer in Tekla Structures to find your field value and the associated attribute:

  1. Insert the plugin/connection/detail manually into the Tekla Structures model
  2. In the plugin dialog, fill in a value in the field you're interested in and modify the component
  3. Launch the Component Variable Importer extension
  4. Select the component/plugin in the model
  5. Find your value i the table
    -> Next to the value is the associated attribute name. Note the attribute type as well so you can use the correct syntax. 

    Image
    Get-Attribute-Name-2(CVI).png

 

Back to top

Q: How can I control the up-direction of a detail or connection?

A: In link version 1.16, there's a new input Up Direction for the Component component if you connect a detail or connection.

Image
up

If you use a preset attribute file for the component, the Up direction (on the 'general' tab in the component dialog in Tekla) must be saved as "auto" in order for this input to take effect.

 

In older versions, to set the up-direction, use the attribute zsuunta (values 0-6) and feed it into the Attributes input of the Component component (using the appropriate syntax). This attribute is backing the Up-direction field on the General tab in the detail or connection dialog.

 

Image
zsuunta.png
  • This is sometimes needed since default "auto" up direction and detail type don't always work as intended when inserting components through the API.
  • The attributes zang1 and zang2 set the angles in case you need them.

 

Back to top

Q: How can I set the type of a detail?

A: To set the detail type, use the attributes detail_type (values 0-2 for end/intermediate/reversed) and feed it into the Attributes input of the Component component (using the appropriate syntax). This attribute is backing the Detail type field on the General tab in the detail dialog.

 

Back to top

A: Yes. Since version 1.17, there are components for inserting rebar sets in the link. These require Tekla Structures 2022 SP 12 or higher.

 

Back to top

A: Yes. Since version 1.18, there are components for inserting welds in the link.

 

Back to top

A: There are no dedicated components for bolts. As a workaround it´s possible to insert any component or plugin that generates bolts, e.g. the Auto Bolt component.

 

Back to top

Q: How can I create and modify drawings?

A: For drawings, check out this open source project by Grzegorz Olszewski:

For installation you'll find downloadable Releases on the right hand side.

Some example videos here:

It's an open source project, so feel free to contribute or reach out to Greg on LinkedIn or GitHub with suggestions!

 

Back to top

Q: How can I create my own C# scripting components?

A: Using C# Script components in Grasshopper can make many calculations and operations more straightforward. Referencing the Tekla Open API into the scripting components allows you to create things in Tekla Structures and manipulate the model in ways that perhaps aren’t supported by the current GH-Tekla link. Some examples below. Here are the initial steps for the classical C# Script component (in Rhino 8 there's a newer version that works a bit differently).

  1. Add a C# Script component
  2. Add references to the Tekla Open API
    • Right-click the component icon/text -> Manage Assemblies...,
    • Add Tekla.Structures.dll and Tekla.Structures.Model.dll from the \bin\ folder (or \nt\bin\plugins\ in older versions) in your Tekla Structures install folder.
  3. Add, rename or remove inputs for the component
    • To change if the input is handled as a single object or as a lists, right click the input and choose the corresponding Access type.
    • To change the expected input object type, right-click the input and set the Type hint.
  4. Double-click the C# Script component icon/text to start coding.


If you’re really into it, scripts like these can be made into proper Grasshopper components using Visual Studio. To speed things up, you can search for Rhino and Grasshopper templates that fits your Rhino and Visual Studio setup online.

The Tekla Open API is well documented with code examples here: https://developer.tekla.com/tekla-structures/documentation/

And check out the very active Tekla API forum, both for looking up old questions and asking new ones: https://forum.tekla.com/index.php?/forum/269-api-general-discussions/

 

And a last tip: ChatGPT has become really good at suggesting code for Grasshopper C# script components.

 

Back to top

C# Example 1: Create beams in Tekla

Here’s an example that creates and updates beams in Tekla Structures using a C# Script component in Grasshopper. This is similar to how the existing Beam components work.

Creating new Tekla objects through the Tekla API is rather straight-forward. The biggest challenge initially is setting up the GUID tracking so that you can update already inserted objects, rather than keep inserting new objects into the model every time the solution runs. This example point to a way of handling that as well.

https://drive.google.com/file/d/1ntkVvQKQJmbBpdGxN7jvFjc7yMLGwBw7/view?usp=sharing

 

Image
CreateTeklaBeams_ScriptingExample.png

 

Back to top

C# Example 2: Add gridlines to a grid

The Grid component only creates orthogonal grids. To do something else you'd need the Open API. Here's an example that inserts gridlines to an existing grid:

https://drive.google.com/file/d/1BzxLum6o9AIKJ61tk0i0YkH8ZhDULTNv/view?usp=sharing

 

Image
CreateGridLines_ScriptingExample.png

 

Back to top

C# Example 3: Proper chamfers for Tekla plates

This is a C# Script component that turns arcs in plates or slab boundaries into rounded or arc-point chamfers in Tekla (rather than faceted edges as is the default).

It works with general curves/boundaries as well (not just with arcs) by approximating the boundary with arcs, but that's a bit unstable.

This scripting component can be used to create rounded voids in a similar fashion, if you use it on the cutting plate/slab (like in the last example in the definition).

https://drive.google.com/file/d/1nDZ3uuGHXg41dwfZLtgzYJKznflQCYgP/view?usp=sharing

 

Image
PlateChamfer_ScriptingExample.png

 

Back to top

C# Example 4: Human UI

Human UI is a way to provide a traditional windows user interface for a Grasshopper definition, which means the end user doesn’t need to fiddle around with the script components to set the parameters.
Human UI requires the Human UI plugin to work.

Below is an example of using Human UI with a GH-Tekla definition.

The example also shows how you can add a button in Human UI that asks the user to pick objects in Tekla Structures or open the profile catalog. This behavior isn’t supported out of the box, but can be achieved with the provided C# Script component which can trigger any command from the context menu of any component or param (i.e. not just Tekla components). Just give the command name as input (It's sufficient to just use the beginning of the command name if it's unique).

https://drive.google.com/file/d/1_aIrUNoJzynPTGRhrbgtELWGyHU1HHKG/view?usp=sharing

 

Image
image.png

 

Back to top

Q: I didn't find an answer in this FAQ - what's next?

A: There's a dedicated section for Grasshopper-Tekla interoperability in the McNeel Discourse forum:

https://discourse.mcneel.com/c/grasshopper/tekla/

The McNeel forums are a good place for any pure Rhino- and Grasshopper-related questions as well - lots of questions already have answers, and users are very good at helping each other out. Try a web search first for your question. The McNeel helpdesk and your local Rhino reseller are also happy to answer questions - they are the experts.

For Tekla-related questions head over to the Tekla discussion forum or the Extensions sub-forum and post your question there, or contact your local Tekla helpdesk. The Grasshopper-Tekla link documentation can also be useful.

 

Back to top
Was this helpful?