firsrate_caduse 发表于 2022-7-6 12:54:38

将层移动到冻结层

你好!!
 
我有一个任务,将几个对象移动到几个图形中的冻结层,我只是在想是否有一种方法可以在批处理模式下做到这一点。如果有解决方案的话,我在这个论坛上查看了一下,没有任何运气。
 
我想lisp必须创建一个冻结层,然后将对象移动到该冻结层。这可能吗?
 
谢谢你的帮助!
 
同时,我使用设计中心插入隐藏层,并将对象移动到该层。。。这是我永远。。。lol.{(

Lee Mac 发表于 2022-7-6 13:04:41

是的,您可以使用VL在所有打开的图形中迭代,并根据需要移动对象,需要移动哪些对象以及移动到哪个层?

firsrate_caduse 发表于 2022-7-6 13:07:37

谢谢李的快速回复!
 
对不起,我的无知,但是什么是“LV”?
 
有两个物体:
 
一个是仅具有属性的块。系统层。
第二个是每张图中大约4条线和2个圆的平均值。N-LNWK-MEDM层

Lee Mac 发表于 2022-7-6 13:14:17

首先,VL是Visual LISP。
 
对象是否要在其自己的层上移动?如何从图纸中的所有其他内容中确定它们?

firsrate_caduse 发表于 2022-7-6 13:18:46

这就是问题所在,我必须选择我想移动到冻结层的对象,因为还有其他对象我不想在冻结层上。
 
这太难了!哈

Lee Mac 发表于 2022-7-6 13:22:59

如果没有什么可以用来确定这些对象,那么自动化恐怕是不可能的。。。
 
一个LISP可以很容易地加快手动选择过程,但。。。

firsrate_caduse 发表于 2022-7-6 13:28:59

是 啊我想是的!但最好有一个lisp,可以创建一个隐藏层,并选择我需要移动到该层的对象。
 
谢谢你的帮助!!
 

Lee Mac 发表于 2022-7-6 13:34:44

也许这样就足够了:
 

(defun c:mfrz (/ lay doc ss1 sel1 ss2 sel2)
(vl-load-com)

(setq lay
   (vla-get-layers
   (setq doc
       (vla-get-ActiveDocument
         (vlax-get-acad-object)))))

(mapcar
   (function
   (lambda (Name)
       (if (not (tblsearch "LAYER" Name))
         (vla-put-freeze
         (vla-add lay Name) :vlax-true))))
   '("SYSM LAYER" "N-LNWK-MEDM LAYER"))

(prompt "\nSelect Blocks for Layer: 'SYSM LAYER' ...")
(if (setq ss1 (ssget '((0 . "INSERT") (66 . 1))))
   (progn
   (vlax-for Obj (setq sel1 (vla-get-ActiveSelectionSet doc))
       (vla-put-layer Obj "SYSM LAYER"))
   (vla-delete sel1)))

(prompt "\nSelect Objects for Layer: 'N-LNWK-MEDM LAYER' ...")
(if (setq ss2 (ssget '((0 . "LINE,CIRCLE"))))
   (progn
   (vlax-for Obj (setq sel2 (vla-get-ActiveSelectionSet doc))
       (vla-put-layer Obj "N-LNWK-MEDM LAYER"))
   (vla-delete sel2)))

(princ))

firsrate_caduse 发表于 2022-7-6 13:38:33

非常感谢!!它工作得很好!
 
可以修改以选择圆弧和多段线吗。
 
谢谢,这将帮助我加快工作速度。

Lee Mac 发表于 2022-7-6 13:44:10

这还包括样条曲线:
 

(defun c:mfrz (/ lay doc ss1 sel1 ss2 sel2)
(vl-load-com)

(setq lay
   (vla-get-layers
   (setq doc
       (vla-get-ActiveDocument
         (vlax-get-acad-object)))))

(mapcar
   (function
   (lambda (Name)
       (if (not (tblsearch "LAYER" Name))
         (vla-put-freeze
         (vla-add lay Name) :vlax-true))))
   '("SYSM LAYER" "N-LNWK-MEDM LAYER"))

(prompt "\nSelect Blocks for Layer: 'SYSM LAYER' ...")
(if (setq ss1 (ssget '((0 . "INSERT") (66 . 1))))
   (progn
   (vlax-for Obj (setq sel1 (vla-get-ActiveSelectionSet doc))
       (vla-put-layer Obj "SYSM LAYER"))
   (vla-delete sel1)))

(prompt "\nSelect Objects for Layer: 'N-LNWK-MEDM LAYER' ...")
(if (setq ss2 (ssget '((0 . "ARC,*LINE,CIRCLE"))))
   (progn
   (vlax-for Obj (setq sel2 (vla-get-ActiveSelectionSet doc))
       (vla-put-layer Obj "N-LNWK-MEDM LAYER"))
   (vla-delete sel2)))

(princ))
页: [1] 2
查看完整版本: 将层移动到冻结层