明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2629|回复: 8

请修改从Excel读数据生成多段线不能标注文字问题

[复制链接]
发表于 2012-2-11 20:14:55 | 显示全部楼层 |阅读模式
请帮助修改从Excel读取数据并生成多段线程序中标注桩号(A列中单行文字)的问题。能生成多段线。感觉是从Excel读取的坐标数据类型不对,CAD中显示:错误: 参数类型错误: numberp: #<variant 9 -196.534270122988>,去掉生成单行文字的两句程序就正常运行。刚学Lisp 不久,请各位帮助。谢谢!程序见附件。  黄玉宏  二○一二年二月十一日

(defun C:TT ( / pt)  ;; pt只能作局部变量
(vl-load-com)
(setq ExcelApp (vlax-get-object "Excel.Application"))
(setq wb (vlax-get-property ExcelApp 'ActiveWorkbook))    ;;Excel工作簿对象
(setq sh (vlax-get-property wb 'ActiveSheet))   ;;Excel工作表对象
(setq range0 (vlax-get-property sh 'range "A65536"))
(setq E (vlax-get-property (vlax-get-property range0 'end -4162) 'row))
(setq Cells (vlax-get sh "cells"))
  (setq acadapp (vlax-get-Acad-Object)
       acaddoc (vla-get-ActiveDocument acadapp)
       MySpace (vla-get-ModelSpace acaddoc))
;(setq x (vlax-get-property cells 'item 1 1))
(setq N ( + (- E 2) 1))  ;;;全部桩号个数N=E-2+1
(setq i 2)
(repeat N
(setq ZH (vlax-get-property cells 'item i 1))
(setq x (vlax-get-property cells 'item i 2))
(setq y (vlax-get-property cells 'item i 3))
(setq z (vlax-get-property cells 'item i 4))
(setq pt (append pt (list x y)))
;;;注:以下两句为插入单行文字有问题!请帮助修改   QQ:653294278   Tel:13337788260
;;;(setq insertionPoint (vlax-3d-point (list x y 0)))      ;;;插入单行文字(桩号),有问题!CAD提示: 错误: 参数类型错误: numberp: #<variant 9 -196.534270122988>
;;;(setq textObj(vla-AddText MySpace ZH insertionPoint 3)) ;;;ZH-A列中数据,为桩号(试图用 Lisp的"Text"方法也不行
(setq i (1+ i))
)   
(setq ptlstlen (length Pt)); 建立数组
(setq PointDataA (vlax-make-safearray vlax-vbDouble (cons 0 (1- ptlstlen))))
(vlax-safearray-fill PointDataA Pt)
(setq PointData (vlax-make-variant PointDataA))
(setq myLWpoly (vla-addLightweightPolyline MySpace PointData))
(vla-Put-Color myLWpoly acBlue)
(princ)
  
)
发表于 2012-2-12 08:32:16 | 显示全部楼层
谢谢楼主分享
发表于 2012-2-12 19:37:04 | 显示全部楼层
数据类型问题。
游客,本帖隐藏的内容需要发帖数高于 5 才可浏览,你当前发帖数只有 0
 楼主| 发表于 2012-2-12 22:43:37 | 显示全部楼层
非常感谢,请问你是昨天在群里的那位工程师吗?
发表于 2012-2-12 23:02:56 | 显示全部楼层
发表于 2012-2-26 15:39:24 | 显示全部楼层
看不到呀,要努力发帖。
发表于 2012-2-26 16:12:49 | 显示全部楼层
继续努力看看
发表于 2012-4-9 18:49:44 | 显示全部楼层
本帖最后由 zdqwy19 于 2012-4-9 18:53 编辑

         有问题的是这一句(setq insertionPoint (vlax-3d-point (list x y 0))),改这一句就可以了,其余没有动。下面是改过的程序。

  1. (defun C:TT ( / pt)  ;; pt只能作局部变量
  2. (vl-load-com)
  3. (setq ExcelApp (vlax-get-object "Excel.Application"))
  4. (setq wb (vlax-get-property ExcelApp 'ActiveWorkbook))    ;;Excel工作簿对象
  5. (setq sh (vlax-get-property wb 'ActiveSheet))   ;;Excel工作表对象
  6. (setq range0 (vlax-get-property sh 'range "A65536"))
  7. (setq E (vlax-get-property (vlax-get-property range0 'end -4162) 'row))
  8. (setq Cells (vlax-get sh "cells"))
  9.   (setq acadapp (vlax-get-Acad-Object)
  10.        acaddoc (vla-get-ActiveDocument acadapp)
  11.        MySpace (vla-get-ModelSpace acaddoc))
  12. ;(setq x (vlax-get-property cells 'item 1 1))
  13. (setq N ( + (- E 2) 1))  ;;;全部桩号个数N=E-2+1
  14. (setq i 2)
  15. (repeat N
  16. (setq ZH (vlax-get-property cells 'item i 1))
  17. (setq x (vlax-get-property cells 'item i 2))
  18. (setq y (vlax-get-property cells 'item i 3))
  19. (setq z (vlax-get-property cells 'item i 4))
  20. (setq pt (append pt (list x y)))
  21. ;;;注:以下两句为插入单行文字有问题!请帮助修改   QQ:653294278   Tel:13337788260
  22. (setq insertionPoint (vlax-3d-point (list
  23.           (atof (vlax-variant-value(vlax-get-property (vlax-variant-value x) 'text)))
  24.           (atof (vlax-variant-value(vlax-get-property (vlax-variant-value y) 'text)))
  25.           0)));;;把这一句改成这样就行了
  26. (setq textObj(vla-AddText MySpace ZH insertionPoint 3)) ;;;ZH-A列中数据,为桩号(试图用 Lisp的"Text"方法也不行
  27. (setq i (1+ i))
  28. )  
  29. (setq ptlstlen (length Pt)); 建立数组
  30. (setq PointDataA (vlax-make-safearray vlax-vbDouble (cons 0 (1- ptlstlen))))
  31. (vlax-safearray-fill PointDataA Pt)
  32. (setq PointData (vlax-make-variant PointDataA))
  33. (setq myLWpoly (vla-addLightweightPolyline MySpace PointData))
  34. (vla-Put-Color myLWpoly acBlue)
  35. (princ)
  36. )

发表于 2014-4-6 02:02:18 | 显示全部楼层
继续努力看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-23 06:57 , Processed in 0.195661 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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