SpiralCad
Benchmark técnico verificable · Spiralcad Suite 2026.12 · 25-jul-2026

Evidencia, no promesas

Todo lo que esta página afirma tiene una corrida que lo respalda: o un oráculo externo (AutoCAD 2027 real, libredwg, pyshp) o una batería de tests pública en el repositorio. Los números citan su tanda en el historial del proyecto (PROGRESO.md), donde está el método de cada uno.

1 · Compatibilidad DWG (el foso propio)

ClaimResultadoOráculo
Kit de escritura nativa R2000/2004/2010/2013/2018 (add, modify, borrado moderno, xref, ltype, downsave, dimassoc)31/31 OKAutoCAD 2027 real (accoreconsole)
QSAVE round-trip: AutoCAD abre nuestro DWG, lo re-guarda con SU encoder, nuestro reader lo relee con censo exacto8/8 OKAutoCAD 2027 + parser propio
DIMASSOC (cotas asociativas escritas por nosotros): byte-por-byte idéntico al de AutoCAD y re-vincula en vivo al editar la geometría✓ probadoAutoCAD 2027 (MOVE sobre la entidad base)
Expediente municipal como DWG nativo: un DWG R2010 por lámina en paper space, layout "LAMINA n DE N", cajetín, capas conservadasAUDIT 0 erroresAutoCAD 2027 (_AUDIT, ambas láminas)
Registros STYLE y DIMSTYLE (~80 campos R2007+) editables con write-back nativo: re-emisión sin cambios bit-idéntica al originalAUDIT 0 erroresdwgread + AutoCAD 2027
Lectura de planos municipales reales (XREF, MLEADER, ACAD_TABLE, WIPEOUT, MLINE, cotas de todas las familias) con justificación exacta6/6 anclas idénticasPDF AutoCAD vs visor, fixture controlado
Batería de tests del proyecto1760 passed · 0 failedpytest (25-jul-2026, 9ª tanda)
Smoke de la suite instalada (la app empaquetada, no el server dev): planos demo, civil, expediente, loteo✓ OKAPI real del build 2026.12

Sin ODA ni libredwg en la escritura: el encoder es propio, bit a bit contra la especificación pública del formato (ODA DWG spec) y validado contra AutoCAD real — no solo contra lectores tolerantes.

1b · La prueba a la vista

Estos tres dibujos no son maquetas: son planos municipales reales del corpus, leídos por el parser propio y redibujados por el renderer propio. Cada uno se regenera con python tools/render_svg.py <plano.dwg> <salida.svg> — si el parser se rompiera, se vería aquí.

Detalle de sumidero doble, plano R2004 municipal
DETALLE_SUMIDERO_DOBLE (R2004) — 1.440 primitivas, 27 INSERT expandidos, 0 bloques sin resolver.
Soleras tipo A y C
Soleras Tipo A/C — 205 primitivas.
Rebajes de vereda 2023
Rebajes de vereda (2023) — 490 primitivas.

Son SVG vectoriales, no capturas de pantalla: se pueden abrir y medir. Lo que ves es exactamente lo que el visor dibuja.

2 · Tipografía real (SHX)

ClaimResultadoOráculo
Parser SHX/SHP propio (opcodes completos: vectores, arcos octante/fraccional, bulges, subformas)286 glifos romans correctosezdxf.fonts.shapefile (librería independiente)
Registros STYLE decodificados (layout ODA) en planos reales25/25 archivos R14→2018corpus municipal (219 DWG)
Texto renderizado con la tipografía real del estilo (romans/txt/isocp) y word-wrap con métricas reales✓ verificado en vivoplanos SERVIU con 685+ textos
Compilador .SHX propio: generamos nuestras fuentes de trazo (142 glifos latinos / 2.693 completos) en formato unifont 1.0, sin copiar un byte de Autodeskezdxf las abre · 'A' a 21/21ezdxf.fonts.shapefile (lector independiente)

Los .shx de Autodesk NO se redistribuyen: se leen del AutoCAD (u otro CAD) del cliente o de ~/.spiralcad/fonts. Y para el cliente que no tiene ningún CAD instalado, desde 2026.12 va el set PROPIO compilado por nosotros (tools/generar_shx.py); como deriva de las fuentes LFF de LibreCAD es GPL v2+ y viaja como archivo de datos aparte con su aviso de licencia. Nadie se queda sin tipografía técnica.

3 · Interoperabilidad GIS

ClaimResultadoOráculo
Escritor .shp/.shx/.dbf propio (anillos exterior CW / hoyos CCW según spec ESRI) + .prj UTM 19S✓ formato válidopyshp (librería independiente)
Round-trip exportar → importar contra el visorgeometría exactaverificación en vivo
Reproyección real entre datums (PSAD56 / SAD69 / SIRGAS-Chile) y husos UTM 18S-19S: se transforma la GEOMETRÍA vértice a vértice, no solo el rótulo del .prjround-trip <1 mm · arco de meridiano ±0,06 mmintegración numérica independiente (no la misma serie)

Por qué importa: el catastro chileno llega en PSAD56 y el proyecto se dibuja en SIRGAS. Superponerlos sin transformar corre el plano ~400 m en Chile central — el lote equivocado. Cada datum declara su fuente EPSG y su exactitud (los parámetros publicados son promedios regionales, del orden de 1-6 m: sirven para catastro y proyecto vial, no para geodesia de precisión), y se pueden reemplazar por los del IGM de tu zona.

4 · Entregables municipales (civil)

ClaimResultadoOráculo
Secciones transversales a lámina A3 (grilla terreno vs subrasante, áreas C/R, escala unificada)✓ PDF válido multipáginaterreno sintético verificable (plano inclinado)
Perfil de red sanitaria a lámina (terreno, tuberías con Ø/pendiente/largo, cámaras fondo→tapa, banda de datos)✓ PDF válidored de 3 pozos con cotas conocidas
Cuantías del movimiento de tierras (áreas medias + Bruckner) a CSV (Excel) y lámina A4corte/relleno ≈ fórmula cerradaterreno plano inclinado, W·d + s·d²
Loteo con calle interna: parcelas por área objetivo con frente mínimo SOBRE la calleáreas ±1% · cobertura ±1%rectángulo y trapecio de área conocida
Curvas de nivel del TIN con rótulos de cota orientados, maestras cada 5ªrectas x=(cota−100)/0.01terreno sintético plano inclinado
Terreno DESDE curvas de nivel (plano o shapefile de catastro) con cada curva forzada como línea de quiebre en la triangulacióncota interpola entre curvascono sintético de cota conocida
Cuantías del corredor por estructura: m² desarrollados de pavimento/bermas/aceras/taludes (corte y relleno por separado) y m³ por capa= fórmula cerrada ±1e-3terraplén de talud 2:1 sobre terreno plano
Sección tipo POR SECTORES en un mismo eje (urbano con solera y acera / rural con cuneta)cada código solo en su tramoeje sintético de 100 m, 2 sectores
Renderer del visor: 19k trazos visibles; LOD de textos <3px; caches bbox/bloques~8 ms/frameplaywright A/B con plano sintético 40k

Honestidad de la medición: con 15.000 textos a zoom de lectura el canvas 2D toca su piso (~136 ms, igual con y sin batch — el costo es el fillText nativo). La respuesta para ese tramo es el renderer WebGL del roadmap; el resto del visor ya vuela.

5 · Cómo reproducirlo

El kit completo de validación se regenera y corre con un comando (requiere AutoCAD instalado para la parte del oráculo):

python tools/validacion_autocad.py        # kit 31/31 + QSAVE round-trip
python tools/audit_accoreconsole.py     # apertura en AutoCAD real
pytest tests/                            # batería completa del proyecto
python scratch_audit/smoke_suite.py      # smoke de la suite INSTALADA

Todo el método forense (series D/E/P, swaps de page map, caminatas de handles) quedó documentado en PROGRESO.md y scratch_audit/ del repositorio.

6 · Lo que NO afirmamos (honestidad)

ÁreaEstado declarado
R2007 write AutoCAD-STRICT (semilla CRC64)Investigación abierta — dwgread lo acepta y el QSAVE round-trip pasa; el CRC64 estricto no está cerrado. Barrido del 25-jul: 0 aciertos en ~200 combinaciones (8 regiones candidatas × polaridad normal/reflejada × xor-out × 4 semillas) contra los 8 AC1021 reales del corpus. No es un pendiente, es reversing sin resolver — y tiene poco premio: la ruta limpia a R2007 ya existe (downsave a R2010 y editar la copia)
Bloques dinámicos de AutoCAD (formato real)ESCRITURA pendiente: exige el grafo de evaluación completo (parámetros + acciones + grips consistentes) — hoy va el fallback nativo por estados, re-editable. LECTURA: alcanzable y en carpeta — la afirmación anterior ("ni libredwg lo tiene") era falsa y se corrigió el 25-jul
Reproyección de datums (GIS)CERRADO en 2026.12 (ver sección 3). El límite que queda es de EXACTITUD, no de capacidad: los parámetros de datum son los promedios regionales publicados por EPSG (1-6 m), no una grilla NTv2 — para geodesia de precisión hay que cargar los parámetros del IGM de la zona
Revit / BIM profesionalPor diseño: interop IFC4+BCF, no paridad
Textos masivos a zoom de lecturaPiso del canvas 2D medido (sección 4) — WebGL en roadmap

FICHA TÉCNICA La ficha completa del producto está en ficha-tecnica.html.