1. SolidWorks二次开发概述:自定义属性管理的重要性
在机械设计领域,SolidWorks作为主流的三维CAD软件,其二次开发能力为工程师提供了强大的定制化工具。我从事SolidWorks二次开发已有8年时间,发现自定义属性管理是实际项目中最常被调用的功能之一。通过API操作模型属性,可以实现BOM表自动生成、参数化设计等高级功能,大幅提升设计效率。
CustomPropertyManager接口是处理自定义属性的核心对象,而GetType2方法则是判断属性类型的关键。不同于基础属性操作,类型判断能帮助我们构建更健壮的自动化流程。比如当处理来自不同设计师的模型时,属性可能是文本、数字或日期等不同类型,准确识别这些类型才能避免后续处理中的类型转换错误。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 开发环境配置与基础准备
2.1 开发环境搭建要点
我推荐使用SolidWorks 2024与Visual Studio 2022的组合,这是目前最稳定的开发环境。安装时需注意:
- 确保安装SolidWorks API SDK(默认安装包含)
- VS2022需安装.NET桌面开发工作负载
- 添加SolidWorks互操作程序集引用:
- 在解决方案资源管理器右键项目
- 选择"添加"→"引用"
- 浏览到SolidWorks安装目录(通常为C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS)
- 添加sldworks.tlb和swpublished.tlb
重要提示:务必保持SolidWorks版本与API引用的版本一致,否则会出现兼容性问题。我曾遇到因版本不匹配导致的"无效类字符串"错误,耗费半天时间排查。
2.2 初始化SolidWorks应用程序
连接SolidWorks实例是开发的第一步,以下是经过生产验证的初始化代码:
csharp复制using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
public class SwPropertyHelper
{
private ISldWorks _swApp;
public bool ConnectToSw()
{
try
{
_swApp = Activator.CreateInstance(
Type.GetTypeFromProgID("SldWorks.Application")) as ISldWorks;
_swApp.Visible = true;
return true;
}
catch(Exception ex)
{
Console.WriteLine($"连接失败: {ex.Message}");
return false;
}
}
}
这段代码通过COM激活SolidWorks实例,与直接调用运行中的实例相比,这种方式的优点是:
- 独立启动新进程,不影响其他正在运行的SolidWorks
- 避免因用户意外关闭SolidWorks导致开发环境崩溃
- 更清晰的错误隔离
3. 深入解析CustomPropertyManager接口
3.1 获取CustomPropertyManager对象
在操作自定义属性前,必须先获取CustomPropertyManager对象。根据我的项目经验,有几种典型场景:
- 零件文档属性:
csharp复制var partDoc = _swApp.IActiveDoc2 as ModelDoc2;
var propMgr = partDoc.Extension.CustomPropertyManager[""];
2
