Как установить светильник ?

Автор Тема: Как установить светильник ?  (Прочитано 3392 раз)

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

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

  • ADN OPEN
  • Сообщений: 25
  • Карма: 0
Опыта программирования под Revit ARI нет, пользуясь вашей ссылкой на уроки Autodesk попытался расставить хотя бы 1 светильник в выбранных помещениях. Но они ставятся на пол. В этом форуме нашёл попытки решить эту проблему, но она не была решена. Попытался в меру сил найти на английском, нашёл:
 https://thebuildingcoder.typepad.com/blog/2009/08/electrical-settings-and-lighting-fixtures.html
но, я не смог полностью разобраться в логике, и я так понимаю там устаревший диалект C#.
Короче, мне необходимо установить светильники на потолок (в помещениях фальш-потолки, семейство именно "Многослойные потолки").
Алгоритм расстановки я придумал, не понимаю, как установить светильник в конкретную позицию на потолке. Уже потихоньку пару недель над этим сижу, продвижек нет.
Спасибо заранее.
« Последнее редактирование: 24-02-2020, 20:30:28 от Александр Ривилис »

Оффлайн Agens

  • ADN OPEN
  • ***
  • Сообщений: 223
  • Карма: 0
Re: Как установить светильник ?
« Ответ #1 : 25-02-2020, 09:27:35 »
используется метод https://www.revitapidocs.com/2015/7febcfdb-dbfa-317a-1c5e-882621f3e846.htm, XYZ location...
VS2019, VBA 7.1, VB.NET, C#, ACAD2019, Revit 2020

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

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Как установить светильник ?
« Ответ #2 : 25-02-2020, 10:26:18 »
Ну тут с азов надо начинать. Светильники - это пользовательские семейства. Пользовательские семейства могут поддерживать различные опции размещения. Светильники, вероятнее всего, реализованы как семейства на основе грани. Сначала посмотри, как они работают в UI, потом глянь значение свойства Family.FamilyPlacementType.

Дальше смотрим в API методы для размещения семейства - NewFamilyInstance, видим, что там их аж 12 штук. Сразу отбрасываем 4 - где идёт речь о размещении семейства на основе линии, в оставшихся 8 смотрим, где речь идёт о host-овых элементах. Да, можно попробовать использовать метод из совета Агента выше, если работает - хорошо, если нет, или ожидаемый результат отличается от желаемого  - окей, остается 2 метода:
Код - C# [Выбрать]
  1. public FamilyInstance NewFamilyInstance(
  2.         Face face,
  3.         XYZ location,
  4.         XYZ referenceDirection,
  5.         FamilySymbol symbol
  6. )
Здесь обрати внимание, что пишут в SDK насчёт параметра referenceDirection. Начни со значения XYZ.Zero/

И 2 метод:
Код - C# [Выбрать]
  1. public FamilyInstance NewFamilyInstance(
  2.         Reference reference,
  3.         XYZ location,
  4.         XYZ referenceDirection,
  5.         FamilySymbol symbol
  6. )

Он тебе может пригодиться позже, когда потребуется размещать семейства на поверхностях элементов из связанных файлов.