Community코딩 & 개발github.com

leewsimpson/claudesk

Fusion 360에서 저장소의 Python 스크립트를 기반으로 인클로저를 빌드하거나 재구축합니다. 인클로저 형상이나 매개변수를 변경하거나, 기능을 추가하거나, Fusion 모델이 누락되었거나 오래된 경우 사용합니다.

claudesk란 무엇인가요?

이 스킬은 Fusion 360의 MCP(MCP 서버)를 활용하여 Python 스크립트에서 인클로저 3D 모델을 자동으로 생성하고 재구축합니다. `scripts/` 디렉토리의 Python 스크립트가 진정한 소스이며, Fusion 문서는 일회성 렌더링에 불과하므로, 형상을 변경하려면 스크립트를 직접 수정하고 재빌드해야 합니다. ESP32-S3 보드의 STEP 파일을 가져와서 인클로저의 쉘과 캡을 생성하며, 격자(lattice) 기능을 포함한 복잡한 형상을 빠르게 모델링할 수 있습니다. Fusion GUI에서 수동으로 편집한 내용은 다음 빌드 시 사라지므로, 모든 설계 변경은 스크립트 기반으로 이루어져야 합니다. 또한 `fusion-inspect` 스킬과 연계하여 빌드 결과를 검증하고, 충돌 검사를 위한 고스트 바디(Ghost Body)를 지원합니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/leewsimpson/claudesk/tree/HEAD/3d-model/.claude/skills/fusion-build

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Fusion에서 인클로저 빌드

scripts/ 디렉토리의 스크립트가 진정한 소스입니다. Fusion 문서는 이 스크립트를 일회성으로 렌더링한 결과물입니다. 스크립트를 변경한 후 재빌드하세요. Fusion GUI에서 수동 편집한 내용은 다음 빌드 시 사라집니다.

단계

  1. Fusion 준비. 아래 러너를 빈 본문으로 실행합니다. 활성 디자인이 없으면 새로 만들고 boardmodel/ESP32-S3-Touch-AMOLED-1_75.stp를 루트에 단위 행렬로 가져옵니다(importManager.createSTEPImportOptions + importToTarget). 루트에 ESP32-S3-TOUCH-AMOLED-1_75_ASM:1 발생이 생기면 완료입니다.
  2. 편집. 매개변수는 scripts/enclosure.py 상단의 P 딕셔너리에 있으며, 이로부터 파생된 값은 derived()에 들어갑니다. 형상은 build_shell / build_cap / build_refs에 작성합니다. 헬퍼 함수는 scripts/wslib.py에 있습니다.
  3. 재빌드 러너로 실행합니다. build(overrides)는 빠른 실험을 위해 딕셔너리를 받습니다(예: {'lattice': False}). 격자 없이 재빌드하면 약 1초, v2 미세 니트 격자 포함 시 약 12초가 소요됩니다. 추적 없이 built in … 메시지가 출력되면 완료입니다.
  4. 검증 fusion-inspect 스킬을 사용합니다. 검사 항목이 PASS로 출력되고 스크린샷을 확인했을 때만 빌드가 완료된 것입니다.

러너 (MCP script로 붙여넣기)

import sys, importlib
REPO = r'C:\Github\claudesk\3d-model\scripts'  # 클론의 3d-model/scripts 절대 경로
if REPO not in sys.path: sys.path.insert(0, REPO)
import wslib, enclosure, checks
for m in (wslib, enclosure, checks): importlib.reload(m)

def run(_context: str):
    enclosure.build()          # 또는 enclosure.build({'sphere_d': 90})

Fusion의 Python은 실행 간 모듈을 캐시합니다. reload 줄을 항상 유지해야 편집 내용이 적용됩니다.

mcp__fusion__* 도구가 없을 때

MCP 서버가 세션 시작 시 연결에 실패한 경우(예: Fusion이 아직 실행되지 않은 경우), Fusion이 실행 중인지 확인하세요(netstat -ano | grep 27182로 LISTENING 확인). 그런 다음 사용자에게 /mcp로 재연결을 요청하거나, 러너를 파일로 저장하고 python scripts/fmcp.py script runner.py를 실행하여 엔드포인트를 직접 호출하세요. 스크린샷은 python scripts/fmcp.py shot out.png [direction]으로 가져옵니다.

규칙

  • mm 단위로 작업하며, wslib(P(), box(), cyl_y(), …)를 사용합니다. raw API 호출만 wslib.MM을 통해 Fusion의 cm 단위를 사용합니다.
  • 임시 B-Rep(wslib.tbm()과 union/cut/intersect 헬퍼)로 모델링한 후 add_bodies로 커밋합니다. 이 방법은 빠르고 타임라인이 필요 없으며, 파라메트릭 및 직접 설계 모두에서 작동합니다.
  • 각 빌드는 최상위 구성요소 Enclosure(Shell, Cap)와 Refs를 삭제하고 다시 생성합니다. Refs에는 CAD 파일이 없는 부품에 대한 고스트 바디(PlugGhost, SpeakerGhost)가 포함됩니다. 충돌 검사에만 사용되며 내보내지지 않습니다. 새로 구매한 부품이 맞춤에 중요할 때는 해당 고스트를 추가하세요.
  • 프레임: 가져온 보드 STEP 파일입니다. +Y가 보는 방향이며, 유리 전면은 y=2.78에 있고, USB-C 입구는 -X 방향을 향하며, 책상은 -Z 아래에 있고 base_tilt(30°)만큼 뒤로 기울어져 사용자에게 화면이 보이도록 합니다(derived()['down']).
  • 보드 정보는 STEP 파일 측정 결과에서 얻습니다. PDF에서 추측하지 말고 스크립트로 측정하여 CLAUDE.md에 기록하세요.
  • 예외는 전파되도록 두세요. 추적(traceback)이 MCP가 반환하는 유일한 실패 신호입니다.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

관련 스킬