找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 581|回复: 4

[求助] [求助]:AX方式的选择集怎么生成呢?

[复制链接]
发表于 2003-12-13 12:33:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
(setq et (vla-get-activedocument (vlax-get-acad-object)))
(setq *MODELSPACE* (vla-get-modelspace et ))
(setq SSets (vla-get-SelectionSets et ))

(setq i -1)
(setq ent (vlax-safearray-fill
                              (vlax-make-safearray vlax-vbobject (cons 0 0))
                                      (vlax-ename->vla-object (ssname ss (setq i (1+ i))))
                            ))
(setq as (vla-Add ssets ent))
我用上面的这个就是不行,不 知道VLA里的选择集怎么生成,查过HELP里的好像是用ADD方法加的呀,可就是不行
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-12-13 14:51:49 | 显示全部楼层
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-12-13 15:53:13 | 显示全部楼层
看懂了一点
(setq ss (ssget))

(vl-load-com)
(setq VLA-ACDOC (vla-get-activedocument (vlax-get-acad-object)))
(setq *MODELSPACE* (vla-get-modelspace VLA-ACDOC))
(setq SSets (vla-get-SelectionSets VLA-ACDOC))
(setq i -1)
(setq ent (vlax-make-variant "e" vlax-vbString))
(setq as (vla-Add ssets ent))
(repeat (sslength ss)
                 (setq es (vla-AddItems as
                            (vlax-safearray-fill
                              (vlax-make-safearray vlax-vbobject (cons 0 0))
                            (vlax-ename->vla-object (ssname ss (setq i (1+ i))))
                              )
                            )
                       )
                 )
现在改成这样了,不知道为什么safearray不能创建,请多多指教
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-12-13 21:02:44 | 显示全部楼层
还是没名字:选集的名字。

先找到他的父亲:就是你的SSets

(setq newsset (vla-add ssets "NEW_SSET")) ;  "NEW_SSET"就为名.

而newsset只是vla返回的"对象名称"(vla-object)
就是说选集"NEW_SSET"的对象名称为newsset.

但是要干什么事情应该用这newsset,因为你用的是vla的方法,就要把对象转成vla-object.

然后可以把你选中的实体往里加了.(先要转换成variant)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-12-15 12:07:56 | 显示全部楼层
哦,差不多懂了,那再问一下,
要转成VARIANT这样是哪里错了:
(vlax-safearray-fill (vlax-make-safearray vlax-vbobject (cons 0 0)) (vlax-ename->vla-object (ssname ss (setq i (1+ i)))))
每次都说初始化列表无效
加实体的话是不是用additems
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-26 22:38 , Processed in 0.177467 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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