Files
Thorsten 77eb5379d2 Initial commit: OpenSCAD MCP server for Claude Code
MCP server that lets Claude generate and render OpenSCAD models to STL files.
Includes setup documentation and installation guide.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 16:00:24 +01:00

93 lines
2.9 KiB
OpenSCAD

// Trichter
$fn = 64;
// Parameter
top_r = 40; // Radius oben
cone_h = 50; // Höhe des Kegelabschnitts
spout_r = 6; // Radius des Rohrs
spout_h = 25; // Länge des geraden Rohrs
wall = 2; // Wandstärke
ext_h = 20; // Länge der abgewinkelten Verlängerung
angle = 135; // Winkel der Verlängerung in Grad
spout_h2 = 25; // Länge des zweiten Ausgussrohrs
angle2 = 45; // Winkel von Knie 2
difference() {
// --- Außenhülle ---
union() {
// Kegelabschnitt
cylinder(h=cone_h, r1=spout_r, r2=top_r);
// Gerades Ausgussrohr
translate([0, 0, -spout_h])
cylinder(h=spout_h, r=spout_r);
// Knie 1
hull() {
translate([0, 0, -spout_h])
cylinder(h=0.01, r=spout_r);
translate([0, 0, -spout_h])
rotate([angle, 0, 0])
cylinder(h=0.01, r=spout_r);
}
// Abgewinkelte Verlängerung
translate([0, 0, -spout_h])
rotate([angle, 0, 0])
cylinder(h=ext_h, r=spout_r);
// Knie 2 + zweites Ausgussrohr
translate([0, 0, -spout_h])
rotate([angle, 0, 0])
translate([0, 0, ext_h]) {
hull() {
cylinder(h=0.01, r=spout_r);
rotate([angle2, 0, 0])
cylinder(h=0.01, r=spout_r);
}
rotate([angle2, 0, 0])
cylinder(h=spout_h2, r=spout_r);
}
}
// --- Innenkanal ---
union() {
// Kegel innen
translate([0, 0, wall])
cylinder(h=cone_h, r1=spout_r - wall, r2=top_r - wall);
// Gerades Rohr innen
translate([0, 0, -(spout_h + 1)])
cylinder(h=spout_h + 1 + wall, r=spout_r - wall);
// Knie 1 innen
hull() {
translate([0, 0, -spout_h])
cylinder(h=0.01, r=spout_r - wall);
translate([0, 0, -spout_h])
rotate([angle, 0, 0])
cylinder(h=0.01, r=spout_r - wall);
}
// Verlängerung innen
translate([0, 0, -spout_h])
rotate([angle, 0, 0])
translate([0, 0, -1])
cylinder(h=ext_h + 2, r=spout_r - wall);
// Knie 2 innen + zweites Rohr innen
translate([0, 0, -spout_h])
rotate([angle, 0, 0])
translate([0, 0, ext_h]) {
hull() {
cylinder(h=0.01, r=spout_r - wall);
rotate([angle2, 0, 0])
cylinder(h=0.01, r=spout_r - wall);
}
rotate([angle2, 0, 0])
translate([0, 0, -1])
cylinder(h=spout_h2 + 2, r=spout_r - wall);
}
}
}