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. Vienen L, C, PL, T. |
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) — eliminar entidades del original en esas versiones aún no está disponible y el programa lo indica explícitamente. - ↓ DXF: exporta el plano completo más tus ediciones a DXF ASCII, legible por cualquier CAD.
- 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.
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.