Revit二次开发,判断参数的值类型

怎么判断Revit的参数Parameter的值类型呢?

方法一、通过StorageType判断,请看下图:

Revit二次开发,判断参数的值类型_第1张图片

使用StorageType,可以进行判断。StorageType一共分以下几种:

None = 0,
Integer = 1,
Double = 2,
String = 3,
ElementId = 4

从字面意思是比较好理解的。其中None的话,我也不知道在什么条件下触发。ElementId就是元素id,你可以当成是一个Int值。

提供一个简单类:

    /// 
    /// 编码定义
    /// 
    /// 
    /// marc
    public interface ICodeDefinition
    {
        /// 
        /// 编码号
        /// 
        T Code { get; }
        /// 
        /// 描述
        /// 
        string Description { get; }
        /// 
        /// 编码名称
        /// 
        string Name { get; }
    }

    /// 
    /// 编码定义
    /// 
    /// marc
    public class CodeDefinition : ICodeDefinition
    {
        /// 
        /// 编码名称
        /// 
        public string Name { get; }

        /// 
        /// 编码号
        /// 
        public T Code { get; }

        /// 
        /// 描述
        /// 
        public string Description { get; }

        /// 
        /// 构造函数
        /// 
        public CodeDefinition(string name, T code, string description)
        {
            this.Name = name;
            this.Code = code;
            this.Description = description;
        }
    }

    /// 
    /// 属性值的类型定义
    /// 
    internal class FieldTypeDefinition
    {
        /// 
        /// 字符串
        /// 
        public static CodeDefinition String = new CodeDefinition("字符串", 0, "字符串");
        /// 
        /// 长字符串
        /// 
        public static CodeDefinition LString = new CodeDefinition("长字符串", 12, "长字符串");
        /// 
        /// 整数
        /// 
        public static CodeDefinition Int = new CodeDefinition("整数", 2, "整数");
        /// 
        /// 浮点数
        /// 
        public static CodeDefinition Double = new CodeDefinition("浮点数", 3, "浮点数");
        /// 
        /// 日期
        /// 
        public static CodeDefinition Date = new CodeDefinition("日期", 1, "日期");
        /// 
        /// 坐标点
        /// 
        public static CodeDefinition Coordinate = new CodeDefinition("坐标点", 4, "坐标点(X,Y,Z)");
        /// 
        /// 高程坐标
        /// 
        public static CodeDefinition Elevation = new CodeDefinition("高程坐标", 6, "高程坐标(X,Y,Z)");
        /// 
        /// 向量值
        /// 
        public static CodeDefinition Vector = new CodeDefinition("向量值", 5, "向量值");
        /// 
        /// 用户
        /// 
        public static CodeDefinition User = new CodeDefinition("用户", 8, "用户");
        /// 
        /// 部门
        /// 
        public static CodeDefinition Depart = new CodeDefinition("部门", 9, "部门");
        /// 
        /// 实体
        /// 
        public static CodeDefinition Entity = new CodeDefinition("实体", 10, "实体");

        /// 
        /// 转为大数据的属性类型
        /// 
        /// 
        /// Revit存储类型:        
        /// None = 0,
        /// Integer = 1,
        /// Double = 2,
        /// String = 3,
        /// ElementId = 4
        /// 
        /// 
        public static CodeDefinition As(string revitStorageType)
        {
            if (revitStorageType == "None")
            {
                return String;
            }
            else if (revitStorageType == "Integer")
            {
                return Int;
            }
            else if (revitStorageType == "Double")
            {
                return Double;
            }
            else if (revitStorageType == "String")
            {
                return String;
            }
            else if (revitStorageType == "ElementId")
            {
                return Int;
            }

            return String;
        }
    }

方法二、通过ParameterGroup来判断,如下图:

Revit二次开发,判断参数的值类型_第2张图片

但使用此方式,更适合于判断某一类的参数。而不是特别适合于参数值的类型判断。当然,某一类的参数,他们的参数值的类型应该是一样的就是了。

建议您使用方式一进行处理。

 

祝您用餐愉快。

你可能感兴趣的:(Revit二次开发)