乐筑天下

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

[编程交流] 抹掉帮助我的Lisp程序avo

[复制链接]

18

主题

78

帖子

61

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-6 06:11:06 | 显示全部楼层 |阅读模式
当我每次都想选择相同的东西时,我做了很多擦除操作,不喜欢打字来创建它们。
 
我写了这个lisp来帮助我加快这个过程。
 
它非常简单,非常适合展示如何使用lisp为autocad comands创建快捷方式。
 
我很喜欢这个lisp的recive comment/critesim以及任何有助于更好理解lisp的东西。
  1. ;wipeout shotcut
  2. (defun c:wp()
  3. (setq pl1
  4. (entsel "\nSelect closed polyline to convert to wipeout:")
  5. );setq
  6. (command "wipeout" "polyline" pl1 "yes")
  7. (command "change" "last" "" "properties" "color" "green" "")
  8. );defun

 
我遇到的一个问题是lisp的命令函数。如果你想进入,你必须“不”。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 06:20:12 | 显示全部楼层
最好检查所选实体是否达到我们的要求,然后我们可以对其执行操作。
 
退房了。。。。
 
  1. (defun c:wp (/ pl1)
  2. (if (and (setq
  3.             pl1 (entsel "\nSelect closed polyline to convert to wipeout:")
  4.           )
  5.           (vlax-curve-Isclosed (car pl1))
  6.      )
  7.    (progn
  8.      (command "_.wipeout" "_polyline" pl1 "yes")
  9.      (command "_.change" "last" "" "properties" "color" "green" "")
  10.    )
  11.    (princ)
  12. )
  13. (princ)
  14. )

 
塔瓦特
回复

使用道具 举报

44

主题

542

帖子

502

银币

后起之秀

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

铜币
220
发表于 2022-7-6 06:31:09 | 显示全部楼层
为什么不在多行文字上使用背景遮罩,而不是使用擦除?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 06:39:59 | 显示全部楼层
 
很好,丁克。
 
这就是我想到的,但有一个小问题是,当实体是多行文字,其宽度比其字符更宽时,背景会消失
跟随多行文字的宽度,而不是文字中所有字符的宽度。
 
塔瓦特
回复

使用道具 举报

32

主题

87

帖子

52

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
164
发表于 2022-7-6 06:48:12 | 显示全部楼层
Sunny和Tharwat的Lisp程序对cirlce或pline(直线+圆弧)没有影响。你可以结合我的lisp(用于圆)&开发更多。。。祝你好运
  1. (Defun c:WC ()
  2. (command "undo" "be")
  3. (setq luubatdiem (getvar "osmode"))
  4. (setvar "osmode" 0)
  5. (Princ "\nHay chon CIRCLE :")
  6. (setq XX (ssget '((0 . "CIRCLE"))))
  7. (setq L 0)
  8. (setq M (sslength XX))
  9. (while (< L M)
  10. (setq DT (ssname XX L))
  11. (setq DT (entget DT))
  12. (setq TAM (cdr (assoc 10 DT)))
  13. (setq BANKINH (cdr (assoc 40 DT)))
  14. (command ".polygon" "30" TAM "" BANKINH)
  15. (command ".wipeout" "" "last" "y")
  16. (setq L (1+ L))
  17. )
  18. (setvar "osmode" luubatdiem)
  19. (command "undo" "end")
  20. (Princ)
  21. )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 06:52:22 | 显示全部楼层
 
真正地
 
顺便说一句,这个例程的名字很酷。
回复

使用道具 举报

18

主题

78

帖子

61

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-6 07:01:17 | 显示全部楼层
是的,我总是在文本中使用背景掩码,它只是简单得多。
但我用抹布做了其他事情,比如堵住桥下的路
为了澄清一下,塔尔瓦特和我的作品只在封闭普林线上进行。
回复

使用道具 举报

18

主题

78

帖子

61

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-6 07:10:02 | 显示全部楼层
您好,我只是在使用lisp,并决定我可以改进它,使其更加用户友好。
如果您选择了一条未闭合的线(因为这些线不能成为擦除线)。它将显示一条错误消息。
如果你打开了dianmic输入,有没有办法让它出现在鼠标旁边?
谢谢你们,你们真是太棒了。
  1. (defun c:wp (/ pl1)
  2. (if (and (setq
  3.             pl1 (entsel "\nSelect closed polyline to convert to wipeout:")
  4.           )
  5.           (vlax-curve-Isclosed (car pl1))
  6.      );and
  7.    (progn
  8.      (command "_.wipeout" "_polyline" pl1 "yes")
  9.      (command "_.change" "last" "" "properties" "color" "green" "")
  10.    );progn
  11.    (prompt "\nERROR ployline not closed!")
  12. );if
  13. (princ)
  14. );defun

所以我在这篇文章中使用了prompt,但是告诉我有一个错误并不是特别的
显示屏上显示
我如何让它显示在底线上,即“命令:”在哪里
我喜欢这个,因为它更容易看
回复

使用道具 举报

56

主题

256

帖子

230

银币

后起之秀

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

铜币
253
发表于 2022-7-6 07:16:14 | 显示全部楼层
谢谢你的代码,我已经更改并添加了一行,以满足我的需要。
 
(命令“_.wipeout”“\u polyline”pl1“yes”)
(命令“_.change”“last”“”“properties”“color”“T”“255255255”“))
(命令“DRAWORDER”“last”“back”“))
 
基本上现在的颜色是255255255。只是意味着擦除行看起来不会打印。
提取订单以将其发送回。我主要在区块内使用它,但这通常是它工作得最好的方式。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 18:32 , Processed in 0.561805 second(s), 70 queries .

© 2020-2025 乐筑天下

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