Сообщество программистов Autodesk в СНГ
ADN Club => Revit API => Тема начата: v13 от 23-04-2021, 11:15:30
-
Здравствуйте, подскажите правильная ли у меня логика в создании скрипта. Начал создавать автоматическую расстановку dimensions на листе для внутренних инженерных сетей. Элементы на листе создаются но пересекаются между собой, я решил под каждым dimension создать некую невидимую surface и если точка расположения текста dimension.TextPosition попадает на такую поверхность, то XYZ из TextPosition смещается. И вот главный вопрос, каким лучше классом из revitAPI создать эту поверхность подкладку под dimension?
-
Элементы на листе создаются
Какие элементы?
создать некую невидимую surface
и
попадает на такую поверхность
тебе не кажется, что ты плодишь лишние ненужные сущности?
-
Под элементы класса dimension. Я уже готов на лишние сущности) сейчас пробую подложить под каждый dimension некий familyInstance. отсмотреть их геометрическое пересечение и в случае пресечения сдвинуть dimension.
Точнее так:
1) Создать классы, каждый класс содержит один dimension и familyinstance в виде площадки под него, площадка должна покрывать его геометрию
2) Проверить эти классы друг с другом на пересечение по свойству с familyinstance
3) При нахождении пересечения в одном из классов сдвигать textPosition в зависимости от ориентации по x или y на 2мм (высота текста)
4) Цикл повторять до тех пор пока пересечений не останется пересчений
5) Удаление всех созданных для подлжек familyInstance
-
(https://i.postimg.cc/WtM8Lhsv/3.jpg) (https://postimg.cc/WtM8Lhsv)
Вот примерно по такому принципу
Подкладываю семейство под размер и отследить все пересечения по принципу пересечения solid'ов этих семейств, при обнаружении пересечения сдвигать dimension на высоту текста.
Если закопался в дебри, поправьте пожалуйста. В данный момент вижу только такой выход для корректного размещения dimension на листе