Drugi blogi
GrandpaCAD je bil ustvarjen za mojega dedka, strastenega navdušenca nad 3D tiskanjem, ki se je soočal s kompliciranimi CAD orodji. Moj cilj je narediti 3D modeliranje tako enostavno kot pogovor. Pretvorba naravnega jezika v natančno, 3D-natisnljivo geometrijo v trenutku.
Nedavno sem poskusil migrirati iz Blenderja v OpenSCAD. Ta objava sledi prejšnji o migraciji v Blender in pokriva različne metode, ki sem jih preizkusil, da bi našel rešitev, ki dejansko deluje za 3D modeliranje, gnano z AI.
Če želite videti, kako se primerjajo "možgani" operacije, preverite mojo primerjavo SOTA modelov za 3D generiranje.
| Metoda | Poraba žetonov | CAD funkcije | Najboljša uporaba |
|---|---|---|---|
| JSON | Nizka | Nič | Samo preproste primitive |
| JSCad | Srednja | Osnovno | Hitri prototipi, brez podrobnosti |
| Blender | Visoka | Malo CAD, malo organsko | Preproste oblike, procesiranje geometrije |
| OpenSCAD | Nizka | Veliko CAD | Natančno inženirstvo, matice, vijaki... |
Ko sem začel, sem mislil, da bi ustvaril JSON shemo po meri. Ideja je bila, da AI izpiše seznam združitev, odštevanj in drugih operacij.
To je takoj pokazalo pomanjkljivosti. Ugotovil sem, da je najboljši vmesnik za LLM programski jezik. Potrebuješ matematiko, zanke in logiko, da zgradiš karkoli netrivialno. Če bi ostal pri JSON, bi moral sam ponovno implementirati celoten nabor CAD funkcij, kar je ogromno in nepotrebno delo.
Naslednji očiten pristop je bil JSCad. Ker je odprtokodna implementacija CAD v JavaScriptu, sem mislil, da mi bo ponudil popoln nabor funkcij. Potisnil sem ga do meje, vendar ni niti približno tako celovit kot namenska CAD programska oprema.
Odličen primer so chamferji in filleti. JSCad v bistvu podpira samo "napihovanje" modela za ustvarjanje tega. To ni dovolj - ne želim spreminjati dejanskih dimenzij dela samo zato, da bi zlomil ostro rob.
Nato sem preizkusil Blender, ki ima najobsežnejši nabor orodij med vsemi odprtokodnimi 3D programi. To me je pripeljalo veliko dlje, vendar je prineslo dve večji težavi:
Ugotovil sem tudi, da je modeliranje stvari, kot so matice in vijaki, ki dejansko pasajo skupaj, presenetljivo težko v Blenderju, tudi s skriptiranjem.
Ko sem delil projekt, so ljudje opozorili, da je OpenSCAD boljša izbira za funkcionalne dele. Pred kratkim sem implementiral podporo zanj in rezultati so veliko boljši, modeli pa se generirajo veliko hitreje.
OpenSCAD je deklarativen. Namesto da bi kazalcu govoril, kam naj se premakne, opišeš končno stanje. To je veliko manj požrešno glede žetonov kot Blenderjev imperativen pristop. Čeprav OpenSCAD sintaksa ni "standardna" kot Python ali JS, to ni bilo težava. Zgradil sem ogrodje, ki lahko samodejno popravi kodo, če AI naredi sintaktično napako.
Z izkoriščanjem knjižnic, kot je BOSL2, lahko AI zdaj generira industrijske navoje, zobate kolute in kompleksne spoje z le nekaj vrsticami kode.
| Metoda | Podpora logiki | Kakovost mreže | Podpora CAD | Mehanska prileganja |
|---|---|---|---|---|
| JSON | ❌ | ⚠️ | N/A | Zelo težko |
| JSCad | ✅ | Spodobno | Osnovno | Zelo težko |
| Blender | ✅ | Pogosto pokvarjeno | Osnovno | Težko |
| OpenSCAD | ✅ | Redko pokvarjeno | Celovito | Vgrajeno/enostavno |
Na koncu je moj cilj kombinirati ta orodja. OpenSCAD je jasen zmagovalec za funkcionalne dele, matice, vijake in karkoli, kar mora biti 3D natisnjeno z natančnostjo.
Vendar Blender še vedno ostaja del infrastrukture. Njegov nabor funkcij je preveč uporaben, da bi ga zavrgel. Uporabljali ga bomo za upodabljanje in sčasoma za "organsko" modeliranje - kot je ustvarjanje figur po meri za Dungeons & Dragons - kjer stroga natančnost CAD ni tako pomembna kot vizualna estetika.
Pripravljeni zgraditi nekaj funkcionalnega? Preizkusite novi OpenSCAD mehanizem zdaj