乐筑天下

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

[编程交流] 将实体更改为图层

[复制链接]

32

主题

98

帖子

73

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
197
发表于 2022-7-6 14:29:19 | 显示全部楼层 |阅读模式
阿德苏为我写了一个很棒的节目。这为我节省了大量的工作。
 
Adesu或其他人
你能帮我让它更人性化一点吗?
 
目前,它选择(并将继续选择)单个实体
可以修改它吗?如果它缺少一个实体,它将绘制一个框,我可以将其放置在几个对象周围?
 
此外,底部lccl的程序不工作。我不知道如何创建具有线型的图层
而不是连续的。中心已加载,但仍无法工作
 
;该程序在实体上选择单个
; 并将其更改为特定层。
;如果该层不存在,
;它也会创造它
;作者:DonaldChristensen,有很多帮助
;谢谢Adesu
 
 
 
;;;;;换层;;;;;;;
 
(定义c:ldef(/ss)
(虽然
(setq ss(car(entsel“\n选择要移动层的对象”))
(命令“_layer”“m”“defpoints”“c”8”)
(命令“_chprop”ss““la”“defpoints”)
) ; 虽然
(普林斯)
)
 
;;;混凝土示例lc18=(层,concrete_018)
(定义c:lc18(/ss)
(虽然
(setq ss(car(entsel“\n选择要移动层的对象”))
(命令“\u layer”“m”“concrete\u 018”“c”“magenta”“”“”)
(命令“_chprop”ss““la”“concrete\u 025”)
) ; 虽然
(普林斯)
)
 
(;层混凝土中心线
(定义c:lccl(/ss)
(虽然
(setq ss(car(entsel“\n选择要移动层的对象”))
(命令“\u layer”“m”“concrete\u cl”“c”“red”“l”“center”“”“”)
(命令“_chprop”ss““la”“concrete\u 025”)
) ; 虽然
(普林斯)
)
 
 
)
回复

使用道具 举报

0

主题

269

帖子

279

银币

限制会员

铜币
-4
发表于 2022-7-6 14:43:20 | 显示全部楼层
这里是对一个例程的修改,以允许组选择。如果您喜欢,可以修改其他类似的内容。
 
  1. (defun c:ldef (/ ss)
  2.   (princ "\nSelect object to move to DEFPOINTS layer")
  3.   (setq ss (ssget))
  4.   (command "_layer" "m" "defpoints" "c" 8 "" "")
  5.   (command "_chprop" ss "" "la" "defpoints" "")
  6.   (princ)
  7. )

 
中心线未显示的问题可能是因为这两条线之间存在差异:
 
(命令“\u layer”“m”“concrete\u cl”“c”“red”“l”“center”“”“”)
(命令“_chprop”ss““la”“concrete\u 025”)
 
您需要在每个层中使用相同的层名称。
 
享受
回复

使用道具 举报

10

主题

253

帖子

75

银币

后起之秀

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

铜币
223
发表于 2022-7-6 14:56:55 | 显示全部楼层
另一个Ж
  1. (defun c:chlay (/ adoc ent selset lay)
  2. (vl-load-com)
  3. (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  4. (if (and (setq ent (car (entsel "\nPick an object <Cancel> : ")))
  5.           (setq selset (ssget "_:L"))
  6.           ) ;_ end of and
  7.    (progn
  8.      (setq lay (vla-get-layer (vlax-ename->vla-object ent)))
  9.      (foreach item
  10.               (mapcar 'vlax-ename->vla-object
  11.                       (vl-remove-if 'listp (mapcar 'cadr (ssnamex selset)))
  12.                       ) ;_ end of mapcar
  13.        (vl-catch-all-apply '(lambda () (vla-put-layer item lay)))
  14.        ) ;_ end of foreach
  15.      ) ;_ end of progn
  16.    ) ;_ end of if
  17. (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
  18. (princ)
  19. ) ;_ end of defun
回复

使用道具 举报

32

主题

98

帖子

73

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
197
发表于 2022-7-6 15:05:32 | 显示全部楼层
卡尔布
谢谢你的节目
 
lccl上的一个简单错误令人尴尬。然而,当我修复它时,它仍然不起作用
 
 
(定义c:lccl(/ss)
(princ“\n选择要移动到混凝土层的对象”)
(setq ss(ssget))
(命令“\u layer”“m”“concrete\u cl”“c”“red”“l”“center”“”“”)
(命令“_chprop”ss”““la”“concrete\u cl”“”)
(普林斯)
)
回复

使用道具 举报

8

主题

1647

帖子

1647

银币

初来乍到

Rank: 1

铜币
36
发表于 2022-7-6 15:13:28 | 显示全部楼层
试试这个:
 
  1. (defun c:lccl (/ ss)
  2. (princ "\nSelect object to move to concrete_cl layer")
  3. (setq ss (ssget))
  4. (command "_.layer" "Make" "concrete_cl" "C" "1" "" "L" "center" "" "")
  5. (command "_.chprop" ss "" "la" "concrete_cl" "")
  6. (princ)
  7. )
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 15:27:28 | 显示全部楼层
下面是我用来在特定层中绘制引线或DIM的例程。如果该层不存在,则创建该层。刚刚添加到Cad64的SSget例程末尾。
 
(定义c:cd(/ss)
(setq oldlay(getvar“clayer”);保存其所在的当前图层
(if(null(tblsearch“layer”“NEWLAYER”);对特定图层的图层表进行条件if搜索
(命令“.layer”“make”“NEWLAYER”“c”“30”“l”“Continuous”“”“”);如果不可用,则使用特定配置创建它
(setvar“clayer”“NEWLAYER”);创建新层后,将其设置为当前层
)
(princ“\n选择要移动到新图层的对象:”)
(setq ss(ssget))
(命令“_.chprop”ss““la”“NEWLAYER”)
(setvar“clayer”oldlay)
(普林斯)
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 15:38:33 | 显示全部楼层
还有另一种类型:
 
大卫
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 00:11 , Processed in 1.497966 second(s), 77 queries .

© 2020-2025 乐筑天下

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