乐筑天下

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

[综合讨论] 编写宏

[复制链接]

16

主题

37

帖子

24

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
77
发表于 2022-7-6 23:41:37 | 显示全部楼层 |阅读模式
亲爱的大家;
 
 
如何为合并层编写宏。。。。。。。。。。。。。。
 
 
^C^C_laymrg;n下一个
 
 
谢谢
罗马诺
回复

使用道具 举报

10

主题

598

帖子

594

银币

初来乍到

Rank: 1

铜币
48
发表于 2022-7-6 23:49:11 | 显示全部楼层
这将合并两个名为“different”和“merged”的层,命令将删除“different”层
  1. ^C^C^C-laymrg;n;different;;n;merged;y;
回复

使用道具 举报

16

主题

37

帖子

24

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
77
发表于 2022-7-6 23:58:45 | 显示全部楼层
谢谢steven的回复
 
我不想这样,我不能输入图层名
我想知道有什么办法吗
 
 
当做
罗马诺
004144tlwk9lkln0jmi0k9.jpg
004148rb5rzqmwtkm335rr.jpg
回复

使用道具 举报

16

主题

37

帖子

24

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
77
发表于 2022-7-7 00:04:21 | 显示全部楼层
对不起,最后一张图片应该放在第一位。。。。。。。。。
 
 
 
我需要一些可以快速合并层(当更多人使用同一cad文件时会发生这种情况)
前任;图层名称
1、沥青边缘
2、沥青边缘
3、道路沥青边缘
4、道路边缘
5、道路边缘
6、沥青路面。。。。。。。。。。。。。。。。。所有这些都是一个项目
 
谢谢
罗马诺
回复

使用道具 举报

10

主题

598

帖子

594

银币

初来乍到

Rank: 1

铜币
48
发表于 2022-7-7 00:18:41 | 显示全部楼层
您无法使用宏来处理对话框,这是使用宏的限制之一。因此,您需要在宏中提供名称,或者从工具栏/命令行运行命令。
回复

使用道具 举报

YZ

27

主题

232

帖子

205

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-7 00:20:47 | 显示全部楼层
你为测量师工作吗?看起来他们需要修复编码和分层。
 
我可能不太明白你想要什么,但如果你知道所有可能的沥青层名称,你可以写一个宏,将它们组合成1。命令“-LAYMRG”之前的连字符“-”将阻止任何对话框出现。对我来说,这是帮助你节省时间的最好方法。
 
这一项将列表中的前5项全部放入第6层:
 
  1. ^C^C-LAYMRG;Name;"Asphalt Edge";Name;ASPHALTEDGE;Name;"ROAD ASPHALT EDGE";Name;"ROAD EDGE";Name;ROAD_EDGE;;Name;ASPHALT-ROAD;Yes;

 
为了更安全,您可能需要在宏的开头创建目标层。类似于:
  1. -LAYER;NEW;ASPHALT-ROAD;;
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-7 00:30:44 | 显示全部楼层
为什么在运行完整的AutoCAD时坚持使用宏,而可以使用自定义lisp例程?似乎违反直觉。
回复

使用道具 举报

16

主题

37

帖子

24

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
77
发表于 2022-7-7 00:40:11 | 显示全部楼层
谢谢yz&评论回复了我的帖子
 
在设计道路之前,测量员将创建现有条件cad文件,
许多测量员将在那里输入并创建它(如果时间短,测量数量取决于区域)
许多测量师cad文件将合并到一个cad文件中,合并意味着复制并粘贴到原始坐标
(没有标准图层名称系统)
因此,每个项目测量数据(cad文件)都有大量的图层
我们使用此测量文件作为外部参照附着到多模块DWG作为参考
我们需要根据图纸更改颜色
 
谢谢你
罗马诺
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-7 00:43:43 | 显示全部楼层
类似于使用Lisp,拾取对象目标层,然后拾取对象lay1、对象lay2等全部完成。使用ssget和layer filter搜索将层上的所有对象更改为新层的lisp非常简单。
  1. (defun c:chlays ( / deslay ss sslen newlay)
  2. (vl-load-com)
  3. (setq deslay (cdr (assoc 8 (entget (car (entsel "\npick object destination layer"))))))
  4. ;returns destination layer just use two lines again
  5. (while (setq newlay (cdr (assoc 8 (entget (car (entsel "\npick object next layer nothing to exit"))))))
  6. (setq ss (ssget "X" (list (cons 8 newlay))))
  7. (setq sslen (sslength ss))
  8. (setq x 0)
  9. (repeat sslen
  10. (setq obj (ssname ss x))
  11. (setq vlobj (setq vlobj (vlax-ename->vla-object obj)))
  12. (vla-put-layer vlobj deslay)
  13. (setq x (+ x 1))
  14. ) ; repeat
  15. (setq ss nil
  16. )
  17. ) ; while
  18. ) ; defun
  19. (c:chlays)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 20:54 , Processed in 0.361017 second(s), 72 queries .

© 2020-2025 乐筑天下

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