Skip to content

Commit

Permalink
Add support for orthographic option when sharing
Browse files Browse the repository at this point in the history
  • Loading branch information
sgenoud committed Apr 4, 2024
1 parent 9111b6e commit 3197a51
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 2 deletions.
12 changes: 12 additions & 0 deletions packages/replicad/src/sketches/Sketch.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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" });
3 changes: 3 additions & 0 deletions packages/studio/src/LinkWidget.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
Expand Down
11 changes: 11 additions & 0 deletions packages/studio/src/components/LinkEditor.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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();
}
Expand Down Expand Up @@ -157,6 +159,15 @@ export function LinkEditor({ fromCode }) {
/>
<label htmlFor="hide-grid">Grid</label>
</span>
<span>
<input
id="ortho-camera"
type="checkbox"
checked={!orthographicCamera}
onChange={(e) => setOrthographicCamera(!e.target.checked)}
/>
<label htmlFor="ortho-camera">Perspective Camera</label>
</span>
<span>
<input
id="expand-params"
Expand Down
2 changes: 2 additions & 0 deletions packages/studio/src/components/StandardUI.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ export default function StandardUI({
disableAutoPosition,
disableDamping,
showParams,
orthographicCamera,
hideGrid,
onSave,
canSave,
Expand All @@ -100,6 +101,7 @@ export default function StandardUI({
{computedShapes?.length ? (
<Viewer
shapes={computedShapes}
orthographicCamera={orthographicCamera}
hideGrid={hideGrid}
disableDamping={disableDamping}
disableAutoPosition={disableAutoPosition}
Expand Down
3 changes: 2 additions & 1 deletion packages/studio/src/viewers/NicePresentationViewer.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,11 @@ const PrettyMaterial = ({ ...props }) => {

export default React.memo(function NicePresentationViewer({
shapes,
orthographicCamera,
disableAutoPosition,
}) {
return (
<Canvas>
<Canvas orthographic={orthographicCamera}>
<directionalLight intensity={0.7} position={[-1, 0.1, 1]} castShadow />
<directionalLight
intensity={0.1}
Expand Down
3 changes: 2 additions & 1 deletion packages/studio/src/viewers/PresentationViewer.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,12 @@ export default React.memo(function PresentationViewer({
disableAutoPosition = false,
disableDamping = false,
hideGrid = false,
orthographicCamera = false,
}) {
const geometryReady = shapes && shapes.length && shapes[0].name;

return (
<Canvas>
<Canvas orthographic={orthographicCamera}>
{!hideGrid && <InfiniteGrid />}
<Controls hideGizmo={!geometryReady} enableDamping={!disableDamping}>
{shapes !== "error" && shapes.length && (
Expand Down

0 comments on commit 3197a51

Please sign in to comment.