вторник, 9 июня 2015 г.

[API Revit] - Как получить BuiltInCategory элемента

Если попытаться извлечь категорию элемента через elem.Category.Name, то получаем текстовое представление категории так как видит пользователь. Например: "Электрооборудование" или "Оборудование".

Ориентироваться на такое имя нежелательно - есть риск изменения имени категории при локализации очередной версии Revit.

Просмотреть значение встроенной категории можно с помощью Lookup в строчке "Category".
Немного порывшись в исходниках нашёл метод, отвечающий за выдачу параметров категории:


((BuiltInCategory)cat.Id.IntegerValue).ToString() и есть внутреннее наименование категории элемента в текстовом виде.

пятница, 10 апреля 2015 г.

[Revit] - Приручение мышки

Сергей Волков поделился настройками дополнительных кнопок на мышке.

Поделюсь и я своими, давно уже хотел это сделать.

С мышками от A4Tech работаю уже десять лет. Сначала была X6-80D, единственное что расстраивало - невозможно перенастроить кнопку двойного клика.
Года два назад нашёл свой идеал - A4Tech XL-755BK.



Напрямую назначить команды Revit на кнопки не удастся. Выход такой -
находим функциональные клавиши, не задействованные в Revit. В настройках мышки назначаем для кнопок функциональные клавиши. В Revit в настройках горячих клавиш назначаем команды на функциональные клавиши. Плюс такого подхода ещё в том, что можно на одну кнопку мышки посадить две и более команды.

Пример - назначили на кнопку мышки F9.
В горячих клавишах F9 - перенести, Ctrl+F9 - копировать, Ctrl+Shift+F9 - повернуть, Shift+F9 - отзеркалить.

понедельник, 16 марта 2015 г.

[Revit] - Почистить библиотеку семейств от временных файлов

При сохранении семейства создаются временные файлы с добавлением приставки - .0001.rfa, .0002.rfa и так далее.

Как быстро почистить библиотеку семейств можно посмотреть здесь

Если коротко - в проводнике windows открываем папку библиотеки, в окошке поиска файлов набираем 0001, происходит поиск файлов по маске, удаляем файлы в корзину.
И так далее - с 0002, 0003

От себя добавлю - по маске 0001 или 0002 в результаты поиска могут попадать семейства, в имени которых присутствует данная комбинация цифр.
Например: Шкаф обогрева кровли ШУ-ТС-07517-0001.rfa.

Чтобы случайно не удалить нужные семейства использую маску: .000?.rfa
Таким образом снижается вероятность удаления нужного семейства, плюс поиск выполняется только один раз.

Не следует исключать вариант такого именования - Шкаф обогрева кровли ШУ-ТС-07517.0001.rfa, поэтому удаление файлов делаю очень аккуратно.

четверг, 5 февраля 2015 г.

[API Revit] - Как назначить рабочий набор для элемента

Найти ID рабочего набора, записать его во встроенный параметр элемента - ELEM_PARTITION_PARAM.

Подробнее здесь

пятница, 12 декабря 2014 г.

[API Revit] - Перевод из футов в миллиметры

Значения геометрических параметров в API Revit выдаются в имперской системе измерений.
Для перевода единиц в метрическую систему пользуюсь методом ConvertFromInternalUnits класса UnitUtils.

Пример:

//Получение координаты Z точки вставки семейства

FamilyInstance LInstance = elem as FamilyInstance;
LocationPoint pt = LInstance.Location as LocationPoint;
string PtString =
UnitUtils.ConvertFromInternalUnits(pt.Point.Z, DisplayUnitType.DUT_MILLIMETERS).ToString();
TaskDialog.Show("Revit", PtString);


вторник, 9 декабря 2014 г.

[API Revit] - Не работает get_Parameter().Set()

Чтобы внести какое-либо изменение в модель требуется создать транзакцию. Очень доступно про транзакции описано в учебном курсе "Моя первая программа" для Autodesk Revit, урок 3.

Про регенерацию и транзакции есть выступление Бориса Шафиро на Autodesk University Russia 2014.

Наглядно результат использования транзакций можно посмотреть в видео Harry Mattison'а.


понедельник, 1 декабря 2014 г.

[API Revit] - Как определить в каком пространстве находится семейство

В свойствах элемента, такого как мебель или электрический прибор, нет параметров пространства, в котором он расположен. Достать их так же как получилось с помещениями мне не удалось.
Доступ к параметрам пространства можно получить если представить элемент  как экземпляр семейства:

 FamilyInstance FInst = elem as FamilyInstance;
string SpaceName = FInst.Space.Name;
string SpaceId = FInst.Space.Id.IntegerValue.ToString();

среда, 26 ноября 2014 г.

[API Revit] RevitRubyShell

Наконец-то нашёл консоль для API Revit.
Автор - Håkon Clausen, на его странице есть ссылки на репозиторий в GitHub и на установщик.

вторник, 25 ноября 2014 г.

[API Revit] - Как получить встроенные наименования параметров элемента

Хочу показать на простом примере работу Revit Lookup.

1. Выбрать элемент
2. В Revit Lookup выбрать "Snoop Current Selection..."
3. В разделе "Element" выбрать "Parameters"
4. Если требуется получить встроенный параметр одного элемента, то в разделе "Parameter" выбрать "Definition"