找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2163|回复: 32

[求助] CAD与EXCEL相互转化并自动画图

[复制链接]
发表于 2019-1-13 16:22:07 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 立冬 于 2019-1-13 17:04 编辑

论坛的各位大神你们好:
以前都是手动画图,效率太低。求各位帮忙能否将附件内的EXCEL数据直接转画到CAD中。小弟在此拜谢了!!!



123.JPG
321.JPG

Desktop.rar

103.91 KB, 下载次数: 14, 下载积分: D豆 -1 , 活跃度 1

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

已领礼包: 40个

财富等级: 招财进宝

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

使用道具 举报

 楼主| 发表于 2019-1-13 17:05:58 | 显示全部楼层
newer 发表于 2019-1-13 16:28
为保证帖子清晰,请截取图片传上来。

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2019-1-13 17:45:12 | 显示全部楼层
定义两个块
1 里程标记
2 中间的标注

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

使用道具 举报

已领礼包: 4365个

财富等级: 富可敌国

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

使用道具 举报

已领礼包: 1227个

财富等级: 财源广进

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

使用道具 举报

 楼主| 发表于 2019-1-14 07:32:53 | 显示全部楼层
st788796 发表于 2019-1-13 17:45
定义两个块
1 里程标记
2 中间的标注

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

使用道具 举报

已领礼包: 154个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 3904个

财富等级: 富可敌国

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

使用道具 举报

已领礼包: 1667个

财富等级: 堆金积玉

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2019-1-14 16:02:01 | 显示全部楼层
本帖最后由 st788796 于 2019-1-15 10:42 编辑

更新:

增加粗线绘制,里程加上 "+"

仅对提供的样图,没有加入绘制粗线


  1. (defun c:tt (/               _ADDATTRIBUTE           _mkfont   _mkblock
  2.              _insert   _setlayer _mkblocklc             p
  3.              lst       str         sl           el             date
  4.              tmp       len         bp
  5.             )
  6.   (defun _mkfont (/ ts)
  7.     (if        (not (tblsearch "style" "x_efont"))
  8.       (progn
  9.         (setq ts (vla-add (vla-get-textstyles *xd:doc*) "x_efont"))
  10.         (vla-setfont
  11.           ts "Times New Roman" :vlax-false :vlax-false 1 0)
  12.       )
  13.     )
  14.   )
  15.   (defun _setlayer (obj)
  16.     (vla-put-layer obj "0")
  17.     (vla-put-color obj acbylayer)
  18.   )
  19.   (defun _mkblocklc (/ blkdef ln)
  20.     (if        (not (tblsearch "block" "gk_x0"))
  21.       (progn
  22.         (setq blkdef (vla-add (vla-get-blocks *xd:doc*)
  23.                               (vlax-3d-point '(0 0 0))
  24.                               "gk_x0"
  25.                      )
  26.         )
  27.         (setq ln (vla-addline
  28.                    blkdef
  29.                    (vlax-3d-point '(0 -5.0 0))
  30.                    (vlax-3d-point '(0 5 0))
  31.                  )
  32.         )
  33.         (_setlayer ln)
  34.         (setq ln (vla-addline
  35.                    blkdef
  36.                    (vlax-3d-point '(0 10.0 0))
  37.                    (vlax-3d-point '(0 35 0))
  38.                  )
  39.         )
  40.         (_setlayer ln)
  41.         (setq att (vla-addattribute
  42.                     blkdef
  43.                     3.0
  44.                     acAttributeModeVerify
  45.                     "LC"
  46.                     (vlax-3d-point '(-1 15 0))
  47.                     "LC"
  48.                     "+666.0"
  49.                   )
  50.         )
  51.         (_setlayer att)
  52.         (vla-put-stylename att "x_efont")
  53.         (vla-put-alignment att acAlignmentFit)
  54.         (vla-put-textalignmentpoint att (vlax-3d-point '(-1 30 0)))
  55.       )
  56.     )
  57.   )
  58.   (defun _mkblock (/ _addattribute blkdef circle att txt)

  59.     (defun _addattribute (obj h prmpt inspt tag val aln / att)
  60.       (setq att        (vla-addattribute
  61.                   obj
  62.                   h
  63.                   acAttributeModeVerify
  64.                   prmpt
  65.                   (vlax-3d-point inspt)
  66.                   tag
  67.                   val
  68.                 )
  69.       )
  70.       (if (not (eq aln acAlignmentLeft))
  71.         (progn
  72.           (vla-put-alignment att aln)
  73.           (vla-put-textalignmentpoint att (vlax-3d-point inspt))
  74.         )
  75.       )
  76.       (vla-put-stylename att "x_efont")
  77.       (_setlayer att)
  78.     )
  79.     (if        (not (tblsearch "block" "gk_x"))
  80.       (progn
  81.         (setq blkdef (vla-add (vla-get-blocks *xd:doc*)
  82.                               (vlax-3d-point '(0 0 0))
  83.                               "gk_x"
  84.                      )
  85.         )
  86.         (setq circle (vla-addcircle
  87.                        blkdef
  88.                        (vlax-3d-point '(-16.8 -2.6 0.0))
  89.                        2.0
  90.                      )
  91.         )
  92.         (_setlayer circle)
  93.         (setq txt (vla-addtext
  94.                     blkdef
  95.                     "ts="
  96.                     (vlax-3d-point '(4.4 -3.5 0.0))
  97.                     2.5
  98.                   )
  99.         )
  100.         (vla-put-stylename txt "x_efont")
  101.         (_setlayer txt)
  102.         (_addattribute
  103.           blkdef           3.0                    "Date"
  104.           '(0 0 0)           "DATE"            "2019.1.1"
  105.           acAlignmentBottomCenter
  106.          )
  107.         (_addattribute
  108.           blkdef            2.0                      "Number"
  109.           '(-16.8 -2.6 0.0) "N"                      "1"
  110.           acAlignmentmiddleCenter
  111.          )
  112.         (_addattribute
  113.           blkdef 2.0 "Index" '(-13.9 -4.6 0.0) "INDEX" "I"
  114.           acAlignmentLeft)
  115.         (_addattribute
  116.           blkdef             2.0                "Length"
  117.           '(-3.4 -2.6 0.0)   "LENGTH"                "2000.0"
  118.           acAlignmentMiddleCenter
  119.          )
  120.         (_addattribute
  121.           blkdef 2.0 "temp" '(9.3 -3.5 0.0) "TS" "23.0"        acAlignmentLeft)
  122.       )
  123.     )
  124.   )
  125.   (defun _insert (point date n i len d / blkref tag atts)
  126.     (setq blkref (vla-insertblock
  127.                    (vla-get-modelspace
  128.                      (vla-get-activedocument (vlax-get-acad-object))
  129.                    )
  130.                    (vlax-3d-point point)
  131.                    "gk_x"
  132.                    1.0
  133.                    1.0
  134.                    1.0
  135.                    0.0
  136.                  )
  137.     )
  138.     (setq atts (vlax-invoke blkref 'getattributes))
  139.     (foreach att atts
  140.       (setq tag (strcase (vla-get-tagstring att)))
  141.       (cond
  142.         ((eq tag "DATE")
  143.          (vla-put-textstring att date)
  144.         )
  145.         ((eq tag "N") (vla-put-textstring att n))
  146.         ((eq tag "INDEX") (vla-put-textstring att i))
  147.         ((eq tag "LENGTH") (vla-put-textstring att len))
  148.         ((eq tag "TS") (vla-put-textstring att (strcat d "%%dC")))
  149.         (t)
  150.       )
  151.     )
  152.   )
  153.   (defun _insertlc (p str / blkref atts tag)
  154.     (setq blkref (vla-insertblock
  155.                    (vla-get-modelspace
  156.                      (vla-get-activedocument (vlax-get-acad-object))
  157.                    )
  158.                    (vlax-3d-point p)
  159.                    "gk_x0"
  160.                    1.0
  161.                    1.0
  162.                    1.0
  163.                    0.0
  164.                  )
  165.     )
  166.     (setq atts (vlax-invoke blkref 'getattributes))
  167.     (foreach att atts
  168.       (setq tag (strcase (vla-get-tagstring att)))
  169.       (if (eq tag "LC")
  170.         (vla-put-textstring att str)
  171.       )

  172.     )
  173.   )

  174.   (defun XD::Excel:getActiveUsedRangeValues
  175.          (/ _usedrangevalued excel sh lst)
  176.     (defun _usedrangevalue (sh)
  177.       (mapcar
  178.         (function (lambda (x) (mapcar 'vlax-variant-value x)))
  179.         (vlax-safearray->list
  180.           (variant-value
  181.             (vlax-get-property (vlax-get sh 'usedrange) 'value)
  182.           )
  183.         )
  184.       )
  185.     )
  186.     (if        (setq excel (vlax-get-or-create-object "Excel.Application"))
  187.       (progn
  188.         (setq sh  (vlax-get excel 'activesheet)
  189.               lst (_usedrangevalue sh)
  190.         )
  191.         (vlax-release-object excel)
  192.       )
  193.     )
  194.     lst
  195.   )
  196.   (vl-load-com)

  197.   (if (and (setq p (getpoint "\nstartpoint: "))
  198.            (setq lst (cdr (XD::EXCEL:GETACTIVEUSEDRANGEVALUES)))
  199.            (setq lst
  200.                   (vl-remove
  201.                     nil
  202.                     (mapcar
  203.                       (function
  204.                         (lambda        (a)
  205.                           (if
  206.                             (vl-some
  207.                               (function        (lambda (b) (or (equal b "") (null b)))
  208.                               )
  209.                               a
  210.                             )
  211.                              nil
  212.                              a
  213.                           )
  214.                         )
  215.                       )
  216.                       lst
  217.                     )
  218.                   )
  219.            )
  220.            (> (length lst) 1)
  221.       )
  222.     (progn
  223.       (setq bp p)
  224.       (_mkfont)
  225.       (_mkblock)
  226.       (_mkblocklc)
  227.       (foreach x lst
  228.         (mapcar 'set '(str sl el len date tmp) x)
  229.         (_insertlc p (strcat "+" (rtos sl 2 3)))
  230.         (_insert (mapcar '+ p (list (* 0.05 len) 0. 0.))
  231.                  date
  232.                  (substr str 1 2)
  233.                  (substr str 3)
  234.                  (rtos len 2 2)
  235.                  (rtos tmp 2 1)
  236.         )
  237.         (setq p (polar p 0. (* 0.1 len)))
  238.       )
  239.       (mapcar 'set '(str sl el len date tmp) (last lst))
  240.       (_insertlc p (strcat "+" (rtos el 2 3)))
  241.       (setq pl (xdrx_polyline_make bp p))
  242.       (xdrx_polyline_setconstantwidth pl 0.5)
  243.     )
  244.   )
  245.   (princ)
  246. )



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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2019-1-14 17:58:21 | 显示全部楼层
st788796 发表于 2019-1-14 16:02
仅对提供的样图,没有加入绘制粗线

大师,为什么
(setq excel (vlax-get-or-create-object "Excel.Application"))
这个有返回值

但是


(vlax-get excel 'activesheet) 这个返回NIL呢?

EXCEL 2016版本,系统WIN10 64位,CAD 2012 64位

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2019-1-15 08:56:54 | 显示全部楼层
Lisphk 发表于 2019-1-14 17:58
大师,为什么
(setq excel (vlax-get-or-create-object "Excel.Application"))
这个有返回值

没有这个系统环境,你检查一下
1 确保 excel 有文档
2 在 acad 中 使用 (vlax-dump-object excel t) 看看
3 换 (vlax-get-property excel 'activesheet) 试试有没有返回值
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-15 17:17:43 | 显示全部楼层
st788796 发表于 2019-1-14 16:02
更新:

增加粗线绘制,里程加上 "+"

首先表示非常感谢!但现在还有个小问题,麻烦帮修改下!如下图:

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2019-1-15 17:34:51 | 显示全部楼层
st788796 发表于 2019-1-15 08:56
没有这个系统环境,你检查一下
1 确保 excel 有文档
2 在 acad 中 使用 (vlax-dump-object excel t) 看 ...

谢谢大师回复
EXCEL已经打开

看下截图
搜狗截图20190115173137.png

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-2 11:53 , Processed in 0.262245 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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