欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > solidwors插件 开发————仙盟创梦IDE

solidwors插件 开发————仙盟创梦IDE

2025/5/14 17:14:19 来源:https://blog.csdn.net/cybersnow/article/details/147929978  浏览:    关键词: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.

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词