乐筑天下

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

[编程交流] 帮我解决这个小问题

[复制链接]

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:31:40 | 显示全部楼层 |阅读模式
我是个新手。我试着练习一些Autolisp示例。
我写下面的代码是为了知道如何在应用命令时使用实体名称。
我在列表中收集这些实体名称,并使用命令“擦除以删除它”。
但是这里发生了一些问题。它说“糟糕的论点”,我不知道如何解决它。
 
(定义c:gc(/p1 p2数据n索引)
(setq p1(ssget))
(setq data())
(setq n(sslength p1))
(setq索引0)
(重复n
(setq p2(ssname p1索引))
(setq数据(附加数据p2))
(entmod数据)
(setq指数(+指数1))
)
(命令“erase”p2“”)
)
回复

使用道具 举报

15

主题

243

帖子

228

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-5 23:42:35 | 显示全部楼层
我很困惑。。。。你能粘贴它给你的确切错误吗?
看起来一切都很好,只是我不明白你们想用它做什么
数据
变量
回复

使用道具 举报

15

主题

243

帖子

228

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-5 23:46:24 | 显示全部楼层
ssget很好,您正在分配变量p1。。。。然后将“n”指定给sset p1的长度。。。然后设置一个计数器,为(ssname)函数提供其索引参数。。。。
所以你得到的是没有过滤器的ssget,这基本上就像(ENTSEL),因为你只需要手动获取选择集中的一个对象。
您可以将过滤器与ssget一起使用,以便自动选择项目。。。。
因此,entsel=1项,ssget=多项。
通过执行(setq p2(ssname p1 index))获得实体名称后,可以将其分配给变量,并使用变量提供erase命令。。。不确定我在一个空列表的变量上看到的数据是什么(entmod)?
我不认为它是这样工作的,我认为这是你的错误的原因。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 23:48:56 | 显示全部楼层
不需要遍历每个要删除的实体名称,因为erase命令可以删除选择集。
 
  1. (if (setq s (ssget "_:L" ))
  2. (command "_.erase" s "")
  3. )
回复

使用道具 举报

15

主题

243

帖子

228

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-5 23:55:08 | 显示全部楼层
 
是的,塔瓦当然可以提供一个选择集和旁路删除,但我认为他只是想锻炼。。。这就是为什么我试图解释我所看到的。。。。。你认为数据变量有什么好用吗?他是怎么做的?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 00:01:29 | 显示全部楼层
我没有什么要补充的,你已经很好地描述了早些时候,这就是为什么我只张贴简单的示例代码
 
 
 
我认为这只不过是复制和粘贴代码,或者对与另一个目标相关的代码进行修改,而不是他们将代码驱动到的目标
这就是为什么事情发生在错误的地方,尽管我可能错了
回复

使用道具 举报

15

主题

243

帖子

228

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-6 00:07:37 | 显示全部楼层
啊,我明白了,好吧。我想这可能是我还不知道的事情。
回复

使用道具 举报

0

主题

99

帖子

99

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 00:10:05 | 显示全部楼层
  1. (defun c:gc (/ p1 p2 data n index)
  2. (setq p1 (ssget))
  3. (setq data())[color="green"] ;; you don't need this[/color]
  4. (setq n (sslength p1))
  5. (setq index 0)
  6. (repeat n
  7. (setq p2 (ssname p1 index))
  8. (setq data (append data p2))[color="green"] ; append is used with list, "data" variable is not a list
  9.                             ;  this is where your error occurred              [/color]
  10. (entmod data) [color="green"]; you don't need this[/color]
  11. (setq index (+ index 1))
  12. ) [color="green"]; repeat function ends without processing an entity[/color]
  13. (command "erase" p2 "")[color="green"] ;must be inside of the repeat function
  14.                        ;put this before you increment the index counter[/color]
  15. )

 
之后
 
  1. (defun c:gc (/ p1 p2 n index)
  2. (setq p1 (ssget))
  3. (setq n (sslength p1))
  4. (setq index 0)
  5. (repeat n
  6. (setq p2 (ssname p1 index))
  7. (command "erase" p2 "")
  8. (setq index (+ index 1))
  9. )
  10. (princ) ;exist cleanly
  11. )
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 00:18:43 | 显示全部楼层
感谢您的帮助,bhull1985,tharwat,jdiala。
我知道我的问题发生在(setq data(append data p2))。
我尝试了另一个代码来修复这个问题。
我使用ssadd添加
我想要的一件精确的事情是使用“选择”命令以精确的顺序选择对象。
示例:一行一个文本(l1 t1);(l2 t2)。(l3 t3)。。。
但是当我运行这段代码时,我没有得到我想要的结果。
我选择一行,它选择其他行(或文本),而不是一个文本附加。
(定义c:gc(/p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 ss索引n数据开始)
(setq p1(ssget))
(setq n(sslength p1))
(setq索引0)
(setq数据(ssadd))
(重复n
(setq start(ssname p1 index))
(ssadd开始数据)
(setq p2(entget start))
(setq p3(assoc 10 p2))
(setq p4(assoc 11 p2))
(setq p5(+100(/(+(cadr p3)(cadr p4))2)))
(setq p6(+100(/(+(caddr p3)(caddr p4))2)))
(setq p7(-200 p5))
(setq p8(-200 p6))
(setq p9(列表p5 p6))
(setq p10(列表p7 p8))
(setq ss(ssget“C”p9 p10’((0。“text”)))
(setq p11(ssname ss 0))
(ssadd p11数据)
(setq指数(+指数1))
)
(命令“select”data“”)
(普林斯)
)
 
 
 
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 00:23:32 | 显示全部楼层
你可以把马牵到水边,但你不能让它喝水。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 01:17 , Processed in 0.423625 second(s), 83 queries .

© 2020-2025 乐筑天下

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