So If I have a model of many joined meshes is there a way to decimate it by killing small one and keeping bigger one intact ?

I don’t think so, unless it can be done with geometry nodes. You might try asking in the Python subforum.

You can limit action of weld modifier by separating both meshes into distinct vertex groups and limit modifier to one of them.

You can limit action of a Merge by Distance Geometry node, by making a selection based on Mesh Islands ID.

Here’s a setup from my geometry nodes cookbook which may be useful:

Thank you very much Zorro_Weaver

it works perfectly. But I am not sure i actually understand what that Accumulate field does. It rearrange indexes based on mesh value input ? But I have same result by just connecting area to value input of less then math node?

It adds up all of the values of a field, but accumulates each group index separately. Basically, in this situation, it’s adding up all of the face area in each separate mesh island. After that, we can delete islands that are under a certain size.

Just connecting area to the compare node will delete *all* faces under a certain size, not taking mesh islands into account.

The accumulate field node also has some other uses that are more complicated. The leading and trailing values will give you a running total of accumulated values, stored sequentiality on the indices. It’s useful for stuff like stacking boxes or books, because each book will know the total height of all the previous books in the stack.

Thanks a lot Zorro_Weaver. It makes sense now