;;; ==========================================================================
;;; COMANDO: TINC (Texto Incremental Dinámico)
;;; DESCRIPCION: Inserta textos con numeración consecutiva, control de altura,
;;;              incremento y formato (ceros a la izquierda).
;;; Luis Cardenas
;;; www.ingenieriafacil.com
;;; Diciembre 2025
;;; ==========================================================================

(defun c:TINC (/ *error* startNum increment_input pfx digits pt str currentH txtH)
  
  ;; Mensaje de inicio con créditos
  (princ "\nIniciando TINC... | www.ingenieriafacil.com - Luis Cardenas")

  ;; --- VARIABLES GLOBALES PARA RECORDAR CONFIGURACION ---
  (if (not *gl_increment*) (setq *gl_increment* 1)) 

  (defun *error* (msg)
    (if (and msg (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*EXIT*")))
      (princ (strcat "\nError: " msg))
    )
    (princ "\nComando cancelado.")
    (princ)
  )

  ;; 1. Configurar número de inicio
  (setq startNum (getint "\nNúmero de inicio <1>: "))
  (if (not startNum) (setq startNum 1))

  ;; 2. Configurar Incremento
  (initget 6) ; Evita cero o negativos
  (setq increment_input (getint (strcat "\nIncremento (paso) <" (itoa *gl_increment*) ">: ")))
  (if increment_input
    (setq *gl_increment* increment_input)
  )

  ;; 3. Configurar Prefijo
  (setq pfx (getstring T "\nPrefijo (Enter para ninguno): "))

  ;; 4. Configurar Altura
  (setq currentH (getvar "TEXTSIZE")) 
  (setq txtH (getreal (strcat "\nAltura del texto <" (rtos currentH 2 2) ">: ")))
  (if (not txtH) (setq txtH currentH))

  ;; 5. Configurar Dígitos
  (setq digits (getint "\nCantidad mínima de dígitos (ej. 2 para '01') <1>: "))
  (if (not digits) (setq digits 1))

  ;; --- BUCLE PRINCIPAL ---
  (while (setq pt (getpoint (strcat "\nClick para insertar " pfx (itoa startNum) " (Inc=" (itoa *gl_increment*) "): ")))
    
    ;; Formato de ceros
    (setq str (itoa startNum))
    (while (< (strlen str) digits)
      (setq str (strcat "0" str))
    )
    
    ;; Crear Texto
    (entmake (list
               '(0 . "TEXT")
               (cons 10 pt)
               (cons 40 txtH)
               (cons 1 (strcat pfx str))     
               '(50 . 0.0)
            ))
    
    ;; Incrementar contador
    (setq startNum (+ startNum *gl_increment*))
  )
  
  (princ "\nwww.ingenieriafacil.com - Luis Cardenas")
  (princ)
)

(princ "\nComando TINC cargado. Escriba TINC para ejecutar.")
(princ "\nDesarrollado por Luis Cardenas - www.ingenieriafacil.com")
(princ)