ADN Club > AutoCAD .NET API

Ввод строки пользователем, начинающейся с "("

(1/1)

PuSTaM:
Доброго времени суток.
Пишу программку, которая добавляет в подписи размеров префиксы и суффиксы. У некоторых пользователей есть потребность занести подпись в круглые скобки, но при вводе круглой открывающей круглой скобки автокад переходит в режим ввода lisp'а. Подскажите, пожалуйста, начинающему разработчику, как позволить пользователям ввести в префикс символ "(".

Вот такой код у меня получился на данный момент


--- Код - C# [Выбрать] ---        public void ChangeDimText()        {            Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;            Database dB = doc.Database;            Editor ed = doc.Editor;             TypedValue[] filterListForSelectDimensions = new TypedValue[1];            filterListForSelectDimensions[0] = new TypedValue(0, "DIMENSION");            SelectionFilter filterForSelectDimensions = new SelectionFilter(filterListForSelectDimensions);             PromptResult pref = doc.Editor.GetString("\nВведите префикс");            PromptResult suf = doc.Editor.GetString("\nВведите суффикс");             // Starts a new transaction with the Transaction Manager            using (Transaction trans = dB.TransactionManager.StartTransaction())            {                ed.WriteMessage("\nВыберите размеры для редактирования");                PromptSelectionResult selDim = ed.GetSelection(filterForSelectDimensions);                if (selDim.Status != PromptStatus.OK)                {                    ed.WriteMessage("\nНет выбранных объектов");                    return;                }                ObjectIdCollection selectedDimsId = new ObjectIdCollection(selDim.Value.GetObjectIds());                for (int i = 0; i < selectedDimsId.Count; i++)                {                     DBObject exampleOfDim = selectedDimsId[i].GetObject(OpenMode.ForWrite);                    Dimension dimensionForEdit = exampleOfDim as Dimension;                    if (dimensionForEdit.DimensionText != "")                    {                        string text = dimensionForEdit.DimensionText;                        if (dimensionForEdit.DimensionText.StartsWith("\\X"))                        {                            dimensionForEdit.DimensionText = dimensionForEdit.DimensionText.Insert(2, pref.StringResult) + suf.StringResult;                        }                        else                            dimensionForEdit.DimensionText = pref.StringResult + dimensionForEdit.DimensionText + suf.StringResult;                    }                    else                    {                        string newPrefix = pref.StringResult + dimensionForEdit.Prefix;                        dimensionForEdit.Prefix = newPrefix;                        dimensionForEdit.Suffix += suf.StringResult;                    }                }                trans.Commit();            }        }    }}

avc:
Окошко диалоговое создайте.
Между прочим: вы забываете проверять, что пользователь может передумать на каждом запросе и нажать Esc.

PuSTaM:
Если пользователь жмет Esc, то ничего не вводится, можно ввести только префикс или только суффикс. Зачем его дополнительно проверять?

Спасибо за совет с диалоговым окном, пойду смотреть как его создавать)

avc:
затем, что ваша программа будет терроризировать пользователя новыми запросами, хотя он давно уже отказался от ввода. Как в анекдоте - "хочешь я расскажу тебе сказку..." ;)

Алексей Кулик:
В запросе строки стоит добавить возможность использования пробелов.

Навигация

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

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