Block same things to reduce weight

I usually get pretty heavy steel structure files in ifc format. When I convert them to rhino files it gets pretty bad in performance and file size wise. I am trying to block the same breps.

For example same colored steels are same brep just rotated.

I tried grouping and blocking it in the past but I need to find same face in every brep. For grouping part I used surface area. It feels like it’s works but I am not sure.

Maybe there is plugin or script for it? Maybe blocking it not gonna help? I have no idea. I would appreciate any ideas. :))

Example file.zip (4.2 MB)

Everything is on the same layer and has no distinguishing information. Can you post the original IFC file?

I wish I could but it’s company stuff.

Only information in IFC file is layers. Are you looking for something specific?

Importing ifc into Revit then going to Rhino will come in as blocks, whether or not they have their block origin at world 0,0 or on the element is file dependent.

The file you posted only had these two layers…

image

I tried it. As you said it blocks the breps but it’s so inefficent I couldn’t find another instance of the same block. Probably most of them have 1 instance. You can see in the file as well.

Example file.zip (18.9 MB)

Yeah ideally you would get individual members not the assembly as blocks.

Sorting the geometry (somewhat manually) then finding planes would be the way forward. Not a lot to work with there.

I did notice some odd performance issues with the p0d_canvasView that i will need to submit a youtrack for. Have you experienced any lag while that viewport is active and an object is selected? Thanks

image

It comes from this plugin:

I didn’t realize any performance issues particular to this view.

Sorting the geometry (somewhat manually) then finding planes would be the way forward.

Finding planes part is the main problem for me, any ideas how?

There are a lot of factors here, particularly if you are trying to identify unique members.

To get a plane you’ll have to do so via geometry.

Something like this…


BrepFaceColors.gh (18.8 KB)

One of the challenges in sorting is the Colors are by Face

Here i used a script from the forum that gets these face colors and put them on a layer of the same name.
BrepFaceColors.gh (18.8 KB)

These pipes look like they’re meshes.

You can extract the edges and find the longest ones then create an average which you can use to define a perp frame.

Yeah it would probably work on pipes but I not sure about other parts. I will give it a shot.

Something like this works pretty good for grouping.

Grouping Similars.gh (21.1 KB)

averaging longest curves gives me invalid curves unfortunately.

Can you post a file containing the output of List A?

Grouping Similars.gh (8.4 MB)

one way to do it - although not 100% foolproof- is to calculate the bounding box in the plane perpendicular to the longest edge and some atributes of the mesh like number of vertices, faces, edges, volume, surface area, etc. if two meshes have the same attributes and approximately the same bounding boxes, then you can say they are identical, and you simply calculate a transform between the bounding boxes.
to make it 100% correct would be to go query the topology of each mesh, but it’s overkill for relatively simple meshes. a version of this would also account for things like scaling, but, again, not entirely necessary for your specific case

Little update,

Converting polysufaces to extrusions have HUGE impact on performance and file size. I wasn’t expecting it.

1 Like

Hi @gurkan_bozkurt ,
Which plugin did you use for conversion of polysurfaces to extrusions?

I used BUBALUS_GH,

I’m gonna post an example file when I have time.

1 Like

Thank you @gurkan_bozkurt .
I would be grateful if you could attached the example, when you have time. Thank you in advance!