Создание размера между центрами семейств
Вопрос: Я знаю, как создать размер между гранями двух семейств.
А как можно создать размер между центрами этих семейств?
Как получить все уровни, упорядоченные по высоте
Вопрос: Как я могу получить коллекцию уровней, отсортированную по высоте уровня? Пока что мне кажется, что FilteredElementCollector возвращает IEnumerable и его можно отсортировать с помощью OrderBy, затем, вызвав метод ToElementIds(), то будет создан набор идентификаторов, в уже нужном порядке. Верно?
Вот код, который я попробовал. Он не работает:
UIDocument uiDoc = this.ActiveUIDocument;Document doc = uiDoc.Document;
FilteredElementCollector levCollector
= new FilteredElementCollector( doc );
ICollection<Element> levelsCollection
= levCollector.OfClass( typeof( Level ) )
.OrderBy( lev => lev.Elevation )
.ToElementIds();
Кто-то может мне подсказать, что я делаю не так?
Проблема с экспортом в Navisworks
Вопрос: Я пишу надстройку, в которой мне надо экспортировать модель.
Проблема в том, что тот же самый код работал замечательно в Revit 2014, но в 2015 диалог экспорта в NWC просто зависает.
Кто-нибудь знает, что за изменения были сделаны в методе Document.Export, что он теперь не работает в новой версии?
Ответ: Я попробовал экспортировать модель в NWC как в 2014 Revit так и в 2015 Revit с помощью простенького кода. В обоих случаях не возникло никаких проблем. Можете предоставить код, в котором вы делаете экспорт? Кстати сначала я столкнулся с проблемой, что в Revit 2015 не было возможности экспорта в Navisworks, но после того как я это исправил, диалог с экспортом появился и модель была экспортирована, как и ожидалось.
Использование групп транзакций для освобождения элементов без сохранения или синхронизации
Вопрос: У меня есть файл, открытый в Revit и который я изменяю своей надстройкой. Могу ли я программно закрыть файл без синхронизации, сохранения и оставления элементов заимствованными текущим пользователем?
Есть возможность освободить не редактированные элементы с помощью метода WorksharingUtils.RelinquishOwnership. Но этот метод не освобождает редактируемые элементы.
Документация к методу Document.Close также не содержит информации о том, как освободить элементы.
Есть ли какой-нибудь способ добиться желаемого результата, без сохранения или повторного открытия той же самой модели?
Сохранение семейства после его редактирования с помощью FamilyManager
Вопрос: Мы разрабатываем надстройку, в которой мы выгружаем файлы семейства в базу данных.
Сначала мы добавляем в семейство несколько общих параметров с помощью метода FamilyManager.AddParameter().
Все работает неплохо, до тех пор, пока мы не вызываем метод UploadOriginal в котором мы пытаемся сохранить измененное семейство в файл:
string path = Path.GetTempPath();string name = family.Name;
string fName = name + ".rfa";
string fPath = path + fName;
// Revit выбрасывает исключение на этой строчке
// С описанием, что семейство не редактируемое.
// Почему так?
// Чтобы выгрузить семейство, мне его нужно сохранить предварительно,
// но мешает ошибка.
Document famDoc = doc.EditFamily( family );
famDoc.SaveAs( fPath );
famDoc.Close( false );
// остальной код...
Что может являться причиной этой ошибки?
Переименование общего параметра
Вопрос: Как можно переименовать общий параметр, который уже используется в проекте или семействе? Мне нужно сохранить его идентификатор, только изменить название параметра.
Использование метода GetCameraInfoАвтор: Виктор Чекалин
Получить ImageType импортированного изображения
Вопрос: Возможно ли получить объект ImageType из изображения, которое было вставлено в Revit с помощью метода Document.Import?
Ответ: Да, только не совсем явным способом.
Метод для импорта изображения выглядит так:
bool Import(string file,
ImageImportOptions options,
View view,
out Element element);
С помощью этого метода мы можем только получить объект типа Element, который не содержит каких-либо параметров. Я просмотрел этот объект с помощью утилиты RevitLookup и не нашел там ничего полезного, в том числе и ImageType.
Метод GetCameraInfo
Вопрос: Есть ли способ программно получить информацию о положении камеры в Revit?
Для своего приложения мне нужно определить позицию камеры, расстояние до камеры, направление, тип проекции и поле зрения.
Изменение геометрии экземпляра семейства
Вопрос: Мне нужно изменить геометрию конкретного элемента в проекте. Похоже на то, что Revit API просто не позволяет это делать. Я разобрался с тем, как использовать метод Duplicate для создания нового типоразмера в проекте и затем задать новый типоразмер нужному мне экземпляру семейства. Но таким способом я могу лишь менять значение параметров в новом типоразмере. Мне же действительно нужно изменить именно геометрию. Я бы предпочел не использовать редактор семейств, для реализации моей задумки. Все дело в том, что я хочу сделать эти изменения в методе IUpdater.Execute. Есть ли способ сделать то, что мне требуется?