Hello大家好!我是九哥~
好久没更新了,今天我们写一个简单的小教程,按照输入的参数比例,对柱子进行拆分,将一个柱子变成两节。
来看一段视频演示下基本功能:
RIR拆分Revit柱子
首先我们来看下要用到的API,我们直接搜下Split就可以找到,在FamilyInstance的方法里,我们可以找到Split方法,如下图:
为了程序运行不报错,我们可以先判断下,图元是否可以被拆分,直接用CanSplit属性来判断即可:
找到这两个API就很简单了,直接按参数输入就行了,核心代码如下:
element.Split(Param)
为了程序运行的更完美,加几个if做判断就好了,完整代码如下:
import clr
clr.AddReference('System.Core')
clr.AddReference('RhinoInside.Revit')
clr.AddReference('RevitAPI')
clr.AddReference('RevitAPIUI')
from System import Enum
import rhinoscriptsyntax as rs
import Rhino
import RhinoInside
import Grasshopper
from Grasshopper.Kernel import GH_RuntimeMessageLevel as RML
from RhinoInside.Revit import Revit, Convert
clr.ImportExtensions(Convert.Geometry)
from Autodesk.Revit import DB
doc = Revit.ActiveDBDocument
O = Ele.CanSplit
if Toggle == 1:
if isinstance(Ele, DB.FamilyInstance):
if O == 1:
t = DB.Transaction(doc, '按比例切分柱')
t.Start()
try:
Ele.Split(Param)
# 在完成所有更改之后提交更改
t.Commit()
result = "切割成功"
except Exception as txn_err:
# 如果在更改文档时发生任何错误,将抛出一个异常——确保打印出异常消息以供调试
show_error(str(txn_err))
# 回滚出错前所做的更改
t.RollBack()
result = "切割失败"
else:
result = "图元没有拆分属性"
else:
result = "设置Toggle为True以运行程序"
好了,今天的教程就分享到这里,小伙伴们快去尝试吧~