C# 如何从Revit API调用Revit Purge按钮
我正在开发一个插件,将一个文档从中心分离,当它完成时,它也将被清除。我正在努力编写清除代码,我正在考虑从代码中调用Revit清除按钮。如果可能的话,我们将感谢您的支持,或者共享在API中编写purge命令的代码C# 如何从Revit API调用Revit Purge按钮,c#,revit-api,revit,C#,Revit Api,Revit,我正在开发一个插件,将一个文档从中心分离,当它完成时,它也将被清除。我正在努力编写清除代码,我正在考虑从代码中调用Revit清除按钮。如果可能的话,我们将感谢您的支持,或者共享在API中编写purge命令的代码 谢谢通过一些研究,我提出了解决方案,但也没有什么限制。我们可以从API调用Revit按钮,包括清除 限制: 你不能在插件的中途调用按钮。 您必须将其设置为在插件完成后运行 您可以通过订阅已执行事件来解决这个问题,但我需要对此进行实验 您不知道该命令是否会成功运行。 此外,由于不能
谢谢通过一些研究,我提出了解决方案,但也没有什么限制。我们可以从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命令不允许向其传递任何参数。它只是打开了窗户。现在,除非你想通过编程的方式点击按钮,否则它真的是一个无用的窗口。谢谢你在单独的线程中分享它。感谢您的支持。干杯谢谢阿里的回答。我在博文中添加了一条注释,指出了您提供的限制列表。谢谢你在单独的帖子上分享。感谢您的支持。干杯谢谢阿里的回答。我在博文中添加了一条注释,指出了您提供的限制列表。干杯