首页 > 解决方案 > 如何摆脱winform的插件安全性

问题描述

安全插件窗口

嗨,我创建了多个外部命令并将其停靠到它自己的 Revit 选项卡中。但是,当我将 winform 添加到其中一个命令时,它现在要求我在 Revit 启动时提供另一个安全插件弹出窗口。正如您在 GiF 中看到的那样。有没有办法摆脱它?

这是我的外部命令接口代码:

` [Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)] 公共类 DeleteUnusedFilter : IExternalCommand {

    public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
    {
        UIDocument uidoc = commandData.Application.ActiveUIDocument;
        Document doc = uidoc.Document;

             var Form = new DeleteFilter(commandData);
            try
            {
                var fltr = new FilterData(doc).GetUnusedFilter();
                if (fltr.Count == 0)
                {
                    MessageInfo.Display("No unused View Filters in Document");
                    Form.Close();
                return Result.Cancelled;
                }

                Form.ShowDialog();
                return Autodesk.Revit.UI.Result.Succeeded;
            }
            catch (Exception ex)
            {

                message = ex.Message;
                return Autodesk.Revit.UI.Result.Failed;
            }

    }
}`

这是winform代码:

 public partial class DeleteFilter : System.Windows.Forms.Form
{
    Document doc;
    List<Element> FiltersToDelete;
    public DeleteFilter(ExternalCommandData commandData)
    {
        InitializeComponent();
        doc = commandData.Application.ActiveUIDocument.Document;
    }



    private void DeleteFilter_Load(object sender, EventArgs e)
    {
        callonload();

    }
}

这是注册插件的 UiApplication:

 //ribbon for delete unused filter
        string path3 = Assembly.GetExecutingAssembly().Location;
        var button3 = new PushButtonData("Button2", "Delete\n Unused Filter", path2, "RevitCode.DeleteUnusedFilter");
        var panel3 = application.CreateRibbonPanel("Angelo Tools", "Delete");

        Uri imagePath3 = new Uri(@"C:\ProgramData\Autodesk\Revit\Addins\2019\icon\DeleteFtr.png");
        BitmapImage image3 = new BitmapImage(imagePath3);
        button3.ToolTip = "Delete Unused View Filters";
        PushButton Push_button3 = panel3.AddItem(button3) as PushButton;
        Push_button3.LargeImage = image3;

        return Result.Succeeded;

提前致谢!

标签: c#revit-apirevit

解决方案


正如我们已经在添加 winform 后弹出的另一个安全插件窗口的Revit API 论坛主题中讨论的那样:

这是正常的,也是意料之中的。

每个单独的外部命令和外部应用程序都被单独检查。

因此,使用新的 Windows 窗体添加新的外部命令将产生新的安全检查。

您可以通过单击“始终加载”或签署加载项来摆脱它们。

有关更多详细信息,请参阅有关对您的应用进行数字签名的 Revit API 在线帮助文​​档。

您还可以在以下线程中查看之前对该主题的讨论:


推荐阅读