ScheduleId как получить?

Автор Тема: ScheduleId как получить?  (Прочитано 4779 раз)

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

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

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
ScheduleId как получить?
« : 20-06-2016, 13:08:28 »
Добрый день, коллеги!

При создании элемента сегмента трубы PipeSegment, нам требуется входной параметр ScheduleID. Как его получить его и чем он является на самом деле?

Заранее благодарю.

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: ScheduleId как получить?
« Ответ #1 : 21-06-2016, 15:14:15 »
входной параметр ScheduleID. Как его получить его и чем он является на самом деле?
Евгений, ScheduleId - это идентификатор типоразмера класса PipeScheduleType. Во вложении можно увидеть, как его найти. А вот что же это на самом деле - это лучше обратиться к пользователям Revit, в частности кто занимается ОВиК.
А что касается Revit API, то получить его проще простого. Так как это типоразмер, т.е. объект класса Element, то искать нужно с помощью FilteredElementCollector

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Re: ScheduleId как получить?
« Ответ #2 : 21-06-2016, 15:26:08 »
Спасибо, буду разбираться :)

Отмечено как Решение Пашин Евгений 22-06-2016, 09:26:26

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Re: ScheduleId как получить?
« Ответ #3 : 22-06-2016, 09:26:14 »
Итоговое решение по данной теме:

Понимание данного объекта требовалось для импорта табличных значений типоразмеров труб! Соответственно было создан скрипт на Dynamo.

Код Python для создания объекта PipeSegment:

Код - Python [Выбрать]
  1. import clr
  2. clr.AddReference("RevitAPI")
  3. clr.AddReference("System.Core")
  4.  
  5. import System
  6. clr.ImportExtensions(System.Linq)
  7.  
  8. from Autodesk.Revit.DB import *
  9. clr.AddReference("RevitServices")
  10.  
  11. import RevitServices
  12. from RevitServices.Persistence import DocumentManager
  13. from RevitServices.Transactions import TransactionManager
  14.  
  15. # Импорт библиотеки по работе с объектом iCollection
  16. from System.Collections.Generic import *
  17.  
  18. # Забираем выходные значения
  19. MaterialID = UnwrapElement(IN[0]) # Материал для сегмента
  20. ScId       = UnwrapElement(IN[1]) # Объект таблицы, которую копируем
  21. NewScheldu =               IN[2]  # Имя новой спецификации
  22. Dnom       =               IN[3]  # Массив номинальных диамтеров
  23. Dvnu       =               IN[4]  # Массив внутренних диаметров
  24. Dvne       =               IN[5]  # Массив внешних диаметров
  25.  
  26. DnomCount = len(Dnom) # Подсчитываем количество вносимых элементов
  27.  
  28. doc = DocumentManager.Instance.CurrentDBDocument # Работа с текущим документом
  29.  
  30. # Все изменения вносим внтури транзакции
  31. TransactionManager.Instance.EnsureInTransaction(doc)
  32.  
  33. # Дублируем спецификацию\тип с новым именем
  34. DuplPipeSchel = ScId.Duplicate(NewScheldu)
  35.  
  36. i   = 0               # Для счётчика
  37. ms1 = []              # Пустой массив
  38. df  = List[MEPSize]() # Пустой элемент iCollection
  39. while i < DnomCount:
  40.         p1 = int(Dnom[i]) / 304.8
  41.         p2 = int(Dvnu[i]) / 304.8
  42.         p3 = int(Dvne[i]) / 304.8
  43.         p4 = bool(1)
  44.         p5 = bool(1)
  45.         ms = MEPSize(p1,p2,p3,p4,p5) # Создание экземпляра класса MEPSize
  46.         df.Add(ms) # Добавление экземпляра класса MEPSize в объект iCollection
  47.         ms = 0
  48.         i = i + 1
  49.  
  50. # Создание сегмента
  51. sg = Plumbing.PipeSegment.Create(doc, MaterialID.Id, DuplPipeSchel.Id, df)
  52.  
  53. TransactionManager.Instance.TransactionTaskDone()
  54.  
  55. OUT = sg



Итоговое решение во вложении:

  • Изображение скрипта Dynamo
  • Сам скрипт Dynamo
  • Код Python
  • Таблица для импорта значений