;| FindFakeDims.lsp -- Find Fake Dimensions This routine identifies dimensions on editable layers whose dimension text has been overridden, and puts them on the Fake_Dims layer for further attention. If that layer does not exist, it will be created. Notes: 1) This routine will leave alone dimension text strings that contain <>, like <>(TYP) or %%p<>, since these do report a true dimension. 2) On-screen selection will not include dimensions on layers that are turned OFF. Entering 'all' at the keyboard, however, *will* select and modify dimensions on layers that are turned OFF. Neither method will affect dimensions on locked or frozen layers. Usage: Command: FINDFAKEDIMS Select dimensions to be examined: Select objects: 498 found 98 were on a locked layer. Select objects: 400 dimension(s) examined. 21 faked dimension(s) identified and put on layer Fake_Dims by Bill Gilliss bill at realerthanreal dot com Comments and suggestions always welcome. No warranty, either expressed or implied, is made as to the fitness of this information for any particular purpose. All materials are to be considered 'as-is', and use thereof should be considered as at your own risk. v 1.00 2008-03-04 - initial public release v 1.10 2010-02-14 - error-handling Keywords: AutoCAD AutoLISP identify dimension text override ======================================================================= |; (defun c:findfakedims ( / ss ed n dt new old count *cmdecho fakelayer myerror olderror) (defun myerror (msg) (setvar 'cmdecho *cmdecho) (setq *error* olderror) ) (setq olderror *error*) (setq *error* myerror) (setq *cmdecho (getvar 'cmdecho)) (setvar 'cmdecho 0) (setq fakeLayer "Fake_Dims") ;;==== layer name may be changed here === (if (not (tblsearch "LAYER" fakelayer)) (command "._-layer" "_new" fakeLayer "_color" 6 fakeLayer "") (command "._-layer" "_thaw" fakeLayer "_on" fakelayer "") ) (prompt "\nSelect dimensions to be examined: ") (setq ss (ssget ":L" '((0 . "DIMENSION")))) ;;ignore locked layers (if ss (progn (setq n 0) (setq count 0) (while (< n (sslength ss)) (setq ed (entget (ssname ss n))) (setq dt (cdr (assoc 1 ed))) (if (not (or (= dt "") (wcmatch dt "*<>*"))) (progn (setq count (1+ count) old (assoc 8 ed) new (cons 8 fakeLayer) ed (subst new old ed) ) (setq old (assoc 62 ed) new (cons 62 256) ;;bylayer ed (subst new old ed) ) (entmod ed) );progn ):if (setq n (1+ n)) );while (princ (strcat "\n" (itoa n) " dimension(s) examined.")) (princ (strcat "\n" (itoa count) " faked dimension(s) identified and put on layer " fakelayer)) ) (princ "No dimensions were selected.") ) (myerror) ;cleanup (princ) );defun (prompt "FindFakeDims loaded.") (princ)