选择外部参照lisp
谁能告诉我如何选择图形中的所有外部参照并将其移动到特定图层(440\u XREF)?我已经尝试了与此主题相关的所有其他帖子,但不幸的是,我对编码的知识没有扩展到:
(setq sel1(ssget“x”'((0。“插入”)))
这将选择所有块,包括外部参照,但我不知道如何过滤它们。
谢谢
(defun c:xreflist (/ tdef xl)
(while (setq tdef (tblnext "BLOCK" (not tdef)))
(if (= (logand (cdr (assoc 70 tdef)) 4) 4)
(setq xl (cons (cdr (assoc 2 tdef)) xl))))
xl)
您必须检查每个块表定义,以确定该块是否为外部参照
使用(tblnext)逐步完成块表定义
如果设置了块标志(组70)4位,
然后将块名(组2)添加到列表“xl”中
xl是包含找到的外部参照名称的列表
问题在于,其中一些块可能嵌套在其他外部参照中,因此CHPROP无法操作图层。
或者可以简单到:
(foreach b xl
(if (setq ss (ssget "X" (list (cons 0 "INSERT")(cons 2 b))))
(command "_.CHPROP" ss "" "_LA" "440_XREF" "")))
HTH-David 谢谢David,
它起作用了 你也可以这样做
(setq xr_dwg (vla-get-activedocument (vlax-get-acad-object))
xr_blk (vla-get-blocks xr_dwg))
(vlax-for blk xr_blk
(if (= (vla-get-IsXRef blk) :vlax-true)
(setq xl (cons (vla-get-name blk) xl))
)
)
并使用了daivds的第二部分
pBe做得很好。
请问如何获取外部参照图纸的完整路径?
非常感谢
(setq xr_dwg (vla-get-activedocument (vlax-get-acad-object))
xr_blk (vla-get-blocks xr_dwg))
(vlax-for blk xr_blk
(if (= (vla-get-IsXRef blk) :vlax-true)(progn
(setq xl (cons (vla-get-name blk) xl))
(print (vla-get-path blk))(princ))
)
)
只需添加(vla get path.)
给你
谢谢michaels 精彩的pBe。
非常感谢您的时间和快速回复。
非常感谢。
迈克尔。
页:
[1]