Hírek:

Fontos tudnivalók a migrációval kapcsolatban, kérlek olvasd el:

A régi fórumról áthozott hozzászólásoknál a felhasználó neve adatvédelmi megfontolásokból véletlenszerűen generált értékekre lett  lecserélve. Ez akkor tud a valódi értékre visszaállni, ha az adott felhasználó a régi fórumon nyilatkozik, hogy beleegyezik az adatainak az új fórumra továbbításához, majd ezután itt a régi felhasználónevével és email címével regisztrál.
8~20 óra között, 1~30 percen belül megtörténik a jóváhagyás, 30 percenként ellenőrizd email fiókodat (SPAM-ot is) mindenképp kapsz mail-t, a sikeres regisztrácioról, vagy a hibáról és, hogy mi a teendőd.
Nézd meg  "A régi fórumról, az új fórumra költözés útmutatót."
A régi fórumon használt email címmel de más felhasználói azonosítóval érkező regisztrációs kérelmek törlésre kerűlnek.

Main Menu

3D nyomtatás

Indította gaben, 2024 április 09, 15:30

Előző téma - Következő téma

szf


PSoft

Neked nem kell nyomigázott házszám, tehát...nem rád!
Vagy...mégis Terád??? [#nemtudom] [#nyes]

dezsoe

Ha nem titok, akkor megnézném a scad file-t. Darabokból rajzoltad a betűt, vagy ki tudja írni?

RJancsi

Jól néz ki, de ez még az űrből is látszik akkora. [#alien] Spórolhattál volna némi gépidőt ha fele ekkorában nyomtatod. Vagy ennyire rövidlátó nálatok a postás? [#nyes]

PSoft

Kicsit visszakanyarodva ide:
[#t9p27937#]
Egy Ender3-ra "konstruált" megoldás...
Flying extruder for creality ender3 cr10...
Flying extruder V2 ender3 cr10


         

Dakota25

linear_extrude(10,center=false,$fn=50){text("22", size=100,"Times");}

Dakota25

Ja! A furatok!
(plusz így változtathatóak a méretek a xmm,ymm,zmm átírásával - más betűnél a furatokat át kell helyezgetni)

xmm=100;
ymm=200;
zmm=10;

m=1;s=0.6;
//---------------------------------------
resize([xmm,ymm,zmm])difference(){
linear_extrude(m,center=false,$fn=50){text("2", size=20,"Times");}
furat(4,0.5,0.3);
furat(4,9.2,0.3);
}
//---------------------------------------
module furat(x,y,d){    
translate([x,y,0])union(){
cylinder(h=m,d=d,center=false,$fn=10);
translate([0,0,s])cylinder(h=m-s,d1=d,d2=d*2,center=false,$fn=10);
}}

dezsoe

Köszi szépen! Korai ismerkedési fázisban vagyok a programmal, de tetszik! :)

Dakota25

Szívesen!

Segítség:
-pontosvessző!!!! nagyon figyelni!
-zárójelek!! Párban :-)
-a változónak tűnő dolgok valójában konstansok

Ezek okozzák a hibák zömét.
Kérdezz bátran, ha valami nem megy!
Nagyon jól használható izé ez, csak kell egy minimális programozói véna hozzá.

dezsoe

Köszi, a programozással elvagyok, '82 körül kezdtem, azóta hol a munkám, hol a hobbim. :) Igazából az OpenSCAD-ban nincs tapasztalatom. Eddig csak egy szerszámtartót terveztem benne, lásd a félbevágott képet. (A terv jó, a nyomtatás jó, az eredmény nem, mert nem elég rugalmas, cserébe a szerszámokon levő gyűrűnek túl nagy a szórása, úgyhogy másikat kell majd terveznem.)

Azt hogy érted, hogy a változók inkább konstansok? Mondjuk, megnéztem, amit írtam és gyakorlatilag konstansként használom a változókat. A végén a képet azért felezem, hogy lássam a belsejét.


use <C:\Program Files\OpenSCAD\libraries\MCAD\2Dshapes.scad>

$fn = 100;

// Paraméterek

H = 40;                 // Teljes magasság
fullD = 15;             // Teljes külső átmérő
inD1 = 3.7;             // Átmenő furat átmérője
toolD = 3.1;            // Szerszám átmérő (támasztók belseje)

ringD = 7.7;            // Gyűrű átmérője
ringH = 4.0;            // Gyűrű magassága

springs = 6;            // Rugók száma
springW = 30;           // Rugók szélessége

socketB = 12;           // Üreg aljának magassága
socketH = 12;           // Üreg magassága
socketD = 10;           // Üreg belső átmérője

sticks = 3;             // Támasztók száma
stickH = 7;             // Támasztók magassága
stickD = 5.8;           // Támasztó üreg átmérője
stickW = 2.4;           // Támasztók szélessége
stickT = 1.0;           // Támasztók vastagsága
stickRot = 5;           // Támasztók dőlésszöge
stickO = 0.2;           // Támasztók tetején és alján túllógás

// Számított értékek (átmérőből sugár)

fullR = fullD / 2;
inR1 = inD1 / 2;
toolR = toolD / 2;

ringB = H - ringH;
ringR = ringD / 2;

stickB = ringB - stickH;
stickR = stickD / 2;

socketM = socketB + socketH / 2;
socketR = socketD / 2;


module ToolHolder()
{
    difference()
    {
        union()
        {
            difference()
            {
                // Alaphenger - átmenő furat - támasztók ürege
                translate([0, 0, 0]) cylinder(H, fullR, fullR, false);
                translate([0, 0, 0]) cylinder(H, inR1, inR1, false);
                translate([0, 0, stickB]) cylinder(stickH, stickR, stickR, false);
            }

            // Támasztók
            for(i = [0 : sticks - 1])
                rotate([0, 0, 360 / sticks * i])                                    // Forgatás Z körül
                    translate([-(stickW / 2), -stickR, stickB - stickO])            // Támasztó alapja
                        rotate([-stickRot, 0, 0])                                   // Támasztó döntése
                            cube([stickW, stickT, stickH + stickO * 2], false);     // A támasztó
        }
        if (springs > 0)
            translate([0, 0, socketB]) cylinder(socketH / 2, fullR, fullR, false);      // Üreg alja üresre
        else
            translate([0, 0, socketB]) cylinder(socketH / 2, socketR, socketR, false);  // Üreg alja hengerre
        translate([0, 0, socketM]) cylinder(socketH / 2, socketR, inR1, false);     // Üreg kúpja
        translate([0, 0, ringB]) cylinder(ringH, ringR, ringR, false);              // Támasztók levágása
        translate([0, 0, stickB]) cylinder(stickH, toolR, toolR, false);            // Támasztók belső vágása
    }
}


module Spring()
{
    translate([0, 0, socketB])
        linear_extrude(height = socketH / 2, center = false, convexity = 10, twist = 45, $fn = 100)
            translate([0, 0, 0])
                pieSlice(fullR, 0, springW);
}


module Springs()
{
    difference()
    {
        union()
        {
            for(i = [0 : springs - 1])
                rotate([0, 0, 360 / springs * i])
                    Spring();
        }
        translate([0, 0, socketB]) cylinder(socketH / 2, socketR, socketR, false);
    }
}


difference()
{
    union()
    {
        ToolHolder();
        if (springs > 0) Springs();
    }
    // Kép felezése
    translate([-fullD / 2, -fullD / 2, -1]) cube([fullD, fullD / 2, H + 2]);            // X mentén
    //translate([0, -fullD / 2, -1]) cube([fullD / 2, fullD, H + 2]);                     // Y mentén
}


  

Dakota25

Úgy értem a változó-konstans dolgot, hogy értékadás csak fordítási-időben lehetséges, runtime már nem. (persze vannak varázslatok, pl. funkcióhívás-értékvisszaadás, rekurzív csodákkal a vájtfülűeknek)

dezsoe

Hümm, érdekes. :) Utána olvastam: egyéni megoldás. Pláne az, hogy {}-en belül lehet más az értéke, de utána visszaáll... [#falbav]

Dakota25

Nézz meg pár példát és próbáld végigkövetni! Agybajszerű.:-)
Ezzel együtt nélkülözhetetlen rengeteg esetben.
A library-k és modulok gyűjtögetésén túl érdemes funkció-gyűjteményt is nevelgetni. A rekurziók nem igazán a ripsz-ropsz összedobom kategória.
pl.:
vektor(lista) elemeinek összege:
function add(v, i = 0, r = 0) = i < len(v) ? add(v, i + 1, r + v) : r;
hívás:
osszeg=add(v); vagy  osszeg=add([ , ,]);

kiralyc

Szia, én még csak most ismerkedek az openscad el...
köszi a kódot, az enyém nem ennyire profi..
most kicsit kommenteltem hátha jobban érthető...
Viszont a Tiedben a resize, ahogy nézem elcseszi a betütipus arányait, persze tök jó, hogy megadhatod a befoglaló méretet, de az arányok elmászása lehet zavaró lehet bizonyos esetekben...

amúgy itt az én kódom:


number_colour="red"; //szín just for fun
text_height = 10; //betű vastagsága
font_size = 180; //betű méret
text = "2"; //maga a szám
hole_diameter = 5; //furat átmérő
countersink_deep = 2; //süllyesztés mélysége
countersink_diameter = 10; //süllyesztés átmérő
font = "Harrington:style=Regular"; //betűtipus
hole1_x = 36; //első furat x coordináta
hole1_y = 40; //első furat y coordináta
hole2_x = 0; //második furat x coordináta
hole2_y = -63; //második furat y coordináta
//---------------------------------------
MakeNumber();
//---------------------------------------

module MakeNumber() {
color(number_colour){
    difference() {  
    translate([0, 0, 0 ])      
    linear_extrude(height=text_height)    
        text(str(text), size = font_size, font = font, halign =    "center", valign = "center");      
    translate([hole1_x , hole1_y, -1])  
        cylinder(d=hole_diameter,h=(text_height+1));
    translate([hole1_x , hole1_y, text_height-countersink_deep])
        cylinder(  3, d1=hole_diameter,  d2=countersink_diameter  );  
    translate([hole2_x , hole2_y, -1])  
    cylinder(d=hole_diameter,h=(text_height+1));
    translate([hole2_x , hole2_y, text_height-countersink_deep])
    cylinder(  3, d1=hole_diameter,  d2=countersink_diameter  );    
    }
}
}

Dakota25

Szia!
Szivesen, és bocsi (csak utólag jöttem rá), hogy feléd feltett kérdésre válaszoltam, de megörültem, hogy akad itt Scad-használó - és már gépeltem is. :-)
Nem profibb az enyém. Mindkét kód jó, tükrözi az írója pillanatnyi célját. A tiéd később is elővehető, gondosan magyarázott, az enyém meg olyan, amit hirtelen lekapartam szemléltetésként, ahogy épp eszembe jutott.
Viszont s...be leszünk rúgva, mert teleszemeteljük a topikot.
Lehet, itt lenne az ideje kérni a mastertől egy önálló OpenScad-témát.