Excellent! I haven’t heard someone explain the difference between OpenSCAD and GUI tools properly. It’s a good explanation for when and where to use each tool.
Learning OpenSCAD is very useful, but did you know that OpenSCAD is also embedded into FreeCAD? So the modeling skills you develop won't be lost when you need to shift software.
I figured out most of the stuff I needed to use it for as my first ever experience with cad software, and I've hardly been using it for 16 hours as the posting of this comment. Definitely recommended.
Hard immutability presents the biggest challenge per the language itself. Secondarily, tracking complexity for large projects, making assemblies also present challenge, although can be handled with careful constructs and some external tooling (I wrote cscad, a openscad framework just for this). Thank you for excellent video.
ref: 8:37 You can convert an exported .stl file from OpenSCAD to .stp in just a few seconds using for example FreeCAD. OpenSCAD work also very good with Meshmixer. Smaller parts can be added to a larger modell in Meshmixer in precise positions.
A .stp file converted from an stl is still mesh based, which largely defeats the purpose. I probably should have clarified, but it's because STEP files support brep that they are an industry standard. When you export STEP from other packages you get a brep file.
In designing a printed circuit to receive many hundreds of LEDs, each with its own position and orientation, I found the PCB CAD scripting too crude to reflect the complex geometry needed, but that could be handled in a general-purpose language which then wrote a script to be read by the PCB CAD software. I imagine that the same could be done with OpenSCAD.
Did you ever compare OpenSCAD to SolidPython (python lib that produces scad code) or FreeCAD's python scripting or any other code-based modeling solutions?
@@dylanking9144 Good point, the base unit is a millimeter, I would have thought there would be a way to adjust that in the settings but I couldn't see anything, if you wanted to work with a different unit, you could just work as if you were using that unit and wrap the entire project in a scale to make it match.
Excellent review of opensCad ! I am new to this software and 3d modelling , i learned a bit last year with Freecad and i love it but when you use it occasionaly you don't remember everything you learnt and it is a bit frustrating . One point i want to add for the beginners is you can start with BlocksCad first, it is opensCad based and it is very easy to learn the basic, the step to opensCad sould be easier after.
Nice video! My pet peeve with open scad is the scope of an 'if' statement, which makes sense from a programming design perspective, but on other language works like that. Thank you for re-introduction to SolidPython, I've heard things about it, but now I should try using it in a simple project.
Maybe I'm just stupid, but I read the beginner's tutorial and how to make a cube made enough sense but after that I was completely lost it was like an alien language to me.
I've discovered Cadquery too since making this video. Short answer is it's great. I think they're doing a lot to push the Code-CAD paradigm forward. Their selectors concept is pretty neat. I recommend it along with a couple others here, kurthutten.com/blog/curated-code-cad. My general opinion these days is that projects that escape the CSG mindset are the future of Code-CAD and hence projects that wrap OpenCascade (like CadQuery) have a head start in that regard. I've been working a little on CascadeStudio recently (also wraps OpenCascade) and we're working on an expressive 2d sketch API, check it out here github.com/zalo/CascadeStudio/pull/56. If you like the concept leave a comment :)
I'm currently working on a community website for "Code-CAD" (like OpenSCAD). A good way to think of it is codepen crossed with a thing repository. You can check it out at cadhub.xyz/
Hi, I do not have much experience with modeling software. So, do you have a video explaining the difference between open-scad and "code-cad" or a review about it?
I doesn't do machine paths besides some 3d print functionality which I've never used. It's main focus is on the modeling stage of a part's life-cycle, and would need to be exported to make machine paths in another tool.
@@TheRainHarvester no. It is not a NURBS system, meaning the geometry is not described by its mathematical definitions. Say circle is described as center and radius in real cad. But openscad give you many little lines to give a look of a curve. Therefore, any CAD,CAM system will not be able to recognise anything except for lines.
doing fillets and chamfers aren't actually that hard to do it comes down to a bit of planning and developing the right way of thinking when designing your object, the step file support is trivial as you can drag your stl or obj file into other software packages and make the conversion,
I didn't bother digging into the nuances in this video but there's more to it than strictly being STEP file format, it's the fact that OpenSCAD is mesh based and converting it to STEP won't change this, STEP files can accomodate both mesh and boundary representation models and it's the later that injection molding manufactures will insist on. And I really struggle to understand the idea that fillets aren't hard, in other packages you simple state which edges you want filleted and it's done, in OpenSCAD you need to make the rounded profile yourself which can get very difficult. I might be wrong, could you show me how to fillet the edges where the cube and cylinder meet in a performant way for the following? cube([6,6,22]); rotate([30,45,10]) cylinder(h=22,d=10);
@@meanman1992 you could do it by making a union of multiple hull statements of different heighted cubes and cylinders, with a bit of tuning you would also be able to bias the fillet towards either the cube or the cylinder this is how i've done pipe Y joint type objects before $fn = 32; main(); fillet(11); module main(){ union(){ cube([6,6,22]); rotate([30,45,10])cylinder(h=22,d=10);
} } module fillet(cu){
for (i = [0:0.1:cu]){ hull(){ cube([6,6,cu-i]); rotate([30,45,10])cylinder(h=i*2,d=10); } } } this is a very very rough but you'll get the idea behind it, Ideally you would just bring it into blender (*or whatever the favourite package is ) and fillet the joint if you were only doing it a few times ,where you would do this purely in openscad is in a situation where you need to generate a large number of slightly varying objects which is where the command line automation stuff gets fun (easy to do though) as far as format stuff goes , it's not something I've invested a lot of energy into or even really care that much about , most of the cnc shops I've dealt with in china have been happy to take whatever format I've thrown at them a lot of them seem to be very flexible on that which is more than i can say for the local shops in Australia (some of whom the format is irrelevant as they still to this day write their gcode by hand... seriously not joking)
OpenScad has a serious problem relating to how it imports objects (.STL files) that were created elsewhere. The problem comes from mesh errors in the imported .STL preventing your modified .STL from being rendered by OpenScad. Which means no .STL for you! You can argue that you shouldn't be importing bad STLs, which in a prefect world is true. But if your only option is to grab an existing .STL file and modify it, and it happens to have an error, What are you going to do? Take the Thorn gun from Destiny, a friend of mine asked if I would print it for her and to do this I had to break up the gun into smaller parts. A perfect job for OpenScad. But because the was text added to the model by the uploader, and that text created issues with the .STL not being watertight, OpenScad would not render it. Specifically, the error that you get is "ERROR: The given mesh is not closed! Unable to convert to CGAL_Nef_Polyhedron." And digging through issue 4039, you will come across the comment that it is unlikely to ever get fixed (issue 4039 being closed notwithstanding) since it comes from an earlier open source project that OpenScad used as the foundation for their project. From the issue 4039 mailing list: "I don't think there are any active developers who are familiar with the deep magic that goes into the rendering engine (CGAL) - it's imported from another open-source project." These issues can usually be fixed in MeshMixer, which is what we did. And what a pain in the ass that was. And using MeshMixer to fix it can (most likely will) impact the accuracy of your .STL object. So don't expect your parts to necessarily fit once you've fixed it in MeshMixer. Not fixing the .STL might be overlooked by your slicer, in my case neither Simplify3D nor QidiSlicer particularly minded the massive chunk that was missing from the Thorn .STL part. LOL! That one isn't going to print. :) But other "bad" .STLs have printed out for me with no noticeable problems. YMMV. So it's not an OpenScad fault, but neither is OpenScad going to look the other way and let you get along with your business. Which in these cases (usually when text is added to the object) you will have to find your solution elsewhere.
This video could be 10 seconds long. OpenSCAD is open source. You will see over time that nothing else matters more unless you wish to be a slave to large cooperate companies changing TOS whenever they feel like it. OK I am biased. I love the concept.
Excellent! I haven’t heard someone explain the difference between OpenSCAD and GUI tools properly. It’s a good explanation for when and where to use each tool.
Learning OpenSCAD is very useful, but did you know that OpenSCAD is also embedded into FreeCAD? So the modeling skills you develop won't be lost when you need to shift software.
I figured out most of the stuff I needed to use it for as my first ever experience with cad software, and I've hardly been using it for 16 hours as the posting of this comment. Definitely recommended.
I learned old autocad from the late 90s. OpenSCAD translates that skill set quite well.
Loved this video. Thank you for making it.
Hard immutability presents the biggest challenge per the language itself. Secondarily, tracking complexity for large projects, making assemblies also present challenge, although can be handled with careful constructs and some external tooling (I wrote cscad, a openscad framework just for this). Thank you for excellent video.
csscad ?
Casual Precious Plastic reference in the midst of a thoughtful critique? Subscribbb.
Ayooo now we work together at KittyCAD 🐈
ref: 8:37
You can convert an exported .stl file from OpenSCAD to .stp in just a few seconds using for example FreeCAD.
OpenSCAD work also very good with Meshmixer. Smaller parts can be added to a larger modell in Meshmixer in precise positions.
A .stp file converted from an stl is still mesh based, which largely defeats the purpose. I probably should have clarified, but it's because STEP files support brep that they are an industry standard. When you export STEP from other packages you get a brep file.
great video bro. keep up the good work.
Great video, considering coming back to youtube and making more.
Thx for this great insight of OpenSCAD
In designing a printed circuit to receive many hundreds of LEDs, each with its own position and orientation, I found the PCB CAD scripting too crude to reflect the complex geometry needed, but that could be handled in a general-purpose language which then wrote a script to be read by the PCB CAD software. I imagine that the same could be done with OpenSCAD.
Same as using LateX for typesetting if the Word, InDesign et consortes exists etc.
if not openscad then which other 3d modelling software can we use to model which doesn't require much coding
Did you ever compare OpenSCAD to SolidPython (python lib that produces scad code) or FreeCAD's python scripting or any other code-based modeling solutions?
Great review👌.
What do you think?
Did I miss any important points?
I am guessing that the measurements are in millimeters? Just cant seem to find where it says what the type of increments it is using.
@@dylanking9144 Good point, the base unit is a millimeter, I would have thought there would be a way to adjust that in the settings but I couldn't see anything, if you wanted to work with a different unit, you could just work as if you were using that unit and wrap the entire project in a scale to make it match.
Excellent review of opensCad ! I am new to this software and 3d modelling , i learned a bit last year with Freecad and i love it but when you use it occasionaly you don't remember everything you learnt and it is a bit frustrating . One point i want to add for the beginners is you can start with BlocksCad first, it is opensCad based and it is very easy to learn the basic, the step to opensCad sould be easier after.
@@systemachic That's a good point.
Hello from Ukraine! Can you recommend me program (3d modeling >>>> printing). I am training in tinkercad and i want other more functional program
thank you !
Nice video! My pet peeve with open scad is the scope of an 'if' statement, which makes sense from a programming design perspective, but on other language works like that.
Thank you for re-introduction to SolidPython, I've heard things about it, but now I should try using it in a simple project.
I actually know a lot more about CodeCAD alternatives now, see this: learn.cadhub.xyz/blog/curated-code-cad
Maybe I'm just stupid, but I read the beginner's tutorial and how to make a cube made enough sense but after that I was completely lost it was like an alien language to me.
lol why so xD. make cube on center before that line translate whenever you want or rotate. make all parametric and vola xD
I recently discovered cadquery. What is your opinion on cadquery ?
I've discovered Cadquery too since making this video. Short answer is it's great. I think they're doing a lot to push the Code-CAD paradigm forward. Their selectors concept is pretty neat. I recommend it along with a couple others here, kurthutten.com/blog/curated-code-cad.
My general opinion these days is that projects that escape the CSG mindset are the future of Code-CAD and hence projects that wrap OpenCascade (like CadQuery) have a head start in that regard.
I've been working a little on CascadeStudio recently (also wraps OpenCascade) and we're working on an expressive 2d sketch API, check it out here github.com/zalo/CascadeStudio/pull/56. If you like the concept leave a comment :)
@@meanman1992 thank you very much ❤️ for a beginner like me that's invaluable advice 🤸
I'm currently working on a community website for "Code-CAD" (like OpenSCAD). A good way to think of it is codepen crossed with a thing repository. You can check it out at cadhub.xyz/
Hi, I do not have much experience with modeling software. So, do you have a video explaining the difference between open-scad and "code-cad" or a review about it?
Hello, I removed the bars on the right and left for editing.
How do I get them back? (I'm on Mac)
CAN openSCAD create gcode for cnc router machines?
I doesn't do machine paths besides some 3d print functionality which I've never used.
It's main focus is on the modeling stage of a part's life-cycle, and would need to be exported to make machine paths in another tool.
@@meanman1992 thank you!
you can export to STL
@@TheRainHarvester no. It is not a NURBS system, meaning the geometry is not described by its mathematical definitions. Say circle is described as center and radius in real cad. But openscad give you many little lines to give a look of a curve. Therefore, any CAD,CAM system will not be able to recognise anything except for lines.
Great code! One of the best choice for 3d modeling. But not unique. The concurents are open cascade, apdl, with own advantages and disadvantages...
doing fillets and chamfers aren't actually that hard to do it comes down to a bit of planning and developing the right way of thinking when designing your object, the step file support is trivial as you can drag your stl or obj file into other software packages and make the conversion,
I didn't bother digging into the nuances in this video but there's more to it than strictly being STEP file format, it's the fact that OpenSCAD is mesh based and converting it to STEP won't change this, STEP files can accomodate both mesh and boundary representation models and it's the later that injection molding manufactures will insist on.
And I really struggle to understand the idea that fillets aren't hard, in other packages you simple state which edges you want filleted and it's done, in OpenSCAD you need to make the rounded profile yourself which can get very difficult. I might be wrong, could you show me how to fillet the edges where the cube and cylinder meet in a performant way for the following?
cube([6,6,22]);
rotate([30,45,10])
cylinder(h=22,d=10);
@@meanman1992 you could do it by making a union of multiple hull statements of different heighted cubes and cylinders, with a bit of tuning you would also be able to bias the fillet towards either the cube or the cylinder this is how i've done pipe Y joint type objects before
$fn = 32;
main();
fillet(11);
module main(){
union(){
cube([6,6,22]);
rotate([30,45,10])cylinder(h=22,d=10);
}
}
module fillet(cu){
for (i = [0:0.1:cu]){
hull(){
cube([6,6,cu-i]);
rotate([30,45,10])cylinder(h=i*2,d=10);
}
}
}
this is a very very rough but you'll get the idea behind it, Ideally you would just bring it into blender (*or whatever the favourite package is ) and fillet the joint if you were only doing it a few times ,where you would do this purely in openscad is in a situation where you need to generate a large number of slightly varying objects which is where the command line automation stuff gets fun (easy to do though)
as far as format stuff goes , it's not something I've invested a lot of energy into or even really care that much about , most of the cnc shops I've dealt with in china have been happy to take whatever format I've thrown at them a lot of them seem to be very flexible on that which is more than i can say for the local shops in Australia (some of whom the format is irrelevant as they still to this day write their gcode by hand... seriously not joking)
dont know. not matter what peoples use. some use this and program some use samething but mouse draging xD
It can't create absolutely smooth surface geometry.
Use fn.
OpenScad has a serious problem relating to how it imports objects (.STL files) that were created elsewhere. The problem comes from mesh errors in the imported .STL preventing your modified .STL from being rendered by OpenScad. Which means no .STL for you!
You can argue that you shouldn't be importing bad STLs, which in a prefect world is true. But if your only option is to grab an existing .STL file and modify it, and it happens to have an error, What are you going to do?
Take the Thorn gun from Destiny, a friend of mine asked if I would print it for her and to do this I had to break up the gun into smaller parts. A perfect job for OpenScad. But because the was text added to the model by the uploader, and that text created issues with the .STL not being watertight, OpenScad would not render it.
Specifically, the error that you get is "ERROR: The given mesh is not closed! Unable to convert to CGAL_Nef_Polyhedron." And digging through issue 4039, you will come across the comment that it is unlikely to ever get fixed (issue 4039 being closed notwithstanding) since it comes from an earlier open source project that OpenScad used as the foundation for their project. From the issue 4039 mailing list:
"I don't think there are any active developers who are familiar with the deep magic that goes into the rendering engine (CGAL) - it's imported from another open-source project."
These issues can usually be fixed in MeshMixer, which is what we did. And what a pain in the ass that was. And using MeshMixer to fix it can (most likely will) impact the accuracy of your .STL object. So don't expect your parts to necessarily fit once you've fixed it in MeshMixer. Not fixing the .STL might be overlooked by your slicer, in my case neither Simplify3D nor QidiSlicer particularly minded the massive chunk that was missing from the Thorn .STL part. LOL! That one isn't going to print. :) But other "bad" .STLs have printed out for me with no noticeable problems. YMMV.
So it's not an OpenScad fault, but neither is OpenScad going to look the other way and let you get along with your business. Which in these cases (usually when text is added to the object) you will have to find your solution elsewhere.
This video could be 10 seconds long.
OpenSCAD is open source.
You will see over time that nothing else matters more unless you wish to be a slave to large cooperate companies changing TOS whenever they feel like it.
OK I am biased. I love the concept.
Thank you for the video, now I know that I will stay away from OpenSCAD. 🤝