NewDimension для ViewSection

Автор Тема: NewDimension для ViewSection  (Прочитано 3748 раз)

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

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

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

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
NewDimension для ViewSection
« : 04-02-2019, 13:18:57 »
День добрый.
Подскажите, как можно создать размер (по вертикали) от уровня  до семейства (или любого элемента) на разрезе ? Думаю у меня проблема в определении XYZ точек на виде (как я понимаю, разрез представляет собой sectionBox, и одна его сторона является линией разреза)...


Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: NewDimension для ViewSection
« Ответ #1 : 04-02-2019, 13:22:42 »
Да точно так же, как и на плане. Нужно получить reference-ы (из семейства, оси, уровня, whatever else). Линия размера, в Вашем случае будет иметь направление view.UpDirection

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

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: NewDimension для ViewSection
« Ответ #2 : 04-02-2019, 13:27:48 »
view.UpDirection
Можно какой нибудь пример?

Отмечено как Решение enot 04-02-2019, 14:55:53

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: NewDimension для ViewSection
« Ответ #3 : 04-02-2019, 13:30:33 »
Да пожалуйста. На Revit Python shell:
Код - Python [Выбрать]
  1. def FindFloor():
  2.         return FilteredElementCollector(doc, doc.ActiveView.Id).OfClass(Floor).FirstElement()
  3.        
  4. def FindLevel():
  5.         return FilteredElementCollector(doc, doc.ActiveView.Id).OfClass(Level).FirstElement()
  6.        
  7. floor = FindFloor()
  8. level = FindLevel()
  9.  
  10. references = ReferenceArray()
  11. references.Append(HostObjectUtils.GetBottomFaces(floor)[0])
  12. references.Append(Reference(level))
  13.  
  14. dimLine = Line.CreateUnbound(XYZ.Zero, doc.ActiveView.UpDirection)
  15.  
  16. tx = Transaction(doc, "create dimension")
  17. tx.Start()
  18.  
  19. doc.Create.NewDimension(doc.ActiveView, dimLine, references)
  20.  
  21. tx.Commit()


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

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: NewDimension для ViewSection
« Ответ #4 : 04-02-2019, 13:31:49 »
Значит, для вертикального размера используем
doc.ActiveView.UpDirection
Есть еще пара вопросов

1.) А для горизонтального , вероятно, :

doc.ActiveView.RightDirection ?

2.)  в Line.CreateUnbound(XYZ.Zero, doc.ActiveView.UpDirection) => XYZ.Zero - это ноль проекта?
« Последнее редактирование: 04-02-2019, 16:06:05 от enot »