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

SolidWorks二次開發應用方法探究

2018-08-21 06:55:38李志雄王宗彥侯驊玲張偉
機械制造與自動化 2018年4期
關鍵詞:二次開發方法

李志雄,王宗彥,侯驊玲,張偉

(1. 中北大學 機械與動力工程學院, 山西 太原 030051; 2. 山西省起重機數字化設計工程技術研究中心, 山西 太原 030051)

0 引言

隨著SolidWorks在國內應用領域的不斷擴大,用戶群體也越來越龐大,其參與企業新產品研發與高校科研也越來越普遍,因此SolidWorks的“本土化”應用需求也越來越大。對SolidWorks進行有針對性的二次開發成為當務之急。

二次開發是對軟件用戶化和專業化的有效手段,可以使軟件更好地為用戶服務,提高CAD軟件的應用效率、專業性,充分發揮CAD軟件的使用效益,在提高工作效率和工作質量等方面有著十分重要的意義[1]。三維軟件的二次開發要遵循工程化、 模塊化、標準化和繼承性等一系列的原則,依據工程化的思路對二次開發進行統籌規劃,具體實現模塊化、標準化和繼承性原則[2]。簡單地說就是在現有的三維軟件上進行定制修改,功能擴展,以達到開發者想要的功能。SolidWorks在二次開發后有兩個主要的應用領域,一是特殊化建模,二是獲取SolidWorks文件顯式或隱式的信息。其中,特殊化建模又可分為兩種:使用二次開發在特定條件下的直接建模與裝配;參數化建模、裝配與生成工程圖。其中前者對開發者能力要求較高,后者要求較低。因此文中主要探究前者的二次開發方法。

1 SolidWorks二次開發綜述

1.1 二次開發模式與API對象

SolidWorks具有開放的外部接口,并且在其不斷更新的過程中也不斷地更新二次開發的接口函數。Solidworks的API(application programming interface應用編程接口)是一個基于OLE Automation的編程接口,其中包含了數以百計的功能函數,這些函數提供了程序員直接訪問Solidworks的能力,可以被VB、C/C++等編程語言調用[3]。API目的是提供應用程序與開發人員基于某軟件或硬件得以訪問一組例程的能力,而又無需訪問源碼。SolidWorks API接口函數庫是SolidWorks的OLE(object linking and embedding,對象連接與嵌入)應用程序開發接口,用戶可以利用它并通過支持OLE編程的開發工具,如Visual Basic、VBA(Excel,Access)、C、Visual C++、C++等對SolidWorks進行二次開發,建立滿足用戶需求的、專用的SolidWorks功能模塊[4]。通過調用SolidWorks API接口函數開發的專用功能模塊大致有兩種應用模式:

1) SolidWorks內部運行模式,即開發后生成*.DLL的動態鏈接庫文件,作為插件成為SolidWorks界面中的一部分;

2) 獨立于SolidWorks存在的*.EXE的可執行程序,通過外部調用實現對SolidWorks的顯式或隱式操作。

1.2 二次開發與宏錄制工具

SolidWorks可以使用多種編程語言進行二次開發,C語言、Delphi、Visual C++、C#、Visual Basic6.0、VBA等均可以作為二次開發的工具。目前,較常用的開發工具為Visual C++與Visual Basic6.0。本文所采用的是二次開發工具為Visual Basic6.0。

“宏”的含義就是一系列簡短命令組成的一段較長的命令代碼完成某些特定的功能。SolidWorks宏錄制工具可以記錄用戶操作SolidWorks時的“一舉一動”,并將其轉化為可編輯的VBA代碼供二次開發人員參考。

2 SolidWorks二次開發應用方法探究

2.1 二次開發代碼閱讀方法探究

根據相關項目經驗,總結了一套SolidWorks二次開發代碼閱讀方法。但需首先了解Visual Basic6.0的【對象瀏覽器】功能以及SolidWorks API help使用方法。

1) 在取得一段使用VB書寫的二次開發代碼后,應首先將檢查該工程是否引用了SolidWorks的常用類型庫“SolidWorks Constant Type Library”。這個類型庫包含了所有公開的API接口,以及用于SolidWorks自動操作可使用成員[5]。

引用類型庫之后,選擇菜單中【視圖】/【對象瀏覽器】,并在“工程/庫”中選擇“SldWorks”選項,對話框中顯示的就是SolidWorks所有公共接口對象及其成員(如圖1所示)。【對象瀏覽器】包含函數簡要說明,能夠方便地幫助開發者了解每個對象下所有的事件、方法、過程與屬性。

圖1 VB對象瀏覽器

2) SolidWorks API help是軟件自帶指導二次開發的幫助文件,它包含并描述了所有SolidWorks對象及其方法屬性的功能、參數、返回值含義以及使用范例。每個函數的聲明方法及使用范例均有由Visual Basic.net、VBA、C#、C++/CLI語言書寫的版本。此幫助文件本身也提供了索引、搜索、收藏等功能,為開發者全面了解API對象提供了百科全書。該幫助文件可通過選擇【幫助】下拉菜單中的【API幫助】找到,打開后如圖2所示。通過API幫助文件不僅能夠清晰了解各對象之間的隸屬關系,而且還可以找到每個對象所包含所有屬性、事件、方法的詳細介紹。如圖3所示就是對象“TableAnnotation”與其下屬對象的結構。對于一些復雜函數使用,該幫助文件也提供了大量范例來輔助。

圖2 API help

圖3 TableAnnotation對象結構

熟練掌握以上兩種二次開發輔助工具后就具備了二次開發讀與寫的基本前提。在VB與VBA編程環境下SolidWorks二次開發代碼閱讀方法可分為遞進式的3種。

1) 于不明含義的函數處右鍵,選擇“定義”進行查看;

2) 于【對象瀏覽器】中搜索該函數名,根據其上級類對象在搜索結果中選擇正確的函數項進行查看;

3) 于SolidWorks API help中進行有針對性查找。對該函數進行檢索,找到該函數在API help中的介紹。

2.2 二次開發代碼編寫方法探究

由于SolidWorks有一些較深層次的內容或新功能不提供二次開發接口,因此直接建模與二次開發相當于包含與被包含關系(兩者的關系如圖4所示)。這無形中增加了開發的難度。

圖4 二次開發可操作范圍對比

開發某項工程前,需挖掘開發內容的重點并制定最專業化、簡單化的流程。因此,具有良好的建模規則與習慣成為編寫二次開發代碼的先決條件。以下介紹的是作者從項目經驗中按照遞進原則總結的兩種二次開發代碼編寫方法。

第一種:對規劃好的建模或操作步驟進行宏錄制并精簡出宏代碼中的關鍵函數;

第二種:宏錄制無果,分解該操作為若干步驟,查找分步驟的相關函數并進行組合。

雖然宏錄制是一個便捷有效的二次開發工具,但宏錄制出的代碼不能直接引用。宏記錄了許多諸如視角變化、窗口縮放、用戶誤操作等不必要的命令代碼。多余的代碼需要刪掉才可以提取出有用的函數供二次開發者參考。剔除多余代碼后,首先需要撤銷已錄制的各項操作,其次單步運行精簡后的代碼以驗證剩余函數的作用。對于功能不明確的函數可采用上一節介紹的閱讀方法進行查找了解。最終將所需的關鍵函數套用在Visual Basic6.0中,完成二次開發工作。

SolidWorks中某些操作是無法進行宏錄制的,因此代碼精簡后可能會出現錄制無果的情況。這就需要應用第二種代碼編寫方法(編寫流程如圖5所示)。比如某個操作無法用一個單獨的函數來代替,便應該將這個單一的操作分為多個步驟,通過鏈接不同的函數完成該操作。

圖5 SolidWorks二次開發代碼編寫方法

首先,通過對被操作對象進行一次能夠被宏記錄的選取操作來獲取該對象類型,其次進入【對象瀏覽器】中瀏覽此對象的所有下屬成員,根據成員名稱與功能梗概確定疑似分步驟函數。若無法確定分步驟成員,再通過API help檢索該對象所有下屬數成員(屬性、方法等)的解釋。將功能不確定的疑似分步驟函數依次通過幫助文件中的實例驗證并確定其功能。最終,將各分步驟函數的輸出結果按需求進行串行或并行整合,驗證是否能夠分步驟完成該操作。

兩種二次開發代碼編寫方法均需要借助API接口進行操作,有所不同的是第一種方法對SolidWorks API help的依賴程度要高于第二種,靈活程度要低于第二種。第二種方法在開發中更加充分地發揮了人的主觀能動性,使二次開發更加有創新的意義。

3 SolidWorks二次開發方法應用示例

某制造企業設計部門使用SolidWorks建模工具并且二維、三維設計功能同時運用。該企業在工作流程管理中缺少工程圖BOM批量導出為Excel工作簿的功能。本文針對此需求運用第2章節中的第二種代碼編寫方法進行解決。

此次二次開發的關鍵是將工程圖中材料明細表自動導出為Excel工作簿。由于此功能可以在SolidWorks中通過人為操作實現,因此首先采用第一種方法,進行一次宏錄制并分析所錄制的代碼。在一張裝配圖的材料明細表處右鍵【另存為】,選擇文件保存類型為【Excel(*.xls)】即可。但錄制的結果在去除非必要代碼后只剩一條選擇命令“SelectedByID2”(如圖6中標記所示)。

圖6 BOM表另存Excel工作簿宏錄制結果

由此可見,這里需要采取第二種方法將該操作分為若干步驟并依次尋找分步驟的函數。筆者將該操作分為提取材料明細表數據以及Excel數據導入與保存兩大步驟,最終將這兩步驟串行組合即可。第二分步驟還需要運用到Excel的二次開發,將在下文進行簡述。

在宏錄制的結果中,經過SolidWorks API help的詳細查詢,SelectedByID2函數中加框標注的第二個參數就是該選中對象的類型,但此處的類型名稱與該對象的名稱并不相同。通過API help中的參數列表查詢可知該對象就是上文提到的“TableAnnotation”。

TableAnnotation對象屬性與函數中包含有行數“RowCount”、列數“ColumnCount”和指定單元格內容“Text(Row,Column)”3個可以組合循環嵌套來讀取整張材料明細表內容的函數。通過記錄每個單元格的內容以及位置可以將整張表復制到Excel中去,完成自動操作的目的。這種方法非常便捷,并且在數據搬動的過程中沒有數據損失,保證了較高的可靠性。

在完成第一分步驟“提取材料明細表數據”后,接下來就需要對Excel進行二次開發完成Excel數據導入與保存的步驟。Excel二次開發的思路與SolidWorks二次開發思路大致是相同的,開發的目的同樣是實現自動輸入及保存工作簿。通過錄制在不同單元格內輸入字符代碼時的宏,了解Excel二次開發的相關句法結構以及開發應使用的部分接口函數。使用Visual Basic6.0開發Excel前需將其對象類型庫如圖7所示加載至工程中,關注【對象瀏覽器】中【Excel】工程/庫所含有的“Workbook ::Worksheets”、“Worksheet ::Range”、“Range ::Activate”、“Range ::Cells”與“Workbook ::SaveAs”等關鍵函數。

圖7 VB引用SolidWorks與Excel對象類型庫

工程圖中的材料明細表數據使用以上提取方法后即可保存在指定位置的Excel中,BOM表導出為Excel工作簿程序界面如圖8所示,輸出結果如圖9、圖10所示。以下是工程圖明細表提取的關鍵代碼:

For i = TotleRow To TotleRow + swTable.RowCount - 1 '列循環

For j = 0 To swTable.ColumnCount - 1 '行循環

If InStr(1, swTable.Text(i - TotleRow, j), "") Then

InterChangeArr(j, i) = Right(swTable.Text(i - TotleRow _

, j), Len(swTable.Text(i - TotleRow, j)) - Len("")) '給數組InterChangeArr變量賦值

Else

InterChangeArr(j, i) = swTable.Text(i - TotleRow, j) '給 _數組InterChangeArr變量賦值

End If

Next

Next

TotleRow = TotleRow + swTable.RowCount '統計行數

TotleCol = swTable.ColumnCount '統計列數

圖8 BOM表導出為Excel工作簿程序界面

圖9 工程圖內明細表

圖10 明細表導出為Excel工作簿

4 結語

簡要介紹了SolidWorks二次開發的應用和發展情況以及API接口函數及其對象的基本結構、開發工具以及對于開發非常重要的宏錄制工具。詳細介紹了Visual Basic中【對象瀏覽器】、SolidWorks API help幫助文件的使用方法以及SolidWorks二次開發代碼的3種遞進式閱讀方法。借助使用二次開發解決某企業實際問題的方式,全方位的介紹了SolidWorks二次開發代碼的2種遞進式編寫方法。希望通過對SolidWorks二次開發的詳盡說明能夠對其他三維建模工具的二次開發提供借鑒。

猜你喜歡
二次開發方法
淺談基于Revit平臺的二次開發
甘肅科技(2020年20期)2020-04-13 00:30:02
西門子Operate高級編程的旋轉坐標系二次開發
淺談Mastercam后處理器的二次開發
模具制造(2019年3期)2019-06-06 02:11:02
學習方法
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
Micaps3.2 版本二次開發入門淺析
西藏科技(2015年12期)2015-09-26 12:13:51
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
ANSYS Workbench二次開發在汽車穩定桿CAE分析中的應用
汽車零部件(2014年5期)2014-11-11 12:24:32
主站蜘蛛池模板: 国产成人高清精品免费5388| 久久毛片网| 色悠久久综合| 亚洲 欧美 日韩综合一区| 国产福利在线观看精品| 网友自拍视频精品区| 亚洲国产成人麻豆精品| 99久久精品美女高潮喷水| 免费看美女自慰的网站| 国产原创演绎剧情有字幕的| 人妻丰满熟妇av五码区| 国产免费观看av大片的网站| 日本不卡在线| 伊人久久大香线蕉综合影视| 亚洲视频免费播放| 亚洲黄色视频在线观看一区| 人妻丰满熟妇AV无码区| 欧美成人手机在线观看网址| 国产高清又黄又嫩的免费视频网站| 亚洲中文字幕无码爆乳| 午夜丁香婷婷| 天堂av高清一区二区三区| 中文字幕人成乱码熟女免费| 97超级碰碰碰碰精品| 久久久久久尹人网香蕉 | 中文字幕在线播放不卡| 亚洲免费成人网| 欧美日韩动态图| 亚洲人精品亚洲人成在线| 国产日本视频91| 青草视频在线观看国产| 欧美激情综合一区二区| 狠狠操夜夜爽| 久久狠狠色噜噜狠狠狠狠97视色 | 国产在线观看91精品亚瑟| 日本少妇又色又爽又高潮| 1769国产精品视频免费观看| 国国产a国产片免费麻豆| 国产你懂得| 狠狠色狠狠综合久久| 欧美高清国产| 在线日韩日本国产亚洲| 国产一区二区色淫影院| 凹凸精品免费精品视频| 在线免费看黄的网站| 亚洲熟女偷拍| 中文字幕资源站| 亚洲色图综合在线| 综合色婷婷| 亚洲精品无码av中文字幕| 99精品福利视频| 91原创视频在线| 九九九精品视频| 伊人久久影视| 91亚洲视频下载| 日本欧美一二三区色视频| 亚洲一区二区三区在线视频| 欧美亚洲一二三区| 一级片一区| 亚洲综合片| 国产菊爆视频在线观看| 欧美专区日韩专区| 日本午夜影院| 久久综合亚洲鲁鲁九月天| 国产无码制服丝袜| 亚洲中文字幕手机在线第一页| 偷拍久久网| 亚洲一区二区日韩欧美gif| 久久综合伊人 六十路| 久久人人97超碰人人澡爱香蕉 | 国产成人高清精品免费5388| 久久综合丝袜长腿丝袜| 2022国产无码在线| 国产精品视频第一专区| 精品久久久久无码| 青青久视频| 日韩成人免费网站| 亚洲国产成人超福利久久精品| 亚洲天堂免费| 日本久久久久久免费网络| 99久久精品视香蕉蕉| 国产午夜精品一区二区三|