乐筑天下

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

[编程交流] 记事本fo需要更改

[复制链接]

10

主题

45

帖子

35

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-5 17:05:54 | 显示全部楼层 |阅读模式
尊敬的专家们:,
我需要在记事本输出文件的Lisp程序修改的变化。在我作为附件生成的lisp的帮助下(文件名为实际lisp格式X坐标),我需要作为附件的记事本文件格式(文件名为所需格式X坐标)。请查找这些文件并修改当前的lisp程序。我附上了X坐标的样本文件。修改也需要Y坐标。
 
我现在的代码是:
  1. ;; gc:distinct (gilles chanteau)
  2. ;; Suprime tous les doublons d'une liste
  3. ;;
  4. ;; Argument
  5. ;; l : une liste
  6. (defun gc:distinct (l)
  7.    (if l
  8.        (cons (car l) (gc:distinct (vl-remove (car l) l)))
  9.    )
  10. )
  11. (defun l-coor2l-pt (lst flag / )
  12.    (if lst
  13.        (cons
  14.            (list
  15.                (car lst)
  16.                (cadr lst)
  17.                (if flag
  18.                    (+ (if (vlax-property-available-p ename 'Elevation) (vlax-get ename 'Elevation) 0.0) (caddr lst))
  19.                    (if (vlax-property-available-p ename 'Elevation) (vlax-get ename 'Elevation) 0.0)
  20.                )
  21.            )
  22.            (l-coor2l-pt (if flag (cdddr lst) (cddr lst)) flag)
  23.        )
  24.    )
  25. )
  26. (defun c:ptdef2notepad ( / js dxf_cod mod_sel n lremov str_sep oldim ename l_pt l_pr pr l_x l_y tmp1 f_openx tmp2 f_openy)
  27. (princ "\nSelect model object for filtering: ")
  28. (while
  29.    (null
  30.      (setq js
  31.        (ssget "_+.:E:S"
  32.          (list
  33.            '(0 . "*LINE,POINT,ARC,CIRCLE,ELLIPSE,INSERT")
  34.            (cons 67 (if (eq (getvar "CVPORT") 1) 1 0))
  35.            (cons 410 (if (eq (getvar "CVPORT") 1) (getvar "CTAB") "Model"))
  36.          )
  37.        )
  38.      )
  39.    )
  40.    (princ "\nIsn't an available object!")
  41. )
  42. (vl-load-com)
  43. (setq dxf_cod (entget (ssname js 0)))
  44. (foreach m (foreach n dxf_cod (if (not (member (car n) '(0 67 410 8 6 62 48 420 70))) (setq lremov (cons (car n) lremov))))
  45.    (setq dxf_cod (vl-remove (assoc m dxf_cod) dxf_cod))
  46. )
  47. (initget "Single All Manual")
  48. (if (eq (setq mod_sel (getkword "\nSelect mode, [single/All/Manual]<Manual>: ")) "Single")
  49.    (setq n -1)
  50.    (if (eq mod_sel "All")
  51.        (setq js (ssget "_X" dxf_cod) n -1)
  52.        (setq js (ssget dxf_cod) n -1)
  53.    )
  54. )
  55. (setq
  56.    str_sep " "  ;-> **** YOU CAN CHANGE THIS STRING BY WHAT YOU WONT ! **** <-
  57.    oldim (getvar "dimzin")
  58. )
  59. (setvar "dimzin" 0)
  60. (repeat (sslength js)
  61.    (setq ename (vlax-ename->vla-object (ssname js (setq n (1+ n)))))
  62.    (setq l_pr (list 'StartPoint 'EndPoint 'Center 'InsertionPoint 'Coordinates 'FitPoints))
  63.    (foreach pr l_pr
  64.      (if (vlax-property-available-p ename pr)
  65.        (setq l_pt
  66.          (if (or (eq pr 'Coordinates) (eq pr 'FitPoints))
  67.            (append
  68.              (if (eq (vla-get-ObjectName ename) "AcDbPolyline")
  69.                (l-coor2l-pt (vlax-get ename pr) nil)
  70.                (if (and (eq pr 'FitPoints) (zerop (vlax-get ename 'FitTolerance)))
  71.                  (l-coor2l-pt (vlax-get ename 'ControlPoints) T)
  72.                  (l-coor2l-pt (vlax-get ename pr) T)
  73.                )
  74.              )
  75.              l_pt
  76.            )
  77.            (append (l-coor2l-pt (vlax-get ename pr) T) l_pt)
  78.          )
  79.        )
  80.      )
  81.    )
  82. )
  83. (setq l_x (gc:distinct (mapcar '(lambda (x) (rtos (/ x 1.0) 2 2)) (vl-sort (mapcar 'car l_pt) '<))))  ;-> **** YOU CAN CHANGE UNIT AND PREC (rtos x unit prec) ! **** <-
  84. (setq l_y (gc:distinct (mapcar '(lambda (x) (rtos (/ x 1.0) 2 2)) (vl-sort (mapcar 'cadr l_pt) '<))))  ;-> **** YOU CAN CHANGE UNIT AND PREC (rtos x unit prec) ! **** <-
  85. (setq
  86.    tmp1 (vl-filename-mktemp "tmp_x.csv")
  87.    f_openx (open tmp1 "w")
  88. )
  89. (write-line (apply 'strcat (mapcar '(lambda (x) (strcat x str_sep)) l_x)) f_openx)
  90. (close f_openx)
  91. (startapp "notepad" tmp1)
  92. (setq
  93.    tmp2 (vl-filename-mktemp "tmp_y.csv")
  94.    f_openy (open tmp2 "w")
  95. )
  96. (write-line (apply 'strcat (mapcar '(lambda (x) (strcat x str_sep)) l_y)) f_openy)
  97. (close f_openy)
  98. (startapp "notepad" tmp2)
  99. (setvar "dimzin" oldim)
  100. (prin1)
  101. )
回复

使用道具 举报

14

主题

76

帖子

63

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-5 17:19:42 | 显示全部楼层
 
尊敬的专家:,
执行得很好,工作也很好。感谢您的准备。
 
非常感谢您,
 
 
致以最良好的祝愿。
回复

使用道具 举报

10

主题

45

帖子

35

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-5 17:23:46 | 显示全部楼层
回复

使用道具 举报

14

主题

76

帖子

63

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-5 17:33:40 | 显示全部楼层
The post has been edited.
回复

使用道具 举报

10

主题

45

帖子

35

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-5 17:36:31 | 显示全部楼层
thank you master, now it is working good. my final request is, can you make for CSV file version? in CSV file version both X and Y Values should be in one file with different columns please find image for sample format.
 
Kindly make CSV file version.
 
Thanking you,
Best regards.
180601z3e8bmnmsme50n6l.jpg
回复

使用道具 举报

95

主题

477

帖子

383

银币

后起之秀

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

铜币
475
发表于 2022-7-5 17:43:38 | 显示全部楼层
Hint, look at the open function portion of the code, it would be good practice to mess around with it. Also, if you want a great example and good code to use when writing to a csv file, look at Lee Mac's code http://www.lee-mac.com/writecsv.html.
回复

使用道具 举报

10

主题

45

帖子

35

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-5 17:52:34 | 显示全部楼层
 
Dear sir,
Thank you for great guidance. i have no minimum idea about coding.
 
please suggest how to adopt LEEMac's code to Luís Augusto's code.
 
Thanking you,
With best wishes.
回复

使用道具 举报

14

主题

76

帖子

63

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-5 18:01:29 | 显示全部楼层
  1. ;; Write CSV  -  Lee Mac;; Writes a matrix list of cell values to a CSV file.;; lst - [lst] list of lists, sublist is row of cell values;; csv - [str] filename of CSV file to write;; Returns T if successful, else nil(defun LM:writecsv ( lst csv / des sep )   (if (setq des (open csv "w"))       (progn           (setq sep (cond ((vl-registry-read "HKEY_CURRENT_USER\\Control Panel\\International" "sList")) (",")))           (foreach row lst (write-line (LM:lst->csv row sep) des))           (close des)           t       )   ));; List -> CSV  -  Lee Mac;; Concatenates a row of cell values to be written to a CSV file.;; lst - [lst] list containing row of CSV cell values;; sep - [str] CSV separator token(defun LM:lst->csv ( lst sep )   (if (cdr lst)       (strcat (LM:csv-addquotes (car lst) sep) sep (LM:lst->csv (cdr lst) sep))       (LM:csv-addquotes (car lst) sep)   ))(defun LM:csv-addquotes ( str sep / pos )   (cond       (   (wcmatch str (strcat "*[`" sep ""]*"))           (setq pos 0)               (while (setq pos (vl-string-position 34 str pos))               (setq str (vl-string-subst """" """ str pos)                     pos (+ pos 2)               )           )           (strcat """ str """)       )       (   str   )   ));; gc:distinct (gilles chanteau);; Suprime tous les doublons d'une liste;;;; Argument;; l : une liste(defun gc:distinct (l)   (if l       (cons (car l) (gc:distinct (vl-remove (car l) l)))   ))(defun l-coor2l-pt (lst flag / )   (if lst       (cons           (list               (car lst)               (cadr lst)               (if flag                   (+ (if (vlax-property-available-p ename 'Elevation) (vlax-get ename 'Elevation) 0.0) (caddr lst))                   (if (vlax-property-available-p ename 'Elevation) (vlax-get ename 'Elevation) 0.0)               )           )           (l-coor2l-pt (if flag (cdddr lst) (cddr lst)) flag)       )   ))(defun c:ptdef2notepad ( / js dxf_cod mod_sel n lremov str_sep oldim ename l_pt l_pr pr l_x l_y tmp1 f_openx tmp2 f_openy) (princ "\nSelect model object for filtering: ") (while   (null     (setq js       (ssget "_+.:E:S"         (list           '(0 . "*LINE,POINT,ARC,CIRCLE,ELLIPSE,INSERT")           (cons 67 (if (eq (getvar "CVPORT") 1) 1 0))           (cons 410 (if (eq (getvar "CVPORT") 1) (getvar "CTAB") "Model"))         )       )     )   )   (princ "\nIsn't an available object!") ) (vl-load-com) (setq dxf_cod (entget (ssname js 0))) (foreach m (foreach n dxf_cod (if (not (member (car n) '(0 67 410 8 6 62 48 420 70))) (setq lremov (cons (car n) lremov))))   (setq dxf_cod (vl-remove (assoc m dxf_cod) dxf_cod)) ) (initget "Single All Manual") (if (eq (setq mod_sel (getkword "\nSelect mode, [single/All/Manual]: ")) "Single")   (setq n -1)   (if (eq mod_sel "All")       (setq js (ssget "_X" dxf_cod) n -1)       (setq js (ssget dxf_cod) n -1)   ) ) (setq   str_sep " "  ;-> **** YOU CAN CHANGE THIS STRING BY WHAT YOU WONT ! **** vla-object (ssname js (setq n (1+ n)))))   (setq l_pr (list 'StartPoint 'EndPoint 'Center 'InsertionPoint 'Coordinates 'FitPoints))   (foreach pr l_pr     (if (vlax-property-available-p ename pr)       (setq l_pt         (if (or (eq pr 'Coordinates) (eq pr 'FitPoints))           (append             (if (eq (vla-get-ObjectName ename) "AcDbPolyline")               (l-coor2l-pt (vlax-get ename pr) nil)               (if (and (eq pr 'FitPoints) (zerop (vlax-get ename 'FitTolerance)))                 (l-coor2l-pt (vlax-get ename 'ControlPoints) T)                 (l-coor2l-pt (vlax-get ename pr) T)               )             )             l_pt           )           (append (l-coor2l-pt (vlax-get ename pr) T) l_pt)         )       )     )   ) ) (setq l_x (gc:distinct (mapcar '(lambda (x) (rtos (/ x 1.0) 2 2)) (vl-sort (mapcar 'car l_pt) ' **** YOU CAN CHANGE UNIT AND PREC (rtos x unit prec) ! **** while   )   (    (> (length l_x) (length l_y))    (while (> (length l_x) (length l_y))      (setq l_y (append l_y '("")))    ) ;_ >while   ) ) ;_ >cond  (setq        l_x (append '("x") l_x)l_y (append '("y ") l_y) ) ;_ >setq     (setq fn (getfiled "Create Output File" "" "csv" 1)) (if (LM:WriteCSV (mapcar '(lambda (x y) (list x y))l_x l_y) fn)(startapp "explorer" fn) )   ;;;  (setq;;;    tmp1 (vl-filename-mktemp "tmp_x.csv");;;    f_openx (open tmp1 "w");;;  );;;  (mapcar '(lambda (x) (write-line x f_openx)) l_x);;;  ;(write-line (apply 'strcat (mapcar '(lambda (x) (strcat x str_sep)) l_x)) f_openx);;;  (close f_openx);;;  (startapp "notepad" tmp1);;;  (setq;;;    tmp2 (vl-filename-mktemp "tmp_y.csv");;;    f_openy (open tmp2 "w");;;  );;;  (mapcar '(lambda (y) (write-line y f_openy)) l_y);;;  ;(write-line (apply 'strcat (mapcar '(lambda (x) (strcat x str_sep)) l_y)) f_openy);;;  (close f_openy) (startapp "notepad" tmp2) (setvar "dimzin" oldim) (prin1))
回复

使用道具 举报

10

主题

45

帖子

35

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-5 18:09:09 | 显示全部楼层
 
Dear Expert,
Really well executed and worked well. thank you for preparing.
 
Thanking you very much,
 
 
With Best Wishes.
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 10:03 , Processed in 0.534678 second(s), 72 queries .

© 2020-2025 乐筑天下

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