- 积分
- 36809
- 明经币
- 个
- 注册时间
- 2010-7-10
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
发表于 2011-11-15 11:10:47
|
显示全部楼层
xiaxiang 发表于 2011-11-15 09:30
据说vlax-invoke用在2000以前的版本。有高手知道具体的区别吗
;;不仅仅是版本的区别
;;它们还是不同的。与此相关的函数还有vlax-put,vlax-get和vlax-put-prpperty,vlax-get-property
;;vlax-invoken在一些场合下,可以直接传送数据,而不用先将他们转化为安全数组或者变量。其他的类似。
;;通常来说,vlax-put,vlax-invoke,vlax-get 用法更简单,因为它们的参数或者返回值 跟lisp相似。
;;而后者对安全数组或者变量敏感。
;;vlax-put-prpperty,vlax-invoke-method,vlax-get-property有时候需要数据转化,譬如把variant和lisp的数据类型的转化
;;或者把安全数组和lisp的点表的转化
;;在某些情况下,vlax-invoke可以缺省某些参数,而对vlax-invoke-method 不能缺省参数。
;;在某些情况下,一种可以用,而另一种却不可用。
(defun c:test(/ ent obj pnt)
(setq ent (car (entsel "\n选择图块物体:")))
(if (and ent (= (cdr (assoc 0 (entget ent))) "INSERT"))
(progn
(setq obj (vlax-ename->vla-object ent))
;;无需将pnt转化为variant
(setq pnt (getpoint "\n新的插入点(方式1):"))
(and pnt (vlax-put obj 'InsertionPoint pnt))
;;用(vlax-put-property obj 'InsertionPoint pnt)会出错
(setq pnt (getpoint "\n新的插入点(方式2):"))
(and pnt (vlax-put-property obj 'InsertionPoint (vlax-3d-point pnt)))
)
)
) |
|