亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2019-09-11 03:01:54劉金鳳張現(xiàn)廣
        汽車實(shí)用技術(shù) 2019年16期
        關(guān)鍵詞:文本框數(shù)據(jù)表二次開發(fā)

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

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

        前言

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

        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ā)程序時(shí),首先應(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ū)傩?,特別適合初學(xué)者。

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

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

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

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

        發(fā)動(dòng)機(jī)活塞的設(shè)計(jì)中的重要結(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è)計(jì)的變量,此外,為加強(qiáng)活塞頭部的設(shè)計(jì)細(xì)節(jié),額外選取第一環(huán)岸高度c1 以及第二環(huán)岸高度c2 作為設(shè)計(jì)變量[6]。

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

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

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

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

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

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

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

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

        當(dāng)Solidworks已經(jīng)處于打開狀態(tài)時(shí),需要獲取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ū)動(dòng)的參數(shù)化設(shè)計(jì)方法需要加載預(yù)先設(shè)計(jì)好的活塞零件模板(為保證該模板的重用性,應(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)的文本框?yàn)榫唧w實(shí)現(xiàn)方式如下:

        if (textBox2.Text != "")//當(dāng)文本框內(nèi)容不為空時(shí)進(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ū)動(dòng)的參數(shù)化設(shè)計(jì)方法最核心的內(nèi)容便是對活塞零件模板的尺寸參數(shù)進(jìn)行修改。ModelDoc2 對象包含了代表草圖尺寸參數(shù)的屬性,通過對這些屬性的修改即可完成對草圖尺寸參數(shù)的修改,繼而通過重建模型即可完成對零件模板的修改。

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

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

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

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

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

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

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

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

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

        3.6.2 參數(shù)庫的讀取

        當(dāng)用戶通過界面中的下拉框選取活塞的型號時(shí),該型號對應(yīng)的各個(gè)參數(shù)便會(huì)自動(dòng)地填充到界面對應(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ù)填充到一個(gè)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ù)存儲(chǔ)到現(xiàn)有參數(shù)庫中,具體實(shí)現(xiàn)方式如下:

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

        猜你喜歡
        文本框數(shù)據(jù)表二次開發(fā)
        巧用文本框?qū)崿F(xiàn)PPT多圖片排版
        湖北省新冠肺炎疫情數(shù)據(jù)表
        黨員生活(2020年2期)2020-04-17 09:56:30
        淺談基于Revit平臺的二次開發(fā)
        甘肅科技(2020年20期)2020-04-13 00:30:02
        PPT文本框的另類應(yīng)用
        淺談Mastercam后處理器的二次開發(fā)
        模具制造(2019年3期)2019-06-06 02:11:02
        基于列控工程數(shù)據(jù)表建立線路拓?fù)潢P(guān)系的研究
        西門子Easy Screen對倒棱機(jī)床界面二次開發(fā)
        文本框酷變3D效果
        圖表
        基于VSL的動(dòng)態(tài)數(shù)據(jù)表應(yīng)用研究
        河南科技(2014年24期)2014-02-27 14:19:25
        免费人成网站在线视频| 欧美va亚洲va在线观看| 99久久国内精品成人免费 | 综合久久一区二区三区| 国产精品国产三级国产av品爱 | 色婷婷久久综合中文久久一本| 国产乱人伦偷精品视频免观看| 熟女无套内射线观56| 无码中文字幕加勒比一本二本| 久久久精品2019免费观看| 国产自拍91精品视频| 在线观看成人无码中文av天堂| 一本色道久久综合狠狠躁 | 亚洲中文字幕av天堂| 蜜桃噜噜一区二区三区| 国内少妇毛片视频| 久久精品亚洲中文字幕无码网站 | 中国老妇女毛茸茸bbwbabes| 成 人 网 站 在线 看 免费| 美腿丝袜视频在线观看| a级国产乱理伦片| 无码毛片aaa在线| 国产精品人人爱一区二区白浆| 黄片视频大全在线免费播放| 成l人在线观看线路1| 在线观看视频亚洲| 中文字幕一区二区在线看| 人妻少妇被粗大爽.9797pw| 免费看久久妇女高潮a| 国产成人av综合色| 久久精品国产亚洲av成人文字| 久久久精品国产sm调教网站| 国产成人综合久久久久久| 青青草精品在线免费观看| 国产黄大片在线观看画质优化| 久久国产36精品色熟妇| 中文字幕精品一区二区日本| 精品人妖一区二区三区四区| 亚洲av之男人的天堂网站| 在线观看精品国产福利片87| 中文字幕在线乱码av|