3D nyomtatás – scriptelünk

Előzmények A Really Right Stuff fotós termékeibe pár évvel ezelőtt szerettem bele. Tőlük vásároltam állványfejet, valamint a géphez való, úgynevezett “L-plate”-et is. Az L-plate a fényképezőgépre csavarozható alumínium keret, ami lényegében egy Arca Swiss típusú befogósínt létesít a fényképezőgép alján és bal oldalán. Ennek az az értelme, hogy egyrészt mindig ott a gépen az állványra csatlakozó sín, másrészt a fényképezőgép portrait állásban is stabilabban áll az állványon. Megmutatom: L-plate A gépemen van tehát egy Arca Swiss sín. Van egy ezzel a sínnel kompatibilis RRS Arca Swiss befogópofám (=quick release knob), amit rögzítenem kellene egy rúd végén. A pofa talpában egy darab 3/8″-os süllyesztett UNC csavar számára van kiképezve menet és süllyeszték: RRS-Arca-Swiss-quick-release-knob 3/8″-os UNC csavart és hozzá való anyát Európában alig kapni – ha mégis kapható, akkor az aranyárban van és leginkább nincs itt egy óra múlva. Sebaj, akkor majd gyártunk ilyet!

Gyártunk

Némi guglizás után rájöttem, hogy a mezei CAD alkalmazásban UNC menetet rajzolgatni nem lesz egyszerű feladat – legalábbis az én CAD skilljeimnek kicsit meredek a dolog. Ekkor jutott eszembe, hogy biztos kimatekozta ezt már valaki és létezik rá OpenSCAD script. Hellyel-közzel igazam is lett. Kezdetnek megtaláltam a Thingiverse-en aubenc által létrehozott Poor man’s OpenSCAD library-t, amelyben ő az 1/4″-es fotós csavart gyártotta le mintának. Szerencsére mindezt okos függvényekkel tette, úgyhogy némi küzdelem után én is megszültem a projecthez szükséges 40 mm hosszú, végig menetes, 3/8″-os süllyesztett fejű csavart: 3-8_16-UNC-bolt A csavar elkészítéséhez a polyScrewThread library birtokában mindössze egy ilyen fikarcnyi kis scriptre van szükség:
include 
/*
 * hex_screw(15,  // Outer diameter of the thread
 *            4,  // Thread step
 *           55,  // Step shape degrees
 *           30,  // Length of the threaded section of the screw
 *          1.5,  // Resolution (face at each 2mm of the perimeter)
 *            2,  // Countersink in both ends
 *           24,  // Distance between flats for the hex head
 *            8,  // Height of the hex head (can be zero)
 *            0,  // Length of the non threaded section of the screw
 *            0)  // Diameter for the non threaded section of the screw
 *                     -1 - Same as inner diameter of the thread
 *                      0 - Same as outer diameter of the thread
 *                  value - The given value
 */
hex_screw(	25.4*3/8,
			25.4/16,
			30,
			40,
			1.5,
			2,
			0,
			0,
			0,
			-1);
lyuk = 2.5;
difference() {
  rotate([0, 180, 0]) {
    cylinder(h = 2.6, r1 = 4, r2 = 6.25, center = false);
  }
  translate([0,0,lyuk/2-2.6-0.1]) {
	cube(size = [1.5,6,lyuk], center= true);
  }
}
Ezután következett az anya: 3-8_16-UNC-nut Az ő scriptje is vérbuta, mindössze egy kis plusz tágulást kellett belekalkulálni, hogy a printelt csavar és a printelt anya összetekeredjenek:
include 
/*
 * hexa_nut(24,  // Distance between flats
 *           8,  // Height
 *           4,  // Step height (the half will be used to countersink the ends)
 *          55,  // Degrees (same as used for the screw_thread example)
 *          15,  // Outer diameter of the thread to match
 *         0.5)  // Resolution, you may want to set this to small values
 *                  (quite high res) to minimize overhang issues
 */
pla_extra_width = 0.8;
hex_nut(14, 8, .25*(16/2.54), 30, pla_extra_width+25.4*3/8, 0.5);
A két OpenSCAD script által generált STL file-t aztán CAD-ben leellenőrizve már jól látszott, hogy a plusz tűréssel együtt kompatibilisek lesznek a menetek: nut-and-bolt-w-tolerance-check-in-CAD 0.5 mm hézag az esetek többségében elég szokott lenni – ezúttal picit szorosnak bizonyult, így 0.8 mm-es rést hagyva és a csavart párszor áthajtva a meneten már megfelelően egymásba szeretett apu és anyu: 3-16-nut-and-bolt-from-PLA Summa summarum, az OpenSCAD nem egy designerek álma eszköz, ám ha egyszer összerakunk benne valamit, azon gyerekjáték módosítani.]]>

Excel – this is how we roll

tiddle.co.uk:

I literally just fixed a bug that has plagued me for the last few days. I originally wrote the code using the terrible reference literature for Excel 03. The issue is actually that the index it tells you to use doesn’t exist! The text below is taken from the Borders object page, specifically relating to FormatConditions (the conditional formatting object) and is wrong: Use Borders(index), where index identifies the border, to return a single Border object. The following example sets the color of the bottom border of cells A1:G1 to red. Worksheets("Sheet1").Range("A1:G1"). _ Borders(xlEdgeBottom).Color = RGB(255, 0, 0) Index can be one of the following XlBordersIndex constants: xlDiagonalDown, xlDiagonalUp, xlEdgeBottom, xlEdgeLeft, xlEdgeRight, or xlEdgeTop, xlInsideHorizontal, or xlInsideVertical. I was trying to apply formatting to the bottom border, so obviously I used xlEdgeBottom, and hence continually received the aforementioned runtime error. After what seems like hours of [non-sequential] Googling, I found a post where someone was doing something similar enough to me, successfully, to learn from it. Almost immediately I saw the difference; their chosen indexes did not contain “Edge”. I removed them from my code, and voila it works perfectly, all errors were gone and the sheet formats beautifully. Ok, so I probably should have found a better reference to the object library, but the Microsoft online one is no better or easier to use than the offline one, which coincidently loads faster! On a similar note, if you’ve ever looked up an error code to find a bug solution page by Microsoft, you’ll know the wide range of issues and limitations of their software that intersect in very weird ways. Surprising the main application runs really! I hope someone finds this and it helps them, as otherwise I just wasted time documenting this !
Mutatom, hogy néznek ki az emlegetett konstansok:
?xlEdgeLeft, xlLeft
 7            -4131
?xlEdgeTop, xlTop
 8            -4160
?xlEdgeRight, xlRight
 10           -4152
?xlEdgeBottom, xlBottom
 9            -4107
Szerencsétlen flótás kétségbeesett próbálkozása valóban működőképes és segít az Edge attribútumoknál – persze az Inside és Diagonal konstansok továbbra sem működnek ilyen esetekben. Nagy eséllyel ugyanígy jó lesz az elkövetkező tizenX év Exceleiben is, ugyanis a VBA engine bugjai 1995 óta alig-alig tünedeznek el (2003 óta van az egyik lezárt és aláírt gyári Microsoft add-inben egy sor, amely minden egyes kalkulációnál debug üzenetet pakol az Immediate ablakba, hogy hadd örüljön a fejlesztő, illetve hadd lassuljon bármi, ami a bekapcsolt add-innel egyidőben jelen van az Excelben). A “1004 Unable to set the LineStyle property of the Border class” hibaüzenet okára keresve egyébként számtalan olyan megoldási javaslat jön szembe, hogy valószínűleg korrupt az Excel file és csináld újra. Kérdem én: a táblával _dolgozó és nem játszó_ júzernek vajon az-e hobbija, hogy hetente korrumpál egy-egy ilyen állományt? Remélem Redmondban csuklanak. A kis rohadék hiba azért alattomos, mert csak bizonyos range-ek esetén jön elő. Ennek az az oka, hogy csak azokra a cellákra “allergiás” a border propertyt beállító kód, amelyek már rendelkeznek valamilyen border propertyvel (ez az idióta hiba egyébként számos helyen fellelhető a VBA motorban). Érdemes ilyenkor reflexből propertyt resetelni, még ha erőforrás pazarlásnak tűnik is:
Sub setBorder(ByVal myRange As Range, ByVal borderArray As Variant)
    ' call setBorder(Selection, array(array(xlEdgeTop, xlthick, xlContinuous)))
    Dim i As Long, j As Long
    For i = LBound(borderArray) To UBound(borderArray)
        With myRange.Borders(borderArray(i)(0))
            .LineStyle = xlLineStyleNone
            .LineStyle = borderArray(i)(2)
            .Weight = borderArray(i)(1)
        End With
    Next i
End Sub
]]>

3D nyomtatás – a sebesség oltára

150mm-per-sec-speed-effect1 150mm-per-sec-speed-effect2 A tőlem jóval tapasztaltabbak (és maga a Cura is) azt mondják erre, hogy nagyobb sebességre a precízen beállított printerek képesek. Én pedig azt mondom, hogy amíg a léptetőmotorok megnyúlni képes bordás gumiszíjakkal hajtják meg a fejet pozícionáló két acéltengelyt és nem direkt módon csatlakoznak hozzájuk, addig hiába a nagyobb sebesség, az ilyen hibák kiszámíthatatlanul jönnek majd elő. Jó példa erre a minták hátulján található felső hiba: 150mm-per-sec-speed-effect3 Direkt nem croppoltam le a képből a minták feljebb levő részét, hogy látható maradjon: az egyébként 150 mm/sec sebességgel dolgozó fej az utolsó hibát követően szépen egyenletesen dolgozott tovább, mintha valami varázsütésre “meggyógyult” volna a pozícionálás. Nos, szerintem ez azt igazolja, hogy a szíjhajtás miatt téveszt néha az eszköz. ]]>

3D nyomtatás – a sötét oldal

3dprint-the-dark-side Érdemes megfigyelni, hogy az extruder fej milyen mértékben képes összemocskolni magát. Ez a probléma alattomos és kiszámíthatatlan. Ugyanezek a testek ugyanebből az anyagból ugyanolyan alkoholos tárgyasztal tisztítás után csont nélkül kinyomtatódtak, míg most szarrá ment mind. Ha az Ultimakerhez lenne gyárilag hot bed, akkor ez a probléma nem létezne. Hot bedet akarok!]]>

3D nyomtatás – Tea Cup SlingsHOT

teafiltert kicsavaró bögrét: Nagyon megtetszett, webshop link híján gondoltam gyártok én egy ilyet: teamug-to-print A modell rendben elkészült, ám ez jelen formájában egy FFF printerrel viszonylag nehezen nyomtatható. Nézzük meg, mi a baja! Legegyszerűbb, ha fogjuk az STL file-t és berántjuk meshmixerbe, aki rögtön rak is rá egy olyan shadert, ami bepirosítja azokat a részeket, amelyek túllógnak és ezért csak úgy a levegőbe nem nyomtathatóak: teacup-overhang1 Ezzel még tudunk ügyeskedni egy kicsit: a talpat egyszerűen szintbe állíthatjuk, illetve a fül alja is leérhet a pohár aljáig, ez nem gond. A fül görbületét is lehet kevésbé meredekre venni: mondjuk egyszerűen kifúrjuk egy hengerrel és nagy eséllyel az már nyomtathatóvá teszi azt a részt. A nagyobb probléma ezzel a résszel van: teacup-overhang2 Jól látszik, hogy a filter járatának teteje sajna egy hosszabb vízszintes felület. Ezt csak úgy tudjuk nyomtatni, ha supportot kérünk az egész bögrére. Sajnos tapasztalatból azt mondom, hogy az ilyen szűk területekbe elég rendesen be tud állni a support, így nem biztos, hogy sok értelme van szutykolni vele. Azért persze a foxi sem ereszti olyan könnyen a lábtörlőt… Leszeletelés után ez a bögre supporttal nyomtatva 7 és fél óráig készülne, 1360 HUF anyagot felzabálva. Mivel ez próbának már ijesztő mennyiségű idő/alapanyag kombináció, ezért ilyenkor érdemes kicsit trükközni még. Fogjuk a legproblémásabbnak ítélt részt, húzzunk rá egy bounding boxot (=egy téglatestet, ami magába foglalja a vizsgálandó objektumdarabot), aztán a boxból és a modellünkből készítsünk egy közös metszetet: teacup-bounding-box-on-overhang teamug-overhang-testobject Az így kapott darab már csak 30 percet és 110 HUF pénzt zabál el – mindenképp megéri egy ekkora falattal kísérletezni ahelyett, hogy a teljes modell nyomtatása után görbüljön le a szánk. Nyomtassunk is egy support nélküli és egy supportos változatot és nézzük meg, mi lett belőlük. Íme a support nélkül készült tesztdarab: teamug-overhang-print-wo-support Jól látszik, hogy az átfeszített felületek ugyan elkészültek, de ronda kis göndör műanyagszálak lógnak be róluk – ez így useless. Nézzük, mire megyünk a supporttal! Ilyen lesz a támasztékkal nyomtatott próbatest: teamug-overhang-print-w-support Elég masszív support képződött – lássuk, mennyire lehet kiszedni: teamug-overhang-support-removed Szó mi szó, ez bűn ronda. Nem szívesen facsarnám ebben ki a teafiltert, még akkor sem, ha a mostanában gyártott piramis alakú teafilterek zacsija is ugyanabból a PLA-ból készül, mint amiből mi a bögrénket szándékoztuk nyomtatni. Persze még ilyenkor sem kell elkeseredni, ha nagyon akarod a modellt IRL taperolni. Fel kell tölteni az objektumot valamelyik nagy 3D printre szakosodott oldalra, akik bérnyomtatást is vállalnak, aztán ők elkészítik neked professzionális 3D printerekkel, jó pénzért. Az egyik legnagyobb ilyen gyűjtősite a Shapeways – zárjuk is az ő teaserükkel a postot: ]]>

3D nyomtatás – KitchenAid kolbásztöltő

  • Vacsoravendégeknek kolbásszal töltött szűzpecsenyét akarok sütni.
  • Van itthon szűzpecsenye.
  • Van itthon szép KitchenAid húsdaráló is, amivel még sosem izmoztam, mivel csak öcsi mennyiségre van tervezve, nem pedig ennyire.
  • A KitchenAid húsdaráló feltéthez sajnos nem jár a kb. 2 üveggolyóba kerülő kolbásztöltő feltét cső.
  • Becsületes hülye lévén elmegyek két KitchenAid boltba is a kolbásztöltő feltétért.
  • Kolbásztöltő feltét OOS.
  • Vacsorát csinálni most kell, nem pedig akkor, amikor ideér a közel 7kHUF-ba kerülő két darab műanyag cső.
  • Oh wait, I have a 3D printer! 20130207-1695 Az ojjektumok szedhetőek innen.]]>