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


Aussenradius 2 oben


Innenradius unten im Modell

Ein Aussenradius im Schnittmodell

Oben ist eine äußere Rundung angebracht, die varibel zum Eingeben gedacht ist. Das bedeutet es kann jede Größe erstellt werden.

Im Prinzip wird ein oberer Radius mit den normalen Befehlen fertig erzeugt. Dieser muss zum Schluss nur noch mit 'translate' positioniert und über 'difference' vom eigentlichen Element abgezogen werden. Somit ist das Zentrum des Radius wieder der Koordinaten-Nullpunkt für weitere Berechnungen zum Verschieben.


Wie der Innenradius entsteht

Ein Quadrat wird gesetzt ...

// radius_ao2.scad
// Aussenradius 2, oben

$fn=100;

module rad_ao2 (aussendurchm, radius) {

    translate([aussendurchm - radius +0.001, 0, 0])
    square(radius, center = false);
        
}      // Ende von module 
 
 // Eingabe: rad_ao2(aussendurchm, radius);
rad_ao2(20, 5);

In der Zeile 'translate([aussendurchm - radius +0.001, 0, 0])' bewirken die '+0.001' dass der Radius 1 Tausendstel größer wird. Dies hat zur Folge, dass später keine unsauberen Abschnitte entstehen.


Dazu kommt der Kreis (heute ganz in blau) mit dem gewünschten Radius

// radius_ao2.scad
// Aussenradius 2, oben

$fn=100;

module rad_ao2 (aussendurchm, radius) {

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


Natürlich muss der Kreis vom Quadrat abgezogen werden:

// radius_ao2.scad
// Aussenradius 2, oben

$fn=100;

module rad_ao2 (aussendurchm, radius) {

difference()  {
    translate([aussendurchm - radius +0.001, 0, 0])
    square(radius, center = false);
        
    translate([aussendurchm -radius, radius, 0])
    circle(radius);
    }  // Ende von difference
}      // Ende von module 
 
 // Eingabe: rad_ao2(aussendurchm, radius);
rad_ao2(20, 5);


Jetzt wird das "Teil" rotiert...

Zur Hälfte schon fertig.

// radius_ao2.scad
// Aussenradius 2, oben

$fn=100;

module rad_ao2 (aussendurchm, radius) {
rotate_extrude(convexity = 10){
difference()  {
    translate([aussendurchm - radius +0.001, 0, 0])
    square(radius, center = false);
        
    translate([aussendurchm -radius, radius, 0])
    circle(radius);
    }  // Ende von difference
  }    // Ende von rotate_extrude
}      // Ende von module 
 
 // Eingabe: rad_ao2(aussendurchm, radius);
rad_ao2(20, 5);


Der obere Innenradius

// radius_ao2.scad
// Aussenradius 2, oben

$fn=100;

module rad_ao2 (aussendurchm, radius) {
rotate_extrude(convexity = 10){
difference()  {
    translate([aussendurchm - radius +0.001, 0, 0])
    square(radius, center = false);
        
    translate([aussendurchm -radius, radius, 0])
    circle(radius);
    }  // Ende von difference
  }    // Ende von rotate_extrude
}      // Ende von module 
 
 // Eingabe: rad_ao2(aussendurchm, radius);
rad_ao2(20, 5);


Gedrehter oberer Innenradius = oberer Aussenradius

Ansicht von unten:


Ansicht von oben:

// radius_ao2.scad
// Aussenradius 2, oben

$fn=100;

module rad_ao2 (aussendurchm, radius) {
rotate([180, 0, 0])
rotate_extrude(convexity = 10){
difference()  {
    translate([aussendurchm - radius +0.001, 0, 0])
    square(radius, center = false);
        
    translate([aussendurchm -radius, radius, 0])
    circle(radius);
    }  // Ende von difference
  }    // Ende von rotate_extrude
}      // Ende von module 
 
 // Eingabe: rad_ao2(aussendurchm, radius);
rad_ao2(20, 5);

Nur durch die Zeile rotate([180,0,0]) wird das gesamte Modul um 180 Grad gedreht. So wird aus dem normalen oberen Innenradius ein unterer Innenradius.

Doch ganz einfach, oder etwa nicht?


Oberer Aussenradius ohne 0.001 !

Die unsauberen Abschnitte entstehen bei genauem Schneiden. Bei einem Über- oder Untermaß von einem Tausendstel ( 0.001 ) entfällt dies!
Beachte die Schreibweise mit dem Punkt statt Komma!

// radius_ao2.scad
// Aussenradius 2, oben

$fn=100;

module rad_ao2 (aussendurchm, radius) {
rotate([180, 0, 0])
rotate_extrude(convexity = 10){
difference()  {
    translate([aussendurchm - radius, 0, 0])
    square(radius, center = false);
        
    translate([aussendurchm -radius, radius, 0])
    circle(radius);
    }  // Ende von difference
  }    // Ende von rotate_extrude
}      // Ende von module 
 
 // Eingabe: rad_ao2(aussendurchm, radius);
rad_ao2(20, 5);


Oberer Aussenradius mit 0.001!

Die neuesten Zeilenänderungen sind rechts im Script in rot gehalten.

Die Zeile 'translate([0,0,-0.001])' bewirkt eine Anhebung in der Z-Achse. Bedingt durch das voran gestellte 'rotate([180, 0, 0])' muss dies nun ein negativer Wert sein!

// radius_ao2.scad
// Aussenradius 2, oben

$fn=100;

module rad_ao2 (aussendurchm, radius) {
rotate([180, 0, 0])
translate([0,0,-0.001])
rotate_extrude(convexity = 10){
difference()  {
    translate([aussendurchm - radius +0.001, 0, 0])
    square(radius, center = false);
        
    translate([aussendurchm -radius, radius, 0])
    circle(radius);
    }  // Ende von difference
  }    // Ende von rotate_extrude
}      // Ende von module 
 
 // Eingabe: rad_ao2(aussendurchm, radius);
rad_ao2(20, 5);


Das Modul sollte immer am Anfang des Scriptes stehen. Es wird nur über "rad_ao2(Aussendurchmesser, 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_ao2(12,2).






www.brixelweb.de