乐筑天下

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

[编程交流] 从文件坐标绘制多段线

[复制链接]

5

主题

10

帖子

4

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 14:18:05 | 显示全部楼层 |阅读模式
你能帮助我吗??。谢谢
文件excel。拉链
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:26:02 | 显示全部楼层
我不久前写的这个-将从txt文件中提取。假设点以逗号分隔。
 
  1. (defun c:ptpoly (/ doc spc file nl ptlst)
  2. (vl-load-com)
  3. (setq doc (vla-get-ActiveDocument
  4.              (vlax-get-Acad-Object))
  5.        spc (if (zerop (vla-get-activespace doc))
  6.              (if (= (vla-get-mspace doc) :vlax-true)
  7.                (vla-get-modelspace doc)
  8.                (vla-get-paperspace doc))
  9.              (vla-get-modelspace doc)))
  10. (if (setq file (getfiled "Select File" "" "txt" )
  11.    (progn
  12.      (setq file (open file "r"))
  13.      (while (setq nl (read-line file))
  14.        (setq ptlst (cons (StrBrk nl 44) ptlst)))
  15.      (close file)
  16.      (if ptlst
  17.        (progn
  18.          (setq ptlst
  19.                 (apply 'append
  20.                        (mapcar
  21.                          (function
  22.                            (lambda (x)
  23.                              (list (car x) (cadr x))))
  24.                          (reverse
  25.                            (mapcar
  26.                              (function
  27.                                (lambda (x)
  28.                                  (mapcar 'distof x))) ptlst)))))
  29.          (vla-addLightweightpolyline spc
  30.            (vlax-make-variant
  31.              (vlax-safearray-fill
  32.                (vlax-make-safearray
  33.                  vlax-vbdouble
  34.                  (cons 0 (1- (length ptlst)))) ptlst))))
  35.        (princ "\n<< No Points Found in File >>")))
  36.    (princ "\n<< No File Selected >>"))
  37. (princ))
  38.          
  39. (defun StrBrk (str chrc / pos lst)
  40. (while (setq pos (vl-string-position chrc str))
  41.    (setq lst (cons (substr str 1 pos) lst)
  42.          str (substr str (+ pos 2))))
  43. (reverse (cons str lst)))
回复

使用道具 举报

51

主题

481

帖子

457

银币

后起之秀

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

铜币
262
发表于 2022-7-6 14:30:52 | 显示全部楼层
我有一个Excel文件可以做你想要的,但不能上传。我不知道为什么
 
请给我发一封电子邮件
hasancad@gmail.com
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:34:15 | 显示全部楼层
我认为你需要压缩Excel文件,因为它们不是受支持的文件上传类型。
回复

使用道具 举报

51

主题

481

帖子

457

银币

后起之秀

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

铜币
262
发表于 2022-7-6 14:37:17 | 显示全部楼层
我在2个文件(作为论坛容量)中作为RAR压缩,但无法上传
如果你愿意,我会发电子邮件给你,
回复

使用道具 举报

8

主题

1133

帖子

1164

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 14:41:33 | 显示全部楼层
不要使用RAR压缩,因为这不是一种常见的(免费)可用格式。尝试将Excel文件保存为CSV文件,并将大约十行内容复制到帖子中。
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 14:44:26 | 显示全部楼层
 
试试这个,只需选择只有数字的双巴松
在2008年、Excel 2003上测试
 
  1. (vl-load-com)
  2. (defun C:PX (/ acapp acsp adoc aexc cel col cols coords csht
  3.        item nwb points poly rang result row rows sht tmp wbks)
  4. (setq aexc (vlax-get-or-create-object "Excel.Application")
  5.      wbks (vlax-get-property aexc "Workbooks")
  6.      nwb  (vlax-invoke-method wbks "Open" "C:\\File excel.xls");;<--change file name here
  7.      sht  (vlax-get-property nwb "Sheets")
  8.      csht (vlax-get-property sht "Item" 1)
  9.      )
  10. (vla-put-visible aexc :vlax-true)
  11. (setq rang (vlax-invoke-method
  12.      (vlax-get-property aexc "Application")
  13.      "InputBox"
  14.      "Select Diapazone To Get Coordinates"
  15.      "Let you get a points"
  16.      nil
  17.      nil
  18.      nil
  19.      nil
  20.      nil
  21.      (vlax-make-variant 8 3))
  22.      )
  23. (setq rang (vlax-variant-value rang)
  24.      )
  25. (setq coords (vlax-get-property rang "Value2")
  26.      )
  27. (setq rows (vlax-get-property (vlax-get-property rang "Rows") "Count")
  28.      )
  29. (setq cols (vlax-get-property
  30.      (vlax-get-property rang "Columns")
  31.      "Count")
  32.      )
  33. (setq row 1)
  34. (repeat        rows
  35. (setq col 1)
  36. (repeat cols
  37.    (setq cel (vlax-variant-value
  38.         (vlax-get-property
  39.           (vlax-get-property rang "Cells")
  40.           "Item"
  41.           (vlax-make-variant row vlax-vbLong)
  42.           (vlax-make-variant col vlax-vbLong))))
  43.    (setq item (vlax-variant-value
  44.          (vlax-get-property cel "Value2"))
  45.   )
  46.    (setq tmp (cons item tmp)
  47.   )
  48.    (setq col (1+ col)
  49.   )
  50.    )
  51. (setq        points (cons (reverse tmp) points)
  52. tmp    nil
  53. row    (1+ row)
  54. )
  55. )
  56. (setq points (reverse points)
  57.      points (apply 'append points)
  58.      )
  59. (vl-catch-all-apply
  60. (function (lambda ()
  61.       (vlax-invoke-method
  62.         nwb
  63.         "Close" :vlax-false)))
  64. )
  65. (vl-catch-all-apply
  66. (function (lambda ()
  67.       (vlax-invoke-method
  68.         aexc
  69.         "Quit")))
  70. )
  71. (mapcar        (function (lambda (x)
  72.             (vl-catch-all-apply
  73.               (function        (lambda        ()
  74.                           (progn
  75.                             (vlax-release-object x)
  76.                             (setq x nil)))))))
  77. (list rang csht nwb wbks aexc)
  78. )
  79. (setq
  80. adoc (vla-get-activedocument
  81. (setq acapp (vlax-get-acad-object))
  82. )
  83. )
  84. (if (= 1 (vlax-get-property adoc "Activespace"))
  85. (setq acsp (vla-get-modelspace adoc))
  86. (setq acsp (vla-get-paperspace adoc))
  87. )
  88. (setq poly (vlax-invoke acsp "Add3DPoly" points)
  89.      )
  90. (vla-eval
  91. acapp
  92. (strcat
  93.    "ThisDrawing.SetVariable "USERI1","
  94.    "MsgBox ("Close Polyline?","
  95.    "vbYesNo"
  96.    ",""
  97.    "Answer this question:"
  98.    "")"
  99.    )
  100. )
  101. (if (= 6 (setq result (getvar "USERI1")))
  102. (vlax-put-property poly "Closed" :vlax-true)
  103. )
  104. (vla-zoomextents acapp)
  105. (gc)
  106. (gc)
  107. (princ)
  108. )
  109. (prompt "\t\t***\t\nType PX to run program\t***")
  110. (prin1)
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:51:53 | 显示全部楼层
我下载了文件,并以csv格式保存,删除了一些列和一行,然后再次以csv格式保存,结果如下:-
0,0,0
0.05,0.002,0.05
0.1,0.01,0.1
0.148,0.022,0.15
0.196,0.04,0.2
0.242,0.062,0.25
0.287,0.089,0.3
0.329,0.12,0.35
0.368,0.156,0.4
然后我打开文本文件,选择全部并复制,转到AutoCAD,启动“三维多段线”命令,当它需要起点时,我单击命令行并粘贴,下面是我得到的结果(不使用Lisp)。
回复

使用道具 举报

51

主题

481

帖子

457

银币

后起之秀

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

铜币
262
发表于 2022-7-6 14:52:59 | 显示全部楼层
 
谢谢你的花(李)
我刚刚从Excel VBA帮助中获取了所有这些内容
部分来自我以前的经历
当做
 
奥列格
 
~'J'~
回复

使用道具 举报

8

主题

1133

帖子

1164

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 14:56:48 | 显示全部楼层
埃尔登
 
在Excel文件中填写点坐标,然后选择输入点旁边的黄色单元格,然后复制(Ctrl+C)选定区域,然后粘贴到AutoCAD命令行中。
151807bdx2gz5uxux323dz.jpg
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 03:17 , Processed in 0.467075 second(s), 74 queries .

© 2020-2025 乐筑天下

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