Freesteel Blog » Subdivision in weaves

Subdivision in weaves

Monday, October 10th, 2005 at 4:55 pm Written by:

The code that makes the weaves which is used to do the contour z-slicing is now fully subdividing, and the tool paths can even be made on these subdivided weaves. Now the contours are true machining toolpaths which can be made to any tolerance.

This is a major step forward and only happened because the concept was coded into it from the start. This is the kind of long-term programming I like; taking account of all the features you’re going to put in when designing the original data structure. It probably helps that this is approximately the third time I’ve encoded this entire slicing system, so I know what I am doing. More so than the other times. For the amateur version, look in Machining Strategist.

Martin, meanwhile, has done more work playing with the online version. The features now are graphical viewing in the browser window with cached images. The full graphics dynamic interaction is the only part of the system which cannot easily be replicated with an online version, but with a bit of creativity we can get close.

Also, yesterday, he detected an interloper trying out the machining demo on this freesteel server, which was cool. It’s not done yet, so we hope it’s not put him off.

Francis pointed out a need directory of links:

We should add this site to that once it’s ready.


  • 1. Neel replies at 3rd January 2006, 10:48 am :

    Can this algorithm used for slicing along a vector direction ie for 5 axis roughing strategy.
    In other blog I read “I dreamed up a 5-axis roughing routine on a walk along the river, but there was no one to tell it to. ”
    Can you put it down here šŸ™‚

  • 2. Julian Todd replies at 3rd January 2006, 12:12 pm :

    Yes. that’s the idea. One should be able to change the axis/plane of each “Z”-level during the roughing operation. This breaks the problem down into two approachable parts. The first chooses which planes to use, and the second rest-roughs without gouging or colliding consecutively within each plane it gets given. The second part has one answer which we can find, and the first works even if it is approximate.

  • 3. Neel replies at 4th January 2006, 10:18 am :

    >>One should be able to change the axis/plane of each ā€œZā€-level during the roughing operation.

    This will lead to variable stepdown & variable load on the cutter.

    5 – axis cant have single algorithm for all parts, need to design different algorithms for port machining different for impeller blades. Molds & die have its own problems for collision avoidance & using shorter tool length.

  • 4. Julian Todd replies at 9th January 2006, 11:18 am :

    Thanks for the questions. They’re very useful.

    If my dynamic stock modelling (used during the generation of the toolpath) is accurate enough, I can know the depth of cut at any time, and I’ll know which direction to steer the cutter within the current machining plane in order to get whatever side-depth of cut I want.

    Since the total load on the cutter is the product of the depth of cut vertically, and the depth of cut horizontally, I can adjust the latter to compensate for the former in order to maintain a constant load at all times.

    Obviously tool holder collisions are part of the same problem, and you just don’t machine beyond the place where they would make contact with the stock. I’ve done this in 3-axis machining before — the result is you machine less of the pocket than you had hoped, but nothing bad has happened.

    The main idea I want to get across is that the algorithm is in two modules — the first selects the planes, and the second machines as much as possible in those planes without gouging or damaging anything due to the position of the remaining stock.

    If it is possible to write the second part of this algorithm (and I believe it is), then the first part ceases to be critical. You can write it in visual basic, in any loose form you like. The worst that could happen is that the part isn’t machined as efficiently as possible, or it doesn’t all get done. One could easily make something responsive that directs a set of planes towards where the most uncut stock remains.

    It’s like having an automatic car driving system. One part that does the over-all navigation, while the other part actually steers the vehicle through the streets without colliding with anything (this part has never been built). The latter component is the critical one. We can tolerate mistakes in the former one, although we might get annoyed if it directs the car to go in circles and run out of gas.

    If you follow it, this metaphore stands up. Navigational systems sometimes work by generating a whole spectrum of different routes, simulating them, and giving you the shortest. The toolpath planning algorithm could guess many different sets of planes, simulate machining them, and give the user the shortest.

    I’d like to see an algorithm like this — where the longer you leave the computer processing, the better the answer. I get tired with the hassle of only making the algorithms as fast as possible. Building something where there is this dynamic trade-off would be neat — you can stop the processing after ten seconds and get a not very efficient (but still reliable and non-gouging) toolpath if you like, but if you leave it for ten minutes you’ll get something much more efficient.

  • 5. Neel replies at 10th January 2006, 10:14 am :

    Collision checking & avoidance with dynamic stock, really the industry would like an algorithm like this, most of the current commercial cam vendors use collision checking against cad model.
    So how is dynamic stock stored will it be polygons, points…How do u check collisions with dynamic stock. polgon intersection ?

    Updating the stock at each toolposition seems lot of computation, It would be nice if multithreading which can take advantage of multiprocessors.

    Is Subdivision in weaves similar to subdivision of surfaces ?

    This is facinating blog, you should register this site with

  • 6. Julian Todd replies at 10th January 2006, 11:46 pm :

    The technique — which already works in 2.5D — is counter-intuitive. To get the idea, think about testing one potential cutter position against the dynamic stock. It’s not necessary to have the dynamic stock modelled across the whole of the part; you only need to know it within a fraction of a millimetre of the shape of the tool. So I make a little local stock model just where it’s needed, test the tool position, and throw the model away. The overhead is quite small really. It takes a factor of N more time to build this little model from the toolpath and test the tool, than to test the tool against the CAD model, where N is not very large.

    Subdivision in weaves is only about making the contours more accurate by inserting extra samples between the nodes. I don’t know much about subdividing surfaces since I only get them as triangulated files.

    Hopefully we’ll have a better version of the online interface for you to experiment with shortly.

Leave a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <blockquote cite=""> <code> <em> <strong>