Construction du boîtier dans Fusion
Les scripts dans scripts/ sont la source de vérité. Le document Fusion n'est qu'un rendu jetable de ceux-ci. Modifiez le script et reconstruisez. Les modifications manuelles dans l'interface graphique de Fusion sont perdues lors de la construction suivante.
Étapes
- Fusion prêt. Exécutez le runner ci-dessous avec un corps vide. S'il n'y a pas de design actif, créez-en un et importez
boardmodel/ESP32-S3-Touch-AMOLED-1_75.stpdans la racine à l'identité (importManager.createSTEPImportOptions+importToTarget). Terminé lorsque la racine contient l'occurrenceESP32-S3-TOUCH-AMOLED-1_75_ASM:1. - Modifier. Les paramètres se trouvent dans le dictionnaire
Pen haut descripts/enclosure.py. Les valeurs dérivées sont dansderived(). La géométrie se trouve dansbuild_shell/build_cap/build_refs. Les helpers sont dansscripts/wslib.py. - Reconstruire avec le runner.
build(overrides)accepte un dictionnaire pour des expériences rapides, par ex.{'lattice': False}(une reconstruction sans treillis prend environ 1 s ; avec le treillis fin v2 environ 12 s). Terminé lorsqu'il affichebuilt in …sans traceback. - Vérifier à l'aide de la compétence
fusion-inspect. Une construction n'est terminée que lorsque les vérifications affichentPASSet que vous avez regardé une capture d'écran.
Runner (à coller comme script MCP)
import sys, importlib
REPO = r'C:\Github\claudesk\3d-model\scripts' # chemin absolu vers 3d-model/scripts dans votre clone
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() # ou enclosure.build({'sphere_d': 90})
Le Python de Fusion met en cache les modules entre les exécutions. Conservez toujours la ligne reload, sinon les modifications ne prendront pas effet.
Si les outils mcp__fusion__* sont manquants
Lorsque le serveur MCP n'a pas pu se connecter au démarrage de la session (par ex. Fusion n'était pas encore lancé), vérifiez que Fusion est en cours d'exécution (netstat -ano | grep 27182 affiche LISTENING). Demandez ensuite à l'utilisateur de se reconnecter avec /mcp, ou appelez directement le point de terminaison : enregistrez le runner dans un fichier et exécutez python scripts/fmcp.py script runner.py.
Pour une capture d'écran, exécutez python scripts/fmcp.py shot out.png [direction].
Conventions
- Travaillez en mm via
wslib(P(),box(),cyl_y(), …). Seuls les appels API bruts voient les cm de Fusion, viawslib.MM. - Modélisez avec B-Rep temporaire (
wslib.tbm()et les helpersunion/cut/intersect), puis validez avecadd_bodies. C'est rapide, ne nécessite pas de timeline, et fonctionne aussi bien en conception paramétrique qu'en conception directe. - Chaque construction supprime et recrée les composants de niveau supérieur
Enclosure(Shell, Cap) etRefs.Refscontient des corps fantômes (PlugGhost, SpeakerGhost) pour les pièces dont nous n'avons pas la CAO. Ils n'existent que pour les vérifications de collision et ne sont jamais exportés. Lorsqu'une nouvelle pièce achetée est importante pour l'ajustement, ajoutez un fantôme pour celle-ci. - Référentiel : le STEP de la carte tel qu'importé. +Y est la direction de visualisation, le verre avant est à y=2.78, l'embouchure USB-C fait face à -X, et le bureau se trouve sous -Z, incliné vers l'arrière de
base_tilt(30°) pour que l'écran soit orienté vers l'utilisateur (derived()['down']). - Les caractéristiques de la carte proviennent de la mesure du STEP. Mesurez avec un script et enregistrez-les dans
CLAUDE.mdplutôt que de les deviner à partir du PDF. - Laissez les exceptions se propager. La traceback est le seul signal d'échec renvoyé par le MCP.