;;;; functie petru citirea atributelor unui bloc (defun citescatt (ent fisier / sw w ) (setq sw (cdr (assoc -1 ent))) (while (/= "SEQEND" (cdr (assoc 0 (entget sw)))) (setq w (entget (entnext sw))) (if (/= "SEQEND" (cdr (assoc 0 w))) (print (cdr w) fisier) (princ "\n SFIRSIT PARAMETRI ATRIBUTE" fisier) ) (setq sw (entnext sw)) ) ) ;;;; functie pentru citirea elementelor care compun o definitie de bloc (defun citescbl ( ent fisier / nume_blk identif lista_pa sw) (setq nume_blk (cdr (assoc 2 ent)) identif (cdr (assoc -2 (tblsearch "BLOCK" nume_blk))) lista_pa (entget identif) sw (cdr (assoc -1 lista_pa)) ) (print (cdr lista_pa) fisier) (while sw (setq sw (entnext sw)) (if (not (null sw)) (print (cdr (entget sw)) fisier) (princ "\n SFIRSIT PARAMETRI BLOC" fisier) ) ) ) ;;;; iteratorul pentru vertecsii entitatilor compuse (defun citescvert ( ent fisier / vx ent1 ) (setq vx (entnext (cdr (car ent))) ;selectez primul element cu 66 ) (while (/= "SEQEND" (cdr (assoc 0 (entget vx)))) (print (cdr (entget vx)) fisier) (setq vx (entnext vx)) ;urmatorul element cu 66 ) (princ "\n SFIRSIT PARAMETRI VERTEX" fisier) ) (defun c:lista ( / ss nr crt fisier ent ent1 mes) (while (null ss) ;pina la comanda nula (setq ss (ssget)) ;selectez obiecte (pot si cu "w") ) (prompt "\nScriu informatiile in fisierul INFO.DAT") (setq nr (sslength ss) crt 0.0 fisier (open "info.dat" "a") ) (princ "\n ** INCEPUT INREGISTRARE **\n" fisier) (while (/= crt nr) (setq ent1 (if (= (type xload) ‘SUBR) (entget (ssname ss crt) (list "*")) ;rel 11 (entget (ssname ss crt)) ;rel 10 ) ent (cdr ent1) ) (print ent fisier) (cond ((= (cdr (assoc 0 ent)) "POLYLINE") (citescvert ent1 fisier) ) ((= (cdr (assoc 0 ent)) "INSERT") (if (assoc 66 ent1) (citescatt ent1 fisier) ) (citescbl ent1 fisier) ) (T (princ "\n —————-\n" fisier) ) ) (setq crt (+ 1 crt)) ) (princ "\n\n ** SFIRSIT INREGISTRARE **\n" fisier) (close fisier) (setq ss nil) (princ) )