乐筑天下

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

[编程交流] 愚蠢的问题?

[复制链接]

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 10:53:26 | 显示全部楼层 |阅读模式
好的,今天下午我的大脑有点疲惫,我已经很久没有写Lisp程序了。
 
我需要lisp中的一条线来选择具有公共点的所有对象(在本例中,是多段线的起点和块属性的插入点,以便将它们转换为块)
 
我应该写什么?我最终陷入了ssget、ssadd、entsel和其他所有记忆不清的函数的噩梦。
 
(顺便说一句,重新学习Lisp程序并伴有发臭的感冒从来都不是一个好主意
回复

使用道具 举报

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 10:58:20 | 显示全部楼层
您可能只需要一个ssget呼叫。类似这样:
 
(ssget“X”(列表(cons 10 pt)))
 
其中pt是公共点。这适用于多段线的起点、块的插入点和文本的插入点。它将选择与该点相关联的DXF组码为10的所有内容。我认为第10组是最常见的插入点,但请检查此处,以防万一:
 
http://autodesk.com/techpubs/autocad/acad2000/dxf/
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 11:02:32 | 显示全部楼层
我一直在得到“糟糕的ssget列表值”,尽管就我所见,10应该可以工作。
 
除非我错过了什么。。。。
 
这很可能。。。。
回复

使用道具 举报

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 11:04:07 | 显示全部楼层
检查传递给函数的点。
 
(ssget“X”(列表(cons 10(列表0)))
 
将工作,因为DXF代码10得到了它想要的列表。然而,这不会:
 
(ssget“X”(列表(cons 10“why hello thar”))
 
因为代码10不喜欢字符串。
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 11:06:45 | 显示全部楼层
我承认我现在很困惑。
 
这是我为选择多段线和属性定义并转换为块而编写的内容:
 
(ssget“x”(列表(cons 10(列表976.1774 821.7919 0.00)))
(命令“block”“populate”“976.1774821.7919”)
(命令“insert”“populate”“976.1774821.7919”“”“”“”“”“”
 
我哪里出错了?(到处都是)。。。。
回复

使用道具 举报

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 11:09:57 | 显示全部楼层
啊,我知道你在那里做了什么。
 
有一点建议,每当我处理这样的命令行调用时,当我遇到一个又一个错误时,我通常从第一个命令调用开始,并保持菊花链,直到我让它工作。也就是说,从以下方面开始:
 
(命令“block”)并查看发生了什么。然后
(命令“block”“populate”)并查看发生了什么。然后
(命令“block”“populate”“976.1774821.7919”)并查看发生了什么。
 
幸运的是,在这种情况下,一旦你这样做,很容易看到。我将为您省去麻烦:block命令需要对象。您已经通过ssget调用很好地收集了它们,但现在需要将它们放入创建块的命令函数中。这应该紧跟在“976.1774821.7919”之后,当你到达那里时,你会看到它(命令提示符会询问你想要的对象)。
 
此外,请记住,ssget调用可能返回nil,这将破坏创建块的命令调用,以及后面可能出现的任何其他调用。
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 11:12:33 | 显示全部楼层
不要介意。。。修复了它。
 
为你的帮助干杯。
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 11:17:48 | 显示全部楼层
感谢您的快速回复。。。正如我所说,我的大脑严重混乱……:-)
 
当我发布我的问题时,我几乎意识到我做错了什么。
 
谢谢你!
回复

使用道具 举报

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 11:21:15 | 显示全部楼层
很乐意帮助^。^
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-6 11:23:36 | 显示全部楼层
这个问题与这个问题无关,但我认为它属于一个愚蠢的问题。我已经用ssget选择了动态块,现在如何更改动态块长度?我使用的是Alan J的一个代码,在插入块时有效,但这是更改现有块时的方法吗?
 
  1. (vl-load-com)
  2.    ((lambda (block)
  3.       (foreach x (vlax-invoke block 'GetDynamicBlockProperties)
  4.         (and (eq (vla-get-propertyname x) "Distance1")
  5.              (vla-put-value
  6.                x
  7.                  (distance p1 p2)
  8.              )
  9.         )
  10.       )
  11.     )
  12. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 11:55 , Processed in 0.670670 second(s), 72 queries .

© 2020-2025 乐筑天下

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