• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    AutoCAD.NET開發(fā)在軸承自動化設(shè)計中的應(yīng)用

    2012-07-21 09:26:50鄒波周海軍劉小輝
    軸承 2012年11期
    關(guān)鍵詞:句柄滾子二次開發(fā)

    鄒波,周海軍,劉小輝

    (1.成都重型軸承研究所,成都 610031;2.成都科華重型軸承有限公司,成都 610300)

    利用AutoCAD開發(fā)設(shè)計軸承經(jīng)常需要大量的數(shù)據(jù)修改和計算,傳統(tǒng)的CAD二次開發(fā)技術(shù)有AutoLISP和 ObjectARX,其中,AutoLISP為CAD內(nèi)嵌系統(tǒng),缺乏足夠的靈活性和用戶接口;ObjectARX較為靈活,但對編程技術(shù)要求較高。.NET框架是為32位及64位操作系統(tǒng)而設(shè)計,與傳統(tǒng)編程語言(如C++)相比,具有更低的學(xué)習(xí)要求來訪問高級接口,同時有更多的編程環(huán)境可以訪問CAD圖形。采用AutoCAD提供的二次開發(fā)接口,. NET API可以進行圖形的繪制、標(biāo)注更改以及復(fù)雜的計算應(yīng)用。而且為實現(xiàn)公差自動分級和相關(guān)參數(shù)的計算,系統(tǒng)增加了讀取現(xiàn)有Access數(shù)據(jù)庫的功能,可以根據(jù)軸承的尺寸和精度,自動選擇相關(guān)公差和參數(shù),計算出外圈滾道尺寸等數(shù)據(jù)并進行標(biāo)注,從而形成完整的設(shè)計圖。

    1 系統(tǒng)基本原理

    .NET API 為AutoCAD最新的開發(fā)接口,采用面向?qū)ο缶幊碳夹g(shù)。用戶可通過編程的方法利用程序集或開放庫操作AutoCAD 和圖形文件。通過開放的對象,可被許多不同的編程語言和環(huán)境訪問。訪問對象為 AutoCAD .NET API 的主要構(gòu)造塊,其中每一個對象都精確地代表了 AutoCAD圖形中的一部分,它們之間又組成了不同的程序集和命名空間。AutoCAD .NET API 有許多不同類型的對象,如:

    (1)直線、圓弧、文字和標(biāo)注等圖形對象;

    (2)線型與標(biāo)注樣式等樣式設(shè)置;

    (3)圖層、編組和塊等組織結(jié)構(gòu);

    (4)視圖與視口等圖形顯示;

    (5)圖形、AutoCAD 應(yīng)用程序本身。

    本系統(tǒng)的主要實現(xiàn)方式,就是通過.NET API對AutoCAD的各種對象進行操作,實現(xiàn)計算、分類選擇、自動繪制圖形等功能。

    程序設(shè)計流程如圖1所示。首先,打開現(xiàn)有模版文件,讀取并捕捉對象的ObjectID以實現(xiàn)操作;通過Form獲取用戶要求,如內(nèi)、外徑,高度,精度等參數(shù);查詢數(shù)據(jù)庫并獲得相應(yīng)等級的公差值和各種系數(shù);計算出各種尺寸,并修改和調(diào)整相應(yīng)的對象內(nèi)容實現(xiàn)自動標(biāo)注和相關(guān)的圖形繪制;最后通過用戶確認(rèn),保存設(shè)計完成的圖紙。

    圖1 程序流程圖

    2 程序設(shè)計過程及自動化設(shè)計效果

    以調(diào)心滾子自動化設(shè)計為例,本系統(tǒng)(其他類型軸承與本系統(tǒng)相同)采用.NET C#方式編程,可以分為幾個功能模塊,分別為文件操作、對象捕捉和編輯、數(shù)據(jù)庫ODBC操作和用戶界面模塊。

    2.1 文件操作模塊

    通過實例化Application.DocumentManager來獲取模版文件的句柄。再通過相關(guān)函數(shù)讀取和存儲。其間通過一個自建的Form來獲取模版文件路徑。部分代碼如下:

    DocumentCollection acDocMgr = Application.DocumentManager;//創(chuàng)建實例

    ChoseMoBan1 f = new ChoseMoBan1();//一個新窗體

    Autodesk.AutoCAD.ApplicationServices.Application.ShowModalDialog(f);

    //以AutoCAD的方式打開,而非winForm形式

    strFileName = PathTempOpen;//獲取文件路徑

    if (File.Exists(strFileName))

    {

    DFiles1 =acDocMgr.Open(strFileName, false);//打開相關(guān)文件

    }

    else

    {

    acDocMgr.MdiActiveDocument.Editor.WriteMessage("File " + strFileName+" does not exist.");//若不存在,返回錯誤

    }

    2.2 對象捕捉和編輯

    在打開后的文件中,如何獲取需要修改對象的句柄是關(guān)鍵,目前常用的2種方法為:每個對象自帶的圖元句柄和ObjectID。文中采用ObjectID,但ObjectID會隨著文件關(guān)閉而釋放,并在打開時重建。為了能夠準(zhǔn)確獲得文件打開時的對象,針對文中的標(biāo)注,采用了對象包含的Text進行判別。

    Document DF = Application.DocumentManager.MdiActiveDocument;//獲取當(dāng)前活動文檔

    ObjectId[] Id1 = new ObjectId[1];

    // 創(chuàng)建一個TypedValue 數(shù)組,用于定義過濾條件

    TypedValue[] acTypValAr = new TypedValue[2];

    acTypValAr.SetValue(new TypedValue((int)DxfCode.Text, Dimetext1), 0);

    acTypValAr.SetValue(new TypedValue((int)DxfCode.LayerName, "7標(biāo)注層"), 1);

    // 賦值過濾條件給SelectionFilter 對象

    SelectionFilter acSelFtr = new SelectionFilter(acTypValAr);

    Id1 = acSSet.GetObjectIds();//獲得對象后返回

    獲得對象后,可對其進行編輯。編輯過程首先要打開當(dāng)前模型空間記錄,并通過事務(wù)對其中相應(yīng)的對象進行設(shè)置。圖形編輯和標(biāo)注編輯類似。

    //修改對象內(nèi)容

    Document acDoc = Application.DocumentManager.MdiActiveDocument;//獲得活動文檔

    Database acCurDb = acDoc.Database;//打開Database對象

    // 啟動一個事務(wù)

    using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())

    {

    BlockTable acBlkTbl;

    acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId,OpenMode.ForRead) as BlockTable;

    // 以寫方式打開模型空間塊表記錄

    BlockTableRecord acBlkTblRec;

    acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;

    RotatedDimension Dim_OB7_WD = (RotatedDimension)OB7_WD.GetObject(OpenMode.ForWrite);

    //獲得標(biāo)注句柄

    Dim_OB7_WD.DimensionText = "{H1x;" + PX_WD + "}{H0.5x;S +" +(-D_D_GCD / 1000).ToString() + " ^ 0 ;}";//修改標(biāo)注內(nèi)容

    MText Dim_OB7_Ke = (MText)OB7_Ke.GetObject(OpenMode.ForWrite);//獲得文本句柄

    Dim_OB7_Ke.Contents = "W0.8;Ke " + (D_Ke/1000).ToString();//修改文本內(nèi)容

    }//提交事務(wù),完成修改的內(nèi)容

    2.3 數(shù)據(jù)庫ODBC操作

    通過系統(tǒng)DSN打開數(shù)據(jù)源,并對其中的記錄進行讀取和操作。

    OdbcConnection odbcconn = new OdbcConnection("DSN=ODBCBearing");//定義ODBC數(shù)據(jù)源

    odbcconn.Open();

    OdbcCommand DbCommand = odbcconn.CreateCommand();

    DbCommand.CommandText = "SELECT * FROM WQ ";

    OdbcDataReader DbReader = DbCommand.ExecuteReader();//創(chuàng)建并允許SQL

    對數(shù)據(jù)的篩選可通過SQL語句完成,這里不再贅述。

    2.4 用戶界面

    先增加AutoCAD的菜單,通過ExtensionApplication使其自動加載。此處相關(guān)代碼省略。

    2.5 調(diào)心滾子軸承自動化設(shè)計結(jié)果

    以23232CAC/W33帶油孔的調(diào)心滾子軸承自動化設(shè)計為例,原始模版和經(jīng)過程序計算與調(diào)整后輸出的設(shè)計圖如圖2所示。

    圖2 調(diào)心滾子軸承的自動化設(shè)計圖

    3 結(jié)束語

    AutoCAD .NET API極大地擴展了CAD的用途,其簡便的開發(fā)方式、強大的功能為實現(xiàn)自動化設(shè)計提供了一個有效的方法。文中討論的幾個操作模塊,包含了當(dāng)前CAD二次開發(fā)的大部分內(nèi)容和通用的接口程序,可廣泛用于AutoCAD.NET C#程序開發(fā)中。

    猜你喜歡
    句柄滾子二次開發(fā)
    圓錐滾子軸承半凸?jié)L子的優(yōu)化研究
    哈爾濱軸承(2021年1期)2021-07-21 05:43:10
    仿真模擬在多聯(lián)推力滾子軸承研發(fā)中的應(yīng)用
    哈爾濱軸承(2021年4期)2021-03-08 01:00:52
    淺談基于Revit平臺的二次開發(fā)
    甘肅科技(2020年20期)2020-04-13 00:30:02
    淺談Mastercam后處理器的二次開發(fā)
    模具制造(2019年3期)2019-06-06 02:11:02
    滿滾子徑向自鎖軸承的優(yōu)化設(shè)計
    軸承(2018年10期)2018-07-25 07:22:22
    西門子Easy Screen對倒棱機床界面二次開發(fā)
    高校圖書館持久標(biāo)識符應(yīng)用研究
    編譯程序語法分析句柄問題分析與探討
    雙列球面滾子軸承力學(xué)分析及滾子受載計算方法
    MFC應(yīng)用程序多線程混合顯示界面方法研究
    龙口市| 家居| 梓潼县| 加查县| 翁牛特旗| 原阳县| 沾益县| 科技| 林甸县| 英山县| 河源市| 海晏县| 兴义市| 红河县| 子洲县| 宜君县| 山丹县| 武定县| 玉溪市| 上犹县| 永康市| 靖西县| 揭东县| 临澧县| 扬州市| 莆田市| 伊春市| 九寨沟县| 湘潭市| 溧阳市| 成安县| 西贡区| 剑阁县| 汝州市| 涿州市| 凤庆县| 福鼎市| 河东区| 文山县| 科尔| 当阳市|