Сообщество программистов Autodesk в СНГ
ADN Club => AutoCAD .NET API => Тема начата: Павел55 от 06-12-2020, 12:34:57
-
Можно ли создать такое поведение для текста внутри блока, чтобы пользователь мог его редактировать как обычный текст?
-
мог его редактировать как обычный текст
В каком смысле? Он и остаётся обычным. Заходишь в редактор блоков и редактируешь. В этом плане ничего не меняется. Или речь идёт про атрибуты? Но и они вроде достаточно просто редактируются.
-
Имеется ввиду - текст находится внутри блока, но при этом поведение этого текста остается как будто то бы это просто текст ( не внутри блока). То есть при двойном щелчке по нему его можно отредактировать.
-
Можно ли создать такое поведение для текста внутри блока, чтобы пользователь мог его редактировать как обычный текст?
Нет. И не нужно.
-
Для этого как раз и сделаны атрибуты блока. Или они чем-то не устраивают?
-
Для этого как раз и сделаны атрибуты блока. Или они чем-то не устраивают?
Не устраивают, тут выбор либо custom entity, либо что то с блоками колхозить, либо делать отдельное меню для редактирования.
-
Для этого как раз и сделаны атрибуты блока. Или они чем-то не устраивают?
Не устраивают, тут выбор либо custom entity, либо что то с блоками колхозить, либо делать отдельное меню для редактирования.
А для чего это нужно?
-
Для этого как раз и сделаны атрибуты блока. Или они чем-то не устраивают?
Не устраивают, тут выбор либо custom entity, либо что то с блоками колхозить, либо делать отдельное меню для редактирования.
Ну custom entity - это совсем не C#. Да и слишком много мороки. Можешь поиграться с Overrule, но это тоже очень непросто. На С++ я делал что-то похожее, но не уверен, что в AutoCAD .NET API есть всё необходимое. И в результате изменение текста в блок приведёт к изменению его во всех вставках этого блока. У меня создавался клон блока, чтобы не портить оригинал.
-
Не устраивают
Так а чем? Не понимаю смысла править текст внутри блока. Он же изменится для всех блоков в чертеже.
В теории, можно сделать такое. Подписаться на несколько событий, отслеживая клики по объектам и проверяя, попал ли этот клик на текст внутри блока. Если да, то запускать инструмент редактирования текста. Это может быть окошко WPF или WinForm. Но это очень проблемный путь.
-
Не устраивают
Так а чем? Не понимаю смысла править текст внутри блока. Он же изменится для всех блоков в чертеже.
В теории, можно сделать такое. Подписаться на несколько событий, отслеживая клики по объектам и проверяя, попал ли этот клик на текст внутри блока. Если да, то запускать инструмент редактирования текста. Это может быть окошко WPF или WinForm. Но это очень проблемный путь.
По задумке, это должен быть обьект, геометрия которого меняется в зависимости от значения текста. И подразумевается, что именно такой объект будет один в чертеже. Поэтому менять в редакторе блоков - не подходит. Пока что думаю сделать окошко для редактирования текста.
-
Пока что думаю сделать окошко для редактирования текс
Оно не нужно. InplaceTextEditor.Invoke тебе поможет.
-
Всё равно, считаю, что атрибут для этой задачи будет лучше текста. Атрибут легче идентифицировать по тегу. Для редактирования атрибута уже есть все необходимые инструменты - меньше кодить надо будет.