GRREAD函數詳解

本文摘自明經通道用戶TORCKY所發的帖子,僅供參考。

語法

(grread [track] [allkeys [curtype]])

功能及參數

此函數可以讓您直接讀取 AutoCAD 的輸入設備, 只要它們一移動, 您就可以追蹤得到它們的位置。只有在很特殊的情況下才需要使用這個函數, 通常AutoLISP 都是使用像 getstring、getreal 等這樣的 getxxx 函數來作輸入的工作的。追蹤的參數如果不為 nil, 則只要輸入設備移動, 就可以返回此點的坐標值, 您並不需要按輸入設備上的選取按鍵, 這就是 AutoCAD 拖放 (Dragging) 的原理。

如果 track 參數有給予且非 nil, 那麼它將賦予由指向設備的移動上 (但按鍵尚未按下)返回坐標值。allkeys 參數是一可選擇的整型數值 (一個位標誌項)。如果 allkeys 參數存在, grread 將視碼來執行不同的功能。curtype 參數將能用來控制滑鼠形式的顯示。

以下將為您詳細解說其後參數的意義:

  • track:如果不為 nil, 則追蹤滑鼠位置。

  • Allkeys:如果提供, 那麼allkeys參數必須為整型數, 且其值將被定義如下:

      值=1 (位0) 將返回拖放模式坐標。如果此位被設定, 同時用戶移動指向設備, 則grread 將返回一個第一個數字是 type 5 以及第二個數字是目前指向設備的滑鼠所在坐標 (X, Y)。值=2 (位1) 將返回所有鍵值。包含函數與滑鼠鍵碼, 及當用戶按下滑鼠鍵而非滑鼠時。值=4 (位2) 使用一值來傳至 curtype 參數中以控制滑鼠顯示。值=8 (位3) 當用戶按下 Ctrl + C 鍵時, 不會顯示error:console break信息。

  • Curtype:如果提供, curtype 參數將定義滑鼠形式的顯示。它必須是一整型數值, 有效的選擇項如下:

      0 = 顯示正常的十字滑鼠1 = 不顯示滑鼠(無十字滑鼠)2 = 顯示圖元選擇「target」滑鼠

注意

curtype 參數僅當目前 grread 函數調用時, 影響到滑鼠形式。在未來版本中可能再定義其他控制位。

返回值

Grread 函數將返回一個表, 此表的第一個元素是一個指定輸入形式的碼。第二個元素是一個視輸入形式而定的整數或點的表。其返回值如下所示:

要使 grread 終止 AutoLISP 的執行時, 請按下 Ctrl + C 兩個鍵即可。任何其他的鍵入, 將直接傳到Grread上, 以允許它完全控制輸入元件。如果用戶在一個屏幕菜單中或在下拉式菜單列表中按下滑鼠按鈕, 則 grread 將會返回形態 11 的代碼, 但是對於接下來的調用, 它並不會返回形態 12 的代碼:形態 12 的代碼只有當滑鼠是在屏幕的繪圖區域時, 才會跟隨在形態 6 或形態 11 之後出現。

範例

在企圖以一個滑鼠按鈕或一個輔助的功能方框來啟動其他的操作前, 將代碼 12 的數據從緩衝區中清除是很重要的。要完成這件事, 您可執行一個類似下面的嵌套式 grread:

(setq code_12 (grread (setq code (grread))))

則此序列將獲取代碼 12 表的值來當做一個由元件上輸入的串流(streaming)。

注意

在不同的電腦系統中 (例如, DOS 與 UNIX), 由於處理的方式不同。所以, grreed 函數將返回不同的結果。例如:

預設的定位設備(如滑鼠或數字化儀)所使用的滑鼠返回碼是11, 不是6。在麥金托斯 (Machintosh) 的電腦中, 下拉式菜單的返回碼是11, 不是4。按下按鍵兩下則將返回11, 不是6。

推薦閱讀:

3D預覽的顯示
智慧水務軟體二次開發入門介紹篇—使用ruby對ICM進行一些簡單的操作

TAG:AutoCAD | Lisp | 二次開發 |