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

基于Solidworks 二次開發的發動機活塞參數化設計

2019-09-11 03:01:54劉金鳳張現廣
汽車實用技術 2019年16期
關鍵詞:二次開發界面設計

劉金鳳,張現廣

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

前言

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

1 Solidworks 二次開發技術

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

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

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

Solidworks 本身自帶有宏錄制工具,通過宏錄制可以記錄下相關操作的宏代碼,然后刪除宏代碼中一些輔助操作的代碼(如縮放,視圖轉換等),即可使用。這種方法可以快速地獲取相關操作所用到的Solidworks API 對象中的方法或屬性,特別適合初學者。

Solidworks 二次開發產生的應用程序有兩種形式:AddIn插件形式以及獨立的EXE 程序形式。前者作為插件集成到Solidworks 中,后者獨立于Solidworks,跨進程調用Solid-works API。后者在運行時較為穩定,因此本課題開發獨立的EXE 程序形式。

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

2 發動機活塞的結構分析

圖1 活塞結構示意圖

發動機活塞的設計中的重要結構參數有:活塞高度、活塞外徑、火力岸高度、環岸高度、壓縮高度、裙部高度以及銷孔內徑等[4],如圖1 所示。此外,活塞外徑與其他結構參數尺寸之間應當滿足一定的比例關系[5],如表1 所示。

表1 活塞結構參數代號及其比例關系

表1 中的參數為參數化設計的變量,此外,為加強活塞頭部的設計細節,額外選取第一環岸高度c1 以及第二環岸高度c2 作為設計變量[6]。

3 活塞參數化設計系統的實現

3.1 人機交互界面的設計

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

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

圖2 活塞參數化設計系統人機交互界面

3.2 系統與Solidworks 的連接

由于參數化設計系統是獨立的應用程序,與Solidworks分屬兩個獨立的進程,因此需要實現系統對Solidworks 的跨進程調用。

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

當Solidworks已經處于打開狀態時,需要獲取Solidworks的進程,實現代碼為:

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

3.3 活塞模板的加載

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

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

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

3.4 尺寸約束的實現

為保證用戶輸入的數值符合表1 中的比例關系,可以對與活塞直徑參數有關聯的文本框內容進行控制,以活塞高度參數對應的文本框為具體實現方式如下:

if (textBox2.Text != "")//當文本框內容不為空時進行約束

{

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

{

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

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

}

}

3.5 模型參數的修改

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

下面以活塞高度的尺寸修改為例來說明具體實現代碼:

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

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

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

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

3.6 基于SQL Server 2008 的活塞參數庫

3.6.1 數據表的設計

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

表2 數據表字段及屬性

3.6.2 參數庫的讀取

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

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

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

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

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

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);//實例化SqlDataAdapter 對象。

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

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

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

3.6.3 參數庫參數的添加

用戶可以將自行輸入到文本框中的參數存儲到現有參數庫中,具體實現方式如下:

(1)首先查詢整個數據表,并將所查詢到的數據填充到一個DataSet 對象中,該過程的代碼與3.6.2 中的步驟(1)~(3)類似,不再贅述,唯一不同的是SQL 查詢語句變為:

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

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

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

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

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

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

(3)最后更新數據庫:

SqlCommandBuilder myscb = new SqlCommandBuilder(myda);

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

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

4 結語

在對汽車發動機活塞結構進行分析的基礎上,借助Solidworks 官方的二次開發API,在Visual Studio 2010 開發環境下利用C#語言開發了汽車發動機活塞的參數化設計系統,并依托SQL Server 2008 建立了活塞零件的參數庫。用戶可以根據設計需求自行輸入參數,或者調用參數庫中的參數快速建立活塞產品的三維模型,提升了設計效率。此外,用戶可以將符合設計需求的參數存儲到參數庫中,實現設計數據的有效管理。

猜你喜歡
二次開發界面設計
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
淺談基于Revit平臺的二次開發
甘肅科技(2020年20期)2020-04-13 00:30:02
淺談Mastercam后處理器的二次開發
模具制造(2019年3期)2019-06-06 02:11:02
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
西門子Easy Screen對倒棱機床界面二次開發
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
人機交互界面發展趨勢研究
手機界面中圖形符號的發展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
主站蜘蛛池模板: 久久福利网| 九九热精品免费视频| 亚洲精品无码专区在线观看| 国产成人高清精品免费软件 | 亚洲高清免费在线观看| 欧美笫一页| 国产欧美日韩专区发布| 亚洲男人的天堂久久香蕉网 | 国产免费a级片| 99尹人香蕉国产免费天天拍| 国产成人8x视频一区二区| 97国产在线观看| 青青草一区| 国产理论精品| 国产91无毒不卡在线观看| 18禁不卡免费网站| 国产欧美日韩91| 国产内射在线观看| 欧美日本激情| 天堂在线亚洲| 黄色网站在线观看无码| 久久国产拍爱| 国产第一页亚洲| 亚洲欧美一区二区三区蜜芽| 欧洲精品视频在线观看| 日韩国产黄色网站| 亚洲av成人无码网站在线观看| 日韩在线第三页| 91精品国产福利| 日韩免费视频播播| 亚洲色图综合在线| 亚洲精品成人片在线观看| 亚洲一区二区三区国产精品 | 真实国产乱子伦视频| 国产精品一区在线麻豆| 欧美第九页| 在线免费观看AV| 欧美激情首页| 国产又黄又硬又粗| 日韩精品亚洲一区中文字幕| 国产丝袜第一页| 精品成人免费自拍视频| 亚洲成aⅴ人片在线影院八| 热99re99首页精品亚洲五月天| 亚洲人精品亚洲人成在线| 欧美日韩理论| 青青青亚洲精品国产| 亚洲天堂久久新| 国产一级做美女做受视频| 久久青草免费91观看| 日韩一级毛一欧美一国产| 欧美在线国产| jizz国产视频| 日本a∨在线观看| 国产爽歪歪免费视频在线观看| 色屁屁一区二区三区视频国产| 精品久久久久无码| 人与鲁专区| 亚洲系列中文字幕一区二区| 免费国产不卡午夜福在线观看| 成人午夜福利视频| 日韩av无码DVD| 福利一区在线| 久久精品aⅴ无码中文字幕| 亚洲成在线观看| 亚洲中文字幕无码mv| 99re经典视频在线| 最新亚洲人成无码网站欣赏网| 国产女人在线| 欧美日韩高清在线| www.亚洲一区| 国产成人亚洲精品无码电影| 夜精品a一区二区三区| 67194成是人免费无码| 日本在线免费网站| 亚洲全网成人资源在线观看| 欧美在线综合视频| 欧美日韩国产一级| 国产内射在线观看| 国产内射一区亚洲| 国产亚洲欧美在线专区| 就去吻亚洲精品国产欧美|