Skip to content

Commit e942547

Browse files
committed
viewer now correctly positions model the same as in openscad.
1 parent f3aea0f commit e942547

File tree

9 files changed

+93
-21
lines changed

9 files changed

+93
-21
lines changed

.vscode/settings.json

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,13 @@
1515
"tsconfig.json": "tsconfig.*.json",
1616
"package.json": "package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lockb, bun.lock"
1717
},
18-
"editor.snippets.codeActions.enabled": false,
19-
"typescript.tsdk": "node_modules/typescript/lib"
18+
"typescript.tsdk": "node_modules/typescript/lib",
19+
"files.exclude": {
20+
"**/.git": true,
21+
"**/.svn": true,
22+
"**/.hg": true,
23+
"**/.DS_Store": true,
24+
"**/Thumbs.db": true,
25+
"**/node_modules": false
26+
}
2027
}

src/assets/scad.collection.njk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<!doctype html>
2-
<html lang="en">
2+
<html lang="fr">
33
<head>
44
<title>{{ title }}</title>
55
{% w3_theme theme %}

src/assets/scad.viewer.njk

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@
111111
112112
const loader = new STLLoader();
113113
const container = document.getElementById("viewer");
114+
const deg2rad = (degrees) => (degrees * (Math.PI / 180));
114115
115116
let renderer,
116117
camera,
@@ -184,6 +185,7 @@
184185
geometry.translate(center.x, center.y, center.z);
185186
186187
const mesh = new THREE.Mesh(geometry, material);
188+
mesh.rotateX(deg2rad(-90));
187189
188190
scene.add(mesh);
189191
});
@@ -211,6 +213,7 @@
211213
function setupGUI(initialState) {
212214
const {lightPos, cameraPos} = initialState;
213215
const gui = new GUI();
216+
214217
gui.onChange((event) => {
215218
console.log(gui.save());
216219
});
@@ -238,29 +241,29 @@
238241
cameraFolder.add(cameraPos, "x", -90, 90, 1);
239242
cameraFolder.add(cameraPos, "y", -90, 90, 1);
240243
cameraFolder.add(cameraPos, "z", -90, 90, 1);
241-
cameraFolder.add(cameraPos, "zoom", 1, 20, 0.5);
244+
cameraFolder.add(cameraPos, "zoom", -10, 10, 1);
242245
}
243246
244247
function init() {
245248
const initialState = {
246249
lightPos: {
247250
x: 20,
248251
y: 50,
249-
z: 100
252+
z: 200
250253
},
251254
cameraPos: {
252-
x: 30,
253-
y: 30,
254-
z: 30,
255+
x: 45,
256+
y: 45,
257+
z: 45,
255258
zoom: 1
256259
}
257260
};
258261
setupRenderer();
259262
setupScene(initialState.lightPos);
260263
setupCameraAndControls(initialState.cameraPos);
261-
setupResizeHandler();
262264
setupGUI(initialState);
263265
loadSTL(window.STL_URL); // STL_URL is defined in the <head>
266+
setupResizeHandler();
264267
animate();
265268
}
266269

src/plugin.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,4 @@ export function EleventyPluginOpenSCAD(
6969
addShortcodes(eleventyConfig, { theme });
7070
addScadPluginTemplates(eleventyConfig, parsedOptions.data);
7171
addScadExtensionHandler(eleventyConfig, parsedOptions.data);
72-
73-
eleventyConfig.on("eleventy.beforeWatch", (eleventyConfig) => {
74-
console.log(eleventyConfig);
75-
});
76-
// addScad2PngTransformer(eleventyConfig, launchPath);
7772
}

test/_11ty/input/cubes/cube1.scad

Lines changed: 0 additions & 1 deletion
This file was deleted.

test/_11ty/input/cubes/cube2.scad

Lines changed: 0 additions & 1 deletion
This file was deleted.

test/_11ty/input/cubes/cubes.scad

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
for (x = [-100:1:100]) {
2+
off_z = sin(x * 2) * x;
3+
off_y = cos(x * 2) * x;
4+
size = abs(x / 4) + .2;
5+
6+
translate([x, off_y, off_z]) {
7+
cube(size, center = true);
8+
}
9+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
// cube_xyz_all_faces_engraved.scad
2+
// Engraved (cut-in) letters on every face:
3+
// ±X => X, ±Y => Y, ±Z => Z
4+
//
5+
// NOTE: Use Render (F6) before exporting STL; boolean text cuts often won't show correctly in Preview (F5).
6+
7+
$fn = 64;
8+
9+
cube_size = 30; // mm
10+
text_size = 14; // font size
11+
engrave = 1.5; // mm cut depth
12+
font_name = "Liberation Sans:style=Bold";
13+
14+
module text_solid(ch) {
15+
// A 3D solid that extrudes in +Z (local coords)
16+
translate([0,0,.1]) {
17+
linear_extrude(height = engrave) {
18+
text(ch, size = text_size, font = font_name, halign="center", valign="center");
19+
}
20+
}
21+
}
22+
23+
module cut_on_face(face) {
24+
// Places the extruded text fully INSIDE the cube, flush to the chosen face.
25+
// Because the solid is inside the cube, difference() reliably engraves it.
26+
27+
if (face == "+Z") {
28+
translate([0,0, cube_size/2 - engrave])
29+
text_solid(face);
30+
} else if (face == "-Z") {
31+
translate([0,0, -cube_size/2 + engrave])
32+
rotate([180,0,0]) text_solid(face);
33+
} else if (face == "+Y") {
34+
translate([0, cube_size/2 - engrave, 0])
35+
rotate([-90,0,0]) text_solid(face); // +Z -> +Y
36+
} else if (face == "-Y") {
37+
translate([0, -cube_size/2 + engrave, 0])
38+
rotate([90,0,0]) text_solid(face); // +Z -> -Y
39+
} else if (face == "+X") {
40+
translate([cube_size/2 - engrave, 0, 0])
41+
rotate([0,90,0]) text_solid(face); // +Z -> +X
42+
} else if (face == "-X") {
43+
translate([-cube_size/2 + engrave, 0, 0])
44+
rotate([0,-90,0]) text_solid(face); // +Z -> -X
45+
}
46+
}
47+
48+
difference() {
49+
cube([cube_size, cube_size, cube_size], center=true);
50+
51+
cut_on_face("+X");
52+
cut_on_face("-X");
53+
54+
cut_on_face("+Y");
55+
cut_on_face("-Y");
56+
57+
cut_on_face("+Z");
58+
cut_on_face("-Z");
59+
}

test/_11ty/test.eleventy-config.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,17 @@ import { addOpenSCADPlugin } from "../../dist/index.js";
77
* @param {import("@11ty/eleventy/UserConfig").default} eleventyConfig
88
*/
99
export default function (eleventyConfig) {
10+
eleventyConfig.setQuietMode(false);
1011
eleventyConfig.setInputDirectory("input");
1112
eleventyConfig.setOutputDirectory("output");
12-
eleventyConfig.setWatchJavaScriptDependencies("../../dist/**/*");
13-
eleventyConfig.setQuietMode(false);
13+
eleventyConfig.addWatchTarget("../../dist/assets/**");
14+
eleventyConfig.setServerOptions({ watch: ["../../dist/assets/**"] });
1415

1516
addOpenSCADPlugin(eleventyConfig, {
17+
collectionPageTitle: "Dev Collection",
18+
thumbnailColorScheme: "BeforeDawn",
1619
launchPath: "docker",
17-
verbose: true,
18-
collectionPageTitle: "Custom Title",
19-
thumbnailColorScheme: "BeforeDawn"
20+
// verbose: true,
2021
// noSTL: true,
2122
});
2223
}

0 commit comments

Comments
 (0)