64 lines
2.0 KiB
C#
64 lines
2.0 KiB
C#
using SolidWorks.Interop.sldworks;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Xarial.XCad.Data;
|
|
|
|
namespace Laservall.Solidworks.Extension
|
|
{
|
|
public static class SWDocWriter
|
|
{
|
|
// 根据文档与属性模型,写入自定义属性
|
|
public static void WriteDocProperties(IModelDoc2 doc, Model.PartPropModel partPropModel)
|
|
{
|
|
if (doc != null)
|
|
{
|
|
partPropModel.GetType().GetProperties().ToList().ForEach(p =>
|
|
{
|
|
// Get DisplayName attribute
|
|
p.CustomAttributes.ToList().ForEach(attr =>
|
|
{
|
|
if (attr.AttributeType == typeof(System.ComponentModel.DisplayNameAttribute))
|
|
{
|
|
var displayName = attr.ConstructorArguments[0].Value.ToString();
|
|
var val = p.GetValue(partPropModel);
|
|
if (val != null)
|
|
{
|
|
// 设置自定义属性值
|
|
SetDocProperty(doc, displayName, val.ToString());
|
|
}
|
|
}
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="model"></param>
|
|
/// <param name="propertyName"></param>
|
|
/// <returns></returns>
|
|
public static void SetDocProperty(IModelDoc2 model, string propertyName,string val)
|
|
{
|
|
if (model == null)
|
|
{
|
|
|
|
}
|
|
else
|
|
{
|
|
//swModel = (ModelDoc2)swApp.ActiveDoc;
|
|
ModelDocExtension swModelDocExt = model.Extension;
|
|
|
|
// Get the custom property data
|
|
CustomPropertyManager swCustProp = swModelDocExt.get_CustomPropertyManager("");
|
|
|
|
swCustProp.Set2(propertyName, val);
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|