ADN Club > AutoCAD .NET API

"Своё" поле с указанием отображаемого текста

(1/3) > >>

Андрей Бушман:
Тема не относится к категории .NET, но поскольку нет ветки по вопросам, не связанным с конкретным языком программирования, то спрашиваю здесь.

Мне нужно в тексте или атрибуте размещать текстовую информацию которая бы внешне выглядела как поле Field, но не вычислялась AutoCAD'ом и не показывала в качестве текста ####. В качестве значения такое поле должно содержать текст, указанный мною в составе этого поля. Моя программа сама будет вычислять значение для этого поля и прописывать их в него.

Т. е. предположим, что я напишу нечто подобное:


--- Код: ---%<Bushman.SheetSet \GetObj(123456).GetCustomProp("some_name") \DefaultText("0000")>%
--- Конец кода ---

в поле присутствует некоторая информация, нужная моему приложению, а так же текстовое значение, которое AutoCAD должен отобразить вместо ####. (в данном случае это 0000) Как такое сделать?

Теоретически, я мог бы воспользоваться следующим хитрым способом:


--- Код: ---%<\AcSm ?Sheet.Тут пишу нужный мне текст \f "%tc3">%
--- Конец кода ---

В этом случае, если в составе подшивки для листов не определено пользовательское свойство "Тут пишу нужный мне текст", то этот текст будет отображаться в качестве значения поля. Однако это не самый лучший вариант решения вопроса, т. к. в какой-то момент времени значение может совпасть с именем пользовательского свойства и значение поля будет неверным (не тем, которое я ожидаю).

Спасибо.

Александр Ривилис:
Теоретически создавать свои поля можно. Но только на C++ средствами ObjectARX. Смотри в ObjectARX SDK Docs раздел AcFd and CAcFdUi Classes.
Пример я нашел в ObjectARX SDK 2009 (в следующих версиях его почему-то изъяли): samples\misc\TextFileField

Фактически создание свое поля равносильно созданию custom object/entity со всеми вытекающими последствиями, типа появления прокси-объектов в случае незагруженности соответствующего dbx-файла.

Андрей Бушман:

--- Цитата: Александр Ривилис от 29-11-2013, 13:49:04 ---Теоретически создавать свои поля можно.
--- Конец цитаты ---
А назначать обычному полю (присутствующему в AutoCAD по умолчанию) значение, которое должно подставляться взамен #### как-то можно?

Александр Ривилис:
Нет. Во всяком случае официальными средствами AutoCAD .NET API.

Андрей Бушман:
Тогда поставлю вопрос по другому: можно ли в тексте (однострочном, многострочном) как-то визуально имитировать поле? Т.е. к примеру, в тексте "Мама мыла раму" слово "рама" показывать на непечатуемом, но визуально видимом сером фоне, подобно тому, как это происходит с полями (Fields).

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии