In diesem Video zeige ich dir Schritt für Schritt, wie du eine eigene 3D-gedruckte Lightbox erstellst! Wir schauen uns an, was eine Lightbox überhaupt ist und wie du mit BambuStudio ganz einfach dein eigenes Design vorbereitest – egal ob für Pokémon, Logos oder eigene Fotos.
In diesem Tutorial lernst du:
Was eine 3D-Druck Lightbox ausmacht
Die richtigen Einstellungen in BambuStudio (Layer-Höhe, Infill etc.)
Tipps für den perfekten Multicolor-Druck (auch ohne AMS möglich!)
In diesem Video zeige ich euch, wie ihr eine IKEA Skadis Lockplatte ohne Bohrungen befestigen könnt, indem ihr einen 3D Druck von Makerworld verwendet:
Was bedeutet bei Schrauben M3, M4, M3x4, E27 usw … ?
Der Buchstabe M steht für ein metrisches ISO-Gewinde, welches zylindrisch und mit 60° geneigt ist. die Zahl 3 (bei z.B. M3) für den Gewindedurchmesser von 3 mm. Die Schreibweise M3x4 bedeutet, dass die Gewindelänge einer M3-Schraube 4 mm beträgt.
Nachfolgend ist eine tabellarische Übersicht weiterer häufiger Gewinde-Kennbuchstaben und wo sie typischerweise verwendet werden.
Gewinde‑Kennbuchstaben, Bedeutung, Typ & typische Anwendungen
Kennbuchstabe
Bedeutung / Normsystem
Typ / Profil
Beispiel
Typische Verwendung / Anwendungsfälle
M
Metrisches ISO‑Gewinde
zylindrisch, 60°
M6
Maschinenbau, Elektronik, Metallbau, Möbelbau, Automobil, 3D‑Druck, Gerätebau – das am weitesten verbreitete Gewinde weltweit
G
Whitworth-Rohrgewinde (BSPP, parallel)
zylindrisch, 55°
G 1/4
Sanitär‑ und Wasserinstallationen, Druckluftsysteme, Hydraulik (mit Dichtungen), Armaturen
R
Whitworth-Rohrgewinde (BSPT, konisch)
konisch, 55°
R 1/8
Metall‑Rohrverbindungen, Druckluft, Flüssigkeiten, Gasleitungen – abdichtet über das Gewinde
Sie arbeiten in einer administrierten Organisation mit einer Windows-Domäne und verlieren bei zwei Netzwerkverbindungen eine Verbindung, weil eine Netzwerk-Policy nur eine Verbindung erlaubt.
Korrekterweise wäre der richtige Weg, dies über ein Ticket mit ihrer IT zu regeln, nur leider ist es Administrator-seitig nicht so einfach möglich diese Policy zu ändern, da man vermutlich zu Gunsten der IT-Sicherheit diese Policy bewusst eingerichtet hat. Daher ist die Resonanz Ihrer IT oft die Ablehnung und das unbearbeitete Schließen.
Dennoch gibt es Situationen, in denen das Vorhandensein von 2 Netzwerkverbindungen notwendig ist und ich arbeite in einer solchen Konstilation:
Ich befinde mich hauptsächlich im Homeoffice
Ich brauche die RJ45-Schnittstelle meines Notebooks um mit einer Peripherie, welche ich als Softwareentwickler programmiere, zu kommunizieren. Bei der Kommunikation kommt ein eigenes Protokoll zum Einsatz, welches nicht auf TCP/IP basiert.
Ich nutze neben der eigentlichen Programmiertätigkeit das Notebook um mit meinen Kollegen über Microsoft Teams zu kommunizieren oder neue Programmversionen in eine Cloud hochzuladen.
Ich nutze das firmeninterne Ticketsystem auf Basis von JIRA um meine täglichen Aufgaben zu erhalten, zu bearbeiten und zu kommentieren.
Ich commite meine Änderungen in ein Quellcode-Verwaltungssystem (GIT), welches sich in der Cloud befindet und Pflege meine Änderungen harmonisch in das Gesamtkonstrukt der Anwendung ein (Team-Programmierung).
…
Analyse
Im Allgemeinen liegt das Problem darin, dass der Rechner die folgende Policy immer wieder ändert:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WcmSvc\GroupPolicy]
"fBlockNonDomain"=dword:00000001
"fMinimizeConnections"=dword:00000000
Diese Änderungen werden periodisch von der Organisation über Azure-Mechanismen auf meinen Firmenrechner übertragen, was dazu führt, dass ich entweder nicht mehr arbeiten kann, oder dass ich nicht mehr über Microsoft-Teams erreichbar bin und meine Quellcode-Änderungen commiten kann.
Lösung
Für Windows 11 (und auch Windows 10) führe ich die folgende Batch-Datei als Administrator aus (Rechtsklick auf .bat-Datei -> Als Administrator ausführen):
@echo off
chcp 65001
:Start
echo Importiere Registry-Einstellungen...
regedit.exe /s change_group_policy.reg
echo Fertig.
:Frage
set /p Antwort=Moechten Sie den Vorgang wiederholen? (j/n):
if /I "%Antwort%"=="j" goto Start
if /I "%Antwort%"=="n" exit
echo Ungueltige Eingabe. Bitte geben Sie "j" oder "n" ein.
goto Frage
Der unter Abschnitt „Analyse“ gezeigte Registry-Key, den ich unter dem Namen change_group_policy.reg gespeichert habe, lege ich in das gleiche Verzeichnis.
Diese Konsoleneingabe lasse ich geöffnet, da nach ein paar Stunden die Policy neu übertragen wird und ich eine Verbindung verliere.
Wenn jemand eine bessere Lösung dafür hat wäre ich für einen Kommentar unter dem Beitrag dankbar.
In some cases mighty libs like NPCap or WinPCap are used to get a list of all network devices with common properties like GUID and so on.
Approach
#pragma comment(lib, "iphlpapi.lib") This links the IP Helper API library, which provides functions for retrieving network configuration and statistics, such as:
Network adapter information
IP address tables
Routing tables
#pragma comment(lib, "ws2_32.lib") This links the Winsock 2 library, which is essential for network programming on Windows. It provides:
Socket APIs for TCP/UDP communication
DNS resolution
Network initialization and cleanup functions
Solution
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#include <iphlpapi.h>
#include <ws2tcpip.h>
#pragma comment(lib, "iphlpapi.lib")
#pragma comment(lib, "ws2_32.lib")
int main() {
DWORD dwSize = 0;
DWORD dwRetVal = 0;
IP_ADAPTER_ADDRESSES *pAddresses = NULL;
IP_ADAPTER_ADDRESSES *pCurrAddresses = NULL;
ULONG flags = GAA_FLAG_INCLUDE_PREFIX;
ULONG family = AF_UNSPEC;
// Erste Abfrage zur Bestimmung der Puffergröße
dwRetVal = GetAdaptersAddresses(family, flags, NULL, pAddresses, &dwSize);
if (dwRetVal == ERROR_BUFFER_OVERFLOW) {
pAddresses = (IP_ADAPTER_ADDRESSES *) malloc(dwSize);
if (pAddresses == NULL) {
printf("Speicher konnte nicht reserviert werden.\n");
return 1;
}
}
// Zweiter Aufruf mit gültigem Puffer
dwRetVal = GetAdaptersAddresses(family, flags, NULL, pAddresses, &dwSize);
if (dwRetVal == NO_ERROR) {
pCurrAddresses = pAddresses;
while (pCurrAddresses) {
printf("Adapter GUID: %s\n", pCurrAddresses->AdapterName);
printf("Adaptername: %ws\n", pCurrAddresses->FriendlyName);
printf("Beschreibung: %ws\n", pCurrAddresses->Description);
if (pCurrAddresses->PhysicalAddressLength != 0) {
printf("MAC-Adresse: ");
for (DWORD i = 0; i < pCurrAddresses->PhysicalAddressLength; i++) {
printf("%02X", pCurrAddresses->PhysicalAddress[i]);
if (i < pCurrAddresses->PhysicalAddressLength - 1)
printf(":");
}
printf("\n");
}
printf("--------------------------------------------------\n");
pCurrAddresses = pCurrAddresses->Next;
}
} else {
printf("GetAdaptersAddresses fehlgeschlagen mit Fehler: %lu\n", dwRetVal);
}
if (pAddresses) {
free(pAddresses);
}
return 0;
}
Zum Testen / Aufrufen von REST-API’s benötigt man am Besten einen Client, der nicht unbedingt im Webspace der selben Domain gehostet ist, da man Testen möchte ob die Cross-Origin Resource Policy (CORP) / Cross Site Policy korrekt konfiguriert ist.
Problem
Würde man einen Javascript-REST-Client im Web-Root / wwwroot / inetpub der selben Domain hosten, könnte dieser ohne Verletzung der Policy auf die REST-Services der selben Domain zugreifen. Würde man die Endpoints / Endpunkte an einen Konsumenten weitergeben, könnte dieser bei einer Fehlkonfiguration diese trotzdem nicht aufrufen.
Beispiel für einen Javascript-REST-Client, der durch den Response-Body ein JSON-Array iteriert (für Tests nicht empfohlen):
<button id="loadData">Get Rides</button>
<div id="rideData"></div>
<script>
async function fetchRideData() {
const response = await fetch("/Ride");
if (!response.ok) {
document.getElementById("rideData").innerText = "Fehler beim Laden der Daten.";
return;
}
const data = await response.json();
let html = "<ul>";
data.forEach(item => {
html += `<li>ID: ${item.id}, Datum: ${item.timestamp}, GPS Position: ${item.gpS_Position}, Kennzeichen: ${item.kennzeichen}</li>`;
});
html += "</ul>";
document.getElementById("rideData").innerHTML = html;
}
document.getElementById("loadData").addEventListener("click", fetchRideData);
</script>
Lösung
Die Extension „REST Client“ kann als autarker REST-Client, der nicht in der Domäne des Webspaces läuft, sondern lokal vom Rechner aus den Aufruf tätigt, genutzt werden:
Im Screenshot oben wurde die Extension „REST Client“ installiert und eine neue Datei mit dem Namen „restapi.http“ angelegt.
Die Datei hat den folgenden Inhalt (im Body wird ein JSON-Array übermittelt, dieses müsste dem Service entsprechend ersetzt werden):
REST API’s lassen sich am Besten mit einem REST-Client testen / aufrufen, der nicht auf dem Domain-Space läuft, auf dem die Endpunkte gehostet sind um CORP zu testen. Dies verhindert unangenehme Überraschungen zwischen der aufrufenden und aufzurufenden Seite.
Zum Verständnis ein kurzer Exkurs von 4 Überschriften …
In aktuellen und älteren Betriebssystemen befindet sich in den ersten 512 Byte von Sektor 0 der Master Boot Record. Der MBR endet immer an den letzten 2 Bytes mit 0x55 0xAA.
In modernen Betriebssystemen existiert dieser nur noch, damit ältere Betriebssysteme die Platte als beschriebene Partition erkennen und dann wird dieser als Schutz-MBR bezeichnet.
GPT ist der Nachfolger vom MBR. Alte Betriebssysteme booten über das BIOS den MBR. Moderne Betriebssysteme booten über UEFI den GPT.
UEFI (Unified Extensible Firmware Interface) hat das traditionelle BIOS (Basic Input/Output System) weitgehend ersetzt
Struktur des MBR
Bootloader-Code: Die ersten 446 Bytes enthalten den Bootloader-Code, der für das Starten des Betriebssystems verantwortlich ist.
Partitionstabelle: Die nächsten 64 Bytes enthalten die Partitionstabelle, die Informationen über die Partitionen auf dem Speichermedium enthält.
Signatur: Die letzten 2 Bytes (55 AA) sind die Boot-Signatur, die das Ende des MBR markiert und vom BIOS überprüft wird.
MBR (Master Boot Record)
Alter: MBR ist ein älteres Partitionsschema, das erstmals 1983 eingeführt wurde.
Größe: Der MBR belegt die ersten 512 Bytes eines Speichermediums.
Partitionen: Unterstützt bis zu vier primäre Partitionen oder drei primäre und eine erweiterte Partition.
Kapazität: Kann Festplatten bis zu 2 TB verwalten.
Boot-Prozess: Enthält den Bootloader-Code, der das Betriebssystem startet.
Schutz-MBR (Protective MBR)
Zweck: Wird auf GPT-formatierten Festplatten verwendet, um ältere Systeme daran zu hindern, die Festplatte als unpartitioniert zu erkennen.
Inhalt: Enthält eine einzige Partition, die den gesamten Speicherplatz des Mediums abdeckt.
Kompatibilität: Hilft bei der Kompatibilität mit älteren BIOS-Systemen.
GPT (GUID Partition Table)
Alter: GPT ist ein moderneres Partitionsschema, das mit UEFI eingeführt wurde.
Größe: GPT verwendet global eindeutige Bezeichner (GUIDs) für Partitionen.
Partitionen: Unterstützt eine nahezu unbegrenzte Anzahl von Partitionen.
Kapazität: Kann Festplatten größer als 2 TB verwalten.
Sicherheit: Bietet eine höhere Ausfallsicherheit durch redundante Kopien der Partitionstabelle.
Darstellung eines bootfähigen Speichermediums nach Andrew S. Tanenbaum
Linux
Unter Linux ist es mit dem Kommando dd möglich den MBR (Master Boot Record) eines Speichermediums anzeigen zu lassen, wenn man über Administratorrechte / Super-User-Rechte verfügt.
Dafür kann der Befehl genutzt werden: sudo dd if=/dev/sda bs=512 count=1 | hexdump -C
sudo: Super-Userrechte für den Befehl dd dd if=/dev/sda: Ausgabe der Datei, die im DEV-Ordner die erste Festplatte darstellt count=1: Nur einen Input-Block einlesen | hexdump -C: Ausgabe in Hexadezimal
Unter Windows kann man den kostenlosen HEX-Editor HxD benutzen um sich den MBR anzeigen zu lassen. Bei folgendem System handelt es sich nur noch um einen Schutz-MBR.
Ein Schutz-MBR (Protective MBR) wird verwendet, um sicherzustellen, dass ältere Programme und Betriebssysteme, die nur das traditionelle MBR-Partitionsschema kennen, ein Speichermedium nicht fälschlicherweise als leer oder uninitialisiert erkennen. Dies ist besonders wichtig bei der Verwendung der GUID-Partitionstabelle (GPT), die bei modernen Systemen und großen Festplatten üblich ist
Der Schutz-MBR enthält eine einzige Partition, die den gesamten Speicherplatz des Mediums abdeckt und so verhindert, dass ältere Systeme versuchen, das Medium neu zu partitionieren oder zu formatieren.
Nach der Installation von HxD kann man über Extras -> Datenträgerabbild öffnen die ersten 512 Bytes des primären Mediums anzeigen lassen.
Benutzerprofile --------------- Profil für alle Benutzer : Karpenstein2 Profil für alle Benutzer : karpenstein Profil für alle Benutzer : eduroam
Um das Wifi-Password für eines der aufgelisteten Profile zu sehen, geben folgendes ein:
C:\Users\karpbjde>netsh wlan show profile "Karpenstein2" key=clear
Das Profil "Karpenstein2" auf Schnittstelle Wi-Fi: =======================================================================
Angewendet: Profil für alle Benutzer
Profilinformationen ------------------- Version : 1 Typ : Drahtlos-LAN Name : Karpenstein2 Steuerungsoptionen : Verbindungsmodus : Automatisch verbinden Netzwerkübertragung : Verbinden, nur wenn dieses Netzwerk überträgt Automatisch wechseln : Nicht zu anderen Netzwerken wechseln. MAC-Randomisierung : Deaktiviert