Hey HN.
Over the last half a year I have been working on a 3D CAD programming language called DSLCAD. Today I am here to show my first release!<p>It is heavily inspired by OpenSCAD which got me hooked on the idea of a CAD programming language and what it can do.<p>Please let me know what you think. Ill be in the thread to answer any questions you may have.
I wish there was a way to combine the power of an imperative language driven model generating language like this (that generates breps, NOT meshes like openscad) but with the initial modeling using a GUI like a standard CAD tool. The reason being, it is much, much faster to draw complex parts using traditional methods versus trying to 'program' them. Writing code is fine for basic shapes, but go and try an 'code' a complex ribbed casting with bezier-definied swept surfaces.<p>I'd love to see a way to generate models with normal tools but, in the background, be able to access a code file that could then be embedded in an external script, headlessly. This way, say I have a part where 3 parameters change- I could take the code for that part, nest it in 3 for-loops, and iterate thru all the combinations of dimensions, procedurally generating the models (and potentially exporting them to a permanent format). FreeCAD allows actions to be scripted with Python but again, the actions have to be done in the language first- there is no 'going backward' from a part done in the GUI to Python (from what I can tell).<p>This is what parmetric programs like NX, Catia, Solidworks have the ability to do via "design tables" or other internal tools. But even those tools don't have an easily portable 'language' that the models are portable in, and the kernels aren't something that you can get in and poke around with (or interface with, say, Python, which is my dream).<p>Just food for thought for the author of this.
If you like the idea of a "markdown for 3D models", you should definitely check out Smooth Voxels: <a href="https://svox.glitch.me/" rel="nofollow">https://svox.glitch.me/</a><p>I have a fork of it that is faster and also command line tools to make working with these kinds of objects UNIXy. <a href="https://github.com/webspace-sdk/smoothvoxels">https://github.com/webspace-sdk/smoothvoxels</a>
I think your front page needs a lot more "what it does" and "what it doesn't (yet)". above that it needs a "why this is not SCAD."<p>I suspect most people bouncing off openSCAD are upset by the "programming" language, so I hope yours is simpler and has less "functional" annoyances.<p>Having the first part of your landing page explain how your project doesn't require forcing one's mind through the eye of those needles like SCAD does would be a great step to get people interested in trying to do things with it.
This looks awesome. If the 'fillet' works, that'd be enough for me to switch from OpenSCAD. Although to be honest, having a utility library like BOSL would be necessary too, or at least some way to make threads.<p>I'm going to download but another thing I would need to switch away from OpenSCAD - the ability to use an external editor, where the 3d model reloads correctly every time I save the program. Maybe your already has it, I'm going to check it out :)
Very cool, and excited to see more "Geometry as Code" tools getting built. In addition to comparing to OpenSCAD it'd also be awesome to see a comparison to CadQuery.
Oh interesting. I've recently tried learning JSCAD as I'm trying to model my freeline skates [(current progress here)](<a href="https://gist.github.com/nothingnesses/dc1171c2e20f7a6d9a1cb97654497c55" rel="nofollow">https://gist.github.com/nothingnesses/dc1171c2e20f7a6d9a1cb9...</a>). I like it as I'm already familiar with JS (one reason I opted for it instead of OpenSCAD) and I don't have to compile/install anything but my browser. However, I'm running into a limitation with it as it doesn't have a native function that allows me to bend models, so I'm currently trying to write one.<p>Is it possible to bend models easily in DSLCAD? What would you say are some reasons why someone might use DSLCAD instead of JSCAD?
Years ago I came across this talk about a guy who built a Clojure wrapper around OpenSCAD in order to design his own keyboard. Potentially relevant:<p><a href="https://youtu.be/uk3A41U0iO4" rel="nofollow">https://youtu.be/uk3A41U0iO4</a>
This is great, we need more of this sort of thing. Huge kudos for making it and documenting it. I will definitely be taking it for a spin.<p>1) Do you plan to add 'loft'? Without it, or some other type of morphing extrude, one is severely limited in the types of shapes it is possible to create.<p>2) I hope you don't mind me asking, what is the psychedelic-looking image I can see a sliver of in the screenshot? It looks like a rocking desktop background.<p>By the way, if you're not already aware of it, you may also be interested in looking at ZenCad for inspiration. It attempts to fill a similar niche (OpenSCAD-ish modeling + OpenCascade), except it uses Python.
Great stuff! If you're interested in something similar with a simpler language (Logo) and relative model construction (using the turtle) check out turtleSpaces:
<a href="https://turtlespaces.org/2021/09/08/how-to-create-and-3d-print-a-chess-pawn-in-turtlespaces-logo/" rel="nofollow">https://turtlespaces.org/2021/09/08/how-to-create-and-3d-pri...</a>
You can export STL files and 3D print them. We'll be adding a multi-color export method soon
If you haven't seen it you may want to check out <a href="https://github.com/zalo/CascadeStudio">https://github.com/zalo/CascadeStudio</a><p>From what I see, it is exposing the OpenCascade base commands directly, versus your completely new DSL, but you might be interested in a way to implement your DSL on top of such an interface such as this which takes out a lot of the extra work of having a rendering interface, exports, etc, maybe.
See also open source Pov-RAY. Not my software.
It has full featured boolean volumes, and could be called text based Blender.<p><a href="http://www.povray.org/" rel="nofollow">http://www.povray.org/</a>
<a href="https://github.com/cyborg5/pov2mesh">https://github.com/cyborg5/pov2mesh</a>
It might be nice to be able to install it with homebrew on MacOS.<p>btw, I know it's not open source, but you might be interested in KittyCAD: I believe they're looking for software developers with CAD experience. And you could do worse than work with Jessie Frazelle!
Very cool! What modeling kernel does it use?<p>Out of curiosity - are you a mechanical engineer? I'd be curious to know what your history is with different CAD programs, and what effect that had on the design/use decisions you made with DSLCAD.
Can you say a little more about the geometry kernel? Is it NURBS-based, triangles, f-reps, etc?<p>IIRC, OpenSCAD uses CGAL and is all triangles under the hood; other tools use OpenCascade for NURBS modeling, or weirder DIY kernels.
Would writing out text files be an option?<p>I've been trying to do this from OpenSCAD (now using RapCAD) and while I sort of have it working:<p><a href="https://github.com/WillAdams/gcodepreview">https://github.com/WillAdams/gcodepreview</a><p>I'm not so far along that I wouldn't try something else.
I'll have to check this out. Really great to see more of "cad as code". My current favorite is cadquery. It's pretty neat in that it simply is python.<p><a href="https://github.com/CadQuery/cadquery">https://github.com/CadQuery/cadquery</a>
This is great! I've been looking for something like this for a while. My only question is: does this do constraint-based modeling like other CAD software or do you have to specify individual parameter values?
This reminds me of <a href="https://github.com/nicklockwood/ShapeScript">https://github.com/nicklockwood/ShapeScript</a> although that is limited to Apple platforms.
The inertial model rotation is a pleasure to use, I’ve done the same in some of my programs and while it feels a bit strange at first it does make it easier for me to perceive the shape as it moves.
Chamfer and fillet are awesome, but the pipe… mixed feelings, especially since it uses a dash. Either a normal pipe or an Ocaml-like |> would feel more natural.
quick comment - if you have to note in the readme that it's pronounced "diesel cad" you should just rename it "dieselcad" and be done with that stumbling block.
This might be the right thread to ask for help with a 3d problem I've been working on for a year or so.<p>I have a resin 3D printer, and I want to make handles for it. Specifically, ultra lightweight handles using an irregular lattice.<p>OpenSCAD chokes on trying to union 100s of cylinders. Real tools cost $1,000s. Right now it looks like I'll have to write something to do the union in voxel space