乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 85|回复: 3

[编程交流] CAD表格坐标X,Y,Z

[复制链接]

40

主题

92

帖子

52

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
200
发表于 2022-7-6 11:03:04 | 显示全部楼层 |阅读模式
你好
 
请用任何LISP将CAD表格坐标X、Y、Z转换为EXCEL?
提前谢谢
amr公司
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 11:42:05 | 显示全部楼层
 
试试这样的
 
  1. (vl-load-com)
  2. ;; local defuns
  3. (defun get_table_content (atable  /   col   cols   data
  4.     datum   hastile row   rows   start
  5.     tmp
  6.    )
  7. (setq cols  (vla-get-columns atable)
  8. rows  (vla-get-rows atable)
  9. start rows
  10. )
  11. (if (eq :vlax-true (vla-get-titlesuppressed atable))
  12.    (progn
  13.      (setq rows (1- rows))
  14.      (setq hastile T)
  15.      (setq hastile nil)
  16.    )
  17. )
  18. (if (eq :vlax-true (vla-get-headersuppressed atable))
  19.    (setq rows (1- rows))
  20. )
  21. (setq row (- start rows))
  22. (repeat rows
  23.    (setq col 0)
  24.    (repeat cols
  25.      (setq datum (vla-gettext atable row col))
  26.      (setq tmp (cons datum tmp))
  27.      (setq col (1+ col))
  28.    )
  29.    (setq data (cons (reverse tmp) data)
  30.   tmp  nil
  31.   row  (1+ row)
  32.    )
  33. )
  34. (setq data (reverse data))
  35. (if hastile
  36.    (setq data (append (list (caar data) (cdr data))))
  37. )
  38. data
  39. )
  40. (defun merge_first_row (xlsht columns / adr rng)
  41. (setq adr (strcat "A1:" (chr (+ 65 (1- columns))) "1"))
  42. (setq rng (vlax-get-property xlsht 'Range adr))
  43. (vlax-put-property
  44.    rng
  45.    'HorizontalAlignment
  46.    (vlax-make-variant -4108 vlax-vbinteger)
  47. )     ;1
  48. (vlax-put-property
  49.    rng
  50.    'VerticalAlignment
  51.    (vlax-make-variant -4107 vlax-vbinteger)
  52. )     ;2
  53. (vlax-put-property rng 'WrapText (vlax-make-variant -1 11)) ;3
  54. (vlax-put-property
  55.    rng
  56.    'Orientation
  57.    (vlax-make-variant -4128 vlax-vbinteger)
  58. )     ;4
  59. (vlax-put-property rng 'AddIndent (vlax-make-variant -1 11)) ;5
  60. (vlax-put-property
  61.    rng
  62.    'IndentLevel
  63.    (vlax-make-variant 0 vlax-vbinteger)
  64. )     ;6
  65. (vlax-put-property
  66.    rng
  67.    'ShrinkToFit
  68.    (vlax-make-variant -1 11)
  69. )     ;7
  70. (vl-catch-all-apply
  71.    (function (lambda ()
  72. (vlax-put-property
  73.    rng
  74.    'MergeCells
  75.    (vlax-make-variant -1 11)
  76. )
  77.       )
  78.    )
  79. )     ;8
  80. (vlax-put-property
  81.    rng
  82.    'ReadingOrder
  83.    (vlax-make-variant -5002 vlax-vbinteger)
  84. )     ;9
  85. (vlax-invoke rng 'Merge)
  86. (vlax-release-object rng)
  87. (setq rng nil)
  88. )
  89. (defun draw-grid (xlapp xlsht / a bords cnt rng sel)
  90. (setq rng (vlax-get-property xlsht 'UsedRange))
  91. (vlax-invoke-method rng 'Select)
  92. (setq sel (vlax-get-property xlapp 'Selection))
  93. (setq bords (vlax-get-property sel "Borders"))
  94. ;; iterate through all edges of selection
  95. (setq cnt 0)
  96. (vlax-for a bords
  97.    (setq cnt (1+ cnt))
  98.    (vl-catch-all-apply
  99.      (function (lambda ()
  100.    (progn
  101.      (if (< cnt 5)
  102.        (progn
  103.   (vlax-put-property
  104.     a
  105.     "LineStyle"
  106.     (vlax-make-variant 1 3)
  107.   )
  108.   (vlax-put-property
  109.     a
  110.     "Weight"
  111.     (vlax-make-variant 4 3)
  112.   )
  113.   (vlax-put-property
  114.     a
  115.     "ColorIndex"
  116.     (vlax-make-variant 5 5)
  117.   )
  118.        )   ;progn
  119.        ;; turn off the diagonal lines:
  120.        (vlax-put-property
  121.   a
  122.   "LineStyle"
  123.   (vlax-make-variant -4142 3)
  124.        )
  125.      )
  126.    )
  127. )
  128.      )
  129.    )
  130. )
  131. (vlax-release-object rng)
  132. (vlax-release-object sel)
  133. )
  134. ;; main part
  135. ;; based on rouitine written by  Alejandro Leguizamon
  136. (defun C:LX (/      adoc    atable  col     columns data    en
  137.      ent     merged  row     rows    xlapp   xlbks   xlcls
  138.      xlcols  xlrng   xlsht   xlshts  xlwbk
  139.     )
  140. (or (vl-load-com))
  141. (or adoc
  142.      (setq adoc
  143.      (vla-get-activedocument
  144.        (vlax-get-acad-object)
  145.      )
  146.      )
  147. )
  148. (if (and
  149. (setq ent (entsel "\nSelect table >>"))
  150. (equal "ACAD_TABLE"
  151.        (cdr (assoc 0 (entget (setq en (car ent))))
  152.        )
  153. )
  154.      )
  155.    (progn
  156.      (setq atable (vlax-ename->vla-object en))
  157.      (setq data (get_table_content atable))
  158.      (setq xlapp  (vlax-get-or-create-object "Excel.Application")
  159.     xlbks  (vlax-get-property xlapp "Workbooks")
  160.     xlwbk  (vlax-invoke-method xlbks "Add")
  161.     xlshts (vlax-get-property xlwbk "Sheets")
  162.     xlsht  (vlax-get-property xlshts "Item" 1)
  163.     xlcls  (vlax-get-property xlsht "Cells")
  164.      )
  165.      (vla-put-visible xlapp :vlax-true)
  166.      (setq row 0)
  167.      (setq columns (length (last data))
  168.     rows    (length data)
  169.      )
  170.      (if (= 1 (length (vl-remove-if (function (lambda(x)(equal "" x)))(car data))))
  171. (setq merged T)
  172. (setq merged nil)
  173.      )
  174.      (if merged
  175. (progn
  176.   (setq row (1+ row))
  177.   (vlax-put-property
  178.     xlcls
  179.     "Item"
  180.     row
  181.     1
  182.     (vl-princ-to-string (caar data))
  183.   )
  184.   (setq data (cdr data))
  185.   (foreach lst data
  186.     (setq row (1+ row)
  187.    col 1
  188.     )
  189.     (foreach itm lst
  190.       (vlax-put-property
  191. xlcls
  192. "Item"
  193. row
  194. col
  195. (vl-princ-to-string itm)
  196.       )
  197.       (setq col (1+ col))
  198.     )
  199.   )
  200.   (merge_first_row xlsht columns)
  201. )
  202. (progn
  203.   (setq row 0)
  204.   (foreach lst data
  205.     (setq row (1+ row)
  206.    col 1
  207.     )
  208.     (foreach itm lst
  209.       (vlax-put-property
  210. xlcls
  211. "Item"
  212. row
  213. col
  214. (vl-princ-to-string itm)
  215.       )
  216.       (setq col (1+ col))
  217.     )
  218.   )
  219. )
  220.      )
  221.      (draw-grid xlapp xlsht)
  222.      (setq xlrng (vlax-get-property xlsht 'UsedRange))
  223.      (setq xlcols (vlax-get-property xlrng 'Columns))
  224.      (vlax-invoke-method xlcols 'AutoFit)
  225.      (vlax-invoke-method
  226. xlwbk
  227. 'SaveAs
  228. (strcat (getvar "dwgprefix") "List.xls")
  229. -4143
  230. nil
  231. nil
  232. :vlax-false
  233. :vlax-false
  234. 1
  235. 2
  236.      )
  237.      (vlax-release-object xlcls)
  238.      (vlax-release-object xlsht)
  239.      (vlax-release-object xlshts)
  240.      (vlax-release-object xlwbk)
  241.      (vlax-release-object xlbks)
  242.      (vlax-release-object xlapp)
  243.      (setq xlapp nil)
  244.      (alert "Excel File Was Saved.
  245. Close Excel Manually")
  246.    )
  247. )
  248. (gc)
  249. (gc)
  250. (gc)
  251. (princ)
  252. )
  253. (princ "\n===========================\n")
  254. (princ "\n   Start with LX to run ...")
  255. (princ "\n===========================\n")
  256. (princ)

 
~'J'~
回复

使用道具 举报

40

主题

92

帖子

52

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
200
发表于 2022-7-6 11:50:44 | 显示全部楼层
 
 
 
 
干得好!谢谢laa。。
 
amr公司
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 12:18:08 | 显示全部楼层
不客气
 
~'J'~
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-6 11:34 , Processed in 0.355569 second(s), 60 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表