1. 程式人生 > >Revit二次開發之單位轉換

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列舉內含有大量的單位型別 讀者可以根據所需單位進行查詢。