Invalid Polysurface Error during Boolean Union (Hull + Hydrofoil)

Subject: Invalid Polysurface Error during Boolean Union (Hull + Hydrofoil Assembly)

Message:

Hi everyone,

I am working on a hydrofoil project using Rhino 8 and Orca3D, and I am stuck on a geometric validity issue that is preventing me from exporting a clean model for ANSYS Fluent CFD simulation.

The Setup:

  • Hull: Generated using the Orca3D Planing Hull Assistant.

  • Strut/Foil: Created in Rhino (Sweep2Rails) and successfully joined into a Valid Closed Solid Polysurface.

The Problem: My Orca3D hull is currently reported as an “Invalid Polysurface” but a “Closed Solid Polysurface”. When I attempt a BooleanUnion to join the strut to the hull, the operation completes, but the resulting assembly remains “Invalid”.

Diagnostics so far:

  1. Running SelBadObjects highlights specific surfaces on the side/bow area of the hull.

  2. The Check command suggests issues with the surface math (likely self-intersections or degenerate faces).

  3. ExtractBadSrf identifies the problematic panels, but simply deleting and re-capping doesn’t always resolve the validity of the NURBS math.

  4. I have tried reducing the “Bow Twist” (to 0.8) and “Net Columns” (to 5) in Orca3D, but the generated surfaces still fail the validity check.

What I need: I need the final assembly to be a Valid Closed Solid Polysurface for CFD meshing.

  • Is there a way to “clean” Orca3D’s NURBS output without losing the specific hull form?

  • Would a manual Trim and Join approach be more stable than BooleanUnion for invalid geometry?

  • Are there specific tolerance settings (DocumentProperties > Units) recommended when joining complex Orca3D surfaces to standard Rhino solids?

I have attached a screenshot of the What command output showing the “Invalid” status. Any advice on repairing the underlying surface math would be greatly appreciated!

Thanks in advance.

Backup 001.3dm (410.6 KB)

post the .3dm file in question - its hard to help just by a (ai-generated ? - totally ok to use it…) text.

I have attached it , can you please help with this problem. The issue is that in the file that i attached you can see a foil + strut and a hull geometry. Individually both the geometry are valid and closed poly surface. But i need to join them together for the CFD analysis but i tried the Boolean union but its working and its getting joined but the geometry while checking using what or check command is showing that its a invalid poly surface.

rebuild these surfaces as 2 separate surfaces and it works fine-
something about the kink in that surface (both sides) is causing problems.

_MergeAllCoplanarFaces
_DivideAlongCreases (all optoins / tangent faces = yes)

now boolean union works
EDIT / Fixed - but as mentioned below - still a bad polysurface.
uploaded new version:

Backup 001_tp_fixed.3dm (3.8 MB)

(_divideAlongCrease does not work)
_extractSrf
_split isocurve shrink = yes snap to knot / intersect
_join

But can you explain me more or help me with this issue more broadly please i have been sitting whole way to figure out this but couldn’t find a solution until now. Can kyou explain me more on how to proceed please kyle

Tom thanks a lot for helping but the problem is that its still showing that the geometry all together is invalid poly surface. The foil is getting connected to the hull but its still invalid that is what im not understanding :smiling_face_with_tear:

@tom_p

the boolean works with no fixes.. but you get a bad object. this is the problem, not the boolean.

run extractbadsrf this will extract the surfaces that are causing the problem.

I’m not exactly sure where the problem lies, but somewhere in those surfaces is a problem.

I was able to fix it simply by dupedge on this curve

then simply use edgesrf to rebuild those surfaces in 2 surfaces.

join it all back up and it should be good to go. you can do this after the boolean btw…

Can you please help me with the dupedge please I’m not getting it, Sorry

Can you please help me with the dupedge please I’m not getting it, Sorry

the command is dupedge click on the edge shown and it creates a curve. Delete your original surfaces and rebuild them.

hit f1 and search for dupedge to get more info about that or any other command in Rhino.

Kyle it worked thanks a lot for helping me :hugs: Now its a valid poly surface and closed ploy surface so its good to go for CFD analysis right

Thanks to you as well for helping and trying tom :smiley:

So whenever i have doubts on rhino 3d can i text you here ?

I’m one of the tech support people here, so you can always ask questions on the foums and I or any number of others will jump in and try to help. If you need more specific help, you can email tech@mcneel.com and that will get you in our ticket system and we’ll help you straight away.

does not do the job here.
instead
_split Isocruve shrink=yes (snap to knot (or intersect))

Hello Hakkeem,

My name is Martin Monteverde, I’m also an Orca3D user.
I’ve looking at your problem. Also dowloaded the first <Backup_001.3dm> file you posted. Thank you for sharing it.

I have already dealt with this type of problem before, that is, to prepare a “closed” (and “valid/healthy”) polysurface for CFD analysis.

Alhough I couldn’t trace your problem back to the way that Orca3D creates the Hull geometry (I also see that you used Orca3D’s Hull Assitant for the creation of the Hull geometry…), sometimes I was able to fix the problem by playing with/adjusting the Units & Tolerances as well.

In this case, from the geometries provided in your “shared” file I tried to assemble a “valid” closed polysurface from them.

When I attempted to replicate your procedure (i.e. using the “Boolean Union” Cmd.) to create the “closed” polysurface (or volume), the result, was the same as reported by you: Invalid “Closed” Polysurface

Then tried to re-create the “Closed” Polysurface by the following “alternative” procedure.

Just in case, adjusted the Units and Tolerance.
Most of the time, it’s not necessary to adjust them (i.e. use Rhino’s preset), but sometimes it can also help.
Usually, when I use “Meters” for the “Model” units, I adjust the Absolute toreance to 1mm
In this case, I changed it to 0.1mm
As for the Angle Tolerance, 1° usually works well, but reduced to 0.5° for more accuracy.

  1. Find the Intersection (_Intersec) between the Hull (closed polysurface) and the “T-Foil” (closed polysurface)

  1. Using that “curve”, I “trimmed” either the Hull (Hull area enclosed by the curve) and T-Foil (the Upper protruding section)
    Now, as it can be seen, either the Hull and T-Foil geometries have both turned into “Open” polysurfaces.

  1. The “last” step was to “Join” (_Join) both “open” geometries (i.e. Hull and T-Foil) into a single polysurface (hopefully “closed” and “valid” as well)

The result… was a “Valid” Closed Polysurface.

If I’m not wrong, that was what you were looking for.

Just in case, attached is your <Backup 001.3dm> file, with the “Valid” Closed Polysurface, that was created following the above procedure, inside.

Last, but not least…
Please, notice that I did not perform any modification/post-processing on the geometries (Hull and T-Foil) provided by you. I used the “same” Hull and T-Foil geometries provided by you in your <Backup 001.3dm> file

Hope this can also help.
Martin

Backup 001 (rev. by Martin 20251231).3dm (418.0 KB)

Thanks a lot martin for the help