Parameter value mapping in Tekla through Grasshopper script

I have created grasshopper script to fill out custom UDA parameters in Tekla. As example I have made “Profile properties” UDA with parameters “Length” “Heigth” “Thickness” and "Width. How can I make it that grasshopper script reads objects heigth, length, thickness and width and fills out the custom UDA parameters i made automaticly. The thought behind it is so that I can re use this grasshopper script whenever without filling out the parameters manually.


Thanks!

Hello,

In this example, assuming the column profile is somehow standard, you could use the Get Property component with the following properties : “HEIGHT”, “FLANGE_THICKNESS”, “WEB_THICKNESS”.
For the length I think if I remember correctly there is “LENGTH” and “LENGTH_GROSS”. But you could also Deconstruct the objet and get the length of the axis.

I don’t know which properties you want to implement but the general case would be either to find an already property existing in Tekla, or if this is a geometric feature, try to calculate it in GH, from the geometry of the object.

2 Likes

Hey and thank for reply! Could you elaborate a little bit more about “Get Property” component? You mean a node in grasshopper? Not sure where to get or use “Get Property” component.

For this particular HEB280 steel column, I would like to retrieve height, thickness, length and maybe even weight. If I deconstruct my object, I can get material and profile but not profiles thickness etc. Properties I am looking for does exist in Tekla.

Weight would be “WEIGHT” property, or “WEIGHT_GROSS” for the uncut column.

The properties may exist, if you right clic on the object in Tekla > Informations > Part, you can have a look at those. These values are accessible with GH as long as you know the corresponding key.

1 Like

Thanks it worked! The ones I listed above worked perfectly and now it updates UDA list with values automaticly! Tho I noticed I still cant get all the properties, for example “FLANGE_THICKNESS” meanwhile “WEB_THICKNESS” worked fine, also “PART_NUMBERING” and “ASSEMBLY NUMBERING”. Any idea why, but nonetheless thank you!

Try “FLANGE_THICKNESS”, “PART_POS”, “ASSEMBLY_POS”

And as a side note, NEVER connect both sides of a Panel because that transforms data to text. Connect directly the V output to V input (and keep the panel as a vieer, if you want, but don’t connect the output).
You may also want to put all those items in a list or a tree (use Merge) to reduce the amount of components - you’ll need ultimately if you need to modify the attributes of several objects at once.

Something like this :

TeklaUDAs.gh (13.1 KB)

1 Like

Fewer components setup as you showed worked, I only had to add tree branches after each panel list.

Any idea why “PART_POS” and “ASSEMLBY_POS” values are 0 even though I marked three different columns 1-2-3? Both part and assembly position.

And “FLANGE_THICKNESS” still doesnt work.

This is called Graft Tree, not Tree Branch. Indeed it also works by grafting the attributes instead of the objects - notice in my example I had the objects grafted directly on the parameter :

image

Be careful, in Tekla this is not the part number, this is only the start number of the numering series. You have to launch a numbering operation on your entire model. On the Drawings & reports tab, click Perform numbering. If you have no idea what this is, see Number the model | Tekla User Assistance

@sebastian.lindholm Any idea for that one ?

2 Likes

Hi @Augustinas_Linaburgi, you can use the Organizer in Tekla and there go to the Settings dialog to try and find the names of report properties:

In this case it seems that you can use the PROFILE.FLANGE_THICKNESS to get it to work.

Cheers,

-b

3 Likes

Thanks, really helping me out here!

The final last thing is when I export those properties, the only way they show up in Solibri is if I set Property Type as “Real” when exporting. Is that correct? I tried with type “String” and “Integer” but it didnt show up in Solibri. Is there a way to implement those properties and values in grasshopper reads as “String”?

I have noticed before if value of parameter is consinting of both number and words/letters its hard for Tekla to read what kind of type value is when exporting.

I ask this because of the other parameters that I have to add for my school projects, for example Norwegian object marking number. When exporting this Parameter Set I set every parameter type as “String” but the only parameter with only numbers doesnt get exported with IFC. While the rest of values that actually have both number and letters do get exported and registered in IFC.

Hi Augustinas,

You can set the type of the UDA with the Type input of the Construct UDA component. Then numbers would be converted and added as string UDAs, and should hopefully be exported they way you expect.

Note, that if you have previously added the same UDA as a float or int, you might need to clear the old UDA from the object first in order to be able to add it as a string. This can be done from Grasshopper setting an UDA with a default value (empty string or int.MinValue) of the type you want to remove. Here’s an example of an “UDA erasor”:

Erasor script attached here:

UDAErasor.gh (16.8 KB)

Cheers,

Sebastian

4 Likes

Thanks alot once again!

Is there a method to change parameter value from for example milliliters to tonns or kilograms? Or milimeters to centimeters or metres? Right now for “Volume” or “Weight” of an object I get the value in what I suppose is milliliters instead of litres or cubic meters and miligrams instead of kg/tonns.



UDA

Hi, under the hood Tekla works in mm:s so the report properties will be returned in that format.

Depending on what you want, you could do a conversion in Grasshopper (divide by 1000 or 1000000) before feeding the value to the UDA.

Alternatively, I think you might be able to modify objects.inp to display the value in some other format in the UDA dialog that you have there.

About the UDA Erasor: since this issue has come up every now and then, this update should take care of clearing existing values automatically when setting an UDA with a different type:

https://drive.google.com/drive/folders/1vxeaEaDIZtSp2Ey1-54Ezs1-oPbcZxNn?usp=sharing

Will soon add this new version to the Warehouse page.

-b

Thank you, Sebastian!

I am back with new problem, first of them is I cant seem to “Get Properties” of the Wall Layout component from tekla, or even fill parameters manually through grasshopper. Any idea what could be the problem? I tried the same script on columns and other parts, it worked, but not Wall Layout. I had to use Wall Layout for easier window and door openings.

Second problem is im not sure how to create Custom UDA tabs for Reinforcement. I have tried creating reinforcement type through Objects.inp file, but I cant seem to find the correct name for rebar. I am using “Mesh Bars by area” component and “Edge and Corner” component. I have tried using “Reinforcement” type, aswell as some others in the objects.inp file.



Hi,

You could try to grab report properties from the objects within the component rather than from the component itself. Use the Deconstruct Component component to access the child objects:

UDAs in the dialog for the wall layout seem to be a bit weird. I used the guide here to add some UDA fields to the dialog (similar to how I assume you’ve done?).

To find out the UDA names I set some values in the fields in the dialog and modified the component. Then I read all UDAs in Grasshopper. Turns out the UDAs get names like string0_L0 or integer3_L0 etc. Once you know their names, you can use the correct names to set the UDAs through Grasshopper.

For your rebar components I’m not actually sure if it’s possible to create custom UDA tabs. The wall layout tool seems to have been purposefully built to support UDAs, but that might not be the general case. Maybe your local support or someone on the Tekla forums have a better idea about this :thinking:.

Cheers,

Sebastian

1 Like

Yeah I figured that wall layout “string_L0” name after a while, I managed to fill it out, but then again new problem poped out as I was unable to export custom UDAS made for Wall Layout, I guess its because of what kinda of text file I used to create those called UDAs. I wasnt able to find real UDAS names or even “string_L0” parameters.

Yeah ive been trying to ask these things in Tekla forums but since I only have Educational version, I can only use student forums which are inactive and sadly no one is responding.

Not sure if this was the issue, but you’re able to add UDAs to the property set even if they aren’t defined in objects.inp or show up in the dialog. Just type the UDA name into the Attribute field and give it an export name in the Name field.

Admittingly ifc and property sets isn’t something I’ve dabbled around with a lot though.

I have tried that, but the values of the parameters in Solibri are just blank spaces without anything filled out. The custom parameters I add into export string1-2-3-4 etc are also marked red, I suppose because it cant read any values inside of it.



I suppose you could add them directly to the panel inside the component, If they can’t be exported/extracted from the assembly/component level. Use the Deconstruct Component (if you’ve got more than one child object pick the appropriate one e.g. using List Item or some other filtering components in GH):

image

That at least shows up in Connect:

image