solidwors插件 開發————仙盟創夢IDE

SolidWorks VBS

SolidWorks 支持通過?VBScript(.vbs)腳本?進行簡單的二次開發(如自動化建模、批量操作等),但嚴格來說這屬于?腳本編程,而非傳統的插件(Plug-in)開發(插件通常基于 C#、等編譯型語言)。以下是?VBS 腳本開發的核心要點?和示例:

一、開發環境準備

  1. SolidWorks 對象模型
    VBS 腳本通過調用 SolidWorks 的?COM 對象接口?控制軟件,需了解其核心對象關系:

    • SldWorks:SolidWorks 應用程序對象(入口)。
    • ModelDoc2:文檔對象(零件、裝配體、工程圖)。
    • PartDoc/AssemblyDoc/DrawingDoc:具體文檔類型對象。
    • Feature/Sketch/Dimension:特征、草圖、尺寸等對象。
  2. 引用 SolidWorks COM 庫

基礎腳本示例:創建零件并拉伸

' 連接或啟動 SolidWorks
Set swApp = CreateObject("SldWorks.Application")
swApp.Visible = True ' 顯示界面' 創建零件文檔
Set part = swApp.NewPart()
Set model = part.GetModelDoc2()' 創建草圖(前視基準面)
Set sketchPlane = model.GetPlane(3) ' 前視基準面的 ID 為 3
model.SetCurrentPlane(sketchPlane)
model.SendMsgToActiveView("Select")
model.SketchManager.InsertSketch True ' 激活草圖' 繪制矩形(草圖坐標:原點為中心)
Set sketchMgr = model.SketchManager
Set rect = sketchMgr.CreateLine2(-25, 0, 25, 0) ' 水平線
sketchMgr.CreateLine2(25, 0, 25, 25) ' 垂直線(右)
sketchMgr.CreateLine2(25, 25, -25, 25) ' 水平線(上)
sketchMgr.CreateLine2(-25, 25, -25, 0) ' 垂直線(左)
model.SketchManager.ConvertTo2DSketch ' 閉合草圖' 退出草圖并拉伸
model.FeatureManager.ExitSketch
Set extrudeFeat = model.FeatureManager.InsertExtrude2( _True, False, False, 0, 10, 0, 0, 0, 0, 0, 0, False) ' 拉伸高度 10mm

?

修改尺寸

  • 遍歷草圖尺寸并修改數值
For Each dim In model.SketchManager.GetSketch.DimensionsIf dim.GetName = "D1@草圖1" Thendim.SetValue3 20, 2, 0 ' 修改尺寸為 20mmEnd If
Next

批量操作(如批量保存文件)

Dim files()
files = Array("文件1.sldprt", "文件2.sldprt") ' 文件名列表
For Each file In filesSet model = swApp.OpenDoc(file, 1, 0, "") ' 打開零件(1 表示零件類型)model.SaveAs "D:\備份\" & file, 0, 0 ' 另存為新路徑model.Close()
Next

插件開發

SolidWorks 的 C# 插件開發基于?SolidWorks API(COM 接口),通過 .NET 框架實現與軟件的深度集成(如自定義工具欄、自動建模、工程圖批量處理等)。以下是?核心開發流程?和示例:

一、開發環境搭建

  1. 安裝依賴

    • 安裝?SolidWorks(需與開發目標版本一致)。
    • 安裝?SolidWorks SDK(隨 SolidWorks 安裝包提供,勾選 “API 工具”)。
    • 安裝?Visual Studio(推薦 2019/2022,需啟用 “.NET 桌面開發” 工作負載)。
  2. 創建項目

    • 打開 Visual Studio,新建?類庫(.NET Framework)?項目,目標框架選擇?.NET Framework 4.8(SolidWorks 2020+ 支持)。
    • 添加 SolidWorks API 引用:
      • 在 “解決方案資源管理器” 中右鍵 “引用”,選擇 “添加引用”。
      • 瀏覽至 SolidWorks 安裝目錄(如?C:\Program Files\SolidWorks Corp\SolidWorks),引用以下 DLL:
        • SolidWorks.Interop.sldworks.dll(核心接口)
        • SolidWorks.Interop.swconst.dll(常量定義)
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;public class MyAddIn : ISwAddIn
{private SldWorks swApp; // SolidWorks 應用程序對象private int addInID;    // 插件 ID// 插件加載時調用public bool ConnectToSW(object ThisSW, int Cookie){swApp = (SldWorks)ThisSW;addInID = Cookie;// 注冊命令(如添加菜單/按鈕)RegisterCommand();return true;}// 插件卸載時調用public bool DisconnectFromSW(){// 注銷命令UnregisterCommand();swApp = null;return true;}// 注冊自定義命令(示例:添加菜單按鈕)private void RegisterCommand(){int cmdID = 1001; // 自定義命令 IDswApp.AddCommandItem2(addInID, cmdID, "MyCommand", "示例命令", "點擊執行操作", swconst.swCommandItemType_e.swCommandItemType_Button, "Resources\\icon.ico", "Resources\\icon_small.ico");swApp.SetCommandHandler(cmdID, true, ref this); // 關聯命令處理函數}// 注銷命令private void UnregisterCommand(){swApp.RemoveCommandItem(addInID, 1001, swconst.swCommandItemType_e.swCommandItemType_Button);}// 處理命令點擊事件(需實現 _ISwAddInCallback 接口)public void OnCommand(int CmdID){if (CmdID == 1001){// 執行自定義邏輯(如創建零件)CreatePart();}}
}

?

?創建零件并添加拉伸特征

private void CreatePart()
{// 創建零件文檔ModelDoc2 part = swApp.NewPart();part = (ModelDoc2)swApp.ActiveDoc;// 繪制草圖(前視基準面)part.SetCurrentPlane((Plane)part.GetPlane((int)swconst.swPlaneName_e.swPlaneFront));part.SketchManager.InsertSketch(true);SketchManager sketchMgr = part.SketchManager;// 繪制矩形(原點為中心)sketchMgr.CreateLine2(-25, 0, 25, 0); // 水平線sketchMgr.CreateLine2(25, 0, 25, 25); // 垂直線(右)sketchMgr.CreateLine2(25, 25, -25, 25); // 水平線(上)sketchMgr.CreateLine2(-25, 25, -25, 0); // 垂直線(左)part.SketchManager.ConvertTo2DSketch(); // 閉合草圖// 退出草圖并拉伸part.FeatureManager.ExitSketch();object[] args = { true, false, false, 0, 10.0, 0, 0, 0, 0, 0, 0, false };part.FeatureManager.InsertExtrude2(args, 0); // 拉伸高度 10mm
}

遍歷打開的文檔

private void ListOpenDocuments()
{int docCount = swApp.GetDocumentCount();for (int i = 1; i <= docCount; i++){ModelDoc2 doc = (ModelDoc2)swApp.GetDocument(i);MessageBox.Show($"文檔名稱:{doc.GetPathName()}\n類型:{doc.GetType()}");}
}

注冊插件(兩種方式)

  • 手動注冊
    編譯生成 DLL 后,在 SolidWorks 中依次點擊?工具 > 插件 > 瀏覽,選擇生成的 DLL 文件并勾選啟用。
  • 代碼自動注冊
    在項目屬性中設置 “生成后事件”,使用?regasm?工具注冊(需管理員權限)
regasm "$(TargetPath)" /codebase /tlb

高級功能擴展

  1. 自定義用戶界面

    • 添加工具欄按鈕、菜單或 PropertyManager 面板:

      csharp

      // 添加工具欄按鈕
      swApp.AddCommandManagerTab2("MyTools", "我的工具", 0, "Resources\\tab_icon.ico");
      swApp.AddCommandItemToTab("MyTools", cmdID, swconst.swCommandItemType_e.swCommandItemType_Button);
      
  2. 事件監聽

    • 訂閱 SolidWorks 事件(如文檔打開、保存):

      csharp

      SldWorksEvents_Event swEvents = (SldWorksEvents_Event)swApp;
      swEvents.FileOpen += OnFileOpen; // 注冊文檔打開事件private void OnFileOpen(string fileName)
      {MessageBox.Show($"打開文檔:{fileName}");
      }
      
  3. 性能優化

    • 使用?ModelDoc2.SetUserPreferenceToggle?關閉重建預覽:

      csharp

      part.SetUserPreferenceToggle((int)swUserPreferenceToggleOptions_e.swToggleOptions_RebuildOnModify, false);
      

六、常見問題與解決方案

  1. COM 接口異常

    • 確保 SolidWorks 已啟動,或通過?Marshal.ReleaseComObject?釋放對象引用。
    • 避免跨線程操作 COM 對象,使用?STAThread?特性標記主入口。
  2. 版本兼容性

    • 不同 SolidWorks 版本的 API 可能存在差異,需通過?swApp.GetVersion()?判斷版本并適配。
  3. 依賴部署

    • 發布插件時需確保目標計算機安裝了對應版本的 SolidWorks 和 .NET Framework,并注冊插件 DLL。

參考資源

  • SolidWorks API 幫助文檔:安裝 SolidWorks 后,在 “開始菜單” 中搜索?SolidWorks API Help
  • 官方示例代碼:SolidWorks SDK 安裝目錄下的?samples\api?文件夾。

阿雪技術觀

元筋牢封固,后天化先天,未來之窗 生命對抗螺旋算法LAAM。自從中年后,很多了記憶減退,學習力減弱,直到耄耋之年。系統不在于新,而在于知道自己在哪里,然后做出正確選擇。

普通人想要創造出從沒見過的新東西,真不是件容易事。老記著過去的事兒吧,又會妨礙發揮;可要是完全不依靠過去的經驗,直接去學全新的東西,也難。所以說工具的關鍵,不在于創造本身,而是能把過去的經驗整合起來,幫助大家站在“前人肩膀”上突破,這樣人們就不用花大量時間去記以前的事兒,能更快實現從量變到質變的突破啦。

?The essence is firmly sealed, transforming acquired knowledge into innate wisdom, representing the window to the future. Life fights against the spiral algorithm LAAM. Since reaching middle age, many have experienced a decline in memory and learning ability, continuing to old age. The system does not rely on novelty, but on knowing where you are, and then making the right choices.For ordinary people, creating something completely new that has never been seen before is truly not an easy task. Holding onto past experiences can hinder performance; however, if one completely disregards past experiences and directly learns something entirely new, it is also challenging. Thus, the key to tools lies not in the creation itself, but in the ability to integrate past experiences, helping individuals to break through while standing on the 'shoulders of giants,' so that people do not have to spend a lot of time remembering past events, and can achieve breakthroughs more quickly from quantitative change to qualitative change.

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/80513.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/80513.shtml
英文地址,請注明出處:http://en.pswp.cn/web/80513.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

docker(二)初識 docker

在第一章的容器化架構中&#xff0c;我們已經了解到了 docker 是一個容器化技術&#xff0c;本章將詳細介紹什么是虛擬化、容器化技術&#xff0c;以及什么是 docker。 一、物理機 VS 虛擬化 VS 容器化 物理機&#xff1a; 實際的服務器或者計算機。是相對于虛擬機而言的對實體…

ChatGPT + DeepSeek 聯合潤色的 Prompt 模板指令合集,用來潤色SCI論文太香了!

對于非英語母語的作者來說,寫SCI論文的時候經常會碰到語法錯誤、表達不夠專業、結構不清晰以及術語使用不準確等問題。傳統的潤色方式要么成本高、效率低,修改過程又耗時又費力。雖然AI工具可以幫助我們來潤色論文,但單獨用ChatGPT或DeepSeek都會存在內容泛泛、專業性不足的…

python打包exe報錯:處理文件時錯誤:Excel xlsx file; not supported

背景&#xff1a;最近用python寫一個excel解析工具&#xff0c;然后打包成exe可執行文件的時候&#xff0c;遇到這樣的問題 1.在我自己編譯器運行是可以正常將上傳后的excel進行解析&#xff0c;但是在打包成exe后&#xff0c;就無法正常解析excel 問題排查&#xff1a; 1.切換…

Ubuntu操作合集

UFWUncomplicated Firewall 查看狀態和規則&#xff1a; 1查看狀態sudo ufw status&#xff0c; 2查看詳細信息sudo ufw status verbose&#xff0c; 默認策略配置&#xff1a; 1拒絕所有入站sudo ufw default deny incoming 2允許所有出戰sudo ufw default allow outgoing …

怎么用Origin畫出MATLAB效果的3D時頻圖

MATLAB畫3D時頻圖的效果比Origin差遠了....但用Origin去畫MATLAB需要一些過程 本帖讓你輕輕松松把MATLAB的時頻圖搬移到Origin中&#xff0c;然后擁有高級視圖的3D時頻圖&#xff0c;并且可以隨心調整格式 一、數據搬移 首先&#xff0c;在MATLAB中打開時頻圖變量 復制 在O…

OpenEvidence AI臨床決策支持工具平臺研究報告

平臺概述 OpenEvidence是一個專為醫療專業人士設計的臨床決策支持工具,旨在通過整合各類臨床計算器和先進的人工智能技術,提高醫生的診療決策效率和準確性。作為一款綜合性醫療平臺,OpenEvidence將復雜的醫學計算流程簡化,同時提供個性化的臨床建議,使醫生能夠更快、更準…

vim - v

在 Vim 中&#xff0c;使用 可視模式&#xff08;Visual Mode&#xff09; 可以選中文本并進行復制、剪切、粘貼等操作。以下是詳細的使用方法&#xff1a; 1. 進入可視模式 命令功能v字符可視模式&#xff08;按字符選擇&#xff09;V&#xff08;大寫&#xff09;行可視模式…

GUI圖形化演示

目錄 概述 常用組件如下&#xff1a; JFrame: 一.新建JFrame對象&#xff1a; 二.設置JFrame的大小&#xff1a; 三.設定JFrame的關閉方式 布局方式&#xff1a; setLayout 方法概述 常用布局管理器 自定義布局 注意事項 面板與布局的嵌套&#xff1a; 監聽器&#…

Visual Studio已更新為17.14+集成deepseek實現高效編程

01 Visual Studio 2022 v17.14。 此更新側重于全面提供出色的開發人員體驗&#xff0c;側重于穩定性和安全性以及 AI 改進。 02 GPT-4o代碼完成模式 我們非常高興地宣布&#xff0c;新的 GPT-4o Copilot 代碼完成模型現已在 Visual Studio 17.14 中為 GitHub Copilot 用戶…

URP相機如何將場景渲染定幀模糊繪制

1&#xff09;URP相機如何將場景渲染定幀模糊繪制 2&#xff09;為什么Virtual Machine會隨著游戲時間變大 3&#xff09;出海項目&#xff0c;打包時需要勾選ARMv7嗎 4&#xff09;Unity是手動還是自動調用GC.Collect 這是第431篇UWA技術知識分享的推送&#xff0c;精選了UWA社…

OpenAI推出Codex — ChatGPT內置的軟件工程Agents

OpenAI繼續讓ChatGPT對開發者更加實用。 幾天前,他們增加了連接GitHub倉庫的支持,可以"Deep Research"并根據你自己的代碼提問。 今天,該公司在ChatGPT中推出了Codex的研究預覽版,這是迄今為止最強大的AI編碼Agent。 它可以編寫代碼、修復錯誤、運行測試,并在…

Python × CARLA:如何在自動駕駛仿真世界里打造智能駕駛系統?

Python CARLA:如何在自動駕駛仿真世界里打造智能駕駛系統? 在人工智能與自動駕駛的浪潮中,真實世界的測試成本高昂,而自動駕駛仿真已成為開發者訓練和測試 AI 駕駛算法的關鍵技術手段。其中,CARLA(Car Learning to Act)作為開源自動駕駛仿真平臺,憑借其真實感強、高度…

低空態勢感知:基于AI的DAA技術是低空飛行的重要安全保障-機載端地面端

低空態勢感知&#xff1a;基于AI的DAA技術是低空飛行的重要安全保障-機載端&地面端 目前空中已經有大量無人機和其他飛機&#xff0c;未來幾年還會有空中出租車。目前&#xff0c;美國每年平均發生 15 到 25 起空中相撞事故。 檢測和避免 (DAA) 檢測和避免 (DAA) 技術可…

【springcloud學習(dalston.sr1)】Eureka 客戶端服務注冊(含源代碼)(四)

d該系列項目整體介紹及源代碼請參照前面寫的一篇文章【springcloud學習(dalston.sr1)】項目整體介紹&#xff08;含源代碼&#xff09;&#xff08;一&#xff09; springcloud學習&#xff08;dalston.sr1&#xff09;系統文章匯總如下&#xff1a; 【springcloud學習(dalsto…

CSS Grid布局:從入門到實戰

CSS Grid布局&#xff1a;從入門到實戰 一、初識Grid布局 還在為網頁布局發愁嗎&#xff1f;Flexbox雖然好用&#xff0c;但當遇到復雜布局時&#xff0c;CSS Grid才是真正的王者。Grid布局是CSS中最強大的二維布局系統&#xff0c;它就像一張無形的網格紙&#xff0c;讓我們…

MongoDB 應用實戰

1. java 原生客戶端 引入maven 1 <dependencies> 2 <dependency> 3 <groupId>org.mongodb</groupId> 4 <artifactId>mongodb‐driver‐sync</artifactId> 5 <version>4.1.1</version> 6 </dependency> 7 </depende…

linux下tcp/ip網絡通信筆記1,

本文章主要為博主在學習網絡通信的筆記一個Udp_echo_server,和client的代碼實現 1&#xff0c;網絡發展&#xff0c;網絡協議&#xff0c;意識到網絡通信——不同主機的進程間通信&#xff0c; 2&#xff0c;學習如何在應用層調用系統提供的接口進行通信&#xff0c;echo_Udp…

前端二進制數據指南:從 ArrayBuffer 到高級流處理

前端開發中&#xff0c;二進制數據是處理文件、圖像、音視頻、網絡通信等場景的基礎。以下是核心概念和用途的通俗解釋&#xff1a; 前端二進制數據介紹 1. 什么是前端二進制數據&#xff1f; 指計算機原始的 0 和 1 格式的數據&#xff08;比如一張圖片的底層代碼&#xff…

Cacti 未經身份驗證SQL注入漏洞

0x00 前言 Cacti是一套基于PHP,MySQL,SNMP及RRDTool開發的網絡流量監測圖形分析工具。 Cacti是通過 snmpget來獲取數據&#xff0c;使用 RRDtool繪畫圖形&#xff0c;而且你完全可以不需要了解RRDtool復雜的參數。 0x01 漏洞描述 漏洞存在于從graph_view.php文件調用的growt…

使用國內源加速Qt在線安裝

簡介&#xff1a; 在線安裝Qt時&#xff0c;會發現下載非常緩慢&#xff0c;可以用過使用國內鏡像源來加速安裝過程。 在線安裝包的下載過程&#xff1a; 1&#xff0c;打開下載頁面 https://www.qt.io/download-open-source 2&#xff0c;點擊 Download the Qt online ins…