乐筑天下

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

[编程交流] 中需要的小修改

[复制链接]

10

主题

45

帖子

35

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-5 17:08:27 | 显示全部楼层 |阅读模式
尊敬的大师们:,
 
我有一个Lisp,借助我现有的Lisp生成记事本文件。我需要CSV文件格式而不是记事本作为显示的图像格式。
 
请在我现有的Lisp中进行修改。
 
  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. )
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:14:44 | 显示全部楼层
 
 
尊敬的先生:,
感谢您的友好回复和lisp。运行lisp时,将错误显示为附加图片。请查找。
 
谢谢你,
顺致敬意,
回复

使用道具 举报

10

主题

45

帖子

35

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-5 17:24:10 | 显示全部楼层
我相信。在尝试写入csv文件之前,它必须已经存在。
 
史蒂夫
180827d5e05peyz5qbggb4.jpg
回复

使用道具 举报

13

主题

146

帖子

136

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
62
发表于 2022-7-5 17:32:08 | 显示全部楼层
尊敬的先生:,
谢谢你的回复。没有任何自动开发和打开CSV文件的想法?
我在临时目录中找到了CSV文件,并在附件中提到了点的格式。请查找。它不同于后#1(即不需要加倍坐标值)。请查看帖子#1示例图片。请修改Post#1 lisp。
 
谢谢你,
顺致敬意,
回复

使用道具 举报

10

主题

45

帖子

35

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-5 17:36:59 | 显示全部楼层
如果您现在使用的是BIGAL的代码,则不需要先创建csv文件,代码会做到这一点。
 
我没有看到任何“双重坐标值”在您附加的图像。你能进一步解释一下你想从中得到什么吗?
 
BKT公司
180829a8raq1hyo9rthl2q.jpg
回复

使用道具 举报

BKT

1

主题

124

帖子

123

银币

初来乍到

Rank: 1

铜币
7
发表于 2022-7-5 17:42:39 | 显示全部楼层
 
尊敬的先生:,
 
谢谢你的回复。请查看所附的实际比格尔的代码和我的要求格式的图片。在我要求的格式中,值是按升序排列的。
因此,请修改现有的lisp以生成所需的X,Y坐标格式。
 
谢谢你,
顺致敬意,
回复

使用道具 举报

10

主题

45

帖子

35

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-5 17:49:01 | 显示全部楼层
是的,一个叫做数据排序的命令。编写排序例程并不值得。
 
我认为很明显,作为一个示例代码,我必须把答案放在C:\temp注释甚至说更改的地方。
 
Rtos 2 3“3”是小数位数,您可以有更多或更少。
 
你要的是包围盒而不是所有的点吗?不需要excel。
180830bpos8ezmo8fcof2b.jpg
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:51:01 | 显示全部楼层
 
是的,先生,我需要分类。借助我在#1后的示例代码,对于使用空格分隔符并排排序的X坐标,其发展类似于0.00 600.00 1200.00 2200.00,对于Y坐标排序也一样。
 
所以现在我需要修改为一个坐标下的一个,而不是“并排和空间分隔符”:
 
0
600
1200
2200
 
和Y坐标也一样。通过CSV文件,如Post#1图像所示。如果无法使用CSV文件格式,请通过示例lisp修改相同的记事本文件格式,使用一个坐标值下的一个坐标值,而不是“并排和空格分隔符”。
 
谢谢你,
致以最诚挚的问候。
回复

使用道具 举报

10

主题

45

帖子

35

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-5 18:01:50 | 显示全部楼层
所以你想要的是盒子的四个角落??
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 18:04:06 | 显示全部楼层
尊敬的先生:,
为什么创建长方体?无需盒子。我需要排序的插入点。就像附上的照片。请查找。
 
例如,对于X坐标,“0”重复4次。但我只需要一次,而不是多次或重复。就像一个排序点。
请运行我的帖子#1代码。在该代码的帮助下,在记事本中生成为0.00 600.00 1200.00 2200.00。我需要的正是这种排序格式。但一个低于一个的值,如:
0
600
1200
2200
 
谢谢你,
致以最诚挚的问候。
180832r08pezf1h68xn4t5.jpg
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 08:58 , Processed in 0.413504 second(s), 74 queries .

© 2020-2025 乐筑天下

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