CommunityCodierung & Entwicklunggithub.com

leewsimpson/claudesk

Überprüfen des Gehäuses in Fusion 360 mit Kollisionskontrollen, Abstandskontrollen, Schnittansichten und Screenshots. Nach jedem Bau, bei Passungs- oder Abstandskontrollen oder wenn das Modell gezeigt oder gescreenshotet werden soll.

Was ist claudesk?

Diese Fertigkeit führt eine visuelle und rechnerische Inspektion eines 3D-gedruckten Gehäuses in Fusion 360 durch. Sie eignet sich für Entwickler, die mit KI-Agenten wie Claude Code (mit MCP) arbeiten, um nach jedem Bau oder bei Änderungen die Passung und Kollisionsfreiheit automatisch zu prüfen. Der Standarddurchlauf startet `checks.run_checks()` zur Erkennung von Kollisionen (Clash) und Abständen (MinDistance), gefolgt von einer benutzerdefinierten Kameraperspektive und einem Schnitt, die als Screenshot festgehalten werden. Dabei wird eine spezielle Bibliothek `wslib` genutzt, die Fusion-APIs kapselt und effizient arbeitet (z. B. Bounding-Box-Vorfilter für Clash-Erkennung, `pointContainment` statt Rasterscan). Die Fertigkeit erklärt auch, wie Geisterkörper ausgeblendet werden, um falsche visuelle Eindrücke zu vermeiden, und wie dauerhafte Anforderungen (z. B. neue Bauteile oder Kabelführungen) dem Prüfplan hinzugefügt werden. Sie unterstützt die Plattformen Fusion 360 (über das Skriptmodul `fmcp.py`) und MCP (für Screenshots und native Ausführung).

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/leewsimpson/claudesk/tree/HEAD/3d-model/.claude/skills/fusion-inspect

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Inspektion des Gehäuses

Standarddurchlauf (nach jedem Bau)

  1. Prüfungen. Führe checks.run_checks() mit dem Runner fusion-build aus. Dies dauert 3–8 Minuten mit dem v2-Feinstgitter, länger als das Timeout des MCP-Tools. Führe daher den Bau allein über den MCP aus und führe die Prüfungen dann als separate Runner-Datei mit python scripts/fmcp.py script <datei> als Hintergrund-Bash-Task aus (es hat ein 900 s Timeout). Wenn du den MCP aufrufst, während die Prüfungen noch laufen, tritt ein Timeout auf. Warte also, bis sie abgeschlossen sind. Skripte werden im UI-Thread von Fusion ausgeführt. Ein aufgerufener Aufruf mit Timeout bleibt aktiv, und spätere Aufrufe werden dahinter in die Warteschlange gestellt. Am 2026-10-04 hing Fusion bei pointContainment-Scans in 0,01-mm-Schritten fest, bis es beendet werden musste. Scanne ein paar ausgewählte Punkte anstelle eines Rasterscans und füge adsk.doEvents() in langen Schleifen ein (in wslib.clashes und dem Gitterschnitt ist dies bereits der Fall). Es wird auf Kollisionen zwischen dem Gehäuse und jedem Platinenkörper sowie den Geistern, Schale vs. Deckel, dem gefrorenen, gedruckten Schalenvolumen und dann den benannten Abständen in checks.GAPS geprüft. Konstruktionsbedingte Überschneidungen (die Stifte, die in die Abstandshalter greifen) sind in checks.EXPECTED aufgeführt und werden als expected ausgegeben. Abschluss, wenn checks PASS ausgegeben wird. Bei CLASH/TIGHT die Geometrie korrigieren und neu bauen. Lockere eine Abstandsgrenze nur, wenn der Benutzer zustimmt.
  2. Ansehen. Nimm mindestens eine Außenansicht und einen Schnitt auf:
    • Außenansicht: wslib.view(eye=(-90, 160, 60), target=(0, -20, 0), up=(0, 0, 1)), dann die MCP-Abfrage screenshot mit direction: "current", 1000×900.
    • Schnitt: wslib.section('XY') (schneidet bei z=0 durch den USB-Stecker) oder 'YZ', dann wslib.view(eye=(0, -20, 300), target=(0, -20, 0)). Führe danach wslib.clear_sections() aus.
    • Rückseite/Deckel: wslib.view(eye=(80, -200, 50), target=(0, -20, 0), up=(0, 0, 1)). Abschluss, wenn du den Screenshot mit target/ und der Absicht der Änderung verglichen hast.

Werkzeuge in wslib

  • bodies_of(top_component_name): Körper im Stammkontext unter Enclosure, Refs oder der Platine ESP32-S3-TOUCH-AMOLED-1_75_ASM.
  • clashes(A, B): Überlappungsvolumen in mm³. Verwendet einen Bounding-Box-Vorfilter plus temporäre BRep-Überschneidung. Fusions analyzeInterference gibt bei großen Körpergruppen stillschweigend None zurück – daher nicht verwenden.
  • min_distance(a, b): Abstand in mm. bbox_mm(entity).
  • set_visible('Refs', False): Blendet die Geister für saubere Screenshots aus. Blende sie immer aus, bevor du beurteilst, ob eine Öffnung frei ist. Fusion zeichnet die Geister mit 40% Deckkraft über undurchsichtige Flächen, und in der Perspektive sieht ein Geist, der in einer Bohrung sitzt (z. B. UsbBarrelGhost), verschoben aus, als ob er das Loch blockieren würde. Um eine Bohrung zu prüfen, schaue mit einer orthografischen Kamera direkt entlang ihrer Achse oder teste Punkte mit body.pointContainment.

Um ein Merkmal zu inspizieren, das nicht auf einer Ursprungsebene liegt (z. B. die Schnappfinger bei 45°), füge mit constructionPlanes.createInput().setByAngle(root.yConstructionAxis, '<winkel> deg', root.xYConstructionPlane) eine temporäre Konstruktionsebene hinzu, führe darauf einen Schnitt durch, zoome mit camera.setExtents(w_cm, h_cm) und lösche dann die Ebene und den Schnitt.

Um eine dauerhafte Abstandsanforderung hinzuzufügen (ein neues gekauftes Teil, ein Kabelweg), füge einen Geist in enclosure.build_refs und eine Zeile in checks.GAPS hinzu, sodass jeder spätere Bau diese überprüft.

Individual skills in this repo

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

Verwandte Skills