?

基于AutoLISP語言智能生成工程圖紙表面粗糙度符號

2020-12-17 03:29張瀚升宋昕一
科教導刊·電子版 2020年18期

張瀚升 宋昕一

摘 要 利用 AutoCAD 軟件內部自帶的二次開發工具 Visual LISP 編寫此程序。該程序能夠自動判斷和計算用戶輸入的數據,智能生成二維工程圖紙中的表面粗糙度符號。將其按用戶需求顯示在圖紙當中。本程序使用簡單,能夠在一定程度上減輕繪圖工作者重復繪制表面粗糙度的工作負擔。

關鍵詞 Visual LISP 智能判斷 表面粗糙度符號 繪圖工具

中圖分類號:TP391文獻標識碼:A

0引言

AutoCAD是一款在國際上非常流行的計算機輔助設計軟件,可以用于二維圖紙繪制和三維立體建模。尤其是二維繪圖功能更是在機械行業發揮著重要作用。在一張完整的工程圖中有許多的設計要素,包括結構、尺寸、形位公差、表面粗糙度和注意事項等。而其中的表面粗糙度標注是一項簡單卻又具有重復性特點的工作,事實上用戶利用AutoCAD內部自帶的LISP語言進行二次開發,編寫可以自動繪制表面粗糙度符號的程序就可以解決這個問題。本文即是采用AutoLISP編程語言簡略說明如何實現此功能。

1項目背景

1.1 AutoLISP語言簡介

LISP是一種計算機的表處理語言,在人工智能學科領域廣泛應用。該語言作為嵌入在AutoCAD內部的具有智能特點的編程語言,是開發應用AutoCAD不可缺少的工具。AutoLISP將LISP和AutoCAD有機結合,可直接調用幾乎全部的AutoCAD命令。并且該語言對于編寫環境沒有特殊要求,只要是一般的文書的編輯軟件(如記事本、Word等)都能用,不需要二次編譯在其他CAD軟件也能很好地執行。

1.2表面粗糙度在工程圖中的重要性

零件表面粗糙度在機械加工中占有十分重要的地位,其好壞能夠直接影響與之形成配合關系后零件表面間的相互作用。若表面粗糙度差或達不到規定要求,一方面會影響零件間配合的實際效果,極易引起零件表面磨損,引起實際配合超差。另一方面會影響工作精度,降低精度靈敏性,降低零件間接觸剛度,引起振動。還可能影響零件強度及抗腐蝕性,導致零件對應力集中較敏感,使零件表面產生裂痕加劇腐蝕而導致損壞。因此,在工程圖中正確標注表面粗糙度有利于零件的加工生產,避免上述一系列問題的發生。

1.3自動繪制粗糙度符號程序的產生

該程序通過判斷和計算用戶輸入的數據自動繪制表面粗糙度符號,并根據用戶鼠標點擊位置顯示在二維工程圖中。在一定程度上解決繪圖人員重復工作的問題。

2程序介紹

2.1設置運行環境并初始化數值

(defun c:ccd()

(setq v1 (getvar "cmdecho"))(setq v2 (getvar "blipmode"))

(setq old (getvar "osmode"))(setvar "osmode" 0)

(setvar "cmdecho" 0)

2.2獲取用戶輸入數據

(setq p0 (getpoint" 點擊或輸入插入點: "))

(setq p01 (osnap p0 "nea")) ;捕捉最近的點

(setq h (getdist p0 "\n粗糙度數值字高<3.5>: "))

(if (not h)(setq h 3.5))

(setq h1 (* h 1.61658))

(if p01(progn ;捕捉最近點

(setq c (angle p01 p0))(setq p0 p01)(setq b (- c (* 0.5 pi))))

(progn ;未捕捉最近點

(setq b (getangle p0 "\n旋轉角度<0>: "))

(if (not b)(setq b 0.0))))

(setq a (+ b (/ pi 3)))(setq p1 (polar p0 a (* 2 h1)))(setq p2 (polar p0 a h1))

(setq a (+ b (/ pi 1.5)))(setq p3 (polar p0 a h1))(setq a (+ b (* 0.5 pi)))

(setq p4 (polar p0 a (* 1.4 h1)))(setq s (getstring "\n輸入表面粗糙度數值<6.3>: "))

2.3繪制表面粗糙度符號

(if (= 0 (strlen s))(setq s "6.3"))

(setq b (/ (* b 180) pi));判斷數字方向

(setq b (cond

((and (> b 90) (<= b 270)) (- b 180))((> b 270) (- b 360))

((= b -90) 90)(t b)))(setvar "blipmode" 0)

(if (= s "0")

(progn;標注未加工表面符號

(setq p4 (polar p0 a (* 0.933 h)))(command "line" p1 p0 p3 "")

(command "circle" p4 (* 0.466 h)))

(progn ; 標注加工表面符號

(command "line" p2 p3 p0 p1 "")

(if (> (strlen s) 3)

(setq p4 (polar p4 (+ a (* 0.5 pi)) (* 0.4 h))))

(command "text" "m" p4 h b s) ; m為中點定位

))

2.4恢復系統初始設置并退出

(setvar "cmdecho" v1)

(setvar "blipmode" v2)

(setvar "osmode" old)

(princ)

3結論

經實際檢驗,本程序可以成功運行并繪制出任何方向表面粗糙度符號,包括標注加工表面符號和標注未加工表面符號,在一定程度上方便和節省了用戶的繪圖時間。Visual LISP語言簡單易學,具有很好的應用前景。

參考文獻

[1] 付自力.表面粗糙度的重要性及正確獲得方法[J].職業,2007(17).

[2] 仲梁維等.計算機輔助設計教程[M].上海:復旦大學出版社,1997.

[3] 清宏計算機工作室.AutoCAD工程二次開發[M].北京:機械工業出版社,2000.

91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合