Hi,
I've been developing my own cad. Why? because I can, with help from AI.
Having dabbled with Python, I decided that is not for me. The
implementation of the Manifold library is not yet complete in python, or
it wasn't when I started into this, a month or two ago, so I decided to
use C++ (Cpp) and a parser for my code. C# would have been easier, but
that needs .net, afaik. I know very little about Cpp, and I forced
co-pilot to write all the code. At the moment, the LLM versions of AI
are little more than glorified search engines. They work well for
Python, where most of the difficulty is in finding blocks of
code/existing libraries, to do what you want, but I wonder whatever they
were smoking when the decision was made to make spaces significant in
Python, although that concept would have been OK for coding forms, I
suppose... so, I've had to hack together a parser, for my home brew,
simple cad language.
Fundamentally, In my cad world every object relates to the physical
world and has three dimensions, excluding time and whatever else. 2d
objects do not exist, other than as thin 3d objects. Object names can
can mutate - a value, one moment, a shape the next. All calculation in
fixed decimal point.
So, how far have I and AI got? I'm pretty pleased, and I've attached
some code and results below. This only shows a fragment. My latest
effort is to show_view to a gui screen, so that I can manually select
points, and enter them into the code. this will be needed to easily
select specific, individual edges to be filleted, and also I think that
may be useful for pinpointing mismatched triangles. The code example
(demo.cad) attached, shows the errors that verify can pick up, for
example. Because my cad does all it's calculations using manifold
parameters, then the result should be manifold (watertight), but it may
have small defects.
I've designed it so that a useful help is built in, and a verbose mode
that can print out the calculation steps, if I have a problem with a
particular function, although the more recent functions do not have that
(AI memory is worse than mine.). I simply have to say to copilot,' write
the help for xyz function', then spend an hour or two reminding it how
it organised it three hours earlier. I've used my cad a few times to
create 'useful' 3d printed items, but I want to see if the mutable names
becomes a problem with more advanced items.
I use meshlab to automatically show the .obj and .ply files, openscad
for the scad files. I much prefer the openscad viewer, but it is slower
to render.
Not shown, but I have subroutines, for/next, if's etc, the versions that
I grew up with, and, as well as the manifold simplify, i have my own
point reduction methodology, which sometimes behaves in a more
predictable manner - (but sometimes not), my own Minkowski type function
(which also operates inside the base shape), paths, etc.
For demo.cad, you can view the code by dragging it into the openscad
editor, or if you want it pretty, use vs code, and set to c#. the other
image files should be self explanatory.
Best wishes,
Ray
because of the 1500kb size limit, I'll send the other ply and obj files
seperately
Hi,
I've been developing my own cad. Why? because I can, ....
here's the output.obj file, attached
Best wishes,
Ray
Ray:
Very ambitious!
Is this a pre-processor for OpenSCAD? That is, does your system work
without OpenSCAD?
Jon
On 11/25/2025 5:27 AM, Raymond West via Discuss wrote:
Hi,
I've been developing my own cad. Why? because I can, with help from
AI. Having dabbled with Python, I decided that is not for me. The
implementation of the Manifold library is not yet complete in python,
or it wasn't when I started into this, a month or two ago, so I
decided to use C++ (Cpp) and a parser for my code. C# would have been
easier, but that needs .net, afaik. I know very little about Cpp, and
I forced co-pilot to write all the code. At the moment, the LLM
versions of AI are little more than glorified search engines. They
work well for Python, where most of the difficulty is in finding
blocks of code/existing libraries, to do what you want, but I wonder
whatever they were smoking when the decision was made to make spaces
significant in Python, although that concept would have been OK for
coding forms, I suppose... so, I've had to hack together a parser, for
my home brew, simple cad language.
Fundamentally, In my cad world every object relates to the physical
world and has three dimensions, excluding time and whatever else. 2d
objects do not exist, other than as thin 3d objects. Object names can
can mutate - a value, one moment, a shape the next. All calculation in
fixed decimal point.
So, how far have I and AI got? I'm pretty pleased, and I've attached
some code and results below. This only shows a fragment. My latest
effort is to show_view to a gui screen, so that I can manually select
points, and enter them into the code. this will be needed to easily
select specific, individual edges to be filleted, and also I think
that may be useful for pinpointing mismatched triangles. The code
example (demo.cad) attached, shows the errors that verify can pick up,
for example. Because my cad does all it's calculations using manifold
parameters, then the result should be manifold (watertight), but it
may have small defects.
I've designed it so that a useful help is built in, and a verbose mode
that can print out the calculation steps, if I have a problem with a
particular function, although the more recent functions do not have
that (AI memory is worse than mine.). I simply have to say to
copilot,' write the help for xyz function', then spend an hour or two
reminding it how it organised it three hours earlier. I've used my cad
a few times to create 'useful' 3d printed items, but I want to see if
the mutable names becomes a problem with more advanced items.
I use meshlab to automatically show the .obj and .ply files, openscad
for the scad files. I much prefer the openscad viewer, but it is
slower to render.
Not shown, but I have subroutines, for/next, if's etc, the versions
that I grew up with, and, as well as the manifold simplify, i have my
own point reduction methodology, which sometimes behaves in a more
predictable manner - (but sometimes not), my own Minkowski type
function (which also operates inside the base shape), paths, etc.
For demo.cad, you can view the code by dragging it into the openscad
editor, or if you want it pretty, use vs code, and set to c#. the
other image files should be self explanatory.
Best wishes,
Ray
because of the 1500kb size limit, I'll send the other ply and obj
files seperately
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org
--
This email has been checked for viruses by AVG antivirus software.
www.avg.com
Hi Jon,
It works without openscad. It produces object and ply files, and other
formats, if I could be bothered to fight with co-pilot. It outputs the
openscad polyhedron thing, that is all it has that is connected to
openscad. However, it will not be on git-hub/wherever, since for me, the
journey is the destination.
It does nothing much that could not be done in openscad, but I wanted to
find out whether mutability was a hindrance or a benefit.
I believe that openscad should remain as it is, not weaken to the
influence of python. (fwiw, inmnsho, compared to writing a parser/using
cpp, writing a python pre-processor script is easier). The future of
openscad is in its reliability, using a succinct code base, probably
improving it's usability of the display mechanism, better svg handling,
etc.
In a year or two's time, when AI is a bit more I, this sort of thing
will be done in a day or two, but probably not for free. If you are in
the business of writing code, be afraid, very afraid. I think, in the
whole thing, I have only typed in three lines of code, that was easier
than getting the ai to change it.
Best wishes,
Ray
On 25/11/2025 12:12, Jon Bondy wrote:
Ray:
Very ambitious!
Is this a pre-processor for OpenSCAD? That is, does your system work
without OpenSCAD?
Jon
A screen grab showing your current UI, or a sketch showing what you want for it to be would be quite helpful.
For my part, I've crashed and burned or run into limitations on pretty much everything I've tried until I got to Open/PythonSCAD (needed Python for "real" variables to track machine position in: https://github.com/WillAdams/gcodepreview), though I did make it through the tutorial for Dune 3D pretty much in one take w/o difficulty, which is a real testament to its UI/UX and I'd recommend folks who have any interested in GUI 3D CAD at least look at it.
That said, I'm currently listening to/watching:
https://www.youtube.com/playlist?list=PLUilfM8GEmrS3yRLygdFOGJjRZHOzLnkM
and I'm really regretting buying a Plasticity Studio license rather than Moment of Inspiration 3D.
I really wish that there was a visual programming language suited to 3-dimensional work which clicked with me (yeah, arguably, I should've bought Rhinoceros 3D and used Grasshopper, or stayed in bed w/ Autodesk and used Autolisp) --- that said, BlockSCAD is surprisingly useful, and I'm very glad of:
https://github.com/derkork/openscad-graph-editor
William
A screen grab showing your current UI, or a sketch showing what you want for it to be would be quite helpful.
For my part, I've crashed and burned or run into limitations on pretty much everything I've tried until I got to Open/PythonSCAD (needed Python for "real" variables to track machine position in: https://github.com/WillAdams/gcodepreview), though I did make it through the tutorial for Dune 3D pretty much in one take w/o difficulty, which is a real testament to its UI/UX and I'd recommend folks who have any interested in GUI 3D CAD at least look at it.
That said, I'm currently listening to/watching:
https://www.youtube.com/playlist?list=PLUilfM8GEmrS3yRLygdFOGJjRZHOzLnkM
and I'm really regretting buying a Plasticity Studio license rather than Moment of Inspiration 3D.
I really wish that there was a visual programming language suited to 3-dimensional work which clicked with me (yeah, arguably, I should've bought Rhinoceros 3D and used Grasshopper, or stayed in bed w/ Autodesk and used Autolisp) --- that said, BlockSCAD is surprisingly useful, and I'm very glad of:
https://github.com/derkork/openscad-graph-editor
William