明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 386|回复: 5

[提问] 帮我看看程序怎么运行不起

[复制链接]
发表于 2023-11-30 10:48 | 显示全部楼层 |阅读模式
本帖最后由 duhan6401 于 2023-11-30 10:51 编辑

我有一个这样的列表(("永管ZK248" "40" 219734.0 3.38701e+06 98710) ("永管ZK247" "40" 220133.0 3.38698e+06 98310) ("永管ZK245" "45" 220578.0 3.38693e+06 97862) ("永管ZK243" "45" 221556.0 3.
38673e+06 96841) ("永管ZK242" "40" 222451.0 3.38648e+06 95868) ("永管ZK241" "40" 223362.0 3.386e+06 94772) ("永管ZK240" "35" 224378.0 3.38625e+06 93685) ),想弄到电子表格里头是这样子的,
自己写的插件是下面这样的。可以一步一步运行,是不能整个程序一次性运行,不知道哪里的问题。求助
  • (defun c:wtt (/ aa pttxt yujikongshen1 konghao1 ptx pty ss1 dist1)
  •   (setq ss1 (reverse ss1))
  •   (setq K (length ss1))
  •   (setq i 0)
  •   (setq  aa (open "d://钻孔坐标.xls" "w"));建立文本;W会把文本里面的内容清除
  •   (princ "孔号" aa);用princ写入孔号
  •   (princ "\t" aa)
  •   (princ "预计孔深" aa);用princ写入孔深
  •   (princ "\t" aa)
  •   (princ "X坐标" aa);用princ写入X坐标
  •   (princ "\t" aa)
  •   (princ "Y坐标" aa);用princ写入Y坐标
  •   (princ "\t" aa)
  •   (princ "桩号" aa);用princ写入桩号
  •   (princ "\n" aa);这个格式就换行
  •   (repeat K
  •     (setq pttxt (nth i ss1);;取得坐标文字
  •       konghao1 (car pttxt);;取得孔号
  •       yujikongshen1 (cadr pttxt)
  •       ptx (caddr pttxt);;取得X坐标
  •       pty (cadddr pttxt);;取得y坐标
  •       dist1 (nth 4 pttxt)
  •     )
  •     (princ konghao1 aa);用princ写入孔号
  •     (princ "\t" aa)
  •     (princ yujikongshen1 aa);用princ写入孔深
  •     (princ "\t" aa)
  •     (princ ptx aa);用princ写入X坐标
  •     (princ "\t" aa)
  •     (princ pty aa);用princ写入Y坐标
  •     (princ "\t" aa)
  •     (princ dist1 aa);用princ写入桩号
  •     (princ "\n" aa);这个格式就换行
  •     (setq i (+ i 1))
  •   )
  •   (close aa);;关闭文本(结束后必须关闭)
  • )

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2023-11-30 13:09 | 显示全部楼层
发表于 2023-11-30 13:33 | 显示全部楼层
建议前期新手学习csv文件,excel文件有点麻烦,需要专门的函数、csv文件  也可以用excel打开

  1. (defun c:wtt (/ aa pttxt yujikongshen1 konghao1 ptx pty ss1 dist1)
  2.   (SETQ        SS1 '(("永管ZK248" "40" 219734.0 3.38701e+06 98710)
  3.               ("永管ZK247" "40" 220133.0 3.38698e+06 98310)
  4.               ("永管ZK245" "45" 220578.0 3.38693e+06 97862)
  5.               ("永管ZK243" "45" 221556.0 3.38673e+06 96841)
  6.               ("永管ZK242" "40" 222451.0 3.38648e+06 95868)
  7.               ("永管ZK241" "40" 223362.0 3.386e+06 94772)
  8.               ("永管ZK240" "35" 224378.0 3.38625e+06 93685)
  9.              )
  10.   )
  11.   (setq ss1 (reverse ss1))
  12.   (setq K (length ss1))
  13.   (setq        i    0
  14.         LST1 (LIST "孔号" "预计孔深" "X坐标" "Y坐标" "桩号")
  15.   )
  16.   (setq aa (open "d:\\钻孔坐标.CSV" "w"));;;注意  \\  //和区别,最好前期玩csv文件
  17.   ;;;注意  \\  //和区别,最好前期玩csv文件,这个简单,excel 前期学习台麻烦
  18.                                         ;建立文本;W会把文本里面的内容清除
  19. ;;;  (princ "孔号" aa);用princ写入孔号
  20. ;;;  (princ "\t" aa)
  21. ;;;  (princ "预计孔深" aa);用princ写入孔深
  22. ;;;  (princ "\t" aa)
  23. ;;;  (princ "X坐标" aa);用princ写入X坐标
  24. ;;;  (princ "\t" aa)
  25. ;;;  (princ "Y坐标" aa);用princ写入Y坐标
  26. ;;;  (princ "\t" aa)
  27. ;;;  (princ "桩号" aa);用princ写入桩号
  28. ;;;  (princ "\n" aa);这个格式就换行
  29.   (write-line
  30.     (vl-string-right-trim
  31.       ","
  32.       (APPLY 'STRCAT
  33.              (MAPCAR (FUNCTION (LAMBDA (X) (STRCAT X ","))) LST1)
  34.       )
  35.     )
  36.     AA
  37.   )
  38.   (repeat K
  39.     (setq pttxt        (nth i ss1)
  40.                 ;;取得坐标文字
  41. ;;;      konghao1 (car pttxt);;取得孔号
  42. ;;;      yujikongshen1 (cadr pttxt)
  43. ;;;      ptx (caddr pttxt);;取得X坐标
  44. ;;;      pty (cadddr pttxt);;取得y坐标
  45. ;;;      dist1 (nth 4 pttxt)
  46.     )
  47.     (write-line
  48.       (vl-string-right-trim
  49.         ","
  50.         (APPLY 'STRCAT
  51.                (MAPCAR (FUNCTION (LAMBDA (X)(STRCAT (vl-princ-to-string X) ",")))
  52.                                  pttxt
  53.                        )
  54.                )
  55.         )
  56.       AA
  57.       )
  58.    
  59. ;;;    (princ konghao1 aa);用princ写入孔号
  60. ;;;    (princ "\t" aa)
  61. ;;;    (princ yujikongshen1 aa);用princ写入孔深
  62. ;;;    (princ "\t" aa)
  63. ;;;    (princ ptx aa);用princ写入X坐标
  64. ;;;    (princ "\t" aa)
  65. ;;;    (princ pty aa);用princ写入Y坐标
  66. ;;;    (princ "\t" aa)
  67. ;;;    (princ dist1 aa);用princ写入桩号
  68. ;;;    (princ "\n" aa);这个格式就换行
  69.     (setq i (+ i 1))
  70.   )
  71.   (close aa)
  72.   ;;关闭文本(结束后必须关闭)
  73. )
 楼主| 发表于 2023-12-1 10:50 | 显示全部楼层
liuhe 发表于 2023-11-30 13:33
建议前期新手学习csv文件,excel文件有点麻烦,需要专门的函数、csv文件  也可以用excel打开

谢谢,我终于找到问题了,ss1数据是前面一个程序得来的,这个程序调用时候不能在后面重新定义,导致K就一直是0,就不能循环。我还得研究下你程序里头的那一堆mapcar
发表于 2023-12-1 11:18 | 显示全部楼层
duhan6401 发表于 2023-12-1 10:50
谢谢,我终于找到问题了,ss1数据是前面一个程序得来的,这个程序调用时候不能在后面重新定义,导致K就一 ...

CSV文件是都号文件格式,每一行都是文字内容,用“,”隔开。那个作用是把第一行的内容,组成一个逗号隔开的字符串,直接用write-line   写一行。
 楼主| 发表于 2023-12-2 07:02 | 显示全部楼层
liuhe 发表于 2023-12-1 11:18
CSV文件是都号文件格式,每一行都是文字内容,用“,”隔开。那个作用是把第一行的内容,组成一个逗号隔 ...

(or pmtbl (setq pmtbl 2000))
(or yxws(setq yxws 1))
(defun c:wzbsc (/ aa pttxt yujikongshen1 konghao1 ptx pty  dist1 K)
            (setq K (length ss1))
        (setq ss1 (reverse ss1))
        (setq i 0)
                        (setq LST1 '( "孔号" "预计孔深" "X坐标" "Y坐标" "桩号"))
                        (setq aa (open "d:\\钻孔坐标.CSV" "w"));;;注意\\和//区别,W会把文本里面的内容清除
                (write-line (vl-string-right-trim "," (APPLY 'STRCAT (MAPCAR (FUNCTION (LAMBDA (X) (STRCAT X ","))) LST1))) AA);;;每个元素后加逗号
        (repeat K
                                  (setq pttxt (nth i ss1) )
                                  (write-line (vl-string-right-trim "," (APPLY 'STRCAT (MAPCAR (FUNCTION (LAMBDA (X) (STRCAT (vl-princ-to-string X) ","))) pttxt ))) AA )
                                (setq i (+ i 1))
                        )
        (close aa)        ;;关闭文本(结束后必须关闭)
)
这段代码编译时候总是出错,; 错误: 参数值错误: 非负: -1,不知道是哪个东西的原因。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-20 17:06 , Processed in 0.220953 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表