首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用pyRevit重新加载键注

如何使用pyRevit重新加载键注
EN

Stack Overflow用户
提问于 2018-04-06 21:40:48
回答 1查看 453关注 0票数 1

我试图修改非常有用的打开键注按钮脚本,以创建一个‘重新加载键注’按钮。

目前,我正在尝试使用KeyBasedTreeEntryTable类的Reload方法。

代码语言:javascript
复制
kt = DB.KeynoteTable.GetKeynoteTable(revit.doc)
kt_ref = kt.GetExternalFileReference()
path = DB.ModelPathUtils.ConvertModelPathToUserVisiblePath(
    kt_ref.GetAbsolutePath()
    )

reloader = DB.KeyBasedTreeEntryTable.Reload()



if not path:
    forms.alert('No keynote file is assigned.')
else:
    reloader 

这是我正在接收的错误消息。

TypeError: Reload()只需要2个参数(0给定)

我被困在这里,感谢任何帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-08 10:30:11

您可以使用Revit来重新加载密钥注释,方法KeyBasedTreeEntryTable.Reload只需要一个参数来存储操作期间抛出的警告,这个参数可以是None来简化操作。

另外,KeyBasedTreeEntryTable应该是一个实例,重新加载方法不是静态的。

最酷的是,您不需要找到任何KeyBasedTreeEntryTable实例,因为KeynoteTable类继承自KeyBasedTreeEntryTable,因此在脚本中的kt实例中已经可以使用Reload方法。

(此操作也需要一个事务上下文,如下面的示例所示)

简单方式

代码语言:javascript
复制
kt = DB.KeynoteTable.GetKeynoteTable(revit.doc)

t = DB.Transaction(revit.doc)
t.Start('Keynote Reload')
try:
    result = kt.Reload(None)
    t.Commit()

except:
    t.RollBack()

forms.alert('Keynote Reloading : {}'.format(result))
# result can be 'Success', 'ResourceAlreadyCurrent' or 'Failure'

完全方式

代码语言:javascript
复制
kt = DB.KeynoteTable.GetKeynoteTable(revit.doc)

# create results object
res = DB.KeyBasedTreeEntriesLoadResults() 

t = DB.Transaction(revit.doc)
t.Start('Keynote Reload')
try:
    result = kt.Reload(res) # pass results object
    t.Commit()

except:
    t.RollBack()

# read results
failures = res.GetFailureMessages()
syntax_err =  res.GetFileSyntaxErrors()
entries_err = res.GetKeyBasedTreeEntryErrors()
# res.GetFileReadErrors() returns files errors, should be already in failures Messages

warnings = ''
warnings += '\n'.join([message.GetDescriptionText() for message in failures])

if syntax_err:
    warnings += '\n\nSyntax errors in the files :\n'
    warnings += '\n'.join(syntax_err)

if entries_err:
    warnings += '\nEntries with error :\n'
    warnings += '\n'.join([key.GetEntry().Key for key in entries_err])

forms.alert('Keynote Reloading : {}\n{}'.format(result, warnings))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49701347

复制
相关文章

相似问题

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