Construcción del gabinete en Fusion
Los scripts en scripts/ son la fuente de verdad. El documento de Fusion es una representación desechable de ellos. Cambia el script y reconstruye. Las ediciones manuales en la GUI de Fusion se pierden en la siguiente construcción.
Pasos
- Fusion listo. Ejecuta el runner a continuación con un cuerpo vacío. Si no hay un diseño activo, crea uno e importa
boardmodel/ESP32-S3-Touch-AMOLED-1_75.stpen la raíz con identidad (importManager.createSTEPImportOptions+importToTarget). Listo cuando la raíz tenga la ocurrenciaESP32-S3-TOUCH-AMOLED-1_75_ASM:1. - Editar. Los parámetros están en el diccionario
Pal principio descripts/enclosure.py. Los valores derivados de ellos van enderived(). La geometría va enbuild_shell/build_cap/build_refs. Las funciones auxiliares van enscripts/wslib.py. - Reconstruir con el runner.
build(overrides)acepta un diccionario para experimentos rápidos, por ejemplo{'lattice': False}(una reconstrucción sin la celosía toma aproximadamente 1 s; con la malla fina v2 aproximadamente 12 s). Listo cuando imprimebuilt in …sin traceback. - Verificar usando el skill
fusion-inspect. Una construcción solo está completa cuando las comprobaciones imprimenPASSy has visto una captura de pantalla.
Runner (pegar como el script del MCP)
import sys, importlib
REPO = r'C:\Github\claudesk\3d-model\scripts' # ruta absoluta a 3d-model/scripts en tu clon
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() # o enclosure.build({'sphere_d': 90})
El Python de Fusion almacena en caché los módulos entre ejecuciones. Mantén siempre la línea reload, o los cambios no se aplicarán.
Si faltan las herramientas mcp__fusion__*
Cuando el servidor MCP no pudo conectarse al inicio de la sesión (por ejemplo, Fusion no estaba funcionando aún), verifica que Fusion esté activo
(netstat -ano | grep 27182 muestra LISTENING). Luego, pide al usuario que se reconecte con /mcp, o llama al endpoint
directamente: guarda el runner en un archivo y ejecuta python scripts/fmcp.py script runner.py.
Para una captura de pantalla, ejecuta python scripts/fmcp.py shot out.png [direction].
Convenciones
- Trabaja en mm a través de
wslib(P(),box(),cyl_y(), …). Solo las llamadas directas a la API ven los cm de Fusion, a través dewslib.MM. - Modela con B-Rep temporal (
wslib.tbm()y las funciones auxiliaresunion/cut/intersect), luego confirma conadd_bodies. Esto es rápido, no requiere línea de tiempo y funciona tanto en diseños paramétricos como directos. - Cada construcción elimina y recrea los componentes de nivel superior
Enclosure(Shell, Cap) yRefs.Refscontiene cuerpos fantasma (PlugGhost, SpeakerGhost) para piezas de las que no tenemos CAD. Solo existen para comprobaciones de interferencia y nunca se exportan. Cuando una pieza comprada nueva afecta al ajuste, añade un fantasma para ella. - Marco: el STEP de la placa tal como se importó. +Y es la dirección de visualización, el frente de vidrio está en y=2.78, la boca USB-C mira hacia -X, y el escritorio está debajo de -Z, inclinado hacia atrás por
base_tilt(30°) para que la pantalla mire hacia arriba al usuario (derived()['down']). - Los datos de la placa provienen de medir el STEP. Mide con un script y regístralos en
CLAUDE.mden lugar de adivinarlos desde el PDF. - Deja que las excepciones se propaguen. El traceback es la única señal de fallo que devuelve el MCP.