You are on page 1of 4

; ATDF2TXT will find and replace all ATTDEF's in a drawing with TEXT strings.

; The resulting text string will be the Attribute(s) TAG description.


;By Robert L. Zipprich
;--------------------------------------------------
;--------------------------------------------------
(DEFUN TXTVALU ( W X Y ) ; Creates an AutoLISP prompt with a default TEXT STRING.
(setq X1 (strcat W X Y)) (prompt X1)
(setq X2 (strcase (getstring))) (if (eq X2 "") (set TV X) (set TV X2))
) ;end txtvalu
;------------------------------------------------------
(defun ERR (s)
(if (/= s "Function cancelled") ; If an error (such as CTRL-C) occurs
(princ (strcat "\nError: " s))) ; while this command is active...
(setq *error* olderr) ; Restore old *error* handler
(setvar "osmode" OSM)
(setvar "orthomode" ORM)
(princ)
)
;--------------------------------------------------
(defun LOCATE () ;for globally replacing all ATTDEF's
(setq ASK "A"
ss1 (ssadd)
ss2 (ssadd)
num 0 ;keep a record of changed
)
(setq
1ste (entnext) ;get first entity
)
(if 1ste
(progn
(setq
1elist (entget 1ste) ;get entity data
)
(while (/= 1ste nil)
(progn
(setq 1elist (entget 1ste)) ;get 1ste entity data
(if (eq (cdr (assoc 0 1elist)) "ATTDEF") ; check for attribute
definition
(progn
(prompt ".")
(ssadd 1ste ss1)
(setq 1ste (entnext 1ste)
num (1+ num)
)
) ;end progn
(setq 1ste (entnext 1ste))
) ;end if
) ;end progn
) ;end while
)
) ;end if
(setq endprmpt "in Selection Set SS1.")
) ;end locate
;--------------------------------------------------
;-----------------------------------------------------
; Item from association list
;-----------------------------------------------------
(Defun ITEM (N E) (CDR (Assoc N E)))
;-----------------------------------------------------
;-----------------------------------------------------
; Convert Attribute Entity to Text Entity
;-----------------------------------------------------

(Defun ATT-TEXT ( 1ELIST ) ;(1elist / 2elist ILIST INUM)


(Setq 2elist '((0 . "TEXT")))
(ForEach INUM '(8
6
38
39
62
67
210
10
40
1 ;gets tag value
50
41
51
7
71
72
73
11
74
)
(If (Setq ILIST (Assoc INUM 1elist))
(Setq 2elist (Cons ILIST 2elist))
)
)
(setq 2elist (subst (cons 1 (cdr (assoc 2 1elist))) (assoc 1 2elist)
2elist))
;substitute attribute tag name value instead of default value)
; (setq 2elist (subst (cons 1 (cdr (assoc 3 1elist))) (assoc 1 2elist)
2elist))
;substitute attribute tag prompt value instead of default value)
(Setq
2elist (Subst
(Cons 73 (item 74 1elist))
(Assoc 74 2elist)
2elist
)
)
(if (EntMake (Reverse 2elist)) (entdel 1ste))

(ssadd 1ste ss1)


(ssadd (entlast) ss2)
(setq
1ste (entnext 1ste)
num (1+ num)
)
)
;--------------------------------------------------
(defun C:ATDF2TXT
; ( / 1ent_pt 1ent 1elist 2elist )
()
(setq
; olderr *error*
; *error* err
DS (getvar "dimscale")
UN (getvar "lunits")
UP (getvar "luprec")
OSM (getvar "osmode")
ORM (getvar "orthomode")
LOOP nil
)
(setvar "osmode" 0)
(setvar "orthomode" 0)
(setvar "cmdecho" 0)
(prompt "\nPlease wait while locating ATTDEF's ")
(LOCATE)
(if (> NUM 0)
(progn
(setq prmpt (strcat (rtos num 2 0)
" ATTDEF's " endprmpt)
)
(prompt prmpt)

(setq ASK "A"


ss1 (ssadd)
ss2 (ssadd)
num 0 ;keep a record of changed
)
(set 'TV 'ASK)
(TXTVALU "\nTo change ATTDEF's, specify None, Single, or All? <" ASK ">: ")
(if (eq ASK "") (setq ASK "A"))
;---
(if (eq ASK "S") ;get single attrib def
(progn
(setq 1ste_pt (entsel "\nSelect Source ATTDEF -> ")
1ste (car 1ste_pt) ;get main entity
1elist (entget 1ste) ;get main entity data
)
(if (eq (cdr (assoc 0 1elist)) "ATTDEF") ; check for attribute
definition
(progn
; (UPDTENT)
(ATT-TEXT 1elist)
; (command ".erase" ss1 "") (command)
(setq endprmpt "converted to TEXT.")
)
(prompt "\nEntity is NOT an ATTDEF.")
)
) ;end progn
) ;end if
;---
(if (eq ASK "A") ;for globally replacing all ATTDEF's
(progn
(setq 1ste (entnext) ;get first entity
1elist (entget 1ste) ;get entity data
)
(while (/= 1ste nil)
(progn
(setq 1elist (entget 1ste)) ;get 1ste entity data
(if (eq (cdr (assoc 0 1elist)) "ATTDEF") ; check for attribute definition
(progn
; (UPDTENT)
(ATT-TEXT 1elist)
) ;end progn
(setq 1ste (entnext 1ste))
) ;end if
) ;end progn
) ;end while
; (command ".erase" ss1 "") (command)
(setq endprmpt "converted to TEXT.")
) ;end progn
) ;end if
;---
(setq prmpt (strcat (rtos num 2 0)
" ATTDEF's " endprmpt)
)
(prompt prmpt)
)
(progn
(setq ODCLF (load_dialog "atdf2txt.dcl")) ; open DCL
(new_dialog "NOATTDEFS" ODCLF) ; start dialog
(action_tile "accept" "(setq ACT nil)(done_dialog 0)")
(start_dialog)
)
) ;end if
(princ)
) ;end atdf2txt
;------------------------------------------
(if (not (findfile "atdf2txt.vlx"))
(progn
(prompt "Cannot locate Atdf2txt.vlx file! ")
)
(c:atdf2txt)
)
;------------------------------------------

You might also like