Проблема с экспортом в Navisworks
Вопрос: Я пишу надстройку, в которой мне надо экспортировать модель.
Проблема в том, что тот же самый код работал замечательно в Revit 2014, но в 2015 диалог экспорта в NWC просто зависает.
Кто-нибудь знает, что за изменения были сделаны в методе Document.Export, что он теперь не работает в новой версии?
Ответ: Я попробовал экспортировать модель в NWC как в 2014 Revit так и в 2015 Revit с помощью простенького кода. В обоих случаях не возникло никаких проблем. Можете предоставить код, в котором вы делаете экспорт? Кстати сначала я столкнулся с проблемой, что в Revit 2015 не было возможности экспорта в Navisworks, но после того как я это исправил, диалог с экспортом появился и модель была экспортирована, как и ожидалось.
Ответ: Экспорт в Navisworks из пользовательского интерфейса на моем компьютере тоже работает.
Вот кусок кода, где я оставил только непосредственно сам экспорт. Вот с этим кодом, диалог зависает и ничего не происходит.
- [Transaction(TransactionMode.Manual)]
- public class Command : IExternalCommand
- {
- public Result Execute(
- ExternalCommandData commandData,
- ref string message,
- ElementSet elements)
- {
- UIApplication uiapp = commandData.Application;
- UIDocument uidoc = uiapp.ActiveUIDocument;
- Application app = uiapp.Application;
- Document doc = uidoc.Document;
- // создаем настройки экспорта NWExportOptions
- NavisworksExportOptions nweOptions =
- new NavisworksExportOptions();
- nweOptions.ExportScope = NavisworksExportScope.Model;
- nweOptions.ViewId = uidoc.ActiveView.Id;
- // Редактируем документ в транзакции
- using (Transaction tx = new Transaction(doc))
- {
- tx.Start("Export");
- doc.Export(@"D:\Shared", @"test.nwc", nweOptions);
- tx.Commit();
- }
- return Result.Succeeded;
- }
- }
Ответ от эксперта по Revit: Я не очень знаком с реализацией последней версии модуля экспорта в Navisworks, но, я неплохо разбираюсь в коде по использованию этого модуля. У меня есть несколько предположений, почему такая реализация не работает:
- Мне кажется в данном случае транзакция не нужна. Я говорю так, потому что фактически при экспорте не происходит изменение модели. Тем не менее, возможно (хотя это было бы странно), что модулю экспорта все же требуется транзакция.
- Я думаю возможен экспорт только 3D-вида. Хотя в данном случае активный вид и так является 3D-видом, иначе было бы исключение.
- Ни и конечно, как активный документ ActiveDocument, так и Текущий вид ActiveView могут быть null, поэтому нужно это проверить. Но в данном случае я не думаю, что проблема именно в этом.
Ответ 2: Как уже заметил мой коллега, Транзакция здесь совсем лишняя. Я протестировал ваш код без использования транзакции и все прекрасно работает. Проверьте пожалуйста у себя и сообщите нам решилась ли проблема или нет.
Вот код, который работает:
- public Result Execute(
- ExternalCommandData commandData,
- ref string message,
- ElementSet elements)
- {
- UIApplication uiapp = commandData.Application;
- UIDocument uidoc = uiapp.ActiveUIDocument;
- Application app = uiapp.Application;
- Document doc = uidoc.Document;
- NavisworksExportOptions nweOptions =
- new NavisworksExportOptions();
- nweOptions.ExportScope = NavisworksExportScope.Model;
- nweOptions.ViewId = uidoc.ActiveView.Id;
- doc.Export(@"D:\Shared", @"test.nwc", nweOptions);
- return Result.Succeeded;
- }
Ответ: Работает! Так значит все же что-то было изменено в транзакции? Ведь это все работало в 2014 версии внутри транзакции. Хотя уже какая разницаJ Спасибо за помощь.
Источник: http://adndevblog.typepad.com/aec/2014/10/navisworks-exporter-and-aerial-catamaran.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=1117
Опубликовано 28.11.2014