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

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

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

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

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

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

提供一个简单类:

    /// <summary>
    /// 编码定义
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <creator>marc</creator>
    public interface ICodeDefinition<out T>
    {
        /// <summary>
        /// 编码号
        /// </summary>
        T Code { get; }
        /// <summary>
        /// 描述
        /// </summary>
        string Description { get; }
        /// <summary>
        /// 编码名称
        /// </summary>
        string Name { get; }
    }

    /// <summary>
    /// 编码定义
    /// </summary>
    /// <creator>marc</creator>
    public class CodeDefinition<T> : ICodeDefinition<T>
    {
        /// <summary>
        /// 编码名称
        /// </summary>
        public string Name { get; }

        /// <summary>
        /// 编码号
        /// </summary>
        public T Code { get; }

        /// <summary>
        /// 描述
        /// </summary>
        public string Description { get; }

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

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

        /// <summary>
        /// 转为大数据的属性类型
        /// </summary>
        /// <param name="revitStorageType">
        /// Revit存储类型:        
        /// None = 0,
        /// Integer = 1,
        /// Double = 2,
        /// String = 3,
        /// ElementId = 4
        /// </param>
        /// <returns></returns>
        public static CodeDefinition<int> 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来判断,如下图:

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

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

 

祝您用餐愉快。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值