陳光霞
(江漢大學(xué)智能制造學(xué)院,湖北 武漢 430056)
在設(shè)計、制造、裝配機械零部件的過程中,工藝尺寸鏈的計算是不可或缺的,在新產(chǎn)品的研發(fā)過程中,其作用更為重要[1]。零件圖中所標注的尺寸公差是零件加工最終所需要達到的要求,即設(shè)計要求,而工藝過程中的許多中間工序的尺寸公差,是在機械加工工藝規(guī)程設(shè)計中通過計算工藝尺寸鏈才能確定的[2]。傳統(tǒng)工藝尺寸鏈的計算是由設(shè)計人員確定工藝尺寸鏈以及尺寸鏈中的各組成環(huán)的類別,再利用相差計算公式計算各組成環(huán)的基本尺寸及公差,此方法效率比較低且容易產(chǎn)生差錯,導(dǎo)致設(shè)計錯誤。
AutoCAD軟件是二維設(shè)計圖繪制的常用軟件,其功能強大,使用方便,是目前機械設(shè)計中常用的計算機輔助軟件,它提供了強大的二次開發(fā)功能,如AutoLisp、ObjectARX、VBA以及C#都可對AutoCAD進行二次開發(fā),其中C#是利用.NET環(huán)境進行二次開發(fā)的方式之一,其開發(fā)周期短、開發(fā)便捷[3],是目前較為常用的開發(fā)方式之一。
本文利用C#語言及.NET Framework組件開發(fā)了一個可以在AutoCAD環(huán)境下繪制被加工零件簡圖,并在其上標注工藝尺寸,形成工藝尺寸鏈,用戶只需要選擇其中的一個尺寸作為封閉環(huán),即可自動對圖中尺寸進行遍歷,自動搜索尺寸,查找工藝尺寸鏈,最后計算出未知尺寸的基本尺寸及其公差。
程序?qū)崿F(xiàn)功能的基本思路如下:
利用AutoCAD軟件繪制加工零件簡圖,并標注相應(yīng)的工藝尺寸,待求尺寸鏈中的環(huán)為A,如圖1所示。其實現(xiàn)思路流程如圖2所示。
圖1 零件簡圖
圖2 功能實現(xiàn)流程圖
在AutoCAD中尺寸數(shù)據(jù)是存儲在其圖形數(shù)據(jù)庫(Database)中,要完成尺寸鏈的計算必須首先獲取圖中所標注尺寸的數(shù)據(jù)。讀取尺寸數(shù)據(jù)的步驟如下:
(1)獲取當前圖形文檔。
Document doc=Application.DocumentManager.MdiActiveDocument
(2)獲取當前工作圖形數(shù)據(jù)庫。
Database acCurDb=HostApplicationServices.WorkingDatabase
(3)建立當前圖形數(shù)據(jù)庫事務(wù)。
Transaction acTrans=acCurDb.TransactionManager.StartTransaction()
以只讀方式打開當前圖形數(shù)據(jù)塊表記錄
遍歷塊表記錄,當實體為尺寸實體時,讀取其數(shù)據(jù)存入尺寸數(shù)據(jù)數(shù)組中。
為了存儲尺寸數(shù)據(jù)建立如下所示的尺寸數(shù)據(jù)結(jié)構(gòu):
public struct Dimdata
{
public string DimType;//尺寸類型
public string LoopType { get;set;}//環(huán)類型
public Point3d StartPt;//第一尺寸界線起點坐標
public Point3d EndPt;//第二尺寸界線起點坐標
public double DimVal { get;set;}//基本尺寸
public double DimTpval { get;set;}//尺寸上偏差
public double DimTmval { get;set;}//尺寸下偏差
public Point3d CenterPt;//徑向尺寸圓心坐標
public ObjectId DimObjid;//尺寸實體的ID
public bool Flag;//使用標志
}。
并建立結(jié)構(gòu)數(shù)組來保存尺寸相關(guān)數(shù)據(jù)。
本文以水平尺寸鏈為例,如圖3所示:首先判斷封閉環(huán)2個尺寸界線起點的X坐標的大小,將X坐標小的作為第二尺寸界線起點(如A0為封閉環(huán),左邊為第二尺寸界線起點);然后搜索尺寸鏈的其它尺寸,若某個尺寸的尺寸界線起點的X坐標等于封閉環(huán)第二尺寸界線起點的X坐標(如圖3所示A2的左邊起點),則此尺寸為尺寸鏈的下一環(huán),并將此尺寸界線起點作為A2的第一尺寸界線起點,另一個尺寸界線的起點作為第二尺寸界線的起點;第三步再判斷A2的2個尺寸界線起點的X坐標大小,當?shù)诙叽缃缇€起點的X坐標大于第一尺寸界線起點的X坐標,則此尺寸為增環(huán),反之為減環(huán)(A2為增環(huán));再以A2的第二尺寸界線起點的X坐標去搜索,當下一個尺寸的2個尺寸界線起點中有一個點的X坐標與A2的第二尺寸界線起點相等,則為尺寸鏈的下一環(huán),如圖3的A1,同樣的方法,再判斷A1兩個尺寸界線起點X坐標的大小關(guān)系,從而判斷其增減性。
圖3 尺寸鏈增減環(huán)判斷
如果尺寸鏈為垂直尺寸鏈,則以尺寸的尺寸界線起點坐標的Y坐標作為判斷依據(jù)。如果是平面尺寸鏈,則以尺寸界線起點的X、Y坐標作為判斷依據(jù)。
在工藝尺寸鏈的計算過程中,對直徑尺寸的處理方法是基本尺寸取一半,公差也取一半作為尺寸鏈中的一個環(huán)。如圖4中的19.8及20兩個尺寸。本文以水平尺寸鏈為例說明其處理方法。
圖4 直徑尺寸的處理
當尺寸實體的類型為“AcDbDiametricDimension”或為“AcDbRotatedDimension”但其替代文本中含有“%%C”字符串時,都是直徑尺寸,如果是“AcDbDiametricDimension”類型,則將尺寸線變換為水平后,求出2個尺寸界線的起點坐標,存入數(shù)組中。當一個直徑的2個尺寸界線起點中有一個與現(xiàn)有尺寸中的尺寸界線起點坐標相同,如尺寸Φ40的左尺寸界線起點與43.6的左尺寸界線起點相同,則它的另一個尺寸界線起點用圓心坐標替代,基本尺寸及上下偏差均取半。
圖1所示的工藝尺寸鏈計算結(jié)果如圖5所示。
圖5 工藝尺寸鏈計算結(jié)果圖
利用C#進行工藝尺寸鏈的自動計算,開發(fā)方法簡單,可以有效地減輕計算工作量和避免計算錯誤,有利用于提高工藝規(guī)程設(shè)計的工作效率。