Manual de SpiralCad
Empezar
SpiralCad abre planos DWG (R13, R14, R2000, R2004, R2010, R2013 y R2018) y DXF ASCII. Tres maneras de cargar un plano:
- Arrastrar el archivo a la ventana.
- Botón 📂 Abrir (o el selector de archivos del sistema).
- Elegir uno de los planos de muestra del panel izquierdo.
La barra de estado muestra el formato y versión detectados, el total de objetos y el porcentaje de geometría decodificada.
Navegación y capas
- Pan: arrastra con el mouse. Zoom: rueda del mouse (centrado en el cursor).
- ⌖ Encuadrar: ajusta la vista al plano completo, incluyendo lo que hayas dibujado.
- Capas: el panel izquierdo lista las capas con su color; el checkbox las muestra u oculta. Las capas apagadas o congeladas en el archivo vienen ocultas de fábrica.
- 🖨 PDF: imprime la vista actual a PDF vectorial.
Medir, dibujar y editar
| Herramienta | Uso |
|---|---|
| 📏 Medir | Clic en dos puntos: distancia real en unidades del plano. El cursor engancha (snap) a vértices y centros cercanos. |
| Línea / Polilínea / Círculo / Texto | Dibujo de revisión sobre el plano. La polilínea se cierra con doble clic; el texto pide el contenido al colocarlo. |
| Seleccionar | Clic sobre una entidad: moverla (arrastrar), o suprimirla con Supr. |
| ↶ Deshacer | Ctrl+Z revierte la última acción (dibujo, borrado o movimiento). |
Consola de comandos
Al pie del visor vive la línea de comandos (tecla ; la enfoca).
Acepta comandos y SpiralScript (todo lo que parte con
(). Historial con ↑/↓.
| Comando | Qué hace |
|---|---|
LINE 0,0 100,50 @0,40 | Líneas entre puntos. x,y absoluto; @dx,dy relativo al punto anterior. |
CIRCLE 50,50 25 | Círculo: centro y radio. |
PLINE 0,0 40,0 40,30 C | Polilínea; C final la cierra. |
TEXT 10,20 2.5 REVISADO DOM | Texto: punto, altura y contenido. |
CAPA REVISION · COLOR 1 | Capa y color corrientes para lo que dibujes después (la capa se crea en el DWG si no existe). |
ALIAS L LINE | Alias propios, persistentes en ~/.spiralcad/spiralcad.pgp (sintaxis acad.pgp — el de AutoCAD se copia tal cual). |
LOTEO | Subdivide el predio (polilínea cerrada seleccionada) en parcelas por área objetivo con frente mínimo — con calle interna opcional. |
ESTILO | Lista y edita los estilos de TEXTO del plano (factor de ancho, altura fija, oblicuo, fuente) con write-back DWG nativo. |
ACOTESTILO | Lista y edita los estilos de COTA del plano (campos DIMXXX=valor: DIMSCALE, DIMASZ, DIMTXT, DIMDEC…). |
XREF | Adjunta una referencia externa al plano (el DWG resultante se descarga). |
AYUDA · LIMPIAR | Resumen de comandos · limpia la salida. |
NOMBRE | Un nombre pelado ejecuta la rutina (defun c:nombre ...) si está definida. |
Guardar DWG y exportar
- ↓ DWG — guardado nativo: tus ediciones quedan DENTRO de un DWG
real, en la misma versión del plano original, preservando byte a byte el
contenido no editado. En R2000 se puede agregar y eliminar; en
R2004–R2018 se agrega sobre la capa
SPIRALCAD_MARKUP(roja) y se puede eliminar (borrado moderno nativo, AUDIT-limpio). - Expediente PDF: el set de láminas del proyecto (ventanas, escala auto, índice, viñeta con propietario/encargado/revisión) en UN pdf multipágina.
- Expediente DWG: el mismo set como ZIP de DWG nativos R2010 — uno
por lámina, en paper space con su layout
LAMINA n DE N, listos para plotear en AutoCAD (AUDIT 0 errores). - ↓ DXF: exporta el plano completo más tus ediciones a DXF ASCII, legible por cualquier CAD.
- ↓ SHP: el dibujo como shapefile empaquetado (UTM 19S / EPSG:32719); y los SHP de catastro entran con su ROL rotulado.
- ↓ Google Earth (KMZ): las polilíneas cerradas salen como volúmenes extruidos semitransparentes sobre la foto satelital — el estudio de cabida parado en la ciudad real. Eliges huso y datum del plano (SIRGAS, o PSAD56/SAD69 del catastro histórico: se reproyecta de verdad), das la altura en metros, y el KMZ se abre con doble clic; cada capa llega como carpeta prendible, con su color.
- PDF: impresión vectorial de la vista.
Módulos de obras
- 🔍 Revisar QA: auditoría automatizada del plano contra checklist normado (georreferenciación UTM, capas, textos, escalas) con informe en español.
- ⛰ Superficie 3D: superficies TIN desde LandXML con curvas de nivel, cubicación corte/relleno y memoria de cálculo.
- Maqueta 3D / Editor 3D: extrusión del plano a maqueta recorrible y paso al editor 3D.
Obras civiles viales (el flujo municipal completo)
- Eje por PIs con curvas circulares o clotoides (radio y parámetro A por PI), grips editables, importación LandXML de Civil 3D/Istram.
- Rasante por PVIs en el pane de perfil longitudinal (clic agrega, clic derecho quita), con banda de peralte referencial MOP.
- Volúmenes: secciones transversales + average-end-area, diagrama de masas Bruckner y cuantías a CSV/PDF para el presupuesto.
- Corredor: sección tipo barrida por el eje contra el terreno, con peralte y sobreancho por estación; feature lines y cubicación 3D.
- Secciones transversales a lámina A3: grilla terreno vs subrasante con áreas de corte/relleno por estación (botón "PDF secciones").
- Curvas de nivel del terreno con rótulos de cota orientados y maestras cada 5ª (botón "Curvas").
- Redes de gravedad y agua potable: pozos/nudos sobre el terreno, validación RIDAA/NCh, perfil de red a lámina PDF (terreno, tuberías con Ø/pendiente/largo, cámaras), LandXML PipeNetwork.
- Copiloto civil (toggle 2D|CIVIL en el chat): "traza un eje por estos PIs con radio 80… y su corredor… y el expediente" — valida contra el motor real y aplica al plano. LLM local (Ollama): nada sale del equipo.
Personalización
- Aliases en sintaxis acad.pgp:
~/.spiralcad/ spiralcad.pgp, líneasATAJO,*COMANDO. El archivo de tu AutoCAD se copia tal cual. - Workspaces con nombre (diálogo Configuración): guarda y aplica tema + tamaño de UI + espacio de trabajo + toggles F3/F8/F9/F10/F12.
- Biblioteca 2D con favoritas (★ por pieza, sección propia) y Design Center (botón "DC…"): inserta bloques de cualquier DWG del disco como bloque nativo.
El Taller: la pieza paramétrica
El Taller (botón Taller en la barra, o /taller)
es el banco MCAD: diseña piezas 3D para imprimir, cortar y mecanizar,
con kernel B-rep propio (OCCT) — booleanas, filetes y chaflanes exactos, no
mallas que se rompen. La pieza no se dibuja: se construye como un árbol de
operaciones (caja → agujero → filete → patrón polar…) que queda editable
paso a paso: cambia el radio del agujero 4 y toda la pieza se regenera, con su
volumen y su sólido watertight verificados en cada paso.
- Operaciones: caja, cilindro, esfera, prisma de polígono, agujero (pasante/ciego/roscado ISO métrico), filete, chaflán, shell (vaciado), revolución, barrido, patrón lineal/polar, unión/resta/intersección.
- Parámetros con nombre («espesor», «d_perno + 0.5»): la pieza se vuelve familia — cambia un número y sale la variante.
- Navegación: arrastrar = orbitar · rueda = zoom · clic derecho = paneo · doble clic = centrar · WASD/QE para moverse.
- Biblioteca de piezas propias: cualquier árbol se guarda como pieza reutilizable.
Copiloto de la pieza
El chat del Taller edita la HISTORIA de la pieza en lenguaje natural: «hazle 2 mm más gruesa la base», «ponle 6 pernos en vez de 4», «filete en la cara que marqué», «ponle un perno M6 de la biblioteca en cada esquina». Toca una cara en el 3D para dársela de contexto. El copiloto también dimensiona: pide «una caja para un ESP32» o «un soporte que aguante 500 N» y propone la pieza verificada, no solo dibujada. Las respuestas se muestran con formato (negritas, código, listas) y el historial persiste entre sesiones. LLM local (Ollama): nada sale del equipo.
Verificación FEA
- Selección de caras: clic en una cara y el menú aparece junto al cursor; Shift+clic suma caras en lote. A cada selección se le asigna un rol: azul = empotrada, rojo = presión/carga.
- Push/pull: arrastra una cara seleccionada y la pieza se ESTIRA — el kernel sabe de qué operación nació cada cara y rehace la historia con la cota nueva.
- FEA estática lineal (malla Gmsh + elementos finitos): mapa de von Mises sobre la pieza, desplazamiento máximo y factor de seguridad contra el material elegido.
- Memoria de cálculo PDF: el informe firmable con hipótesis, malla, resultados y la firma de la versión del modelo — la pieza se entrega con su justificación, no solo con su STL.
- Evidencia: cada modelo computacional puede registrar ensayos fechados (predicción vs medición con banda declarada) — el factor observado avisa si la realidad se aleja del modelo.
Fabricación: de la pieza a la máquina
| Salida | Qué entrega |
|---|---|
| Impresión 3D | STL y 3MF propio con orientación de impresión sugerida (minimiza voladizos) e imprimibilidad (cama, voladizo, soportes). Sin slicer propio, a propósito: el 3MF abre directo en Bambu Studio u OrcaSlicer. |
| Cama multi-objeto | Desde un ensamblaje, UN 3MF con cada pieza nombrada, en su orientación sugerida y repartida en fila sobre la cama — nunca en la pose ensamblada. |
| CAM 2.5D | Taladro, contorno y pocket con tabs en pasada final, posts intercambiables y G-code verificado con parser independiente y backplot geométrico. |
| Chapa plegada | Plegar/desarrollar con BA = θ·(r + K·t) real;
el DXF/DWG sale con la capa PLIEGUE aparte para la plegadora. |
| Láser / corte | Lead-in tangencial en los contornos y plano de corte DXF/SVG con cotas exactas (el kernel es B-rep: las medidas son de mecanizar, no de aproximar). |
| Topología (SIMP) | Optimización topológica por invariantes: la viga MBB baja −79.7% de compliance; el resultado se cospe a sólido editable y vuelve al árbol. |
| Plancha de corte | Nesting de piezas en plancha con aprovechamiento medido (62.8% vs 17.5% a mano alzada en el banco de pruebas). |
Ensambles con mates
- Mates: concéntrico, coincidente, prismático (con tope real) y fricción de Coulomb — la tapa abre hasta donde la física dice.
- Empujar piezas: en el visor del ensamblaje se agarra una pieza con el mouse y se la empuja; el tope de interferencia detiene el movimiento cuando los sólidos chocan («abre hasta 205° y ahí CHOCA»).
- Animar: barrido de la articulación con chequeo de choque por cuadro; si el primer paso ya choca, invierte el barrido.
- Importar ensambles: STEP y FreeCAD (.FCStd) entran pieza a pieza como instancias con mates recuperables.
Importar y Biblioteca GVCS
- Importar: STL, OBJ y .FCStd (FreeCAD) entran como malla de referencia. El FCStd trae el B-rep OCCT adentro: cada pieza llega por separado con color de referencia propio (declarado: no es el material real) y un panel para mostrar/ocultar y encuadrar cada una.
- Biblioteca GVCS (
/gvcs): las 50 máquinas del Global Village Construction Set de Open Source Ecology, curadas con buscador y filtros por sector. Cada máquina se puede «abrir en capas» (entera en el Taller, un color por archivo), descargar en zip gratis (licencia CC-BY-SA de OSE) o explorar archivo a archivo. Es la primera librería abierta de la tienda — vienen más. - Galería y modelos computacionales: entradas curadas que se cargan con su spec lista; los modelos computacionales son familias paramétricas deterministas (spec → pieza → FEA → memoria) versionadas y testeadas — incluida la prensa CEB del GVCS como familia viva.
Referencia SpiralScript
SpiralScript es el motor de rutinas de SpiralCad: un lenguaje tipo LISP con la sintaxis estándar de la industria CAD, pensado para automatizar dibujo repetitivo. Corre en un sandbox del servidor: sin acceso a archivos ni red, con límite de operaciones.
Semántica que conviene saber (fiel al LISP CAD clásico):
- Solo
niles falso:0y""son verdaderos. - Un símbolo sin valor evalúa a
nil(no es error). substrcuenta desde 1, no desde 0.- En
(defun f (a b / x y) ...), lo que va tras/son variables locales. t,nilypison constantes protegidas.- La división entre enteros es entera:
(/ 7 2)→3; usa(/ 7 2.0)para 3.5.
Formas especiales
| Forma | Descripción |
|---|---|
(setq var valor ...) | Asigna (pares variable/valor). |
(defun nombre (args / locales) ...) | Define función. c:nombre la vuelve comando de consola. |
(lambda (args) ...) | Función anónima. |
(if c entonces [si-no]) · (cond (c ...) ...) | Condicionales. |
(while c ...) · (repeat n ...) · (foreach v lista ...) | Iteración. |
(and ...) · (or ...) · (progn ...) · (quote x) / 'x | Lógica, secuencia, cita. |
Funciones
| Categoría | Funciones |
|---|---|
| Aritmética | + - * / rem 1+ 1- abs min max sqrt expt exp log sin cos atan float fix |
| Comparación y predicados | = /= < <= > >= eq equal not null atom listp numberp zerop minusp |
| Listas | list cons car cdr nth length last reverse append member assoc subst mapcar apply |
| Strings | strcat strlen substr strcase itoa atoi atof rtos chr ascii (substr es 1-based) |
| Geometría | (polar pt ángulo dist) · (distance p1 p2) · (angle p1 p2) — ángulos en radianes, pi disponible |
| Salida de texto | princ prin1 print terpri (aparece en la consola) |
| Variables de dibujo | (setvar "CLAYER" "REVISION") · (setvar "CECOLOR" 1) · getvar |
Puente CAD: entmake y command
entmake crea una entidad desde una lista de asociación con los
códigos de grupo DXF estándar:
| Entidad | Códigos soportados |
|---|---|
| LINE | (10 x y) inicio · (11 x y) fin |
| CIRCLE | (10 x y) centro · (40 . radio) |
| ARC | centro, radio, (50 . a0) y (51 . a1) en radianes |
| TEXT | (10 x y) · (40 . altura) · (1 . "texto") |
| LWPOLYLINE | (10 x y) repetido · (70 . 1) = cerrada |
| Comunes | (8 . "CAPA") · (62 . color_aci) |
command acepta la forma clásica simplificada:
(command "line" '(0 0) '(100 0) "") ·
(command "circle" '(50 50) 25) ·
(command "pline" '(0 0) '(10 0) '(10 8) "c") ·
(command "text" '(5 5) 2.5 "HOLA").
Ejemplos completos
; marco de lámina con un comando propio
(defun c:marco ()
(command "pline" '(0 0) '(297 0) '(297 210) '(0 210) "c"))
; grilla de ejes verticales con rótulo
(defun c:ejes (/ i)
(setq i 0)
(repeat 5
(entmake (list '(0 . "LINE") (list 10 (* i 600) 0) (list 11 (* i 600) 3000)))
(entmake (list '(0 . "TEXT") (list 10 (+ (* i 600) 50) 3050)
'(40 . 120.0) (cons 1 (strcat "EJE " (itoa (1+ i))))))
(setq i (1+ i))))
; espiral áurea (la de la marca): 299 segmentos calculados
(defun c:espiral (/ b i ang r p q)
(setq b 0.3063489 i 0 q nil)
(repeat 300
(setq ang (* i 0.06)
r (* 1.5 (exp (* b ang)))
p (list (* r (cos ang)) (* r (sin ang))))
(if q (entmake (list '(0 . "LINE") (cons 10 q) (cons 11 p) '(62 . 2))))
(setq q p i (1+ i))))
Defines la rutina pegándola en la consola (una vez por sesión) y luego la
ejecutas escribiendo su nombre: MARCO, EJES,
ESPIRAL.
Límites del sandbox
- Sin acceso a archivos, red ni sistema operativo.
- Máximo 1.000.000 de operaciones por ejecución (un
whileinfinito se corta con error claro) y 400 niveles de recursión. - Las rutinas definidas viven mientras dure la sesión de consola.