乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 64|回复: 11

[编程交流] 将层移动到冻结层

[复制链接]

3

主题

17

帖子

14

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 12:54:38 | 显示全部楼层 |阅读模式
你好!!
 
我有一个任务,将几个对象移动到几个图形中的冻结层,我只是在想是否有一种方法可以在批处理模式下做到这一点。如果有解决方案的话,我在这个论坛上查看了一下,没有任何运气。
 
我想lisp必须创建一个冻结层,然后将对象移动到该冻结层。这可能吗?
 
谢谢你的帮助!
 
同时,我使用设计中心插入隐藏层,并将对象移动到该层。。。这是我永远。。。lol.{(
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:04:41 | 显示全部楼层
是的,您可以使用VL在所有打开的图形中迭代,并根据需要移动对象,需要移动哪些对象以及移动到哪个层?
回复

使用道具 举报

3

主题

17

帖子

14

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 13:07:37 | 显示全部楼层
谢谢李的快速回复!
 
对不起,我的无知,但是什么是“LV”?
 
有两个物体:
 
一个是仅具有属性的块。系统层。
第二个是每张图中大约4条线和2个圆的平均值。N-LNWK-MEDM层
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:14:17 | 显示全部楼层
首先,VL是Visual LISP。
 
对象是否要在其自己的层上移动?如何从图纸中的所有其他内容中确定它们?
回复

使用道具 举报

3

主题

17

帖子

14

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 13:18:46 | 显示全部楼层
这就是问题所在,我必须选择我想移动到冻结层的对象,因为还有其他对象我不想在冻结层上。
 
这太难了!哈
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:22:59 | 显示全部楼层
如果没有什么可以用来确定这些对象,那么自动化恐怕是不可能的。。。
 
一个LISP可以很容易地加快手动选择过程,但。。。
回复

使用道具 举报

3

主题

17

帖子

14

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 13:28:59 | 显示全部楼层
是 啊我想是的!但最好有一个lisp,可以创建一个隐藏层,并选择我需要移动到该层的对象。
 
谢谢你的帮助!!
 
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:34:44 | 显示全部楼层
也许这样就足够了:
 
  1. (defun c:mfrz (/ lay doc ss1 sel1 ss2 sel2)
  2. (vl-load-com)
  3. (setq lay
  4.    (vla-get-layers
  5.      (setq doc
  6.        (vla-get-ActiveDocument
  7.          (vlax-get-acad-object)))))
  8. (mapcar
  9.    (function
  10.      (lambda (Name)
  11.        (if (not (tblsearch "LAYER" Name))
  12.          (vla-put-freeze
  13.            (vla-add lay Name) :vlax-true))))
  14.    '("SYSM LAYER" "N-LNWK-MEDM LAYER"))
  15. (prompt "\nSelect Blocks for Layer: 'SYSM LAYER' ...")
  16. (if (setq ss1 (ssget '((0 . "INSERT") (66 . 1))))
  17.    (progn
  18.      (vlax-for Obj (setq sel1 (vla-get-ActiveSelectionSet doc))
  19.        (vla-put-layer Obj "SYSM LAYER"))
  20.      (vla-delete sel1)))
  21. (prompt "\nSelect Objects for Layer: 'N-LNWK-MEDM LAYER' ...")
  22. (if (setq ss2 (ssget '((0 . "LINE,CIRCLE"))))
  23.    (progn
  24.      (vlax-for Obj (setq sel2 (vla-get-ActiveSelectionSet doc))
  25.        (vla-put-layer Obj "N-LNWK-MEDM LAYER"))
  26.      (vla-delete sel2)))
  27. (princ))
回复

使用道具 举报

3

主题

17

帖子

14

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 13:38:33 | 显示全部楼层
非常感谢!!它工作得很好!
 
可以修改以选择圆弧和多段线吗。
 
谢谢,这将帮助我加快工作速度。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:44:10 | 显示全部楼层
这还包括样条曲线:
 
  1. (defun c:mfrz (/ lay doc ss1 sel1 ss2 sel2)
  2. (vl-load-com)
  3. (setq lay
  4.    (vla-get-layers
  5.      (setq doc
  6.        (vla-get-ActiveDocument
  7.          (vlax-get-acad-object)))))
  8. (mapcar
  9.    (function
  10.      (lambda (Name)
  11.        (if (not (tblsearch "LAYER" Name))
  12.          (vla-put-freeze
  13.            (vla-add lay Name) :vlax-true))))
  14.    '("SYSM LAYER" "N-LNWK-MEDM LAYER"))
  15. (prompt "\nSelect Blocks for Layer: 'SYSM LAYER' ...")
  16. (if (setq ss1 (ssget '((0 . "INSERT") (66 . 1))))
  17.    (progn
  18.      (vlax-for Obj (setq sel1 (vla-get-ActiveSelectionSet doc))
  19.        (vla-put-layer Obj "SYSM LAYER"))
  20.      (vla-delete sel1)))
  21. (prompt "\nSelect Objects for Layer: 'N-LNWK-MEDM LAYER' ...")
  22. (if (setq ss2 (ssget '((0 . "ARC,*LINE,CIRCLE"))))
  23.    (progn
  24.      (vlax-for Obj (setq sel2 (vla-get-ActiveSelectionSet doc))
  25.        (vla-put-layer Obj "N-LNWK-MEDM LAYER"))
  26.      (vla-delete sel2)))
  27. (princ))
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-5 03:00 , Processed in 0.332608 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表