使用API為SOLIDWORKS自動(dòng)化創(chuàng)建C#插件
在 Microsoft Visual Studio 中創(chuàng)建新項(xiàng)目。
在 Visual C# 模板下選擇“類(lèi)庫(kù)”模板。指定項(xiàng)目的位置和名稱(chēng)。

添加對(duì) SolidWorks Interop 庫(kù)的引用:SolidWorks.Interop.sldworks.dll、SolidWorks.Interop.swconst.dll、SolidWorks.Interop.swpublish.dll?;ゲ僮鲙?kù)位于 SOLIDWORKS安裝文件夾\api\redist(面向框架 4.0 及更高版本的項(xiàng)目)和 SOLIDWORKS安裝文件夾\api\redist\CLR2(面向框架 2.0 和 3.5 的項(xiàng)目)。
對(duì)于面向 Framework 4.0 的項(xiàng)目,我建議將“嵌入互操作類(lèi)型”(https://learn.microsoft.com/zh-cn/dotnet/framework/interop/type-equivalence-and-embedded-interop-types)選項(xiàng)設(shè)置為 false。否則,由于類(lèi)型轉(zhuǎn)換問(wèn)題,在調(diào)用 SOLIDWORKS API 時(shí),應(yīng)用程序可能會(huì)出現(xiàn)不可預(yù)測(cè)的行為。

在一些教程中,添加了對(duì)solidworkstools.dll庫(kù)的引用。此庫(kù)是可選的,本教程中不會(huì)使用它。
添加一個(gè)公共類(lèi)(public class),并取一個(gè)對(duì)用戶(hù)友好的名稱(chēng)。這將是插件的主類(lèi)。此類(lèi)必須是公共的且 COM 可見(jiàn)。我建議使用ComVisible特性(https://learn.microsoft.com/zh-cn/dotnet/api/system.runtime.interopservices.comvisibleattribute?view=netframework-4.7.2)將類(lèi)標(biāo)記為 COM 可見(jiàn)對(duì)象,并使用 Guid特性(https://learn.microsoft.com/zh-cn/dotnet/api/system.runtime.interopservices.guidattribute?view=netframework-4.7.2)為插件類(lèi)顯式分配 COM GUID:
我建議不要在項(xiàng)目設(shè)置中選擇【使程序集 COM 可見(jiàn)】選項(xiàng),而只是如上所述將所需的類(lèi)標(biāo)記為 COM 可見(jiàn)。

插件 dll 必須使用 /codebase 標(biāo)志注冊(cè)。注冊(cè)項(xiàng)目設(shè)置中可用的 COM 互操作選項(xiàng)在注冊(cè)時(shí)不使用此選項(xiàng),因此不適合這種情況。而是添加生成后操作,如下所示:

這將確保在插件項(xiàng)目的每個(gè)生成(build)上正確注冊(cè)。
為了增強(qiáng)調(diào)試(debugging)體驗(yàn),我建議在項(xiàng)目設(shè)置中將【啟動(dòng)外部應(yīng)用程序】設(shè)置為 SOLIDWORKS程序的完整路徑。

這將允許通過(guò)按綠色運(yùn)行按鈕或F5鍵啟動(dòng)SOLIDWORKS并從Visual Studio自動(dòng)附加調(diào)試器。
需要將注冊(cè)表信息添加到 SOLIDWORKS 注冊(cè)表分支,使其對(duì)應(yīng)用程序可見(jiàn)。為了簡(jiǎn)化過(guò)程,當(dāng)dll注冊(cè)和取消注冊(cè)為COM對(duì)象時(shí),可以通過(guò)定義函數(shù)并使用 ComRegisterFunction特性和 ComUnregisterFunction特性修飾它們來(lái)自動(dòng)添加和刪除此信息。
復(fù)制粘貼插件的代碼,如下所示并編譯項(xiàng)目。
編譯時(shí),可能會(huì)顯示以下警告。

可以忽略此警告。
運(yùn)行 SOLIDWORKS,啟動(dòng)時(shí)將顯示 Hello World 消息框。
上面的代碼可以在xCAD.NET框架(https://xcad.xarial.com/)的幫助下簡(jiǎn)化,如下所示:
文章翻譯自https://www.codestack.net/
僅供學(xué)習(xí)使用。