IsCommandAvailable не должно быть в вашем командном классе. Вам действительно нужно написать класс, который реализует IExternalCommandAvailability. Вот пример из руководства по API:
public class SampleAccessibilityCheck : IExternalCommandAvailability
{
public bool IsCommandAvailable(Autodesk.Revit.UI.UIApplication applicationData,
CategorySet selectedCategories)
{
// Allow button click if there is no active selection
if (selectedCategories.IsEmpty)
return true;
// Allow button click if there is at least one wall selected
foreach (Category c in selectedCategories)
{
if (c.Id.IntegerValue == (int)BuiltInCategory.OST_Walls)
return true;
}
return false;
}
}
Затем вы можете указать это имя класса в файле манифеста Addin внутри тега AvailabilityClassName, например:
<AvailabilityClassName>MyNamespace.SampleAccessibilityCheck</AvailabilityClassName>
если у вас есть кнопка на ленте, у класса PushButton также есть свойство PushButton.AvailabilityClassName, где вы можете задать имя этого класса, чтобы ваша командная кнопка включала / отключала соответственно.
Надеюсь, это поможет.