[英]Revit API changes wall parameters: from metadata it showed the correct result, not reflected in UI however
使用 revit-python-wrapper 创建墙,然后调整墙的高度和墙到地面的偏移。 这是代码
from rpw import db
from rpw import DB
start_point = XYZ(0, 0, 0)
end_point = XYZ(45, 0, 0)
# Wrapper Line
line = Line.new(start_point, end_point)
levels = db.Collector(of_class='Level')
level_0 = levels.get_first()
wall = DB.Wall.Create(doc, line.unwrap(), level_0.Id, False)
w = db.Wall(wall)
w.parameters['Unconnected Height'].value = 2675
w.parameters['Base Offset'].value = 45
在空的 Revit 项目中成功创建墙。 使用 snoop revit DB,只找到一堵墙。 身份证号:318835
检查属于此墙的参数 - 318835。参数“未连接高度”具有正确的双精度值:2675.0,参数“基础偏移”具有正确的双精度值:45.0。
到目前为止,一切都很完美,符合我的期望。
但是,从 UI 界面来看,创建的唯一墙显示在错误的位置。 在 3D 视图中,它位于高度为 4000 的 Level 1 之上。
并且从所选墙的比例选项卡中,这两个参数的值也错误。 “未连接高度”具有正确的双精度值:815340.0,参数“基本偏移”具有正确的双精度值:13716.0。
当我深入研究时,我发现实际上我更改的值显示在 AsDouble 中。 但是,我在 UI 中更改的值显示为 AsValueString。 它们都指向同一个属性。 但是它们不同,我的理解它们应该是相同的值,但数据格式不同。 我错了吗?
我现在想通了。
在内部,Revit 使用英尺而不是毫米。 因此,请确保将毫米转换为英尺,然后将其传递给值。
w.parameters['Unconnected Height'].value = mm_to_feet(2675)
w.parameters['Base Offset'].value = mm_to_feet(45)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.