1. SolidWorks二次开发环境搭建
1.1 开发工具准备
要开始SolidWorks二次开发,首先需要准备以下开发环境:
- SolidWorks 2024(或兼容版本)
- Visual Studio 2022(推荐使用Community版)
- .NET Framework 4.8或更高版本
安装时需要注意:
- 先安装Visual Studio,选择".NET桌面开发"工作负载
- 再安装SolidWorks,确保勾选"API SDK"选项
- 最后配置项目引用时,需要添加对SolidWorks Interop库的引用
提示:建议使用与SolidWorks版本匹配的VS版本,避免兼容性问题。例如SolidWorks 2024最好搭配VS2022。
1.2 项目基础配置
在VS中创建新的C#类库项目后,需要进行以下配置:
-
添加COM引用:
- 右键项目 → 添加 → COM引用
- 选择"SolidWorks 2024 Type Library"
- 同时添加"SolidWorks 2024 Constant Type Library"
-
设置项目属性:
- 目标框架:.NET Framework 4.8
- 平台目标:x86(因为SolidWorks是32位应用)
- 启用"允许不安全代码"
-
添加必要的using语句:
csharp复制using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System.Runtime.InteropServices;
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. SolidWorks API基础连接
2.1 连接SolidWorks实例
获取SolidWorks应用实例有两种主要方式:
- 通过COM激活(如输入示例所示):
csharp复制ISldWorks _swApp = Activator.CreateInstance(
Type.GetTypeFromProgID("SldWorks.Application")) as ISldWorks;
- 通过运行实例连接:
csharp复制ISldWorks _swApp = Marshal.GetActiveObject("SldWorks.Application") as ISldWorks;
第一种方式会启动新的SolidWorks实例,第二种会连接到已运行的实例。实际开发中,我通常会在代码中添加判断逻辑,优先尝试连接已有实例,失败后再创建新实例。
2.2 基础连接代码优化
一个更健壮的连接代码应该包含以下要素:
csharp复制public ISldWorks ConnectToSolidWorks(bool visible = true)
{
ISldWorks swApp = null;
try
{
// 先尝试获取正在运行的SolidWorks实例
swApp = Marshal.GetActiveObject("SldWorks.Application") as ISldWorks;
}
catch(COMException)
{
try
{
// 如果没有运行实例,则创建新实例
swApp = Activator.CreateInstance(
Type.GetTypeFromProgID("SldWorks.Application")) as ISldWorks;
// 等待SolidWorks完全启动
int timeout = 10; // 10秒超时
while(swApp == null && timeout-- > 0)
{
Thread.Sleep(1000);
swApp = Marshal.GetActiveObject("SldWorks.Application") as ISldWorks;
}
}
catch(Exception ex)
{
throw new Exception("无法连接到SolidWorks: " + ex.Message);
}
}
if(swApp != null)
{
swApp.Visible = visible;
}
return swApp;
}
这段代码增加了错误处理和超时机制,在实际项目中更加可靠。
3. 自定义属性管理深入解析
3.1 CustomPropertyManager接口概览
CustomPropertyManager是SolidWorks API中用于管理文档自定义属性的核心接口,主要功能包括:
- 添加/删除自定义属性
- 获取/设置属性值
- 枚举所有属性
- 管理配置特定属性
关键方法:
GetAll3()- 获取所有属性名和值Get6()- 获取特定属性的详细信息Set2()- 设置属性值Add3()- 添加新属性Delete()- 删除属性
3.2 GetAll3方法详解
GetAll3方法的完整签名如下:
csharp复制object GetAll3(string ConfigName, out object Values, out object Types);
参数说明:
- `ConfigN
