Revit二次開發—賦值問題(單位轉化)
阿新 • • 發佈:2018-12-21
通過二次開發設定引數值,存在單位轉化問題
原因: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為英尺