重命名所有层
你好我想使用rename命令为图形中的所有图层添加前缀。但是,如果我在命令行运行rename命令,它将不允许我输入*作为旧的层名称来选择所有层。它将与对话框一起显示。无论如何,由于这个原因,我想用rename命令创建一个lisp。
谢谢 你可以自己做
(defun c:test (/ wcm new pos)
(vl-load-com)
(setq wcm (getstring t "\nSpecify Old Name: "))
(setq new (getstring t "\nSpecify New Name: "))
(vlax-for lay (vla-get-layers
(vla-get-ActiveDocument
(vlax-get-acad-object)))
(setq Nme (vla-get-Name lay))
(if (and (wcmatch Nme wcm) (/= "0" Nme))
(if (setq pos (vl-string-position 42 new))
(vla-put-Name lay
(strcat
(substr new 1 pos) Nme
(substr new (+ 2 pos)))))))
(princ))
我想让它更具体一些。我如何从用户和硬代码中获得控制,因为所有层都以“CCC\u OSMAP\u”作为前缀? 在这种情况下,用户对前缀没有选择权,这要短得多:
(定义c:测试(/pref)(vl负载com)(setq pref“CCC\U OSMAP”);; 我认为VL是继续这一步的方式。
AutoLISP替代方案有点不那么直观:
(定义c:测试(/pref tdef tObj)(setq pref“CCC\U OSMAP”);; 需要注意的几件事:
[列表]
[*]外部参照图层
[*]层已具有前缀
[*]已存在且具有新名称的层
[*]李抓到的第0层
[*]层名称字符串长度(我想在某些地方仍然有限制)
无论如何我都能想到的-达武德 谢谢David,
我没有想到这一切!
我想是这样的:
(定义c:测试(/pref Nme)(vl load com)(setq pref“CCC\U OSMAP”);; 谢谢各位,
这应该不是太大的问题,因为我将在上面运行此操作的图形是限制在大约30个标准层的地图,但我认为它对于其他类型的图形可能很方便。
页:
[1]