OpenScad - neues ATARI Falcon 030 Gehäuse entsteht

Moderator: Rockford

Antworten
Benutzeravatar
mega-hz
Beiträge: 1704
Registriert: 03.11.2021 11:23
Has thanked: 541 times
Been thanked: 600 times

OpenScad - neues ATARI Falcon 030 Gehäuse entsteht

Beitrag von mega-hz »

Ich möchte hier eine ganz andere Programmiersprache mit einem guten Beispiel mal beschreiben:
OpenScad (Freeware)

Mit dieser Software kann man anhand von Befehlen relativ schnell 3D Objekte erstellen, ideal für den 3D-Druck.
Im folgenden Beispiel beschreibe ich, wie man aus einem 1040STF Gehäuse ein Falcon030 Gehäuse zaubern kann.
Hintergrund ist dieser:
Ich habe einen F030 bekommen, bei dem der Vorbesitzer etliches vom Gehäuse abgesägt/gebrochen hat, um das Mainboard in ein 19" Gehäuse zu bekommen.
Da ich den wieder herstellen möchte, habe ich eine STL-Datei vom 1040ST gefunden.
Nun kann man im OpenScad auch STL Dateien importieren, diese ist dann zwar "da", aber nicht editierbar.
Was man aber machen kann, Objekte hinzufügen (addetiv) oder löschen (subtraktiv).

Dazu bin ich folgendermaßen vorgegangen:
Zuerst die 1040er Datei importiert,
Dann eine dünne Platte angelegt und so positioniert, daß die Löcher in der 1040ST Rückwand alle geschlossen sind.

Die beiden Objekte 1040ST und die dünne neue Rückwand dann per union() zusammengefügt.

Danach kommen in einer Difference() Schleife die Objekte, die von den beiden als union() definierten "abgezogen" werden.
Also anstatt ein Rechteck wird ein rechteckiges Loch erzeugt.

hier mal ein paar Bilder die das veranschaulichen:

hier das 1040ST Gehäuse Unterteil mit der (auf Abstand) gezeigten Platte die die Löcher verschliesst.
Screenshot (827).png
Screenshot (827).png (67.12 KiB) 78 mal betrachtet
dann die Platte auf die richtige Position gesetzt:
Screenshot (828).png
Screenshot (828).png (69.43 KiB) 78 mal betrachtet
Da kann man sehen, daß die Löcher alle geschlossen sind, aber die Beschriftung nocht sichtbar ist, da diese 1mm heraussteht.

Also habe ich noch eine Platte in 1mm Stärke angelegt und diese genau auf die Schrift gesetzt. (Difference() ) so daß die Schrift auch entfernt wird.

Danach rechteckige Objekte angelegt um die neuen Löcher für Netzbuchse, Netzschalte, Rest, RS232 usw. angelegt und plaziert.
Da auch in der Difference() Schleife, werden diese Objekte auch als Löcher gezeichnet.

Es ist noch viel zutun um das F030 Gehäuse komplett fertigzustellen, aber es geht voran.

So sieht das ganze jetzt aus:
Screenshot (829).png
Screenshot (829).png (26.19 KiB) 78 mal betrachtet
Und der Code:

Code: Alles auswählen

//-----------------------------
// ATARI Falcon 030 Gehäuse
// Rekontruktion
// basierend auf dem 1040STF
// (C)01/2026 mega-hz
//-----------------------------

$fn = 50;

// NUR HILFSMITTEL!
// F030 Rückwand importieren
translate([70,95,80])
rotate([270,270,0])
    color("Yellow")
import("F:/f030.svg", convexity=3);

//-----------------------------
// Rückwand
//-----------------------------
difference()
{
// 1040 und neue Blank Rückwand zusammenfügen
union()
    {
// 1040STF Unterteil       importieren
    rotate([90,0,0])
    color("White")
    import("D:/3D Drucker Files/Atari1040ST_bottom_full.stl", convexity=3);

   
//Rückwand verschliessen
    translate([15,-0.5,3])
    rotate([90,0,0])
    color("White")
    cube([445,46, 3]);
    }

// dünne Platte um die 1040 Beschriftung zu löschen
    translate([15,0.6,3])
    rotate([90,0,0])
    color("White")
    cube([445,46, 1.1]);


//-----------------------------
// Löcher
//-----------------------------
// Loch Reset Taster
translate(v = [40.75, -5, 11.5])
color("Green")
roundedcube([6.9, 9, 6.9], false, 0.25, "y");

// Loch Kaltgeräte Buchse(1.5mm höher als 1040)
translate(v = [64, -5, 21+1.5])
color("Green")
roundedcube([31.2, 9, 23,4], false, 2.5, "y");

// Loch Netzschalter(1.5mm höher als 1040)
translate(v = [128.8, -5, 28+1.5])
color("Green")
roundedcube([29, 9, 8,4], false, 0.25, "y");

// Loch LAN
translate(v = [138.8-27, 4, 16])
color("Yellow")
rotate([90,0,0])
cylinder(9, d=12);

// Loch Modem
translate(v = [138.8, -5, 9])
color("Yellow")
roundedcube([32.5, 9, 15], false, 0.5, "y");

}

//-----------------------------
// Beschriftungen
//-----------------------------
// Schrift RESET
translate(v = [49, -1, 4])
color("Green")
rotate([90,0,180])
linear_extrude(1)
    text("RESET", font = "Monospac821 BT:style=Bold",size = 2.7);

// Schrift POWER Buchse
translate(v = [86, -1, 18])
color("Green")
rotate([90,0,180])
linear_extrude(1)
    text("POWER", font = "Monospac821 BT:style=Bold",size = 2.7);

// Schrift LAN
translate(v = [114.8, -1, 4])
color("Green")
rotate([90,0,180])
linear_extrude(1)
    text("LAN", font = "Monospac821 BT:style=Bold",size = 2.7);

// Schrift POWER Schalter
translate(v = [158, -1, 39])
color("Green")
rotate([90,0,180])
linear_extrude(1)
    text("0   POWER   1", font = "Monospac821 BT:style=Bold",size = 2.7);

// Schrift RS232
translate(v = [160.8, -1, 4])
color("Green")
rotate([90,0,180])
linear_extrude(1)
    text("RS232", font = "Monospac821 BT:style=Bold",size = 2.7);













// Higher definition curves
$fs = 0.01;

module roundedcube(size = [1, 1, 1], center = false, radius = 0.5, apply_to = "all") {
	// If single value, convert to [x, y, z] vector
	size = (size[0] == undef) ? [size, size, size] : size;

	translate_min = radius;
	translate_xmax = size[0] - radius;
	translate_ymax = size[1] - radius;
	translate_zmax = size[2] - radius;

	diameter = radius * 2;

	module build_point(type = "sphere", rotate = [0, 0, 0]) {
		if (type == "sphere") {
			sphere(r = radius);
		} else if (type == "cylinder") {
			rotate(a = rotate)
			cylinder(h = diameter, r = radius, center = true);
		}
	}

	obj_translate = (center == false) ?
		[0, 0, 0] : [
			-(size[0] / 2),
			-(size[1] / 2),
			-(size[2] / 2)
		];

	translate(v = obj_translate) {
		hull() {
			for (translate_x = [translate_min, translate_xmax]) {
				x_at = (translate_x == translate_min) ? "min" : "max";
				for (translate_y = [translate_min, translate_ymax]) {
					y_at = (translate_y == translate_min) ? "min" : "max";
					for (translate_z = [translate_min, translate_zmax]) {
						z_at = (translate_z == translate_min) ? "min" : "max";

						translate(v = [translate_x, translate_y, translate_z])
						if (
							(apply_to == "all") ||
							(apply_to == "xmin" && x_at == "min") || (apply_to == "xmax" && x_at == "max") ||
							(apply_to == "ymin" && y_at == "min") || (apply_to == "ymax" && y_at == "max") ||
							(apply_to == "zmin" && z_at == "min") || (apply_to == "zmax" && z_at == "max")
						) {
							build_point("sphere");
						} else {
							rotate = 
								(apply_to == "xmin" || apply_to == "xmax" || apply_to == "x") ? [0, 90, 0] : (
								(apply_to == "ymin" || apply_to == "ymax" || apply_to == "y") ? [90, 90, 0] :
								[0, 0, 0]
							);
							build_point("cylinder", rotate);
						}
					}
				}
			}
		}
	}
}
weiteres später
keine PN's mehr! Bitte per email kontaktieren! atari1450xld©mega-hz.de

patjomki
Beiträge: 436
Registriert: 18.08.2021 23:21
Has thanked: 174 times
Been thanked: 99 times
Kontaktdaten:

Re: OpenScad - neues ATARI Falcon 030 Gehäuse entsteht

Beitrag von patjomki »

Top. Brauche auch noch unbedingt zwei Falcon Gehäuse.

Benutzeravatar
mega-hz
Beiträge: 1704
Registriert: 03.11.2021 11:23
Has thanked: 541 times
Been thanked: 600 times

Re: OpenScad - neues ATARI Falcon 030 Gehäuse entsteht

Beitrag von mega-hz »

da kommt noch die Frage für alle auf:
Da die 3.5mm Audio Buchsen nicht so genial sind, wäre es doch klug, glech noch vier Löcher für Chinch-Buchsen zu versehen, oder?
keine PN's mehr! Bitte per email kontaktieren! atari1450xld©mega-hz.de

patjomki
Beiträge: 436
Registriert: 18.08.2021 23:21
Has thanked: 174 times
Been thanked: 99 times
Kontaktdaten:

Re: OpenScad - neues ATARI Falcon 030 Gehäuse entsteht

Beitrag von patjomki »

Für mich nicht. Meine beiden Boards sind unmodifiziert, habe halt nur keine Gehäuse dafür.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast