首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在revitpythonshell中选择正确的LoadFamily函数

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

Stack Overflow用户
提问于 2015-07-17 16:06:01
回答 1查看 667关注 0票数 2

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

代码语言:javascript
复制
LoadFamily(self: Document, filename:str) -> (bool, Family)
LoadFamily(self: Document, filename:str) -> bool

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

代码语言:javascript
复制
(success, newFamily) = doc.LoadFamily(path)
success, newFamily = doc.LoadFamily(path)
o = doc.LoadFamily(path)

但我总是得到一个布尔来的回报。我也想要家族。

EN

回答 1

Stack Overflow用户

发布于 2015-07-17 21:38:43

你可以像这样得到你想要的重载:

代码语言:javascript
复制
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

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

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

代码语言:javascript
复制
success, family = doc.LoadFamily.Overloads.Functions[0](path)

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

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

代码语言:javascript
复制
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()
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31471089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档