乐筑天下

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

[编程交流] LISP例程:如何。

[复制链接]

19

主题

119

帖子

100

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 09:40:28 | 显示全部楼层 |阅读模式
原谅我,如果这已经涵盖,我是新来的,我找不到它。
 
我已经使用ACAD很长时间了,但从未有意识地使用LISP例程。一些研究告诉了我它们是什么。。。。但我不知道如何让它们工作。
 
我的困境:在块中自动编号selct属性。我在这里找到了一个人们说效果很好的,我已经把它保存到我的支持文件中,我已经把它加载到我的绘图中,但是我实际上如何使它运行呢?
 
对不起,我的无知。感谢所有帮助!
回复

使用道具 举报

2

主题

266

帖子

265

银币

初来乍到

Rank: 1

铜币
9
发表于 2022-7-6 09:44:20 | 显示全部楼层
如果查看代码,它应该以括号、单词“defun”(用于定义函数)和例程的名称开头。在AutoCAD任务中加载例程后,只需键入名称即可运行它。实际上,您已经创建了一个新命令。
回复

使用道具 举报

19

主题

119

帖子

100

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 09:48:37 | 显示全部楼层
啊。。。非常感谢。很容易!现在我只需要找到正确的Lisp程序。。。我试过的那个离工作很近!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:52:37 | 显示全部楼层
这可能有助于:
 
http://lee-mac.com/runlisp.html
回复

使用道具 举报

19

主题

119

帖子

100

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 09:53:22 | 显示全部楼层
谢谢李。。。现在一切都有了意义。我以前从未有过使用LISPS的特权,因为我不是一个程序员。
 
还有一个问题,因为你在这方面似乎有很多经验。。。我知道这个话题已经在这里讨论过了,但我似乎找不到我需要的答案。我需要用前缀对某些块属性进行自动编号。例如,我需要一大堆块从L-001到L-010进行编号。然后在后面的图中,我可能需要从L-201到L-221对一些进行编号。我发现一个lisp可以很好地自动编号,但它不会在那里留下前缀。
 
有人知道这个吗?
回复

使用道具 举报

20

主题

81

帖子

61

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 09:59:15 | 显示全部楼层
这里有一个类似的问题和解决方案。
http://www.cadtutor.net/forum/showthread.php?52077-前导-zero-s-in-attribute-value&高亮显示=前导
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 10:00:13 | 显示全部楼层
 
 
 
这很容易。。。要是当初我也这么做就好了!:lol:lmao
 
当然,我只是在开玩笑。
 
快乐的编码,Resulins!:眨眼:
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:02:48 | 显示全部楼层
完整的论点和有趣的GIF从我。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:08:48 | 显示全部楼层
 
我不久前写了这篇文章,并很快对其进行了修改,以接受可选前缀和零填充-目前它将从左到右编号:
 
  1. (defun c:AttNum ( / *error* _StartUndo _EndUndo _PadLeft doc ss lst ) (vl-load-com)
  2. ;; © Lee Mac 2010
  3. (defun *error* ( msg )
  4.    (if doc (_EndUndo doc))
  5.    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
  6.        (princ (strcat "\n** Error: " msg " **")))
  7.    (princ)
  8. )
  9. (defun _StartUndo ( doc ) (_EndUndo doc)
  10.    (vla-StartUndoMark doc)
  11. )
  12. (defun _EndUndo ( doc )
  13.    (if (= 8 (logand 8 (getvar 'UNDOCTL)))
  14.      (vla-EndUndoMark doc)
  15.    )
  16. )
  17. (defun _PadLeft ( str cha len )
  18.    (if (< (strlen str) len)
  19.      (_PadLeft (strcat cha str) cha len)
  20.      str
  21.    )
  22. )
  23. (setq doc  (vla-get-ActiveDocument (vlax-get-acad-object)))  
  24. (setq *tag (cond ( *tag ) ( "TAG1" ))
  25.       
  26. )
  27. (setq *tag
  28.    (strcase
  29.      (cond
  30.        (
  31.          (eq ""
  32.            (setq tmp
  33.              (getstring
  34.                (strcat "\nSpecify Attribute Tag to be Numbered <"
  35.                  (setq *tag
  36.                    (cond ( *tag ) ( "TAG1" ))
  37.                  )
  38.                  "> : "
  39.                )
  40.              )
  41.            )
  42.          )
  43.          *tag
  44.        )
  45.        ( tmp )
  46.      )
  47.    )
  48. )
  49. (setq *pre (getstring t "\nSpecify Prefix <None> : "))
  50. (initget 6)
  51. (setq len  (getint "\nSpecify Number Length <Any> : "))
  52. (setq *num
  53.    (1-
  54.      (cond
  55.        (
  56.          (getint
  57.            (strcat "\nSpecify Starting Number <"
  58.              (itoa
  59.                (setq *num
  60.                  (1+
  61.                    (cond ( *num ) ( 0 ))
  62.                  )
  63.                )
  64.              )
  65.              "> : "
  66.            )
  67.          )
  68.        )
  69.        ( *num )
  70.      )
  71.    )
  72. )
  73. (if (ssget "_:L" '((0 . "INSERT") (66 . 1)))
  74.    (progn      
  75.      (vlax-for o (setq ss (vla-get-ActiveSelectionSet doc))
  76.        (setq lst
  77.          (cons
  78.            (cons (vlax-get o 'InsertionPoint) o) lst
  79.          )
  80.        )
  81.      )
  82.      (vla-delete ss)
  83.      (_StartUndo doc)
  84.      (mapcar
  85.        (function
  86.          (lambda ( block )
  87.            (mapcar
  88.              (function
  89.                (lambda ( attrib )
  90.                  (if (eq *tag (strcase (vla-get-TagString attrib)))
  91.                    (vla-put-TextString attrib
  92.                      (strcat *pre
  93.                        (_PadLeft (itoa (setq *num (1+ *num))) "0" (cond ( len ) ( 0 )))
  94.                      )
  95.                    )
  96.                  )
  97.                )
  98.              )
  99.              (vlax-invoke (cdr block) 'GetAttributes)
  100.            )
  101.          )
  102.        )
  103.        (vl-sort lst
  104.          (function
  105.            (lambda ( a b ) (< (caar a) (caar b)))
  106.          )
  107.        )
  108.      )
  109.      (_EndUndo doc)
  110.    )
  111. )
  112. (princ)
  113. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:11:16 | 显示全部楼层
 
英雄联盟
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 00:38 , Processed in 0.414010 second(s), 72 queries .

© 2020-2025 乐筑天下

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