So so basically, write raw GCode - with a bit of python wrapping it...because....um...typing all of those G's is a pain? I make a lot of model railroad stuff - locomotives, buildings, etc. Doing ANY of those things using full-control would be a MASSIVE problem...it's being sold as a way to get to printer functionality that slicers can't use - but in truth, it's replacing super-sophisticated CAD software with everything having to be hand-coded. I see full control allowing you to print highly geometric vases and such - but if you wan it to make a model of a railway locomotive...you can't do it - it would take a lifetiime using direct control.
Exactly, full control is not the direction we want to be heading in, what people actually want to make models using CAD software and then just have a better slicer that isn’t limited to the “2.5D” that it currently is. As has been the case for a long time now, hardware isn’t the issue, it’s software, we can make CNC machines with many axes but it is just getting software to take advantage of all those axes that is the issue. Maybe an approach similar to CAM would be the best intermediate step, rather than full control.
Let me give a CNC example. The first thing I often do is level the surface. To do this I normally have to draw a square or rectangle then import that to cam and then define the lines to be a pocket cut with the size cutter I am using. This is then exported to gcode and then run in the cnc sending software. That's 3 steps. I do this often. Now imagine I have my own software that I simply define 4 points and choose surface and it does all the magic without a cad file or without defining anything. That is 1 simple step. I am giving this example to help understand how it may be useful in some scenarios. Another example is a mesh of holes in a sheet. If I want a 9x9 square if holes 1inch apart I have to draw this in cad first then again define every point as a drilling operation. It may take 30 minutes to get it drawn, exported, imported and then define every point with the size and depth of cut. If I can write a simple routine where I define the hole size and depth once and then how many holes and spacing, it takes a few seconds to do the same thing. It's not for everything, it's useful for certain edge cases only, but if you do those often, it is a huge time saver. I wrote a software that does things for my cnc machine because I got tired of drawing everything exporting and defining all the time.. full control is similar to my software but its not the same. The point is, it depends on use case. It's not a solve every problem tool but it may save huge time if you need something specific and don't want to go through the normal flow every time.
@@newmonengineering I think you must either be using a spectacularly bad CAD system - or you haven't learned all of it's capabilities. If you're using this external Python script and importing an array of 81 holes rather than using the CAD system's automatic way to copy some structure into a grid of 91 copies at given spacing - then you're doing something wrong here. I use Blender for my 3D modeling - and I wouldn't think of using some external tool to do something that's two mouse clicks away. And blender is a *free* tool. If you're a professional then your CAD software probably cost a small fortune - and should be considerably more powerful. And incidentally - blender has a built-in Python system so if you DO need to generate something programmatically - you can do it directly in Blender rather than doing it someplace outside and importing g-code. Furthermore - something that a morasse of g-code is just a single object. Wouldn't you want things to each be their own object - with a nice name ("Hole(3,4)" or something)?
Hello, Do blender incorporate a slicer ? Can it make g-code file do make « real » 3D printing ? (With the nozzle moving in the Z axis at the same time as X and Y axis like showed in the video ?)
This style of code generation is closer to writing GCode for a CNC mill. Rather than generating the path automatically, a programmer builds the path from a library of movement types with parametric settings. Nice to see it finally starting to come to printing.
@@conorstewart2214I don't see it as a step backward. I see it as a side step. It's not for everything but it has its own use cases. If you want pattern parts without drawing them, it would be great for that. I wrote a very similar app for cnc machining so I don't have to draw everything in cad first. It's not a replacement of the process, it's simple an alternative workflow for certain use cases.
actually nothing that was done here couldn't be done in G-Code. Slicers just do not use the full functionality of g-code. most dont even use arcs. There is so much of low hanging fruit to grab in G-Code by slicers
@@newmonengineering in the vast majority of cases creating the parts in CAD programs is easier and faster. You also have code based CAD software like openSCAD that is defined via code. Both methods I have mentioned are superior in pretty much every way to writing out gcode. Also both methods I mentioned allow you to have the base model and then use it for many different processes and tool types. With the method in the video if you change your nozzle size, or want to machine it, you will pretty much have to start from scratch. If you want to pattern parts then there are much better methods to do it.
This reminds me of pixel graphics vs vector graphics. Simple bits vs mathematical calculations that can create the same graphics at any size without loss of resolution.
makes me think of how people have gotten original era arcade games to work on laser projection systems used for laser shows, since they respond well to vector input as that is basically what they do when they draw on a wall with a laser dot. So things like Asteroids
This is a really good analogy. When we model a ball a stl is just triangles approximating a curved surface but full control allows us an actual curved surface.
So, back in the 1980s I used to write G-code by hand for a CNC lathe. This like something like that but for a 3D printer. Anyone could do that but it would be too too easy to make mistakes. And it would be very tedious. Since one is controlling a real machine one could do damage. Existing well tested modeling and slicer software for free seems to me to be far to good to pass on. We can share STL files. In many cases one can make modifications to an STL made by someone else. One can certainly modify design files from others. I can't see the point of trashing that and starting over.
@@LostInTech3D - "venv" is a module in the standard library for creation of virtual environments. The docs page says venv was introduced in Python 3.3. - The Python website still has the release notes for 3.3.0, which claims 3.3 was released September 29, 2012. - The Wikipedia page for "Docker (software)" says Docker was first released March 20, 2013. - None of this actually explains why python folks haven't adopted Docker at any point in the last 10 years, but nonetheless, in at least some corners of the people who code in Python, docker hasn't made any inroads. - Despite docker's existence, many languages insist on doing their own thing for dependency management, and running code natively on the machine directly. 🤷
Great! CNC GCode routines, loops and all, for subtractive manufacturing coming full circle into additive manufacturing... With all the same levels of trig knowledge and machine comprehension required. My mill wright would love this! Average user, not so much.
Interesting tool. Odd, niche use cases, but there are some times when what you need to do will require just taking over and telling the machine what to do. Rare, to be sure, but nevertheless useful.
I saw the blob demo last video and I was super intrigued. Happy to know what it is. That's a really sick and useful printing style. I think it's the non-planar printing that interests me the most. Given it's just Python, it would be very easy to add some safeties too. You could have a place to plug in variables like nozzle depth and angle, height to print head, distance to cooling fans, and more. Then before a print model is generated, it could do some basic math to check if anything you have programmed will hit. Cool!
@@LostInTech3D I have a whole ass programming degree, but the math is still intimidating. Fortunately there are plenty of math libraries to make life easier as well.
So this seems like basically an extrusion library for Python. Nice for data driven or function driven objects. But for most purposes, what would be desirable would be non-planar surface tracks - like a really smart, adaptive vase mode for the surface with smart fill.
@@LostInTech3D I looked the music up and played it in front of my daughter (10). She asked "why does that even exist?" I responded with "An even better question would be, where has this been all my life?" Thank you sir for introducing us to this new piece of world culture!
While not practical for common hobby use. This would work really well for mass production. Where you can allow yourself to spend a bunch of time optimising the design. Yet, i feel it would be better to use a slicer for the general shape, then refine with gcode tools.
i think you are right! there are workflows/tasks where this could make a lot of sense, combined with parametric scaling you could do varieties of parts when needed....lots of open frontiers with software and firmware in 3dp...
Yes - it does - but it needs to be automatic. Manually generating the G-code to do that is a monumental pain for anything more than the simplest examples.
I think my first touch for G-Code was with CNC plate cutter/stamper or what it was called at 1997 when I was in vocational school. Course was about CNC machines. Basically we hand write G-code at that course. Can't remember was it heatsink from 1mm aluminum plate or amplifier case with 0.5mm steel. Heatsink used about 5x30mm rectangle punch tool and amplifier case use also that and additional tools to puch holes for potentiometers, switches, etc.
A question about the little imperfection or ‘seam’ that is left behind by the print head in the surface of the print I know that the user can choose where to place this ‘seam’, such as in the back of a vase. Or this seam can be scattered randomly across the printed surface. Is it possible to add extra seams on the surface of a print? Such as having eight equidistant seams running up the side of the vase. Thus the ‘seams’ become part of the design. Maybe these eight ‘seams’ could spiral up the side of the vase, or cross over each other to form a diamond pattern? Could we write a brand name up the side of the vase using the ‘seams’? Could we make this imperfection a feature on the surface of the print?
For this to be useful I'm reminded of getting 2 colour printing going in a hurry. I'd get Cura to spit out the gcode and then go in and tweak with notepad++. This is one of those things that i wonder where people get time to play with it!
That was a fun video......Im a nerd methink. Thank you! I really enjoyed it, brought back nice memories of programming. In 1984 I did a Tie Fighter do a roll over and explode in machine language (no compiler) on an Apple ][e. From arrows..to binary...to hexadecimals...call commands....with the constant fear of typing the wrong command and redirecting extra power from power supply to a random key on my keyboard setting me on fire. :P Latter is an exaggeration, I could have made this happen if I remember right, but it would need a full set of self aware typos.
I don't think I'm stupid but I couldn't understand any of this. Is this just for round shapes? And even if it is I couldn't make sense of how he went from a cad package to the G code output. He seemed just as hesitant and confused as I was about it.
Well, if that makes you feel better ;) Not just round shapes. You can draw anything as a combination of lines and arcs, and it can convert svg images into sets of points too, and then convert the path between them into gcode. Converting instructions in Python into instructions in gcode (for the printer), is what library does. You say you want a point here and point there, please extrude enough to get there in a straight line, but you don't need to calculate how much to extrude, and the bed boundaries are already set (and hopefully accounted for; I haven't tried to go out of bounds yet).
I wrote multiple gcode generators for CNC machines. My software builds the entire scripts for some cnc functions. I wanted some very specific CNC operations to be super easy to get without a drawn cad file, so I was un-satisfied with what existed, so I taught myself gcode and then wrote software to generate gcode. It wasn't that hard. It's very useful to know some of it, you can make your own to clean the nozzle and things like that easily.
i did the same thing. these cycles were faster and easy to use - an old machines, it was faster than CAM! :) its all depending on what you try to accomplish"! ...3d printing has a huge software and firmware problem. everybody reinvents the wheel...
Seems like more of a toy for anyone not doing slicer research, but I would like to see slicers getting more CAM-like features or CAM programs generating gcode for 3D printing that operates on pure part geometry like a CNC rather than parts converted to polygon volumes and then waterline algorithm slices.
@@theninjascientist689 yeah but no slicer today is making the same tool paths for now like in full control. I heard in a Vision miner vid they are now using KI to improve high temp printing success rate. But they didn’t show it. But it’s probably in the slicer.
Interesting approach. Beyond slicers: Have an AI write G code for you, use Full Control, or the grand daddy that predates slicers, use OpenSCAD for parametric and/or geometric design. If you prefer programming to drawing things in CAD, OpenSCAD is for you. It's so incredibly powerful that it's almost addictive and programs can be developed piecemeal like other programming. Draw a square. Stack the squares to make a box. Rotate each Z step in the XY plane to make a twisted box vase. Increase the length of the X and Y moves slightly for each layer to make an outwardly flaring twisted box vase, Add a sin function to put surface ripples on the outwardly flaring twisted box vase. Increase the amplitude of the sin ripples with Z height. Etc. It's fun to write the code and see the 3D object you're describing, and the OpenSCAD file is very small for the complexity it creates.
@@dotanuki3371 It's also glacially slow as a platform. I don't know why their solver is SO MUCH SLOWER than Solidworks or F360, it doesn't even have to calculate complex constraints.
I was thinking the exact same thing. This would be cool school example for math. It would make people really understand how trigonometric functions work.
i wished id be better at coding - somebody needs to bent LINUXCNC and FreeCAD towards 3d printing. i am not yet able to do so myself...but i am going there....slowly... ;)
Where can we find some of the model gcode? Want to print some of those out. I found them on their web site, I'm going to have fun printing some of these out tomorrow, whish I could post pictures in TH-cam comments.
I think you can be much faster and it's more intuitive to design in a classical graphical CAD tool. Like sure, I would use this for something simple and abstract which looks nice, but when I want some functional part or some estethical part that is more complex, I can't see the advantage to using this. To me it feels like a solution in search for a problem, but maybe there is some valid use case that I'm not seeing. Or is it just something to toy around with? Kudos to the guys who wrote it anyway, I'm sure it's challenging to do.
I mean it’s kind of more about discovering techniques to build into slicers down the line. Arc overhangs started as a full control thing and are getting implemented into PrusaSlicer just as one example. For most 3d printer users full control is a clever party trick.
With Cura 5.5's new API that lets you access some of the backend slicing logic, im curious how long it will be before someone implements CAM logic to slicers. Or if Fusion360 and its competitors would ever go down that road
Maybe if your running larger batches of objects on a print farm, you might benefit from some highly optimised gcode. In most cases, no. And the traditional workflow offers another important advantage: a clean separation between the description of the object itself, and the gcode that adds all the particularities of your printer and the filament you are working with.
We need some tutorials on using GPT. You could point it to the python library. It would read and understand. Just need to prompt what we want. I want to try those blob light fixtures.
It looks like it would shine the most while combining GCode generation processes: the easier, more repetitive stuff in the software, and more intricate parts in full control!
How about modifying an (open?) source cnc mill software to control feeds, temps and routines? CNC Mill software is full control out of the box. Or use Grasshopper g-code output.
Can’t wait for a CAD program that leverages this. Obviously writing code to draw is suboptimal for complex models, but if someone made a GUI around this, it might have more use cases.
Probably not. It is called CAM. It is the standard in the machining world. And even after being common for 40 years, it still takes years to learn even with nice GUIs.
Nice, but I think another better solution already exist few years (unnoticed by 3d community), it's called "Velocity extrusion" and it's available in MachineKit. Concept is simple, you just tell your 3D printer how many plastic to deliver when we are printing, then just supply usual GCode for movements (lines, arcs, circles, etc ...) and speed, printer by itself will calculate and control retractions, accelerations, jerks, plastic delivery rate in particular point of space, this way your GCode don't need to directly control additional "Extrusion" axis on each move and you are free to utilize full power of CNC GCode.
Still can't understand why I would need this thing. What's the point of all of this flexibility, if this thing can't process the stls? It seems like with a lot of hussle I can design some gimicky geometric shape, which may have limited artistic value, and that's all. If I need to make something mechanical, like a gearbox enclosure, I would make it much faster in literally any CAD, than program it by hand. If I need something artistic, like a character figurine, then it's even imposibble to program manually. Meanwhile, all of the 3d prints featured in this video, except for the nonplanar one, are totally achievable in slicers with expert level settings. You mentioned calibration 3d prints, but more advanced slicers feature build in calibration generators (for example, SuperSlicer and Orca Slicer). You mentioned nonplanar 3d printing, which can be a game changer for eliminating layer lines, but it's inapplicable to real life prints. You demonstrated supportless concentric printing, but it's achievable with postprocessing scripts in Prusa Slicer and it's derivatives. I just can't see any actual usecase to this software.
I know that you just bearly touch this topic in this video but I really need non planar gcode to become more mainstream it would be extremely useful for some prints even if it would be just for a span of few layers to do a smooth curve around it
When you are using ChatGPT to generate code ... why not have it generate G-Code directly already? I would suspect that GPT-3.5 would not do an amazing job, but GPT-4 has something they call "analysis" which is just a generator of python code that does part of the work for GPT. So with GPT-4 + Analysis, it should be possible to write G-Code and even to plot out the results, and even to maybe write "tests" into the code itself to make sure some constraints/angles are respected.
So, basically this is an 'assembly' language for G-Code as our machine language analogy here, instead of 'compiling' from triangle models? Interesting. Can't really think of many uses for this currently that wouldn't be equally well served by hand-writing G-code (as it was INTENDED to be hand-written this way back in the early days of numeric-controlled machinery), but the fact that it's a Python library opens up interesting programmatic uses of it -- like doing new kinds of 'slicing' from something like OpenSCAD, using something other than 2.5D slices. Of course, being able to loop and whatnot makes hand-writing G-code much easier, and I guess some ability to port G-code between machines is also handy. Maybe this will make 'handwritten' (or rather 'assembled' in this manner) G-code appear more often in 3D printing, as currently it's almost unheard of.
VENV a Virtual ENVironment. for non- computer science people: it's like having a collection of pots when cooking a recipe and the default python install is the kitchen to cook in. . if you mess up the recipe it's contained in the pots and can be cleaned or new pots can be obtained for a second go at the task. not having a venv activated just mean you are cooking your recipe without any pots, directly on the burner and if that recipe goes sideways, you're going to need to put in a lot more work cleaning that kitchen, or in worst case, a full remodel (reinstall of python) Hope that helps.
full control sounds like the winner! why do we not have their code in our 3d printers, and in our 3D printers? good luck changing the language from caveman!!
14:33 This is a very weak "end script". It pulls a thread and even leaks plastic. Is very-very amateur.... The correct finish is a quick retract of at least 1mm, then very quickly lifting the hotend laterally and also up (diagonally). This has worked for me for years and even the notoriously fibrous PET-G doesn't pull...
It’s probably more useful to slice a model traditionally and then modify the gcode how you need. 3D printers usually use marlin gcode which really sucks compared to the gcode that most professional cnc machines use. But it’s easy to understand gcode so I don’t want to learn python.
Full control is cool but it is not practical, you will have to spend far longer making the model up like that than using CAD software and hence most details would probably be lost due to the time required to make them. How do you do infill? I take it you would have to manually program infill too? Full control is not the way forward in my opinion, what we need instead is better slicers that can use more axes than they currently do. Having to manually write out code to create the gcode would just make 3D printing much harder to use for little benefit, making even a semi detailed or complex model using full control would take far too long and be too prone to errors.
Yes, you sound like that. Only with a better 🎤🎙️..., but the Quality are always 100% Perfect from the First Video, Sir‼️And You are AWESOME 👍😎‼️ Stay safe, healthy, Greatings to all and share Love 🤗🤗‼️
Ok, so fullcontrol isnt actually all that useful if i want to make anything complex. Hmmm, any chance that you might look into blender’s functionality for 3d printing? I know there is a process for importing gcode, and adjusting the path in blender, then exporting the updated path/shape to gcode again.
Full Control is good for complex objects. Try building those lattices on the Full Control site in a CAD program. FC is just good for a specific class of complex objects, namely, geometric ones. I think it's still early days for FC. CAD is typically based on constructive solid geometry, and FC is a slightly more primitive form of that, reduced to arcs and lines. I see no reason why you can't build a set of Python functions that generate gcode that construct the same sets of geometric objects typically used to construct CAD models.
FYI, in case it wasn't already mentioned. VENV = virtual environment. It's a sane suggestion to install and run under a virtual environment because a root python environment can be dangerous, whereas a virtual one is kind of sandboxed and doesn't modify the base install when you start messing with dependencies.
Hmm this is actually what basically all CAM programs allow you? Let you define the tools and paths. Slicers are basically CAM programs with very hard rules.
If you're still using the STL format you're loosing resolution. Start exporting your models to the STEP format instead. As for learning how to program to be able to print anything, if you're a masochist maybe, but no thanks.
From your descriptions o hatter you aren't very familiar with the concept of procedural design, wwell full control is just that. Procedural design systems shine when you have specific quantified needs, like specific gear meshes and compensation for material properties, and gcode was designed to be used this way. They tend to be weak in ease of use, which is why graphical tools like OpenSCAD and F360 exist.
So so basically, write raw GCode - with a bit of python wrapping it...because....um...typing all of those G's is a pain? I make a lot of model railroad stuff - locomotives, buildings, etc. Doing ANY of those things using full-control would be a MASSIVE problem...it's being sold as a way to get to printer functionality that slicers can't use - but in truth, it's replacing super-sophisticated CAD software with everything having to be hand-coded. I see full control allowing you to print highly geometric vases and such - but if you wan it to make a model of a railway locomotive...you can't do it - it would take a lifetiime using direct control.
Exactly, full control is not the direction we want to be heading in, what people actually want to make models using CAD software and then just have a better slicer that isn’t limited to the “2.5D” that it currently is.
As has been the case for a long time now, hardware isn’t the issue, it’s software, we can make CNC machines with many axes but it is just getting software to take advantage of all those axes that is the issue. Maybe an approach similar to CAM would be the best intermediate step, rather than full control.
Let me give a CNC example. The first thing I often do is level the surface. To do this I normally have to draw a square or rectangle then import that to cam and then define the lines to be a pocket cut with the size cutter I am using. This is then exported to gcode and then run in the cnc sending software. That's 3 steps. I do this often. Now imagine I have my own software that I simply define 4 points and choose surface and it does all the magic without a cad file or without defining anything. That is 1 simple step. I am giving this example to help understand how it may be useful in some scenarios. Another example is a mesh of holes in a sheet. If I want a 9x9 square if holes 1inch apart I have to draw this in cad first then again define every point as a drilling operation. It may take 30 minutes to get it drawn, exported, imported and then define every point with the size and depth of cut. If I can write a simple routine where I define the hole size and depth once and then how many holes and spacing, it takes a few seconds to do the same thing. It's not for everything, it's useful for certain edge cases only, but if you do those often, it is a huge time saver. I wrote a software that does things for my cnc machine because I got tired of drawing everything exporting and defining all the time.. full control is similar to my software but its not the same. The point is, it depends on use case. It's not a solve every problem tool but it may save huge time if you need something specific and don't want to go through the normal flow every time.
@@newmonengineering I think you must either be using a spectacularly bad CAD system - or you haven't learned all of it's capabilities. If you're using this external Python script and importing an array of 81 holes rather than using the CAD system's automatic way to copy some structure into a grid of 91 copies at given spacing - then you're doing something wrong here. I use Blender for my 3D modeling - and I wouldn't think of using some external tool to do something that's two mouse clicks away. And blender is a *free* tool. If you're a professional then your CAD software probably cost a small fortune - and should be considerably more powerful.
And incidentally - blender has a built-in Python system so if you DO need to generate something programmatically - you can do it directly in Blender rather than doing it someplace outside and importing g-code. Furthermore - something that a morasse of g-code is just a single object. Wouldn't you want things to each be their own object - with a nice name ("Hole(3,4)" or something)?
Hello,
Do blender incorporate a slicer ?
Can it make g-code file do make « real » 3D printing ? (With the nozzle moving in the Z axis at the same time as X and Y axis like showed in the video ?)
@@SteveBakerIsHereI think you need to do some CAM work and actual CNC machining to understand the value of the low level tool he described.
This style of code generation is closer to writing GCode for a CNC mill. Rather than generating the path automatically, a programmer builds the path from a library of movement types with parametric settings. Nice to see it finally starting to come to printing.
There is a reason that CNC milling is moving away from manually writing Gcode, it would be a step backwards for 3D printing.
@@conorstewart2214I don't see it as a step backward. I see it as a side step. It's not for everything but it has its own use cases. If you want pattern parts without drawing them, it would be great for that. I wrote a very similar app for cnc machining so I don't have to draw everything in cad first. It's not a replacement of the process, it's simple an alternative workflow for certain use cases.
Different tool for a different job. I remember nophead doing stuff like this ~2009 so not exactly new, but a better software interface for sure
actually nothing that was done here couldn't be done in G-Code. Slicers just do not use the full functionality of g-code. most dont even use arcs. There is so much of low hanging fruit to grab in G-Code by slicers
@@newmonengineering in the vast majority of cases creating the parts in CAD programs is easier and faster. You also have code based CAD software like openSCAD that is defined via code. Both methods I have mentioned are superior in pretty much every way to writing out gcode.
Also both methods I mentioned allow you to have the base model and then use it for many different processes and tool types. With the method in the video if you change your nozzle size, or want to machine it, you will pretty much have to start from scratch.
If you want to pattern parts then there are much better methods to do it.
This reminds me of pixel graphics vs vector graphics. Simple bits vs mathematical calculations that can create the same graphics at any size without loss of resolution.
I almost used raster vs vector as an analogy but I thought it was a bit meta :)
@@LostInTech3D A bit Venta, Virtual Environment Beta. Ha ha. Just trying things in.
I think this is the method used in Vectric Aspire to build 3D models. It works well for CNC routers. I have not tried it for 3D printing.
makes me think of how people have gotten original era arcade games to work on laser projection systems used for laser shows, since they respond well to vector input as that is basically what they do when they draw on a wall with a laser dot. So things like Asteroids
This is a really good analogy. When we model a ball a stl is just triangles approximating a curved surface but full control allows us an actual curved surface.
Love these 'side quests' that you get up to, along with any test/review content you do!! Keep up the good work!!
The Logo turtle is back, but this time its running a cnc machine instead of pictures on a screen. 80s kids rejoice!
Yes - but in three dimensions.
Just 80s kids? Turtle is still a way many students learn Python :-)
So, back in the 1980s I used to write G-code by hand for a CNC lathe. This like something like that but for a 3D printer. Anyone could do that but it would be too too easy to make mistakes. And it would be very tedious. Since one is controlling a real machine one could do damage. Existing well tested modeling and slicer software for free seems to me to be far to good to pass on.
We can share STL files. In many cases one can make modifications to an STL made by someone else. One can certainly modify design files from others. I can't see the point of trashing that and starting over.
yeah I see it as an entirely different use case, now I know how to use it, I will be, but not for designing objects - more for research and testing.
Pretty sure it's venv is "virtual env," which equals virtual environment.
nah, it's latin.
Yes, a way to have a "portable" python setup with all correct versions of prerequisites and stuff
*cough* docker
@@LostInTech3D
- "venv" is a module in the standard library for creation of virtual environments. The docs page says venv was introduced in Python 3.3.
- The Python website still has the release notes for 3.3.0, which claims 3.3 was released September 29, 2012.
- The Wikipedia page for "Docker (software)" says Docker was first released March 20, 2013.
- None of this actually explains why python folks haven't adopted Docker at any point in the last 10 years, but nonetheless, in at least some corners of the people who code in Python, docker hasn't made any inroads.
- Despite docker's existence, many languages insist on doing their own thing for dependency management, and running code natively on the machine directly. 🤷
@@LostInTech3D but is it future Space Latin or ancient Roman Latin?
I guess I should publish my fullcontrol IDE now
The blob cylinder really makes me want to be able to use surface treatments like that like how fuzzy skin works. Blobby textures would be fun.
Agreed. It would probably work really well on handles or other grippy surfaces!
Great!
CNC GCode routines, loops and all, for subtractive manufacturing coming full circle into additive manufacturing...
With all the same levels of trig knowledge and machine comprehension required.
My mill wright would love this!
Average user, not so much.
Interesting tool. Odd, niche use cases, but there are some times when what you need to do will require just taking over and telling the machine what to do. Rare, to be sure, but nevertheless useful.
I saw the blob demo last video and I was super intrigued. Happy to know what it is. That's a really sick and useful printing style.
I think it's the non-planar printing that interests me the most. Given it's just Python, it would be very easy to add some safeties too.
You could have a place to plug in variables like nozzle depth and angle, height to print head, distance to cooling fans, and more.
Then before a print model is generated, it could do some basic math to check if anything you have programmed will hit. Cool!
the sky is the limit on the python library, for sure. I wish I had more time to mess with it, maybe I'll do more later.
@@LostInTech3D I have a whole ass programming degree, but the math is still intimidating. Fortunately there are plenty of math libraries to make life easier as well.
This is brilliant and the possibilities are endless.
So this seems like basically an extrusion library for Python. Nice for data driven or function driven objects. But for most purposes, what would be desirable would be non-planar surface tracks - like a really smart, adaptive vase mode for the surface with smart fill.
Ok, think in missing something. The "slicing music" at 2:19. Is that a real thing? What's it from? It's catchy.
Heh, see the cura video from about a month ago
@@LostInTech3D I looked the music up and played it in front of my daughter (10). She asked "why does that even exist?"
I responded with "An even better question would be, where has this been all my life?"
Thank you sir for introducing us to this new piece of world culture!
While not practical for common hobby use. This would work really well for mass production. Where you can allow yourself to spend a bunch of time optimising the design. Yet, i feel it would be better to use a slicer for the general shape, then refine with gcode tools.
i think you are right! there are workflows/tasks where this could make a lot of sense, combined with parametric scaling you could do varieties of parts when needed....lots of open frontiers with software and firmware in 3dp...
That 90 degree overhang looks incredible. Cura needs to get on that lol
Yes - it does - but it needs to be automatic. Manually generating the G-code to do that is a monumental pain for anything more than the simplest examples.
Look up Arc Overhang, there is a post-processor
So python interface for parametric gcode generation?
Loooool, event horizon quote on a 3D printing video, I really love this world 🤩
I think my first touch for G-Code was with CNC plate cutter/stamper or what it was called at 1997 when I was in vocational school. Course was about CNC machines. Basically we hand write G-code at that course. Can't remember was it heatsink from 1mm aluminum plate or amplifier case with 0.5mm steel. Heatsink used about 5x30mm rectangle punch tool and amplifier case use also that and additional tools to puch holes for potentiometers, switches, etc.
This feels like it would be a really good toolkit to make a "3D slicer" from!
Oh, you've printed a non-planar leaf!
That lattice phone stand makes great sounds when it's being rolled on hard surfaces ;)
A question about the little imperfection or ‘seam’ that is left behind by the print head in the surface of the print
I know that the user can choose where to place this ‘seam’, such as in the back of a vase. Or this seam can be scattered randomly across the printed surface.
Is it possible to add extra seams on the surface of a print? Such as having eight equidistant seams running up the side of the vase.
Thus the ‘seams’ become part of the design.
Maybe these eight ‘seams’ could spiral up the side of the vase, or cross over each other to form a diamond pattern?
Could we write a brand name up the side of the vase using the ‘seams’?
Could we make this imperfection a feature on the surface of the print?
For this to be useful I'm reminded of getting 2 colour printing going in a hurry. I'd get Cura to spit out the gcode and then go in and tweak with notepad++.
This is one of those things that i wonder where people get time to play with it!
That was a fun video......Im a nerd methink. Thank you! I really enjoyed it, brought back nice memories of programming. In 1984 I did a Tie Fighter do a roll over and explode in machine language (no compiler) on an Apple ][e. From arrows..to binary...to hexadecimals...call commands....with the constant fear of typing the wrong command and redirecting extra power from power supply to a random key on my keyboard setting me on fire. :P Latter is an exaggeration, I could have made this happen if I remember right, but it would need a full set of self aware typos.
Nice primer! Grasshopper next?
Very interesting thanks for sharing with us FullControl !!
SO a bads analogy is, this is like vector printing when slicers are raster? it seems to use a lot less computing powerthan a slicer right?
I don't think I'm stupid but I couldn't understand any of this. Is this just for round shapes? And even if it is I couldn't make sense of how he went from a cad package to the G code output. He seemed just as hesitant and confused as I was about it.
Well, if that makes you feel better ;)
Not just round shapes. You can draw anything as a combination of lines and arcs, and it can convert svg images into sets of points too, and then convert the path between them into gcode.
Converting instructions in Python into instructions in gcode (for the printer), is what library does. You say you want a point here and point there, please extrude enough to get there in a straight line, but you don't need to calculate how much to extrude, and the bed boundaries are already set (and hopefully accounted for; I haven't tried to go out of bounds yet).
I trust this guy cause he sounds like Mumbo Jumbo
See, I knew confusing people was the right way to look smart.
It was so relieving when he finally activated the dark mode for the IDE.
I wrote multiple gcode generators for CNC machines. My software builds the entire scripts for some cnc functions. I wanted some very specific CNC operations to be super easy to get without a drawn cad file, so I was un-satisfied with what existed, so I taught myself gcode and then wrote software to generate gcode. It wasn't that hard. It's very useful to know some of it, you can make your own to clean the nozzle and things like that easily.
i did the same thing. these cycles were faster and easy to use - an old machines, it was faster than CAM! :) its all depending on what you try to accomplish"!
...3d printing has a huge software and firmware problem. everybody reinvents the wheel...
THAT LAST EXAMPLE WAS INSANE, could it go in a full sphere like that?????
Seems like more of a toy for anyone not doing slicer research, but I would like to see slicers getting more CAM-like features or CAM programs generating gcode for 3D printing that operates on pure part geometry like a CNC rather than parts converted to polygon volumes and then waterline algorithm slices.
Maybe this will be useful with a ki take a stl and translate it to Full control code.
But how it is now I can’t see a practical use case.
Have you not just described a slicer?
@@theninjascientist689 yeah but no slicer today is making the same tool paths for now like in full control.
I heard in a Vision miner vid they are now using KI to improve high temp printing success rate. But they didn’t show it. But it’s probably in the slicer.
Please let me know when FullControl becomes installable with the proper input output
Interesting approach. Beyond slicers: Have an AI write G code for you, use Full Control, or the grand daddy that predates slicers, use OpenSCAD for parametric and/or geometric design. If you prefer programming to drawing things in CAD, OpenSCAD is for you. It's so incredibly powerful that it's almost addictive and programs can be developed piecemeal like other programming. Draw a square. Stack the squares to make a box. Rotate each Z step in the XY plane to make a twisted box vase. Increase the length of the X and Y moves slightly for each layer to make an outwardly flaring twisted box vase, Add a sin function to put surface ripples on the outwardly flaring twisted box vase. Increase the amplitude of the sin ripples with Z height. Etc. It's fun to write the code and see the 3D object you're describing, and the OpenSCAD file is very small for the complexity it creates.
sadly openscad is undercooked and scuffed as a language
@@dotanuki3371 It's also glacially slow as a platform. I don't know why their solver is SO MUCH SLOWER than Solidworks or F360, it doesn't even have to calculate complex constraints.
I was thinking the exact same thing. This would be cool school example for math. It would make people really understand how trigonometric functions work.
i wished id be better at coding - somebody needs to bent LINUXCNC and FreeCAD towards 3d printing. i am not yet able to do so myself...but i am going there....slowly... ;)
Where can we find some of the model gcode? Want to print some of those out. I found them on their web site, I'm going to have fun printing some of these out tomorrow, whish I could post pictures in TH-cam comments.
It's interesting.!! Where can I find the toolpath for the model in the video 13.34?
craziest thing is that sunlu sponsored you
This is very cool ! any update on this ? I am going to get into this!
okay but is this any good other than tech demos? How can I use this in my daily routine of making objects from STLs?
Interesting although I don’t know how widespread the appeal is. Working with something like stl files is a bit more versatile
Yeah - but STL only allows you to draw triangles. With direct g-code access, you can draw smooth arcs without using a bunch of straight line segments.
I think you can be much faster and it's more intuitive to design in a classical graphical CAD tool. Like sure, I would use this for something simple and abstract which looks nice, but when I want some functional part or some estethical part that is more complex, I can't see the advantage to using this. To me it feels like a solution in search for a problem, but maybe there is some valid use case that I'm not seeing. Or is it just something to toy around with?
Kudos to the guys who wrote it anyway, I'm sure it's challenging to do.
I mean it’s kind of more about discovering techniques to build into slicers down the line. Arc overhangs started as a full control thing and are getting implemented into PrusaSlicer just as one example. For most 3d printer users full control is a clever party trick.
With Cura 5.5's new API that lets you access some of the backend slicing logic, im curious how long it will be before someone implements CAM logic to slicers. Or if Fusion360 and its competitors would ever go down that road
Maybe if your running larger batches of objects on a print farm, you might benefit from some highly optimised gcode.
In most cases, no. And the traditional workflow offers another important advantage: a clean separation between the description of the object itself, and the gcode that adds all the particularities of your printer and the filament you are working with.
Import a 3d file in your python script and slice it
Can chat GPT build an STL file from descriptive language yet. Like telling it to make a model of a 1957 Lincoln or a well known celeb?
We need some tutorials on using GPT. You could point it to the python library. It would read and understand. Just need to prompt what we want. I want to try those blob light fixtures.
Thank $deity I bunped into this video. This is a game changer. Appreciate the quick demos.
It looks like it would shine the most while combining GCode generation processes: the easier, more repetitive stuff in the software, and more intricate parts in full control!
Oh cool that Bambu Lab ad we see on TH-cam is using FullControl isn't it?
I've not seen a bambu ad 🤔
How about modifying an (open?) source cnc mill software to control feeds, temps and routines? CNC Mill software is full control out of the box. Or use Grasshopper g-code output.
Can’t wait for a CAD program that leverages this. Obviously writing code to draw is suboptimal for complex models, but if someone made a GUI around this, it might have more use cases.
Probably not. It is called CAM. It is the standard in the machining world. And even after being common for 40 years, it still takes years to learn even with nice GUIs.
A 5axis/rotary setup would make the max out of this.
funny you should say that.
@@LostInTech3D I perceive 5-axis more fun than funny though.
Ok other than printing overhangs without supports ? it seems full control with it's features should be just added to a slicer program.
it's an interesting thought...
I wonder if you could use full control to design and print from your phone.
I think you can...I've done python on the phone before.
@@LostInTech3D cool... Now I just need to learn Python 😅.
Amazing video!
thank you! :)
Can FullControl print with 3D moves?
Yes! It can do non planar printing even
Next step would be using that generator in combination with a 3D-model. Before that this is just going to be a novelty really.
Nice, but I think another better solution already exist few years (unnoticed by 3d community), it's called "Velocity extrusion" and it's available in MachineKit. Concept is simple, you just tell your 3D printer how many plastic to deliver when we are printing, then just supply usual GCode for movements (lines, arcs, circles, etc ...) and speed, printer by itself will calculate and control retractions, accelerations, jerks, plastic delivery rate in particular point of space, this way your GCode don't need to directly control additional "Extrusion" axis on each move and you are free to utilize full power of CNC GCode.
Still can't understand why I would need this thing. What's the point of all of this flexibility, if this thing can't process the stls? It seems like with a lot of hussle I can design some gimicky geometric shape, which may have limited artistic value, and that's all. If I need to make something mechanical, like a gearbox enclosure, I would make it much faster in literally any CAD, than program it by hand. If I need something artistic, like a character figurine, then it's even imposibble to program manually.
Meanwhile, all of the 3d prints featured in this video, except for the nonplanar one, are totally achievable in slicers with expert level settings. You mentioned calibration 3d prints, but more advanced slicers feature build in calibration generators (for example, SuperSlicer and Orca Slicer). You mentioned nonplanar 3d printing, which can be a game changer for eliminating layer lines, but it's inapplicable to real life prints. You demonstrated supportless concentric printing, but it's achievable with postprocessing scripts in Prusa Slicer and it's derivatives. I just can't see any actual usecase to this software.
I know that you just bearly touch this topic in this video but I really need non planar gcode to become more mainstream it would be extremely useful for some prints even if it would be just for a span of few layers to do a smooth curve around it
I certainly hope to look more at non planar as I get more into the self built stuff (pointy nozzles!)
When you are using ChatGPT to generate code ... why not have it generate G-Code directly already? I would suspect that GPT-3.5 would not do an amazing job, but GPT-4 has something they call "analysis" which is just a generator of python code that does part of the work for GPT. So with GPT-4 + Analysis, it should be possible to write G-Code and even to plot out the results, and even to maybe write "tests" into the code itself to make sure some constraints/angles are respected.
So, basically this is an 'assembly' language for G-Code as our machine language analogy here, instead of 'compiling' from triangle models?
Interesting. Can't really think of many uses for this currently that wouldn't be equally well served by hand-writing G-code (as it was INTENDED to be hand-written this way back in the early days of numeric-controlled machinery), but the fact that it's a Python library opens up interesting programmatic uses of it -- like doing new kinds of 'slicing' from something like OpenSCAD, using something other than 2.5D slices.
Of course, being able to loop and whatnot makes hand-writing G-code much easier, and I guess some ability to port G-code between machines is also handy. Maybe this will make 'handwritten' (or rather 'assembled' in this manner) G-code appear more often in 3D printing, as currently it's almost unheard of.
VENV a Virtual ENVironment. for non- computer science people:
it's like having a collection of pots when cooking a recipe and the default python install is the kitchen to cook in. . if you mess up the recipe it's contained in the pots and can be cleaned or new pots can be obtained for a second go at the task. not having a venv activated just mean you are cooking your recipe without any pots, directly on the burner and if that recipe goes sideways, you're going to need to put in a lot more work cleaning that kitchen, or in worst case, a full remodel (reinstall of python) Hope that helps.
full control sounds like the winner! why do we not have their code in our 3d printers,
and in our 3D printers? good luck changing the language from caveman!!
Sunlu is the pla I got and stayed with after 3 years. It doesn't sink and prints great. Most of the time filament isn't most too, so no drying needed
14:33 This is a very weak "end script". It pulls a thread and even leaks plastic. Is very-very amateur....
The correct finish is a quick retract of at least 1mm, then very quickly lifting the hotend laterally and also up (diagonally).
This has worked for me for years and even the notoriously fibrous PET-G doesn't pull...
i love the use of AI in this context. i will give similar experiments a try i think. that was probably really fun to figure out!
Ooh, ooh, please sir, i watched the blob video.
you're my favourite
@@LostInTech3D Popularity at last!
Very Cool hope it works
I love full control
The closest I can think to call this is additive CAM
We need a Cura plugin of fullcontrol
It’s probably more useful to slice a model traditionally and then modify the gcode how you need.
3D printers usually use marlin gcode which really sucks compared to the gcode that most professional cnc machines use. But it’s easy to understand gcode so I don’t want to learn python.
Full control is cool but it is not practical, you will have to spend far longer making the model up like that than using CAD software and hence most details would probably be lost due to the time required to make them.
How do you do infill? I take it you would have to manually program infill too?
Full control is not the way forward in my opinion, what we need instead is better slicers that can use more axes than they currently do.
Having to manually write out code to create the gcode would just make 3D printing much harder to use for little benefit, making even a semi detailed or complex model using full control would take far too long and be too prone to errors.
...It's just a Gcode Generator and Macro Library...
yep! and that's all I want it to be
awesome
So... Pretty much like OpenSCAD 😅
Just cause... Lboro Uni for the win (my alma mater)
8:07 I don't think that it sounds that bad
Yes, you sound like that. Only with a better 🎤🎙️..., but the Quality are always 100% Perfect from the First Video, Sir‼️And You are AWESOME 👍😎‼️ Stay safe, healthy, Greatings to all and share Love 🤗🤗‼️
appreciated! :)
wow cool
When is a resin vid coming ? 😏
_checks notes_ we've still got a while before the heat death of the universe, I can fit it in :)
Probably when he is deaf so that the ultrasonic cleaner won't bother him. Ha ha.
asking the AI was really cool
Ok, so fullcontrol isnt actually all that useful if i want to make anything complex.
Hmmm, any chance that you might look into blender’s functionality for 3d printing? I know there is a process for importing gcode, and adjusting the path in blender, then exporting the updated path/shape to gcode again.
that, is the territory of makertales @keep-making if you've not heard of him.
nozzleboss addon for blender lets you do that.
Full Control is good for complex objects. Try building those lattices on the Full Control site in a CAD program. FC is just good for a specific class of complex objects, namely, geometric ones.
I think it's still early days for FC. CAD is typically based on constructive solid geometry, and FC is a slightly more primitive form of that, reduced to arcs and lines. I see no reason why you can't build a set of Python functions that generate gcode that construct the same sets of geometric objects typically used to construct CAD models.
OpenSCAD and FullControl need to have a baby. FCOpenSCAD? OpenSCAD-FC?
Why are printers all more expensive in the EU than USA? I thought China had a trade way with America? 😢
Filament is decent price though 😅
I think the main difference is the EU and UK have 20% VAT, whereas I think most of the time US prices are displayed without any sales tax?
@@LostInTech3D Yup, USA sales tax is state by state.
The 2 year compulsory warranty might have to do something with it too.
What is the point? From an engineering standpoint this is working backwards. Sure an option but why?!
We don't need operating systems where we're going. Let's write every operation ourselves...
Fascinating, but tedious. Maybe there’s a compromise somewhere.
You still sound like that 😎
FYI, in case it wasn't already mentioned. VENV = virtual environment. It's a sane suggestion to install and run under a virtual environment because a root python environment can be dangerous, whereas a virtual one is kind of sandboxed and doesn't modify the base install when you start messing with dependencies.
Why don't they just be normal and say "use a VM"?
@@ChaosSwissroIlbecause it’s totally not the same? Can’t tell if you are being serious or not..
There's simply too much stuff to know it all. Easy misunderstanding if you're not familiar with python.@@kevintieman3616
Hmm this is actually what basically all CAM programs allow you? Let you define the tools and paths. Slicers are basically CAM programs with very hard rules.
I've never used CAM software but yeah it's sorta like abstracted CAM I think
VENV - Virtual Environment x)
If you're still using the STL format you're loosing resolution. Start exporting your models to the STEP format instead.
As for learning how to program to be able to print anything, if you're a masochist maybe, but no thanks.
venv = virtual environment
This is just vase mode for math nerds.
No discord ping😔
done!
hello rhinoman
wow.
From your descriptions o hatter you aren't very familiar with the concept of procedural design, wwell full control is just that. Procedural design systems shine when you have specific quantified needs, like specific gear meshes and compensation for material properties, and gcode was designed to be used this way. They tend to be weak in ease of use, which is why graphical tools like OpenSCAD and F360 exist.