如图所示,在Solidworks的模型,图纸文档中,都存在【自定义】【配置特定】属性,在这里可以给模型和图纸添加各种属性,以便属性数据反应在图纸上或提供下游生产制造使用。而当属性数量越来越多后,这些属性的写入与读取将会带来繁重的机械工作,人为地录入,不仅效率低下,还可能导致错误率的提升。本文将带领读者入门Solidworks中属性的自动添加与读取操作。
1.属性管理器对象获取
属性的写入与读取,需要使用到属性管理器对象CustomPropertyManager,该对象可由如下最常用的2种方式获取:
1)通过扩展文档对象获得(最为常用)
ModelDoc2 SwDoc;
ModelDocExtension SwDocExt=SwDoc.Extension;
CustomPropertyManager SwCusp=SwDocExt.CustomPropertyManager[ConfigName];
其中参数ConfigName,指操作的配置【配置特定】,如果为空,则表示操作【自定义】
2)通过配置对象获得
Configuration SwConfig;
CustomPropertyManager SwCusp=SwConfig.CustomPropertyManager;
2.属性的自动写入
自动写入属性,可以使用如下方法
CustomPropertyManager SwCusp;
value = SwCusp.Add3(FieldName, FieldType, FieldValue, OverwriteExisting)
实例讲解:
如下图,我们给模型自动写入如下属性
实例代码:
public static void WriteCusp(ModelDoc2 Doc)
{
CustomPropertyManager SwCusp = Doc.Extension.CustomPropertyManager[""];
string PartName = "长方体 \"D2@草图2@Solidworks属性学习.SLDPRT\"X\"D1@草图2@Solidworks属性学习.SLDPRT\"X\"D1@凸台-拉伸1@Solidworks属性学习.SLDPRT\"";
SwCusp.Add3("零件名", (int)swCustomInfoType_e.swCustomInfoText, PartName, (int)swCustomPropertyAddOption_e.swCustomPropertyReplaceValue);
SwCusp.Add3("代号", (int)swCustomInfoType_e.swCustomInfoText, "001", (int)swCustomPropertyAddOption_e.swCustomPropertyReplaceValue);
SwCusp.Add3("重量", (int)swCustomInfoType_e.swCustomInfoText, "\"SW-质量@Solidworks属性学习.SLDPRT\"", (int)swCustomPropertyAddOption_e.swCustomPropertyReplaceValue);
SwCusp.Add3("材料", (int)swCustomInfoType_e.swCustomInfoText, "\"SW-材质@Solidworks属性学习.SLDPRT\"", (int)swCustomPropertyAddOption_e.swCustomPropertyReplaceValue);
System.Windows.MessageBox.Show("属性写入成功!");
}
3.属性的读取
自定读取属性,可以使用如下方法
CustomPropertyManager SwCusp;
SwCusp.Get5(FieldName, UseCached, ValOut, ResolvedValOut, WasResolved)
实例讲解:
同样,我们读取之前写入的属性,代码示例如下:
public static void ReadCusp(ModelDoc2 Doc)
{
StringBuilder Sb = new StringBuilder("");
CustomPropertyManager SwCusp = Doc.Extension.CustomPropertyManager[""];
string outv = "";
string outr = "";
bool outresult = false;
SwCusp.Get5("零件名", true, out outv, out outr, out outresult);
Sb.Append("[零件名]:\r\n表达式:"+ outv+"\r\n评估值:"+ outr);
Sb.Append("\r\n");
SwCusp.Get5("代号", true, out outv, out outr, out outresult);
Sb.Append("[代号]:\r\n表达式:" + outv + "\r\n评估值:" + outr);
Sb.Append("\r\n");
SwCusp.Get5("材料", true, out outv, out outr, out outresult);
Sb.Append("[材料]:\r\n表达式:" + outv + "\r\n评估值:" + outr);
System.Windows.MessageBox.Show(Sb.ToString().Trim());
}
运行效果图:
如下图为本文的示例程序,源码可上我的Github下载。操作步骤可见文章《公众号源码Github分享库》, 实例序号9