Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从Revit API调用Revit Purge按钮_C#_Revit Api_Revit - Fatal编程技术网

C# 如何从Revit API调用Revit Purge按钮

C# 如何从Revit API调用Revit Purge按钮,c#,revit-api,revit,C#,Revit Api,Revit,我正在开发一个插件,将一个文档从中心分离,当它完成时,它也将被清除。我正在努力编写清除代码,我正在考虑从代码中调用Revit清除按钮。如果可能的话,我们将感谢您的支持,或者共享在API中编写purge命令的代码 谢谢通过一些研究,我提出了解决方案,但也没有什么限制。我们可以从API调用Revit按钮,包括清除 限制: 你不能在插件的中途调用按钮。 您必须将其设置为在插件完成后运行 您可以通过订阅已执行事件来解决这个问题,但我需要对此进行实验 您不知道该命令是否会成功运行。 此外,由于不能

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


谢谢

通过一些研究,我提出了解决方案,但也没有什么限制。我们可以从API调用Revit按钮,包括清除

限制:

  • 你不能在插件的中途调用按钮。
    • 您必须将其设置为在插件完成后运行
    • 您可以通过订阅已执行事件来解决这个问题,但我需要对此进行实验
  • 您不知道该命令是否会成功运行。
    • 此外,由于不能在程序运行一半时运行它,因此无法在代码中检查它是否成功
    • 您可以检查日志并解析最新命令的结果,但这是一个非常有黑客感的解决方案
  • 您无法提前知道是否有其他人已覆盖该按钮以执行其他操作。
    • 电话是只要按一下按钮就可以了。上面的文章主要关注覆盖按钮。你不能保证按钮仍能达到你所期望的效果
  • 通过按下按钮触发的过程无法自动进行。
    • 您的脚本必须在按下按钮之前完成,因此您无法控制生成的对话框
    • 您可以订阅按钮事件,并以这种方式进行处理。同样,需要进行实验
以下是实现此目的的示例代码:

        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的列表,请单击

,通过一些研究,我提出了解决方案,但也没有什么限制。我们可以从API调用Revit按钮,包括清除

限制:

  • 你不能在插件的中途调用按钮。
    • 您必须将其设置为在插件完成后运行
    • 您可以通过订阅已执行事件来解决这个问题,但我需要对此进行实验
  • 您不知道该命令是否会成功运行。
    • 此外,由于不能在程序运行一半时运行它,因此无法在代码中检查它是否成功
    • 您可以检查日志并解析最新命令的结果,但这是一个非常有黑客感的解决方案
  • 您无法提前知道是否有其他人已覆盖该按钮以执行其他操作。
    • 电话是只要按一下按钮就可以了。上面的文章主要关注覆盖按钮。你不能保证按钮仍能达到你所期望的效果
  • 通过按下按钮触发的过程无法自动进行。
    • 您的脚本必须在按下按钮之前完成,因此您无法控制生成的对话框
    • 您可以订阅按钮事件,并以这种方式进行处理。同样,需要进行实验
以下是实现此目的的示例代码:

        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的列表,请单击。

建筑编码人员在的讨论中提供了一些清除示例的摘要。

建筑编码人员在的讨论中提供了一些清除示例的摘要。

以上所有要点都是有效的,并且都得到了很好的遵守。如果需要“清除”,最好的方法是执行自己的收集+删除操作。Revit API完全支持这些功能。因此,如果希望删除所有未放置的视图(例如),只需将它们全部收集起来,检查它们是否放置在图纸上,如果没有,则将其删除。您可能注意到,调用revit命令不允许向其传递任何参数。它只是打开了窗户。现在,除非你想通过编程的方式去了解点击按钮的本质,否则它实际上是一个无用的窗口。如果需要“清除”,最好的方法是执行自己的收集+删除操作。Revit API完全支持这些功能。因此,如果希望删除所有未放置的视图(例如),只需将它们全部收集起来,检查它们是否放置在图纸上,如果没有,则将其删除。您可能注意到,调用revit命令不允许向其传递任何参数。它只是打开了窗户。现在,除非你想通过编程的方式点击按钮,否则它真的是一个无用的窗口。谢谢你在单独的线程中分享它。感谢您的支持。干杯谢谢阿里的回答。我在博文中添加了一条注释,指出了您提供的限制列表。谢谢你在单独的帖子上分享。感谢您的支持。干杯谢谢阿里的回答。我在博文中添加了一条注释,指出了您提供的限制列表。干杯