Итак, ExternalDefinitionCreationOptions had a spelling error в API Revit 2015, который был исправлен в API 2016 года.Тот же код для создания параметров в Revit 2015 + 2016
Я пытаюсь сделать мое приложение максимально совместимым с текущей версией + предыдущим, но на этот раз я даже не могу его скомпилировать, так как я могу ссылаться только на одну из двух DLL-библиотек API, а ExternalDefinitionCreationOptions
играет роль большую роль в этом процессе.
Код следующее:
private static Definition GetSimpleParameterDefinition(UIApplication uiApp, Document doc, DefinitionGroup defGroup, string name)
{
var definition = defGroup.Definitions.FirstOrDefault(d => d.Name == name);
if (definition != null) return definition;
var parameterType = ParameterType.Text;
var defOptions = new ExternalDefinitionCreationOptions(name, parameterType);
BuiltInCategory target = BuiltInCategory.OST_Furniture;
var cat = doc.Settings.Categories.get_Item(target);
var catSet = uiApp.Application.Create.NewCategorySet();
catSet.Insert(cat);
definition = defGroup.Definitions.Create(defOptions);
return definition;
}
Я читаю о DI и IoC, но все образцы имеют весь код под контролем, а не ссылки на сторонние API и борьбы с ней. У меня кончились идеи.
Любые мысли о том, как это сделать?
Привет @AugustoGoncalves, это похоже на отличный способ достичь этого, но 'GetExecutingAssembly()' (также 'GetCallingAssembly()') не возвращаются в сборе RevitAPI , оба возвращают мою сборку. Я даже попытался пройти через стек, чтобы получить Revit, но не успел. Мое приложение работает в Revit Initialization, поэтому я не знаю, является ли это причиной того, что он не работает так, как вы предполагали. –