清除Lisp
我有这个:(defun c:ax:purge-layers (doc except)
(vlax-for item (vla-get-layers doc)
(setq ln (vla-get-name item))
(if (not (member (strcase ln) except))
(purge-layer ln)
)
)
)
(defun c:DeleteLayerFilters ()
(vl-Catch-All-Apply
'(lambda ()
(vla-Remove
(vla-GetExtensionDictionary
(vla-Get-Layers
(vla-Get-ActiveDocument (vlax-Get-Acad-Object))
)
)
"ACAD_LAYERFILTERS"
)
)
)
(princ)
)
(defun c:DeleteLayerFilters2 ()
(vl-Catch-All-Apply
'(lambda ()
(vla-Remove
(vla-GetExtensionDictionary
(vla-Get-Layers
(vla-Get-ActiveDocument (vlax-Get-Acad-Object))
)
)
"AcLyDictionary"
)
)
)
(princ)
)
(defun c:test ()
(command "_layer" "On" "0" "t" "0" "s" "0" "")
(command "_purge" "a" "*" "n")
(command "-purge" "r" "*" "n")
(C:DeleteLayerFilters)
(C:DeleteLayerFilters2)
(c:ax:purge-layers)
(if (= (getvar "tilemode") 1)
(prompt "\nModel is purged.")
(prompt "\nLayout is purged.")
)
(princ)
)
它正在工作,但没有提示,我得到的错误是:
命令:“参数太少”
谢谢你的帮助! 1.c:ax:purge layers不能是命令!这是一个函数(它有2个参数)
2.在本页中,我没有找到功能清除层
试试看(稍作改动)
;;; Purge named layer
;;; Example: (ax:purge-layer (vla-get-activedocument (vlax-get-acad-object)) "testlayer")
;;; Argument: doc {document}
;;; name {a layer name}
;;; Return values: T if successful, nil if not successful
(defun ax:purge-layer (doc name)
(if (vl-catch-all-error-p
(vl-catch-all-apply
'vla-delete
(list (vl-catch-all-apply
'vla-item
(list (vla-get-layers doc) name)
)
)
)
)
nil ; name cannot be purged or doesn't exist
T ; name purged
)
)
;;; Purge all layers
;;; Example: (ax:purge-all-layers (vla-get-activedocument (vlax-get-acad-object
;;; Argument: doc {document}
(defun ax:purge-all-layers (doc)
(vlax-for item (vla-get-layers doc)
(ax:purge-layer doc (vla-get-name item))
)
)
(defun DeleteLayerFilters ()
(vl-Catch-All-Apply
'(lambda ()
(vla-Remove
(vla-GetExtensionDictionary
(vla-Get-Layers
(vla-Get-ActiveDocument (vlax-Get-Acad-Object))
)
)
"ACAD_LAYERFILTERS"
)
)
)
(princ)
)
(defun DeleteLayerFilters2 ()
(vl-Catch-All-Apply
'(lambda ()
(vla-Remove
(vla-GetExtensionDictionary
(vla-Get-Layers
(vla-Get-ActiveDocument (vlax-Get-Acad-Object))
)
)
"AcLyDictionary"
)
)
)
(princ)
)
(defun c:test ()
(vl-load-com)
(command "_layer" "_On" "0" "_t" "0" "_s" "0" "")
;;;(command "_-purge" "_a" "*" "_n")
(repeat 3 (vla-purgeall (vla-get-activedocument (vlax-get-acad-object))))
(command "_-purge" "_r" "*" "_n")
(DeleteLayerFilters)
(DeleteLayerFilters2)
(ax:purge-all-layers (vla-get-activedocument (vlax-get-acad-object)))
(if (= (getvar "tilemode") 1)
(alert "Model is purged.")
(alert "Layout is purged.")
)
(princ)
) 函数
(defun c:ax:purge-layers (doc except)
需要两个参数,即“doc”和“except”。
调用函数时需要指定这些参数。
如果像上面这样的函数要在另一个函数中调用,而不是单独调用,为什么不将它们指定为局部函数呢
即
(defun ax:清除图层。。。 哦,VVA,在那里比我快几分钟 为什么很少?只有一个:眨眼:
好吧,那么只有一个——我没有仔细看《泰晤士报》。。。我最诚挚的歉意:哎呀::哎呀::哎呀:
页:
[1]