帮我看看程序怎么运行不起
本帖最后由 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)
[*](setqaa (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);;关闭文本(结束后必须关闭)
[*])
http://bbs.mjtd.com/thread-187020-1-1.html
这里有做好的代码 建议前期新手学习csv文件,excel文件有点麻烦,需要专门的函数、csv文件也可以用excel打开
(defun c:wtt (/ aa pttxt yujikongshen1 konghao1 ptx pty ss1 dist1)
(SETQ SS1 '(("永管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)
)
)
(setq ss1 (reverse ss1))
(setq K (length ss1))
(setq i 0
LST1 (LIST "孔号" "预计孔深" "X坐标" "Y坐标" "桩号")
)
(setq aa (open "d:\\钻孔坐标.CSV" "w"));;;注意\\//和区别,最好前期玩csv文件
;;;注意\\//和区别,最好前期玩csv文件,这个简单,excel 前期学习台麻烦
;建立文本;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);这个格式就换行
(write-line
(vl-string-right-trim
","
(APPLY 'STRCAT
(MAPCAR (FUNCTION (LAMBDA (X) (STRCAT X ","))) LST1)
)
)
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)
)
(write-line
(vl-string-right-trim
","
(APPLY 'STRCAT
(MAPCAR (FUNCTION (LAMBDA (X)(STRCAT (vl-princ-to-string X) ",")))
pttxt
)
)
)
AA
)
;;; (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)
;;关闭文本(结束后必须关闭)
)
liuhe 发表于 2023-11-30 13:33
建议前期新手学习csv文件,excel文件有点麻烦,需要专门的函数、csv文件也可以用excel打开
谢谢,我终于找到问题了,ss1数据是前面一个程序得来的,这个程序调用时候不能在后面重新定义,导致K就一直是0,就不能循环。我还得研究下你程序里头的那一堆mapcar duhan6401 发表于 2023-12-1 10:50
谢谢,我终于找到问题了,ss1数据是前面一个程序得来的,这个程序调用时候不能在后面重新定义,导致K就一 ...
CSV文件是都号文件格式,每一行都是文字内容,用“,”隔开。那个作用是把第一行的内容,组成一个逗号隔开的字符串,直接用write-line 写一行。 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 ptydist1 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,不知道是哪个东西的原因。
页:
[1]