Сообщество программистов Autodesk в СНГ
ADN Club => Revit API => Тема начата: Олег от 16-07-2017, 14:54:03
-
Добрый день.
Подскажите как создать программно коннектор на конце вспомогательной линии только программным способом?
Когда создаешь коннектор вручную с помощью интерфейса то можно выбрать плоскость и вот у вспомогательной линии их 4 штуки. Две плоскости на концах.
Нужно это автоматизировать и делать программно. Но проблема в том что программно там нет плоскостей и некуда положить (прикрепить) коннектор.
Как можно это сделать ?
(https://s24.postimg.org/7okre2tkx/image.png) (https://postimg.org/image/7okre2tkx/)
-
Олег, добрый день.
При создании коннектора в интерфейсе есть возможность создания либо на Face либо на Work Plane
(https://s3.postimg.org/ma6m6d0pr/2017-08-03_1453.png) (https://postimg.org/image/ma6m6d0pr/)
В случае с созданием коннектора на конце линии, она создается именно на рабочей плоскости, а не на поверхности элемента.
Для программного создания в Revit API есть метод CreateDuctConnector(Document, DuctSystemType, ConnectorProfileType, Reference). Важен последний параметр - куда и где будем помещать этот коннектор. Так вот, последним параметром может быть только ссылка на поверхность элемента, а не на рабочую плоскость. Метод создания коннектора на рабочей плоскости, к сожалению, отсутствует.
-
Смотря для чего всё это надо. Виктор Чекалин прав.
Но если задача позволяет, можно применить к примеру такое специфическое решение - создать на конце линии Solid. или очень маленький или сделать его невидимым. от него взять нужный фейс и прицепить коннектор.
-
Спасибо за ответы.
Это нужно для вот чего.
Из файла Аутокада DWG импортируется графика как DirectShape объекты.
Из них строятся семейства с типами.
Каждый тип имеет свой размер. И вот коннекторы должны находиться в нужных местах.
Соответственно меняя размер вспомогательной линии через дополнительный параметр я могу двигать коннектор.
И это должно происходить в автоматическом режиме.
-
я делал при импорте dxf по описанному мной выше алгоритму: создал solid и навесил на него коннектор. Хотя в моём случае были уже фейсы на которых это можно сделать, но не всегда они корректно приходили.
Если получится кодом корректно привязать solid к концу линии, чтобы он двигался совместно с концом линии, то метод может с работать, но могу сказать что это специфическое решение, так как появится лишний объект у семейства. Других идей нет...
Более просто сделать разные семейства, а не одно семейство с разными типами в этом случае. Но тут уже кому что.