seanwafo 发表于 2022-7-5 22:38:17

可以计数和命名的LISP

您好,亲爱的大师们,
 
我的名字叫肖恩,我对Lisp编程非常陌生。现在已经两周了,我开始对自己的代码无法正常工作感到沮丧。第一件事,我能够使lisp计算块被选中,我很高兴它。然后我决定也命名被选中的块。我知道“BCOUNT”命令,但AutoCAD的旧版本还没有BCOUNT命令(AutoCAD 2010)。我真的很想学习LISP,但每次都被卡住了。请帮我输入这个代码。我去过很多网站,仍然不知道下一步该做什么。提前感谢各位大师。
 
 
这是我的密码
 
(defun c:BL (/ ssblks ssblks2 en ctr blk ent enlist) ;define funcntion
(vl-load-com)

       
(if (setq ssblks (ssget))) ;|selects blocks|;

        (prog

               
                (setq blk (sslength ssblks)) ;|get number of blocks|;

                (setq ct 0) ;|set counter to zero|;

                (repeat (ssget ssblks2)) ;|repeat the selecting blocks|;

                (ssadd (ssname ssblks2 ct) ssblks) ;|add ssname froms ssblks selection|;

                (setq en (car(entsel ssblks2)) ;|gets entity from ssblks2|;

                (setq enlist(cdr (assoc 2 (entget en)))) ;|get the dxf group codes of the entity;|

                (alert (strcat "\n There are " (itoa blk) " blocks and these are: " (vla-get-effectivename (vlax-ename->vla-object enlist)) )) ;|display result|;

        ) ;end prog

        (princ)

) ;end if

(princ)



);end defun

(princ)

MSasu 发表于 2022-7-5 22:53:08

欢迎来到论坛,肖恩!
 
 
 
 
概览:
[列表]
[*]没有PROG语句,可能是PROGN。
[*]请检查帮助中的重复功能;它需要循环次数和动作。
[*]SSGET将返回一个应检索到变量中的选择集,它不支持通过引用赋值。
[*]ct计数器无索引。
[*]ENTSEL需要字符串(提示)作为参数,而不是选择集。
[*]VLAX-ENAME->VLA-OBJECT需要实体名(DXF代码-1)。
[/列表]

SLW210 发表于 2022-7-5 22:57:09

仅供参考,BCOUNT已经存在很长一段时间了,它是一种快速工具。也许您没有加载Express Tools?
 

seanwafo 发表于 2022-7-5 23:11:50

@MSasu公司
非常感谢您提供的信息。帮了我很多。现在,我将首先分解代码。Autolisp是我学过的第一个编程。在网页制作方面非常不同。哈哈。
 
@SLW210
是的,我已经知道了。这是一个伟大的工具,但对于那些谁有较低版本的cad像2010年。Bcount尚未加入该计划。这就是为什么我要做一个。

Lee Mac 发表于 2022-7-5 23:15:34

也许这些项目会有所帮助?
 
块计数器
动态块计数器
嵌套块计数器

SLW210 发表于 2022-7-5 23:29:36

请阅读代码发布指南并编辑您的帖子,将代码包含在代码标签中。

ORgrown 发表于 2022-7-5 23:32:06

根据指南重新发布。。。我希望如此。
 
你好,肖恩,
我十年前工作过的一家公司使用以下代码来显示每个块名和每个块出现的实例数。它可能是通过这样的论坛找到/复制的。没有任何文档说明是谁编写了这段代码,也没有说明它的实际使用时间。如果有人认出它是他们的,我衷心感谢您的使用!
 
当您运行BLKLST并要求您选择对象时,请键入ALL。F2显示列表。希望它能按你的需要工作。。。
 
(定义C:BLKLST(/BLKS CHK I J K L L1 N BNAME ENAME EDATA BLIST BNUM BNAME1 BNAME2 TEMP1 TEMP2)(原则“\N使用标准选择方法”)(setq BLKS(ssget(list(cons 0“INSERT”)))(setq L(sslength BLKS))(setq L(-L 1))(setq I 0)(setq BLIST(list“BLOCK NAMES”))(setq BNUM(list“INSTANCES”))(而(

seanwafo 发表于 2022-7-5 23:40:46

非常感谢李·麦克先生和奥格伦先生为我提供口吃。我会学习你分享给我的Lisp程序。正如我在李·麦克爵士的节目中看到的那样,我的表情就像“啊!怎么了???他是怎么做的?”你真的怎么样?我想知道。哈哈。ORgrown先生,为了理解你展示的lisp,我还有很多东西需要学习,有些是熟悉的代码,但我仍然需要学习更多。这将是我创建LISP的第一步。非常感谢各位大师!
页: [1]
查看完整版本: 可以计数和命名的LISP