脚本文件
需要创建一个脚本文件来运行下面的lisp例程,需要打开*。文件夹中的dwg文件一次一个,然后运行lisp例程,保存文件,然后关闭文件,然后打开目录中的下一个文件。非常感谢您的帮助。
; (purge-unreferenced-images)
(defun purge-unreferenced-images (/ ss1 ctr id symlst enamelst delent vl_delent ipath iname tmp)
(defun remlst (/ tmp1)
(setq
tmp (length (member (cdr (assoc 340 (entget delent))) enamelst))
)
(repeat (- (length symlst) tmp)
(setq tmp1 (cons (car symlst) tmp1))
(setq symlst (cdr symlst))
)
(setq tmp (list (car symlst)))
(setq symlst (append (reverse tmp1) (cdr symlst)))
)
(defun massoc (key alist / x nlist)
(foreach x alist
(if (eq key (car x))
(setq nlist (cons (cdr x) nlist))
)
)
(reverse nlist)
)
(vl-load-com)
(setq ss1 (ssget "x" '((0 . "IMAGE"))))
(setq ctr 0)
(setq id (dictsearch (namedobjdict) "acad_image_dict"))
(setq symlst (massoc 3 id))
(setq enamelst (massoc 350 id))
(if ss1
(progn
(while (< ctr (sslength ss1))
(setq delent (ssname ss1 ctr))
(setq vl_delent (vlax-ename->vla-object delent))
(setq ipath (vla-get-ImageFile vl_delent))
(remlst)
(setq iname (strcat (vl-filename-base ipath) (vl-filename-extension ipath)))
(if (and (not (findfile ipath))
(not (findfile iname))
)
(progn
(dictremove (cdr (car id)) (car tmp))
(append tmp symlst)
(ssdel delent ss1)
(vla-delete vl_delent)
)
(progn
(setq ctr (1+ ctr))
)
)
)
)
)
(while symlst
(dictremove (cdr (car id)) (car symlst))
(setq symlst (cdr symlst))
)
)
(defun c:PUI()
(purge-unreferenced-images)
(princ)
)
(princ)
http://www.lee-mac.com/scriptwriter.html 您可以使用我的脚本编写器程序执行此任务。
假设您的LISP文件名为“purge unreferenced images.lsp”,“脚本行”如下所示:
_.open *file* (load "purge-unreferenced-images.lsp" nil) (if purge-unreferenced-images (purge-unreferenced-images)) _.qsave _.close 谢谢大家。。。你们是救生员
页:
[1]