CommunityImagengithub.com

ezylevy/3d-stl

Dos puntos de entrada, un estándar de salida: un STL hermético, un script paramétrico y una tabla de corte para impresión exitosa.

¿Qué es 3d-stl?

Este skill ofrece dos rutas para generar modelos 3D listos para impresión: la ruta geométrica, que crea modelos a partir de descripciones textuales o bocetos usando trimesh, shapely y manifold3d; y la ruta de imagen, que convierte fotografías o imágenes en campos de altura para litofanías o relieves con solo Pillow y numpy. La salida siempre es un archivo STL hermético acompañado de un script paramétrico con argparse, permitiendo regenerar variantes con un solo comando. Es compatible con Claude Code y plataformas que ejecuten Python 3, y garantiza que el modelo sea válido para el slicer mediante verificaciones de estanqueidad y orientación de caras. Incluye bibliotecas de funciones como `partlib.py` e `imagelib.py`, ejemplos completos, y una tabla de diseño que cubre desde tolerancias hasta orientación en la cama de impresión.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ezylevy/ezy-plugins/tree/HEAD/plugins/3d-stl/skills/3d-stl

Installed? Explore more Imagen skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

3D STL

Dos puntos de entrada, un estándar de salida: un STL hermético, un script paramétrico que lo regenera y una tabla de corte que hace que la impresión sea exitosa.

EntradaRutaBiblioteca
Dimensiones, un objeto descrito, un boceto en palabrasRuta geométricascripts/partlib.py
Una foto o archivo de imagenRuta de imagenscripts/imagelib.py

Configuración para la ruta geométrica:

pip install trimesh shapely manifold3d --break-system-packages -q

La ruta de imagen solo necesita Pillow y numpy — no requiere bibliotecas de malla ni booleanos.


Ruta geométrica

1. Fijar las dimensiones antes de modelar

La mayor parte del retrabajo aquí proviene de la ambigüedad, no de la geometría mala. Vuelve a formular la pieza en una tabla corta (dimensión → valor → fuente) y marca cualquier cosa que hayas asumido. Presta atención específicamente a:

  • Tamaño exterior vs. centros de montaje. "87 mm de ancho" y "87 mm entre los tornillos" son piezas diferentes; difieren en un espesor de pared. Pregunta.
  • Una tercera dimensión faltante. Un perfil más un espesor son solo dos de tres; elige una profundidad sensata, indícalo y conviértelo en una bandera.
  • Intención del sujetador. "tornillos de 5 mm" puede significar agujeros pasantes para tornillos metálicos M5, pasadores roscados impresos o un inserto termofijado. Tres modelos diferentes.
  • Hardware existente. Si la pieza se acopla con algo que ya existe, la distancia entre sus agujeros y el espesor del material son restricciones, no preferencias.

Haz como máximo una o dos preguntas que cambien la geometría; asume el resto, indica la suposición y continúa.

2. Modelar con la biblioteca

scripts/partlib.py proporciona constructores de perfiles, extrude, threaded_rod, threaded_pin, hex_nut, place y finish. Impórtala en lugar de volver a derivar matemáticas de malla — la rosca helicoidal es fácil de obtener sutilmente incorrecta.

scripts/example_handle.py es una pieza de trabajo completa (mango puente + pasadores roscados integrales + tuerca correspondiente). Cópiala como esqueleto para una nueva pieza.

Escribe el modelo como un script paramétrico con banderas argparse, nunca números codificados. El usuario pedirá una variante en minutos, y la respuesta debe ser una línea de comando en lugar de un nuevo modelo. Entrega el script junto con el STL.

3. Recetas comunes de piezas

PiezaConstruir desde
Mango puente, soporte ⊓bridge_profile + extrude
Placa plana con agujerospolígono shapely con anillos interiores + extrude
Pasador, espárrago, pernothreaded_pin, luego place sobre su eje
Tuerca, casquillo roscadohex_nut, o restar threaded_rod(clearance=…)
Separador, bujedos círculos concéntricos + extrude
Gancho, soporte en Lpolígono de la vista lateral + extrude, plano en la cama
Cajacaja exterior menos caja interior; labio con 0,15 mm de holgura

Cualquier cosa no listada sigue siendo un polígono, una extrusión y una booleana.


Ruta de imagen

scripts/imagelib.py convierte una imagen en un campo de altura y genera un sólido explícito de cuadrícula de vértices — superficie superior, fondo plano, cuatro paredes laterales. No utiliza ningún motor booleano, que es exactamente por lo que no falla en imágenes grandes o extrañas.

python3 imagelib.py photo.jpg --mode lithophane --width 100 \
    --out stl_output/lithophane.stl
python3 imagelib.py logo.png --mode relief --width 80 --base 2 \
    --out stl_output/relief.stl
ModoMapeoz típica
relieflos píxeles brillantes se elevan0,6 → 4,0 mm, a menudo sobre una placa --base
lithophanelos píxeles oscuros se vuelven gruesos, para que brille con retroiluminación0,8 → 3,0 mm, sin base
  • --res establece las muestras en el borde largo (por defecto 200). La resolución más allá de aproximadamente 0,4 mm por muestra se desperdicia — la boquilla no puede imprimirla y el archivo se infla. Auméntala solo para impresiones grandes.
  • El contraste se estira automáticamente al cargar; una foto plana y de bajo contraste produce una impresión plana y decepcionante. Indícalo en lugar de imprimirla.
  • Las litofanías quieren rostros y sujetos de alto contraste. Los paisajes y escenas ocupadas se convierten en barro.
  • check() verifica que cada borde aparezca exactamente dos veces en direcciones opuestas. Solo contar pasaría una pared cosida al revés, lo que produce un STL "válido" que el cortador invierte. Ejecútalo, infórmalo.

Acabado, para ambas rutas

Verifica primero: finish() (geometría) y check() (imagen) reportan la caja delimitadora, la estanqueidad y el recuento de triángulos. Compara la caja delimitadora con las dimensiones solicitadas — detecta errores de signo y deslizamientos de unidades al instante. Nunca presentes una malla que no sea hermética.

Para cualquier cosa visualmente no obvia — roscas, curvas, ensamblajes — renderiza una vista previa rápida con matplotlib y mírala. Veinte segundos superan una impresión de seis horas de la forma incorrecta.

Lee references/design-rules.md antes de elegir orientación, paso de rosca o holguras. Cubre resistencia en dirección de capa, perfiles de rosca imprimibles, tolerancias de ajuste, piezas derivadas de imagen y los modos de falla que vale la pena nombrar.

La respuesta debe contener:

  1. Una tabla de dimensiones, incluyendo valores asumidos.
  2. Cualquier decisión tomada en nombre del usuario, con su motivo. Si una característica solicitada es mecánicamente débil, construye lo que pidieron y nombra la debilidad con una alternativa concreta — nunca sustituyas en silencio.
  3. Una tabla de corte: altura de capa, paredes, relleno, soportes (exactamente dónde), material y qué cara va en la cama y por qué.
  4. La línea de comando única para regenerar con números diferentes.
  5. Cualquier cosa a confirmar con el hardware existente antes de imprimir.

Entrega los archivos STL en /mnt/user-data/outputs/ en claude.ai, o en una carpeta stl_output/ en el directorio de trabajo actual en Claude Code, y preséntalos junto con el script generador. Los scripts se encuentran en la carpeta scripts/ de este skill; llámalos por ruta completa o cópialos junto al script de la pieza. En Windows usa python en lugar de python3.

Ensamblajes de múltiples piezas

Cuando las piezas se acoplan (pasador y tuerca, tapa y caja, mitades de bisagra):

  • genera ambas desde parámetros compartidos en un solo script — un valor de holgura que viva en dos archivos se desviará
  • deriva la pieza hembra de la misma función que la pieza macho, desplazada por una holgura, para que no puedan discrepar
  • indica cuántas de cada una imprimir, y sugiere un repuesto para la pequeña
  • cuando un ajuste sea incierto, ofrece una prueba de tolerancia: imprime la pieza pequeña con dos holguras y quédate con la que funcione

Skills relacionados