用Visual Basic撤消LISP
我想我遇到的问题与这里没有解决的问题相同。我试图将外部参照的所有图层设置为图层251。我在网上找到了两个代码,贴在下面。
CVX:
(defun c:cvx (/ ent_data);;changes all layers in selected xref to color 251
(setq ent_data (entget (car (entsel))))
(command "-layer" "Color" 251 (strcat (cdr (assoc 2 ent_data)) "*")"")
)
X251:
(defun C:X251 (/ EN L X ad layers)
(command "UNDO" "BEGIN")
(setq EN (nentsel "\nSelect Xref: ") L (cdr (assoc 8 (entget (car EN)))) X (substr L 1 (vl-string-position (ascii "|") L)) )
(setq AD (vla-get-ActiveDocument (vlax-get-Acad-Object)) layers (vla-get-Layers ad))
(if(/= (vl-string-search "|" L) nil)
(progn
(vlax-for layer layers
(if (/= (vl-string-search (strcatX "|") (vla-get-name layer)) nil)(vla-put-Color layer 251))
)
(command ".REGEN")
)
(princ "Not an Xref!")
)
(prin1)
(command "UNDO" "END")
)
我使用了CVX例程一段时间,直到我发现如果选择附着到覆盖外部参照的外部参照,它就不起作用。因此,我尝试切换到X251例程,但如果使用UNDO,则在重新生成图形之前不会反映更改。我尝试使用链接帖子中建议的撤销组,但结果没有改变。有什么建议吗? 尝试:
(defun c:cvx ( / lst) ; Changes all layers in selected xref to color 251.
(if
(and
(setq lst (nentsel))
(= 4 (length lst))
)
(command "_.-layer" "_color" 251 (strcat (cdr (assoc 2 (entget (car (cadddr lst))))) "|*") "")
)
(princ)
) 太好了,谢谢!
页:
[1]