External Surface Area for Paint Estimation?

All. I’m trying to come up with a way to calculate the surface on the outside of an assembly. My ultimate goal is to create an estimate for painting. An example assembly (sans fasteners) is be found below.

Note that some of these objects are hollow, which is why I can’t use a standard area function. Everything is a closed polysurface though.

It’s pretty simple to get the numbers I need from the GH defintion that creates the assembly, but that approach won’t work because of some object editing later in the workflow. What I’m looking for is a way to get the area I need for any collection of closed polysurfaces. I think a “shrinkwrap” type function would work best, but the GH definitions I’ve seen so far don’t seem to be working with Kangaroo2.

Can anyone point me in the direction of something I could use or modify, or perhaps suggest a different approach? Thanks in advance.
Example Assembly for External Surface Area Calculation.3dm (1.7 MB)

I get the idea and it is an interesting problem, but in this particular case the paint area will be exactly the same as if you just calculate the area of the solid union, because you have holes where the paint will go trough. If you watertight the model, then it makes sense to look only for the outer surface area.

Example Assembly for External Surface Area Calculation.3dm (1.7 MB)

That’s kind of the trick I think. The holes you see will have fasteners in them, so that internal area should be ignored.

This definition uses your solid union idea. It only works because of a peculiarity of the assembly… holes only occur on trimmed surfaces.

So, I discard all the trimmed surfaces, join and cap the remaining ones, solid union and evaluate area!

I’d still like a more general solution. The logic on this one falls apart if the two outside plates are at an angle, or if there are any additional holes… but its a start.

Thanks for the help.
Fill Holes.gh (334.0 KB)

It is a general approach. Think of it in this way. If you submerge your assembly in water, which faces will be exposed to it. If there are any faces which you don’t want to paint, just cap the holes to them. Boom. I have no idea will it work with more complex geometry. Maybe if you have an example geometry which does not work, I might think of a way.

I agree that the general idea is valid, but automating the hole filling is the tricky part. If any of the trimmed surfaces are unable to be replaced by “caps”, it fails. See the example below.

Example Assembly for External Surface Area Calculation-Fail Example.3dm (1.8 MB)

It doesn’t really fail. You can’t cap the holes, because they are not planar. There is no way for the software to know which surfaces you want to paint if you introduce a Swiss cheese of a model. Do the area evaluation before you create the holes.

Otherwise untrim, find a logic to select the faces you need and put them back into your solid union.