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