若宽度大于高度了窗洞口的高度尺寸不变,宽度尺寸乘以开启率值进行折减换算,若门窗洞口的高度大于宽度,则门窗洞口的宽度尺寸不变,高度尺寸乘以开启率进行折减换算。怎么在revit dynamo中实现
时间: 2024-10-24 13:15:42 浏览: 21
在Revit Dynamo中实现这个规则,需要结合IF(如果)语句和数学运算节点。首先,你需要获取窗口或门的尺寸信息,然后进行比较和计算。以下是一个基本的步骤示例:
1. **获取尺寸信息**:
- 使用`Element.get_Parameter(BuiltInParameter.ROOM-door_opening_width)` 和 `get_Parameter(BuiltInParameter.ROOM-door_opening_height)` 获取门/窗的宽度和高度。
2. **设置开启率变量**:
- 创建一个名为`openRatio`的数值变量,并赋给它相应的开启率值。
3. **检查宽高比**:
- 使用`If`节点,检查宽度是否大于高度(`Width > Height`),如果是:
- 计算新的高度:`Height * openRatio`
4. **更新尺寸**:
- 如果宽度有变化,使用`SetParameter`节点更新`BuiltInParameter.ROOM-door_opening_width` 参数。
- 如果高度有变化,同样更新`BuiltInParameter.ROOM-door_opening_height` 参数。
5. **组合所有步骤**:
- 将上述步骤放在一个单独的工作流中,并连接到你的目标元素(例如,`FamilyInstance`或`Viewport`)。
记得在实际操作中,根据Revit API的具体要求调整参数名和操作。这里给出的是一个通用的概念性指导。
```dynamo
// 定义变量和参数
[...]
width = Element.get_Parameter(BuiltInParameter.ROOM-door_opening_width)
height = Element.get_Parameter(BuiltInParameter.ROOM-door_opening_height)
openRatio = 0.8 // 假设为80%开启率
// 检查宽高比并计算新尺寸
newWidth = If(Width > Height, Width * openRatio, Width)
newValue = If(Width > Height, height, height * openRatio)
// 更新参数
SetParameter(Element.Id, BuiltInParameter.ROOM-door_opening_width, newWidth)
SetParameter(Element.Id, BuiltInParameter.ROOM-door_opening_height, newValue)
```
阅读全文