создать Round Duct

Автор Тема: создать Round Duct  (Прочитано 2508 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн ОлегАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 79
  • Карма: 0
создать Round Duct
« : 05-02-2018, 12:28:09 »
Добрый день всем.
Вопрос может простой но я не смог сходу найти ответа.
Нужно в коде создавать круглые воздуховоды.
Подскажите пожалуйста куда смотреть ?
спасибо

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: создать Round Duct
« Ответ #1 : 05-02-2018, 12:36:59 »
Не пробовал сам, но могу предположить, что для круглого нужно задать диаметр, а прямоугольного - высоту и ширину. А Ревит там сам уже разберется. Вот вроде похожая тема.

Оффлайн ОлегАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 79
  • Карма: 0
Re: создать Round Duct
« Ответ #2 : 05-02-2018, 12:38:19 »
спасибо.  интересная мысль. счас проверю

 :D

Оффлайн ОлегАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 79
  • Карма: 0
Re: создать Round Duct
« Ответ #3 : 05-02-2018, 12:46:25 »
после создания Duct он сразу стал квадратным
и конечно параметер диаметр отсутствует

Оффлайн WhiteShark

  • ADN OPEN
  • Сообщений: 2
  • Карма: 1
Re: создать Round Duct
« Ответ #4 : 05-02-2018, 13:00:35 »
Установите сначала дефолтный тип семейства для категории воздуховодов равный вашему желаемому а потом уже создавайте воздуховод. Типа того

Код - C# [Выбрать]
  1. private void SetDefaultTypeFromduct(Document document, FamilyInstance duct)
  2. {
  3.     ElementId ductCategoryId = new ElementId(BuiltInCategory.OST_Ducts);
  4.  
  5.     // It is necessary to test the type suitability to be a default family type, for not every type can be set as default.
  6.     // Trying to set a non-qualifying default type will cause an exception
  7.     if (duct.Symbol.IsValidDefaultFamilyType(ductCategoryId))
  8.     {
  9.         document.SetDefaultFamilyTypeId(ductCategoryId, duct.Symbol.Id);
  10.     }
  11. }

Отмечено как Решение Олег 06-02-2018, 11:36:35

Оффлайн Алексей Кузин

  • ADN OPEN
  • ***
  • Сообщений: 116
  • Карма: 8
Re: создать Round Duct
« Ответ #5 : 05-02-2018, 13:04:24 »
А как вы создаете дакт?

Код - C# [Выбрать]
  1. Duct.Create(doc, systemType.Id, ductType.Id, level.Id, start, end)

ductType.Id - это и есть тип дакта.

для поиска нужного типа могу предложить вот этот подход


       
Код - C# [Выбрать]
  1. public static List<DuctType> GetDuctTypes(this Document doc)
  2.         {
  3.             var collector = new FilteredElementCollector(doc);
  4.             collector.WherePasses(new ElementClassFilter(typeof(DuctType)));
  5.             return collector.OfType<DuctType>().ToList();
  6.         }
  7.  
  8.         private static List<DuctType> GetDuctTypes(Document doc, string shapeType)
  9.         {
  10.             var result = new List<DuctType>();
  11.             foreach (var type in doc.GetDuctTypes())
  12.             {
  13.                 var shapeName = type.get_Parameter(BuiltInParameter.ALL_MODEL_FAMILY_NAME);
  14.  
  15.                 if (shapeName.AsString() == shapeType)
  16.                 {
  17.                     result.Add(type);
  18.                 }
  19.             }
  20.  
  21.             return result;
  22.         }


где shapeType один из вариантов - "Rectangular Duct", "Round Duct", "Oval Duct". В результате получите список типов дактов нужного shape. А после создания уже у экземплята изменяете его размеры. в вашем случае диаметр.

Оффлайн ОлегАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 79
  • Карма: 0
Re: создать Round Duct
« Ответ #6 : 05-02-2018, 13:12:28 »
создаю через NewDuct

Оффлайн Алексей Кузин

  • ADN OPEN
  • ***
  • Сообщений: 116
  • Карма: 8
Re: создать Round Duct
« Ответ #7 : 05-02-2018, 13:14:54 »
в методе NewDuct, если не ошибаюсь, тоже можно передавать DuctType.
Как получить нужный написано выше.

А вообще этот метод вроде как устаревший, помечен как obsolete в 2017 версии.

Оффлайн ОлегАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 79
  • Карма: 0
Re: создать Round Duct
« Ответ #8 : 05-02-2018, 13:16:14 »
верно.  есть такое. спасибо за ответ. счас попробую