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

        ?

        大型裝配體的SolidWorks參數(shù)化建模方法

        2018-10-22 07:05:16杜玉祥何雪浤
        機(jī)械設(shè)計(jì)與制造 2018年10期
        關(guān)鍵詞:二次開發(fā)方法模型

        汪 林,杜玉祥,何雪浤

        (東北大學(xué) 機(jī)械工程與自動(dòng)化學(xué)院,遼寧 沈陽 110819)

        1 引言

        在日趨激烈的市場(chǎng)競(jìng)爭(zhēng)環(huán)境下,為適應(yīng)現(xiàn)代技術(shù)發(fā)展和產(chǎn)品更新的要求,如何實(shí)現(xiàn)產(chǎn)品的產(chǎn)品的快速設(shè)計(jì)是復(fù)雜機(jī)械產(chǎn)品研究的重點(diǎn)。目前典型的快速化設(shè)計(jì)的理論和方法有:模塊化設(shè)計(jì)、參數(shù)化設(shè)計(jì)、產(chǎn)品族設(shè)計(jì)及可重構(gòu)設(shè)計(jì)等[1]。參數(shù)化設(shè)計(jì)是產(chǎn)品設(shè)計(jì)規(guī)格化和系列化的一種簡(jiǎn)單、高效的方法。其通常是在保持模型原有拓?fù)浣Y(jié)構(gòu)不變的前提下,針對(duì)關(guān)聯(lián)參數(shù)做幾何約束建模和求解來實(shí)現(xiàn)有效的智能參數(shù)驅(qū)動(dòng)方法[2]。

        SolidWorks是Windows平臺(tái)下的一款優(yōu)秀的特征造型軟件,其設(shè)計(jì)功能強(qiáng)大且操作較為簡(jiǎn)單,因而得到了非常廣泛的應(yīng)用。同時(shí),有許多學(xué)者[3-4]對(duì)其參數(shù)化建模功能進(jìn)行了研究并取得了一定成果。其中,絕大多數(shù)的研究都是針對(duì)單個(gè)零部件進(jìn)行的,通常是利用SolidWorks中系列零件設(shè)計(jì)表并結(jié)合ACCESS等數(shù)據(jù)庫實(shí)現(xiàn)參數(shù)化設(shè)計(jì)[5-6],而對(duì)復(fù)雜裝配體的參數(shù)化建模很少涉及,且有所涉及的研究也基本沒有對(duì)裝配體參數(shù)化建模的具體過程和方法進(jìn)行介紹。針對(duì)此現(xiàn)狀,以VC++為開發(fā)工具,采用SolidWorks二次開發(fā)的異步模式,對(duì)大型裝配體參數(shù)化建模的方法進(jìn)行了研究,并實(shí)現(xiàn)了大型裝配體剪叉式升降平臺(tái)的參數(shù)化建模。

        2 裝配體參數(shù)化建模方法介紹

        在SolidWorks中參數(shù)化建??梢酝ㄟ^兩種方法實(shí)現(xiàn),一種方法是用戶根據(jù)需要直接用程序生成需要的模型,稱為完全程序化參數(shù)建模;另一種方法是利用已有的模型,通過修改模型參數(shù)的方法得到需要的模型,稱為參數(shù)修改法建模[4]。對(duì)于大型裝配體的參數(shù)化建模,由于其模型相對(duì)復(fù)雜,使用完全程序化建模是很難實(shí)現(xiàn)的,故一般只能選用參數(shù)修改法建模。采用參數(shù)修改法建模通常需要事先建立好模型庫,并保存在程序所指向的目錄下,當(dāng)需要使用時(shí)由程序調(diào)用模型文件。參數(shù)修改建模對(duì)模型庫的要求是比較高的,在零件建模過程中需要綜合考慮尺寸的標(biāo)注方式,盡量避免尺寸參數(shù)間產(chǎn)生制約效應(yīng),而在裝配過程中需要充分考慮各零件之間的相互約束關(guān)系,為其添加合適的約束方程。模型庫處理完畢后即可通過程序?qū)δP偷南嚓P(guān)零件進(jìn)行尺寸修改和重建,其中可變參數(shù)可以通過對(duì)話框輸入、數(shù)據(jù)庫導(dǎo)入或直接從程序的計(jì)算結(jié)果獲得。最終通過程序?qū)崿F(xiàn)整個(gè)裝配體的重建。因此,裝配體參數(shù)修改建模的總體流程可總結(jié),如圖1所示。

        圖1 裝配體參數(shù)化建模的總體流程Fig.1 Overall Process of Parameterized Modeling of Assembly

        2.1 Solidworks模型庫預(yù)處理

        SolidWorks模型庫的預(yù)處理主要是對(duì)后期需要進(jìn)行尺寸修改的零件的相關(guān)尺寸進(jìn)行參數(shù)鏈接和方程式約束,然后對(duì)各級(jí)裝配體中相關(guān)的尺寸進(jìn)行方程式約束,最終確保相關(guān)尺寸發(fā)生變化后總裝配體的重建不會(huì)發(fā)生錯(cuò)誤。在進(jìn)行模型處理前,需要對(duì)模型的拓?fù)浣Y(jié)構(gòu)進(jìn)行仔細(xì)的分析。在模型裝配及添加幾何方程式的過程中,都需要充分考慮零件尺寸修改后整個(gè)裝配體模型的聯(lián)動(dòng)效果。通常以零件—子裝配體—總裝配體的層次進(jìn)行處理,以剪叉式升降平臺(tái)為例,其處理順序?yàn)椋簡(jiǎn)蝹€(gè)零件(剪叉臂、鉸點(diǎn)銷軸等)—單層剪叉結(jié)構(gòu)—整個(gè)剪叉結(jié)構(gòu)—剪叉式升降平臺(tái)。在零部件繁多的情況下,此過程一般是很難一步到位的,需要進(jìn)行反復(fù)的修正才能實(shí)現(xiàn),包括幾何約束關(guān)系的修改和裝配關(guān)系的修正等。

        2.2 VC++與SolidWorks的接口技術(shù)

        SolidWorks是Windows平臺(tái)下優(yōu)秀的特征造型軟件,其設(shè)計(jì)功能強(qiáng)大且操作較為簡(jiǎn)單,因而得到了非常廣泛的應(yīng)用。SolidWorks提供了OLE(對(duì)象的嵌入與鏈接)應(yīng)用程序開發(fā)接口(API),包含有數(shù)以百計(jì)的功能函數(shù),為程序員提供了直接訪問SolidWorks的能力。用戶可以使用支持OLE編程的開發(fā)工具,如VB、VC++、VBA、Delphi等對(duì) SolidWorks API函數(shù)進(jìn)行調(diào)用。

        接口處理是SolidWorks二次開發(fā)的關(guān)鍵技術(shù)之一,是開發(fā)工具能夠?qū)崿F(xiàn)對(duì)SolidWorks軟件的API函數(shù)進(jìn)行調(diào)用的前提。VC++對(duì)SolidWorks的二次開發(fā)大致有兩種方法:一種是通過VC++編寫DLL程序在SolidWorks中添加菜單項(xiàng)的方式,直接在SolidWorks的界面下實(shí)現(xiàn)對(duì)模型的特定操作;另一種則是所有操作命令菜單都在集中在VC++的MFC模塊,通過SolidWorks API函數(shù)的調(diào)用來實(shí)現(xiàn)軟件各項(xiàng)操作,即所謂的異步模式。針對(duì)這兩種方法,其接口的處理有所不同。前者是通過VC++生成插件來進(jìn)行開發(fā)的。SolidWorks2009之前的版本通過其提供的一個(gè)SWizard.awx的向?qū)С绦蛏蒁LL框架,在此框架下即可進(jìn)行SolidWorks的二次開發(fā)。而其后的版本,SWizard.awx向?qū)С绦蚧疽烟蕴?,取而代之的是一個(gè)API-SDK二次開發(fā)工具包。而后者主要是通過將SolidWorks提供的API函數(shù)庫導(dǎo)入VC++中,然后就可以直接在VC++中調(diào)用SolidWorksAPI函數(shù)實(shí)現(xiàn)其二次開發(fā)。下面以VC++6.0為例,就異步模式的接口技術(shù)的操作步驟進(jìn)行介紹。

        首先,在VC++中選擇MFCAppWizard(exe)新建一個(gè)工程。接下來是在類向?qū)е型ㄟ^添加類型庫的方式在SolidWorks安裝目錄下找到sldworks.tlb文件加載SolidWorks類型庫。添加完成后會(huì)發(fā)現(xiàn)Header Files中多了sldworks.h文件,在Resource Files中多了sldworks.cpp文件。至此,基本上SolidWorksAPI函數(shù)都已經(jīng)導(dǎo)入到了該工程中,接下來就可以進(jìn)行二次開發(fā)的編程了。但還需在工程頭文件中手動(dòng)添加SolidWorks安裝路徑下的swpublished.tlb和swconst.tlb文件,以確保編程時(shí)能夠?qū)olidWorks文檔類型及其它一些常量進(jìn)行定義,具體的添加命令為:

        #import"D:\ProgramFiles\SOLIDWORKS\swpublished.tlb"raw_interfaces_only,raw_native_types,no_namespace,named_guids

        #import"D:\Program Files\SOLIDWORKS\swconst.tlb"raw_interfaces_only,raw_native_types,no_namespace,named_guids。

        以上是VC++6.0與SolidWorks之間的接口處理技術(shù),其它版本的VC++軟件的接口處理原理和方法基本相同。

        2.3 零件的參數(shù)修改及模型重建的編程流程

        零件尺寸的修改是通過VC++調(diào)用SolidWorks API函數(shù)編程實(shí)現(xiàn)的,編程方法大致有兩種:一種是為零件添加一個(gè)尺寸配置,配置中包含有該零件需要修改的所有尺寸參數(shù),具體操作方法可參考文獻(xiàn)[7];另一種是直接修改零件的標(biāo)注尺寸。這兩種方法各有利弊。采用添加配置的方法會(huì)將每次設(shè)置的參數(shù)都保存在零件的系列設(shè)計(jì)表中,但這也會(huì)使得文件隨著使用次數(shù)的增多而占用更大的內(nèi)存,而且隨著配置數(shù)據(jù)的增多會(huì)容易造成混亂。采用直接修改零件標(biāo)注尺寸的方法可以很好的避免文件占用內(nèi)存過大的弊端,但是采用該方法修改后的零件將失去原有尺寸的記錄。采用的是直接修改標(biāo)注尺寸的方法,其編程流程可總結(jié),如圖2所示。

        圖2 零件尺寸修改的編程流程Fig.2 Programming Process of Modify the Dimensions of the Parts

        另外,裝配體重建的編程相對(duì)簡(jiǎn)單,利用SolidWorks的自動(dòng)重建功能,在打開裝配體模型后通過一個(gè)重建命令即可實(shí)現(xiàn)其中的零部件尺寸的更新。具體的編程流程可總結(jié)為,如圖3所示。

        圖3 裝配體模型重建的編程流程Fig.3 Programming Process of Assembly Model Reconstruction

        3 實(shí)例

        下面以一個(gè)剪叉式升降平臺(tái)為例,說明如何通過編程修改SolidWorks零件的尺寸以及如何實(shí)現(xiàn)整個(gè)裝配體模型的重建。在此僅以修改剪叉式高空作業(yè)平臺(tái)的SolidWorks模型中的剪叉臂尺寸為例,來說明整個(gè)參數(shù)化建模的過程。剪叉臂的三維圖,如圖4所示。

        圖4 剪叉臂模型Fig.4 Scissor Arm Model

        模型預(yù)處理后的剪叉臂截面長(zhǎng)、寬、厚及臂長(zhǎng)的標(biāo)注對(duì)象的名稱分別為:A@草圖1、B@草圖1、S@草圖1和L@凸臺(tái)-拉伸1。在后面程序?qū)Τ叽鐓?shù)進(jìn)行修改時(shí)需要首先獲取這些標(biāo)注對(duì)象,然后再調(diào)用API函數(shù)對(duì)其值進(jìn)行設(shè)置。在VC++與SolidWorks的接口已經(jīng)連接成功的前提下,在VC+中是可以直接調(diào)用API函數(shù)進(jìn)行編程的。首先,在工程中建立對(duì)話框并添加edit控件、圖片控件等,并對(duì)相應(yīng)的控件添加變量,本例的最終對(duì)話框,如圖5所示。接下來進(jìn)入代碼編寫界面。程序編寫完成后,在剪叉臂參數(shù)設(shè)置窗口的編輯框中輸入需要修改的尺寸值后,點(diǎn)擊“確定”按鈕,即可完成對(duì)剪叉臂尺寸的修改和更新。最后,在裝配體窗口中點(diǎn)擊“生成模型”按鈕,則整個(gè)裝配體中修改過的零件將會(huì)進(jìn)行更新,從而得到重建模型。其中部分程序代碼如下:

        //剪叉臂參數(shù)設(shè)置

        ISldWorksm_SldWorks;//定義 SolidWorks對(duì)象

        IModelDoc pModelDoc;//定義 ModelDoc對(duì)象

        longtype=swDocPART;//定義文檔類型為零件

        BOOL panduan=m_SldWorks.CreateDispatch("SldWorks.Applica

        tion",NULL);//運(yùn)行 SolidWorks軟件

        _bstr_t fileName(_T("C:\****\剪叉上下叉管 1.SLDPRT"));//定義文件名

        UpdateData(TRUE);//獲得編輯框輸入的數(shù)據(jù)

        inta=m_a.GetBuffer(0);

        intb=m_b.GetBuffer(0);

        ints=m_s.GetBuffer(0);

        intl=m_l.GetBuffer(0);

        CStringpath=(LPCTSTR)fileName;//定義文件路徑

        LPDISPATCH modDisp=m_SldWorks.OpenDoc(path,type);

        pModelDoc.AttachDispatch (modDisp);//獲 得 IModelDoc 對(duì) 象

        m_pModelDoc

        IPartDoc partDoc(modDisp);//獲得 IPartDoc對(duì)象

        //剪叉臂截面長(zhǎng)A的參數(shù)設(shè)置

        LPDISPATCHpDim_a=pModelDoc.Parameter("A@ 草圖 1");//獲得

        尺寸參數(shù)A

        IDimension Dime_a(pDim_a);//獲得 IDimension 對(duì)象 Dime_a

        Dime_a.SetValue(a);//將尺寸設(shè)置為編輯框輸入值 A

        //剪叉臂截面寬B的參數(shù)設(shè)置

        **********;

        //剪叉臂截面長(zhǎng)S的參數(shù)設(shè)置

        **********;

        //剪叉臂臂長(zhǎng)L的參數(shù)設(shè)置

        **********;

        partDoc.EditRebuild();//零件重建

        pModelDoc.SaveAsSilent(path,type);//保存文件

        m_SldWorks.CloseDoc(path);//關(guān)閉打開的文件

        m_SldWorks.ExitApp();//關(guān)閉 SolidWorks

        裝配體重建的編程流程大體與修改零件尺寸的前半部分相似。在調(diào)用打開SolidWorks軟件后,通過OpenDoc函數(shù)打開裝配體文件,然后通過一個(gè)重建命令實(shí)現(xiàn)整個(gè)模型的重建。程序的部分代碼如下:

        longtype=swDocASSEMBLY;//定義文檔類型為裝配體

        **************;//調(diào)用 SolidWorks軟件

        _bstr_tfileName(_T("C:\****\剪叉式升降平臺(tái)總裝.SLDASM"));//定義文件名

        pModelDoc=m_SldWorks.OpenDoc(fileName,type);//打開裝配體文件

        pModelDoc.EditRebuild3(); //重新生成模型

        其中“C:\****\剪叉上下叉管 1.SLDPRT”和“C:\****\剪叉式升降平臺(tái)總裝.SLDASM”中的****為零件和裝配體文件的存放路徑。另外,為便于對(duì)修改結(jié)果進(jìn)行觀察,可以將程序運(yùn)行后SolidWorks的圖形界面通過截圖的方式嵌入到對(duì)話框中,具體代碼如下:

        CStringsFileBmp;//定義位圖文件路徑

        intwz1=path.Find('.',0);//將位圖放置在零件文件路徑

        sFileBmp=path.Mid(0,wz1)+".bmp";//添加位圖后綴

        CRectrect;

        m_pic.GetClientRect(&rect);

        pModelDoc.SaveBMP ((LPCTSTR)sFileBmp,rect.Width (),rect.Height());//保存位圖文件

        m_pic.SetBitmap((HBITMAP)::LoadImage(::AfxGetInstanceHandle(),sFileBmp,IMAGE_BITMAP,rect.Width(),rect.Height(),LR_LOADFROMFILE));//加載位圖文件

        運(yùn)行程序,輸入相關(guān)參數(shù)值,最終結(jié)果,如圖5所示。示例中兩次參數(shù)設(shè)置的剪叉臂尺寸A分別為100和200,從圖5(a)可以看出兩者運(yùn)行結(jié)果的差別。從圖5(b)的局部放大圖可看出修改剪叉臂尺寸后整個(gè)裝配體模型的變化。

        圖5 零件尺寸修改前后的模型對(duì)比Fig.5 The Comparison of Models Before and After Modify Parts Dimensions

        4 結(jié)論

        介紹了一種以VC++為開發(fā)工具、以SolidWorks為造型軟件的大型裝配體的參數(shù)化建模方法,并對(duì)其中的關(guān)鍵技術(shù)進(jìn)行了闡述,包括裝配體模型庫的處理、SolidWorks二次開發(fā)的異步模式的接口技術(shù)及具體的編程流程等。并且通過某型號(hào)的剪叉式升降平臺(tái)的參數(shù)化建模實(shí)例進(jìn)行了具體演示。應(yīng)用該參數(shù)化建模方法得到的設(shè)計(jì)平臺(tái),能夠?qū)崿F(xiàn)當(dāng)對(duì)相關(guān)設(shè)計(jì)參數(shù)進(jìn)行修改時(shí),其它的相關(guān)尺寸能夠進(jìn)行自動(dòng)更新,最終實(shí)現(xiàn)整個(gè)裝配體的重建。使用該參數(shù)化建模方法,能夠大大提高系列化三維裝配體設(shè)計(jì)和優(yōu)化的效率,減輕設(shè)計(jì)人員的工作量,具有一定理論和實(shí)際意義。

        猜你喜歡
        二次開發(fā)方法模型
        一半模型
        重要模型『一線三等角』
        重尾非線性自回歸模型自加權(quán)M-估計(jì)的漸近分布
        淺談基于Revit平臺(tái)的二次開發(fā)
        甘肅科技(2020年20期)2020-04-13 00:30:02
        淺談Mastercam后處理器的二次開發(fā)
        模具制造(2019年3期)2019-06-06 02:11:02
        西門子Easy Screen對(duì)倒棱機(jī)床界面二次開發(fā)
        可能是方法不對(duì)
        3D打印中的模型分割與打包
        用對(duì)方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        四大方法 教你不再“坐以待病”!
        Coco薇(2015年1期)2015-08-13 02:47:34
        亚洲精品久久久久久动漫| 国产一区二区三区白浆在线观看| 精品蜜臀国产av一区二区| 亚洲国产综合久久精品| 国产午夜福利小视频在线观看 | 少妇无码太爽了在线播放 | 26uuu在线亚洲欧美| 中国无码人妻丰满熟妇啪啪软件| 夜夜嗨av一区二区三区| 亚洲精品国产成人AV| 亚洲日产国无码| 免费人妻精品区一区二区三| 亚洲国产日韩一区二区三区四区| 日韩人妻精品中文字幕专区| 欧美伦费免费全部午夜最新| 中文在线8资源库| 国产美女网站视频| 国产人妖在线免费观看| 国产精品日韩亚洲一区二区| 射精区-区区三区| 国产成人亚洲精品青草天美| 午夜精品久久久| 亚洲欧美在线视频| 国产特黄1区2区3区4区| 久久精品国产熟女亚洲av麻豆| 99久久国产精品网站| 国产精品制服| 亚洲一区日韩无码| 亚洲无码视频一区:| 99国产精品欲av麻豆在线观看| 网站在线观看视频一区二区| 中文字幕乱码高清完整版| 少妇高潮尖叫黑人激情在线| 狠干狠爱无码区| 伊人久久婷婷综合五月97色| 国产亚洲精品97在线视频一 | 极品少妇一区二区三区四区视频| 熟女中文字幕一区二区三区 | 久久久久成人精品无码中文字幕 | 国产精品亚洲A∨天堂不卡| 精品无码人妻久久久一区二区三区 |