Reference to TEKLA objects by their names

Hello,

I need performe “fit part end operation” to some already created objects. Manual selection is definitely unpractical/impossible due to their number. These objects (beams) are created via grasshopper and specific names have been assigned.

Is there any way I can reference those tekla object by their name? Any script perhaps as I could not find the suitable component in the Tekla assembly. It would be life saving…
Something similar to Geometry Pipeline or (even better as I do not how to manage multiple names with geometry pipeline) RefName component for RHINO.

Thank you all.

Hi,

The simplest I can think of is :

  • Do a View Filter (by name) in Tekla, so only your target objects appear.
  • Use the Part or Model Object parameter, right clic > Set Multiple xxx
    You should be able to select your entire model (with window selection)

And mouse wheel click to validate.

Thank you for your hyper prompt reply. Trouble is that I need to perform that operation by couples of objects… If I select them all I will no longer have control on which object I do the operation for … That would be so handy - I cannot believe it doesn’t exist yet. :frowning:

I was about to suggest writing the name filtering in C#, but this solution won’t keep the order anyway.

Is there any way you could pair your objects using proximity ? Test the distance of end points/midpoints of beams A to end points/mid points of beams B…
How are the names applied ? If your objects “couples” share some part of the name, you can recover that in GH using Deconstruct Beam and Deconstruct Attributes.

I don’t have Tekla on my computer, but I have ideas :smiley:
Maybe a picture of your objects “couples” in Tekla could help a lot.

My geometry is about a succession of 3 longitudinal plates made of a lot of polybeams defined as named polylines in RHINO. These polybeams are interrupted at the red lines few millimetres apart. In correspondance of those lines I shall operated the “fit part end operation” on vertical planes defined few cm apart (blue lines). What I meant with couples was in fact the vertical plane (blue) and the intercepted objects. If there is an intelligent way to select / reference only the polybeams on the left and right hand side of the red lines (hence the polybeams intercepted by the vertical plane) the problem is solved… I gave it a (silly) try but obviously grasshopper cannot relate text to model object not even passing through object attributes (see below).

Cheers.

1 Like

Hello,

The smartest way to select the polylines intersected by the planes is actually to compute all possible intersections and cull the planes for which a result is actually found. I don’t think you need the naming convention for that specific operation.

For the fitting to work I’m almost certain you need to reorient the Z axis of the fitting plane away from the polybeam, which is done after the selection (maybe already done in your RH/GH ?)

Let me know if that example helps and if you can adapt it to your project !

FitPartByPlane.gh (17.7 KB)

2 Likes

In addition to that, what I was suggesting to retrieve the Tekla Beam object from its name was something like this. There are other solutions (using Match Text, ir Item Index + List Item…) but this is the quickest way in my opinion.

TeklaBeamFromName.gh (10.9 KB)

1 Like

Not sure if this solves your problem, but there is an Object Pipeline component in Tekla Live Link. You can set up your own Selection Filter in Tekla and reference that Filter in Grasshopper.

2 Likes

I think you have all the needed pieces here, connect the Object Pipeline component to @magicteddy’s FitPartByPlane script and you should be close to the goal. One thing that I just noticed is that the Fitting component doesn’t like empty branches, so remove those with e.g. the Clean Tree component. Modified the script with these changes here:

FitPartByPlane_RevB.gh (119.2 KB)

Oh, and you can use wildcards when you set up the selection filter rule in Tekla, in case your names vary.

Cheers,

-b

2 Likes

Thank you indeed for your ideas and scripts ! This is brilliant.

@magicteddy Your script with @sebastian.lindholm modification work like a charm. It is probably a little slow - it’as about 12 minutes to finish the work but it is so much worthwhile… Thank you indeed.

@TuomasLehtonen Thank you for the tip - I did not have a clue that this one exist as i was using the Link review 2022.1.11 - this very useful component was indeed added on the very latest 2022.1.12 (!).

Once again thank you.

2 Likes

When complaining about GH being slow, think of the time it would took you to do the same job by hand. Usually you’ll be :smiley: again.

However here it seems too slow for the purpose. In a previous life I used Tekla API a lot and 12 minutes was the time it took to generate an entire building, not juste a few hundred cuts.

Out of curiosity can you tell which component(s) are the slowest ? You have two ways to do that.

In Grasshopper, go to File > Preferences, and active the Profiler. The time will be inscribed under each component.

Or download Metahopper (from Package Manager), and use the Bottleneck Navigator.
image

If the computation time comes from the intersections calculation, maybe there is better solution to think about. If it comes from the Fitting component, maybe there is a problem with the live update from/to Tekla.

1 Like

@magicteddy thank you for your interest and your tips.

As I already noticed it comes from the fitting component. I actually disabled them for minor updates on geometry before it computes this extremely time consuming operation. I see the operation being made in TEKLA and one single fitting is done in about one second - I clearly see the operation being made in TEKLA. For information this “fitting over vertical plane” operation is made on 4 groups of 3 plates each for about 30 sections hence 60 times (the blue lines). I have approximately 3x2x4x30=720 fitting operation being made.

If there was a way to disable something in TEKLA to speed it up would be great. The trouble is that the whole structure is made out of several GH scripts which I do one after the other on the purpose of getting the whole process lighter.

For info the 720 plane intersection operation is done overly in 4 seconds and is by far the longest operation besides the fitting one.

thank you in advance for any info on this.

If you know you have only one fitting for each beam, you should be able to speed up the execution significantly by flattening the inputs:

image

Otherwise the component will execute probaly 720 times with one commit to the model and potentially a file-writing for each branch, causing a lot of overhead. Most other Tekla components (Beam etc) accept a tree as input and flatten it internally to be able push the changes to the model all at once, but not this one for …reasons :smirk:

If you indeed have multiple fittings for some beams, i.e. a 1 to 2 mapping between certain beam-branches and their plane-branches, you could duplicate the beam branches (Duplicate Data) using the length of the corresponding plane-branches as the factor, and then flatten everything. If that makes sense at all.

Also, turning on “Remove when input is empty” seems to speed up things when you re-run the definition with already inserted fittings.

2 Likes

Ideed ! Thank you @sebastian.lindholm that was the way to go (!) and made me save a lot of time (from 12minuts to a couple of seconds…) !
(sorry for the late feedback)

2 Likes