marcob
People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years
Een cube met afgeronde hoeken doe je met minkowski()
Voorbeeld:
side_x = 150.0;
side_y = 100.0;
side_z = 10.0;
corner = 5.0;
x1 = side_x - corner * 2;
y1 = side_y - corner * 2;
z1 = side_z/2;
minkowski() {
cube([ x1, y1, z1], true);
cylinder(h = z1, r = corner, center = true);
}Paulinha_B
Honourable Member
"Ik spreek Spaans tegen God, Italiaans tegen de vrouwen, Frans tegen mannen en Duits tegen mijn paard." Dixit Carlos V, Römisch-deutscher Kaiser
minkowski kende ik niet, bedankt @marcob!
het kan (voor 1 "hoek") ook door een union van het ene been en het andere been en een kwart van een cylinderwand. Die laatste is een verschil van een buitencylinder minus een binnencylinder en daar dan nog eens 180 graden en 90 graden van afgetrokken.
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Minkovski is T**** traag.
module fourcorners ()
{
children ();
mirror ([1,0,0]) children ();
mirror ([0,1,0]) children ();
rotate (180) children ();
}
module rcube (s, r)
{
x2 = s[0]/2-r;
y2 = s[1]/2-r;
z = s[2];
hull () {
fourcorners () translate ([x2, y2,0]) cylinder (r=r, h=z);
}
}
module bak (size, wt, r)
{
difference () {
rcube (size, r);
s = [ size[0] - 2*wt, size[1] - 2*wt, size[2]];
translate ([0,0,wt]) rcube (s, r-wt);
}
}
bak ([100,50,10],2,10);
(Als ik dit voor mezelf maak, dan maak ik een extra "bottom thickness" parameter: Die hoeft niet zo dik als de wanden.)
@
Op woensdag 16 juli 2025 13:43:56 schreef Paulinha_B:
... een buitencylinder minus een binnencylinder en daar dan nog eens 180 graden 90 graden van afgetrokken.
Dit zou ik zo doen:
intersection () {
diference () {
cylinder (r=r+wt, h=h);
translate ([0,0,-1]) cylinder (r=r, h=h+2);
}
translate ([0,0,-.1]) cube ([r+wt+1, r+wt+1, h+2]);
}
een alternatief is
rotate_extrude (angle=90) translate ([r,0]) square ([wt,h]);
Hmm. Eigenlijk nog wel de meest elegante!
[Bericht gewijzigd door rew op (30%)]
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Dank daarvoor, maar is het ook mogelijk met alleen de onderste hoeken afgerond?
(of moet ik dan met meerdere cylinders / unions aanmaken?)
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Ik snap niet wat je wilt. Dus dan kan ik het niet maken.
Sorry.
Als je zeg de onderkant van de bak rond wil hebben, dan kan je met een hull van een sphere op de juiste positie gaan werken. Maar die afronding is eigenlijk niet fijn om te 3D printen met een FDM printer. Dus ik doe dat meestal niet....
[Bericht gewijzigd door rew op (64%)]
Paulinha_B
Honourable Member
"Ik spreek Spaans tegen God, Italiaans tegen de vrouwen, Frans tegen mannen en Duits tegen mijn paard." Dixit Carlos V, Römisch-deutscher Kaiser
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
module fourcorners ()
{
children ();
mirror ([1,0,0]) children ();
mirror ([0,1,0]) children ();
rotate (180) children ();
}
module rcube (s, r)
{
x2 = s[0]/2-r;
y2 = s[1]/2-r;
z = s[2];
hull () {
fourcorners () translate ([x2, y2,0]) cylinder (r=r, h=z);
}
}
module rscube (s, r)
{
x2 = s[0]/2-r;
y2 = s[1]/2-r;
z = s[2];
hull () {
translate ([ x2, -y2,0]) cylinder (r=r, h=z);
translate ([-x2, -y2,0]) cylinder (r=r, h=z);
translate ([ x2, y2,0]) cube ([r,r,z]);
translate ([-x2-r, y2,0]) cube ([r,r,z]);
}
}
module bak (size, wt, r)
{
difference () {
rscube (size, r);
s = [ size[0] - 2*wt, size[1] - 2*wt, size[2]];
translate ([0,0,wt]) rscube (s, r-wt);
}
}
bak ([100,50,10],2,10);
wt = 2;
h = 10;
r = 10;
*rotate_extrude (angle=90) translate ([r,0]) square ([wt,h]);
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
marcob
People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years
Op woensdag 16 juli 2025 14:04:40 schreef rew:
Minkovski is T**** traag.Dat klopt, daarom gebruik ik veel de preview mode (F5). Via de optie if ($preview) { .... laat ik dan bijvoorbeeld de PCB zien, zodat het zichtbaar wordt hoe de modules in een behuizing zitten. Zie afbeelding:
Wat doet het commando 'childeren()' eigenlijk precies, ik kan het niet goed begrijpen zoals het in de cheatsheet staat.
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Paulinha_B
Honourable Member
"Ik spreek Spaans tegen God, Italiaans tegen de vrouwen, Frans tegen mannen en Duits tegen mijn paard." Dixit Carlos V, Römisch-deutscher Kaiser
Mooi werk, @arco!
En ik leer hier aan snel tempo bij,
if ($preview)kende ik ook al niet.
Mijn eigen(wijze) manier van werken is overigens om het bestand in een venster te openen in preview-mode, en dan in een ander venster te editeren, in tekstmodus. Dat komt erg dicht bij WYSIWIG!
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Info over Openscad is er wel, maar héél erg verspreid helaas.
(je bent weken bezig om alles te bekijken en tegen die tijd ben je het eerste alweer vergeten...
)
Veel functienamen zijn ook al niet erg 'onthoudbaar'...
Voor updaten van de preview kun je toch F5 gebruiken?
[Bericht gewijzigd door Arco op (11%)]
marcob
People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years
Klopt F5 is preview.
Via de functie if ($preview) kun je niet alleen extra objecten laten zien, maar ook extra tekst. Dat kan makkelijk zijn, als totaal overzicht.
Paulinha_B
Honourable Member
"Ik spreek Spaans tegen God, Italiaans tegen de vrouwen, Frans tegen mannen en Duits tegen mijn paard." Dixit Carlos V, Römisch-deutscher Kaiser
Voor updaten van de preview kun je toch F5 gebruiken?
Dat hoeft zelfs niet. Als ik in mijn editeervenster het bestand opsla/wegschrijf, dan wordt de preview in het andere venster automagisch bijgewerkt. Echt handig!
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Dat weet ik, maar dat wil ik juist niet, ik wil eerst weten of het werkt voordat ik het opsla.
Werkt de wijziging niet zoals verwacht, dan kun je met Ctrl-Z simpel 'restoren'... (en met Ctrl-Y eventueel weer 'unrestoren')
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Op woensdag 16 juli 2025 17:36:11 schreef Paulinha_B:
Mooi werk, @arco!
En ik leer hier aan snel tempo bij,if ($preview)kende ik ook al niet.
Dat voegt een stukje code toe die alleen zichtbaar is/gerenderd wordt in de preview mode.
Dus dan ZIE je niet wat je gaat krijgen. Ik snap dat een PCB waar je omheen aan het bouwen bent, nooit in het uiteindelijke ding moet komen, maar toch.
Mijn eigen(wijze) manier van werken is overigens om het bestand in een venster te openen in preview-mode, en dan in een ander venster te editeren, in tekstmodus. Dat komt erg dicht bij WYSIWIG!
Ja, dat doe ik ook. De ingebouwde editor van dingen gebruiken, dat is irritant: Ieder programma is net wat anders, en dan moet je dus de eigenaardigheden/keystrokes van allemaal verschillende editors gaan zitten onthouden. Geen zin in. Ik zet dan "automatic preview" aan en zodra ik hem save gaat openscad de nieuwe laten zien. Geen zin/niet nodig om op F5 te duwen.
Op woensdag 16 juli 2025 18:19:17 schreef Arco:
Werkt de wijziging niet zoals verwacht, dan kun je met Ctrl-Z simpel 'restoren'... (en met Ctrl-Y eventueel weer 'unrestoren')
Dat is dan zo'n eigenaardigheid van een editor die ik zou moeten leren. Mijn gebruikelijke editor (emacs) staat gewoon toe dat ik undo doe ook al heb ik hem gesaved.
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Op donderdag 17 juli 2025 08:13:17 schreef rew:
Dat is dan zo'n eigenaardigheid van een editor die ik zou moeten leren. Mijn gebruikelijke editor (emacs) staat gewoon toe dat ik undo doe ook al heb ik hem gesaved.
Kan met of zonder opslaan, maar opslaan van een niet werkend ontwerp is vrij zinloos (dan kun je beter het bestaande ontwerp bewaren)
Ctrl-X en Ctrl-Y bestaan al een halve eeuw sinds de komst van een van de oerversies van de editor: Wordstar...
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Het gaat er om dat er verschillen zijn. Dat search in emacs niet "control-F" is, is een voorbeeld. Dan kan je roepen dat emacs fout is, maar control-S voor "search" is eigenlijk vrij logisch en control-F is later pas uitgevonden. Ik moet ook in "browsers" werken, dus daar moet ik aan control-F wennen.
Anyway, voor openscad werk ik met m'n bestand in emacs, en moet ik een save doen om hem in openscad opnieuw gerenderd te krijgen. Als ik een wijziging doe die ik niet vertrouw, dan houd ik over het algemeen de bestaande code als "comment". En als het eenmaal werkt doe ik het in git.
marcob
People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years
Laten we niet verzanden in de goed/fout discussie. Voor de meeste onder ons is het hobby en een ieder doet het op zijn of haar manier. Laten we elkaar tips geven en helpen.
@Rew, ik zie dat jij
children ();gebruikt, kun je uitleggen hoe dat werkt. Ik kan er in de handleiding niet goed uitkomen.
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Ohja. Dat zou ik nog doen.
Als je "translate" doet, dan doet die module "IETS" met de dingen die je er achter doet. Maar ook "difference", "scale" en "rotate" zijn voorbeelden.
een module als "cube" creert een object, maar een module kan dus ook IETS doen met submodules die er achter staan.
Waarbij je dus voor getallen die een module in gaan argumenten kan maken, kan je ook andere-objecten meegeven waar je in de module iets mee kan doen.
Dus wat ik veel gebruik is "dupn": roteer n keer rond de oorsprong en plaats het sub-object op iedere positie.
module dupn (n)
{
for (i=[0:1:n-1]) rotate (360/n*i) children ();
}Zo krijg je dus bijvoorbeeld 10 kubusjes in een rondje om de oorsprong.
dupn (10) translate ([50,0,0])cube (10, center=true);marcob
People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years
Ik begrijp hem, normaal maak je een module om een object meerdere malen te gebruiken, denk aan een PCB standaard bus. Maar nu maak je eigenlijk een module die een bewerking is, die je dan kunt toepassen op een cube of cilinder, wat je maar wilt.
Een andere vraag wat jullie misschien wel weten (ik kan het niet vinden op internet)
Met difference () kun je twee objecten van elkaar delen, dat is me duidelijk. Nu maak ik gebruik van standaard modules die ik zelf heb gemaakt, neem als voorbeeld een Raspberry Pi. Nu bestaat dat uit twee modules, de ene is vier keer een PCB stand op de juiste maat. En de tweede module zijn de cut-outs voor de behuizing. Nu doe ik dat zoals hieronder, twee losse modules. Met het nadeel dat ik altijd de translate hetzelfde moet houden. Mijn vraag zou het ook in 1 module kunnen?
difference() {
union() {
housing();
translate([ 10, 10, 0])
raspberry();
}
translate([ 10, 10, 0])
raspberry_cut();
}rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Dus hier kan je een RPI_POS module maken:
module rpi_pos() translate ([10, 10, 0]) children (); Zelf zou ik in dat geval liever de housing naar -10, -10 verhuizen, maar goed, dat kan niet altijd.
marcob
People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years
Nu ben je me kwijt. Ten eerste de translate is enkel als voorbeeld.
module raspberry() zijn de vier bevestigingsstuds.
module raspberry_cut() zijn de cutouts voor in de wand.
Mijn vraag is eigenlijk, kan ik één module maken die zowel de studs als de cut-outs bevat?
Kan dit met children (); ? Hou komt het er dan uit te zien?
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Op donderdag 17 juli 2025 18:32:17 schreef marcob:
Nu ben je me kwijt. Ten eerste de translate is enkel als voorbeeld.
module raspberry() zijn de vier bevestigingsstuds.
module raspberry_cut() zijn de cutouts voor in de wand.
Mijn vraag is eigenlijk, kan ik één module maken die zowel de studs als de cut-outs bevat?Kan dit met children (); ? Hou komt het er dan uit te zien?
Nee. Niet echt.
difference() {
union() {
translate([ -10, -10, 0]) housing();
raspberry();
}
raspberry_cut();
}
Dit bedoel ik met "1 translate".
Ik doe het wel eens zo:
module rpi(cut)
{
if (cut)
raspberry_cut();
else
raspberry();
}
module rpi_pos () translate ([10,10,0]) children ();
[code]
difference() {
union() {
housing();
rpi_pos () rpi (0);
}
rpi_pois () rpi (1);
}
