jfxia 发表于 2011-5-31 12:11:21

怎样用getxdata 读取扩展数据

         从明经上下了个函数,用来读取扩展数据的,AX:getxdata

但是老是会中断退出,恳请版主帮修正下,谢

;以下来自明经
   (defun ax:GetXData (vlaObj AppID / xType XData)
(vla-getxdata vlaObj AppID 'xType xData)
(mapcar '(lambda (key val) (cons key (lisp-value val)))         
          (vlax-safearray->list xType)         
          (vlax-safearray->list xData)
)
)

;--------------
(defun lisp-value (v)
   (cond
   ((= (type v) 'variant)
       (lisp-value (variant-value v)))
   ((= (type v) 'safearray)
       (mapcar 'lisp-value (safearray-value v)))
   (T v)
   )
)


;--------------为何以下老是中断

(defun c:ReadComponentxdata ()
   (vl-load-com)
    (setq acadobject (vlax-get-acad-object)
          acaddoc (vla-get-activedocument acadobject)
          mspace (vla-get-ModelSpace acaddoc))
    (graphscr)
(SETQ en (car(entsel "Select object: ")))
(setq vlaobj (vlax-ename->vla-object en))
(ax:GetXData VlaObj "*")
);end defun


lenlenq 发表于 2011-6-1 21:47:51

本帖最后由 lenlenq 于 2011-6-1 21:48 编辑

(defun ax:GetXData (vlaObj AppID / xType XData)
   (vla-getxdata vlaObj AppID 'xType 'xData)
   (mapcar '(lambda (key val) (cons key (lisp-value val)))
             (vlax-safearray->list xType)
             (vlax-safearray->list xData)
   )
   )

(vla-getxdata vlaObj AppID 'xType xData)
xData改成 'xData试一下

jfxia 发表于 2011-6-2 12:32:48

      谢楼上,试验成功

无忧小格子 发表于 2013-12-29 15:41:08

按2楼的改了以后,运行时出错
错误: 参数类型错误: safearrayp nil
是什么情况?
页: [1]
查看完整版本: 怎样用getxdata 读取扩展数据