lisp编程提示参数太多

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lisp编程提示参数太多相关的知识,希望对你有一定的参考价值。

;(错误: 参数太少)
(defun c:gxcnew()
(vl-load-com)
(setq ss (ssget))
(setq dx (getstring "请输入线径:"))
(setq gs (getint "请输入导线根数:"))
(setq gd (getstring "请输入管径:"))
(setq hs (getint "请输入户数:"))
(setq lg 0) ;立管
(setq pg 0);平管
(setq i 0)
(repeat (sslength ss)
(setq zbj (Vlax-Get (Vlax-Ename->Vla-Object (ssname ss i)) 'Coordinates ))
(setq lg (+ lg (- (* (nth 5 zbj) 2) (nth 2 zbj) (nth 11 zbj))))
(setq pg (+ pg (distance (list (nth 0) (nth 1)) (list (nth 9) (nth 10)))))
(setq i (1+ i))
)
(print (strcat gd (rtos (* hs (+ lg pg)))))
(print (strcat dx (rtos (* gs hs (+ lg pg)))))
(print (strcat "剔槽" (tros (* hs lg))))
(print 以上数据不含预留长度)
(princ)
)

;(list (nth 0) (nth 1)) (list (nth 9) (nth 10))
;nth 后面要2个参数
;(print 以上数据不含预留长度) 要字符串 你没加双引号

;(setq gx (+ gx (Vlax-Get (Vlax-Ename->Vla-Object (ssname ss i) 'Length ))))
;应改为如下.
(setq gx (+ gx (Vlax-Get (Vlax-Ename->Vla-Object (ssname ss i)) 'Length )))
;(setq pmcd (+ pmcd (Vlax-Get (Vlax-Ename->Vla-Object (ssname ss i) 'Length ))))
;应改为如下.
(setq pmcd (+ pmcd (Vlax-Get (Vlax-Ename->Vla-Object (ssname ss i)) 'Length )))追问

我改正以后,出现"错误: 参数太少"
再请大师指点,多谢!

追答

;利用三维电气管线图求管线槽长度(错误: 参数太少)
(defun c:gxcnew()
(vl-load-com)
(setq ss (ssget))
(setq dx (getstring "请输入线径:"))
(setq gs (getint "请输入导线根数:"))
(setq gd (getstring "请输入管径:"))
(setq hs (getint "请输入户数:"))
(setq lg 0) ;立管
(setq pg 0);平管
(setq i 0)
(repeat (sslength ss)
(setq zbj (Vlax-Get (Vlax-Ename->Vla-Object (ssname ss i)) 'Coordinates ))
;如果zbj中元素个数小于6,则(nth 5 zbj)会出错
;如果zbj中元素个数小于11,则(nth 10 zbj)会出错,...
(setq lg (+ lg (- (* (nth 5 zbj) 2) (nth 2 zbj) (nth 11 zbj))))
;(nth 0 参数) (nth 1 参数) (nth 9 参数) (nth 10 参数)
(setq pg (+ pg (distance (list (nth 0) (nth 1)) (list (nth 9) (nth 10)))))
(setq i (1+ i))
)
(print (strcat gd (rtos (* hs (+ lg pg)))))
(print (strcat dx (rtos (* gs hs (+ lg pg)))))
(print (strcat "剔槽" (rtos (* hs lg))))
;(print 以上数据不含预留长度)
;改为如下:
(print "以上数据不含预留长度")
(princ)
)

追问

非常非常地感谢大师的帮助,多谢了!

参考技术A (print (strcat 剔槽 (rtos tc)))
剔槽---"剔槽"追问

大师回答非常好,但,我改正以后,出现"错误: 参数太少"
再请大师指点,多谢!

以上是关于lisp编程提示参数太多的主要内容,如果未能解决你的问题,请参考以下文章

lisp错误: 参数太多

路径名或者变量有空格时候,会造成参数太多的错误提示

Centos7 Shell脚本提示参数太多

AUTO CAD Lisp代码总是出现 参数太多的问题

分析行为不端的 Emacs Lisp 的提示?

函数的参数太多了