THANKS FOR THE REPLY I SEEM TO HAVE STUMBLED ON QUITE A FEW CLOUDY ROUTINES IVE USED THIS PROGRAM POFFSET AND THE SIZES WERENT AS SPEICIFIED I GUESS IM JUST SPOILED BY AWSOME PROGRAMMERS HERE AND ALL THEIR HELP.
Code:
;Tip1714: ATTUPDATE.LSP Attribute update (c)2001, Brian Iwaskewycz
(defun C:ATTUPDATE (/ NEXTENTTYPE ENTTYPE BLOCKNAME SSET ENTNAME
SELECTION FILENAME INDEX1 NEWBLOCKNAME MAINENTNAME
SUBENTNAME ATTLIST INSPOINT XSCALE YSCALE ZSCALE
ROTATION ENTDATA INDEX2 VALUE LOSSFLAG LAYERNAME)
(while (or (/= "ATTRIB" NEXTENTTYPE) (/= "INSERT" ENTTYPE))
(setq BLOCKNAME "")
(setq BLOCKNAME
(getstring
"\nEnter name of block to update or <ENTER> to select: "))
(if (/= "" BLOCKNAME)
(progn
(setq SSET
(ssget "x"
(list (cons 0 "INSERT") (cons 2 BLOCKNAME))))
(if SSET
(progn
(setq ENTNAME (ssname SSET 0))
(setq ENTTYPE (cdr (assoc 0 (entget ENTNAME))))
(if (entnext ENTNAME)
(setq NEXTENTTYPE
(cdr
(assoc 0
(entget (entnext ENTNAME)))))
(princ "\nThe selected block has no attributes.")
)
)
(progn
(princ (strcat "\nBlock name "
(strcase BLOCKNAME)
" not found."))
(setq NEXTENTYPE NIL
ENTTYPE NIL)
)
)
)
(progn
(setq SELECTION NIL)
(while (not SELECTION)
(setq SELECTION (entsel "\nSelect block to update:"))
)
(setq ENTNAME (car SELECTION))
(setq ENTTYPE (cdr (assoc 0 (entget ENTNAME))))
(if (entnext ENTNAME)
(setq NEXTENTTYPE
(cdr (assoc 0 (entget (entnext ENTNAME))))))
(if (/= "INSERT" ENTTYPE)
(princ "\nThe selected entity is not a block.")
(if (/= "ATTRIB" NEXTENTTYPE)
(princ "\nThe selected block has no attributes."))
)
)
)
)
(if (= "" BLOCKNAME)
(setq BLOCKNAME (cdr (assoc 2 (entget ENTNAME)))))
(setq SSET (ssget "x" (list (cons 0 "INSERT") (cons 2 BLOCKNAME))))
(princ (strcat "\n"
(itoa (sslength SSET))
" occurrence(s) of block "
(strcase BLOCKNAME)
" found.\n"))
(setq FILENAME (getfiled "Select New Block Name" "" "dwg" 0))
(setq INDEX1 (strlen FILENAME))
(while (/= "\\" (substr FILENAME INDEX1 1))
(setq INDEX1 (1- INDEX1))
)
(setq BLOCKNAME (strcase BLOCKNAME))
(setq NEWBLOCKNAME
(strcase (substr FILENAME
(1+ INDEX1)
(- (- (strlen FILENAME) INDEX1) 4))))
(setvar "attdia" 0)
(setvar "attreq" 0)
(setvar "cmdecho" 0)
(if (and (tblsearch "block" NEWBLOCKNAME)
(/= NEWBLOCKNAME BLOCKNAME))
(progn
(princ
(strcat "A block named "
NEWBLOCKNAME
" already exists. Using local copy instead."))
(command "insert" NEWBLOCKNAME "0,0,0" "" "" "")
)
(progn
(if (/= BLOCKNAME NEWBLOCKNAME)
(command "rename" "b" BLOCKNAME NEWBLOCKNAME))
(command "insert"
(strcat NEWBLOCKNAME "=" FILENAME)
"0,0,0"
""
""
"")
)
)
(setq MAINENTNAME (entlast))
(setq SUBENTNAME (entnext MAINENTNAME))
(while (= "ATTRIB" (cdr (assoc 0 (entget SUBENTNAME))))
(setq
ATTLIST (append ATTLIST
(list (cdr (assoc 2 (entget SUBENTNAME))))))
(setq SUBENTNAME (entnext SUBENTNAME))
)
(entdel MAINENTNAME)
(setvar "attreq" 1)
(setq INDEX1 0)
(command "ucs" "w")
(princ "\n")
(while (setq MAINENTNAME (ssname SSET INDEX1))
(setq SUBENTNAME (entnext MAINENTNAME))
(setq INSPOINT (cdr (assoc 10 (entget MAINENTNAME))))
(setq XSCALE (cdr (assoc 41 (entget MAINENTNAME))))
(setq YSCALE (cdr (assoc 42 (entget MAINENTNAME))))
(setq ZSCALE (cdr (assoc 43 (entget MAINENTNAME))))
(setq ROTATION
(* (/ 180.0 pi) (cdr (assoc 50 (entget MAINENTNAME)))))
(setq LAYERNAME (cdr (assoc 8 (entget MAINENTNAME))))
(while (= "ATTRIB"
(cdr (assoc 0 (setq ENTDATA (entget SUBENTNAME)))))
(set (read (cdr (assoc 2 ENTDATA))) (cdr (assoc 1 ENTDATA)))
(setq SUBENTNAME (entnext SUBENTNAME))
)
(setq INDEX2 0)
(command "insert" NEWBLOCKNAME INSPOINT "xyz" XSCALE YSCALE ZSCALE
ROTATION)
(while (< INDEX2 (length ATTLIST))
(setq VALUE (eval (read (nth INDEX2 ATTLIST))))
(if VALUE
(command VALUE)
(progn
(command "")
(setq LOSSFLAG t)
)
)
(set (read (nth INDEX2 ATTLIST)) NIL)
(setq INDEX2 (1+ INDEX2))
)
(entmod (subst (cons 8 LAYERNAME)
(assoc 8 (entget (entlast)))
(entget (entlast))))
(entdel MAINENTNAME)
(setq INDEX1 (1+ INDEX1))
(princ (strcat "\r"
(itoa INDEX1)
"/"
(itoa (sslength SSET))
" blocks updated."))
)
(command "ucs" "p")
(setvar "cmdecho" 1)
(setvar "attdia" 1)
(if LOSSFLAG
(princ
"\nWARNING! Due to non-identical tag names, some data may have been lost."))
(princ (strcat "\n"
(itoa (sslength SSET))
" occurrences of block "
BLOCKNAME
" updated successfully."))
(if (/= BLOCKNAME NEWBLOCKNAME)
(princ (strcat "\nBlock was renamed to " NEWBLOCKNAME ".")))
(princ)
)
(princ "ATTUPDATE ver 1.0 loaded.")
(princ)
THIS CODE IS FOR AREA AND WANTED TO KNOW IF IT TO IS OUT OF DATE? COULD YOU ALSO HELP WITH THIS ONE?
Bookmarks