Inspection du boîtier
Passage standard (après chaque construction)
- Contrôles. Exécutez
checks.run_checks()avec le runnerfusion-build. Cela prend 3 à 8 minutes avec le treillis fin v2, ce qui dépasse le délai d'attente de l'outil MCP. Exécutez donc la construction seule via le MCP, puis exécutez les contrôles comme un fichier runner séparé avecpython scripts/fmcp.py script <file>en tant que tâche Bash d'arrière-plan (avec un délai de 900 s). Si vous appelez le MCP alors que les contrôles sont encore en cours, il y a juste un dépassement de délai, alors attendez qu'ils se terminent. Les scripts s'exécutent sur le thread UI de Fusion. Un appel qui a expiré continue de s'exécuter et les appels ultérieurs s'empilent derrière lui. Le 2026-10-04,pointContainmentanalysant par pas de 0,01 mm a bloqué Fusion jusqu'à ce qu'il doive être tué. Sondez quelques points choisis au lieu d'analyser, et mettezadsk.doEvents()dans les boucles longues (wslib.clasheset la découpe du treillis le font déjà). Cela vérifie les interférences entre l'enceinte et chaque corps de carte plus les fantômes, la coque vs le capuchon, le volume gelé de la coque imprimée, puis les jeux nommés danschecks.GAPS. Les interférences conçues (les broches saisissant les entretoises) sont listées danschecks.EXPECTEDet s'affichent commeexpected. Terminé lorsqu'il affichechecks PASS. En cas deCLASH/TIGHT, corrigez la géométrie et reconstruisez. Relâchez une limite de jeu uniquement lorsque l'utilisateur est d'accord. - Regarder. Prenez au moins une vue extérieure et une coupe :
- Extérieur :
wslib.view(eye=(-90, 160, 60), target=(0, -20, 0), up=(0, 0, 1)), puis la requête descreenshotMCP avecdirection: "current", 1000×900. - Coupe :
wslib.section('XY')(coupe à z=0 à travers la fiche USB) ou'YZ', puiswslib.view(eye=(0, -20, 300), target=(0, -20, 0)). Appelezwslib.clear_sections()ensuite. - Arrière/capuchon :
wslib.view(eye=(80, -200, 50), target=(0, -20, 0), up=(0, 0, 1)). Terminé lorsque vous avez comparé la capture d'écran avectarget/et l'intention du changement.
- Extérieur :
Outils dans wslib
bodies_of(top_component_name): corps du contexte racine sousEnclosure,Refsou la carteESP32-S3-TOUCH-AMOLED-1_75_ASM.clashes(A, B): volumes de chevauchement en mm³. Utilise un préfiltre par boîte englobante plus une intersection BRep temporaire. La fonctionanalyzeInterferencede Fusion renvoie silencieusementNonesur de grands ensembles de corps, alors ne l'utilisez pas.min_distance(a, b): jeu en mm.bbox_mm(entity).set_visible('Refs', False)cache les fantômes pour des captures d'écran propres. Cachez-les toujours avant de juger si une ouverture est dégagée. Fusion dessine les fantômes à 40 % d'opacité sur les faces opaques, et en perspective, un fantôme situé dans un alésage (par exempleUsbBarrelGhost) semble décalé et comme s'il bloquait le trou. Pour vérifier un alésage, regardez droit le long de son axe avec une caméra orthographique, ou testez des points avecbody.pointContainment.
Pour inspecter une fonctionnalité qui n'est pas sur un plan d'origine (par exemple les doigts d'encliquetage à 45°), ajoutez un plan de construction
temporaire avec constructionPlanes.createInput().setByAngle(root.yConstructionAxis, '<angle> deg', root.xYConstructionPlane),
coupez dessus, zoomez avec camera.setExtents(w_cm, h_cm), puis supprimez le plan et la coupe.
Pour ajouter une exigence de dégagement permanent (une nouvelle pièce achetée, un chemin de câble), ajoutez un fantôme dans enclosure.build_refs
et une ligne dans checks.GAPS, afin que chaque construction ultérieure la vérifie.