乐筑天下

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

[编程交流] 层提示bef需要lisp

[复制链接]

3

主题

8

帖子

4

银币

初来乍到

Rank: 1

铜币
17
发表于 2022-7-6 10:16:36 | 显示全部楼层 |阅读模式
大家好:
 
我对自己感到恼火;有时我忘记更改当前图层设置,结果将图形元素放置在错误的图层上。所以。。。。我希望有一个LISP,它强制我在使用(例如)LINE命令时输入图层名;我会启动命令,然后ACAD会弹出提示,要求我输入图层名称。(我不打算每次都实际输入层名称,我有一个小的可编程键盘,我将设置为只需按一个按钮即可输入层名称)。这整件事听起来可能很愚蠢,但我只有大约6层要处理,所以听起来可能没那么费力。有人能帮我吗?谢谢
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 10:21:49 | 显示全部楼层
你可以用很多方法来做,最简单的方法是在这里搜索“复制命令”,它允许你选择一个现有的对象,并使一个新的相同,但与所有的对象颜色层等。
 
或者,如果您希望在一个层上有一条线,并且只有6个层,那么一系列defuns将是最简单的L1 L2 etc C1 C2
 
(defun C:L1()(setvar“clayer”“layer1”)(命令行)
(defun C:C1()(setvar“clayer”“layer1”)(命令“Circle”))
 
或者用^c^c(setvar“clayer”“layer1”)行制作工具栏或菜单
回复

使用道具 举报

3

主题

8

帖子

4

银币

初来乍到

Rank: 1

铜币
17
发表于 2022-7-6 10:25:55 | 显示全部楼层
感谢您的贡献;我想我肯定会将其用于其他事情,但我也想知道如何做我最初发布的事情,即调用命令(如LINE),然后询问用户层的名称。程序要求我输入信息的行为将有助于“激励我”做出正确的决定。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:29:44 | 显示全部楼层
要么重新定义行命令,要么使用命令反应器。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 10:33:41 | 显示全部楼层
 
我个人使用一个命令反应器来执行命令,例如MVIEW和XATTACH等,一旦命令结束(或取消),它也会更改层。(感谢艾伦的建议!)
回复

使用道具 举报

55

主题

293

帖子

239

银币

后起之秀

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

铜币
275
发表于 2022-7-6 10:37:41 | 显示全部楼层
 
你能告诉我指挥反应堆是什么意思吗?
 
我的问候。
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 10:39:37 | 显示全部楼层
是的,我也会走反应堆的路线。基本上,我有一个命令名的关联列表,以及允许它们的层。例如。
请注意多个命令名,如果需要,可以用逗号甚至通配符分隔,否则需要为具有相同层列表的每个命令提供重复的命令名。然后我有一个修改的assoc函数:
然后您将有几个vlr命令反应器(请参阅开发人员帮助)。用于:vlr命令willstart回调的一个包含了大部分代码。它将使用上面的assocwc函数检查传递的命令名,以获取包含允许的层名称的项。然后使用任意成员/vl位置与CLayer系统变量进行比较。如果未找到,则应将一些全局变量设置为CLayer的当前值。然后使用getstring函数要求用户输入层名称(如果列表中有多个层名称,则使用该层名称,因为它是唯一的选项),如果不存在,则创建该层名称,然后将clayer设置为该层名称。
 
所有:vlr commandend:vlr commandcancelled和:vlr CommandFailed回调可以是同一个函数。它所需要做的就是检查vlr命令willstart回调保存的全局变量是否有一些值,然后将CLayer设置为该值,并将全局var重置为nil。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 10:42:09 | 显示全部楼层
 
 
这正是我的命令反应器/回调所做的:眨眼:
回复

使用道具 举报

6

主题

30

帖子

24

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 10:47:35 | 显示全部楼层
  1. (defun C:PCOM ()
  2. (setq e (car(entsel "Pick your command. "))
  3.       e (entget e)
  4.       lyr (cdr(assoc 8 e))
  5.       lt (cdr(assoc 6 e))
  6.       txts (cdr(assoc 7 e))
  7.       blk (cdr(assoc 2 e))
  8.       com (cdr(assoc 0 e)))
  9. (command "layer" "s" lyr "")
  10. (if (/= lt nil)
  11.   (command "linetype" "s" lt "")
  12.   (command "linetype" "s" "bylayer" ""))
  13. (if (/= txts nil)
  14.   (command "style" txts "" "" "" "" "" "" ""))
  15. (if (= com "TEXT") (setq com "DTEXT"))
  16. (if (= com "LWPOLYLINE") (setq com "PLINE"))
  17. (if (= com "LINE") (setq com "LINE"))
  18. (if (= com "CIRCLE") (setq com "CIRCLE"))
  19. (if (= com "INSERT")((setq comm com)(setq com "INSERT")
  20.   (command comm blk)))
  21. (command com)
  22. (prin1))

 
这个怎么样,我用它来写pcom,然后选择对象,它是一条线,它在创建所选对象的图层中激活line命令,它也适用于多段线、插入块、绘制圆、编写文本,希望它能帮助你。
回复

使用道具 举报

VVA

1

主题

308

帖子

308

银币

初来乍到

Rank: 1

铜币
8
发表于 2022-7-6 10:50:18 | 显示全部楼层
如果你从另一个角度来看这个问题
快速绘制-绘制类似对象
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 21:12 , Processed in 1.285318 second(s), 72 queries .

© 2020-2025 乐筑天下

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