OpenSCAD er det kraftigste verktøyet for ingeniører som vil skape 3D-modeller med presisjon og kontroll. I stedet for å dra og slippe geometri, skriver du kode som genererer eksakte, parametriske design som kan tilpasses i sanntid.
Hva du trenger
- OpenSCAD software (gratis nedlasting fra openscad.org)
- Teksteditor eller OpenSCAD’s innebygde editor
- 3D-printer for å teste design (finn utvalg hos RoboNordic)
- Grunnleggende programmeringskunnskap (valgfritt, men nyttig)
Hvorfor velge OpenSCAD?
Der tradisjonelle CAD-programmer bruker grafiske grensesnitt, bygger OpenSCAD modeller gjennom konstruktiv solid geometri (CSG). Dette gjør det ideelt for tekniske deler hvor presise mål og parametriske endringer er kritiske. Tenk deg å kunne endre alle dimensjoner på et komplekst design ved å justere noen få variabler øverst i koden.
OpenSCAD-syntaks: Grunnleggende struktur
OpenSCAD-kode følger en funksjonsbasert struktur hvor hver operasjon returnerer et geometrisk objekt. Her er den grunnleggende syntaksen:
// Kommentarer starter med //
parameter = verdi;
operasjon() {
geometri;
}
Alle kommandoer avsluttes med semikolon, og operasjoner som påvirker underliggende geometri bruker krøllparenteser.
Primitiver: Byggesteinene
OpenSCAD har seks grunnleggende 3D-primitiver som danner basis for alle modeller:
Kubiske former
cube([20, 10, 5]); // Boks med spesifiserte dimensjoner
cube(10); // Kube med alle sider = 10
cube([10, 10, 10], center=true); // Sentrert kube
Sylindriske former
cylinder(h=20, r=5); // Sylinder: høyde 20, radius 5
cylinder(h=15, r1=8, r2=3); // Konisk: ulik radius topp/bunn
sphere(r=10); // Kule med radius 10
Tips: Bruk
$fn=50øverst i koden for å øke oppløsningen på buede overflater. Høyere verdier gir jevnere kurver, men øker renderingstiden.
Transformasjoner: Flytte og manipulere geometri
Transformasjoner lar deg posisjonere, rotere og skalere geometri i rommet:
Posisjonering og orientering
translate([10, 5, 0]) // Flytt langs x, y, z-akser
cube(5);
rotate([0, 0, 45]) // Roter 45 grader rundt z-aksen
cube(10);
scale([2, 1, 0.5]) // Skaler ulike faktorer per akse
sphere(10);
Boolean-operasjoner
Disse operasjonene kombinerer geometri på kraftige måter:
union() { // Forening (standard hvis ikke spesifisert)
cube(10);
cylinder(h=15, r=3);
}
difference() { // Subtraksjon
cube(10);
cylinder(h=12, r=4);
}
intersection() { // Kun overlappende volum
cube(10);
sphere(8);
}
Moduler: Gjenbrukbare komponenter
Moduler er OpenSCADs måte å organisere og gjenbruke kode. De fungerer som funksjoner som genererer geometri:
module skrue(lengde=20, diameter=4, hode_diameter=8) {
union() {
cylinder(h=lengde, r=diameter/2); // Skruestamme
cylinder(h=2, r=hode_diameter/2); // Skruehode
}
}
// Bruk modulen
skrue(lengde=30, diameter=5);
skrue(lengde=15, diameter=3, hode_diameter=6);
Tips: Organiser komplekse prosjekter ved å dele moduler i separate filer og bruke
include <filnavn.scad>elleruse <filnavn.scad>for å importere dem.
Parametrisk design: Kraften i variabler
Det virkelige potensialet i OpenSCAD ligger i parametrisk design. Ved å definere alle kritiske mål som variabler, kan du raskt tilpasse design:
// Parametere for en teknisk boks
lengde = 50;
bredde = 30;
hoyde = 20;
vegg_tykkelse = 2;
skrue_diameter = 3;
skrue_avstand = 5;
module teknisk_boks() {
difference() {
// Ytre boks
cube([lengde, bredde, hoyde]);
// Indre hulrom
translate([vegg_tykkelse, vegg_tykkelse, vegg_tykkelse])
cube([lengde-2*vegg_tykkelse,
bredde-2*vegg_tykkelse,
hoyde]);
// Skruehull i hjørner
for(x = [skrue_avstand, lengde-skrue_avstand])
for(y = [skrue_avstand, bredde-skrue_avstand])
translate([x, y, -1])
cylinder(h=vegg_tykkelse+2, r=skrue_diameter/2);
}
}
teknisk_boks();
Tips: Bruk
for-løkker og matematiske funksjoner for å skape komplekse, repeterende mønstre. OpenSCAD støtter trigonometriske funksjoner, arrays og betingede uttrykk.
Avanserte teknikker
Linear og rotasjonell ekstrudering
Lag 3D-objekter fra 2D-profiler:
linear_extrude(height=10) // Trekk 2D-form oppover
circle(r=5);
rotate_extrude(angle=360) // Roter rundt z-aksen
translate([10, 0])
circle(r=2);
Minkowski-sum og hull()
Disse operasjonene gir avanserte geometriske muligheter:
minkowski() { // Avrund kanter
cube([10, 10, 1]);
sphere(r=2);
}
hull() { // Konveks form rundt objekter
translate([0, 0, 0]) sphere(r=3);
translate([10, 10, 10]) sphere(r=3);
}
Vanlige feil
- Glemte semikolon: Alle kommandoer må ende med semikolon. Manglende semikolon gir parseringsfeil.
- Z-fighting i boolean-operasjoner: Når flater ligger eksakt oppå hverandre, bruk små offset-verdier (±0.01) for å unngå renderingsproblemer.
- For høy oppløsning: Store
$fn-verdier gjør OpenSCAD treg. Start med $fn=20-50 under utvikling. - Non-manifold geometri: Sørg for at alle objekter har lukket, konsistent geometri. Bruk F12 (render) for å sjekke om modellen er gyldig for 3D-printing.
- Manglende parenteser i moduler: Selv moduler uten parametere trenger parenteser:
min_modul();ikkemin_modul;
Fra kode til fysisk objekt
Når modellen er klar, eksporter til STL-format (F6 for render, deretter File > Export > STL). Denne filen kan importeres direkte i slicer-software for 3D-printing. OpenSCADs parametriske tilnærming gjør det enkelt å justere dimensjoner basert på testutskrifter og toleransekrav.
OpenSCAD åpner en helt ny verden av presis, kodestyrt 3D-modellering. Med disse grunnleggende ferdighetene kan du skape alt fra enkle tekniske deler til komplekse, parametriske systemer som tilpasser seg automatisk til ulike krav.




