Solidworks中的属性

如图所示,在Solidworks的模型,图纸文档中,都存在【自定义】【配置特定】属性,在这里可以给模型和图纸添加各种属性,以便属性数据反应在图纸上或提供下游生产制造使用。而当属性数量越来越多后,这些属性的写入与读取将会带来繁重的机械工作,人为地录入,不仅效率低下,还可能导致错误率的提升。本文将带领读者入门Solidworks中属性的自动添加与读取操作。

image.png

1.属性管理器对象获取

属性的写入与读取,需要使用到属性管理器对象CustomPropertyManager,该对象可由如下最常用的2种方式获取:

1)通过扩展文档对象获得(最为常用)

ModelDoc2 SwDoc;
ModelDocExtension SwDocExt=SwDoc.Extension;
CustomPropertyManager SwCusp=SwDocExt.CustomPropertyManager[ConfigName];

其中参数ConfigName,指操作的配置【配置特定】,如果为空,则表示操作【自定义】

image.png

2)通过配置对象获得

Configuration SwConfig;
CustomPropertyManager SwCusp=SwConfig.CustomPropertyManager;

2.属性的自动写入

自动写入属性,可以使用如下方法

CustomPropertyManager SwCusp;
value = SwCusp.Add3(FieldName, FieldType, FieldValue, OverwriteExisting)
image.png
image.png
image.png

实例讲解:

如下图,我们给模型自动写入如下属性

image.png
实例代码:
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)
image.png
image.png

实例讲解:

同样,我们读取之前写入的属性,代码示例如下:


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());
}

运行效果图:

image.png

如下图为本文的示例程序,源码可上我的Github下载。操作步骤可见文章《公众号源码Github分享库》实例序号9

image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容