neekcotrack 发表于 2022-7-6 17:29:14

Lisp调用Lisp问题

好的,我有一个lisp设置,它询问、、、。我选择的每一个都会运行另一个lisp,询问、、、、、、、,然后继续。问题是,如果我运行第一个lisp,它将运行第二个lisp,但在我选择任何选项后终止,但如果我运行第二个lisp,它将运行良好。有人能帮忙吗!!!。Lisp one是第一个Lisp,第二个Lisp是第二个Lisp之一。
 
(defun c:setup ()
(initget "122X34 224X36 330X42 436X48")
(setq SHEET (getkword "\nEnter Sheet 22X34,24X36,30X42,36X48: "))
(cond
((= SHEET "122X34")
   (INITGET "1FULL 21/2=1 31/4=1 41/8=1 51/20=1 61/30=1 71/40=1 81/50=1")
    (SETQ SCALE (getkword "\Enter Scale FULL,1/2=1,1/4=1,1/8=1,1/20=1,1/30=1,1/40=1,1/50=1:"))
   (cond
      (COMMAND "22X34"))
((= SHEET "224X36")
   (INITGET "1FULL 21/2=1 31/4=1 41/8=1 51/20=1 61/30=1 71/40=1 81/50=1")
    (SETQ SCALE (getkword "\Enter Scale FULL,1/2=1,1/4=1,1/8=1,1/20=1,1/30=1,1/40=1,1/50=1:"))
   (cond
      (COMMAND "24X36"))
((= SHEET "330X42")
   (INITGET "1FULL 21/2=1 31/4=1 41/8=1 51/20=1 61/30=1 71/40=1 81/50=1")
    (SETQ SCALE (getkword "\Enter Scale FULL,1/2=1,1/4=1,1/8=1,1/20=1,1/30=1,1/40=1,1/50=1:"))
   (cond
      (COMMAND "30X42"))
((= SHEET "436X48")
   (INITGET "1FULL 21/2=1 31/4=1 41/8=1 51/20=1 61/30=1 71/40=1 81/50=1")
    (SETQ SCALE (getkword "\Enter Scale FULL,1/2=1,1/4=1,1/8=1,1/20=1,1/30=1,1/40=1,1/50=1:"))
   (cond
      (COMMAND "36X48"))   
   )
   )
)
)
(princ)
)
 
 
 
(defun c:22X34 ()
   (INITGET "1FULL 21/2=1 31/4=1 41/8=1 51/20=1 61/30=1 71/40=1 81/50=1")
    (SETQ SCALE (getkword "\Enter Scale FULL,1/2=1,1/4=1,1/8=1,1/20=1,1/30=1,1/40=1,1/50=1:"))
   (cond
      ((= SCALE "1FULL")
       (COMMAND "_.LAYOUT" "D" "24X36" "_.LAYOUT" "D" "30X42" "_.LAYOUT" "D" "36X48"))
      ((= SCALE "21/2=1")
       (COMMAND "_.LAYOUT" "D" "24X36" "_.LAYOUT" "D" "30X42" "_.LAYOUT" "D" "36X48"))
      ((= SCALE "31/4=1")
       (COMMAND "_.LAYOUT" "D" "24X36" "_.LAYOUT" "D" "30X42" "_.LAYOUT" "D" "36X48"))
      ((= SCALE "41/8=1")
       (COMMAND "_.LAYOUT" "D" "24X36" "_.LAYOUT" "D" "30X42" "_.LAYOUT" "D" "36X48"))
      ((= SCALE "51/20=1")
       (COMMAND "_.LAYOUT" "D" "24X36" "_.LAYOUT" "D" "30X42" "_.LAYOUT" "D" "36X48"))
      ((= SCALE "61/30=1")
       (COMMAND "_.LAYOUT" "D" "24X36" "_.LAYOUT" "D" "30X42" "_.LAYOUT" "D" "36X48"))
      ((= SCALE "71/40=1")
       (COMMAND "_.LAYOUT" "D" "24X36" "_.LAYOUT" "D" "30X42" "_.LAYOUT" "D" "36X48"))
      ((= SCALE "81/50=1")
       (COMMAND "_.LAYOUT" "D" "24X36" "_.LAYOUT" "D" "30X42" "_.LAYOUT" "D" "36X48"))         
             )               
         )
         )
       )
   )
   )
)
)
(princ)
)

Footpeg 发表于 2022-7-6 18:56:06

在“c:setup”中,cond语句的右括号都放错了位置,后续命令的调用方式不正确,这些命令不必位于它们自己的cond语句中。当下面的代码工作时,您会发现运行c:setup将导致发出两次scale提示。关于如何构造这些命令,请向下滚动到下一个代码框。
 
以下是我将如何构造它们:
3Footpeg
页: [1]
查看完整版本: Lisp调用Lisp问题