明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2014|回复: 6

怎样将炸开后的对象和原选择集中无法炸开的对象一起放到某选择集中?

[复制链接]
发表于 2011-7-16 16:53:36 | 显示全部楼层 |阅读模式
怎样将炸开后的对象和原选择集中无法炸开的对象一起放到某选择集中?
(ssget "p"))只能将炸开后的对象放到一个选择集里,但不包括原来不能炸开的对象,因为我用sslength查看选择集长度时发现只有炸开后的元素的个数。但若用删除命令,取可以将无法炸开的选择集一起删除,真是不解。
发表于 2011-7-16 21:58:57 | 显示全部楼层
如炸开前选集为SS
炸开后的选集为SS1
没有炸开和炸开后的SS2 如下
(command ".select" ss ss1 "") (setq ss2(sget "p"))
 楼主| 发表于 2011-7-17 17:23:11 | 显示全部楼层
本帖最后由 windbells888 于 2011-7-17 17:36 编辑

试了下,输出SS2的长度的话,还是显示光有炸开后对象数目,并不包括不能炸开的对象。但用ERASE命令删除SS2又可以将所有对象都删除,不知道 啥原因。
发表于 2011-7-17 17:55:56 | 显示全部楼层
没遇到过楼主说的这种情况。刚才测试了一下,如果块中有不能炸开的对象,如形或文字,打散后(ssget “p”)包含有这些对象,总数是对的。

楼主所说的“不能炸开的对象”可能与众不同,建议上图看看。
 楼主| 发表于 2011-7-17 18:07:39 | 显示全部楼层
像下面这样的程序。假如开始的对象是1个圆,1条直线,1个矩形,1个五边形。
那么开始SS的长度是4,炸开后得到的SS1长度应该是9。
执行:(vl-cmdf ".select" ss ss1 "") (setq ss2 (ssget "p"))
后,SS2仍然是9,并不是11

(DEFUN c:tt ()
(setvar "qaflags" 1)
(vl-cmdf ".explode" (setq ss (ssget)) "")
(vl-cmdf ".select" ss ss1 "")
(setq ss2 (ssget "p"))
(princ (strcat "\nss2长度为" (itoa (sslength ss2))))
;;(command ".erase" ss2 "")
(princ)
)
发表于 2011-7-17 18:09:14 | 显示全部楼层
windbells888 发表于 2011-7-16 16:53
怎样将炸开后的对象和原选择集中无法炸开的对象一起放到某选择集中?
(ssget "p"))只能将炸开后的对象放到 ...

同意祥子的观点
楼主可以按下面的代码试一下,我测试成功
(setq ss1 (ssget))
(command "explode" ss1"")
(setq ss2 (ssget "p"))
(command ".select" ss1 ss2 "")
(setq ss3 (ssget "p"))
(sssetfirst nil ss3)
 楼主| 发表于 2011-7-17 18:17:36 | 显示全部楼层
按ahwx0814 的代码确实能够测试成功,正查找自己做错的原因,谢谢各位!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-7-26 07:53 , Processed in 0.173331 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表