这是我前一段在网上见到的,下来学习学习可有些地方没看懂,望大侠指点。它最终完成的是什么 (defun c:pl_pur () ;;按选择目录对文件批量提纯纠错 ;;(c:pl_pur) (VL-LOAD-COM) (setq AcadObject (vlax-get-acad-object) AcadDocument (vla-get-ActiveDocument Acadobject) mSpace (vla-get-ModelSpace Acaddocument)) (setvar "CMDECHO" 0) (setq pff (dos_getfilem "请选择处理的文件,如果只选择其中一幅,则将目录下图形全部选择" (if (= filepath nil) (getvar "TEMPPREFIX") filepath) "Drawing files (*.dwg)|*.dwg||")) (setq delete_list (list (list "INSERT" "CASS40") (list "INSERT" "njcknfy") (list "INSERT" "njck1"))) (if (/= nil pff) (progn (cond ((= (length pff) 2) (progn (setq filepath (car pff)) (setq pff_aa (vl-directory-files filepath "*.dwg" 1)))) ((> (length pff) 2) (progn (setq filepath (car pff)) (setq pff_aa (cdr pff)))) (t nil)) (setq pff_i 0) (repeat (length pff_aa) (setq Docsets (vla-get-Documents (vla-get-application AcadDocument))) (setq NewDrawing1 (vla-open Docsets (strcat filepath (nth pff_i pff_aa)))) (vla-purgeall NewDrawing1) 以下部分看也看不懂,指点一下 (vla-auditinfo NewDrawing1 :vlax-true) (setq groupssel (vla-get-groups NewDrawing1)) (vlax-for obj groupssel (vla-delete obj)) (setq delete_i 0 mode acselectionsetall) (setq old_EXTMIN (vla-getvariable NewDrawing1 "EXTMIN") old_EXTMAX (vla-getvariable NewDrawing1 "EXTMAX") ssetobj nil) (while (nth delete_i delete_list) (if (= ssetobj nil) (setq ssetobj (vla-add (vla-get-selectionsets NewDrawing1) "SSET")) (vla-clear ssetobj)) (setq filter_code (vlax-make-safearray vlax-vbinteger '(0 . 1))) (setq filter_value (vlax-make-safearray vlax-vbvariant '(0 . 1))) (vlax-safearray-fill filter_code '(0 2)) (vlax-safearray-fill filter_value (nth delete_i delete_list)) (vla-select ssetobj mode old_EXTMIN old_EXTMAX filter_code filter_value) (vlax-for blkobj ssetobj (vla-delete blkobj)) (setq delete_i (1+ delete_i))) (vla-save NewDrawing1) (vla-close NewDrawing1) (setq pff_i (1+ pff_i))))) (alert (strcat "\n批量提纯纠错完成,共处理了" (itoa (length pff_aa)) "幅图!"))) |