Best workflow for cutting a block with a high-fidelity DEM surface from an STL file?

Hello everyone,

I am trying to create a geological model where I need to cut a solid block with a high-fidelity DEM terrain surface. The original DEM data consists of millions of points, and creating a surface directly from these points is computationally very expensive.

My current approach is to first generate an STL file from the point cloud (using MATLAB) and then import it into Cubit.

However, I’ve run into some issues. I found that I cannot directly use the imported STL surface to cut or webcut a solid body, likely due to it being facet-based geometry.

I then tried to convert the imported mesh into a proper geometric surface using the command create surface net from mapped surface ... heal. While this works for simpler meshes, it becomes extremely slow (taking over an hour) when using a high-fidelity STL that accurately represents my DEM data.

My question is: What is the recommended, efficient workflow in Cubit for using a complex, high-point-count STL file (representing a DEM) to cut or trim a solid volume?

Is there a more direct method than the slow create surface net command, or perhaps a more robust way to handle the interaction between the facet-based STL and the solid ACIS geometry?

Thank you for your help!

@Hsiaolung – I presume you’ve seen my related post?

It’s not surprising that you would experience slow computations of a spline surface involving millions of points. Recognize that the resulting surface is a cubic spline, in the ACIS geometric kernel. Splines are the most complex geometric entitiy in modern CAD kernels, and I doubt that many kernels have modernized their routines for performant operations on splines of such magnitude. While Coreform has developed several performant spline technologies related to our U-splines, I’m not aware of these being adopted by any kernel.

Thus I have a few recommendations:

  1. Make sure you’re using the “Performance Mode” options, shown in the code from my link above, when processing splines.
  2. Use fewer points
    • Given that splines are higher-order functions, you may be able to use fewer points to define your spline while still achieving high-accuracy. You may be able to use Matlab to assist you with this
  3. Don’t do webcut, create geometry via sweep
    • If your intent is to take a cube and cut it, so that you have a “solid” region and a “air/water” region, see if you can instead create these two regions by extruding your spline surface in each direction.
  4. See if you can pre-decompose your spline into smaller spline “patches”, this might be more performant.