diff --git a/packages/replicad/src/sketches/Sketch.ts b/packages/replicad/src/sketches/Sketch.ts
index b60db30..c9a874f 100644
--- a/packages/replicad/src/sketches/Sketch.ts
+++ b/packages/replicad/src/sketches/Sketch.ts
@@ -258,3 +258,15 @@ export default class Sketch implements SketchInterface {
return shape;
}
}
+
+const thread = simpleThread({
+ innerRadius: 44.65,
+ pitch: 1.7,
+ threadHeight: 6.2,
+ toothSide: 0.8,
+});
+
+const top = R.makeCylinder(44.65, 7)
+ .cut(R.makeCylinder(44.65 - 1.6, 10))
+ .rotate(2)
+ .fuse(thread.clone(), { optimisation: "sameFace" });
diff --git a/packages/studio/src/LinkWidget.jsx b/packages/studio/src/LinkWidget.jsx
index a1126ff..7b33771 100644
--- a/packages/studio/src/LinkWidget.jsx
+++ b/packages/studio/src/LinkWidget.jsx
@@ -199,6 +199,9 @@ export default function LinkWidget() {
searchParams.get("disable-auto-position")?.toLowerCase() === "true"
}
hideGrid={searchParams.get("hide-grid")?.toLowerCase() === "true"}
+ orthographicCamera={
+ searchParams.get("ortho-camera")?.toLowerCase() === "true"
+ }
disableDamping={
searchParams.get("disable-damping")?.toLowerCase() === "true"
}
diff --git a/packages/studio/src/components/LinkEditor.jsx b/packages/studio/src/components/LinkEditor.jsx
index fb6775d..8322de1 100644
--- a/packages/studio/src/components/LinkEditor.jsx
+++ b/packages/studio/src/components/LinkEditor.jsx
@@ -52,6 +52,7 @@ export function LinkEditor({ fromCode }) {
const [disableAutoPosition, setDisableAutoPosition] = useState(false);
const [disableDamping, setDisableDamping] = useState(false);
const [hideGrid, setHideGrid] = useState(false);
+ const [orthographicCamera, setOrthographicCamera] = useState(true);
const [expandParametersPanel, setExpandParametersPanel] = useState(false);
const [compressedCode, setCompressedCode] = useState(null);
@@ -87,6 +88,7 @@ export function LinkEditor({ fromCode }) {
url.searchParams.set("disable-auto-position", "true");
disableDamping && url.searchParams.set("disable-damping", "true");
hideGrid && url.searchParams.set("hide-grid", "true");
+ orthographicCamera && url.searchParams.set("ortho-camera", "true");
expandParametersPanel && url.searchParams.set("params", "true");
link = url.toString();
}
@@ -157,6 +159,15 @@ export function LinkEditor({ fromCode }) {
/>
+
+ setOrthographicCamera(!e.target.checked)}
+ />
+
+
{
export default React.memo(function NicePresentationViewer({
shapes,
+ orthographicCamera,
disableAutoPosition,
}) {
return (
-