明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: caoyin

请教:如何把选择集设为激活的选择集

  [复制链接]
发表于 2011-6-11 16:18:31 | 显示全部楼层
(sssetfirst nil ss)
  (ssget)
遗憾的是,这两个函数做成透明命令,不能执行。
不知道有没有VLISP方法,实现“ vla-PUT-ActiveSelectionSet”?
 楼主| 发表于 2011-6-11 17:53:48 | 显示全部楼层
思路
1.已知指定的选择集是 SSET
2.vla-get-ActiveSelectionSet获得当前选择集 Asset
3.用vla-RemoveItems清空 ASSET
4.将SSET中的对象转化为VLA对象并用vla-addItems添加到 ASSET
发表于 2011-6-11 22:30:05 | 显示全部楼层
测试不成功,程序如下 :(vl-load-com)
(defun lst2arr (obj_lst / obj_arr)
  (setq obj_arr (vlax-make-safearray vlax-vbObject (cons 0 (- (length obj_lst) 1)))
        obj_arr (vlax-safearray-fill obj_arr obj_lst)
        obj_arr (vlax-make-variant obj_arr))
)
(defun c:stest ( / obj_lst obj_arr ass len i )
  ;;测试之前首先: (setq ss (ssget)) 然后(ssget) 置当前选择集为与ss不同的另一选集
  ;;然后执行stest  ;再次(ssget),用"p"响应,看当前选择集是否变化
    (setq acadDocument (vla-get-activedocument (vlax-get-acad-object)))
    (setq ass (vla-get-ActiveSelectionSet acadDocument))
    (vlax-dump-object ass t)
    (vlax-for item ass (setq obj_lst (cons item obj_lst)))
    (setq obj_arr (lst2arr obj_lst))
    (vla-removeitems ass obj_arr)
    (vlax-dump-object ass t)
    (if ss  ;; ss 由外部传递
       (progn
             (setq len (sslength ss)
                   i 0
                   obj_lst '())
            (repeat len
                    (setq en (ssname ss i)
                          eo (vlax-ename->vla-object en))
                    (setq obj_lst (append obj_lst (list eo)))
                    (setq i (1+ i))
            );repeat
       (setq obj_arr (lst2arr obj_lst))
       (vla-additems ass obj_arr)
       (vlax-dump-object ass t);;这里可以看到选择集里的元素已经变化
   ));;if
  ;(vla-update ass)
  (setq ass (vla-get-ActiveSelectionSet acadDocument))
  (vlax-dump-object ass t) ;;这里看到的当前选择集却不是上面的ass
  (princ)
);defun


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

本版积分规则

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

GMT+8, 2025-6-10 09:52 , Processed in 0.159547 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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