乐筑天下

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

[编程交流] ENTSEL循环选择

[复制链接]

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-5 20:11:15 | 显示全部楼层 |阅读模式
大家好,
 
我甚至不确定我是否以正确的方式来做这件事,但让我试着解释一下我试图实现什么,以及我试图实现它的方法。
 
我有一个ProSteel命令(PS\u CREATE\u SPEZPART),我想逐个将选择集的每个元素传递给。据我所知,这个ProSteel命令将接受ENTSEL形式的选择,但不是单个项目选择集。
 
所以我想创建一个选择集,并使用REPEAT&SSNAME函数循环遍历它。
 
  1. (defun c:tmi ()
  2. (prompt "\nSelect item:")
  3. (setq ss (ssget))
  4. (setq num (sslength ss))
  5. (setq con 0)
  6. (repeat num  
  7. (setq ent3A (ssname ss con))
  8. (command "PS_CREATE_SPEZPART" ent3A nil)
  9. (setq con (1+ con))
  10. )
  11. )

 
... 这不起作用。
 
我想我正在挣扎的是。。。SSNAME返回实体的名称,而不是选择该实体。这是正确的还是我遗漏了什么?
 
所以我的问题是,有没有可能像ENTSEL一样将每个元素传递给这个ProSteel命令?
 
非常感谢您的帮助。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 20:20:14 | 显示全部楼层
由于entsel返回两个项目(选定实体和光标选取框的中心)的列表,请尝试以下操作:
  1. (defun c:tmi ( / num sel )
  2.    (prompt "\nSelect item: ")
  3.    (if (setq sel (ssget))
  4.        (repeat (setq num (sslength sel))
  5.            (command "_.PS_CREATE_SPEZPART"
  6.                (list (ssname sel (setq num (1- num))) '(0 0 0))
  7.            )
  8.        )
  9.    )
  10.    (princ)
  11. )

 
根据命令的操作方式,随实体提供的点可能需要位于对象上或附近。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:32:28 | 显示全部楼层
检查你的车(entsel)
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:37:29 | 显示全部楼层
我喂狗的时候李偷偷溜了进来
回复

使用道具 举报

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-5 20:48:03 | 显示全部楼层
嗨,李和比格尔,
 
非常感谢你的帮助。你又一次做到了。
 
李-你的例行工作很好,我已经测试了一些类型和组合的元素,它已经成功了每一次。不过,为了让我继续深造,你能解释一下“1-num”背后的逻辑/哲学吗。我知道它被用来处理选择集(SSNAME的索引)。我只是无法理解“1-”。。。它是否与“num-1”相同(但语法正确)?
 
哈哈,李肯定很快,谢谢你的建议。
回复

使用道具 举报

12

主题

395

帖子

384

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-5 20:48:50 | 显示全部楼层
实际上不是李,他建立了一个Lisp程序的程序来回答问题。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 21:00:48 | 显示全部楼层
 
很高兴听到!谢谢你,lamensterms
 
 
确实如此-
 
1和1+函数只是方便快捷的函数,只需将给定数值增加或减少一:
  1. (1+ x) is the same as (+ x 1)

因此,我的代码在选择集上迭代,从第(sslength-1)位的实体开始,并将索引减少到零(因为选择集索引是基于零的)。有关此主题的更多信息,请参阅我的有关感兴趣的选择集处理的教程。
 
 
:lol:我能说什么呢,LISP最初是为了开发A.I。
回复

使用道具 举报

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-5 21:10:10 | 显示全部楼层
太棒了,谢谢你花时间解释,李。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 21:18:04 | 显示全部楼层
 
不客气,拉门斯特姆
如果您还有其他问题,请随时提问。
 
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 09:26 , Processed in 0.721909 second(s), 70 queries .

© 2020-2025 乐筑天下

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