Using Rhino to edit 5 Axis paths?

I’ve got a 5 axis laser and it’s old. We retrofit the controls with a modern generic control. I’ve got it more or less working but now I’d love to be able to edit 5 axis paths for it. The control software we’ve got will let me “teach” a 5 axis path that is output as GCode. Ideally I’d like to be able to use something like Rhino to visualize the path and make edits. I can write software so it’s not a problem to write a converter back and forth. But, what I’d want to do is import a point cloud that has an associated “point normal” for each point. That is, the point normal would in fact be the head rotation at that point. So, in my case a point normal actually makes perfect sense. Is it possible to do this some way? Whether you call it a normal (which it kind of / sort of is, it’s a vector perpendicular to the surface of the part I’m cutting and/or pointing in the direction of the cutting tip) or you just call it a tip vector (more accurate I suppose) can I edit these vectors in Rhino while keeping them associated to points? And, is there any existing way to export a point cloud with direction vectors associated?

hm. Just thinking out loud but I guess you could import a set of points and read in a corresponding set of vectors and perhaps a scale factor, and add lines at each point along the vector. Then what?.. if you noodle the outer ends of the normal lines, then run another script that captures all of the line directions, in the same order as they came in, you’d have modified normals - but I don’t know what you’d do then…


there are plenty of possibilities to visualize and modify g-code data within rhino ( food4rhino) or extern like estlcam.
I don’t understand what you want to do with pointclouds, but it think cloudcompare can compute and add normals to a pointcloud.

Otherwise, I guess you could create a mesh from the pointcloud (I think also with CloudCompare, if the data is not massive, even with Rhino), and a mesh has vertex normals…

Hi, as far as I can remember you have first to compute normals, if you want to build a mesh in Cloudcompare. Don’t know how this in Rhino meshfrompoints works. For me meshfrompoints in Rhino often works better than CC, but might depend strongly to your pointcloud.

Thanks Pascal… That gives me something to think about. Hmm, yes, perhaps importing as points plus lines might work. That would show me the orientation of the cutting head at each gcode position which is what I’m after. Then if I move a point I could move the point and the line at once (not doing so would really make a mess). I guess the import script could group each point/line combo so I don’t accidentally move them independently. If I re-position the end of the line it would change the vector from the point to the end of the line and that would represent a different head orientation. Normalizing that isn’t a problem, turning a vector into an A/B rotation might be a little bit more complicated but not insurmountable. The gcode is basically formatted like
N100 X100 Y40 Z10 A23.4 B34.5 and I know what vector A0 B0 corresponds to and how the machine views positive A and B rotations. I also wrote a C++ program that takes gcode and can translate back and forth between absolute X,Y,Z position of the machine (what the machine actually uses while cutting) and tooltip X,Y,Z (what I’d need in Rhino so I can see where the end of the tip is in 3D space) So, it seems possible to do all the manipulations necessary to go from A/B into an X,Y,Z vector and back. It would, however, be a bit of work to do all that. But, maybe it’s the way to go. This kind of thing would potentially even let me figure out 5 axis cuts without any other CAM software. I could just draw the cut line, turn it into a series of linear and arc moves, and then associate head vectors at each point on the cut line. That’s also a lot of work. Though, it might be possible to perhaps project the cut line to surfaces below and then ask for the normal vector of the surface at each point. For projects where I have surfaces that would work. I don’t have 3D models of all the parts I need to cut so still I’m stuck hand teaching some things.

Or, the less work approach might be to ask: is there a 5 axis CAM package for Rhino that not only would let me create 5 axis paths but also bring in existing Gcode paths and edit them? I see that RhinoCAM has a 5 axis package available. I suppose I could ask them directly if editing 5 axis gcode is something they support. Any other Rhino plugins people might recommend for this kind of thing?

As far as I know, madCAM has 5 axes and their toolpaths are simply stored as Rhino geometry on a layer. So you can edit them with any normal Rhino tools. However, I do not know if they have a G-Code importer.

Thank you, I’ve asked in their forum about my use cases and how suited they would be to MadCAM.

Hello there,
I work with MecSoft and here is our recommendation: Import the points & normals into Rhino, create a curve using these points and use 5 axis Drive curve machining with parallel to lines option for tool axis control in RhinoCAM. The curve you create from points can be selected as your drive curve and the lines for your tool axis control. Image shown. Hope this helps, let us know if you have questions or feedback.

Quelly del Mundo