通过二次开发设置参数值,存在单位转化问题
原因:Revit内部基本单位是英尺(foot),如果要获取或设置构件参数数值需要进行单位转换
1英尺 = 304.7999995367 mm = 304.8 mm
可以使用RevitAPI内置的转换函数进行目标单位的转换
使用UnitUtils函数的
public static double Convert(double value,DisplayUnitType currentDisplayUnit, DisplayUnitType desiredDisplayUnit)
可以判断参数是以何种单位显示在界面上的。如:Parameter.DisplayUnitType属性,然后根据DisplayUnitType枚举找到想要转换的单位类型
//英尺到米 double d = UnitUtils.Convert(value, DisplayUnitType.DUT_DECIMAL_FEET, DisplayUnitType.DUT_METERS); //英尺到毫米 double d = UnitUtils.Convert(value,DisplayUnitType.DUT_DECIMAL_FEET,DisplayUnitType.DUT_MILLIMETERS); //平方英尺到平方米 double d = UnitUtils.Convert(value, DisplayUnitType.DUT_SQUARE_FEET, DisplayUnitType.DUT_SQUARE_METERS); //立方英尺到立方米 double d = UnitUtils.Convert(value, DisplayUnitType.DUT_CUBIC_FEET, DisplayUnitType.DUT_CUBIC_METERS);
DisplayUnitType枚举内含有大量的单位类型 读者可以根据所需单位进行查找。
1. //获取参数值 2. param.AsValueString() 3. //设置参数值 4. param.Set(100/304.8) //100为英尺