Műhely

Hogyan készítsünk saját 3D nyomtatási szeletelőt a Scratch-ről: 12 lépés

Hogyan is működik a K-POP???

Hogyan is működik a K-POP???

Tartalomjegyzék:

Anonim

A 3D nyomtatás középpontjában egy szeletelőnek nevezett szoftver. Ez a program egy 3D-s modellt vesz fel, és a nyomtatóra vonatkozó utasításokat tartalmazza. A meglévő szeletelők (slic3r, Cura, MatterSlice stb.) Közül sok nyílt forráskódú, bár néhány zárt forrású szeletelő létezik (pl. Simplify3D). Mindegyik szeletelőnek több tucat tulajdonsága van az eredmények testreszabására, de sok felhasználó nem érti magának a programok belső működését.

Amikor 3D-s nyomtatási felhasználótól a 3D-s nyomtatási szoftver fejlesztőjére váltottam, nagyon kevés információ állt rendelkezésre a szeletelők működésének megértéséhez. A nyílt forráskódú szeletelők kódján keresztül kellett küzdenem, és lassú, frusztráló munka volt. Ez arra késztetett, hogy írjam ezt az útmutatót, hogy még a kezdő vagy a tapasztalatlan kódolók is megértsék a kódot a 3D nyomtatás középpontjában.

Ebben az útmutatóban megvizsgáljuk, hogy a szeletelők hogyan működnek, azonosítsák a legfontosabb funkciókat, hogy replikálhassunk, és készítsünk egy teljes szeletelőt, amely képes valódi 3D nyomtatott alkatrészeket készíteni.

kellékek:

1. lépés: Egy szeletelő anatómiája

A 3D-s nyomtató kétdimenziós rétegeket tartalmazó tárgyakat készít. Általában ezek a rétegek két részből állnak: kerülete és kitöltése. A peremek alkotják az alkatrész kemény héját, míg a töltés többnyire levegővel töltött minta, amely az anyagot megtartva támogatja az alkatrészt. A rész sík felső és alsó részei szilárd betöltési mintázattal rendelkeznek, és a perimetrek nem elegendőek.

Ezeknek a szerkezeteknek a létrehozásához a szeletelő nagyon egyszerű mintát követ. Először a rétegek keresztmetszeteit szabályos időközönként a rétegekhez igazítják. Ezután többször is eltolja a keresztmetszetet a külső falak létrehozásához. Végül a szeletelő az egyes rétegek belsejében átfedi a feltöltési mintát. (Ez a kitöltési folyamat nagyon bonyolult, így nem fedjük le ezt az útmutatóban.)

Miután minden réteg létrejön, a szeletelő kiszámítja, hogy a nyomtatónak milyen mennyiségű műanyagot kell használnia minden egyes lépéshez, majd generálja az utasításokat G-kódfájlként (.gco vagy .gcode).

2. lépés: A környezet beállítása

Minden programozási projekt legfontosabb része a fejlesztési környezet kialakítása. Autodesk Dynamo Studio 2017-et használunk, amely egy vizuális programozási környezet, beépített geometria könyvtárral és megjelenítővel. A Dynamo ingyenes a diákok számára, vagy 30 napos próbára, és letölthető itt.

A Dynamo letöltését követően hozzon létre egy új fájlt, és keresse meg a Csomagok> Csomag keresése a felső sávban elemet. Le kell töltenie a MeshToolkit csomagot, amely egy teljes értékű háló manipulációs könyvtár, amelyet a Dynamo Team írt. Szintén szükség lesz a DynamoClipper csomagra, amely a sokszög eltolásával foglalkozik, a szeletelési folyamat fontos része.

Ha nem kap, vagy inkább nem használja a Dynamo-t, még mindig követheti ezt az útmutatót. A Dynamo geometriai parancsai meglehetősen általánosak, és a legtöbb programozási nyelvnek olyan geometriai könyvtárral kell rendelkeznie, amely ugyanezt teszi. Győződjön meg róla, hogy hálós manipuláció és sokszög-ellensúlyozó képesség van.

3. lépés: A bemenetek megszervezése

Általánosságban elmondható, hogy ez a bemutató nagyon organikus lesz a kódunk építésénél, de szeretném megtartani az összes "csíptethetőséget" a vászon bal oldalán. Így könnyedén beállíthatom a kódom beállításait vadászat nélkül a teljes fájlban. Az abszolút legegyszerűbb esetben négy lehetőségre van szükségünk az útvonalak megtervezéséhez:

  • Rétegmagasság: a kétdimenziós rétegek közötti távolság
  • A perimetrek száma: a tömör héjak száma a mi részünkön kívül
  • Extrudálás Szélesség: mennyire széles, hogy az alkatrész egyedi falát hozza létre

Szükségünk van még néhány további beállításra a folyamat későbbi részeire:

  • Az izzószál átmérője: a használt szál szélessége
  • Nyomtatási sebesség: milyen gyorsan mozoghat nyomtatás közben, mm / percben
  • Nyomtatási hőmérséklet: milyen meleg legyen a fúvóka Celsius-ban
  • Kimeneti fájlnév: a nyomtatási utasítások végső fájljának neve (G-kód)

A Dynamo-ban a legegyszerűbb módja az, hogy dupla kattintással létrehoz egy kódblokkot az összes beállítással. Azonban a Core> Input (Alap) bemenet menüben sok csúszkát tudsz elérni.

A fájlt is szeletre kell importálnunk. Ehhez készítünk egy File Path csomópontot és csatlakoztatunk egy Mesh.ImportFile csomóponthoz. Ha kiválaszt egy STL fájlt a Fájlútvonal csomópontban, akkor látnia kell, hogy a megjelenítés megjelenik a nézőben.

4. lépés: Állítsa be a modellt

A MeshToolkit> Mesh menüben kiválaszthatja a Fordítás, Méretezés és Forgatás csomópontokat a háló kezeléséhez. A modell aljának a néző síkjában kell lennie, és a "fel" iránynak felfelé kell lennie a képernyőn.

Ezen a ponton valószínűleg jobb egérgombbal kattint az egyes Mesh csomópontokra az utolsó kivételével, és törölje az Előnézet elemet. Alapértelmezés szerint a Dynamo minden csomópont eredményét mutatja, de általában nem szeretnénk látni a közbenső geometriákat. Ettől kezdve elhagyjuk az Előnézet döntéseket.

5. lépés: A réteg síkok építése

Az egyes rétegek síkjának építéséhez a Plane.ByOriginNormal csomópontot fogjuk használni. Ehhez a csomóponthoz szükségünk van egy "eredet" pontra minden áthaladó síkra, valamint egy "normál" vektorra, amely merőleges a síkra. Mivel az összes repülőgépünk párhuzamos az építési platformmal, csak a Z tengely vektorját használhatjuk minden sík normál értékére.

Hozzunk létre egy pontot. Összehangolja a csomópontot a repülőgépeink eredetére. Ez a csomópont XYZ koordinátákat igényel egy pont létrehozásához. Az X és Y koordináták nem számítanak, így mindkettőt nullára állíthatjuk. A Z koordinátához Dynamo beépített "tartomány" funkcióját használjuk. Ez a funkció a "start..end..step" formátummal rendelkezik, és a számok listáját "start, start + step, start + 2 * lépés, …" teszi lehetővé, de nem a múlt "végét". Ebben az esetben egy rétegmagasságot kell elkezdeni az ágy fölött, majd egyszerre egy réteg magasra kell emelkednie, de nem kell a háló tetejénél.

Ahhoz, hogy kitaláljuk a háló felső és alsó részét, először megragadjuk a hálón lévő háromszögek listáját a Mesh.Triangles-el, majd hozzunk létre egy Polysurface konténert, hogy megtartsuk őket, és végül kiszámoljuk a Polysurface körüli keretet (ami pontosan körül van) a háló). A határoló doboz MinPoint és MaxPoint használatával megtalálhatjuk a háló felső és alsó részét, és használjuk azokat a kódunkban.

FIGYELMEZTETÉS: Az utolsó lépésben a hálót úgy kellett volna mozgatnia, hogy a háló alja Z = 0 legyen. Ha nem, akkor ebben a lépésben a kód nyomtatásra kerülhet, vagy más módon összeomlik a nyomtatást fúvóka az ágyba. Ellenőrizze, hogy a MinPoint.Z valóban 0-e, és szükség esetén állítsa be.

6. lépés: Réteg metszéspontok kiszámítása

Ezután meg kell találnunk a gyűrűt azon rész külső részén, ahol minden réteg síkja metszi a hálót. A Dynamo-ban ez a lépés nagyon egyszerű. A MeshToolkit pluginnel van egy Mesh.Intersect csomópont, amely minden réteghez PolyCurve objektumokat generál. A PolyCurves-ben minden egyes görbe StartPoint-jának megragadásával az egyes rétegekhez sorozatot készíthetünk. (Tudjuk, hogy a kereszteződésnek sokszögnek kell lennie, mert a háló minden háromszög, így a metszéspontnak egyenesnek kell lennie.)

7. lépés: A részfalak építése

Most, hogy az egyes rétegeken kívül van az alkatrész, meg tudjuk dolgozni a falak felépítését. Mivel nem akarunk csak egy falat állítani a részhatáron, nem tudjuk csak a poligonokat használni az utolsó lépésből. Szükségünk van egy külső falra, melynek egy pereme van a határon, és talán több falon belül.

Ez azt jelenti, hogy végre kell hajtanunk egy poligon ellentételezésnek nevezett folyamatot. A Dynamo alapértelmezés szerint nem teszi ezt meg, és ez egy kicsit túl bonyolult ahhoz, hogy magunk végezzük el ezt a bemutatót. Szerencsére van egy Clipper nevű könyvtár, amelyet C ++ vagy C # programból lehet használni az eltoláshoz. A Dynamo lehetővé teszi a felhasználók számára, hogy egyéni C # könyvtárakat használjanak, és használhassák őket a Dynamo-ban, így azt gondolhatnánk, hogy egyszerűen csak Clipper-et tudunk importálni és továbblépni. De ez nem olyan egyszerű. A Dynamo és a Clipper másképp gondolkodnak a sokszögekről, és nincs szükségünk a Dynamo interfészre, hogy ezt kiegyenlítsük.

A C # környezetben a két formátum közötti fordítás egyszerű. Korábban letöltöttük a DynamoClipper csomagot, amelyet erre a célra írtam.Ez a csomag egy csomópontot, az OffsetPolys-t ad nekünk, ami pontosan azt teszi, amire szükségünk van: egy poligont egy bizonyos összeggel ellensúlyozunk. Ebben az esetben az első rétegnek be kell lennie az extrudálási szélességnek a felére (úgy, hogy a külső szél az eredeti poligonhatáron legyen), és minden él után az egyik extrudálási szélesség befelé (csak a következő legkülsőhez érinti) . A tartományszintaxist ismételten használjuk, megjegyezve, hogy az összes érték negatív, így kifelé fordítva befelé fordítjuk.

Észreveszed, hogy ebben a lépésben egy kicsit különleges Dynamo varázslat történik. Minden réteget és minden eltolást meg kell tennünk, így két külön listán kell áthaladnunk. Ennek módja a Dinamóban a List.CartesianProduct csomópont használata és az OffsetPolys csomópont bemeneti függvényként való elhelyezése. Ez az OffsetPolys-t fogja alkalmazni a réteg és az eltolás minden egyes kombinációjára, ami pontosan azt akarjuk.

(MEGJEGYZÉS: Ha nem használja a Dynamo-t, akkor lehet, hogy a saját nyelvén is használhatja a Clipper-et. Lehet, hogy más nyelvű könyvtárat is találhat az Ön nyelvén, egy gyors webes keresés a "sokszög eltolás" kifejezésre. fordíts valamit.)

8. lépés: Extrúziós értékek kiszámítása

A 3D-s nyomtatónak pontosan tudnia kell, hogy mennyi műanyagot kell elhelyezni minden egyes mozgáshoz. Szinte minden hobbi nyomtatón ez megfelel az izzószál hosszúságának. Ebben a lépésben kiszámítjuk ezeket az értékeket, hogy átadhassuk azokat a nyomtatónak.

Először az összes pontot vesszük el az összes sokszögben, és egy hosszú listába helyezzük a Flatten csomóponttal. Ez megtartja a pontok azonos sorrendjét egy sokszögben, és megtartja a sokszögek sorrendjét. Miután felépítettük a sokszögeket, ez csak finom. Létrehozunk egy példányt a listáról, de eldobjuk az első pontot, hogy megkapjuk az egyes lépések végpontjait (és az első pontnak nincs szükség extrudálási értékre, mivel az első lépés csak a nyomtató, ahová az alkatrész található ).

Sok lépés van a műanyag alakjának meggondolására minden lépésnél, de az egyszerűség kedvéért a legegyszerűbb: egy téglalap alakú doboz az első ponttól a másodikig, olyan magas, mint a réteg, és olyan széles, mint az extrudálási szélesség. Amikor megszorozzuk a mozdulatok hosszát meghaladó magasságot, akkor kapjuk meg a műanyag térfogatát. Ezután megoszthatjuk ezt az izzószál keresztmetszetével, hogy megkapjuk a szükséges filamentum hosszát.

9. lépés: A G-kód fájl létrehozása

Minden szórakoztató dolgot végeztünk, így most a megfelelő fájlformátumba kell tennünk. A 3D nyomtatók a G-Code nevű formátumot használják, amely tartalmazza az összes részt a nyomtatáshoz. A G-Code fájl elején számos fontos beállítás és utasítás áll rendelkezésre, amelyek nehézkesek lehetnek, és sok ez a nyomtatótól függ. Legalábbis be kell töltenie a nyomtatót, be kell kapcsolnia a fűtőtesteket, és a nyomtatás elején be kell állítania a megfelelő egységeket. Esetünkben az "E" parancsokat az "M83" paranccsal is relatívra kell állítanunk (a legtöbb szeletelő abszolút E értéket használ, ami pontosabb, de nehezebben kódolható, különösen a Dinamóban).

Az egyik módja a G-Code beállításainak a nyomtatóhoz való jobb megszerzésének az, hogy nézd meg a már használt szeletelő által generált G-Code fájlt. Számos szeletelőnek van egy "verbose" opciója, amely megjegyzéseket ad az egyes parancsokat magyarázó G-Code fájlhoz, vagy alternatív módon használhat egy G-Code hivatkozást is.

A másik fontos dolog, amit a fájl elején kell megtenni az első lépésben. A G-Code-ban a "G0" vagy "G1" parancs használatával léphet, és a 3D nyomtatók nem különböztetik meg a kettőt. Mivel ez a konkrét lépés csak a részünkre jut, nincs E értéke, és „utazási” lépésnek nevezzük. Mivel ez az első igazi lépés a részben, azt is használjuk, hogy beállítsuk a sebességet az "F" hozzáadásával (a "feedrate," egy másik szó a sebességhez), majd a sebességet mm / percben. Későbbi lépések örökölhetik ezt a sebességet, így csak akkor kell megadnunk egy sebességet, amikor megváltozik.

Minden parancsot a saját elemében tároljon egy listában; később ezek lesznek a G-Code szövegfájl sorai.

10. lépés: Írja be a nyomtatási és befejezési G-kódot

A G-kód fájl fő része a nyomtatási mozdulatokból áll, amelyek ugyanazt a mintát követik, mint az utolsó lépésben az utazás. Természetesen ezúttal az E-értékeket, és nem az F-értéket adjuk meg. Győződjön meg róla, hogy olyan pontokat vesz fel a listából, ahol az első elemet elhagytuk, vagy az E értékek nem egyeznek meg magukkal, és az Ön részei nem fognak jól megjelenni.

A nyomtatásnak valószínűleg szüksége van néhány G-Code parancsra is. Legalábbis ezek magukban foglalják a fűtőberendezések kikapcsolását, de előfordulhat, hogy a parancsokat részben a nyomtatót, a ventilátorok kikapcsolását vagy más műveleteket is elvégezhet. Ismét ellenőrizd a G-Code fájlt egy másik szeletelőből, és derítsd ki, mi fontos.

Végül használjon egy List.Join csomópontot, hogy egyesítse az elejét, a közepét és a végét egyetlen listára. A String.Join csomópont "n" -vel (az "új sor" karakterrel) csatlakozik, és a File.WriteText függvény létrehozza a kimeneti G-kód fájlt.

11. lépés: Tesztelje a fájlt!

Két alapvető módja van a G-Code fájl tesztelésének a 3D nyomtatón. A legegyszerűbb egy 3D-s nyomtatási hosztprogram (Repetier-Host, Cura, MatterControl stb.) Használata a fájlnak a nyomtatóra történő továbbítására. Ha a nyomtató SD-kártyaolvasóval rendelkezik, akkor a G-Code fájlt SD-kártyára is helyezheti, és a nyomtatót közvetlenül a kártyáról futtathatja.

Mivel nincsenek kitöltő vagy felső / alsó szilárd rétegek, legyen óvatos a választott modell használatával. A drasztikus túlnyúlások és a nagy, sík vízszintes területek nem fognak jól kiépülni az itt épített szeletelővel. A legjobb eredmény érdekében javaslom a "spirál váza" nyomatokhoz tervezett alkatrész használatát, mivel ez lényegében a szeletelőbe épített nyomtatási módszer.

12. lépés: Fedezze fel tovább

Az általunk épített szeletelő nagyon alapos volt, sok teret hagyva a további fejlődéshez. Valószínűleg az első változtatások, amelyeket esetleg fontolóra vehetnének, a töltőanyag és a hordozóanyag hozzáadását teszik lehetővé, hogy több tervet lehessen kinyomtatni, vagy a fűtött ágyvezérlők a magasabb hőmérsékletű szálak, például az ABS kezelésére.

Ha több inspirációra van szüksége, akkor merülhet fel a kiváló forráskódú szeletelők forráskódjába. A Slic3r, a Cura és a MatterSlice minden nyílt forráskódú és széles körben használt szeletelő. Lehet, hogy talán még egy új ötlet egy funkcióra vagy fejlesztésre, és hozzájárulhat az egyik projekthez!