修复我的Plot命令
我已经编写了一个真正快速的LISP,用作绘图命令。我想补充一点。它的书写方式非常好,所以我不希望它被重写,但我想添加一种方式,让用户可以选择绘图大小。我只需要两个选择,Letter和11X17。有人能告诉我要添加什么才能使这个选择可用吗?这是原始代码:
我想我需要添加一个用户定义的变量“size”,并将其放置在现在标记为11x17的位置。我只是不知道如何写这段代码。
这是我最好的尝试,但我遇到了一个错误:
(DEFUN C:WPO (/ size )
(setq size (getkword "\n Plot Size : <Letter> "))
(COMMAND "-PLOT" "YES" "model" "HP LaserJet M5035 MFP PCL (BackOffice).pc3" size "INCHES" "LANDSCAPE" "NO" "WINDOW" PAUSE PAUSE "FIT" "CENTER" "YES" "MONOCHROME.CTB" "YES" "WIREFRAME" "NO" "NO" "YES")
(PRINC)
)
我应该提一下这是一个窗口情节。 查看initget函数,您需要提供一个“允许”关键字的列表。
需要更多的代码来将“字母”设置为默认值。 谢谢你的提示李。。。我得到了它!! 没问题,您最后是如何编写默认选项的? 这就是我得到的:
(DEFUN C:WP (/ size p1 p2 )
(initget "Letter 11x17 ")
(setq size (getkword "Paper Size: : ")
p1 (getpoint "\nPick first corner of window: \n")
p2 (getcorner p1 "\nPick opposite corner of window: \n"))
(COMMAND "-PLOT" "YES" "model" "HP LaserJet M5035 MFP PCL (BackOffice).pc3" size "INCHES" "LANDSCAPE" "NO" "WINDOW" P1 P2 "FIT" "CENTER" "YES" "MONOCHROME.CTB" "YES" "WIREFRAME" "NO" "NO" "YES")
(PRINC)
) 很好的一个伴侣-看起来你已经掌握了窍门
我们看看是否可以在那里违约?我会引导你
注意,如果用户点击enter,getkword的返回为nil,那么我们需要构造一些逻辑,将getkword返回nil时的选项设置为默认值。 在我正在阅读的书中,它没有描述如何设置默认值。我在哪里可以找到更多信息? 这里有一个小例子:
(DEFUN C:WP (/ size p1 p2 )
(initget "Letter 11x17 ")
(and
(or (setq size (getkword "Paper Size: <Letter>: "))
(setq size "Letter"))
(setq p1 (getpoint "\nPick first corner of window: \n"))
(setq p2 (getcorner p1 "\nPick opposite corner of window: \n"))
(COMMAND "-PLOT" "YES" "model" "HP LaserJet M5035 MFP PCL (BackOffice).pc3" size "INCHES" "LANDSCAPE" "NO" "WINDOW" P1 P2 "FIT" "CENTER" "YES" "MONOCHROME.CTB" "YES" "WIREFRAME" "NO" "NO" "YES")
)
(PRINC)
) 我还将所有内容放在and中,如果遗漏了某些内容,则退出。 所以,如果我这样做,我会有一个默认的信没有问题?
(DEFUN C:WPO (/ size p1 p2 )
(initget "Letter 11x17 ")
(or(setq size (getkword "Paper Size: :<Letter> "))
(setq size "Letter"))
(setq p1 (getpoint "\nPick first corner of window: \n"))
(setq p2 (getcorner p1 "\nPick opposite corner of window: \n"))
(COMMAND "-PLOT" "YES" "model" "HP LaserJet M5035 MFP PCL (BackOffice).pc3" size "INCHES" "LANDSCAPE" "NO" "WINDOW" P1 P2 "FIT" "CENTER" "YES" "MONOCHROME.CTB" "YES" "WIREFRAME" "NO" "NO" "YES")
(PRINC)
)
如果我用(if)而不是(or)呢?
(DEFUN C:WPO (/ size p1 p2 )
(initget "Letter 11x17 ")
(if(setq size (getkword "Paper Size: :<Letter> "))
(setq size "Letter"))
(setq p1 (getpoint "\nPick first corner of window: \n"))
(setq p2 (getcorner p1 "\nPick opposite corner of window: \n"))
(COMMAND "-PLOT" "YES" "model" "HP LaserJet M5035 MFP PCL (BackOffice).pc3" size "INCHES" "LANDSCAPE" "NO" "WINDOW" P1 P2 "FIT" "CENTER" "YES" "MONOCHROME.CTB" "YES" "WIREFRAME" "NO" "NO" "YES")
(PRINC)
)
这还能用吗?
页:
[1]
2