вторник, 20 октября 2009 г.

Revit API. Работа с элементами. Вступление.

В данной короткой статье хотелось бы рассказать об элементах (семействах, типах и их вхождениях) и как они представлены в Revit API.
Всё с чем мы оперируем в API представлено через класс Element. Именно из таких элементов можно получить набор после применения фильтров:

List<element> CatElem = new List<element>();
CategoryFilter catFilt = vnCommandData.Application.Create.Filter.NewCategoryFilter(cat);
Filter OkCatFilt = vnCommandData.Application.Create.Filter.NewLogicAndFilter(catFilt, filt);
vnCommandData.Application.ActiveDocument.get_Elements(OkCatFilt, CatElem);

(прим.1)

или после получения выбранных элементов:

List<element> el = new List<element>();
el = vnCommandData.Application.ActiveDocument.Selection.Elements;.

(прим.2)

Уже из этого набора можно получить некоторые параметры. Но в данном случае каждый из этих элементов может относиться к разным классам. Например FamilyInstance (вхождение СЕМЕЙСТВА), Wall (вхождение СТЕНЫ), FamilySymbol (Тип СЕМЕЙСТВА) и т.д.). Поэтому если набор так сказать разношерстный (пример 1 это будут элементы категории как вхождения, так и типов загруженных в проект. Пример 2 это фактически все варианты вождений, стены, марки, текст, пол и т.д.), нужно изначально отсеивать их по классам:

if (El.GetType() ==typeof( Autodesk.Revit.Elements.Wall))
//Если стена
{
Autodesk.Revit.Elements.Wall StenaInst = El as Autodesk.Revit.Elements.Wall;
// Далее работаем как с классом Wall
{

Это делается для того что у каждого класса есть свои особые параметры и получив их в виде Element в большенстве случаев до них не добраться.
Почти у каждого класса вхождения есть доступ к его типу и семейству (в случае если это семейство). Например

FamilyInstance Inst = El as FamilyInstance;
Family Fam=Inst.Symbol.Family;
FamilySymbol Tip = Inst.Symbol;

Далее из класса Symbol можно выцепить параметры типа (Tip.Parameters). Учтите что если получать через фильтры типы Symbol в проекте то в получите елементы всех ЗАГРУЖЕНЫХ типов, а не только типов, размещенных в проекте!

На этом думаю пока хватит.

воскресенье, 18 октября 2009 г.

iray - возможное будущее для Revit на основе GPU.

Иногда в сети попадаются очень интересные и многообещающие вещи. В этот раз этим оказалась интересная разработка mental images( так сказать создателей mental ray) iray. Это новый движек сделаный, как я понял, наподобии mental ray, но помимо всего этого он использует для расчетов GPU (видеокарту). Для таких целей GPU более производителен чем CPU (центральный процессор) изза очень удобной разпаралелизации процесса расчета. Операясь на ЭТОТ документ можно сделать вывод что рано или поздно он доберется и до Revit и 3ds Max что очень приятно! Но я могу и ошибаться. Дело за Autodesk.



Общие семейства

Попался мне на форуме AUGI вопрос на тему вложеных семейств:
"А вынести в спецификацию все вложенные семейства как-то реально? Хотя бы только имена"

Тема интересная и я решил записать видео по общим семействам
Вот оно