乐筑天下

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

[编程交流] 检查和/或创建图层

[复制链接]

11

主题

38

帖子

27

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 07:04:55 | 显示全部楼层 |阅读模式
我正在寻找一些关于如何改善这一习惯的帮助或建议。它按原样工作,但我认为这不是做我想做的事情的最佳方式。
 
我们在图形中有一个称为“a-HIST”的图层,我们所做的是将该图层上的所有对象移动到一个称为“a-HIST-2012”的新图层。但如果这已经存在,我希望命令结束。如果没有,则创建层并将所有内容移动到其中。这项工作做得很好。如果“A-HIST”不存在,或者如果我在该层上没有任何对象,那么它就会失败。所以我简单地添加了一条线,并在最后删除它。有更好的方法吗。谢谢
 
  1. (defun C:layerhist2012 ()
  2. (vl-load-com)
  3. (setq layers
  4. (vla-get-layers
  5.    (vla-get-activedocument
  6.      (vlax-get-acad-object)
  7.    )
  8. )
  9. )
  10. (if
  11.    (not
  12.      (vl-catch-all-error-p
  13. (setq mylayer
  14.        (vl-catch-all-apply
  15.   'vla-item
  16.   (list layers "A-HIST-2012")
  17.        )
  18. )
  19.      )
  20.    )
  21.     (princ "\nLayer A-HIST-2012 was found!")
  22.     (c:layerhist)
  23. )
  24. (princ)
  25. )
  26. (defun c:layerhist ()
  27. (command "-layer" "make" "A-HIST-2012" "ltype" "PHANTOM" "" "")
  28. (vl-load-com)
  29. (setq layers
  30. (vla-get-layers
  31.    (vla-get-activedocument
  32.      (vlax-get-acad-object)
  33.    )
  34. )
  35. )
  36. (if
  37.    (not
  38.      (vl-catch-all-error-p
  39. (setq mylayer
  40.        (vl-catch-all-apply
  41.   'vla-item
  42.   (list layers "A-HIST")
  43.        )
  44. )
  45.      )
  46.    )
  47.     (princ "\nLayer A-HIST was found!")
  48.     (c:changehist)
  49. )
  50. (princ)
  51. )
  52. (defun c:changehist ()
  53. (command "-layer" "make" "A-HIST" "ltype" "PHANTOM" "" "")
  54. (command "line" "0,0" "1,1" "")
  55. (setq $blk (ssget "x" '((8 . "A-HIST"))))
  56. (command "change" $blk "" "Properties" "layer" "A-HIST-2012" "")
  57. (command "erase" "last" "")
  58. (princ)
  59. )
  60. (defun c:HIST2012 ()
  61. (setq echo$ (getvar 'cmdecho))
  62. (setvar "cmdecho" 0)
  63. (setq CLayer$ (getvar "clayer"))
  64. (setq $tilemode (getvar "tilemode"))
  65. (command "tilemode" "1")
  66. (c:layerhist2012)
  67. (setvar "clayer" CLayer$)
  68. (command "-layer" "freeze" "a-hist-2012,a-hist" "")
  69. (setvar "tilemode" $tilemode)
  70. (setvar "cmdecho" echo$)
  71. (princ)
  72. )
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 07:15:30 | 显示全部楼层
 
只是一种不同的方法
 
 
  1. (defun c:test ()
  2. (if (tblsearch "LAYER" "A-HIST")
  3.    (command "._-rename" "la" "A-HIST" "A-HIST-2012")
  4. )
  5. (princ)
  6. )

 
亨里克
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 07:21:47 | 显示全部楼层
Henrique您必须检查新层名称是否也不存在。
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 07:30:55 | 显示全部楼层
哎呀。。。我的错
 
 
  1. (defun c:test ()
  2. (if (and (tblsearch "LAYER" "A-HIST")
  3.    (not (tblsearch "LAYER" "A-HIST-2012"))
  4.      )
  5.    (command "._-rename" "la" "A-HIST" "A-HIST-2012")
  6.    (prompt "\nLayer A-HIST-2012 already exists! ")
  7. )
  8. (princ)
  9. )

 
亨里克
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 07:42:16 | 显示全部楼层
稍微不同的适应:
 
  1. (vl-load-com)
  2. (defun c:FOO (/ newName oldName)
  3. (if (tblsearch "layer" (setq newName "A-HIST-2012"))
  4.    (prompt "\n** Layer "A-HIST-2012" already exists ** ")
  5.    (if (tblsearch "layer" (setq oldName "A-HIST"))
  6.      (vla-put-name
  7.        (vla-item (vla-get-layers
  8.                    (vla-get-activedocument (vlax-get-acad-object))
  9.                  )
  10.                  oldName
  11.        )
  12.        newName
  13.      )
  14.    )
  15. )
  16. (princ)
  17. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:49:23 | 显示全部楼层
你可能会发现这个有趣的帖子:
http://www.cadtutor.net/forum/showthread.php?65302&p=447101&viewfull=1#post447101
回复

使用道具 举报

11

主题

38

帖子

27

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 07:50:58 | 显示全部楼层
谢谢RenderMan,这很有效。
回复

使用道具 举报

11

主题

38

帖子

27

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 08:04:22 | 显示全部楼层
嘿,李,谢谢你给我那个帖子的链接。这是一个有趣的帖子。我把它保存起来以备将来参考。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:11:38 | 显示全部楼层
 
不客气,我希望这能有所帮助。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 10:23 , Processed in 1.229181 second(s), 70 queries .

© 2020-2025 乐筑天下

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