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

        ?

        基于VBA的SolidWorks快速二次開發(fā)實現(xiàn)爬梯部件的參數(shù)化建模

        2020-06-15 11:13:08李冰郭獻禮張林多賈文聰
        科教導(dǎo)刊·電子版 2020年8期
        關(guān)鍵詞:爬梯二次開發(fā)

        李冰 郭獻禮 張林多 賈文聰

        摘 要 爬梯是工業(yè)場景中使用率很高的部件,本文基于SolidWorks VBA開發(fā)方法針對爬梯進行快速二次開發(fā),實現(xiàn)爬梯部件的參數(shù)化建模,用戶通過輸入爬梯高度和傾角等參數(shù)即可快速生成對應(yīng)的爬梯模型,可以極大地提高設(shè)計效率和設(shè)計質(zhì)量。此外,本文展示了通過SolidWorks API實現(xiàn)參數(shù)化建模的主要代碼,具有一定的參考價值。

        關(guān)鍵詞 SolidWorks VBA 二次開發(fā) 爬梯

        中圖分類號:TP391文獻標識碼:A

        0引言

        三維模型展示效果更加直觀,具有二維圖紙無法比擬的優(yōu)越性,更有助于提高產(chǎn)品布局的合理性以及方便檢查產(chǎn)品細節(jié)是否存在干涉,大大提高了設(shè)計的準確性;而且目前市面上絕大部分的三維設(shè)計軟件都能夠?qū)崿F(xiàn)模型與對應(yīng)圖紙的聯(lián)動,從而節(jié)省了大量修改圖紙的時間,提高了設(shè)計效率。由此可見,三維設(shè)計是未來設(shè)計發(fā)展的必然趨勢。

        SolidWorks作為一款主流三維機械設(shè)計軟件,其靈活而強大的建模和圖形渲染功能能夠滿足不同層次設(shè)計人士的需求,但對于一些差異不大使用率卻較高的部件,傳統(tǒng)的手工交互式建模方式仍然顯得繁瑣,屬于重復(fù)勞動,而定制化的開發(fā)則可以改善這種狀況,將設(shè)計人員從這種大量的重復(fù)勞動中解放出來,可以利用更多時間進行更有價值更有意義的工作,進而極大地提高設(shè)計效率和設(shè)計質(zhì)量。SolidWorks除了具備參數(shù)化驅(qū)動的建模功能以外,還提供了豐富的可供二次開發(fā)的API(Application Programming Interface)接口,可以使用VBA、Visual Basic、Visual C#和Visual C++等開發(fā)工具方便地進行二次開發(fā),用戶在SolidWorks界面上所作的操作均可以通過API編程實現(xiàn)自動化。其中,采用VBA編程的優(yōu)點是無需安裝外部的開發(fā)環(huán)境,可以直接在SolidWorks中通過錄制和編輯宏進行二次開發(fā),而且相比其他開發(fā)語言,VBA對代碼的修改量最少,可讀性強,易于編寫和后期的維護。爬梯在工業(yè)場景中的使用頻率較高,又非完全意義上的標準件,重復(fù)建模繁瑣耗時,但可參數(shù)化性強,本文采用VBA編程方式進行爬梯模型的二次開發(fā)。

        1本文用到的API接口介紹

        本文在爬梯開發(fā)過程中主要用到了插入草圖直線、移動草圖,選擇實體、生成鈑金件、線性陣列實體等5個接口函數(shù),下面分別簡單介紹其功能,詳細用法可以參閱SolidWorks API幫助:

        (1)插入草圖直線:SketchManager:CreateLine(Double X1, Double Y1, Double Z1, Double X2, Double Y2, Double Z2)。該函數(shù)用于在當前2D或3D草圖中繪制直線,括號中參數(shù)為要繪制直線的起點和終點坐標;

        (2)移動指定草圖:ModelDocExtension::MoveOrCopy Boolean Copy, Integer NumCopies, Boolean KeepRelations, Double BaseX, Double BaseY, Double BaseZ, Double DestX, Double DestY, Double DestZ。該函數(shù)用于移動并且選擇性地復(fù)制選中的草圖實體,參數(shù)為一些選項開關(guān)和起點終點坐標;

        (3)選擇實體:ModelDocExtension::SelectByID2(String Name, Type, Double X, Double Y, Double Z, Boolean Append, Integer Mark, Callout Callout, Integer Selec-tOption)。該函數(shù)用于選擇指定實體,選擇實體的類型包括基準面、參考平面、坐標軸、草圖,實體點、實體線、實體面、實體特征、注釋等;

        (4)生成鈑金件:FeatureManager::InsertSheetMetalBaseFlange2 (Double Thickness, Boolean ThickenDir, Double Radius, Double ExtrudeDist1, Double Ex-turdeDist2, Boolean FlipExtruDir, Integer EndCondition1, Integer EndCondition2, Integer DirToUse, CustomBendAllowance PCBA, Boolean UseDefaultRelief, Integer ReliefType, Double ReliefWidth, Double ReliefDepth, Double ReliefRatio, Boolean UseReliefRatio, Boolean Merge, Boolean UseFeatScope, Boolean UseAutoSelect)。該函數(shù)基于法蘭特征生成鈑金件,括號中為一些鈑金參數(shù),如鈑金厚度、彎折半徑等;

        (5)線性陣列實體:FeatureManager::FeatureLinearPattern5(Integer Num1, Double Spacing1, Integer Num2, Double Spacing2, Boolean FllipDir1, Boolean FlipDir2, String DName1, String DName2, Boolean GeometryPattern, Boolean Var-yInstance, Boolean HasOffset1, Boolean HasOffset2, Boolean CtrlByNum1, Boolean CtrlByNum2, Boolean FromCentroid1, Boolean FromCentroid2, Boolean RevOffset1, Boolean RevOffset2, Double Offset1, Double Offset2, Boolean D2PatternSeedOnly, Boolean SyncSubAssemblies)。該函數(shù)用于線性陣列特征,括號中主要包括陣列個數(shù)、陣列間距和陣列方向等參數(shù)。

        2程序的開發(fā)及運行

        2.1程序界面設(shè)計

        進入SolidWorks,新建空白零件,即可通過“工具——宏——新建”新建VBA宏程序,用戶可以通過工具箱在新建的用戶窗口中添加標簽、文本框和按鈕等控件,以滿足需要的功能。這里主要設(shè)置了爬梯高度、爬梯傾角、臺階長度、臺階深度、臺階高度等參數(shù),用戶可以根據(jù)設(shè)計需要將上述設(shè)計參數(shù)的數(shù)值輸入對應(yīng)的文本框,點擊“生成”按鈕則程序根據(jù)用戶輸入的設(shè)計參數(shù)值生成爬梯模型,點擊“退出”按鈕則退出當前程序窗口。

        設(shè)計完成的生成爬梯程序窗口如圖1,窗口包含一個框架控件,5個標簽控件,5個文本框控件和兩個按鈕控件:

        2.2程錄制和編輯宏

        SolidWorks API函數(shù)調(diào)用包含的參數(shù)通常較多,例如“拉伸凸臺/基體”函數(shù)FeatureManager::FeatureExtrusion3,它共有23個參數(shù),而在為SolidWorks開發(fā)應(yīng)用程序時,只有API的每個參數(shù)都滿足條件,代碼才能夠正確執(zhí)行,所以通過錄制和編輯宏是一個很好的快速進行SolidWorks二次開發(fā)的方法,而且通過預(yù)先計劃,多次錄制的方式可以實現(xiàn)較為復(fù)雜程序的二次開發(fā)。

        這里將爬梯模型的錄制過程分為以下6個步驟:

        (1)創(chuàng)建平行四邊形草圖1,確定爬梯的高度和傾角;

        (2)創(chuàng)建臺階草圖2,確定爬梯臺階長、寬等參數(shù);

        (3)根據(jù)草圖2生成最底部鈑金臺階;

        (4)陣列生成鈑金臺階;

        (5)根據(jù)草圖1生成臺階一側(cè)鈑金側(cè)板;

        (6)陣列生成另一側(cè)鈑金側(cè)板,模型完成。

        錄制完成后,先對每一段宏命令進行必要的編輯,例如刪除變換視圖的代碼,添加自定義參數(shù)的聲明并將其代入特征函數(shù)以及添加控件動作等,然后將修改后的宏命令統(tǒng)一整理,經(jīng)過調(diào)試,最終形成一段功能完整的宏命令。

        2.3主要功能代碼展示

        本文針對爬梯模型的VBA二次開發(fā)程序主要實現(xiàn)的是以下幾點功能:

        (1)定義爬梯參數(shù)的數(shù)據(jù)類型并從文本框控件獲取參數(shù)數(shù)值,代碼如下(單引號表示本行為注釋內(nèi)容,下同):

        '定義爬梯高度Hi和傾角An,兩者均為Double Precision數(shù)據(jù)類型

        Dim Hi As Double

        Dim An As Double

        Hi = CDbl(TextBox1.Text) / 1000

        An = CDbl(TextBox2.Text) * (3.141592653 / 180)

        '定義臺階長度l0、寬度和b0層高h0,三者均為Double Precision數(shù)據(jù)類型

        Dim l0 As Double

        Dim b0 As Double

        Dim h0 As Double

        l0 = CDbl(TextBox3.Text) / 1000

        b0 = CDbl(TextBox4.Text) / 1000

        h0 = CDbl(TextBox5.Text) / 1000

        其中,CDbl()函數(shù)的作用是將輸入文本框中的字符串轉(zhuǎn)化為Double Precision類型的數(shù)據(jù)。由于SolidWorks內(nèi)部運行的單位制仍然是米和弧度,所以需要用表達式將用戶輸入的參數(shù)從毫米轉(zhuǎn)換為米,從角度轉(zhuǎn)換為弧度。

        (2)將定義好的參數(shù)代入生成草圖直線和生成鈑金實體等函數(shù),實現(xiàn)草圖和特征的參數(shù)化建模,代碼如下:

        '創(chuàng)建參數(shù)化草圖1

        Dim skSegment As Object

        Set skSegment = Part.SketchManager.CreateLine(0#, 0#, 0#, Hi / Tan(An), Hi, 0#)

        Part.SetPickMode

        Part.ClearSelection2 True

        boolstatus = Part.Extension.SelectByID2("Line1", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)

        Part.Extension.MoveOrCopy True, 1, True, 0, 0, 0, b0, 0, 0

        Part.ClearSelection2 True

        Set skSegment = Part.SketchManager.CreateLine(Hi / Tan(An), Hi, 0#, Hi / Tan(An) + b0, Hi, 0#)

        Set skSegment = Part.SketchManager.CreateLine(0#, 0#, 0#, b0, 0#, 0#)

        Part.ClearSelection2 True

        Part.SketchManager.InsertSketch True

        '創(chuàng)建參數(shù)化鈑金臺階草圖2

        boolstatus = Part.Extension.SelectByID2("前視基準面", "PLANE", 0, 0, 0, False, 0, Nothing, 0)

        Part.SketchManager.InsertSketch True

        Set skSegment = Part.SketchManager.CreateLine(h0 / Tan(An), h0, 0#, h0 / Tan(An) + b0, h0, 0#)

        Part.SetPickMode

        Part.ClearSelection2 True

        Set skSegment = Part.SketchManager.CreateLine(h0 / Tan(An), h0, 0#, h0 / Tan(An), (h0 - 0.05), 0#)

        Part.SetPickMode

        Part.ClearSelection2 True

        Part.SketchManager.InsertSketch True

        '生成最底部鈑金臺階

        Dim customBendAllowanceData As Object

        Set customBendAllowanceData = Part.FeatureManager.CreateCustomBendAllowa-nce()

        customBendAllowanceData.KFactor = 0.5

        Dim myFeature As Object

        Set myFeature = Part.FeatureManager.InsertSheetMetalBaseFlange2(0.0007366, False, 0.0007366, l0, 0.01, False, 0, 0, 1, customBendAllowanceData, False, 0, 0.0001, 0.0001, 0.5, True, False, True, True)

        Part.ClearSelection2 True

        (3)計算陣列臺階個數(shù)并線性陣列鈑金臺階,代碼如下:

        Dim num As Integer

        Dim num1 As Double

        Dim num2 As Integer

        Dim h1 As Double

        num1 = Hi / Sin(An) / (h0 / Sin(An))

        num2 = Int(Hi / Sin(An) / (h0 / Sin(An)))

        h1 = h0 / Sin(An)

        If num2 >= num1 Then

        num = num2 - 1

        End If

        If num2 < num1 Then

        num = num2

        End If

        boolstatus = Part.Extension.SelectByID2("Line1@草圖1", "EXTSKETCHSEG-MENT", 0, 0, 0, True, 1, Nothing, 0)

        boolstatus = Part.Extension.SelectByID2("基體-法蘭1", "SOLIDBODY", 0, 0, 0, True, 256, Nothing, 0)

        Part.ClearSelection2 True

        boolstatus = Part.Extension.SelectByID2("Line1@草圖1", "EXTSKETCHSEG-MENT", 0, 0, 0, False, 1, Nothing, 0)

        boolstatus = Part.Extension.SelectByID2("基體-法蘭1", "SOLIDBODY", 0, 0, 0, True, 256, Nothing, 0)

        Dim swLinearPattern As Feature

        Set swLinearPattern = Part.FeatureManager.FeatureLinearPattern5(num, h1, 1, 0.01, False, False, "NULL", "NULL", False, False, False, False, False, False, True, True, False, False, 0, 0, False, False)

        boolstatus = Part.Extension.SelectByID2("Line1@草圖1", "EXTSKETCHSEG-MENT", 0, 0, 0, True, 1, Nothing, 0)

        boolstatus = Part.Extension.SelectByID2("基體-法蘭1", "SOLIDBODY", 0, 0, 0, True, 256, Nothing, 0)

        Part.ClearSelection2 True

        boolstatus = Part.Extension.SelectByID2("Line1@草圖1", "EXTSKETCHSEG-MENT", 0, 0, 0, False, 1, Nothing, 0)

        boolstatus = Part.Extension.SelectByID2("基體-法蘭1", "SOLIDBODY", 0, 0, 0, True, 256, Nothing, 0)

        Set swLinearPattern = Part.FeatureManager.FeatureLinearPattern5(2, (Hi - h0) / Sin(An), 1, 0.01, False, False, "NULL", "NULL", False, False, False, False, False, False, True, True, False, False, 0, 0, False, False)

        其中,Int()為取整函數(shù),將計算得到的臺階個數(shù)取整,并通過If條件句調(diào)整,最終確定陣列臺階個數(shù)。此外,線性陣列方向可以選取草圖線、特征線,也可以設(shè)置某平面法線方向,本文在陣列臺階時選取的是沿著爬梯傾斜方向的草圖線,陣列爬梯鈑金側(cè)板時設(shè)置的是該鈑金平面的法線方向。

        2.4程序運行結(jié)果

        程序經(jīng)過編輯整理后調(diào)試無誤即可運行。打開SolidWorks,新建空白零件,運行生成爬梯宏程序,輸入以下兩組設(shè)計參數(shù)運行(見圖2)。

        點擊“生成”按鈕,即可生成對應(yīng)的爬梯模型,如圖3所示。

        檢查生成的模型可知程序正確運行。

        3總結(jié)

        通過二次開發(fā)的方法實現(xiàn)定制部件的參數(shù)化建模,可以極大地提高設(shè)計效率和設(shè)計質(zhì)量。本文針對工業(yè)場景中使用率很高的爬梯部件進行了基于VBA 的SolidWorks二次開發(fā),詳細介紹了通過錄制、修改宏的方法進行快速二次開發(fā)的過程。簡單介紹了開發(fā)過程中用到的插入草圖直線、移動草圖、選擇實體、生成鈑金件、線性陣列實體等若干SolidWorks API函數(shù),并通過真實的生成爬梯程序代碼展示其功能以及參數(shù)化驅(qū)動建模的實現(xiàn),具有較高的實用和參考價值。

        作者簡介:李冰,男,1988/08/30,河南鄭州,工作單位:河南衛(wèi)華重型機械股份有限公司,專業(yè):工程力學(xué),研究方向:結(jié)構(gòu)實驗分析。

        參考文獻

        [1] SolidWorks公司.SolidWorks高級教程:二次開發(fā)與API(2007版)[M].葉修梓,陳超詳編.北京:機械工業(yè)出版社,2009.

        猜你喜歡
        爬梯二次開發(fā)
        半掛車機械爬梯裝置的設(shè)計與研究
        專用汽車(2020年12期)2020-12-24 03:02:18
        高大平房倉入倉斜爬梯改進后的優(yōu)勢與缺點
        糧食加工(2020年4期)2020-11-02 12:12:56
        淺談基于Revit平臺的二次開發(fā)
        甘肅科技(2020年20期)2020-04-13 00:30:02
        淺談Mastercam后處理器的二次開發(fā)
        模具制造(2019年3期)2019-06-06 02:11:02
        輸電線路上落導(dǎo)線穩(wěn)固式爬梯的研制
        西門子Easy Screen對倒棱機床界面二次開發(fā)
        會平爬梯車
        基于Pro/E二次開發(fā)的推土鏟參數(shù)化模塊開發(fā)
        成人性生交c片免费看| 青青草中文字幕在线播放| 青青草狠吊色在线视频| 精品少妇一区二区三区免费观| 污污污污污污WWW网站免费| 亚洲国产剧情一区在线观看| 中国亚洲av第一精品| 国产激情自拍在线视频| 久久综合九色综合久99| 亚洲国产区男人本色| 美女极度色诱视频国产免费 | 中文字幕人成乱码中文| 日韩精品亚洲一区二区| 欧美极品少妇无套实战| 国产乱子伦精品免费无码专区| 亚洲欧洲国无码| 亚洲成人色黄网站久久| 久久久人妻精品一区bav| 在线观看免费无码专区| 亚洲一区av无码少妇电影| 国产一毛片| 精品国产三级国产av| 欧美又大又硬又粗bbbbb| 国产精品人妻一码二码尿失禁| 国产小屁孩cao大人免费视频| 亚洲精品女人天堂av麻| 日韩亚洲欧美久久久www综合| 久久精品无码中文字幕| h动漫尤物视频| 99国产精品久久一区二区三区| 久久久精品国产sm调教网站| 老少交欧美另类| 日本丰满少妇高潮呻吟| 中文字幕av长濑麻美| 亚洲色婷婷一区二区三区| 亚洲旡码a∨一区二区三区| 欧美日韩国产在线成人网| 一区二区三区日本在线| 欧美黑人巨大videos精品| 国产人妻精品一区二区三区不卡| 久久久久久久久中文字幕|