乐筑天下

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

[编程交流] 使用创建新的相同层

[复制链接]

76

主题

312

帖子

254

银币

后起之秀

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

铜币
390
发表于 2022-7-5 17:00:31 | 显示全部楼层 |阅读模式
大家好,
我遇到了另一个我自己无法解决的挑战。
 
比如说我画了一幅画
-“B-LINELAYER”层上有20行
-“B-BLOCKLAYER”层上有6个块
-还有一个以“B”开头的图层。
 
现在我想运行我的命令。能够选择对象。(所有内容都允许删除锁定层)。然后键入“V”。
假设我在“B-LINELAYER”层上选择了10条线。我想把它们移到“V-LINELAYER”层。如果该层不存在,则需要使用原始层“B-LINELAYER”的精确属性进行制作。
这样,我可以给某些行/块一个特定的“状态”。Tho,它们在屏幕上显示相同。
 
到目前为止,我自己做到了:
-选择对象(除锁定层外的所有层)
-选择:B V或T(我使用的3种状态)
-如果没有选择,什么都不会发生。
-如果选择,则获取对象的数量并为每个对象运行循环。
但是现在。。。变化的部分。。。有什么想法吗?
 
 
  1. (defun C:ChangeStatus(/ objecten nieuwestatus n index)
  2. (setq objecten (ssget ":L"))
  3. (initget "B V T")
  4. (setq nieuwestatus (getkword "\nChange to status [bestaand Vervallen Tijdelijk]: "))
  5. (if (= nieuwestatus nil)
  6.         (progn
  7.         (princ "\nNothing changed.")
  8.         )
  9.         (progn
  10.         (princ "\nChange status...")
  11.         (setq n (sslength objecten))
  12.         (setq index 0)
  13.                 (repeat n
  14. [color="red"]                        <something here>[/color]
  15.                 (setq index (1+ index))
  16.                 )
  17.         )
  18. )
  19. (princ)
  20. )
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 18:01:16 | 显示全部楼层
嗨,这里有一些提示:
 
更改某些实体的层(在本例中,所选实体位于“VLD\U AnnotateLINES”层,我们将其更改为“VLD\U TEXT”层):
  1. _$ (setq e (car (entsel))) ; get some ename
  2. <Entity name: 7ff70ce073a0>
  3. _$ (setq enx (entget e)) ; get entity's data
  4. ((-1 . <Entity name: 7ff70ce073a0>) (0 . "CIRCLE") (330 . <Entity name: 7ff70ce039f0>) (5 . "2B2") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "VLD_AnnotateLINES") (100 . "AcDbCircle") (10 177.098 166.179 0.0) (40 . 13.7554) (210 0.0 0.0 1.0))
  5. _$ (setq enx (subst (cons 8 "VLD_TEXT") (assoc 8 enx) enx)) ; change (substitute) the layer association of its data
  6. ((-1 . <Entity name: 7ff70ce073a0>) (0 . "CIRCLE") (330 . <Entity name: 7ff70ce039f0>) (5 . "2B2") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "VLD_TEXT") (100 . "AcDbCircle") (10 177.098 166.179 0.0) (40 . 13.7554) (210 0.0 0.0 1.0))
  7. _$ (entmod enx) ; modify the entity
  8. ((-1 . <Entity name: 7ff70ce073a0>) (0 . "CIRCLE") (330 . <Entity name: 7ff70ce039f0>) (5 . "2B2") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "VLD_TEXT") (100 . "AcDbCircle") (10 177.098 166.179 0.0) (40 . 13.7554) (210 0.0 0.0 1.0))
  9. _$

迭代选择集(最常见的方法):
  1. (if
  2. (setq SS
  3.         (ssget "_:L" ; exclude locked layers
  4.                 (list (cons 8 "B-LINELAYER,B-BLOCKLAYER")) ; filter the selection by these layers [optional]
  5.         )
  6. ); setq       
  7. (repeat (setq i (sslength SS)) ; iterate thru the selection set
  8.         (setq e (ssname SS (setq i (1- i)))) ; get an ename
  9.         ; < do stuff with that ename >
  10. ); repeat
  11. ); if SS

希望你能学到一些东西。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 08:30 , Processed in 0.426747 second(s), 56 queries .

© 2020-2025 乐筑天下

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