這是兩年前畢業時寫的一篇關於SolidWorks插件開發與公司PDM集成的畢業設計,最近閒來無事拿出來整理一下,大神們可以略過。
1.1 SolidWorks API接口
正確調用SolidWorks API 是完成SolidWorks二次開發中參數化設計的基礎。調用SolidWorksAPI 是指調用SolidWorks 的事件、方法、屬性、以及相關功能,從而完成零部件實體建模的全過程。
SolidWorks的API接口分為兩種:一種是基於OLE Autonation的IDispatch技術;另一種是基於Windows基礎的COM 。
OLE(Object Linking and Embedding,對象連接與嵌入),簡稱OLE技術。
基於OLE Automation 的IDispatch 技術作為快速開發的手段,一般常用於VB、Delphi 編程語言的接口,通過IDispatch 接口暴露對象的屬性和方法,以便在客戶程序中使用這些屬性並調用它所支持的方法。此種技術只能開發EXE 形式的程序,所開發的CAD 系統不能直接加掛在SolidWorks 系統界面下,無法實現與SolidWorks 系統的集成[12]。
COM(Component Object Model ,組件對象模型)[13]技術是SolidWorks API 的基礎,是Microsoft 公司提出的並被大多數公司支持的一種標准協議,它建立了一個軟件模塊同另一個軟件模塊的連接,當這種連接建立之後,兩個模塊之間就可以通過接口來進行通訊。COM接口更為簡潔高效,這種技術可以使用最多的SolidWorks API 函數。
1.2 SolidWorks API對象結構
Solidworks API 通過面向對象思想組織所有的接口對象,如圖3.1所示
Solidworks API對象可以分為以下幾個大類。
(1) 應用程序對象:應用程序對象包括SldWorks、ModelDoc2、PartDoc、AssemblyDoc及DrawingDoc對象。
(2) 配置文件對象:配置文件對象管理零件中不同模塊(零件文檔模式)與裝配體中不同零件(裝配體文檔模式)的狀態。
(3) 事件對象:Solidworks API接口中提供了對事件的支持,當前版本中支持的事件類型有AssemblyDoc事件、DrawingDoc事件、FeatMgrView事件、ModelView事件、PartDoc事件、SldWorks事件及SWPropertySheet事件。
(4) 注解對象:注解對象管理文檔的注解。
(5) 模型對象:模型對象描述SolidWorks內部數據結構。
(6) 特征對象:特診對象描述SolidWorks應用程序所提供的特征操作,這些特征對象與SolidWorks 軟件本身提供的特征操作相對應。
(7) 草圖對象:草圖對象包括管理所有的草圖元素,如圓弧、長方形、樣條曲線等。
1.3 SolidWorks API對象簡介
(1) SldWorks對象:SldWorks對象是所有其他對象的父類,提供了直接或間接訪問其他所有SolidWorks API接口的方法,在二次開發中訪問其他接口都要通過它。SldWor ks對象是二次開發中最重要的一個對象,通過它才能建立二次開發插件與SolidWorks 應用程序之間的連接。
(2) ModelDoc對象:ModelDoc對象是SldWorks對象的子對象,同時也是所有文檔模型對象(PartDoc對象、AssemblyDoc對象及DrawingDoc對象)的父對象,它封裝了不同文檔模型通用的屬性和方法,包括文檔打來、關閉、打印和保存等。同時,ModelDoc對象提供了直接訪問PartDoc對象、AssemblyDoc對象和DrawingDoc對象的方法。
(3) PartDoc對象:PartDoc對象提供Part文檔模式下的操作。
(4) AssemblyDoc對象:AssemblyDoc對象管理裝配體的操作時與裝配相關的,如導入零部件、添加/取消裝配關系、隱藏/現實零部件等。
(5) DrawingDoc對象:DrawingDoc對象管理工程圖文檔的操作,如創建、刪除、對其視圖等。
(6) SelectionMgr對象:SelectionMgr對象是選擇管理對象,用於管理用戶的選擇操作,通過它可以獲得指向當前用戶在SolidWorks中選擇的元素。