/// <summary> /// 设置动态块的动态属性 /// </summary> /// <param name="blockId">动态块的ObjectId</param> /// <param name="propName">动态属性的名称</param> /// <param name="value">动态属性的值</param> public static void SetDynBlockValue(this ObjectId blockId, string propName, object value) { var props = blockId.GetDynProperties();//获得动态块的所有动态属性 //遍历动态属性 foreach (DynamicBlockReferenceProperty prop in props) { //如果动态属性的名称与输入的名称相同且为可读 if (prop.ReadOnly == false && prop.PropertyName == propName) { //判断动态属性的类型并通过类型转化设置正确的动态属性值 switch (prop.PropertyTypeCode) { case (short)DynBlockPropTypeCode.Short: //短整型 prop.Value = Convert.ToInt16(value); break; case (short)DynBlockPropTypeCode.Long: //长整型 prop.Value = Convert.ToInt64(value); break; case (short)DynBlockPropTypeCode.Real: //实型 prop.Value = Convert.ToDouble(value); break; default: //其它 prop.Value = value; break; } break; } } }
/// <summary> /// 获取动态块的动态属性值 /// </summary> /// <param name="blockId">动态块的Id</param> /// <param name="propName">需要查找的动态属性名</param> /// <returns>返回指定动态属性的值</returns> public static string GetDynBlockValue(this ObjectId blockId, string propName) { string propValue = null; //用于返回动态属性值的变量 var props = blockId.GetDynProperties(); //获得动态块的所有动态属性 //遍历动态属性 foreach (DynamicBlockReferenceProperty prop in props) { //如果动态属性的名称与输入的名称相同 if (prop.PropertyName == propName) { //获取动态属性值并结束遍历 propValue = prop.Value.ToString(); break; } } return(propValue);//返回动态属性值 }