Willkommen! Anmelden Ein neues Profil erzeugen

Erweiterte Suche

[gelöst] OpenSCAD IF einbauen

geschrieben von modellbauyodi 
[gelöst] OpenSCAD IF einbauen
16. September 2018 10:05
Hi ich wollte mir ein Modul erstellen um eine Platte mit abgerundeten Ecken zu zeichnen.
Die If Anweisungen sollen dafür sorgen wenn keine Parameter übergeben werden das die Variablen dann eine Vorgabe bekoḿmen.
Nur leider funzt das nicht sad smiley

module platte(x,y,z,d){  
    if (!z ) { z=0.5; }
    if (!y ) { y= 5; }
    if (!x )  { x= 4; }
    if (!d ) { d=0.05; } 
    echo(x);
    
hull(){
            translate([d/2, d/2, 0])                cylinder(d=d,h=z, center=false );
            translate([x-d+d/2, d/2, 0])         cylinder(d=d,h=z, center=false  );
            translate([d/2, y-d+d/2, 0])         cylinder(d=d,h=z, center=false  );
            translate([x-d+d/2, y-d+d/2, 0])  cylinder(d=d,h=z, center=false  );    
      };
 };
$fn=40;    
platte();


mfg Dirk

1-mal bearbeitet. Zuletzt am 17.09.18 14:09.
Re: OpenSCAD IF einbauen
16. September 2018 11:04
Am einfachsten baust du die Vorgabewerte direkt in die Parameterdefinition des module Befehls ein:
module platte(x=4,y=5,z=0.5,d=0.05){...}

Wenn du im Programm selbst explizit auf undefinierte Werte testen willst, dann z.B. so:
   z=(z==undef)?0.5:z;
   y=(y==undef)?5:y;
   x=(x==undef)?4:x;
   d=(d==undef)?0.05:d;
Die "if(!x){x=...} Befehle funktionieren nicht, da Zuweisungen innerhalb eines {...} Blocks
nur im Block selbst wirksam sind.
Zudem, auch wenn das funtionieren würde, hättest du das Problem, dass mit "!x" nicht
nur undefinierte Werte sondern auch explizite Nullwerte ersetzt würden. Daher ist es besser,
"(!x)" durch "(x==undef)" zu ersetzen und zudem die Vorgabewerte im module-Befehl auch
auf "undef" zu setzen (da sonst beim wiederholten Aufruf die letzten Werte noch vorhanden sein
können).
Re: OpenSCAD IF einbauen
17. September 2018 14:09
Hi,

danke für die Info. Ich entscheide mich für die erste Methode.

mfg Dirk
In diesem Forum dürfen leider nur registrierte Teilnehmer schreiben.

Klicke hier, um Dich einzuloggen