背景: 在Dynamo中写Python脚本需要注意的一大问题就是“单位转换”,因为RevitAPI默认使用“feet”英尺为单位,而Dynamo使用的单位与Revit项目设置一致,国内一般设置为“mm”,两者之间的单位转换如下: 哪些地方需要转换? 在遇到需要单位转换的地方,写上上面的转换公式就可以了。问题是哪些地方需要做转换?下面举例说明:
1、在Python脚本中调用RevitAPI的方法设置某项属性,需要把单位转换成RevitAPI的单位,注意:如果调用的是Dynamo的方法,则不需要进行单位转换;
2、通过RevitAPI读取的属性值,再通过Dynamo方法赋值的时候,需要转换成项目单位;更加优雅的转换方式? 简单的长度单位换算,当然难不倒聪明的你,粘贴上面的公式,“啪”,成功了。 如果需要转换的不是长度单位呢?面积?体积?角度呢...?OK,就算你知道所有单位的转换公式,那你可知道每种量纲在RevitAPI中默认的单位是什么?长度是英尺,角度呢?是弧度还是度?坡度呢?是比例还是数值?。。。你可能需要继续查阅API,一顿操作之后也未必得出结论;那么有没有更加优雅的方式进行单位转换呢? 其实RevitAPI文档中的UnitUtils类已经为大家备好了相应的方法,该类有一大堆静态方法,比较常用的就是前三个方法。UnitUtils Class前三个方法的作用分别是:1、把一个double型的数值从一个单位转换成另外一个单位;2、把一个double型的数值从RevitAPI内部单位转换成给定单位;
3、把一个double型的数值从一个给定单位转换成RevitAPI内部单位;下面举例说明用法:(该方法完成了mm到ft的转换)B = UnitUtils.ConvertToInternalUnits(IN[2], DisplayUnitType.DUT_MILLIMETERS)有了以上几种方法,“妈妈再也不用担心我的单位转换了!!!”。