乐筑天下

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

[编程交流] 为什么不导出到real coordin

[复制链接]
mit

13

主题

33

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 18:24:35 | 显示全部楼层 |阅读模式
大家好
 
我对导出多边形线坐标有一些问题
你能帮帮我吗
发生了什么?
 
我尝试从此文件地块导出坐标。图纸
我使用这个Lisp代码导出。LSP
 
  1. (defun c:Ex_coord ( )
  2. (setq filename (getstring "Add File Name: "))
  3. (setq foldername (substr filename 1 4))
  4. (setq directory (strcat "c:\\LLMS CAD\" foldername))
  5. (LM:createdirectory directory)
  6. (setq pt 0)
  7. (setq f (open (strcat "c:\\LLMS CAD\" foldername "\" filename ".txt") "a"))
  8.       (while (setq ent (entsel "\nSelect polyline (or press Enter to Exit) >> "))
  9.       (setq ent (car ent))
  10.       (setq coords (vl-remove-if 'not
  11.       (mapcar
  12.       (function (lambda(p)
  13.       (if (= 10 (car p))(cdr p))))
  14.       (entget ent))))
  15.       (setq coords (append coords (list (nth 0 coords))))
  16.       (foreach pt coords
  17. (princ pt f)
  18. ))
  19. (close f)
  20. (princ)
  21. )
  22. ;; Create Directory  -  Lee Mac
  23. ;; dir - [str] directory to create ("C:\\Folder1\\Folder2")
  24. ;; Returns:  T if directory creation is successful, else nil
  25. (defun LM:createdirectory ( dir )
  26.    (   (lambda ( fun )
  27.            (   (lambda ( lst ) (fun (car lst) (cdr lst)))
  28.                (vl-remove "" (LM:str->lst (vl-string-translate "/" "\" dir) "\"))
  29.            )
  30.        )
  31.        (lambda ( root lst / dir )
  32.            (if lst
  33.                (if (or (vl-file-directory-p (setq dir (strcat root "\" (car lst)))) (vl-mkdir dir))
  34.                    (fun dir (cdr lst))
  35.                )
  36.            )
  37.        )
  38.    )
  39.    (vl-file-directory-p dir)
  40. )

 
这是一个错误的输出01010101。txt文件
 
(248222.0 1.99361e+006)(248247.0 1.99361e+006)(2482466.0 1.99357e+006)(248220.0 1.99357e+006)(248222.0 1.99361e+006)(248222.0 1.99361e+006)(248222.0 1.99361e+006)(248222.0 1.99361e+006)
 
它不是真正的坐标值
我不知道为什么
 
请帮帮我
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:50:56 | 显示全部楼层
您是指1.99361e+006值吗?或者您认为导出的坐标在图形中描述的位置不正确吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:57:30 | 显示全部楼层
请尝试以下(未测试)代码:
  1. (defun c:excoord ( / *error* des dir ent enx fnm )
  2.    (defun *error* ( msg )
  3.        (if (= 'file (type des)) (close des))
  4.        (if (and msg (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*")))
  5.            (princ (strcat "\nError: " msg))
  6.        )
  7.        (princ)
  8.    )
  9.    
  10.    (while
  11.        (and (/= "" (setq fnm (LM:fixfilename (getstring t "Add filename: "))))
  12.             (< (strlen fnm) 5)
  13.        )
  14.        (princ "\nFilename must be longer than 4 characters.")
  15.    )
  16.    (cond
  17.        (   (= "" fnm))
  18.        (   (not (LM:createdirectory (setq dir (strcat "C:\\LLMS CAD\" (substr fnm 1 4)))))
  19.            (princ (strcat "\nUnable to create "" dir "" directory."))
  20.        )
  21.        (   (not (setq des (open (strcat dir "\" fnm ".txt") "a")))
  22.            (princ (strcat "\nUnable to write to "" dir "\" fnm ".txt"."))
  23.        )
  24.        (   (while (setq ent (car (entsel "\nSelect polyline <Exit>: ")))
  25.                (if (= "LWPOLYLINE" (cdr (assoc 0 (setq enx (entget ent)))))
  26.                    (foreach dxf enx
  27.                        (if (= 10 (car dxf))
  28.                            (write-line
  29.                                (apply 'strcat
  30.                                    (cons "("
  31.                                        (mapcar '(lambda ( x y ) (strcat (rtos x) y))
  32.                                            (cdr dxf)
  33.                                           '("," "," ")")
  34.                                        )
  35.                                    )
  36.                                )
  37.                                des
  38.                            )
  39.                        )
  40.                    )
  41.                )
  42.            )
  43.        )
  44.    )
  45.    (*error* nil)
  46.    (princ)
  47. )
  48. ;; Fix Filename  -  Lee Mac
  49. ;; Returns a string valid for use as a filename
  50.         
  51. (defun LM:fixfilename ( str )
  52.    (vl-string-translate "\\/:*?"<>|" "_________" str)
  53. )
  54. ;; Create Directory  -  Lee Mac
  55. ;; dir - [str] directory to create ("C:\\Folder1\\Folder2")
  56. ;; Returns:  T if directory creation is successful, else nil
  57. (defun LM:createdirectory ( dir )
  58.    (   (lambda ( fun )
  59.            (   (lambda ( lst ) (fun (car lst) (cdr lst)))
  60.                (vl-remove "" (LM:str->lst (vl-string-translate "/" "\" dir) "\"))
  61.            )
  62.        )
  63.        (lambda ( root lst / dir )
  64.            (if lst
  65.                (if (or (vl-file-directory-p (setq dir (strcat root "\" (car lst)))) (vl-mkdir dir))
  66.                    (fun dir (cdr lst))
  67.                )
  68.            )
  69.        )
  70.    )
  71.    (vl-file-directory-p dir)
  72. )
  73. (princ)
回复

使用道具 举报

mit

13

主题

33

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 19:21:28 | 显示全部楼层
非常感谢李·麦克
 
我被修改为我的格式
 
  1. (defun c:excoord ( / *error* des dir ent enx fnm )
  2.    (defun *error* ( msg )
  3.        (if (= 'file (type des)) (close des))
  4.        (if (and msg (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*")))
  5.            (princ (strcat "\nError: " msg))
  6.        )
  7.        (princ)
  8.    )
  9.    
  10.    (while
  11.        (and (/= "" (setq fnm (LM:fixfilename (getstring t "Add filename: "))))
  12.             (< (strlen fnm) 5)
  13.        )
  14.        (princ "\nFilename must be longer than 4 characters.")
  15.    )
  16.    (cond
  17.        (   (= "" fnm))
  18.        (   (not (LM:createdirectory (setq dir (strcat "C:\\LLMS CAD\" (substr fnm 1 4)))))
  19.            (princ (strcat "\nUnable to create "" dir "" directory."))
  20.        )
  21.        (   (not (setq des (open (strcat dir "\" fnm ".txt") "a")))
  22.            (princ (strcat "\nUnable to write to "" dir "\" fnm ".txt"."))
  23.        )
  24.        (   (while (setq ent (car (entsel "\nSelect polyline <Exit>: ")))
  25.                (if (= "LWPOLYLINE" (cdr (assoc 0 (setq enx (entget ent)))))
  26.                    (foreach dxf enx
  27.                        (if (= 10 (car dxf))
  28.                            ;(write-line
  29.                   (princ
  30.                                (apply 'strcat
  31.                                    (cons "("
  32.                                        (mapcar '(lambda ( x y ) (strcat (rtos x) y))
  33.                                            (cdr dxf)
  34.                                          ; '("," "," ")")
  35.                                         '(" " ")")
  36.                                        )
  37.                                    )
  38.                                )
  39.                                des
  40.                            )
  41.                        )
  42.                    )
  43.                )
  44.              (close des)
  45.            )
  46.        )
  47.    )
  48.    (*error* nil)
  49.    (princ)
  50. )
  51. ;; Fix Filename  -  Lee Mac
  52. ;; Returns a string valid for use as a filename
  53.         
  54. (defun LM:fixfilename ( str )
  55.    (vl-string-translate "\\/:*?"<>|" "_________" str)
  56. )
  57. ;; Create Directory  -  Lee Mac
  58. ;; dir - [str] directory to create ("C:\\Folder1\\Folder2")
  59. ;; Returns:  T if directory creation is successful, else nil
  60. (defun LM:createdirectory ( dir )
  61.    (   (lambda ( fun )
  62.            (   (lambda ( lst ) (fun (car lst) (cdr lst)))
  63.                (vl-remove "" (LM:str->lst (vl-string-translate "/" "\" dir) "\"))
  64.            )
  65.        )
  66.        (lambda ( root lst / dir )
  67.            (if lst
  68.                (if (or (vl-file-directory-p (setq dir (strcat root "\" (car lst)))) (vl-mkdir dir))
  69.                    (fun dir (cdr lst))
  70.                )
  71.            )
  72.        )
  73.    )
  74.    (vl-file-directory-p dir)
  75. )
  76. (princ)

 
我试着把这个绘图文件Parcels\u e.dwg
 
太棒了
 
谢谢你的帮助李
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 19:25:47 | 显示全部楼层
不客气!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 19:39 , Processed in 0.577721 second(s), 62 queries .

© 2020-2025 乐筑天下

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