Well, there's a lot less OpenSCAD on GitHub than Python. At first glance maybe a few orders of magnitude less.
But the bigger problem is (probably) not the lack of code, but the lack of good tutorials and well-documented libraries. And since there's no package manager (https://github.com/openscad/openscad/issues/3479) there's still no agreed-upon way to reuse code between projects.
All this is conjecture, of course. LLMs are mysterious beasts.
OpenSCAD is frequently written on the same level as M4 macro language, or assembly code with no comments. If you're bad at mental arithmetic and bad at keeping track complicated internal state, like LLMs are, you will have a bad time.
Look at the one linked below, for instance. This is from the official OpenSCAD repo, examples folder. There is no way for even an experienced programmer to understand and successfully modify that code without sitting down with a pencil and paper and doing arithmetic and geometry for half an hour.
The low amount of training data is definitely one issue, but I also think back to the SCAD I've written and it's not got very much in the way of English prompt-friendly text in it to "guide" the LLM towards using it.
Arguably, this might mean I don't comment the code "enough", but in other languages, the variable names and overall structure seem to carry a lot of that for the human programmer and also in a way that guides an LLM towards effectively using it. I don't know much about how LLM's work internally either, but I picked a random SCAD file of mine and I don't know how it'd be found to create a PCB spacer with generous clearance for an M3 screw.
$fn = 90;
outer = 4.5 + 1.6;
inner = 4.5;
h = 13.5;
//round = true;
//square = true;
hex = true;
if (square)
difference() {
cube(size = [outer, outer, h]);
translate([(outer-inner)/2, (outer-inner)/2,-0.05]) cube(size = [inner, inner, h+1]);
}
if (round)
translate([0,15,0])
difference() {
cylinder(d = outer, h = h);
translate([0,0,-0.05]) cylinder(d = inner, h = h+1);
}
if (hex) translate([0,30,0])
difference() {
cylinder(d = outer*1.25, h = h, $fn=6);
translate([0,0,-0.05]) cylinder(d = inner*1.25, h = h+1, $fn=6);
}