999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Solidworks 二次開發(fā)的發(fā)動機(jī)活塞參數(shù)化設(shè)計

2019-09-11 03:01:54劉金鳳張現(xiàn)廣
汽車實(shí)用技術(shù) 2019年16期
關(guān)鍵詞:二次開發(fā)界面設(shè)計

劉金鳳,張現(xiàn)廣

(1.長安大學(xué)汽車學(xué)院,陜西 西安 710064;2.上海海事大學(xué)物流工程學(xué)院,上海 201306)

前言

活塞是汽車發(fā)動機(jī)的重要組成部件,在工作過程中承受較高的機(jī)械負(fù)荷和熱負(fù)荷,因此其設(shè)計質(zhì)量的優(yōu)劣直接關(guān)系到發(fā)動機(jī)的工作可靠性,繼而影響汽車的工作性能。隨著計算機(jī)技術(shù)的不斷發(fā)展,如同大多數(shù)機(jī)械零件的設(shè)計一樣,汽車發(fā)動機(jī)活塞的設(shè)計過程中也廣泛應(yīng)用了CAD 技術(shù)。而在CAD 技術(shù)的實(shí)際應(yīng)用中,參數(shù)化設(shè)計技術(shù)是目前主流的發(fā)展方向之一。參數(shù)化設(shè)計技術(shù)大多通過對某款三維設(shè)計軟件(如Solidworks,Pro/E,CATIA,UG 等)進(jìn)行二次開發(fā),以實(shí)現(xiàn)在輸入基本參數(shù)的情況下自動建立零件的三維模型。這種方法解決了傳統(tǒng)設(shè)計方法在設(shè)計大量結(jié)構(gòu)相似而幾何參數(shù)不同的零件時重復(fù)工作量大的問題,提升了設(shè)計的工作效率。

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

Solidworks 通過OLE 和COM 技術(shù)提供了豐富的官方應(yīng)用程序接口(API)以方便用戶通過二次開發(fā)對其功能進(jìn)行定制。用戶編寫的程序通過API 可以訪問Solidworks 的各種功能。

Solidworks 中所有的操作都包含在Solidworks API 對象的屬性或者方法中。本課題的開發(fā)常用的為Sldworks 對象和ModelDoc2 對象。Sldworks 對象是最高層次的對象,Solid works 軟件中對文件的打開、關(guān)閉、保存等操作包含在此對象的屬性或者方法中,在編寫二次開發(fā)程序時,首先應(yīng)當(dāng)聲明的對象便是Sldworks;ModelDoc2 是Sldworks 對象的子對象,該對象的屬性以及方法包含了參數(shù)修改、目標(biāo)選取等操作。

支持OLE 和COM 技術(shù)的編程語言(VB/VB.net、C++、C#等)都可以用來進(jìn)行Solidworks 二次開發(fā)[1]。C#是目前較為流行的編程語言之一,相對簡單易學(xué)且功能強(qiáng)大,適合作為Solidworks 二次開發(fā)的編程語言[2]。

Solidworks 本身自帶有宏錄制工具,通過宏錄制可以記錄下相關(guān)操作的宏代碼,然后刪除宏代碼中一些輔助操作的代碼(如縮放,視圖轉(zhuǎn)換等),即可使用。這種方法可以快速地獲取相關(guān)操作所用到的Solidworks API 對象中的方法或?qū)傩裕貏e適合初學(xué)者。

Solidworks 二次開發(fā)產(chǎn)生的應(yīng)用程序有兩種形式:AddIn插件形式以及獨(dú)立的EXE 程序形式。前者作為插件集成到Solidworks 中,后者獨(dú)立于Solidworks,跨進(jìn)程調(diào)用Solid-works API。后者在運(yùn)行時較為穩(wěn)定,因此本課題開發(fā)獨(dú)立的EXE 程序形式。

基于Solidworks 二次開發(fā)的參數(shù)化設(shè)計方法有兩種:編程驅(qū)動法與尺寸驅(qū)動法[3]。前者是將整個零件模型的繪制過程用代碼描述,從無到有地生成模型。這種方法需要編程大量的代碼,且對計算機(jī)性能要求比較高;后者是預(yù)先定義一個零件模板,并將該模板的尺寸參數(shù)設(shè)定為變量,通過改變這些變量的賦值來快速地生成一系列結(jié)構(gòu)相似但尺寸不同的零件。這種方法代碼量少且執(zhí)行效率高,因此本課題選用尺寸驅(qū)動法。

2 發(fā)動機(jī)活塞的結(jié)構(gòu)分析

圖1 活塞結(jié)構(gòu)示意圖

發(fā)動機(jī)活塞的設(shè)計中的重要結(jié)構(gòu)參數(shù)有:活塞高度、活塞外徑、火力岸高度、環(huán)岸高度、壓縮高度、裙部高度以及銷孔內(nèi)徑等[4],如圖1 所示。此外,活塞外徑與其他結(jié)構(gòu)參數(shù)尺寸之間應(yīng)當(dāng)滿足一定的比例關(guān)系[5],如表1 所示。

表1 活塞結(jié)構(gòu)參數(shù)代號及其比例關(guān)系

表1 中的參數(shù)為參數(shù)化設(shè)計的變量,此外,為加強(qiáng)活塞頭部的設(shè)計細(xì)節(jié),額外選取第一環(huán)岸高度c1 以及第二環(huán)岸高度c2 作為設(shè)計變量[6]。

3 活塞參數(shù)化設(shè)計系統(tǒng)的實(shí)現(xiàn)

3.1 人機(jī)交互界面的設(shè)計

依據(jù)本課題的設(shè)計需求,用戶應(yīng)當(dāng)能夠通過活塞參數(shù)化設(shè)計系統(tǒng)的人機(jī)交互界面建立與Solidworks 軟件的連接、加載活塞的模型、輸入活塞的關(guān)鍵尺寸參數(shù)、對活塞參數(shù)庫進(jìn)行存取以及生成新的活塞模型等操作。

完成后的人機(jī)交互界面如圖2 所示。在進(jìn)行參數(shù)化設(shè)計之前,用戶先通過界面上側(cè)的菜單欄相關(guān)命令進(jìn)行打開Solidworks 軟件以及加載活塞的模型等準(zhǔn)備工作;完成準(zhǔn)備工作后,結(jié)合界面中部的活塞參數(shù)尺寸示意圖,在界面左側(cè)的文本框中輸入相關(guān)的參數(shù),或者通過下拉框選取活塞參數(shù)庫中的尺寸參數(shù),當(dāng)文本框填寫完成后,即可生成新的活塞模型,或者將輸入的參數(shù)存儲到活塞參數(shù)庫中。

圖2 活塞參數(shù)化設(shè)計系統(tǒng)人機(jī)交互界面

3.2 系統(tǒng)與Solidworks 的連接

由于參數(shù)化設(shè)計系統(tǒng)是獨(dú)立的應(yīng)用程序,與Solidworks分屬兩個獨(dú)立的進(jìn)程,因此需要實(shí)現(xiàn)系統(tǒng)對Solidworks 的跨進(jìn)程調(diào)用。

當(dāng)Solidworks 處于關(guān)閉狀態(tài)時,通過菜單欄的“打開Solidworks”選項即可完成Solidworks 的啟動。相關(guān)的實(shí)現(xiàn)代碼如下:SldWorks swApp = null;//聲明一個SldWorks 對象swApp = new SldWorks();//實(shí)例化SldWorks 對象swApp.Visible = true;// Solidworks 窗口可見

當(dāng)Solidworks已經(jīng)處于打開狀態(tài)時,需要獲取Solidworks的進(jìn)程,實(shí)現(xiàn)代碼為:

get_swProcess("",getProcesson("SldWorks"),"Sldworks.Application");//獲取solidworks 進(jìn)程get_swProcess 與get Processon 函數(shù)的詳細(xì)定義見參考文獻(xiàn)[7]。

3.3 活塞模板的加載

基于尺寸驅(qū)動的參數(shù)化設(shè)計方法需要加載預(yù)先設(shè)計好的活塞零件模板(為保證該模板的重用性,應(yīng)當(dāng)將模板的文件屬性設(shè)定為“只讀”。),相關(guān)的代碼如下:

string filepath = @"D:汽車實(shí)用技術(shù)活塞Piston. SLD-PRT"; // 活塞模板的保存文件路徑 int IntError = -1,IntWraning = -1;

swApp.OpenDoc6(filepath, 1, (int)swOpenDocOptions_e.swOpenDocOptions_LoadModel, "", IntError, IntWraning);//Sldworks 對象中的OpenDoc6 方法

3.4 尺寸約束的實(shí)現(xiàn)

為保證用戶輸入的數(shù)值符合表1 中的比例關(guān)系,可以對與活塞直徑參數(shù)有關(guān)聯(lián)的文本框內(nèi)容進(jìn)行控制,以活塞高度參數(shù)對應(yīng)的文本框為具體實(shí)現(xiàn)方式如下:

if (textBox2.Text != "")//當(dāng)文本框內(nèi)容不為空時進(jìn)行約束

{

if (0.6 * Convert.ToDouble(textBox1.Text) > Convert.ToDouble(textBox2.Text) || Convert.ToDouble(textBox1.Text) <Convert.ToDouble(textBox2.Text))//約束條件

{

MessageBox.Show("輸入的活塞高度值不符合比例關(guān)系!");//彈出提示

textBox2.Clear();//清空文本框

}

}

3.5 模型參數(shù)的修改

基于尺寸驅(qū)動的參數(shù)化設(shè)計方法最核心的內(nèi)容便是對活塞零件模板的尺寸參數(shù)進(jìn)行修改。ModelDoc2 對象包含了代表草圖尺寸參數(shù)的屬性,通過對這些屬性的修改即可完成對草圖尺寸參數(shù)的修改,繼而通過重建模型即可完成對零件模板的修改。

下面以活塞高度的尺寸修改為例來說明具體實(shí)現(xiàn)代碼:

double H = Convert.ToDouble(textBox2.Text);//將輸入值傳遞到變量H 中。

ModelDoc2 SwPartDoc = (ModelDoc2)swApp.ActiveDoc;//聲明一個ModelDoc2 對象。

SwPartDoc.Parameter("D3@草圖 1").SystemValue=H/1000.0;//修改參數(shù)。D3@草圖1 表示草圖1 中代號為D3 的尺寸參數(shù);參數(shù)的默認(rèn)單位為m,而設(shè)計時往往以mm 為單位,因此需要單位換算。

SwPartDoc.EditRebuild3();//重建模型。

3.6 基于SQL Server 2008 的活塞參數(shù)庫

3.6.1 數(shù)據(jù)表的設(shè)計

在名為" Piston "的數(shù)據(jù)庫中建立一個" PistonParameter "的數(shù)據(jù)表。數(shù)據(jù)表的第一個字段" ID "為活塞的型號,其余字段代表圖4 中的各個參數(shù)。由于字段值大小寫不敏感,因此參數(shù)h 和d 分別的字段分別為hh 和dd。數(shù)據(jù)表各字段的屬性如表2 所示。此外,SQL Server 2008 字段沒有double 類型,在這里可以用float 類型代替。

表2 數(shù)據(jù)表字段及屬性

3.6.2 參數(shù)庫的讀取

當(dāng)用戶通過界面中的下拉框選取活塞的型號時,該型號對應(yīng)的各個參數(shù)便會自動地填充到界面對應(yīng)的文本框中。

(1)首先,建立與數(shù)據(jù)庫" Piston "的連接[8]:

string constr = "Server=localhost;database= Piston; Integra-ted Security=True";//SQL 字符串語句;

SqlConnection con = new SqlConnection(constr);//建立連接。

(2)建立連接后,在" PistonParameter "數(shù)據(jù)表中查詢所選取型號對應(yīng)的參數(shù):

sql_str = "select D,H,H1,H2,hh1,c1,c2,dd from PistonPara-meter where ID ='" + comboBox1.SelectedValue.ToString() +"'";//SQL 查詢語句;

SqlDataAdapter myda = new SqlDataAdapter(sql_str, con);//實(shí)例化SqlDataAdapter 對象。

(3)然后將查詢到數(shù)據(jù)填充到一個DataSet 對象中:DataSet myds = new DataSet(); //實(shí)例化DataSet 對象;myda.Fill(myds, " PistonParameter ");//數(shù)據(jù)填充。

(4)最后,將DataSet 對象中的數(shù)據(jù)填充到文本框中,以參數(shù)活塞直徑" D "的填充為例,代碼為:

textBox1.Text = myds.Tables[0].Rows[0]["D"].ToString()。

3.6.3 參數(shù)庫參數(shù)的添加

用戶可以將自行輸入到文本框中的參數(shù)存儲到現(xiàn)有參數(shù)庫中,具體實(shí)現(xiàn)方式如下:

(1)首先查詢整個數(shù)據(jù)表,并將所查詢到的數(shù)據(jù)填充到一個DataSet 對象中,該過程的代碼與3.6.2 中的步驟(1)~(3)類似,不再贅述,唯一不同的是SQL 查詢語句變?yōu)椋?/p>

sql_str = "select ID,D,H,H1,H2,hh1,c1,c2,dd from Piston-Parameter";

(2)然后在DataSet 對象保存的數(shù)據(jù)表中新建一行,并寫入新的參數(shù):

DataRow mydr = myds.Tables[0].NewRow();//新建一行;

string str = Interaction.InputBox("型號需為純數(shù)字", "請輸入型號", "", -1, -1);//提示用戶輸入型號;

mydr["ID"] = int.Parse(str);//將輸入的型號存為"ID"字段;

mydr["D"] = textBox1.Text;// 將輸入的活塞直徑存為"D"字段。

(3)最后更新數(shù)據(jù)庫:

SqlCommandBuilder myscb = new SqlCommandBuilder(myda);

myds.Tables[0].Rows.Add(mydr);//把新建的一行加入到數(shù)據(jù)表中;

myda.Update(myds, " PistonParameter ");//更新數(shù)據(jù)庫中的數(shù)據(jù)表。

4 結(jié)語

在對汽車發(fā)動機(jī)活塞結(jié)構(gòu)進(jìn)行分析的基礎(chǔ)上,借助Solidworks 官方的二次開發(fā)API,在Visual Studio 2010 開發(fā)環(huán)境下利用C#語言開發(fā)了汽車發(fā)動機(jī)活塞的參數(shù)化設(shè)計系統(tǒng),并依托SQL Server 2008 建立了活塞零件的參數(shù)庫。用戶可以根據(jù)設(shè)計需求自行輸入?yún)?shù),或者調(diào)用參數(shù)庫中的參數(shù)快速建立活塞產(chǎn)品的三維模型,提升了設(shè)計效率。此外,用戶可以將符合設(shè)計需求的參數(shù)存儲到參數(shù)庫中,實(shí)現(xiàn)設(shè)計數(shù)據(jù)的有效管理。

猜你喜歡
二次開發(fā)界面設(shè)計
國企黨委前置研究的“四個界面”
淺談基于Revit平臺的二次開發(fā)
甘肅科技(2020年20期)2020-04-13 00:30:02
淺談Mastercam后處理器的二次開發(fā)
模具制造(2019年3期)2019-06-06 02:11:02
瞞天過海——仿生設(shè)計萌到家
基于FANUC PICTURE的虛擬軸坐標(biāo)顯示界面開發(fā)方法研究
西門子Easy Screen對倒棱機(jī)床界面二次開發(fā)
設(shè)計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設(shè)計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
人機(jī)交互界面發(fā)展趨勢研究
手機(jī)界面中圖形符號的發(fā)展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
主站蜘蛛池模板: 中文纯内无码H| 99r在线精品视频在线播放| 欧美高清视频一区二区三区| 一级爱做片免费观看久久| 欧美区一区| 中文字幕色在线| 香蕉久久永久视频| 中文字幕2区| 欧美激情综合| a级毛片视频免费观看| 91精品aⅴ无码中文字字幕蜜桃| 欧美黄色a| 亚洲精品777| 亚洲成a人片在线观看88| 一级黄色欧美| 国产亚洲欧美另类一区二区| 欧美午夜在线观看| 亚洲成人一区在线| 国产精品自在在线午夜区app| 自拍欧美亚洲| 麻豆国产在线不卡一区二区| 老司机精品久久| 国产青青操| 国产亚洲男人的天堂在线观看| 蜜芽一区二区国产精品| 宅男噜噜噜66国产在线观看| 久久久精品国产SM调教网站| 国产草草影院18成年视频| 久久国产黑丝袜视频| 国产女人在线观看| 色婷婷亚洲综合五月| 日韩毛片免费| 青青草国产免费国产| 亚洲天堂视频在线观看| 国产在线一区视频| 992Tv视频国产精品| 精品视频第一页| 国产97色在线| 女同国产精品一区二区| 精品综合久久久久久97超人该| 欧美性爱精品一区二区三区 | 天天爽免费视频| 18禁不卡免费网站| 99热这里只有成人精品国产| 又大又硬又爽免费视频| 久久久久久久久亚洲精品| 成人毛片免费观看| 国产精品亚洲一区二区三区z | 亚洲天天更新| 精品无码一区二区在线观看| 日韩视频免费| 国产精品思思热在线| 一本视频精品中文字幕| 日本a级免费| 欧美不卡视频在线观看| 91无码人妻精品一区二区蜜桃| 激情六月丁香婷婷四房播| 欧美日韩免费观看| 欧美日本在线观看| 一区二区无码在线视频| 欧美激情视频一区二区三区免费| 欧美日韩午夜| 色欲色欲久久综合网| 日韩精品欧美国产在线| 亚洲一区二区黄色| 亚洲日韩欧美在线观看| AV熟女乱| 亚洲成人动漫在线| 在线观看国产精品日本不卡网| 四虎永久免费地址| 亚洲国产天堂久久综合226114| 亚洲人成日本在线观看| 99精品久久精品| 国产成人亚洲精品无码电影| 97人人做人人爽香蕉精品| 日本一区二区三区精品国产| 99视频在线看| 在线免费亚洲无码视频| 日韩欧美国产成人| 91久久国产综合精品| 日韩无码视频播放| 在线播放精品一区二区啪视频|