1. 程式人生 > >Revit二次開發—賦值問題(單位轉化)

Revit二次開發—賦值問題(單位轉化)

通過二次開發設定引數值,存在單位轉化問題

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

//獲取引數值
 param.AsValueString()
//設定引數值
 param.Set(100/304.8) //100為英尺