【问题标题】:How to Call Revit Purge Button from the Revit API如何从 Revit API 调用 Revit 清除按钮
【发布时间】:2017-11-07 06:45:17
【问题描述】:

我正在开发一个插件来从中心分离一个文档,当它完成时它也会被清除。我正在努力编写清除代码,我正在考虑从代码中调用 Revit Purge 按钮。如果可能,将感谢支持或分享在 API 中编写清除命令的代码。

谢谢

【问题讨论】:

    标签: c# revit-api revit


    【解决方案1】:

    The Building Coder 在purge and detecting an empty view 的讨论中提供了一些清除示例的摘要。

    【讨论】:

    • 感谢您在单独的线程上分享它。感谢支持。干杯!!
    • 感谢阿里的回答。我也在指向此处的博客文章中添加了一条注释,以获取您提供的限制列表。干杯
    【解决方案2】:

    通过一些研究,我想出了解决方案,但它也有一些限制。我们可以从 API 调用 Revit 按钮,包括 Purge。

    限制:

    • 您无法在插件中途调用按钮。
      • 您必须将其设置为在插件完成后运行。
      • 您也许可以通过订阅 Executed 事件来解决此问题,但我需要对此进行试验。
    • 您不知道该命令是否会成功运行。
      • 此外,由于您无法在程序中途运行它,因此您无法在代码中检查它是否成功。
      • 您可以检查日志日志并解析最新命令的结果,但这是一个非常 hack-y 感觉的解决方案。
    • 您无法提前知道其他人是否已覆盖该按钮以执行其他操作。
      • 只需按下按钮即可调用。上面的文章重点介绍了覆盖按钮。您无法保证该按钮仍能按您的预期工作。
    • 您通过按下按钮触发的过程无法自动化。
      • 您的脚本必须在按下按钮之前完成,因此您无法控制生成的对话框。
      • 您也许可以订阅按钮事件并以这种方式进行操作。同样,需要进行实验。

    以下是实现此目的的示例代码:

            UIApplication uiapp = commandData.Application;
    
            //Store the ID of desired plugin button, in this case its 'purge unused'
            String s_commandToDisable = "ID_PURGE_UNUSED";
            RevitCommandId s_commandId = RevitCommandId.LookupCommandId(s_commandToDisable);
    
            //This revit button will run at the end of your application. 
            uiapp.PostCommand(s_commandId);
    

    要查找默认 Revit 命令 ID 列表,请单击 here

    【讨论】:

    • 以上所有观点均有效且遵守良好。如果您需要“清除”,最好的方法是执行您自己的收集 + 删除操作。 Revit API 完全支持这些。因此,例如,如果您希望删除所有未放置的视图,只需将它们全部收集起来,检查它们是否放置在工作表上,如果没有则将其删除。您可能注意到调用 revit 命令不允许您向它传递任何参数。它只是打开了窗口。现在,除非您想深入了解以编程方式单击按钮的细节,否则它实际上是一个无用的窗口。
    猜你喜欢
    • 2020-09-15
    • 2016-10-24
    • 2023-02-08
    • 1970-01-01
    • 2020-04-20
    • 2019-03-29
    • 2019-09-21
    • 2013-01-07
    • 2013-08-16
    相关资源
    最近更新 更多