;********************************************************************
;Procedure   : RTABGEN1
;Versione    : 1.0.0
;
;Autore      : Roberto Rossi
;Descrizione : questo comando permette di disegnare una tabella
;              indicando alcuni semplici parametri
;********************************************************************
(defun c:RTABGEN1( / largTab nRighe nColonne pInitTab AltIntesta AltRighe
                     parametri)
(setq largTab (getdist "\nIndicare larghezza tabella : "))
(setq nRighe (getint "\nIndicare numero righe : "))
(setq nColonne (getint "\nIndicare numero colonne : "))
(setq AltIntesta (getdist "\nIndicare altezza Intestazione : "))
(setq AltRighe (getdist "\nIndicare altezza Righe : "))

;richiede un punto ritornando una lista con le coordinate (x y z)
(setq pInitTab (getpoint "\nIndicare punto di inizio tabella (angolo superiore sinistro) : "))

;creazione lista contenente i dati necessari alla realizzazione
;della tabella
(setq parametri (list largTab nRighe nColonne pInitTab AltIntesta AltRighe))

(gentab1 parametri)
(prin1)
);enddef

;genera una tabella in base ai parametri
(defun gentab1( dati / largT nR nC pnt AIntesta ARighe x y ytemp i lColonna)
(setq largT    (car dati) ;estrae il primo elemento dalla lista dati
      nR       (cadr dati) ;estrae il secondo elemento
      nC       (nth 2 dati) ;estrae il terzo elemento
      pnt      (nth 3 dati) ;...
      AIntesta (nth 4 dati) ;...
      ARighe   (nth 5 dati) ;...
);endset

;estrae 
(setq x (car pnt)) ;estrae dal punto la coordinata x
(setq y (cadr pnt)) ;estrae dal punto la coordinata y
(setq ytemp y)
(setq i 0)

;disegna una linea passando al comando due punti,
;il secondo dei quali costruito al momento
(command "_line" pnt (list (+ x largT) y) "")
(command "_copy" "_last" "" pnt (list x (- y AIntesta)))

(setq ytemp (- y AIntesta))
(while (< i nR)
  (setq ytemp (- ytemp ARighe))
  (command "_line" (list x ytemp) (list (+ x largT) ytemp) "")
  (setq i (1+ i))
);endw

(command "_line" pnt (list x ytemp) "")

(setq lColonna (/ largT nC))
(command "_array" "_last" "" "_R" 1 (1+ nC) lColonna)

(prin1)
);enddef


