Revit二次开发之单位转换

Revit内部基本单位是英尺,如果要获取或设置构件参数数值需要进行单位转换,比如转换为基本的毫米或米等单位

1.可以使用常规方式进行转换:

  1英尺等于0.3047999995367米,等于304.7999995367毫米

2.可以使用RevitAPI内置的转换函数进行目标单位的转换

  使用UnitUtils函数的public static double Convert(double value,DisplayUnitType currentDisplayUnit,DisplayUnitType desiredDisplayUnit)方法

  可以判断参数是以何种单位显示在界面上的。如:Parameter.DisplayUnitType属性,然后根据DisplayUnitType枚举找到想要转换的单位类型

            UIApplication uiapp = commandData.Application;

            UIDocument uidoc = uiapp.ActiveUIDocument;

            Document doc = uiapp.ActiveUIDocument.Document;

            Reference refer = uidoc.Selection.PickObject(ObjectType.Element, "");

            Wall wall = doc.GetElement(refer) as Wall;

            double value= 0;

            foreach (Parameter p in wall.Parameters)

            {

                if (p.Definition.Name == "长度")//面积 //体积

                {

                   // MessageBox.Show(p.DisplayUnitType.ToString());判断参数数值是以何种单位显示在界面上的

                    value = p.AsDouble();

                    

                    break;

                }

            }

          //英尺到米

          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枚举内含有大量的单位类型 读者可以根据所需单位进行查找。

猜你喜欢

转载自blog.csdn.net/u010585773/article/details/83179482