乐筑天下

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

[编程交流] excel到autocad

[复制链接]

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:31:03 | 显示全部楼层
点的格式是什么?i、 e.逗号分隔?x、 y,z
回复

使用道具 举报

21

主题

146

帖子

127

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
106
发表于 2022-7-6 10:36:34 | 显示全部楼层
 
我认为ReMark的referal赢了:D
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:38:47 | 显示全部楼层
如果没有,这应该有效(假设2D):
 
  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)))
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-6 10:41:17 | 显示全部楼层
那样的话,我就拿一杯啤酒作为奖品。非常感谢你。
回复

使用道具 举报

5

主题

13

帖子

8

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 10:46:01 | 显示全部楼层
我附上了我的一些坐标
请检查一下
谢谢
 
 
 
__________________________
对不起我的英语
105923kuaghhy0yxnj00bn.jpg
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:49:07 | 显示全部楼层
如果你不想使用备注法,可以把坐标复制到一个文本文件中,告诉我是什么把它们分开的,是制表符、空格还是逗号。
回复

使用道具 举报

5

主题

13

帖子

8

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 10:51:07 | 显示全部楼层
这是空间
 
X和Y
135643    4740
135650    4737
135656    4734
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:54:14 | 显示全部楼层
好的,如果从文本文件的顶部删除X和Y,这应该可以工作:
 
  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 32) 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)))
回复

使用道具 举报

5

主题

13

帖子

8

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 10:57:11 | 显示全部楼层
 
 
你能告诉我要做什么吗?
谢谢
 
 
 
 
 
____________________________
对不起我的英语
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:02:25 | 显示全部楼层
 
关于加载例程:
 
http://www.cadtutor.net/faq/questions/28/How+do+I+use+an+AutoLISP+routine%3F
 
加载后,在ACAD中用“ptpoly”调用它。
 
选择文本文件,工作就完成了(希望如此!)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 00:37 , Processed in 1.538329 second(s), 72 queries .

© 2020-2025 乐筑天下

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