From 8fa27003f92eb86d90f43336a35fbb5ba418cba1 Mon Sep 17 00:00:00 2001 From: TopProjectsCreator Date: Sat, 18 Apr 2026 15:15:02 -0700 Subject: [PATCH] Fix CAD editor toolbar and panel button interactions --- src/components/ide/CADEditor.tsx | 74 +++++++++++++++++++++++++------- 1 file changed, 59 insertions(+), 15 deletions(-) diff --git a/src/components/ide/CADEditor.tsx b/src/components/ide/CADEditor.tsx index 3f49e428..9a012ebf 100644 --- a/src/components/ide/CADEditor.tsx +++ b/src/components/ide/CADEditor.tsx @@ -1,5 +1,5 @@ -import { useState, useRef, useCallback, Suspense, useMemo } from 'react'; -import { Canvas, useFrame, useThree } from '@react-three/fiber'; +import { useState, useRef, Suspense, useMemo } from 'react'; +import { Canvas, useFrame } from '@react-three/fiber'; import { OrbitControls, Grid, GizmoHelper, GizmoViewport, Center, Html } from '@react-three/drei'; import * as THREE from 'three'; import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js'; @@ -417,6 +417,8 @@ export const CADEditor = ({ file, onContentChange }: CADEditorProps) => { const { hasCustomKey } = useApiKeys(); const [activeQuickTool, setActiveQuickTool] = useState(null); + const [leftPanelOpen, setLeftPanelOpen] = useState(true); + const [rightPanelOpen, setRightPanelOpen] = useState(true); const PROVIDERS_3D = [ { id: 'meshy', label: 'Meshy AI', desc: 'Preview + refine workflow' }, @@ -622,6 +624,34 @@ export const CADEditor = ({ file, onContentChange }: CADEditorProps) => { { label: 'Measure', icon: }, ]; + const runQuickTool = (tool: string) => { + const togglingOff = activeQuickTool === tool; + setActiveQuickTool(togglingOff ? null : tool); + + switch (tool) { + case 'Sketch': + setShowGrid((prev) => togglingOff ? false : !prev); + return; + case 'Extrude': + handleSelectPrimitive('cube'); + return; + case 'Revolve': + handleSelectPrimitive('torus'); + return; + case 'Loft': + handleSelectPrimitive('cone'); + return; + case 'Boolean': + setWireframe(w => !w); + return; + case 'Measure': + setShowInfo((prev) => togglingOff ? false : !prev); + return; + default: + return; + } + }; + return (
@@ -638,15 +668,7 @@ export const CADEditor = ({ file, onContentChange }: CADEditorProps) => { variant="ghost" size="sm" className={cn("h-7 text-xs hover:text-white hover:bg-white/10 gap-1.5 px-2", activeQuickTool === tool.label ? "text-primary bg-white/10" : "text-white/80")} - onClick={() => { - setActiveQuickTool(tool.label); - if (tool.label === 'Sketch') setShowGrid(true); - if (tool.label === 'Extrude') handleSelectPrimitive('cube'); - if (tool.label === 'Revolve') handleSelectPrimitive('torus'); - if (tool.label === 'Loft') handleSelectPrimitive('cone'); - if (tool.label === 'Boolean') setWireframe(w => !w); - if (tool.label === 'Measure') setShowInfo(true); - }} + onClick={() => runQuickTool(tool.label)} > {tool.icon} {tool.label} @@ -654,6 +676,28 @@ export const CADEditor = ({ file, onContentChange }: CADEditorProps) => { ))}
+ + + Toggle Feature Panel + + + + Toggle Properties Panel +
- }
{showInfo && displayGeometry && ( @@ -845,7 +889,7 @@ export const CADEditor = ({ file, onContentChange }: CADEditorProps) => {
- }