Files
2020-02-06 00:47:18 +01:00

72 lines
2.0 KiB
Common Lisp

;; 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)))))
)