From 3197a514cb9fa1e6ff6b355f5193dafd109ed7c4 Mon Sep 17 00:00:00 2001 From: Steve Genoud Date: Thu, 4 Apr 2024 16:35:37 +0200 Subject: [PATCH] Add support for orthographic option when sharing --- packages/replicad/src/sketches/Sketch.ts | 12 ++++++++++++ packages/studio/src/LinkWidget.jsx | 3 +++ packages/studio/src/components/LinkEditor.jsx | 11 +++++++++++ packages/studio/src/components/StandardUI.jsx | 2 ++ .../studio/src/viewers/NicePresentationViewer.jsx | 3 ++- packages/studio/src/viewers/PresentationViewer.jsx | 3 ++- 6 files changed, 32 insertions(+), 2 deletions(-) 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 ( - + + {!hideGrid && } {shapes !== "error" && shapes.length && (