;; bindAndDetachXrefs.lsp ;; ;; bind and detach all xrefs, detach missing ;; ;; Created by Peter Gyetvai ;; gyetpet@mailbox.org (defun C:bindXrefs (/ really blk blklist xrefpath xreflist) (vl-load-com) (graphscr) ;; Select all blocks and xrefs in model space (foreach x (mapcar 'cadr (ssnamex (ssget "_X" '((0 . "INSERT") (410 . "MODEL"))))) (setq blk (cdr (assoc 2 (entget x)))) (setq blklist (append blklist (list blk))) ) ;; Clean duplicates (setq blklist (LM:Unique blklist)) ;; Create a list of found xrefs ;; Removed this part, because it fails if the xrefs name differs from the filename: ;; (setq i 0);counter to zero ;; (setq imax 1);while variable ;; (while imax ;; (setq xrefpath (findfile (strcat (nth i blklist)))) ;; (if xrefpath ;; (progn ;; (setq xreflist (append xreflist (list (nth i blklist)))) ;; (princ (strcat "Xref found: " (nth i blklist) ".dwg\n")) ;; ) ;; ) ;; (setq i (1+ i));increments i ;; (if (= i (length blklist)) (setq imax nil));finish function if i equals il ;; ) ;; Show prompt only if there are xrefs in the file: ;; (if xreflist ;; (progn (initget 1 "Yes No") (setq really (getkword "Bind xrefs? [Yes/No]")) (if (= really "Yes") (progn (setq i 0);counter to zero (setq imax 1);while variable (while imax ;; (command "_.-xref" "_bind" (nth i xreflist)) (command "_.-xref" "_bind" (nth i blklist)) (setq i (1+ i));increments i ;; (if (= i (length xreflist)) (setq imax nil));finish function if i equals il (if (= i (length blklist)) (setq imax nil));finish function if i equals il ) ) ) ;; ) ;; (princ "No xref found in model space.") ;; ) ) ;; Unique - Lee Mac ;; Returns a list with duplicate elements removed. (defun LM:Unique ( l ) (if l (cons (car l) (LM:Unique (vl-remove (car l) (cdr l))))) )