AutoCAD自動生成孔系坐標表
- 文件介紹:
- 該文件為 doc 格式,下載需要 10 積分
- 自動生成孔系坐標表
一個很好的用在AUTOCAD上的二次開發軟件,自動在圖紙上形成孔系坐標表自動生成“孔系坐標表”
江蘇春蘭機械制造有限公司 趙大慶
一、問題的提出
在模具設計中時常與孔系打交道,如螺釘孔、水道孔、型銷孔、凹模圓孔等。在二維繪圖中,對于孔系的標注,大家的習慣不一,有的采用傳統的標注方式,孔少時還比較有效,孔多時就會有標注線條縱橫或極其臨近的情況,給工人識圖帶來麻煩,并且極易出錯。通過改進,有人采用了坐標標注,將基準設為UCS原點后,直接在孔的圓心處的X、Y方向各引出一條短線分別注上圓心的X坐標值,Y坐標值,這種方法對工人的識圖有了一定幫助,但不夠清爽,特別是孔間距較密,孔大小相差不大易混淆時,又可能造成工人辨別錯誤。
隨著模具制造業的不斷發展,孔加工靠傳統手工劃線,然后鉆、鉸、鏜成型的低速低精度加工方法逐漸被自動化加工設備所代替。在當前模具業比較領先的日本等國家,一般采用數控機床進行加工。這要求孔系的坐標最好能以表格形式給出,這樣操作工將孔系坐標的數據輸進機床控制系統,即可自動進行加工成形。由于減少了工人識圖的時間,并充分利用機器的自動化,孔系的加工效率可以比以前提高10倍以上,并最終大幅度減少了模具加工成本。這在我廠生產的南京春蘭汽車的沖模中得到了充分體現。
手工填寫坐標表是一項繁重乏味的工作,大大增加了設計人員的工作量,并且設計人員對每個孔的坐標都要保證其正確性,增加了設計難度,因而造成加工車間要求采用孔系坐標表,而設計人員感到苦不堪言。如何將設計人員從繁重手工勞動下解放出來?這就成了我們的研究課題。我們利用AutoCAD R14版中的Automation接口,借助VB,編制了下述自動生成“孔系坐標表”的程序。
二、程序主體
下面講述程序的思路,希望能給大家拋磚引玉,對于Automation的知識,請查閱有關書籍或AutoCAD R14的幫助。
1.初始化應用環境
初始化的過程是保證AutoCAD R14已打開,并對才AutoCAD R14創建引用的過程。
1)首先要判斷當前AutoCAD R14是否已打開。
如未打開,則啟動AutoCAD R14
2)創建引用。
如已打開,則將對AutoCAD程序的引用交給變量Acadapp(注:AutoCAD不允許對其進行直接操作,只能通過引用或替代來進行操作)。
Public acadApp as Object
‘聲明對象變量acadApp
Set acadApp=GetObject(,”autocad.application”)
’將對AutoCAD的引用權交給acadApp
If Err Then
Err.Clear
Set acadApp=CreateObject(autocad.application)
‘如果當前AutoCAD R14未打開,將引發錯誤。
‘錯誤的處理辦法是打開一個新的AutoCAD R14
‘并將其引用權交給acadApp變量。
If Err Then
MsgBox Err.Description
Exit Sub
End If
End If
‘如果上述處理無法解決問題,可能是機器中未
‘裝AutoCAD R14,這時給出錯誤代碼,并退出程序。
2. 與用戶交互,獲取必要的創建信息
1)圖形坐標原點的位置(即基準角的位置)
2)孔系坐標表的創建模式:自動或手動?
自動模式:僅需選中孔系中的任一孔,則程序將自動將
同孔系的孔搜尋出來。
手動模式:適于有選擇地創建孔系坐標。手動選取一組圓,
程序將選中的圓與第一個選中的圓作比較,并
自動剔除不同的圓。
一般自動模式就可滿足實際的需要。
3)孔系是通孔、螺孔還是銷孔、沉孔?
程序根據此信息創建孔系坐標表的標題。
4)該孔系圓心的前綴
為了區別于其他的孔系,孔系圓心處都要注出一個簡短的標識。該標識由前綴和該圓心在該孔系中的序號組成,如 X-1,C-12等,其前綴分別為X,C。
5)指出孔系坐標表要放置的位置(即表的左上角的位置)
Prompt1$=vbCrLf+”請指定坐標原點:”
Prompt2$=vbCrLf+”孔系坐標表的創建模式:Auto/Manual:”
Prompt3$=vbCrLf+”孔系類型:1. 通孔 2.螺孔 3. 銷孔4.沉孔<1>:”
Prompt4$=vbCrLf+”請指定孔系圓心的前綴:”
Prompt5$=vbCrLf+”請指定孔系坐標表左上角的放置位置:”
‘將提示賦給變量
Public acadDoc as Object
Public UtilObj as Object
Set acadDoc=acadApp.ActiveDocument
‘將對當前圖形的引用權交給變量acadDoc
Set UtilObj=acadDoc.Utility
‘將當前圖形的Utility屬性賦給變量UtilObj,用
‘于交互輸入
‘1. 獲取坐標原點
Dim orgPnt
OrgPnt=UtilObj.GetPoint(,Prompt1)
‘2. 獲取創建模式...