daisenson 发表于 2022-7-6 10:20:31

选择外部参照lisp

谁能告诉我如何选择图形中的所有外部参照并将其移动到特定图层(440\u XREF)?
 
我已经尝试了与此主题相关的所有其他帖子,但不幸的是,我对编码的知识没有扩展到:
 
(setq sel1(ssget“x”'((0。“插入”)))
这将选择所有块,包括外部参照,但我不知道如何过滤它们。
 
谢谢

David Bethel 发表于 2022-7-6 10:35:07


(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

daisenson 发表于 2022-7-6 10:50:15

谢谢David,
 
它起作用了

pBe 发表于 2022-7-6 10:55:50

你也可以这样做
 

(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的第二部分

Michaels 发表于 2022-7-6 11:01:30

 
pBe做得很好。
 
请问如何获取外部参照图纸的完整路径?
 
非常感谢

pBe 发表于 2022-7-6 11:11:51


(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

Michaels 发表于 2022-7-6 11:21:27

精彩的pBe。
 
非常感谢您的时间和快速回复。
 
非常感谢。
 
迈克尔。
页: [1]
查看完整版本: 选择外部参照lisp