為SOLIDWORKS API自動化創(chuàng)建C#獨立應用程序
在本教程中,我將演示如何使用 C# 和 Microsoft Visual Studio 從進程外(也稱為獨立)應用程序(例如 Windows Forms、Windows 控制臺)連接到 SOLIDWORKS 應用程序。
有關本文中討論的方法的更詳細說明,請閱讀《如何使用SOLIDWORKS API創(chuàng)建獨立(exe)應用程序》一文。

創(chuàng)建新項目
我將使用Microsoft Visual Studio開發(fā)環(huán)境。您可以使用任何版本的 Visual Studio。相同的代碼適用于專業(yè)版、精簡版或社區(qū)版。
打開 Visual Studio。
啟動新項目:

選擇項目模板。我建議從控制臺應用程序項目模板開始,因為它包含最少的預生成代碼:

添加對 SolidWorks 互操作庫的引用。
互操作庫文件位于SOLIDWORKS安裝文件夾\api\redist\SolidWorks.Interop.sldworks.dll(用于面向 Framework 4.0 及更高版本的項目),SOLIDWORKS安裝文件夾\api\redist\CLR2\SolidWorks.Interop.sldworks.dll(用于面向框架 2.0 和 3.5 的項目)。

對于面向 Framework 4.0 的項目,我建議將“嵌入互操作類型”選項設置為 false。否則,由于類型轉換問題,在調用 SOLIDWORKS API 時,應用程序可能會出現不可預測的行為。

現在我們可以添加代碼以連接到 SOLIDWORKS 實例。
創(chuàng)建或連接到SOLIDWORKS實例(譯者注:推薦)
連接到 COM 服務器的最常見和最快速的方法可能是使用 Activator::CreateInstance方法。(https://learn.microsoft.com/zh-cn/dotnet/api/system.activator.createinstance)
此方法將從類型定義構造類型的實例。由于SOLIDWORKS應用程序已注冊為COM服務器,因此我們可以通過 Type::GetTypeFromProgID方法(https://learn.microsoft.com/zh-cn/dotnet/api/system.type.gettypefromprogid)從其程序標識符創(chuàng)建類型。請閱讀《如何使用SOLIDWORKS API創(chuàng)建獨立(exe)應用程序》一文,了解此方法的限制說明。
或者,您可以使用 Marshal::GetActiveObject方法(https://learn.microsoft.com/zh-cn/dotnet/api/system.runtime.interopservices.marshal.getactiveobject)連接到SOLIDWORKS的活動(已啟動)會話。此方法將確保不會創(chuàng)建新的SOLIDWORKS實例,如果沒有要連接的正在運行的 SOLIDWORKS 會話,則會拋出異常。
通過 ROT 獲取正在運行的實例(譯者注:不推薦)
為了連接到已經運行的特定 SOLIDWORKS 會話或能夠創(chuàng)建多個會話,您可以使用正在運行的對象表 API。請閱讀《如何使用SOLIDWORKS API創(chuàng)建獨立(exe)應用程序》一文,了解有關此方法的更多詳細信息。
在上面的示例中,通過從SOLIDWORKS應用程序安裝路徑啟動新進程來啟動SOLIDWORKS的新會話。StartSwApp 函數需要 sldworks 的完整路徑.exe作為第一個參數,可選的超時(以秒為單位)作為第二個參數。超時將確保在進程無法啟動的情況下應用程序不會被鎖定。
您還可以使用異步調用,以便在SOLIDWORKS啟動時在應用程序中顯示一些進度指示:
文章翻譯自https://www.codestack.net/
僅供學習使用。??