How to check if a surface can be milled by 3-axis milling machine?

It is not hard to see that some part of this surface cannot be reached by the 3-axis milling machine. How to check this with rhinocommon?

It would be quite brute force to check the surface with a vertical line intersecting the whole surface. Is there algorithm to achieve this?

Thank you.

-Jerome

  • up

    Brian Ringley

    I'd also be interested in hearing about a code approach to this but here are some practical tips:

    1. Draft Angle Analysis will give you visual confirmation of the part line (the line along which the 3-axis approachable portion of the surface meets the portion of the surface referred to as the "undercut").

    2. Running the Silhouette command in the Top viewport (this is how a 3-axis machine "sees" your model by default) to generate a curve or series of curves as your part line.

    Remember:

    1. Your tool tip geometry and diameter play a large role in which portions of the surface are approachable. In other words, it's just just undercuts you're looking for but also tight valleys and pockets into which your end mill may not fit.

    2. Approachability is relative - a change to the CPlane properly synced with the origin system in your CAM package will completely change which portions of your model can be defined by a 3-axis mill.

    1
    • up

      David Rutten

      My initial approach would be to sample the normal vector at enough locations. If the normal is horizontal or points down, you can't mill it. With "enough locations" I mean something quite specific. Given a nurbs-surface I'd sample at degree*2 samples per span in every direction. However normal vector evaluation is extremely fast so you can sample the living daylights out of a surface if you're worried you might miss a small spot.

      With Breps it becomes somewhat trickier. The same logic applies, but you'll have to iterate over all faces and for every sample determine whether it's inside or outside the trimming region.

      Alternatively you can convert the surface/brep to a mesh and then just iterate over all mesh normals.

      --

      David Rutten

      david@mcneel.com

      Poprad, Slovakia

      10
    • up

      Tuan N. Tran

      I haven't looked into the documentation for the method/syntax yet.  Is possible to run a DraftAngleAnalysis on the mesh?