向activeselectionset添加项
我做错了什么?(setq test1
(vlax-safearray-fill
(vlax-make-safearray vlax-VBobject (cons 0 0))
(list (vlax-ename->vla-object (car (entsel))))
)
)
(setq test2
(vlax-make-variant test1)
)
;;both of these will not add an item to the activeselectionset
;test1
(vla-additems (vla-get-activeselectionset *acdoc*) test1)
;test2
(vla-additems (vla-get-activeselectionset *acdoc*) test2)
除了个人挑战之外,我可以问一下为什么要做这些额外的工作吗?
诚然,我在安全阵列、变体等方面不是很好——这就是为什么我喜欢使用vlax-3d-point!英雄联盟
无论如何,我这样问是因为只使用SSADD似乎更简单,例如:
使用最后一行创建初始选择集(本例中为全局变量“ss”),然后多次运行E2SS。
编辑:FOO只需将(当前)选择集中的项目变成红色,撤消以再次运行E2SS,然后查看更改。 这对我来说很有用:
(defun c:test ( / acdoc acsel acutl obj )
(setq acdoc (vla-get-activedocument (vlax-get-acad-object))
acutl (vla-get-utility acdoc)
)
(if (ssget)
(progn
(setq acsel (vla-get-activeselectionset acdoc))
(princ (strcat "\nSelSet Count: " (itoa (vla-get-count acsel))))
(while
(not
(vl-catch-all-error-p
(vl-catch-all-apply 'vla-getentity
(list acutl 'obj 'pnt "\nSelect Object to Add: ")
)
)
)
(vla-additems acsel
(vlax-make-variant
(vlax-safearray-fill
(vlax-make-safearray vlax-vbobject '(0 . 0)) (list obj)
)
)
)
(princ (strcat "\nSelSet Count: " (itoa (vla-get-count acsel))))
)
)
)
(princ)
)
注意,可以使用entsel/vlax-ename->vla-object,但我想把事情搞混 我碰巧注意到方法部分中的additem,当时
(vlax-dump-object (vlax-get (vlax-get (vlax-get-acad-object) 'ActiveDocument) 'Activeselectionset) t)
我只是想试试。当我找不到工作的时候,我真的很烦。
了不起的斯科特!他对我们Lisp程序!?!?
酷李-我无法得到它(我的版本)的工作,当我把一个之前张贴的ssadd位。但我确实注意到了这些选项,并在vlax vbobject上暂停了。很高兴看到一个你正在努力解决的问题的工作示例。这确实有助于学习过程。 4
只是找点乐子
1+乐意帮忙
页:
[1]