找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 959|回复: 3

[求助] [LISP函数]:求助:用vla-setxdata出现错误???

[复制链接]
发表于 2005-7-23 17:09:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
程序如下:
(setq startPnt(vlax-make-safearray vlax-vbDouble '(0 . 2)))
(vlax-safearray-fill startPnt st_point)
(setq endPnt(vlax-make-safearray vlax-vbDouble '(0 . 2)))
(vlax-safearray-fill endPnt p3)
(setq Line_Obj(vla-AddLine mSpace startPnt endPnt))


       (setq xtype (vlax-make-safearray vlax-vbvariant '(0 . 1)))
   (setq xdata (vlax-make-safearray vlax-vbvariant '(0 . 1)))
          (vlax-safearray-fill xtype '(1001 1000))
          (vlax-safearray-fill xdata '("loop" "loop"))
           (vla-setxdata line_obj xtype xdata)

运行后出现:错误: Automation 错误。未提供说明。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-7-23 17:31:34 | 显示全部楼层
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 24个

财富等级: 恭喜发财

发表于 2005-7-23 17:37:28 | 显示全部楼层
(setq xtype (vlax-make-safearray vlax-vbvariant '(0 . 1)))有误!!!
应该将vlax-vbvariant 改为vlax-vbInteger
(setq xtype (vlax-make-safearray vlax-vbInteger '(0 . 1)))

下面是引用ActiveX/VBA Reference的内容,注意黑体部分
Signature object.SetXData XDataType, XData
Object:...
XDataType:Variant [U][I][B](array of short)[/B][/I][/U]; input-only
XData:Array of Variant; input-only
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2023-7-18 21:47:53 | 显示全部楼层
  1. ;(setq startPnt(vlax-make-safearray vlax-vbDouble '(0 . 2)))
  2. ;(vlax-safearray-fill startPnt st_point)
  3. ;(setq endPnt(vlax-make-safearray vlax-vbDouble '(0 . 2)))
  4. ;(vlax-safearray-fill endPnt p3)
  5. ;(setq Line_Obj(vla-AddLine mSpace startPnt endPnt))
  6. (vl-load-com )
  7. ;(vlax-dump-object(vlax-ename->vla-object(car(entsel)))T)   (entget(car(entsel))'("*"))
  8.        ;(setq xtype (vlax-make-safearray vlax-vbvariant '(0 . 1)))
  9. (setq xtype (vlax-make-safearray vlax-vbInteger '(0 . 1)))
  10.    (setq xdata (vlax-make-safearray vlax-vbvariant '(0 . 1)))
  11.           (vlax-safearray-fill xtype '(1001 1000))
  12.           (vlax-safearray-fill xdata '("loop" "loop"))
  13.            (vla-setxdata (vlax-ename->vla-object(car(entsel))) xtype xdata)

  14. ;(-3 ("loop" (1000 . "loop")))

  15. (defun c:GetX (/ xType XData)
  16. (vl-load-com)
  17. (setq appid "south")
  18. (setq vlaobj (car(entsel"\\n)选择环:")))
  19. (cond ((= (type vlaObj) 'ENAME) (SETQ vlaObj (vlax-ename->vla-object vlaObj)))
  20. ((= (type vlaObj) 'VLA-OBJECT) (SETQ vlaObj vlaObj))
  21. (t (setq olderror *error*)))
  22. (vla-getxdata vlaObj appid 'xType 'xData) ;;此处监视时,其值为nil
  23. (mapcar '(lambda (key val) (cons key (VLAX-VARIANT-value val)))
  24. (vlax-safearray->list xType)
  25. (vlax-safearray->list xData)
  26. )
  27. )

  28. ;(VLAX-VARIANT-value (vlax-safearray->list xData))

  29. ; (apply 'append(mapcar '(lambda (x) (list (cdr x))) (mapcar '(lambda (key val) (cons key (VLAX-VARIANT-value val)))(vlax-safearray->list xType)(vlax-safearray->list xData)))) ;;; ("SOUTH" "202101")

  30. ;(apply 'append '(("SOUTH") ("202101")))

  31. ; (mapcar '(lambda (x) (append (cdr x))) '((1001 . "SOUTH") (1000 . "202101")) )
  32. ;注意APPID是一个已经注册的应用程序名称..是REGAPP以后的名称,是字符串.


  33. (defun zhnfbm (oldobj newobj / xType  xData  xType1 xData1)
  34.     (vl-load-com)
  35. (setq appid "south")
  36.   (vla-getxdata oldobj appid 'xType 'xData) ;;此处监视时,其值为nil  
  37. (setq xType1 (vlax-safearray->list xType) )

  38. (setq xData1 (apply 'append(mapcar '(lambda (x) (list (cdr x))) (mapcar '(lambda (key val) (cons key (VLAX-VARIANT-value val)))(vlax-safearray->list xType)(vlax-safearray->list xData)))) )

  39. (setq xtype (vlax-make-safearray vlax-vbInteger '(0 . 1)))
  40.    (setq xdata (vlax-make-safearray vlax-vbvariant '(0 . 1)))
  41.           (vlax-safearray-fill xtype xType1)
  42.           (vlax-safearray-fill xdata xData1)
  43.            (vla-setxdata newobj xtype xdata)
  44.   
  45.   )

  46. ;; (zhnfbm (vlax-ename->vla-object(car(entsel)))  (vlax-ename->vla-object(car(entsel)))  )


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-22 06:03 , Processed in 0.193540 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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