Az OpenSCAD (ejtsd: „open-S-cad”) egy népszerű, nyílt forráskódú alkalmazás 3D objektumok modellezésére. Ellentétben a legtöbb más CAD eszközzel, itt scripteket használunk – egyfajta számítógépes program használatához hasonlóan – a formák meghatározásához, ahelyett, hogy az objektumokat közvetlenül kezelnénk a képernyőn egérrel és billentyűparancsokkal.
Az alkalmazás leírása a „Programers Solid 3D CAD Modeller”, de nincs szükség korábbi programozási tapasztalatra. Egy kis gyakorlással még a kezdők is képesek összetett formákat létrehozni és mozgó alkatrészeket animálni.
Az OpenSCAD nagyon pontos formák és struktúrák meghatározását teszi lehetővé. Ezek testreszabhatóvá tehetők „paraméteres” modellekkel, amelyek lehetővé teszik a méretek és egyéb jellemzők gyors megváltoztatását – a Thingiverse testreszabási eszköze és más tervezési testreszabási szolgáltatások, például a Make with Tech segítségével.
Hátránya, hacsak nem tudja matematikailag definiálni, az OpenSCAD nem biztos, hogy az organikus formák, például az asztali játékminiatúrák számára megfelelő alkalmazás . Ilyen esetekben a szabad formájú modellező eszközöknek, például a Blendernek különösen nagy előnyük van.
Az OpenSCAD szkriptnyelvének használata továbbra is növekszik és terjed, és több böngészőalapú implementáció és új renderelési és vizualizációs eszköz fejlesztése is folyamatban van. Tehát, érdemes megtanulni. Ezzel a céllal nézzük meg, hogyan kezdhetünk el!
OpenSCAD letöltése
Az OpenSCAD legfrissebb stabil változata már elérhető a hivatalos weboldalon. A letöltési oldalon megtalálhatók a macOS-hez (beleértve a MacPorts és a Homebrew opciókat), Windows-hoz (mind a 32-, mind a 64-bites verziókat) és különböző Linux változatokhoz szánt változatok. Az OpenSCAD néhány számításához komoly teljesítmény szükséges, így a nagyobb modellek esetén érdemes egy gyorsabb gépet használni. Azonban általánosságban elmondható, hogy jól teljesít minden olyan Mac-en, amely MacOS 10.9 vagy újabb verziót futtat, valamint a Windows 7 és annál újabb rendszerek esetén. Azonban még nincs Apple Siliconra optimalizált változat, viszont már az is fejlesztés alatt áll.
A Google Summer of Code kezdeményezéseinek részeként jelentős erőfeszítéseket tettek a modellek megjelenítésének és megjelenítésének javítása érdekében is . Ennek legújabb fejlesztési verziója, beleértve az összes többi legújabb fejlesztést is, ugyanazon az oldalon lejjebb érhető el. Ezeknél magasabbak lehetnek a rendszerkövetelmények, ezért nézze meg a letöltési linkek melletti megjegyzéseket.
A telepítés egyszerű:
- Válassza ki és kattintson az operációs rendszerének megfelelő verzióra és töltse le az .exe vagy .dmg fájlt a telepítési folyamat elindításához.
- Nyissa meg a letöltött fájlt, és kövesse az utasításokat az OpenSCAD telepítéséhez. Előfordulhat, hogy a Mac-felhasználóknak tudomásul kell venniük, hogy ez az alkalmazás a biztonsági beállításokban egy ismeretlen fejlesztőtől származik.
Splash Screen
Amikor először futtatja a szoftvert, megjelenik az „Üdvözöljük az OpenSCAD-ban” indítóképernyő. Ezen a képernyőn létrehozhat egy új fájlt, megnyithat egy meglévőt (a szoftver minden futtatásakor a legfrissebb fájljai is megjelennek itt), vagy megnyithat egy példatervet. Az összes mellékelt példafájl jól megírt, és kiemeli az OpenSCAD használatának kulcsfontosságú fogalmait.
Később ebben az oktatóanyagban egy „CSG.scad” nevű példát fogunk használni. A CSG a „Constructive Solid Geometry” rövidítése, amely az OpenSCAD működésének technikai neve. Most nyissuk meg ezt a fájlt, hogy először felfedezhessük a program felhasználói felületét.
- Keresse meg a “Examples” mezőt, és kattintson a „Basics > CSG.scad” elemre.
- Ezután kattintson a „Open Example” gombra.
Miután ezt megtette, megjelenik az alapértelmezett OpenSCAD felhasználói felület. Ha még nem ismeri a kódolást, ne aggódjon, ha ez a képernyő bonyolultnak tűnik. Később, a szkriptelési oktatóanyagban az egészet lebontjuk, és egyszerűen érthetővé tesszük.
Windows és menük
A kezelőfelület a megtekintési területből áll, amelyen látható a terv, amelyen dolgozik, és más ablakok, amelyeket tetszés szerint megjeleníthet, elrejthet vagy mozgathat. Az egyes ablakokat bezárhatja a bal felső sarokban lévő „X”-re vagy az Ablak legördülő menü „Hide…” elemére kattintva.
A fenti képernyőképen a szövegszerkesztő, a megtekintési terület és a konzol ablaka látható. Az OpenSCAD első futtatásakor általában egy hibaablak is megjelenik, de most zárjuk be vagy rejtsük el azt az ablakot.
Ismerkedjen meg az alapvető lehetőségekkel:
- Zárja be vagy rejtse el a Szövegszerkesztő és a Konzol ablakait az „X” gombbal vagy az Ablak legördülő menü elrejtése opciójával.
- Nyissa meg ezeket újra az Ablak legördülő menü segítségével.
- Kísérletezzen méretük és arányuk megváltoztatásával az egyes ablakok szélének húzásával és tetszés szerint mozgatásával.
Szöveg szerkesztő
Az OpenSCAD kódot vagy szkripteket a Szövegszerkesztővel kell bevinni, és az eredményül kapott modell megjelenik a Megtekintési területen. A szerkesztő gombjainak többsége magától értetődő (pl. Új, Megnyitás, Mentés stb azaz a New, Open, Save .) Érdekesek viszont az Előnézet, Renderelés, Exportálás STL-ként és 3D nyomtatás gombok vagyis a Preview, Render, Export as STL és a 3D Print.
- Az Előnézet gyorsmodellt hoz létre a Nézetterületen található példaszkriptből. Ez a gyorsmodell bemutatja az általános elképzelést arról, hogy fog kinézni, de nem ez a végső számított (vagy renderelt) 3D modell. Általában az OpenSCAD-szkript bármilyen módosítása után használja az Előnézet funkciót annak ellenőrzésére, hogy az megfelelően működik-e.
- A render utasítja az OpenSCAD-et, hogy számítsa ki a végső 3D-s modellt, amely pontos ábrázolást mutat, de sokkal tovább tart a létrehozása, mint egy előnézet. Nagyon bonyolult esetekben nem szokatlan, hogy a modellek megjelenítése órákig tart, de az alábbi szkriptelési oktatóanyagban létrehozott alakzatok között nem fog sok különbséget észrevenni.
- Az Exportálás STL-ként egy parancsikon egy ablakhoz, amely lehetővé teszi modelljének STL-fájlként történő exportálását 3D nyomtatáshoz. Vegye figyelembe, hogy ehhez a modelleket renderelni kell. A Fájl legördülő menüben a modell más formátumokba (például 3MF ) való exportálására is lehetőség nyílik .
- A 3D Nyomtatás egy parancsikon, amellyel elküldheti renderelt 3D modelljét egy online nyomtatási szolgáltatáshoz vagy az OctoPrinthez . Alapértelmezés szerint a nyomtatási szolgáltatás a Print A Thing , de a főmenü „Preferences” (Beállítások) részében másokat is hozzáadhat.
A Szövegszerkesztő okos abban, hogy előre tudja látni, hogy milyen kulcsszavakat kell beírni, és segít a beírt formázásában is, hogy könnyebben érthető legyen. Ebben a szakaszban nincs sok kísérletezés vagy játék, és ezt az alábbi szkriptelési oktatóanyagban látni fogjuk.
Nézőterület
A megtekintési területen navigálhat az egérmozgások, bal és jobb gombbal, valamint a Shift billentyű kombinációjával. Ez az adott egér- és billentyűzetbeállítástól függően változhat , de általában a következők érvényesek:
- Forgatás az egér húzásával, miközben lenyomva tartja a bal egérgombot (LMB)
- Mozgás az egér jobb gombjának (RMB) nyomva tartása közben történő húzásával.
- Nagyítson a görgővel vagy húzza az egeret, miközben lenyomja a „Shift + RMB” billentyűket.
A megtekintési területen számos navigációs parancsikon és egyéb lehetőség is található az ablak alján található gombok formájában. Először is megtalálhatja az Előnézet, a Renderelés és az STL gombokat, amelyek megismétlik a Szövegszerkesztőben található gombokat.
Ezek bal oldalán találhatók a gyors zoomvezérlők, köztük – balról jobbra – az Összes megtekintése, Nagyítás, Kicsinyítés és Nézet visszaállítása, ami nagyon hasznos, ha eltéved a nagyobb modellek körüli navigáció során.
Ezeket követik a szabványos nézetek, amelyek megváltoztatják a kamera szögét, hogy közvetlenül az X-, Y- és Z-tengely mentén nézzenek.
A fennmaradó menügombok lehetővé teszik a megjelenített egyéb jellemzők módosítását, amelyek bizonyos helyzetekben hasznosak lehetnek. Például az ortogonális nézet általában jobb mechanikus modellek készítéséhez, míg a perspektivikus nézet dekoratív modellekhez. Végül is ez egyéni döntés kérdése. Továbbá lehetősége van a tengely megjegyzéseinek be- és kikapcsolására, valamint a modell éleinek kiemelésére.
Konzol
A konzol általában a megtekintési terület alatt található meg, és technikai információkat jelenít meg a szoftver összes „háztető alatti” műveletével kapcsolatban.
Ez ijesztőnek tűnhet az újoncok számára, de a legtöbbet kezdetben figyelmen kívül lehet hagyni. Főleg haladó felhasználók számára válik hasznossá. Mindazonáltal hasznos észrevenni, ha bizonyos hibák előfordulnak, és érdemes ellenőrizni, hogy az exportált modelleket megfelelően mentették-e. Megjeleníti az Echo utasítások tartalmát is (lásd a 10. lépést lentebb), amelyek manuálisan hozzáadhatók a szkriptekhez, hogy nyomon követhessék azok végrehajtását.
Ennek ellenére gyorsan nézze meg, mi jelenik meg. Elképzelést ad arról, hogy mire számíthat, ha egyre előrehaladottabb tudással fog rendelkezni.
SZKRIPT OKTATÓANYAG
Ideje foglalkozni azzal, hogyan írjunk egy OpenSCAD-szkriptet.
Az OpenSCAD szkriptek a C programozási nyelv konvencióit vagy szintaxisát követik . Aki ismeri ezt a nyelvet, annak elég gyorsan fel kell ismernie a szerkezetet.
Azok számára, akik közvetlenül szeretnének elmélyülni a részletekben, számos nagyszerű online hivatkozás áll rendelkezésre, beleértve az OpenSCAD felhasználói kézikönyvet és egy nagyon hasznos, tömör Cheatsheet-et a gyors hivatkozáshoz. A kezdők számára azonban ebben a szakaszban inkább a terminológia pontos megértése szükséges.
Objektumok, műveletek és operátorok
Mielőtt teljes gyakorlatiassággal foglalkoznánk, szánjunk egy percet az OpenSCAD alapvető terminológiájának megértésére. Egyszerűen fogalmazva, az OpenSCAD „Objektumok” meghatározásával működik – jellemzően 3D primitívek, például gömbök, hengerek és kockák formájában. Az objektumokat „műveletek” hozzák létre, amelyeket aztán különféle „operátorok” manipulálnak és átalakítanak.
Például a művelet sphere(10);
létrehoz egy gömb alakú objektumot, amelynek sugara 10 egység. Ez ennyire egyszerű! Vegye figyelembe, hogy az OpenSCAD egység nélküli, így a 10 lehet 10 hüvelyk, milliméter, mérföld vagy parszek. A 3D nyomtatási alkalmazások többségénél azonban millimétereket feltételeznek.
Számos OpenSCAD operátor különféle transzformációkat alkalmaz az objektumokon, hogy mozgassa, elforgatja, módosítsa a színeket, vagy kombináljon több transzformációt, hogy különböző módokon módosítsa a kapott alakzatokat. Az OpenSCAD szkriptek a programozási nyelvekben megtalálható egyéb funkciókat is tartalmazzák, például az objektumok méretezéséhez és számításokhoz használt változók meghatározását, valamint a megjegyzések hozzáadásának lehetőségét, hogy segítsenek másoknak megérteni, hogy pontosan mit csinál a szkript.
1. lépés: Alap OpenSCAD kód
Most nézzük meg azt az példát, amit kezdetben megnyitottunk. Ebben a tutorialban játszani fogunk a kóddal és változtatni fogunk rajta, ezért jó ötlet egy saját másolatot menteni és az eredetit sértetlenül hagyni.
- A főmenüben válassza a „File > Save As…” lehetőséget, majd mentse a fájlt „CSG_tutorial.scad” néven a számítógép megfelelő helyére.
- Ha ezen a ponton nem lát semmit a megtekintési területen, nyomja meg a Render gombot, amely megjeleníti a CSG_tutorial.scad parancsfájl által meghatározott objektumokat.
A példaszkript három alakzatot hoz létre, amelyek mindegyike különböző módon kombinál egy kocka objektumot és egy gömb objektumot. Mindegyik kódja három megfelelő blokkban található, a 3., 10. és 15. sortól kezdve. Az alábbiakban végigjárjuk ezeket a blokkokat, hogy elmagyarázzuk, hogyan működnek.
Figyelje meg azt is, hogy a Szövegszerkesztő hogyan segíti a szkript olvashatóbbá tételét különböző színek használatával, és hogy kis függőleges fekete sávok vannak a sorszámok mellett, amelyek lehetővé teszik a szkript különböző részei vagy blokkjainak összecsukását és kibontását. Ez nem különösebben hasznos kis szkripteknél, mint amilyen ez a példa, de életmentő lehet nagyon hosszú szkripteknél.
3-8. sor
Nézzük meg az első kódblokkot (a 3. sortól a 8. sorig). Középen a következőket fogja látni:
cube(15, center=true); sphere(10);
Az első sor egy művelet, amely egy 15 egység oldalhosszúságú kockát határoz meg, az X-, Y- és Z-tengely origójának középpontjában. A második művelet egy 10 egység sugarú gömböt határoz meg. A gömbök alapértelmezés szerint középre vannak állítva.
Az egyes sorok utáni pontosvessző nagyon fontos. Azt mondják az OpenSCAD-nek, hogy egy adott parancs véget ért.
Játsszunk a kóddal, hogy magabiztosabbak legyünk a Szerkesztő használatában.
- Módosítsa a gömb méretét a 6. sorban ‘9’-re, majd nyomja meg az “Preview” gombot, hogy megnézze, mi történik.
- Módosítsa vissza „10”-re, mielőtt folytatná.
sphere(r=10);
Vagy módosítsa a kódotsphere(d=20);
Észre fogja venni, hogy a kódok ugyanúgy definiálnak egy gömböt, mint a sphere(10);
. Mindegyik egyformán érvényes módja egy gömb meghatározásának.
2. lépés: Unió
Az első kódblokkban lévő két objektum ugyanazt a tényleges helyet foglalja el, így az OpenSCAD alapértelmezés szerint egyként kezeli őket. Jó gyakorlat azonban ezt kifejezetten kimondani; ellenkező esetben váratlan viselkedések történhetnek.
Ahhoz, hogy az OpenSCAD ezeket egyetlen új objektumként ismerje fel, az Union Operátort kell használni:
union() { cube(15, center=true); sphere(10); }
Az Unió pontosan úgy fog működni, ahogy a neve is sugallja: létrehozza az összes objektumot egy „határon” belül, amelyet úgy definiálnak, mint minden, ami a kapcsos zárójelben van.
3. lépés: Fordítás
Ezután az új egyesített objektum balra tolódik el az X-tengely mentén. Ez a Fordító operátorral történik, amely az összes gyermekobjektumot meghatározott számú egységgel mozgatja a határain belül az X-, Y- és Z-tengelyek mentén:
translate([-24,0,0]) { union() { cube(10, center=true); sphere(15); } }
Ebben az esetben a „[-24,0,0]” csak az X-tengely mentén mínusz 24 egységnyi mozgást jelent. A „[12,12,12]” 12 egységet mozgatna minden tengely mentén – más szóval, átlósan felfelé.
4. lépés: keresztezés
A középső alakzat esetében (amelyet a 10-13. kódsorok második blokkja határoz meg) a kocka és a gömb kombinálása a metszéspont operátorral történik. Létrehoz egy új objektumot, amely az összes alárendelt objektumnak csak a határain belül átfedő részeiből készül.
Más szóval, ha az egyik objektum bármely része nem metszi egymást az összes többi objektum egy részével, akkor az eltávolításra kerül a végső metszett alakzatból. Valójában ez az operátor eltávolítja az összes olyan részt, amely nem közös az összes objektumban.
Próbáljon meg néhány változtatást végrehajtani a kocka (11. sor) vagy a gömb (12. sor) méretein, hogy megtudja, milyen hatással van ez. Mielőtt továbblépne, ne felejtse el visszaállítani az eredeti értékeket. Ha eltéved, lépjen a Fájl menübe, és válassza az „Reload” lehetőséget, és visszatér a példa legutóbbi mentett verziójához).
Objektumok hozzáadása
Érdekes egy másik objektum hozzáadása is. Adjunk hozzá egy kicsit kisebb kockát a meglévő kocka szélességének felével eltolva (Translate Operator segítségével), majd meglátjuk, mi történik.
A Szövegszerkesztőben vigye a kurzort a gömbművelet mögé, nyomja meg a return gombot, és adja hozzá a következőket a Gömbművelet utáni sorhoz:translate([7.5,0,0]) { cube(15, center=true); }
A teljes blokknak a következőképpen kell kinéznie:
intersection() { cube(15, center=true); sphere(10); translate([7.5;0,0]) { cube(12.5, center=true); } }
Ha megnyomja az Előnézet gombot, látni fogja, hogy az eredeti kereszteződés bal oldala el lesz távolítva, mert ez a terület már nincs megosztva az új kockával (lásd a fenti ábrát).
5. lépés: Különbség
A három példánk közül az utolsó a Difference Operator használatával készült, amely kivon egy objektumot egy másik objektumból. Hasznos lyukak és egyéb terek létrehozásához. Az Egyesüléstől vagy a Metszésponttól eltérően a Különbség eltérően viselkedik attól függően, hogy a műveletek vagy objektumok milyen sorrendben jelennek meg az operátorban.
Vessen egy pillantást a 16–20. sorokra, majd változtassa meg a kocka (17. sor) és a gömb (18. sor) sorrendjét a Különbségoperátoron belül. Figyeljük meg, hogy a kód eredeti verziójában a gömb levonásra kerül a kockából, de a cseréjük az ellenkezőjét okozza, amint az a fenti ábrán látható.
Alapszabályok
Bár egyszerűek, ezek a példák az OpenSCAD szkript két nagyon fontos aspektusát emelik ki. Az első az, hogy az operátorok csak a határain belüli objektumokra vonatkoznak – más szóval csak azokra, amelyek a következő zárójelek között vannak.
A második az, hogy az OpenSCAD a műveleteket és az operátorokat szekvenciálisan hajtja végre, az objektumhoz legközelebbi operátortól kezdve, és kifelé haladva. Tehát az első kódblokkban a 3-tól a 8-ig terjedő sorok között először a kockán és a gömbön hajtják végre az egyesülési műveletet, majd a Fordító áthelyezi az új objektumot.
Még akkor is, ha operátorok és műveletek nagy, összetett kombinációival dolgozik, kezdje a legbelső objektummal vagy művelettel, majd haladjon visszafelé, amíg el nem éri a legfelső operátort. Ahogy fentebb megjegyeztük, a Szövegszerkesztő segíthet azonosítani a legmélyebben beágyazott objektumokat. Lásd a sorszámok melletti függőleges sávokat.
Szintaxis
Amikor a 4. lépésben beírta az új Translate sort, észrevehette, hogy az automatikusan behúzódik. Ez nem szükséges az OpenSCAD szkript futtatásához, de sokkal könnyebben olvasható. Ezen a ponton tehát érdemes néhány szót ejteni a szintaxisról, az OpenSCAD által is érthető szkript bevitelének szabályairól.
A kötelező (vagy kritikus) szintaxis feltétlenül szükséges a kód futtatásához. Ha hiányzik vagy hibásan van megírva, az OpenSCAD hibaüzenetet ad, amikor megpróbálja megtekinteni vagy renderelni a modellt. Már láttuk a két kulcsfontosságú példát a kötelező szintaxisra:
- Minden Action utasításnak pontosvesszővel kell végződnie. Ez magában foglalja az objektumokat létrehozó műveleteket, valamint a változókat meghatározó műveleteket (lásd lent a 9. lépést).
- A kapcsos zárójelek jelzik az Operator utasítás határait. Amikor egy összetett OpenSCAD projekten dolgozunk, könnyen előfordulhat, hogy ezeket elveszítjük. Ha azonban a kapcsos zárójelre kattint, a Szövegszerkesztő kiemeli a megfelelő részt, ami kissé megkönnyíti a dolgokat, ha a dolgok bonyolulttá válnak.
Az opcionális (vagy nem kritikus) szintaxis megkönnyíti a kód olvasását és szerkesztését. Példák a következőkre:
- A behúzás általában növekszik, ha egy új operátoron belül van, és csökken, amikor az operátor befejeződött. Amint azt korábban megjegyeztük, a behúzás valójában nem szükséges az OpenSCAD futtatásához, de megőrzi a kód tiszta és rendezett megjelenését. Nyomja meg a „Shift + Tab” gombot a behúzáshoz vagy a kihúzáshoz. Alternatív megoldásként használhatja a Szövegszerkesztő tetején található Behúzás és Kihúzás gombokat.
- A sortörések és szóközök sem feltétlenül szükségesek az OpenSCAD futtatásához. Elméletileg ebben a példában bármelyik blokkot beírhatja egyetlen sorként, és a kód továbbra is működik. A sortörések és szóközök eltávolítása azonban nagyon nehezen olvashatóvá teszi a kódot.
- A megjegyzéseket egy perjel (“//”) jelöli. Az ezeket követő mindent figyelmen kívül hagy az OpenSCAD a következő sor elejéig. A példa legelső sora például egy megjegyzés.
6. lépés: Alakzatok megadása
Először kísérletezzünk az alakzatokat meghatározó műveletekkel. Megnéztük a gömb és kocka egyszerű változatait, de a kocka Action bármilyen téglalap alakú formát meghatározhat.
- Cserélje ki a cube Műveletet erre
cube([15,10,25], center=true);
- Nyomja meg a Preview gombot. Ennek egy téglatestet kell feltárnia, amelynek mérete 15, 10 és 25 az X-, Y- és Z-tengelyen.
- Ha elég magabiztosnak érzi magát, cserélje ki a cube Műveletet a cylinder Műveletre, majd kísérletezzen az azt meghatározó paraméterekkel (beleértve a kúppá alakítását is). A megfelelő szkripteket a Cheatsheeten találja.
- A folytatás előtt állítsa vissza a szkriptet az eredeti méretekre.
7. lépés: A felbontás megváltoztatása
Talán észrevette, hogy a renderelt gömb nem túl sima. Ennek az az oka, hogy az OpenSCAD alapértelmezés szerint alacsony felbontást használ, hogy a feldolgozási idő minimális legyen. Azonban, ha akarja, választhat nagyobb felbontást akár az egyes objektumokhoz, akár a teljes modellhez.
Ez a „$fn” érték használatával történik. Ez az alapértelmezés szerint körülbelül 30, és meghatározza, hogy hány részt kell használni egy alakzat létrehozásához. A 128 feletti értékek nem ajánlottak, és minden 50 feletti érték jelentősen megnövelheti a végső renderelést.
- Az első kódblokkban váltson erről:
sphere(10);
erre:sphere(10, $fn=50);
- Nyomja meg a Preview gombot. Látnia kell, hogy a gömb felbontása jelentősen javul.
- A felbontás további javításához módosítsa újra a következőre
sphere(10, $fn=100);
Ne feledje, hogy ugyanezt megteheti minden gömbnél, és még különböző $fn értékeket is használhat. Van egy mód a $fn meghatározására is a teljes szkripthez, amelyet alább, a 9. lépésben vizsgálunk meg.
8. lépés: Szín hozzáadása
A szín hozzáadása hasznos lehet a modellek valósághűbbé tételéhez, vagy bizonyos elemek kiemeléséhez a megtekintési területen. A színek többféleképpen definiálhatók az OpenSCAD-ben: RBG-értékként, hexadecimális értékként vagy egy előre meghatározott halmazból .
A szkript műveletei elé egy színoperátor kerül hozzáadásra. Bár ez nem maga egy művelet, csak módosít egy műveletet. Tehát nem kell utána pontosvessző.
Ennek bemutatására módosítsuk a példánkat úgy, hogy a kocka színe „cyan”, a gömb pedig „coral” legyen. Adja hozzá a Színoperátort a kockák és gömbök meghatározásához használt műveletek elé, az alábbiak szerint:
translate([-24,0,0]) { union() { color("cyan") cube(15, center=true); colored ("coral") sphere(10); } } intersection() { color("cyan") cube(15, center=true); color ("coral") sphere(10, $fn=100); } translate([24,0,0]) { difference() { color("cyan") cube(15, center=true); color ("coral") sphere(10, $fn=100); } }
Vegye figyelembe, hogy a színek csak Előnézet módban jelennek meg. A képek renderelése figyelmen kívül hagyja a megtekintési területen lévő színeket, de továbbra is exportálja ezeket az információkat, ha az exportálási formátum támogatja ezt.
PARAMETRIKUS TERVEZÉS
Most, hogy végigjártuk a CSG.scad példát, és megismerkedtünk a felhasználói felülettel és a szkriptek alapvető bejegyzésével, beszéljünk a parametrikus tervezésről.
A parametrikus tervezésben a felhasználó megváltoztathatja a modell bizonyos elemeit, és a tervezés többi része alkalmazkodik ezekhez a változásokhoz. Például, ha egy terv több, bizonyos méretű csavarszerelvényt tartalmaz, ezek mindegyike más méretűre cserélhető anélkül, hogy minden egyes előfordulást át kellene módosítani vagy megváltoztatni. Alternatív megoldásként a parametrikus tervezés használható a modell ismétlődő jellemzőinek gyors megváltoztatására.
A parametrikus tervezés alapja a változók használata a kódunkban elosztott statikus vagy keményen kódolt értékek helyett.
9. lépés: 101. változók
Eddig a kockák és gömbök méretét (és színét) a példánkon belül minden egyes blokkban határoztuk meg. Ha meg akarjuk változtatni az összes gömb sugarát, akkor ezt háromszor kell megtenni. Lehet, hogy ez nem probléma, de képzelje el, ha 10 vagy több felületre utalnának! Mindegyiket meg kell találnia és manuálisan módosítania kell, ami egyszerre időigényes és valószínűleg hibával is jár.
Ennek sokkal ügyesebb és professzionálisabb módja, ha a sugarat csak egyszer adjuk meg változóként. A változó egy típus Action utasítás használatával jön létre, és miután definiáltuk, használhatjuk a változót a szkriptben szám helyett. A változók megadhatók a szkript tetején vagy bárhol az azt használó operátor vagy művelet felett.
- Példakódunkban adja hozzá a következő sort a tetejéhez, amely a példánkban a 3. sorral kezdődik:
sphere_radius = 10;
. Ez létrehoz egy „ sphere_radius ” nevű változót , és egyenlővé teszi 10-el. - Ezután cserélje ki a(z) összes példányát
sphere(10);
erresphere(sphere_radius);
- Nyomja meg az Előnézet gombot. A Nézetterületen lévő kép nem változhat, de ha most megváltoztatja a sphere_radius értékét valami másra (mondjuk 11-re vagy 9-re), majd ismét megnyomja az Előnézet gombot, azonnali változást fog látni mindhárom alakzaton .
Rengeteg változó
Most kiterjesztheti ezt az módszert, és változókat hozhat létre az összes többi érték helyettesítésére, beleértve a kocka hosszát és a fent hozzáadott színeket. Megadhatja azt a felbontást is, amelyet az összes alakzat előnézetéhez és megjelenítéséhez használjon .
- Módosítsa a kódot a következőre:
cube_length = 15; sphere_radius = 10; separation = 24; cube_color = "cyan"; sphere_color= "coral"; $fn = 100; translate([-separation,0,0]) { union() { color(cube_color) cube(cube_length, center=true); color(sphere_color) sphere(sphere_radius); } } intersection() { color(cube_color) cube(cube_length, center=true); color(sphere_color) sphere(sphere_radius); } translate([separation,0,0]) { difference() { color(cube_color) cube(cube_length, center=true); color(sphere_color) sphere(sphere_radius); }
- Nyomja meg az Előnézet gombot. A képen ismét nem szabad változtatni a megtekintési területen, de most már módosíthatja a tervezést meghatározó paraméterek többségét.
- Módosítsa a kocka- és gömbméretekhez társított értékeket, hogy lássa, hogyan változik a három alakzat egymáshoz viszonyított aránya (a fentiek szerint). Például próbálkozzon a következővel:
cube_length = 13; sphere_radius = 10;
- Ezután változtassa meg őket az alábbiak szerint, hogy megtartsa az eredeti alakarányokat, de megduplázza méretüket:
cube_length = 30; sphere_radius = 20;
Az utolsó módosítással az új formák átfedik egymást (lásd az ábrát). Ez az elválasztási változó méretének növelésével javítható, de ennél jobbat is tehetünk. A következő részben megmutatjuk, hogyan.
10. lépés: Változók a parametrikus tervezéshez
Az előző példában azt láttuk, hogy a teljes modell felnagyítása a kocka hosszának és a gömb sugarának megkétszerezésével a három alakzat átfedését okozta. Egy egyszerű megoldás az elválasztási változó méretének megduplázása is (pl. separation = 28;
) . A jó parametrikus tervezés azonban minimálisra csökkenti a módosítandó változók számát.
Ebben az esetben mód van arra, hogy az összes kulcsdimenziót egyetlen változóhoz kapcsolja. Mint minden parametrikus tervezésnél, itt is egyszerű számításra van szükség. Példánkban láthatjuk, hogy a gömb sugara a kocka hosszának kétharmada, az elválasztás pedig a gömb sugarának 2,4-szerese.
Ezeket OpenSCAD-ben tudjuk kiszámítani. A mérnökök megborzonghatnak ettől a példától, de ez csak a lényeget illusztrálja!
- A Szövegszerkesztőben törölje a következő sorokat:
sphere_radius = 10; separation = 24;
- Cserélje ki a fentieket a következőre, amely példa megjegyzéseket tartalmaz, hogy emlékeztesse a jövőbeli olvasókat, hogy mi történik:
// Model remains proportional based on cube_length = 15; // Sphere radius and split separation are now calculated, defined variables sphere_radius = cube_length * (2/3); separation = sphere_radius * 2.4; // The following lines echo the variables defined on the console echo("Radius of sphere = ", radius_of sphere); echo("separation = ",separation);
- Nyomja meg az Előnézet gombot. Azt kell látnia, hogy a modell nem változik láthatóan.
- Módosítsa a kocka hosszát bármilyen más értékre (próbálkozzon pl a ’30-as értékkel) , majd nyomja meg ismét az Előnézet gombot. Meg kell tapasztalnia, hogy az egész modell ugyanolyan arányban skálázódik felfelé vagy lefelé.
Azok, akik előre olvastak, ráébredhetnek, hogy az OpenSCAD-ben van egy Scale Operator, amelyet mi is használhattunk volna, de ez nem lett volna hasznos példa ebben a szakaszban!
Íme egy kihívás az Ön számára: A fenti ábra példamodellünk eredeti méreteit mutatja, valamint egy kétszer akkora méretet is, amely ugyanabban a nézetben látható. Kitalálja, hogyan módosíthatja a kódot, hogy ezt elérje?
Végső gondolatok
Most, hogy elsajátította az alapokat, ideje elkezdeni néhány saját tervezést. Olvassa el a dokumentációt , és játsszon az OpenSCAD által kínált különféle operátorokkal és műveletekkel. Az interneten rengeteg információ található, amelyek könnyen követhető példákat tartalmaznak.
Különösen azt javasoljuk, hogy vizsgálja meg a következőket:
- Az OpenSCAD online példatára
- Példa galériájuk , az egyszerűtől a nagyon összetettig
- Kezdőknek szóló gyorstalpaló videó a mathcodeprint segítségével, amely kiegészíti az itt használt példákat
Ezek segítségével elkezdheti a bonyolultabb koncepciókat – például vektorokat és hurkokat –, és elvezeti Önt a bonyolultabb modellek és akár animált szimulációk tervezése felé.
És persze gyakorlat teszi a mestert. Csak üljön le, és próbáljon meg valamit 3D nyomtatásra tervezni. Meglepheti magát azzal, hogy mire lehet képes már első próbálkozásra is.
Eredeti forrás: All3dp.com