Skip to content

Commit e6ef1b9

Browse files
authored
docs: add openscad element docs for website en/de
Agent-Logs-Url: https://github.com/openpatch/hyperbook/sessions/0a35bb49-7ef3-47ce-b6e2-4b318ff52522
1 parent fd9ef3f commit e6ef1b9

3 files changed

Lines changed: 247 additions & 0 deletions

File tree

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
---
2+
name: OpenSCAD
3+
permaid: openscad
4+
lang: de
5+
---
6+
7+
# OpenSCAD
8+
9+
Die `openscad`-Direktive bietet einen interaktiven OpenSCAD-Editor mit:
10+
11+
- einer **Code-Ansicht**,
12+
- einer **Parameter-Ansicht** (JSON-Objekt, das auf `-D`-Variablen gemappt wird),
13+
- und einer **3D-Vorschau**.
14+
15+
Sie können das Modell rendern, den Code kopieren und als **STL** oder **3MF** herunterladen.
16+
17+
## Verwendung
18+
19+
Packen Sie OpenSCAD-Code in einen `:::openscad`-Block und verwenden Sie einen `scad`- (oder `openscad`-) Codeblock.
20+
21+
````md
22+
:::openscad
23+
24+
```scad
25+
cube([20,20,20], center=true);
26+
```
27+
28+
:::
29+
````
30+
31+
:::openscad
32+
33+
```scad
34+
cube([20,20,20], center=true);
35+
```
36+
37+
:::
38+
39+
## Attribute
40+
41+
| Attribut | Beschreibung | Standard |
42+
|---|---|---|
43+
| `id` | Eindeutige ID für Persistenz | automatisch generiert |
44+
| `src` | Lädt Quellcode aus einem externen Dateipfad | eingebetteter Codeblock |
45+
| `height` | Höhe des Editor-/Vorschau-Containers | `calc(100dvh - 80px)` |
46+
47+
## Code aus Datei laden
48+
49+
````md
50+
:::openscad{src="openscad/example.scad"}
51+
:::
52+
````
53+
54+
## Parameter (JSON)
55+
56+
Öffnen Sie den Tab **Parameters** und geben Sie ein JSON-Objekt an. Jedes Schlüssel/Wert-Paar wird als `-Dname=value` an OpenSCAD übergeben.
57+
58+
Beispiel:
59+
60+
```json
61+
{
62+
"size": 24,
63+
"height": 16,
64+
"segments": 64,
65+
"rounded": true,
66+
"label": "A"
67+
}
68+
```
69+
70+
## Beispiel mit Variablen
71+
72+
````md
73+
:::openscad
74+
75+
```scad
76+
$fn = segments;
77+
78+
module body(size, height, rounded) {
79+
if (rounded) {
80+
minkowski() {
81+
cube([size, size, height], center=true);
82+
sphere(r=1);
83+
}
84+
} else {
85+
cube([size, size, height], center=true);
86+
}
87+
}
88+
89+
difference() {
90+
body(size, height, rounded);
91+
translate([0, 0, height / 2 + 0.1])
92+
linear_extrude(height=1)
93+
text(label, size=8, halign="center", valign="center");
94+
}
95+
```
96+
97+
:::
98+
````
99+
100+
:::openscad
101+
102+
```scad
103+
$fn = segments;
104+
105+
module body(size, height, rounded) {
106+
if (rounded) {
107+
minkowski() {
108+
cube([size, size, height], center=true);
109+
sphere(r=1);
110+
}
111+
} else {
112+
cube([size, size, height], center=true);
113+
}
114+
}
115+
116+
difference() {
117+
body(size, height, rounded);
118+
translate([0, 0, height / 2 + 0.1])
119+
linear_extrude(height=1)
120+
text(label, size=8, halign="center", valign="center");
121+
}
122+
```
123+
124+
:::
40.3 KB
Loading
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
---
2+
name: OpenSCAD
3+
permaid: openscad
4+
---
5+
6+
# OpenSCAD
7+
8+
The `openscad` directive provides an interactive OpenSCAD editor with:
9+
10+
- a **code view**,
11+
- a **parameter view** (JSON object mapped to `-D` variables),
12+
- and a **3D preview**.
13+
14+
You can render the model, copy the code, and download exports as **STL** or **3MF**.
15+
16+
## Usage
17+
18+
Wrap OpenSCAD code in a `:::openscad` block and use a `scad` (or `openscad`) code fence.
19+
20+
````md
21+
:::openscad
22+
23+
```scad
24+
cube([20,20,20], center=true);
25+
```
26+
27+
:::
28+
````
29+
30+
:::openscad
31+
32+
```scad
33+
cube([20,20,20], center=true);
34+
```
35+
36+
:::
37+
38+
## Attributes
39+
40+
| Attribute | Description | Default |
41+
|---|---|---|
42+
| `id` | Unique id for persistence | auto-generated |
43+
| `src` | Load source from an external file path | inline code block |
44+
| `height` | Height of the editor/preview container | `calc(100dvh - 80px)` |
45+
46+
## Load code from file
47+
48+
````md
49+
:::openscad{src="openscad/example.scad"}
50+
:::
51+
````
52+
53+
## Parameters (JSON)
54+
55+
Open the **Parameters** tab and provide a JSON object. Each key/value pair is passed to OpenSCAD as `-Dname=value`.
56+
57+
Example:
58+
59+
```json
60+
{
61+
"size": 24,
62+
"height": 16,
63+
"segments": 64,
64+
"rounded": true,
65+
"label": "A"
66+
}
67+
```
68+
69+
## Example with variables
70+
71+
````md
72+
:::openscad
73+
74+
```scad
75+
$fn = segments;
76+
77+
module body(size, height, rounded) {
78+
if (rounded) {
79+
minkowski() {
80+
cube([size, size, height], center=true);
81+
sphere(r=1);
82+
}
83+
} else {
84+
cube([size, size, height], center=true);
85+
}
86+
}
87+
88+
difference() {
89+
body(size, height, rounded);
90+
translate([0, 0, height / 2 + 0.1])
91+
linear_extrude(height=1)
92+
text(label, size=8, halign="center", valign="center");
93+
}
94+
```
95+
96+
:::
97+
````
98+
99+
:::openscad
100+
101+
```scad
102+
$fn = segments;
103+
104+
module body(size, height, rounded) {
105+
if (rounded) {
106+
minkowski() {
107+
cube([size, size, height], center=true);
108+
sphere(r=1);
109+
}
110+
} else {
111+
cube([size, size, height], center=true);
112+
}
113+
}
114+
115+
difference() {
116+
body(size, height, rounded);
117+
translate([0, 0, height / 2 + 0.1])
118+
linear_extrude(height=1)
119+
text(label, size=8, halign="center", valign="center");
120+
}
121+
```
122+
123+
:::

0 commit comments

Comments
 (0)