乐筑天下

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

[编程交流] 从C-something中重新命名层

[复制链接]

6

主题

21

帖子

15

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 08:58:32 | 显示全部楼层 |阅读模式
我有一个绘图,我需要简单地将层的前导字母(C-***)更改为V-***。
 
无论如何要找到并替换?
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 09:02:17 | 显示全部楼层
查看RENAME命令。
C-*至V-*
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 09:06:24 | 显示全部楼层
试试这个baker,它是区分大小写的,这意味着(c-(小写字母)不等于c-(大写字母))。
 
代码优于命令调用。
  1. (defun c:TesT (/ nxt layrs Nme)
  2. ;; == TharwaT 01. 09. 2011 == ;;
  3. (while
  4.    (setq nxt (tblnext "LAYER" (null nxt)))
  5.     (setq
  6.       layrs
  7.        (entget (tblobjname "LAYER" (setq Nme (cdr (assoc 2 nxt)))))
  8.     )
  9.     (if (and (not (eq Nme "0"))
  10.              (eq (vl-string-search "C-" Nme 0) 0)
  11.         )
  12.       (entmod
  13.         (subst (cons 2 (vl-string-subst "V-" "C-" (cdr (assoc 2 layrs))))
  14.                (assoc 2 layrs)
  15.                layrs
  16.         )
  17.       )
  18.     )
  19. )
  20. (princ)
  21. )

 
塔瓦特
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:09:59 | 显示全部楼层
 
*咳嗽*wcmatch*咳嗽*
 
 
但我尽量不在可能的情况下重新发明轮子
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 09:12:38 | 显示全部楼层
 
我认为这是对层名称匹配的另一种访问,我同意在这种情况下,wcmatch函数比vl字符串搜索要好得多。
 
不管怎样,就这样。
 
欢迎发表意见。
 
  1. (defun c:TesT (/ nxt layrs Nme)
  2. ;; == TharwaT 01. 09. 2011 == ;;
  3. (while
  4.    (setq nxt (tblnext "LAYER" (null nxt)))
  5.     (setq
  6.       layrs
  7.        (entget (tblobjname "LAYER" (setq Nme (cdr (assoc 2 nxt)))))
  8.     )
  9.     (if (and (not (eq Nme "0"))
  10.              (wcmatch Nme "C-*")
  11.         )
  12.       (entmod
  13.         (subst (cons 2 (vl-string-subst "V-" "C-" (cdr (assoc 2 layrs))))
  14.                (assoc 2 layrs)
  15.                layrs
  16.         )
  17.       )
  18.     )
  19. )
  20. (princ)
  21. )
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:14:46 | 显示全部楼层
塔尔瓦特,
 
当然不是你必须这么做,但出于好奇。。。如果您不打算使用RENAME命令,而打算使用vl-*函数,那么为什么不直接迭代Layers集合呢?
 
伪代码:
 
  1. ((lambda (acDoc / )
  2. (vlax-for lay (vla-get-layers acDoc)
  3.    [color=seagreen];;<-- Check / rename layers here[/color]
  4.    )
  5. )
  6. (vla-get-activedocument (vlax-get-acad-object)))

 
当做
 
塔瓦特
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 09:20:03 | 显示全部楼层
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 09:22:38 | 显示全部楼层
我忘记了在Rename命令中允许使用多选方法。
095835j04dj13yh010y1hj.png
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 09:24:20 | 显示全部楼层
聪明地工作,不要努力。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 09:28:19 | 显示全部楼层
 
说得好。
 
当被大量需要按时交付的项目压得喘不过气来时,除了继续工作(有时),没有时间花在思考上
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 06:18 , Processed in 0.437137 second(s), 74 queries .

© 2020-2025 乐筑天下

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