审核/清除/快速LSP
大家好,这里是LSP新手,长期使用AutoCAD。
与各种顾问合作,不得不将他们的图纸整合到我们的图纸(室内设计)中,我们的图纸变得堆满了废话。。
有没有人有一个LSP例程,它会在“打开”文件时自动运行以审核/清除所有/快速保存?
我需要一个步骤,在哪里保存它,如何让它工作也请!!
非常感谢您的帮助!
谢谢 1-使用所需的名称(我提供APQC.LSP)将以下代码保存在AutoCAD support文件夹中。
;;; APQC.LSP, Audit-->Purge-->Qsave-->Close
;;; Mehre Taban Co., Mehrdad Ahankhah, www.irancad.com, ahankhah@irancad.com
(vl-load-com)
(defun C:APQC ()
(MT:Do:Audit)
(MT:Do:PurgeAllNested)
(if (MT:Do:Qsave)
(MT:Do:CloseDwg)
)
)
(defun MT:Do:Audit () (command "_.Audit" "y" ""))
(defun MT:Do:PurgeAllNested (/ Cont)
(princ "\nPurging unused objects...\n")
(setq Cont T)
(while Cont
(MT:Do:PurgeALL)
(if (zerop (boole 1 1 (getvar 'Dbmod)))
(progn (acad-pop-dbmod) (setq Cont nil))
(progn (acad-pop-dbmod)
(if (not (zerop (getvar 'Dbmod)))
(progn (MT:Do:Qsave) (acad-pop-dbmod))
)
(princ "\n\tPurging unused nested objects...")
) ; if false
) ; if
) ; while
(princ "\nPurging unused objects done.\n")
)
(defun MT:Do:PurgeALL ()
(vla-PurgeAll
(vla-get-ActiveDocument
(vlax-get-acad-object)
)
); Visual Lisp version
;;(command "_.PURGE" "_All" "*" "_No"); AutoLISP version
)
(defun MT:Do:Qsave (/ ret)
(if (zerop (getvar "Dwgtitled"))
(progn (alert "Drawing has no name, QSAVEing is not probable.")
(setq ret nil)
)
(progn (command "_.QSAVE") (setq ret T))
)
ret
)
(defun MT:Do:CloseDwg ()
(command "_.CLOSE")
(and (= 1 (getvar 'cmdactive)) (command "_Yes"))
)
(C:APQC)
2-打开AutoCAD。
3-发布APPLOAD。
4-在对话框中,选择“启动套件”区域中的内容按钮。
5-选择“APQC.LSP”将其添加到列表中。
6-关闭APPLOAD对话框。
7-将图形拖动到AutoCAD GUI中除“绘图区域”之外的任何点。
8-等待,看看所有的图纸是如何处理一个接一个。
9-完成任务后,转至步骤3。现在,您必须从启动套件的内容列表中删除“APQC.LSP”。 另请参阅本页最后一个回复下方的“类似线程”部分。这也应该有帮助-大卫 你好
感谢您的回复,
您的代码运行良好,但在审核和清除后关闭了图形,
我希望图纸保持开放,这样我可以继续工作。
我试图删除最后几行代码,但这不可原谅地在循环中造成了问题,因此它不再工作,
有没有办法删除代码中的“关闭绘图”部分,然后让其余部分继续工作?
干杯 快速修改,我希望Mehrdad不会介意:
;;; APQC.LSP, Audit-->Purge-->Qsave-->Close
;;; Mehre Taban Co., Mehrdad Ahankhah, www.irancad.com, ahankhah@irancad.com
;;; Modified by Lee Mac - 20.06.11 in places marked 'LM'
(vl-load-com)
(defun C:APQC nil
(MT:Do:Audit)
(MT:Do:PurgeAllNested)
;;; (if
(MT:Do:Qsave)
;;; (MT:Do:CloseDwg)
;;; )
)
(defun MT:Do:Audit nil (command "_.Audit" "y" ""))
(defun MT:Do:PurgeAllNested (/ Cont)
(princ "\nPurging unused objects...\n")
(setq Cont T)
(while Cont
(MT:Do:PurgeALL)
(if (zerop (boole 1 1 (getvar 'Dbmod)))
(progn (acad-pop-dbmod) (setq Cont nil))
(progn (acad-pop-dbmod)
(if (not (zerop (getvar 'Dbmod)))
(progn (MT:Do:Qsave) (acad-pop-dbmod))
)
(princ "\n\tPurging unused nested objects...")
) ; if false
) ; if
) ; while
(princ "\nPurging unused objects done.\n")
)
(defun MT:Do:PurgeALL nil
(or *acdoc (setq *acdoc (vla-get-activedocument (vlax-get-acad-object))));; LM
(vla-PurgeAll *acdoc) ;; LM
)
(defun MT:Do:Qsave (/ ret)
(if (zerop (getvar "Dwgtitled"))
(progn (alert "Drawing has no name, QSAVEing is not probable.")
(setq ret nil)
)
(progn (command "_.QSAVE") (setq ret T))
)
ret
)
;;;(defun MT:Do:CloseDwg nil
;;; (command "_.CLOSE")
;;; (and (= 1 (getvar 'cmdactive)) (command "_Yes"))
;;
(C:APQC) 李,太棒了,非常感谢 李,非常感谢你所做的漂亮而有用的修改。
页:
[1]