编写宏
亲爱的大家;如何为合并层编写宏。。。。。。。。。。。。。。
^C^C_laymrg;n下一个
谢谢
罗马诺 这将合并两个名为“different”和“merged”的层,命令将删除“different”层
^C^C^C-laymrg;n;different;;n;merged;y; 谢谢steven的回复
我不想这样,我不能输入图层名
我想知道有什么办法吗
当做
罗马诺
对不起,最后一张图片应该放在第一位。。。。。。。。。
我需要一些可以快速合并层(当更多人使用同一cad文件时会发生这种情况)
前任;图层名称
1、沥青边缘
2、沥青边缘
3、道路沥青边缘
4、道路边缘
5、道路边缘
6、沥青路面。。。。。。。。。。。。。。。。。所有这些都是一个项目
谢谢
罗马诺 您无法使用宏来处理对话框,这是使用宏的限制之一。因此,您需要在宏中提供名称,或者从工具栏/命令行运行命令。 你为测量师工作吗?看起来他们需要修复编码和分层。
我可能不太明白你想要什么,但如果你知道所有可能的沥青层名称,你可以写一个宏,将它们组合成1。命令“-LAYMRG”之前的连字符“-”将阻止任何对话框出现。对我来说,这是帮助你节省时间的最好方法。
这一项将列表中的前5项全部放入第6层:
^C^C-LAYMRG;Name;"Asphalt Edge";Name;ASPHALTEDGE;Name;"ROAD ASPHALT EDGE";Name;"ROAD EDGE";Name;ROAD_EDGE;;Name;ASPHALT-ROAD;Yes;
为了更安全,您可能需要在宏的开头创建目标层。类似于:
-LAYER;NEW;ASPHALT-ROAD;; 为什么在运行完整的AutoCAD时坚持使用宏,而可以使用自定义lisp例程?似乎违反直觉。 谢谢yz&评论回复了我的帖子
在设计道路之前,测量员将创建现有条件cad文件,
许多测量员将在那里输入并创建它(如果时间短,测量数量取决于区域)
许多测量师cad文件将合并到一个cad文件中,合并意味着复制并粘贴到原始坐标
(没有标准图层名称系统)
因此,每个项目测量数据(cad文件)都有大量的图层
我们使用此测量文件作为外部参照附着到多模块DWG作为参考
我们需要根据图纸更改颜色
谢谢你
罗马诺 类似于使用Lisp,拾取对象目标层,然后拾取对象lay1、对象lay2等全部完成。使用ssget和layer filter搜索将层上的所有对象更改为新层的lisp非常简单。
(defun c:chlays ( / deslay ss sslen newlay)
(vl-load-com)
(setq deslay (cdr (assoc 8 (entget (car (entsel "\npick object destination layer"))))))
;returns destination layer just use two lines again
(while (setq newlay (cdr (assoc 8 (entget (car (entsel "\npick object next layer nothing to exit"))))))
(setq ss (ssget "X" (list (cons 8 newlay))))
(setq sslen (sslength ss))
(setq x 0)
(repeat sslen
(setq obj (ssname ss x))
(setq vlobj (setq vlobj (vlax-ename->vla-object obj)))
(vla-put-layer vlobj deslay)
(setq x (+ x 1))
) ; repeat
(setq ss nil
)
) ; while
) ; defun
(c:chlays)
页:
[1]