Full Printing Path Control Without Writing GCode

User-friendly slicing software is arguably the key software component that makes 3D printing approachable for most users. Without it going from a CAD design to a printing part would take hours, not seconds. As a trade-off you give up a lot of control over the exact path of the hotend, but most of the time it’s worth it. However, for some niche use-cases, having complete control over the tool path is necessary. Enter FullControl GCode Designer, a tool that gives you all the control without resorting to writing GCode directly.

FullControl takes an approach similar to OpenSCAD, where you define path geometries line by line. Need an array of circles? Choose the circle feature, define its origin, radius, starting position, and extrusion height, and define the spacing and axes (including Z) of the copies. Need a mathematically defined lamp shade? Define the functions, and FullControl generates the GCode. Non-planar printing, where your print head moves along all three axes simultaneously instead of staying at a constant Z-height is also possible. In the video after the break, [Thomas Sanladerer] demonstrates how he used FullControl to reduce the print time of a functionally identical part from two hours to 30 minutes.

FullControl is built on Microsoft Excel using Visual Basic scripting, which comes at the cost of long GCode generation times. It also doesn’t show the defined tool paths graphically, so the generated code needs to be pasted into a viewer like Repetier Host to see what it’s doing. Fortunately, a Python version is coming to should hopefully elevate many of these shortcomings.

We also featured some other GCode hacks in the last few months that bend existing GCode along a spline path, and a Blender plugin allows the surface textures of sliced objects to be modified.

28 thoughts on “Full Printing Path Control Without Writing GCode

  1. This looks really interesting to me as a 3D printing enthusiast (‘printerist’?).
    My wife’s hobby is quilting and has a craft friend with a long-arm CNC quilting machine driven by GCode, so wondering if this could be used for that application too.

  2. “FullControl is built on Microsoft Excel using Visual Basic scripting, which comes at the cost of long GCode generation times”
    … And infinite agony of having to use above mentioned monstrosities. Brrr.

    Fortunately: ” Python version is coming to should hopefully elevate many of these shortcomings” Phew…

    1. Thank goodness. It’s good to build something new with the tools you know, it’s even better to retool it with better tools if it’ll make a massive difference.

    1. At one point VB was the best language for a lot of applications. Not because it was GOOD, but because it had a ton of support and integrations for gluing together other things. To this day VB6 remains the glue holding together an alarming number of otherwise modern systems, including an aerospace manufacturer I once worked for.

      So there’s a lot of very talents, experienced people who know VB better than any other language or toolset so it is the best choice for rapidly prototyping a concept. Whatever gets results fastest is always the best choice for a prototype or proof-of-concept.

  3. VB code in Excel?! OK, there are programming languages I don’t care for and then there are ones that just shouldn’t be used. Even Python would be a step up from this.

  4. I don’t think I’ll ever understand why some people are so excited about Open SCAD. My assumption is that it is people who are used to writing code and don’t want to learn how to model in other CAD programs. And that seems like a fair preference. I like modeling in 3D CAD programs, and a lot of the “advantages” of script-based modeling like this example seem artificial to me. For example, in this case, it seems like a better slicer would also reduce the print time.

    1. I use OpenSCAD and Freecad, have used Blender and Fusion360 in the past. Basically, it all boils down to how easy it is to re-use and repeat chunks in code, where you’re stuck clicking on the same damn vertices over and over in a graphical modeler.

      Of course, there are workarounds. Blender allows Python scripting, though I never got into it. Symmetry can help a lot, as can keeping your bodies separate so that you can import sub-parts more easily. Etc. But there’s nothing like just looping over the thing you want multiples of. Or saying “give me another one of those, but 10×20 instead of 10×15”. I’ll race you to import a Nema17 stepper motor and make a simple mounting plate for it.

      Still, complex surfaces organic shapes are a lot nicer in the graphical CADs.

      Which is a long way of saying — sometimes the code approach is faster, sometimes it’s not. :)

      1. But you can do all of those things in Solidworks. If you want patterns, you use the pattern option(s) and set up the pattern parameters. Likewise, if you build your graphical CAD models parametrically, you can change the parameters quickly to change spacing. It just seems to me like people who don’t know how to do these things in graphical CAD have learned to do them in code and have convinced themselves its better for everyone as opposed to just having put in the effort to learn how to do it in code but not graphical CAD? Like I said, it’s a reasonable opinion, but it’s very personal and not one size fits all though it’s often presented as “Open SCAD is just better”

        I think fundamentally the issue is more that it’s freeware and that 3D printing grew up around STLs, which are terrible to try to modify. If we all worked in STEP or IGES files, I don’t think there would be this discussion.

          1. I mean, I knew someone would point out that Solidworks isn’t free, but Fusion 360 has the same features and free use options… If you’re modeling a lot, it seems like it’s worth learning graphical CAD and maybe even paying for software as opposed to learning and using Open SCAD and convincing yourself it’s better somehow, when it’s really just cheap.

        1. “It just seems to me like people who don’t know how to do these things in graphical CAD have learned to do them in code and have convinced themselves its better for everyone as opposed to just having put in the effort to learn how to do it in code but not graphical CAD?”

          kind of a tortured sentence, and i wouldn’t recommend it for *everyone*, but you’re right there. that’s it exactly!

          i’ve spent about 10 hours with some autodesk product 25 years ago and i didn’t understand it at all..it wanted me to draw the shapes with the mouse, and it had a bunch of shortcuts to do that, and i didn’t know any of the shortcuts and i hate drawing with the mouse. i’ve been told after the fact that it’s capable of parameterizing the dimensions but i didn’t learn how to do that…i have the idea people draw the shapes with the mouse and then right-click on it or something to replace the numeric dimensions with symbolic ones. it would have been a lot of learning for me to get even a basic proficiency.

          and since there was so much specialized knowledge, i know that if i switch to blender or whatever, i wouldn’t start over from zero but i *would* start over. one of many reasons i hate GUIs, but it’s just like you say: i don’t want to learn something new.

          by comparison, openscad was obvious to me in much less than an hour of effort. there are things about it i think are stupid, and other things that i think are really limiting but i’m not sure what would be better than openscad. and i do keep learning things. but fundamentally what i found is a tool i could use from the beginning without learning a bunch of skills that i found frustrating and undesirable.

          i mean, i also love to be able to check my models into git and have sensible change logs. that’s a big deal to me too. but you hit the nail on the head, i learned openscad, learning openscad was easy, and nothing else is for me.

          1. Thanks. I appreciate the comments. I think that’s a really evenhanded assessment. And yes, that is a tortured sentence. I think it comes from revising multiple times to try to convey my question.

        2. You can do proper parameter stuff in all the graphical CAD packages, FreeCad included (at least up to date versions).

          BUT its rarely done as well, as OpenScad forces a degree of actual planning out to ever get anything out of it, so to use it at all is very parametric construction by default. Where most graphical cad packages you can just toss primitives and sketches together in a kludgy but functional mess so easily, and actually making the entirely parametric model properly requires jumping through more hoops – to the point that for that sort of model OpenSCAD is easier, both to design in and for using the parametric nature later (at least in my opinion – and not i’m not saying the graphic cad can’t do parametric perfectly well, it just seems like both much more effort to do so, and very rarely actually done properly, seems like its more used for the odd global fit and finish type change – like making all the “M4” holes change radii to suit the desired thread)…

    2. Control.

      E.g. if you do it manually, there’s a chance to reduce print times and/or improve mechanical properties. For very popular models that will continue to be printed by thousands of people, it might be worth it to do this kind of optimization.

      It also allows for the people who understand it to easily design models that might be a hassle to design with Blender.

    3. I’m an ME in my day job, using SolidWorks most days and in past positions Catia. I taught myself on Inventor before my formal engineering education. I use FreeCAD for hobby projects fairly frequently.

      I’ve found myself turning to scripting CAD solutions recently. To be honest, they simply lack many problems present in 3D CAD systems:
      -Fusion 360: I don’t like the licensing
      -Solidworks: Licensing/costs is also an issue. Also, I’m scarred from professional experience, where it quickly becomes extremely slow and crash-prone once you get to a couple-thousand parts. Not an issue for hobbyist stuff, but aggravating.
      -Inventor: Honestly haven’t considered it since I taught myself. I suspect licensing/cost annoyances
      -Any of the new cloud systems: I like owning my designs
      -FreeCAD: The topological naming thing is aggravating. I know I could modify my workflows to better suit FreeCAD, but they’re very ingrained. Also, referencing geometry from a definition sketch is very aggravating, as you either deal with the topological naming thing or copy the entire sketch. I’ve tried very hard to like FreeCAD, but have yet to find a way to do so.

      In addition to avoiding all these annoyances, there are inherent benefits:
      -Version control: 3D CAD systems are inherently hostile to version control. Their files are essentially binary blobs, which typical version control (git, etc) can only diff as an entire file. You can “release” versions of the blob, but there’s still no insight as to what’s changed, etc. Additionally, sites like Github are sometimes, understandably, unhappy with large-ish binary blobs. Scripted CAD systems are inherently diff-friendly, as the design is just a text file.
      -Robustness: You are inherently writing a reproducible model. 3D CAD systems (typically) have a feature tree that kinda does this, but they are often flaky, especially when moving things around the tree. Solidworks often crashes when trying to modify an intricate part. In a scripted cad system, either your part generates or it doesn’t.
      -FOSS-ness: Importance can vary depending on personal preference
      -Running on Linux: Windows annoys me, and I like to do things on Linux, especially as I do a fair amount of stuff with embedded that are a real pain to set up on Windows. AFAIK, FreeCAD is the only 3D CAD system I can run in Linux (other than browser-based ones)
      -Resource intensity: SW really needs at least 16GB of RAM, and 32GB is necessary when handling large-ish assemblies, especially as its usage creeps up over a couple hours of editing drawings, etc. Install size is also orders of magnitude smaller for scripting CAD systems, and typically far less CPU intense.

      One or the other is not inferior or superior, and is only slower or faster depending on workflow and the kind of part/assy you’re designing. There are obvious benefits to 3D CAD, I’ve just tried to outline the inverse here. I’ve been finding scripting CAD systems (though there are things about OpenSCAD that aggravate me, I’ve been using CADQuery instead) have suited my personal needs much better recently, and I’m formally trained as an ME, not a programmer.

      The slicer thing is an entirely different conversation, and the first video does a really good job addressing why slicers aren’t a panacea. Different tools for different jobs, though I don’t personally expect to ever use something like fullcontrol GCode.

      1. Indeed! Very well said, and similar to my own thoughts, though I personally do quite like FreeCAD…

        I suspect I am fortunate in that I first started experimenting with graphical CAD with FreeCAD so to me the workflows are perfectly fine, there is no unlearning before learning the new tool.

    4. if you’re good at programming openscad is an easy transition to making things with cad. its just that simple and with that programmability you can automate lots of design too using methods you’re already familiar with.

    5. I’m excited about OpenSCAD because I have a firm belief my models will be perfectly readable and usable in ten years time, and not held hostage to some licencing agreement or orphaned by then-defunct applications.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.