如何在revitpythonsh中选择正确的LoadFamily函数

2024-10-05 15:22:05 发布

您现在位置:Python中文网/ 问答频道 /正文

revitpythonshell提供了两种非常相似的方法来载入族。在

LoadFamily(self: Document, filename:str) -> (bool, Family)
LoadFamily(self: Document, filename:str) -> bool

所以似乎只有返回值不同。我试着用几种不同的方式来称呼它:

^{pr2}$

但我总是得到一个布尔回来。我也想要这个家庭。在


Tags: 方法self家庭方式filenamefamilydocumentbool
1条回答
网友
1楼 · 发布于 2024-10-05 15:22:05

你可以像这样得到你想要的超负荷:

import clr
family = clr.Reference[Family]()
# family is now an Object reference (not set to an instance of an object!)
success = doc.LoadFamily(path, family)  # explicitly choose the overload
# family is now a Revit Family object and can be used as you wish

这是通过创建一个对象引用来传递给函数的,方法重载resultation thingy现在知道要查找哪一个。在

假设RPS帮助中显示的重载列表与它们出现的顺序相同—我认为这是一个非常安全的假设,您也可以这样做:

^{pr2}$

实际上,这将返回一个元组(bool, Autodesk.Revit.DB.Family)。在

请注意,这必须发生在事务内部,因此完整的示例可能是:

t = Transaction(doc, 'loadfamily')
t.Start()
try:
    success, family = doc.LoadFamily.Overloads.Functions[0](path)
    # do stuff with the family
    t.Commit()
except:
    t.Rollback()

相关问题 更多 >