明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2881|回复: 6

[求助]如何将(ssget)产生的选择集转换为vlax-for能用的选择集

[复制链接]
发表于 2007-2-14 14:27 | 显示全部楼层 |阅读模式

需要将(ssget)产生的选择在vlax-for的循环体中操作,不知如何对LISP的选择集转换为VBA的选择集

如:
(setq s1(ssget))
(setq s2(ssget))
现在要针对S1操作。而vla-get-ActiveSelectionSet只能针对当前选择集。

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2007-2-14 14:58 | 显示全部楼层
entdel s2 可行吗
发表于 2007-2-14 15:13 | 显示全部楼层
用完(setq s1(ssget))后,就先vla-get-ActiveSelectionSet把这个当前选择集保存起来,
再(setq s2(ssget))
发表于 2007-2-14 18:01 | 显示全部楼层
AddItems 方法



添加一个或多个对象到指定选择集。

参阅 | 示例

语法

object.AddItems Items

Object

SelectionSet
使用该方法的对象。

Items

Variant[变体]
添加到选择集的对象数组。

说明

选定的对象如果原来就存在于选择集中会继续留在选择集中。要替换选择集中的对象、清除选择集,可使用 Clear 方法,然后再添加对象。

要从选择集中移除个别对象,可使用 RemoveItems 方法。

发表于 2007-2-14 22:15 | 显示全部楼层
看见AUTOLISP就亲切,其余的看如天书~~
 楼主| 发表于 2007-2-15 10:17 | 显示全部楼层
狂刀无痕发表于2007-2-14 18:01:00AddItems 方法添加一个或多个对象到指定选择集。参阅 | 示例语法 object.AddItems Items ObjectSelectionSet使用该方法的对象。 ItemsVariant添加到选择集的对象数组。 说明 选定的对象如果原来

看来还是得遍历呀!!!!!!!!
当初就因为用While来处理选择集速度没有用VLX-FOR快,才想将LISP选择集转换的。
发表于 2007-2-15 22:41 | 显示全部楼层
测试一个lsp
  1. (defun c:test ( / app doc sels ss len i lst en eo  arr name sel it)
  2.   (setq app (vlax-get-acad-object)
  3. doc (vla-get-activedocument app)
  4. sels (vla-get-selectionsets doc))
  5.   (prompt  "\n选择对象:")
  6.   (setq ss (ssget))
  7.   (if ss
  8.     (progn
  9.       (setq len (sslength ss)
  10.      i 0
  11.      lst '())
  12.       (repeat len
  13. (setq en (ssname ss i)
  14.        eo (vlax-ename->vla-object en))
  15. (setq lst (append lst (list eo)))
  16. (setq i (1+ i))
  17.       );repeat
  18.       ;建立对象数组
  19.       (setq arr (vlax-make-safearray vlax-vbObject (cons 0 (- (length lst) 1)))
  20.      arr (vlax-safearray-fill arr lst)
  21.      arr (vlax-make-variant arr))
  22.       
  23.       ;建立空选择集
  24.       (setq name "myset")
  25.       (if (vl-catch-all-error-p (setq sel (vl-catch-all-apply 'vla-item (list sels name))))
  26. (setq sel (vla-add sels name))
  27. (vla-clear sel)
  28.       );if
  29.       ;添加实体
  30.       (vla-AddItems sel arr)
  31.       (vlax-for it sel
  32. (princ (strcat "\n" (vlax-get-property it 'ObjectName)))
  33.       )
  34.       ;删除选择集
  35.       (vla-delete sel)
  36.     )
  37.   );if
  38.   (princ)
  39. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-18 04:58 , Processed in 0.184213 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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