Сообщество программистов Autodesk в СНГ
ADN Club => AutoCAD .NET API => Тема начата: avc от 07-10-2023, 18:53:37
-
Есть ли в API какой-то способ понять, что выбрана группа (Group), а не отдельные объекты? И как получить идентификатор выбранной группы? В Editor, PromptSelectionResult и SelectedObject ничего про группы не вижу :(
-
Есть ли в API какой-то способ понять, что выбрана группа (Group), а не отдельные объекты?
Нет конечно. А если пользователь выбрал несколько групп? Ты теоретически зная все выбранные объекты можешь найти все выбранные группы. Но непонятно зачем? Для каждого из выбранных объектов ты можешь найти в какие группы он входит и соответственно найти все объекты этих групп.
-
Как найти группы, которым принадлежит примитив (http://adn-cis.org/kak-najti-gruppyi-kotoryim-prinadlezhit-primitiv.html)
-
Перебирать все объекты всех групп во всех комбинациях - это очевидный, но тупиковый путь - слишком долго, слишком много комбинаций. Но при этом штатная панель свойств знает, что выбрана именно группа (в заголовке пишет, например, "3D Solids (2) (Group)" . А если выключить выбор группами, то уже не пишет (Group). То есть внутри движка AutoCAD точно есть какая-то возможность передать в панель свойств эту информацию.
На вопрос Зачем?: многие пользователи используют именованные группы вместо блоков. Соответственно нужно имя группы получить и использовать как имя сборки. (пользователь обещал не заталкивать один объект во многие группы). И это прекрасно работает, проблем нет. Но далее я добавляю группы в свою палитру свойств для удобства переименования и палитра свойств должна знать, когда группа выбрана, а не отдельные объекты. Вот тут уже сложнее...
-
Перебирать все объекты всех групп во всех комбинациях - это очевидный, но тупиковый путь - слишком долго, слишком много комбинаций.
Никаких комбинаций - достаточно пройтись один раз по всем выбранным объектам и для каждого объекта из него получить в какие группы он входит. Т.е. это один линейный проход.
Ну а проверить выбираются отдельные примитивы или включен выбор групп - это ты и сам можешь: https://help.autodesk.com/view/ACD/2024/ENU/?guid=GUID-0F1D2321-E474-48AA-9179-98F17CCCA239