^
brixelweb.de OpenSCAD-Menu
[ https://openscad.org/ ]


Innenradius oben und innen


Innenradius unten im Modell

Ein Innenradius im Schnittmodell

Links und rechts sieht man die gelbe Rundung.
Diese ist variabel zum Eingeben gedacht. Das bedeutet es kann jede Größe erstellt werden.



Sie entsteht aus einem Quadrat, einem Kreis und dem "rotate_extrude" - Befehl.

Im Prinzip wird ein oberer Radius mit den normalen Befehlen fertig erzeugt. Dieser wird zum Schluss nur noch mit 'rotate' um 180 Grad gedreht. Somit ist das Zentrum des Radius wieder der Koordinaten-Nullpunkt für weitere Berechnungen zum Verschieben.


Wie der Innenradius entsteht

Ein Quadrat wird gesetzt ...

Der Innendurchmesse des oberen Teiles des Modells wird halbiert. Dies entspricht dem Innenradius zur Berechnung. Im Abstand vom Innenradius zum Nullpunkt des Koordinaten-Systems wird er Startpunkt des Quadrates festgelegt = translate([innenradius,0,0]) Dies ist der rote Punkt.
An diesem Punkt wird das Quadrat mit der Kantenlänge vom Radius gesetzt = square(radius, center = false);.
Dies alles wird in ein Modul gesetzt module rad_io2 (innenradius, radius) { }, damit es über die Variablen aufgerufen werden kann = rad_io2(20,5);

Der Angfang: ein Quadrat

// radius_io2.scad
// Innenradius, oben

$fn=50;

module rad_io2 (innenradius, radius) {

    translate([innenradius,0,0])
    square(radius, center = false);
        	
}     // Ende von module
 
 // Eingabe: rad_io2(innenradius, radius);
 rad_io2(20,5);


Ein Kreis kommt hinzu ...

Der Startpunkt des folgenden Kreises wird festgelegt = translate([innenradius + radius, radius, 0]). Dies ist der rote Punkt.
An diesem Punkt wird der Kreis mit dem Radius gesetzt = circle(radius);.
Die neuen Zeilen sind im Script rot hinterlegt. Startet den Script erneut.
Der Kreis wurde hellblau-durchsichtig gestaltet, damit die Schnittmenge besser zu sehen ist.

Es geht mit einem Kreis weiter ...

// radius_io2.scad
// Innenradius, oben

$fn=50;

module rad_io2 (innenradius, radius) {

    translate([innenradius,0,0])
    square(radius, center = false);
        
    translate([innenradius + radius, radius, 0])
    circle(radius);
	
}     // Ende von module
 
 // Eingabe: rad_io2(innenradius, radius);
 rad_io2(20,5);


Jetzt wird abgerechnet!

Mit dem Befehl 'difference' wird vom ersten Teil das zweite abgezogen = difference() {} .
Das heißt, vom ersten Teil, bei uns das Quadrat, wird der zweite Teil, der Kreis, abgezogen.
Die Schnittmenge beider Elemente wird abgezogen. Der Rest des Kreises läuft ins Leere, entfällt also komplett.
Es bleibt nur das Dreieck mit dem Radius übrig!

Der Kreis wird vom Quadrat abgezogen.

// radius_io2.scad
// Innenradius, oben

$fn=50;

module rad_io2 (innenradius, radius) {
difference()  {

    translate([innenradius,0,0])
    square(radius, center = false);
        
    translate([innenradius + radius, radius, 0])
    circle(radius);
	
  }   // Ende von difference
}     // Ende von module
 
 // Eingabe: rad_io2(innenradius, radius);
 rad_io2(20,5);


Jetzt geht es rund!

Mit dem Befehl 'rotate_extrude' wird das Teil um die Z-Achse rotiert = rotate_extrude(convexity = 10) {} .

Für eine bessere Darstellung im Bild habe ich nur die Hälfte des Radius erzeugt. Es wurde mittels rotate_extrude(angle=180, convexity = 10) {} erstellt. Fehlt die Eingabe von 'angle=...,' wird automatisch die Vorgabe von 360 Grad, also ein kompletter Kreis, dargestellt. Meine Eingabe von'180' ergab demnach nur einen Halbkreis.

... zur Hälfte bereits fertig!

// radius_io2.scad
// Innenradius, oben innen

$fn=100;

module rad_io2 (innenradius, radius) {

translate([0, 0, -0.001])    
rotate_extrude(convexity = 10){
difference()  {

    translate([innenradius -0.001, 0, 0])
    square(radius, center = false);
        
    translate([innenradius + radius, radius, 0])
    circle(radius);

    }  // Ende von difference
  }   // Ende von rotate_extrude
}     // Ende von module
 
 // Eingabe: rad_ao1(innenradius, radius);
 rad_io2(20,5);


Der fast fertige Radius

So sieht nun der fast fertige Radius aus: er muss noch mittels rotate([180, 0, 0]) um 180 Grad gedreht werden.

// radius_io2.scad
// Innenradius, oben innen

$fn=100;

module rad_io2 (innenradius, radius) {
rotate([180, 0, 0])
translate([0, 0, -0.001])    
rotate_extrude(convexity = 10){
difference()  {

    translate([innenradius -0.001, 0, 0])
    square(radius, center = false);
        
    translate([innenradius + radius, radius, 0])
    circle(radius);
	
    } // Ende von difference
  }   // Ende von rotate_extrude
}     // Ende von module

// Eingabe: rad_io2(Innendurchmesser, Radius)
translate([0, 0, 10])    
rad_io2(20, 5); 


Der fertige Innenradius



So sieht nun der fertige Innenradius aus: im Beispiel hat er einen Innendurchmesser von 20 und einem Radius von 5 durch die Eingabe erhalten.

// radius_io2.scad
// Innenradius, oben innen

$fn=100;

module rad_io2 (innenradius, radius) {
rotate([180, 0, 0])
translate([0, 0, -0.001])    
rotate_extrude(convexity = 10){
difference()  {

    translate([innenradius -0.001, 0, 0])
    square(radius, center = false);
        
    translate([innenradius + radius, radius, 0])
    circle(radius);
	
    } // Ende von difference
  }   // Ende von rotate_extrude
}     // Ende von module

// Eingabe: rad_io2(Innendurchmesser, Radius)
translate([0, 0, 10])    
rad_io2(20, 5); 

Der Innenradius muss nur noch vom eigentlichen Element über difference abgezogen werden.


Das Modul sollte immer am Anfang des Scriptes stehen. Es wird nur über "rad_io2(Innendurchmesser, Radius)" aufgerufen. Über "translate" kann der Innenradius-Ring an die gewünschte Stelle verschoben werden. Als Zentrum des Radius dient der Koordinaten-Nullpunkt.

Kopiere den Script und versuche es mit anderen Werten: z.B. rad_io2(12,2).

Der Name des Moduls "rad_io2" kann selbstverständlich geändert und dadurch frei gewählt werden. Es sollte nur darauf geachtet werden, dass der Modulname 'module neuer_name (innenradius, radius) {...}' mit dem Aufruf ' neuer_name(20,5);' übereinstimmt.


Das Modul sollte immer am Anfang des Scriptes stehen. Es wird nur über "irado(Innendurchmesser, Radius)" aufgerufen. Über "translate" kann der Innenradius-Ring an die gewünschte Stelle verschoben werden.

Kopiere den Script und versuche es mit anderen Werten: z.B. rad_io2(12,2).


Innenradius unten im Modell





www.brixelweb.de