CAD 发表于 2022-7-5 15:59:09

lisp make layer manager curren

希洛,
 
是否有lisp可以使图层管理器特性过滤所有当前图层。
带命令:currentfilterall
 
见附件。

Grrr 发表于 2022-7-5 16:09:20

这里有一条“老”线索可能会有所帮助。

CAD 发表于 2022-7-5 16:15:04

您好,Grrrr,
 
哪种代码适合我?链接不知道是哪个代码?

Grrr 发表于 2022-7-5 16:19:25

该线程中的代码并没有完全解决您的问题,而是找到了如何创建属性过滤器,这可能有助于您未来的代码。
请附上样本图纸进行测试,因为还有一个问题,你使用“属性”还是“组”过滤器。

CAD 发表于 2022-7-5 16:32:04

谢谢你的回放,但是有Lisp程序的吗?去解决它?

Aftertouch 发表于 2022-7-5 16:35:09

我用这个:
 
加载LSP文件时执行命令:

(defun SETLAYERFILTER ( / )
(setvar "cmdecho" 0)
(command "UNDO" "BEGIN")
(setq i 0)
(vlax-for x (vla-get-blocks (vla-get-ActiveDocument (vlax-get-acad-object)))(if (eq (vla-get-IsXref x) :vlax-true)(setq i (1+ i))))
(if (>= i 1)(command "-Layer" "Filter" "Set" "All non-Xref Layers" ""))
(command "UNDO" "END")
(setvar "cmdecho" 1)
(princ)
)

(SETLAYERFILTER)

 
常规命令:

(defun C:SETLAYERFILTER ( / )
(setvar "cmdecho" 0)
(command "UNDO" "BEGIN")
(setq i 0)
(vlax-for x (vla-get-blocks (vla-get-ActiveDocument (vlax-get-acad-object)))(if (eq (vla-get-IsXref x) :vlax-true)(setq i (1+ i))))
(if (>= i 1)(command "-Layer" "Filter" "Set" "All non-Xref Layers" ""))
(command "UNDO" "END")
(setvar "cmdecho" 1)
(princ)
)

 
当DWG文件中存在外部参照时,AutoCAD会自动创建图层过滤器。
此命令检查是否存在外部参照,如果存在。。。滤波器也存在,因此其集合也存在。

CAD 发表于 2022-7-5 16:44:27

触摸后,
 
代码对我来说非常适合,正是我需要的,Thxxxxxxxxxx alottt Bedankt!!

Tharwat 发表于 2022-7-5 16:49:02

@触摸后良好的努力。
 
我只是想让你们注意一个重要的问题,你们可能想知道并从中学习,因为你们迭代块表的目的是知道当前图形中是否存在任何外部引用,所以最好停止迭代图形中的其余块,以使函数高效更快地工作。
 
除此之外,尽可能长时间使用DXF编码也是一个好主意。
 
请看一下下面的内容,我相信您可以了解代码的工作原理。
 

(while (and (not fnd)
         (setq blk (tblnext "BLOCK" (not blk)))
      )
(and (assoc 1 blk)
      (setq fnd t)
      (command "-Layer" "Filter" "Set" "All non-Xref Layers" "")
)
)

Aftertouch 发表于 2022-7-5 16:58:10

@塔瓦,你的右边。
 
我的编码首先检查所有块,并计算所有外部参照,其中一个匹配就足够了。
谢谢你的提示!

Tharwat 发表于 2022-7-5 16:59:18

 
欢迎你继续努力。
页: [1]
查看完整版本: lisp make layer manager curren