黃代國(guó)
摘 ?要:為提高特殊模板刀具裝配圖的繪制效率,該文以SGM的特殊模板為案例,提出了效率提升的兩個(gè)可能方向并研究分析其可行性。之后利用AutoLISP語(yǔ)言進(jìn)行具體程序設(shè)計(jì),分別針對(duì)兩個(gè)提升方向提出了關(guān)鍵設(shè)計(jì)方案,最終完成了零件序號(hào)自動(dòng)標(biāo)注程序、尺寸標(biāo)注及信息自動(dòng)填寫程序。經(jīng)對(duì)比完成相同任務(wù)的所消耗的平均時(shí)間,證實(shí)了所設(shè)計(jì)的程序確實(shí)做到5倍效率的提升。
關(guān)鍵詞:AutoLISP ?刀具裝配圖 ?自動(dòng)編號(hào) ?讀寫塊屬性
中圖分類號(hào):TG659 ? 文獻(xiàn)標(biāo)識(shí)碼:A ? ? ? ? ? ? 文章編號(hào):1672-3791(2019)05(c)-0061-02
1 ?引言
1.1 概述
大型汽車制造公司都要求刀具供應(yīng)商在項(xiàng)目終驗(yàn)收前按該公司的特殊模板提供刀具裝配圖紙。這種刀具裝配圖的繪制是一項(xiàng)技術(shù)含量極低但工作量卻極大的任務(wù)。本文將以提升這類圖紙的繪圖效率為出發(fā)點(diǎn)探索出一種可行的方法。
1.2 特殊模板刀具裝配圖
刀具裝配圖的繪制工作主要有刀具零件圖插入、裝配,零件序號(hào)標(biāo)注,關(guān)鍵尺寸標(biāo)注及填寫,表格信息填寫。
特殊模板裝配圖也有相同的工作內(nèi)容。其特殊之處在于不同的格式要求。主要是針對(duì)零件序號(hào)標(biāo)注、尺寸標(biāo)注及填寫。
1.3 CAD開發(fā)語(yǔ)言AutoLISP
刀具裝配圖紙都是以CAD軟件來編輯的,就算是以其他軟件創(chuàng)建最終也會(huì)保存為CAD可以編輯的格式。
通過AutoLISP語(yǔ)言編寫LISP程序可以讓我們?cè)贑AD軟件上創(chuàng)造出任意想要的繪圖功能。
AutoLISP的強(qiáng)大之處在于:
不管你所要?jiǎng)?chuàng)造的功能看起來有多么復(fù)雜,只要它所有參數(shù)已知就可以編寫出LISP程序,讓計(jì)算機(jī)自動(dòng)執(zhí)行一系列操作瞬間完成繪制任務(wù)。
2 ?效率提升方向及可行性分析
要提升特殊模板刀具裝配圖的繪制效率,首先要找出耗時(shí)較多的步驟。
以SGM模板為例,耗時(shí)較多的是零件序號(hào)標(biāo)注,尺寸標(biāo)注及填寫。
2.1 零件序號(hào)標(biāo)注的分析
以SGM的刀具裝配圖為例,在常規(guī)的繪制中每標(biāo)注一個(gè)序號(hào)都需要5個(gè)操作命令,平均約17s可以完成一個(gè)序號(hào)的標(biāo)注。
理想的高效繪制是只用1個(gè)命令,點(diǎn)擊1次引線起點(diǎn),再點(diǎn)擊1次序號(hào)放置點(diǎn)就完成1次序號(hào)標(biāo)注。以此為目標(biāo)構(gòu)思出這個(gè)序號(hào)標(biāo)注命令的操作步驟:(1)選擇引線起點(diǎn);(2)選擇序號(hào)放置點(diǎn);(3)插入序號(hào)塊;(4)根據(jù)已有序號(hào)計(jì)算出應(yīng)標(biāo)注序號(hào);(5)更改塊屬性中的序號(hào)為相應(yīng)序號(hào);(6)以引線起點(diǎn)與序號(hào)放置點(diǎn)為端點(diǎn)繪制引線;(7)截除引線在圓圈內(nèi)的一段。
在以上步驟中,除了(1)、(b)兩個(gè)步驟需要人工來辨認(rèn)及選擇位置,其余步驟都是根據(jù)已有的參數(shù)來進(jìn)行相應(yīng)的操作,這種工作完全可以通過LISP程序來完成。
2.2 尺寸標(biāo)注及尺寸值填表分析
同樣以SGM裝配圖為例,在常規(guī)的繪制中每標(biāo)注一個(gè)尺寸都需要8個(gè)操作,加上尺寸值填寫,平均約60s可以完成一個(gè)。
理想的高效繪制是只用1個(gè)命令,點(diǎn)擊1次尺寸起點(diǎn)再點(diǎn)擊1次尺寸終點(diǎn)就完成1次標(biāo)注。以此為目標(biāo)構(gòu)思出這個(gè)尺寸標(biāo)注命令:(1)選擇尺寸起點(diǎn);(2)選擇尺寸終點(diǎn);(3)根據(jù)已有尺寸號(hào)計(jì)算出應(yīng)標(biāo)注尺寸號(hào);(4)用戶輸入該尺寸的公差值;(5)根據(jù)公稱尺寸值及公差值計(jì)算上下限尺寸;(6)獲取尺寸表的塊信息計(jì)算各尺寸應(yīng)填寫位置;(7)更新尺寸表。
在以上步驟中,除了(1)(2)兩個(gè)步驟需要人工選擇位置,(4)步驟需要人工輸入,其余步驟都是根據(jù)已有的參數(shù)來進(jìn)行相應(yīng)的操作,這種工作完全可以通過LISP程序來完成。
3 ?輔助繪圖功能設(shè)計(jì)
3.1 自動(dòng)編號(hào)的序號(hào)標(biāo)注功能設(shè)計(jì)
這部分的關(guān)鍵設(shè)計(jì)有:獲取插入塊的圖元名、序號(hào)的自動(dòng)增加、引線的截取。
(1)獲取插入塊的圖元名。
要更改插入塊的信息,首先需要獲取該插入塊的屬性。在插入塊后直接使用entlast函數(shù)來獲取該模塊的名稱,使用exploded來炸開模塊,再次使用entlast可以取得我們要更新序號(hào)的實(shí)際屬性塊。
(command "explode" (entlast))
(setq ent (entlast))
(2)序號(hào)的自動(dòng)增加。
因?yàn)槲覀円罅慵蛱?hào)自動(dòng)增加,所以可以使用一個(gè)全局變量K來存放零件序號(hào)并將其初始值定為1。
(if (= ordernumber nil) (setq ordernumber 1))
每次標(biāo)注完序號(hào)將該值加1,這樣下次標(biāo)注的時(shí)候就是新的已增加的序號(hào)了。
(setq ordernumber (1+ ordernumber))
(3)引線的繪制、截取。
我們繪制引線,用entmake語(yǔ)句在用戶選擇的引線起點(diǎn)和塊插入點(diǎn)之間繪制一條直線。再用break語(yǔ)句截去在D18圓圈范圍內(nèi)的線段。將以上關(guān)鍵設(shè)計(jì)測(cè)試通過,程序的其余部分就可以輕松完成。
3.2 特殊要求的尺寸標(biāo)注功能設(shè)計(jì)
這一部分的關(guān)鍵設(shè)計(jì)有:標(biāo)注內(nèi)容更改、尺寸號(hào)的遞增、尺寸表圖元獲取、尺寸值的獲取。
(1)標(biāo)注內(nèi)容更改。
我們使用entmake來標(biāo)注尺寸,因?yàn)樵谑褂眠@個(gè)函數(shù)的時(shí)候可以將尺寸線上的填寫內(nèi)容更改為strcat“X”H,這樣一來尺寸線上就不會(huì)顯示具體尺寸值而是顯示我們所需要的尺寸號(hào)。如“X”H,H是尺寸號(hào)需要遞增。
(cons 1 (strcat "\"X\"" (itoa diamNumber)))
(2)尺寸號(hào)的遞增。
與零件序號(hào)的遞增設(shè)計(jì)相同,我們使用一個(gè)全局變量H來存放尺寸號(hào),并將其初始值定為1,每次標(biāo)注完一個(gè)尺寸就將該值加1。
(setq diamNumber (+ diamNumber 1))
(3)尺寸表圖元的獲取。
尺寸表圖元的獲取是一個(gè)難點(diǎn)問題,因?yàn)閷?duì)同一個(gè)圖元來說,每一次打開圖紙都會(huì)有不同的圖元名。所以我們不能用固定的圖元名來獲取表格信息。
這個(gè)問題可以用宏命令來解決。我們知道,在同一個(gè)的模板圖框中尺寸表的位置是固定的。所以我們可以通過宏命令點(diǎn)擊固定坐標(biāo)點(diǎn)來取得表格塊,從而獲取該表格塊的所有信息,包括圖元名。
宏程序:
(setq en3 (car (entsel)))
192.4195,106.9134
_stopscript
LISP程序:
(if (= en4lstAttrs nil) (prong (setq vn0 (vlax-ename->vla-object en3))(setq lstVar (vla-getattributes vn0))(setq en4lstAttrs (vlax-safeArray->list (vlax-variant-value lstVar)))))
(4)尺寸值的獲取。
通過(entmake)繪制尺寸后,使用(entlast)獲取剛繪制的圖元信息。提取組碼為42的對(duì)表所代表的值,這個(gè)值就是公稱尺寸。
(if (= 42 (car item)) (setq dia (atof (rtos (cdr item) 2 3))))
再通過命令欄的交互獲取用戶輸入的公差信息,計(jì)算出上限尺寸及下限尺寸。然后根據(jù)尺寸號(hào)diamNumber,在尺寸表圖元信息中搜尋對(duì)應(yīng)的尺寸應(yīng)填寫位置,將該處的原始符號(hào)更改為我們需要填寫的具體尺寸。
(setq diaNu (itoa diamNumber))
(setq tagXA (strcat xz diaNU "A") tagXB (strcat xz diaNu "B")
tagXC (strcat xz diaNU "C"))
(foreach attr en4lstAttrs (setq TagString (vla-get-TagString attr)) (setText tagXA diaUper) (setText tagXB dia)(setText tagXC diaLow) )
將以上關(guān)鍵設(shè)計(jì)測(cè)試通過,并輔以相關(guān)的其他語(yǔ)句,完成了尺寸標(biāo)注及填寫程序。
4 ?實(shí)際效果與結(jié)論
4.1 實(shí)際效果
最終經(jīng)過實(shí)際使用測(cè)試,序號(hào)標(biāo)注程序運(yùn)行良好,實(shí)際達(dá)到了“一個(gè)命令,兩次點(diǎn)擊”完成零件序號(hào)標(biāo)注的任務(wù)。標(biāo)注一個(gè)零件序號(hào)平均耗時(shí)3s,相對(duì)耗時(shí)17s一個(gè)的傳統(tǒng)繪制方式,效率提升了5倍。
尺寸標(biāo)注填寫程序運(yùn)行良好,實(shí)際達(dá)到了“一個(gè)命令,兩次點(diǎn)擊”完成尺寸標(biāo)注及信息填寫的任務(wù)。標(biāo)注并填寫一個(gè)尺寸平均耗時(shí)11s,相對(duì)耗時(shí)60s一個(gè)的傳統(tǒng)繪制方式,效率提升了5倍。
4.2 結(jié)論
該文研究如何快速高效地繪制特殊模板裝配圖,通過切實(shí)可行的思路,實(shí)際完成了兩個(gè)具體的LISP程序,可以使繪圖效率提升5倍。其中的關(guān)鍵設(shè)計(jì),具有一定的普遍意義。
參考文獻(xiàn)
[1] 王宗文.AutoLISP & DCL語(yǔ)言在工程設(shè)計(jì)中的應(yīng)用[J].廣西交通科技,2001,26(2):43-45.
[2] 吳永進(jìn).AutoLISP&DCL基礎(chǔ)篇[M].北京:中國(guó)鐵道出版社,2003.
[3] Mcfarlane B, Mcelhinney CP.Using AutoLISP with AutoCAD[M].John Wiley&Sons,Inc,1998.