2

我正在尝试将家庭的拖放绑定到项目中并禁用它。

我的代码基于 Revit 2014 SDK Sample DisableCommand

我的代码具有 .CanHaveBinding 测试,并且我有一个显示成功或失败的对话框。当我运行该命令时,它显示成功,但我仍然能够拖放家庭。有任何想法吗?

RevitCommandId commandId2 = RevitCommandId.LookupCommandId("ID_PROCESS_DROP"); 
    if (!commandId2.CanHaveBinding)
    {
        TaskDialog.Show("Error", "Drag/Drop cannot be overridden.");
    }
    else
    {
        TaskDialog.Show("Success", "Drag/Drop can be overridden.");
    }
try
{
    AddInCommandBinding dropBinding = uiapp.CreateAddInCommandBinding(commandId2);
    dropBinding.Executed += new EventHandler<Autodesk.Revit.UI.Events.ExecutedEventArgs>(dragDropDisable);
}
catch (Exception ex)
{
     Console.WriteLine("Error: {0}",ex.ToString());
}

    private void dragDropDisable( object sender, Autodesk.Revit.UI.Events.ExecutedEventArgs args)
{
TaskDialog.Show("Disabled", "Never Drag/Drop families into your project!");
}
4

2 回答 2

0

我认为您的方法(和类)可能需要是静态的 - 过去我曾用实例方法发生过奇怪的事情。另外,我不确定您对该方法的实现究竟做了什么,但它可能需要返回一个 CommandData.Result 才能使命令完全完成

于 2014-07-19T12:15:56.477 回答
0

尝试这个

dropBinding.Executed += dragDropDisable;
于 2021-10-12T12:26:47.620 回答