国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

大直徑三輥冷軋管機軋輥的參數(shù)化設(shè)計

2014-06-13 02:27賈其蘇雙遠華張志娜張志武太原科技大學(xué)太原030024
太原科技大學(xué)學(xué)報 2014年4期
關(guān)鍵詞:孔型草圖軋輥

賈其蘇,雙遠華,張志娜,張志武(太原科技大學(xué),太原 030024)

大直徑三輥冷軋管機主要用于生產(chǎn)外徑為140 mm~325 mm各種材料的精密無縫管及合金鋼管,其孔型參數(shù)繁多,模型復(fù)雜。軋輥上軋槽的設(shè)計是孔型設(shè)計的核心,軋槽的設(shè)計與鋼管質(zhì)量、軋機生產(chǎn)率、工具壽命以及金屬消耗等直接相關(guān)。針對不同的孔徑和材料,需要設(shè)計不同的軋輥來滿足加工需要。為了進行軋制模擬和最后的生產(chǎn)加工,迫切需求對軋輥零件進行參數(shù)化設(shè)計,以加速軋輥的設(shè)計過程。

Solidworks是一款業(yè)內(nèi)常用的三維設(shè)計軟件,參數(shù)化設(shè)計方法全面,功能強大。本文使用C#語言進行基于Solidworks二次開發(fā)技術(shù)的軋輥參數(shù)化設(shè)計,快速建立適應(yīng)不同孔徑和材料的軋輥三維模型,縮短了設(shè)計周期,提高了設(shè)計效率。

1 Solidworks二次開發(fā)技術(shù)

Solidworks提供了上百個API函數(shù),這些函數(shù)均為Solidworks的OLE(Object Linking and Embedding,對象鏈接與嵌入)或COM接口,幾乎涵蓋了軟件中的所有功能。進行二次開發(fā)時,程序員通過在自己的程序中調(diào)用需要的API函數(shù),實現(xiàn)參數(shù)化設(shè)計。

Solidworks主要有兩種參數(shù)化方法:尺寸驅(qū)動法和完全編程法。尺寸驅(qū)動法比較簡單,工程師在建立模型的過程中隨時對其關(guān)鍵尺寸進行標注,在程序中便可以調(diào)用函數(shù)對這些尺寸進行修改,達到參數(shù)化設(shè)計的目的。完全編程法相對復(fù)雜,需要工程師熟練掌握Solidworks軟件和一門編程語言,在程序中調(diào)用各種函數(shù),實現(xiàn)建模的全部操作,代碼量大。

由于大直徑三輥冷軋管機的軋輥的孔型是在每一度上分別計算其參數(shù),一共150組數(shù)據(jù),數(shù)據(jù)量大,設(shè)計復(fù)雜,故本文選用完全編程法,充分利用編程方法,簡化代碼,實現(xiàn)參數(shù)化設(shè)計。任何支持OLE技術(shù)的編程軟件,如VBA,VB.NET,C++和C#都可以對Solidworks進行二次開發(fā),本文使用作者較為熟悉的C#作為開發(fā)語言。

2 軋輥的參數(shù)化設(shè)計

在大直徑三輥冷軋管機的孔型設(shè)計軟件中,輸入管坯孔徑,成品管孔徑,材料參數(shù),以及其他需要的數(shù)據(jù),可以得到包含軋槽上每一個分度的圓弧參數(shù)的一組數(shù)據(jù),并可輸出得到包含所有參數(shù)的Excel表。本文提供了兩種方式來完成參數(shù)化建模過程,第一種方法在孔型設(shè)計軟件上增加二次開發(fā)的功能,依然作為獨立的軟件運行,在已有數(shù)據(jù)的基礎(chǔ)上調(diào)用一系列Solidworks API函數(shù)直接完成建模過程。第二種方法是建立Solidworks軟件的插件,附加在Solidworks軟件上的插件通過讀取孔型計算軟件輸出的Excel表格里的數(shù)據(jù)完成建模過程。兩種方法的核心相同,第一種方法方便快捷,操作簡單,第二種方法通過Excel文件進行數(shù)據(jù)的中轉(zhuǎn),可以有效保證孔型設(shè)計方法的私密性。

2.1 軋輥參數(shù)化設(shè)計的流程

筆者將軋輥的參數(shù)化設(shè)計過程分為兩部分,第一部分生成基本模型,如圖1所示,即為軋輥的主體結(jié)構(gòu),第二部分生成完整模型,即進行軋槽的生成,在相鄰兩個關(guān)鍵面上繪制草圖進行放樣切除,得到最終的軋輥模型,如圖2所示。

圖1 軋輥基本模型

圖2 軋輥完整模型

2.2 生成基本模型部分程序設(shè)計

基本模型部分的生成分為4步進行:(1)在空白文檔中插入基準軸;(2)繪制并拉伸草圖1;(3)繪制并拉伸草圖2;(4)繪制并旋轉(zhuǎn)切除草圖3;(5)為第二部分完整模型的生成插入150個基準點。部分關(guān)鍵操作的程序代碼如下:

1)插入基準軸。

boolstatus=Part.Extension.SelectByID2("上視基準面","PLANE",0,0,0,true,0,null,0);

boolstatus=Part.Extension.SelectByID2("右視基準面","PLANE",0,0,0,true,0,null,0);

boolstatus=Part.InsertAxis2(true);

//選擇2個基準面之后調(diào)用InsertAxis2函數(shù)實現(xiàn)插入基準軸的操作。

2)繪制并拉伸草圖1.

swSketchSegment=Part.SketchManager.CreateCircleByRadius(0,0,0,0.201);

//以圓心半徑方式畫圓。

swSketchSegment=Part.SketchManager.CreateLine(0,0.098,0,0.08,0.098,0);

//以始、終點方式畫直線。

Part.ClearSelection2(true);

//為了避免程序出錯,每一步操作完成后均調(diào)用ClearSelection2函數(shù)清空所選目標。

boolstatus=Part.Extension.SelectByID2("圓弧1","SKETC-

HSEGMENT",0,0,0,false,0,null,0);

boolstatus=Part.Extension.SelectByID2("直線3","SKETC-

HSEGMENT",0.25,0.01,0,false,0,null,0);

boolstatus=Part.SketchManager.SketchTrim(0,0.25,0.01,0);

//首先選擇被裁剪的圓弧,再選擇裁剪圓弧的直線,最后調(diào)用SketchTrim函數(shù)完成裁剪操作。

boolstatus=Part.Extension.SelectByID2("草圖1","SKETCH",0,0,0,false,0,null,0);

myFeature=Part.FeatureManager.FeatureExtrusion2(true,false,false,6,0,0.6,0.01,false,false,false,false,0.02,0.02,false,false,false,false,true,true,true,0,0,false);

//選擇需要被拉伸的草圖之后調(diào)用FeatureExtrusion2函數(shù)完成拉伸實體操作。

3)旋轉(zhuǎn)切除。

boolstatus=Part.Extension.SelectByID2("草圖3","SKETCH",0,0,0,true,1,null,0);

boolstatus=Part.Extension.SelectByID2("基準軸1","AXIS",0,0,0,true,4,null,0);

myFeature=((Feature)(Part.FeatureManager.FeatureRevolve2(true,true,false,true,false,false,0,0,6,0,false,false,0.01,0.01,0,0,0,true,true,true)));

//首先選擇旋轉(zhuǎn)切除的草圖,再選擇旋轉(zhuǎn)的基準軸,最后調(diào)用FeatureRevolve2函數(shù)完成旋轉(zhuǎn)切除操作。

4)繪制第二部分生成完整模型所需要的150個定位點。

for(double i = 15;i <= 165;i++)

{ double arc = i * Math.PI / 180.0;

double endx = 1 * Math.Cos(arc);

double endy = 1 * Math.Sin(arc);

skPoint = Part.SketchManager.CreatePoint(endx,endy,0);//以三點方式畫點。

Part.ClearSelection2(true); }

//用循環(huán)的方式插入150個點,作為第二部分生成完整模型的定位。

5)為使模型更清晰,需要隱藏部分草圖。

boolstatus = Part.Extension.SelectByID2("草圖4","SKETCH",0,0,0,false,0,null,0);

Part.BlankSketch();

//選擇待隱藏的草圖之后調(diào)用BlankSketch函數(shù)設(shè)置其屬性為隱藏。

2.3 生成完整模型部分程序設(shè)計

在軋輥基本模型生成完成之后,還需要對軋槽進行建模才能得到最終模型。該軋槽是以1°為分界,將整個軋槽進行150等分,建模時要重復(fù)進行150次放樣切除操作。為了提高編程效率,筆者首先編寫一段生成放樣切除所需草圖的方法,在循環(huán)中調(diào)用,最終得到完整的軋輥模型。

生成草圖的部分代碼如下:

private void insertSketch(int pointNum,double rollerData,double ccx,double ccy){…}

該方法有4個參數(shù),pointNum是該草圖對應(yīng)的基準點的編號,rollerData是草圖上的圓半徑,ccx和ccy是草圖上圓的圓心坐標。

放樣切除的部分代碼如下:

for(int i = 1;i <= 31;i++)

{ double rollerData1 = Convert.ToDouble(this.GridRoll.Rows[i-1].GetCellValue("Radious R"));

double pointRadius1 = 0.52+Convert.ToDouble(this.GridRoll.Rows[i-1].GetCellValue("e"))/ 1000;

insertSketch(i,rollerData1,pointRadius1,0);

double rollerData2 = Convert.ToDouble(this.GridRoll.Rows[i].GetCellValue("Radious R"));

double pointRadius2 = 0.52+Convert.ToDouble(this.GridRoll.Rows[i].GetCellValue("e"))/ 1000;

insertSketch(i+1,rollerData2,pointRadius2,0);

//分別讀取計算軟件得到的放樣切除所需的相鄰兩個軋槽半徑以及軋槽高度,通過調(diào)用insertSketch函數(shù)來繪制草圖。

Part.ClearSelection2(true);

boolstatus=Part.Extension.SelectByID2("草圖" + Convert.ToString(i * 2 + 3),"SKETCH",0,0,0,true,0,null,0);

boolstatus=Part.Extension.SelectByID2("草圖" + Convert.ToString(i * 2 + 4),"SKETCH",0,0,0,true,0,null,0);

Part.FeatureManager.InsertCutBlend(false,true,false,1,0,0,false,0,0,0,true,true);

//選擇相鄰兩個草圖,使用InsertCutBlend函數(shù)來進行放樣切除操作。

Part.ClearSelection2(true); }

Solidworks在執(zhí)行insertSketch函數(shù)時會因為草圖的方位影響圓的位置,故筆者將150段分為1-31,32-120,121-150這三部分分別繪制草圖,通過調(diào)整ccx和ccy參數(shù)的順序來控制圓的位置,得到位置正確的草圖。放樣切除操作如圖3所示,選擇相鄰的兩個草圖進行切除。

圖3 放樣切除

2.4 Solidworks插件的設(shè)計

進行Solidworks插件開發(fā)需要安裝SolidWorks API SDK開發(fā)包,安裝好后可以在Visual Studio中新建用于生成Solidworks插件的工程模板。

在新建的工程模板中,打開并修改SwAddin.cs文件,部分代碼如下:

string Title = "軋輥設(shè)計",ToolTip = "軋輥參數(shù)化設(shè)計";

//插件的標題

cmdIndex0 = cmdGroup.AddCommandItem2("軋輥設(shè)計",-1,"軋輥參數(shù)化設(shè)計","軋輥設(shè)計",0,"RollerDesign","",mainItemID1,menuToolbarOption);

cmdIndex1 = cmdGroup.AddCommandItem2("幫助信息",-1,"點擊打開幫助頁面","幫助信息",1,"HelpPage","",mainItemID3,menuToolbarOption);

//增加插件菜單的選項,AddCommandItem2函數(shù)有9個參數(shù),其中第6個參數(shù)CallbackFunction為反饋函數(shù),即為點擊該選項時調(diào)用的函數(shù)。通過編寫相應(yīng)的反饋函數(shù),便可以實現(xiàn)插件的各種功能。

軋輥設(shè)計選項的反饋函數(shù)如下:

public void RollerDesign()

{ RollerDesignFin RD = new RollerDesignFin();

RD.Show(); }

RollerDesignFin是插件的主窗口。窗口設(shè)計上為了操作的簡便僅有3個按鈕,分別為導(dǎo)入Excel表格,生成基本模型和生成完整模型,后2個按鈕的功能實現(xiàn)和前文相似。導(dǎo)入Excel表中的數(shù)據(jù)用到的是開源的NPOI項目,NPOI支持導(dǎo)入Excel,并能“理解”O(jiān)LE2文檔結(jié)構(gòu),使用起來比Office PIA的API更加方便,更人性化。部分代碼如下:

ExcelTools.OpenExcel(textBoxDataInput.Text);

//ExcelTools是針對NPOI編寫的類庫,OpenExcel方法打開指定路徑的Excel文件。

ExcelTools.OpenSheet(1);

//OpenSheet方法打開指定序號的工作表。

double rollerData = Convert.ToDouble(ExcelTools.GetValue(x,y));

//依次打開excel文件和工作表之后,可以調(diào)用GetValue方法讀取指定位置的單元格數(shù)據(jù)。

程序執(zhí)行編譯后在Solidworks的主菜單上增加了軋輥二次開發(fā)的選項,如圖4所示,點擊軋輥設(shè)計就會彈出如圖5所示的設(shè)計界面,從而進行軋輥的參數(shù)化設(shè)計。

3 結(jié)論

本文以Solidworks為開發(fā)平臺,在軋輥孔型設(shè)計軟件的基礎(chǔ)上用C#編寫了一套軋輥的參數(shù)化設(shè)計軟件,實現(xiàn)了軋輥的快速設(shè)計,有效減少設(shè)計人員的工作量,為后續(xù)的軋制過程有限元分析提供了基礎(chǔ),縮短產(chǎn)品的開發(fā)周期,同時對工業(yè)設(shè)計中零件的參數(shù)化設(shè)計提供經(jīng)驗。

圖4 Solidworks插件菜單

圖5 插件界面

參考文獻:

[1] 周汝望,仲梁維.基于Solidworks二次開發(fā)的橋式起重機主梁參數(shù)化設(shè)計[J].煤炭技術(shù),2008(12):12-14.

[2] 武絡(luò),雙遠華,于志強,等.CRTM-350冷軋管機孔型設(shè)計基本原理[J].機械工程與自動化,2013(5):112-114.

[3] 馬詠梅,丁行武,李鑫.SolidWorks二次開發(fā)在機械零件設(shè)計中的應(yīng)用與研究[J].機械傳動,2010(1):72-74,81.

[4] 劉春東,張東輝,陳龍,等.基于SolidWorks的成形銑刀參數(shù)化設(shè)計開發(fā)[J].煤礦機械,2012(4):246-248.

[5] 曹巖,方舟.SolidWorks開發(fā)篇[M].北京:化學(xué)工業(yè)出版社,2010.

[6] Solidworks公司.Solidworks API 二次開發(fā)[M].北京:機械工業(yè)出版社,2005.

[7] 賈其蘇,雙遠華,武絡(luò),等.大直徑三輥冷軋管機孔型設(shè)計及其軟件實現(xiàn)[J].礦山機械,2013,41(8):121-124.

猜你喜歡
孔型草圖軋輥
Φ18mm熱軋帶肋鋼筋三切分孔型優(yōu)化及裝備改進
SolidWorks二維草圖的繪制經(jīng)驗與技巧
孔型對彈簧圓鋼成型后表面裂紋的影響分析
鍛鋼冷軋輥磨削性能的試驗研究
含氮半高速鋼冷軋輥材料回火組織轉(zhuǎn)變研究
熱軋棒材孔型設(shè)計探究
鉬棒軋機的軋輥表面凹陷、斷裂分析與改進
不能承受的生命之輕
預(yù)防四切分K3掉肉孔型設(shè)計及操作簡析
畫好草圖,尋找球心