using System.Collections.Specialized;
|
using System.IO;
|
using System.Threading;
|
|
namespace PdmSwPlugin.Common.Entity
|
{
|
/// <summary>
|
/// 通过 SolidWorks Document Management API (DM API) 得到的文档属性集合
|
/// </summary>
|
public class SldComponentInfo_DM
|
{
|
/// <summary>
|
/// 唯一标识
|
/// 内部产生,从 1 开始递增
|
/// </summary>
|
public int Id
|
{
|
get; set;
|
}
|
|
/// <summary>
|
/// 层级,顶级装配体的层级为 0, 其它的依次为 1, 2, 3, N
|
/// </summary>
|
public int Level
|
{
|
get; set;
|
}
|
|
/// <summary>
|
/// 父级的 Id,顶级装配体的父级 Id 为空 (0)
|
/// </summary>
|
public int ParentId
|
{
|
get; set;
|
}
|
|
/// <summary>
|
/// 子节点的数量,不包含本节点
|
/// </summary>
|
public int ChildrenCount
|
{
|
get; set;
|
}
|
|
/// <summary>
|
/// 全路径
|
/// </summary>
|
public string FullPath
|
{
|
get; set;
|
}
|
|
/// <summary>
|
/// 路径
|
/// </summary>
|
public string DirectoryName
|
{
|
get
|
{
|
try
|
{
|
return Path.GetDirectoryName(this.FullPath);
|
}
|
catch
|
{
|
return string.Empty;
|
}
|
}
|
}
|
|
/// <summary>
|
/// 纯文件名,没有后缀的
|
/// </summary>
|
public string FileNameWithoutExt
|
{
|
get
|
{
|
try
|
{
|
return Path.GetFileNameWithoutExtension(this.FullPath);
|
}
|
catch
|
{
|
return string.Empty;
|
}
|
}
|
}
|
|
/// <summary>
|
/// 文件名,有后缀的
|
/// </summary>
|
public string FileName
|
{
|
get
|
{
|
try
|
{
|
return Path.GetFileName(this.FullPath);
|
}
|
catch
|
{
|
return string.Empty;
|
}
|
}
|
}
|
|
/// <summary>
|
/// Tag, 可以不用,或自定义
|
/// </summary>
|
public string Tag
|
{
|
get; set;
|
}
|
|
/// <summary>
|
/// 名称,也就是在特征树里显示的名称,与物料编码不一样
|
/// </summary>
|
public string FeatureName
|
{
|
get; set;
|
}
|
|
/// <summary>
|
/// 特征的唯一 ID
|
/// </summary>
|
public int FeatureId
|
{
|
get; set;
|
}
|
|
/// <summary>
|
/// 压缩状态
|
/// </summary>
|
public bool IsSuppressed
|
{
|
get; set;
|
}
|
|
/// <summary>
|
/// 配置数量
|
/// </summary>
|
public int ConfigurationCount
|
{
|
get; set;
|
}
|
|
/// <summary>
|
/// 工程图名称
|
/// </summary>
|
public string FileName2D
|
{
|
get; set;
|
}
|
|
/// <summary>
|
/// 可见的吗?
|
/// </summary>
|
public bool Visible
|
{
|
get; set;
|
}
|
|
/// <summary>
|
/// 所有的自定义属性
|
/// </summary>
|
public NameValueCollection AllCustomProperties
|
{
|
get; set;
|
}
|
|
/// <summary>
|
/// 私有构造函数,任何调用者都没法直接生成一个不带参数的本类的实例了
|
/// </summary>
|
private SldComponentInfo_DM()
|
{
|
this.Id = -1;
|
this.Visible = true;
|
//this.IsSuppressed = false;
|
}
|
|
/// <summary>
|
/// 每个项都将设置一个惟一的 ID, 就从 0 开始
|
/// </summary>
|
private static int currentId = 0;
|
|
/// <summary>
|
/// 生成根节点,顶级装配体的信息
|
/// </summary>
|
/// <returns>顶级装配体的 ID = 1</returns>
|
public static SldComponentInfo_DM GenerateTheRoot()
|
{
|
currentId = 1;
|
return new SldComponentInfo_DM()
|
{
|
Id = currentId,
|
Level = 0,
|
ParentId = 0
|
};
|
}
|
|
/// <summary>
|
/// 生成下一个节点,反正不是顶级装配体
|
/// </summary>
|
/// <returns>当前节点,只设置一个属性 - Id,确保 Id 是唯一的</returns>
|
public static SldComponentInfo_DM GenerateTheNext()
|
{
|
int nextId = Interlocked.Increment(ref currentId);
|
return new SldComponentInfo_DM()
|
{
|
Id = currentId
|
};
|
}
|
}
|
}
|