乐筑天下

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

[编程交流] 什么';李,那是不对的

[复制链接]

13

主题

75

帖子

62

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 14:32:15 | 显示全部楼层 |阅读模式
  1. (Defun C:DSS ()
  2. (setq bnum (getint "\nEntre com um numero: "))
  3. (setq inum (itoa bnum))
  4.   (Setq PT1 (GetPoint "\nPonto de Desapropriação: " ))
  5.    (Command "-INSERT""PONTO" PT1 "1""1""0" inum inum "")
  6. (while (/= nil PT1)
  7.     (setq bnum (+ bnum 1))
  8.      (setq inum (itoa bnum))
  9.       (setq PT1 (getpoint "\nEscolha proximo ponto: "))
  10.        (Command "-INSERT""PONTO" PT1 "1""1""0" inum inum "")
  11. )
  12. (setq ptlist (append ptlist (list PT1)))
  13. (setq file (open (getfiled "Output file" "" "" 5) "w"))
  14.   (write-line (strcat (rtos (cadr PTLIST)) "," (rtos (caddr PTLIST))) file)
  15.    (close file)
  16. (Princ)
  17. )

 
 
这是一个lisp,我想把每个“插入点坐标”,并把它放在一个“.csv”文件中,我将在excel中打开它并生成一个坐标表…但不起作用…我需要一些提示,我不想要解决方案。我想从我自己的。如果有人可以帮助我,我将非常感谢。
 
 
PS:对不起,我的英语不好
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:55:31 | 显示全部楼层
你不想扩展我之前在你的另一个线程中发布的LISP来帮助你完成上述任务吗
 
  1. (defun c:DSS  (/ oldatt bnum pt1)
  2. (setq oldatt (getvar "ATTREQ"))
  3. (setvar "ATTREQ" 1)
  4. (if (and (setq bnum (getint "\nEntr com um numero: "))
  5.           (or (tblsearch "BLOCK" "PONTO")
  6.               (findfile "PONTO.dwg")))
  7.    (while (setq pt1 (getpoint "\nPonto de Desapropriação: "))
  8.      (command "-insert" "ponto" pt1 "1" "1" "0" (itoa bnum) (itoa bnum) "")
  9.      (setq bnum (1+ bnum))))
  10. (setvar "ATTREQ" oldatt)
  11. (princ))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:05:56 | 显示全部楼层
也许像这样的东西可以写入文件?
 
  1. (defun c:DSS  (/ oldatt file bnum pt1 ptlst)
  2. (setq oldatt (getvar "ATTREQ"))
  3. (setvar "ATTREQ" 1)
  4. (if (and (setq bnum (getint "\nEntr com um numero: "))
  5.           (or (tblsearch "BLOCK" "PONTO")
  6.               (findfile "PONTO.dwg"))
  7.           (setq file (getfiled "Output File" "" "csv" 9)))
  8.    (progn
  9.      (while (setq pt1 (getpoint "\nPonto de Desapropriação: "))
  10.        (command "-insert" "ponto" pt1 "1" "1" "0" (itoa bnum) (itoa bnum) "")
  11.        (setq bnum  (1+ bnum)
  12.              ptlst (cons pt1 ptlst))) ; Add the point to the list
  13.      
  14.      (setq file (open file "w")) ; Open the file for writing
  15.      
  16.      (mapcar
  17.        (function
  18.          (lambda (x)
  19.            (write-line
  20.              (strcat (rtos (car x)) "," (rtos (cadr x))) file))) ptlst)
  21.      ; Write each pt in the list to the file
  22.      
  23.      (close file)))
  24.   ; Close the file
  25. (setvar "ATTREQ" oldatt)
  26. (princ))
回复

使用道具 举报

13

主题

75

帖子

62

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 15:11:00 | 显示全部楼层
这对我来说很先进,啊哈,但我能理解你的台词。。。我已经有1个lsp与你的增量,工作得很好!!!所以,我想增加更多,得到一个*。带有坐标的csv文件。我可以用“append”吗?
我的代码怎么了?
 
 
“EDIT”=你太快了,忽略上面的文字
回复

使用道具 举报

13

主题

75

帖子

62

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 15:23:08 | 显示全部楼层
这绝对是我想的!非常感谢你。我甚至不知道这个函数lambda。。。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:36:09 | 显示全部楼层
 
谢谢
 
至于“lambda”,它被称为“匿名函数”,当你想对列表中的每个成员执行一组操作时,你可以将“mapcar”与“lambda”函数结合起来,后者是你想执行的操作的一般示例。。。如果这有意义的话。。。
 

 
  1. (mapcar '(lambda (x) (+ x 2)) '(1 2 3))
  2. or
  3. (mapcar (function (lambda (x) (+ x 2))) (list 1 2 3))

 
将返回:
 
  1. (3 4 5)

 
可以看到,通用函数“lambda”已经应用于列表中的每个成员,结果是一个返回列表。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 00:11 , Processed in 0.414413 second(s), 64 queries .

© 2020-2025 乐筑天下

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