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

基于VBA的SolidWorks快速二次開發實現爬梯部件的參數化建模

2020-06-15 11:13:08李冰郭獻禮張林多賈文聰
科教導刊·電子版 2020年8期
關鍵詞:二次開發

李冰 郭獻禮 張林多 賈文聰

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

關鍵詞 SolidWorks VBA 二次開發 爬梯

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

0引言

三維模型展示效果更加直觀,具有二維圖紙無法比擬的優越性,更有助于提高產品布局的合理性以及方便檢查產品細節是否存在干涉,大大提高了設計的準確性;而且目前市面上絕大部分的三維設計軟件都能夠實現模型與對應圖紙的聯動,從而節省了大量修改圖紙的時間,提高了設計效率。由此可見,三維設計是未來設計發展的必然趨勢。

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

1本文用到的API接口介紹

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

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

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

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

(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)。該函數基于法蘭特征生成鈑金件,括號中為一些鈑金參數,如鈑金厚度、彎折半徑等;

(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)。該函數用于線性陣列特征,括號中主要包括陣列個數、陣列間距和陣列方向等參數。

2程序的開發及運行

2.1程序界面設計

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

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

2.2程錄制和編輯宏

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

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

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

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

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

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

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

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

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

2.3主要功能代碼展示

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

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

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

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數據類型

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()函數的作用是將輸入文本框中的字符串轉化為Double Precision類型的數據。由于SolidWorks內部運行的單位制仍然是米和弧度,所以需要用表達式將用戶輸入的參數從毫米轉換為米,從角度轉換為弧度。

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

'創建參數化草圖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

'創建參數化鈑金臺階草圖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)計算陣列臺階個數并線性陣列鈑金臺階,代碼如下:

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()為取整函數,將計算得到的臺階個數取整,并通過If條件句調整,最終確定陣列臺階個數。此外,線性陣列方向可以選取草圖線、特征線,也可以設置某平面法線方向,本文在陣列臺階時選取的是沿著爬梯傾斜方向的草圖線,陣列爬梯鈑金側板時設置的是該鈑金平面的法線方向。

2.4程序運行結果

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

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

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

3總結

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

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

參考文獻

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

猜你喜歡
二次開發
淺談基于Revit平臺的二次開發
甘肅科技(2020年20期)2020-04-13 00:30:02
西門子Operate高級編程的旋轉坐標系二次開發
淺談Mastercam后處理器的二次開發
模具制造(2019年3期)2019-06-06 02:11:02
基于C#的AutoCAD建筑構件庫二次開發
江西建材(2018年2期)2018-04-14 08:01:14
西門子Easy Screen對倒棱機床界面二次開發
基于全站儀二次開發的覆冰厚度測量與實現
電測與儀表(2016年9期)2016-04-12 00:29:52
Micaps3.2 版本二次開發入門淺析
西藏科技(2015年12期)2015-09-26 12:13:51
基于VB的ANSYS二次開發在變壓器抗短路性能分析中的應用
基于CATIA的橡皮囊成形毛料展開的二次開發
機械工程師(2015年9期)2015-02-26 08:38:10
ANSYS Workbench二次開發在汽車穩定桿CAE分析中的應用
汽車零部件(2014年5期)2014-11-11 12:24:32
主站蜘蛛池模板: 亚洲中文字幕久久无码精品A| 性喷潮久久久久久久久| 理论片一区| 国产精品白浆在线播放| 久久黄色毛片| 在线观看无码av免费不卡网站 | 亚洲精品va| 亚洲乱强伦| 久久久久亚洲Av片无码观看| 国内毛片视频| 亚洲国产清纯| 国产精品丝袜在线| 一级毛片免费不卡在线| 中国国产一级毛片| 天天爽免费视频| 四虎国产精品永久一区| 54pao国产成人免费视频| 日韩在线永久免费播放| 久久99久久无码毛片一区二区| 久久大香香蕉国产免费网站| 自拍偷拍一区| 国产精品入口麻豆| 四虎国产在线观看| 色亚洲成人| 国产精品污污在线观看网站| 亚洲成人福利网站| 亚洲人成网站色7799在线播放| 日韩在线观看网站| 亚洲视频欧美不卡| 一本久道热中字伊人| 日韩不卡高清视频| 制服丝袜 91视频| 日韩乱码免费一区二区三区| 国产日本欧美亚洲精品视| 视频二区国产精品职场同事| 亚洲欧美色中文字幕| 国产精品网曝门免费视频| 综合色婷婷| 欧美日韩在线亚洲国产人| 熟妇丰满人妻| 国产真实自在自线免费精品| 久久情精品国产品免费| 一区二区偷拍美女撒尿视频| 婷婷六月综合网| 99在线视频免费| 国产门事件在线| 91探花在线观看国产最新| 亚洲免费三区| 国产日本一区二区三区| 亚洲国产欧美国产综合久久| 成·人免费午夜无码视频在线观看 | 亚洲天堂区| 8090成人午夜精品| 99久久国产综合精品2020| 国产日本视频91| 又黄又爽视频好爽视频| 日本午夜影院| 精品午夜国产福利观看| 国产精品一线天| 91网址在线播放| 成人午夜免费观看| 日韩人妻无码制服丝袜视频| 亚洲色无码专线精品观看| 97国产精品视频自在拍| 99成人在线观看| 最新国产午夜精品视频成人| 国产精品播放| 国产主播一区二区三区| 国产福利在线观看精品| 国产97公开成人免费视频| 亚洲国产精品久久久久秋霞影院| 精品视频一区在线观看| 乱人伦视频中文字幕在线| 91精品国产情侣高潮露脸| 日本在线视频免费| 国内精品九九久久久精品| 亚洲中字无码AV电影在线观看| 五月综合色婷婷| 蜜臀AVWWW国产天堂| 51国产偷自视频区视频手机观看| 一级毛片在线播放| 国产91无码福利在线|