AUTOLISP程序設計技巧

tags:    時間:2014-03-06 13:53:04
AUTOLISP程序設計技巧簡介
   俗話說"熟能生巧",在長期從事AUTOLISP程序……
AUTOLISP程序設計技巧正文

   俗話說"熟能生巧",在長期從事AUTOLISP程序設計的實踐中,我總結出(當然也參考了其他朋友的經驗)了部分編程技巧,僅供大家參考!

1)載入程序之前應先判斷文件是否已經被載入

在調用用戶自己定義的函數之前,應先將包含該函數的文件調入內存(LOAD "文件").但如果每次調用前都載入該程序,則會浪費很多時間.因此判別文件是否已經調入內存,則是非常重要的,這種用法在菜單文件十分普遍

..

[RECTAN]( if (not rectan) (load "les2"));(rectan);

..

在文件內同樣可以實現同樣的檢測

2)抑制函數運行后返回nil

在一個Autolisp函數運行結束后,它常會在命令行上返回一個nil,令人遺憾。其實只要我們問在該函數的最後一行加上(PRINC)語句后,即可抑制nil的產生。

當然如果對需要一個結果的函數,則不可採用此法。

3)幾個自動執行函數

a)載入自動執行函數

定義

(defun s::startup()

...

)

一旦該函數在acad.lsp函數中定義,在autocad啟動時,就會自動載入該函數.

b)存檔自動執行函數

定義

(defun S::save()

....

)

該函數與(s::startup)相似,在存儲文件時將會被自動執行.例如:在保存文件時,對被保存文件生成備份文件等,就可能需要此功能文件

c)退出時自動執行文件

定義

(defun s::exit()

...

)

4)怎樣判斷兩個實數相等

對於計算出來的實數,即使真的相等,但對計算機來說,其往往不是絕對相等(如2.00 與2.000就不等).因此判斷其相等就需要採用差值方法

(equal expr1 expr2 [FUZZ])

其中任選項FUZZ指定表達式EXPR1 EXPR2 的最大允許差值.即如果實際差值小於FUZZ,則判斷結果為真,反之為假.

(if (equal a b 0.001)

(prompt "These numbers are equal")

(prompt "These numbers are not equal")

)

5)取系統的環境變數

對編製自己的系統來說,最好將自己的所有編製程序集中在自己獨立的目錄下,如\acad\lisp等.然後在將該目錄添加到ACAD環境中.

在自己編製的程序中,為了確保所要調用函數或文件在AUTOCAD的搜索路徑下,就需要判斷自己編製的程序目錄是否在ACAD環境內.此時就要用(getnev)函數

如(setq nev (getenv "acad"))

其將返回ACAD系統環境,如"C:\\ACAD\\SUPPORT;C:\\ACAD\\FONTS;C:\\ACAD\\LISP"

 

 

 

Bookmark the permalink ,來源:
One thought on “AUTOLISP程序設計技巧