慵懶樂活
關於部落格
  • 180634

    累積人氣

  • 6

    今日人氣

    0

    訂閱人氣

AutoLISP程序知識(陸續更新...)

在AutoLISP函數(command)中,您可以加入pause使指令在執行到該處時暫停下來以等待使用者輸入。

例如:
(command "circle" pnt1 pause)
該指令將pnt1指定為圓心之後暫停,等待使用者輸入圓的半徑值。

================================================
在一個AutoLISP運行結束之後,它常會在指令行上返回一個nil,我們可以在函數的最後一個右括號之前加上一條(princ)語句抑制nil的出現。

注意:如果函數是用來返回一個值,則不能使用上述的方法。

================================================
修改系統變數時應注意對原有變數的保存以便恢復

AutoCAD啟動之後,會為每個系統變數都初始化一個預設值。在應用程式運行時,可能需要暫時將某系統產生的值修改一下。不過應注意在修改之前應將其預設值加以保存,使用完畢後再將其恢復回原始值。

例如:在進行物件鎖點時,我們希望它使用端點鎖點方式,這時只要將系統變數OSMODE的值設為1即可。不過,在修改OSMODE的值之前,應將其原始值保存起來:

(setq oldosmode(getvar "osmode"))

然後再進行修改:

(setvar"osmode" 1)

這樣再進行物件鎖點時,將使用端點方式。當鎖點結束之後,應將其恢復為原始的值:

(setvar"osmode" oldosmode)

此處oldosmode是一個用以保存OSMODE預設值的中間變量。

================================================
其實Undo處理對程序來說也是非常重要的,尤其對有較多輸出的複雜程序而言,不能解決Undo問題,使用起來會極不方便。

這是一段Undo處理的示例:
(defun c:my(/ ...)                                  ;主程序(主函數)
  (setvar "cmdecho" 0)                              ;取消指令回顯提示
  (command "_.undo" "_BE")                          ;Undo編組開始
  (setq olderr *error* *error* newerr)              ;調用自定義出錯函數
  (setq oldvar (getvar ...))                        ;保存相關係統變量
  (setvar ...                                       ;設置系統變量
  ...                                               ;程序段
  ...
  (setvar ... oldvar)                               ;恢復系統變量
  (setq *error* olderr)                             ;恢復出錯函數
  (command "_.undo" "_E")                           ;結束Undo命令編組
  (princ)                                           ;取消程序返回值
)

================================================
如何設定預設值和記住上次的輸入值~
(defun C:TT1 (/ RETURN MSG)
  (if (null *REAL)
    (setq *REAL 100.);_如果*REAL為空值,就給它100的值
  )
  ;;用戶輸入
  (setq MSG (strcat "n請輸入實數<" (rtos *REAL) ">"))
  (setq RETURN (getreal MSG))
  ;;判斷返回值
  (if (null RETURN)
    (setq RETURN *REAL) ;_按Enter後的返回值
    (setq *REAL RETURN) ;_全局變量*REAL值,記憶為用戶輸入值
  )
  (princ RETURN)
  (princ)
)

================================================
為自己的應用程式建立一個單獨的目錄

不要將自己的應用程式放在AutoCAD軟體的目錄下,這樣不僅會擾亂軟體中文件的排列,也不便於管理。通常開發者會建立一個單獨的目錄來放置自己的應用程式。此建立目錄的名字應盡量避免可能會因安裝 AutoCAD或其它第三方軟體而產生的衝突。

================================================
為變數取名應便於理解但不要太長

在為變數取名時,應力求簡潔且含義清晰。例如:ABC、QQX會被認為是無意義的,它不便於理解和記憶如cornerpoint1雖然很便於理解,但它太冗長,會多佔用記憶體。另外,變數名p1或pt1要比point1更為合適。

================================================

相簿設定
標籤設定
相簿狀態