如何使用SETXDATA和GETXDATA函数,在LISP中
请教高手,我想在LISP中用上面说的2个函数,可是怎么不行啊,提取的数据就是变体数组不知道怎么搞的还是空的 本帖最后由 caojihe 于 2020-7-29 22:02 编辑各位大佬我把一个带有扩展数据的物体vname,转换过来后,检验vname1为什么看不到扩展数据呢?((setq vname1 (entget (vlax-vla-object->ename vname))))
注意查看帮助文件中ActiveX and VBA reference部分,有这两个方法的用法,并结合开发人员手册的ActiveX部分,知道其在VLISP中如何使用,以下程序供参考,
你最好把你的做法放上来,好针对你的问题进行说明,否则只能说,慢慢学吧
(defun c:test( / ss ename vname datatype data)<BR> (setq ss (ssget))<BR> (setq ename (ssname ss 0))<BR> (setq vname (vlax-ename->vla-object ename))<BR> (setq datatype (vlax-make-safearray vlax-vbInteger '(0 . 4)))<BR> (vlax-safearray-fill datatype '(1001 1000 1000 1040 1040))<BR> (setq data (vlax-make-safearray vlax-vbvariant '(0 . 4)))<BR> (vlax-safearray-fill data '("hello" "abc" "hello" 12.5 12.6))<BR> (vla-setxdata vname datatype data)<BR> (princ)<BR>) 我是那样做了啊!!可是我用GETXDATA函数时怎么提取不出来啊!!(setq xdata (vlax-make-safearray vlax-vbvariant '(0 . 4)))
(setq xdatatype (vlax-make-safearray vlax-vbInteger '(0 . 4)))<BR><BR>(vla-getxdata vname xdatatype xdata)
可是XDATATYPE和XDATA还是空的啊<BR> 仔细看看,一样吗?
你的xdatatype和xdata没有填充值进去,当然是空的了,比较一下我的程序,很容易能明白啊 不是吧???用GETXDATA应该可以提取的啊???怎么还要填充啊??能说的明白点吗》?? 你要把XDATA作为扩展数据附着到对象上,可你的XDATA是空的,怎么附着上去????
请问,按你的做法,你觉得你应该给对象附着了什么东西呢? 不是啊!!GATXDATA函数不是可以得到附加在实体上的扩展数据吗??我想选择一实体的时候能得出此实体的扩展数据!! 问题是你还没有把扩展数据附着的对象上,你又怎么取得出来?????
就像你还没赚到钱,可却到处问怎么才能买颗卫星。。。 不是啊!!我不是用SETXDATA函数附加上去过了吗?? 不好意思。。。
这样
(vla-getxdata (vlax-ename->vla-object (car (entsel))) "hello" 'datatype 'data )
页:
[1]
2