lead009 发表于 2010-11-23 17:32:00

請教 initgetd函數的疑問

本帖最后由 作者 于 2010-11-25 15:50:43 编辑

initget設定下次 getxxx 函數的有效輸入


在以下的程式有讓使用者輸入a b c d ,判別開起相對應的副程式
(initget "A B C D");;
(setq facetype(getkword"\n A-喜、B怒、C哀、D樂:<A>"))

可是在我把 (initget "A B C D");; 這一行從該程式刪除後。
程式還是可以不受影響,只靠"getkword"就能正確的叫出副程式,並執行完畢
不知,initget它具體的做用是什麼??
為何在此範例中可有可無?



(defun C:221()
(setvar "cmdecho" 0)
(setq en(entsel"\nselect a circle"))

(if(null en)
    (progn
      (setq srr(getvar "circlerad"));;取得當前系統變數值
      (setq cen(getpoint"\nselect a point"))
      (setq rr(getdist"\n enter r value" cen))
      (if(null rr) (setq rr srr));;如果沒有r值輸入,就載入當前系統r值
      (command "circle" cen rr)
      (setq en(entlast))
   )
   
    (progn
      (setq en(car en));;得x物件
      (setq data(entget en))
      (setq cen(cdr(assoc 10 data)))
      (setq rr(cdr(assoc 40 data)))
    )
)
(initget "A B C D");;
(setq facetype(getkword"\n A-喜、B怒、C哀、D樂:<A>"))
(if (null facetype) (setq facetype "A"))
(cond
    ((= facetype "A")(lsp_21a))
    ((= facetype "B")(lsp_21b))
    ((= facetype "C")(lsp_21c))
    ((= facetype "D")(lsp_21d))
)
   
(prin1)
)

ljttjl 发表于 2010-11-23 20:12:00

<p>新建个图形先用(getkword)&nbsp; 输入字母,看看</p>
<p>&nbsp;</p>
<p>然后再用 (initget "A B") (getkword)&nbsp; 回车&nbsp;输入字母看看,还是有差别的。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>(initget "A B")函数功能是定义其后getXXX函数的关键字</p>

lead009 发表于 2010-11-25 15:48:00

<p>我剛剛又再自己試驗了一次</p>
<p>把<font color="#800000">&nbsp;(initget "A B C D");</font><font color="#999999">;</font> 刪除之後程式就會出現錯誤,說輸入了無效關鍵字。</p>
<p>&nbsp;</p>
<p>謝謝你的解釋,</p>
<p>我了解了INITGET函數的作用了</p>
页: [1]
查看完整版本: 請教 initgetd函數的疑問