乐筑天下

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

[编程交流] 如何摆脱烦恼

[复制链接]

49

主题

177

帖子

130

银币

后起之秀

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

铜币
243
发表于 2022-7-5 16:33:07 | 显示全部楼层 |阅读模式
前一段时间我已经问过了,但没有回复,我想我可以再试一次。
 
当我运行以开始的lisp例程时
 
  1. (command "_.undo" "_BE")

 
并以结束
 
  1. (command "_.undo" "_E")

 
无论出于何种原因,我按“u”键,就会在命令提示符下多次收到令人讨厌的消息(Lisp表达式)。
 
173314cgtcnrc77tdttrgz.jpg
 
有没有办法隐藏这条重复的信息,或者用其他方法摆脱它?
 
非常感谢。
回复

使用道具 举报

95

主题

477

帖子

383

银币

后起之秀

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

铜币
475
发表于 2022-7-5 16:39:00 | 显示全部楼层
我不知道怎样才能消除回声。但是,我也建议不要使用命令函数,而是使用Visual LISP进行撤消。Lee Mac的代码非常好:
  1. ;; Start Undo  -  Lee Mac
  2. ;; Opens an Undo Group.
  3. (defun LM:startundo ( doc )
  4.    (LM:endundo doc)
  5.    (vla-startundomark doc)
  6. )
  7. ;; End Undo  -  Lee Mac
  8. ;; Closes an Undo Group.
  9. (defun LM:endundo ( doc )
  10.    (while (= 8 (logand 8 (getvar 'undoctl)))
  11.        (vla-endundomark doc)
  12.    )
  13. )
  14. ;; Active Document  -  Lee Mac
  15. ;; Returns the VLA Active Document Object
  16. (defun LM:acdoc nil
  17.    (eval (list 'defun 'LM:acdoc 'nil (vla-get-activedocument (vlax-get-acad-object))))
  18.    (LM:acdoc)
  19. )
回复

使用道具 举报

49

主题

177

帖子

130

银币

后起之秀

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

铜币
243
发表于 2022-7-5 16:41:50 | 显示全部楼层
我不确定我是否正确使用了李的代码,但我试过这样做
 
但是我没有注意到任何不同。我做错什么了吗?
 
顺便说一句,为什么我应该使用这种方式而不是本机undo命令?只是为了抑制信息,还是有其他优势?
回复

使用道具 举报

95

主题

477

帖子

383

银币

后起之秀

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

铜币
475
发表于 2022-7-5 16:50:00 | 显示全部楼层
其中一个主要优点是,您可以在错误处理程序中使用它,而无需使用命令执行推送错误。此外,在LISP程序中不使用AutoCAD命令通常更快。
回复

使用道具 举报

49

主题

177

帖子

130

银币

后起之秀

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

铜币
243
发表于 2022-7-5 16:54:33 | 显示全部楼层
谢谢,但这是我应该像上面写的那样使用例程的方式吗?
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 16:56:27 | 显示全部楼层
我曾想过创建一个关闭/打开cmdecho变量的vlr命令反应器或vlr Undo反应器,但我的尝试失败了。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:01:30 | 显示全部楼层
我的问题是,你为什么要使用“撤消”呢?你是在做某种形式的相交线等,并计算出点,这样就可以删除对象了吗?如果是这样,请使用(setq objx entlast),然后在右侧点vla delete objx。您将不会看到任何提示。我经常在需要解决问题的地方这样做。
回复

使用道具 举报

49

主题

177

帖子

130

银币

后起之秀

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

铜币
243
发表于 2022-7-5 17:03:31 | 显示全部楼层
我使用undo只是为了能够撤消整个lisp例程。仅此而已。该例程有多个步骤。。主要结构基本上是一个具有各种选项的“cond”,编辑块的选择、删除整个组、更改其他参数等。cond命令位于while循环内,因此用户可以保持编辑组,而无需每次退出例程。我相信这会增加写入内存的步骤,以便稍后撤消。如果我不使用撤销BE和E过程,那么我将不得不逐个撤销不可接受的每个步骤。顺便说一句,我在上面展示的撤销功能很好,只是我不断收到问题的消息。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:09:45 | 显示全部楼层
在40多年的lisp语言学习之后,我使用undo的次数几乎无法衡量,我觉得你需要真正解释一下为什么你在使用undo,而不是记住最后可以使用的实体。
 
 
没有任何意义。
回复

使用道具 举报

49

主题

177

帖子

130

银币

后起之秀

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

铜币
243
发表于 2022-7-5 17:12:39 | 显示全部楼层
我不需要进一步解释。我在上面写道。如果你真的想帮助别人,而不仅仅是通过毫无意义的信息,那么展示一下如何做到这一点,让别人学习一些新的东西。我以为这个论坛就是为了这个。
 
如果某件事对你来说没有意义,那么它可能对其他人也有意义。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 15:49 , Processed in 1.376372 second(s), 86 queries .

© 2020-2025 乐筑天下

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