Сообщество программистов Autodesk в СНГ
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
1 час
1 день
1 неделя
1 месяц
Навсегда
Новости:
Образовательный курс по платформе Autodesk Forge.
Начало
Сайт
Правила
Помощь
Поиск
Непрочитанные
Календарь
Вход
Регистрация
Сообщество программистов Autodesk в СНГ
»
ADN Club
»
AutoCAD .NET API
»
Ввод строки пользователем, начинающейся с "("
« предыдущая тема
следующая тема »
Печать
Страницы: [
1
]
Вниз
Автор
Тема: Ввод строки пользователем, начинающейся с "(" (Прочитано 2554 раз)
0 Пользователей и 1 Гость просматривают эту тему.
Тема содержит сообщение с Решением.
Нажмите здесь чтобы посмотреть его.
PuSTaM
ADN OPEN
Сообщений: 4
Карма: 0
Ввод строки пользователем, начинающейся с "("
«
:
03-10-2024, 12:34:49 »
Доброго времени суток.
Пишу программку, которая добавляет в подписи размеров префиксы и суффиксы. У некоторых пользователей есть потребность занести подпись в круглые скобки, но при вводе круглой открывающей круглой скобки автокад переходит в режим ввода 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
(
)
;
}
}
}
}
«
Последнее редактирование: 03-10-2024, 13:37:32 от Александр Ривилис
»
Записан
avc
ADN Club
Сообщений: 822
Карма: 166
Re: Ввод строки пользователем, начинающейся с "("
«
Ответ #1 :
03-10-2024, 12:49:14 »
Окошко диалоговое создайте.
Между прочим: вы забываете проверять, что пользователь может передумать на каждом запросе и нажать Esc.
Записан
PuSTaM
ADN OPEN
Сообщений: 4
Карма: 0
Re: Ввод строки пользователем, начинающейся с "("
«
Ответ #2 :
03-10-2024, 12:57:31 »
Если пользователь жмет Esc, то ничего не вводится, можно ввести только префикс или только суффикс. Зачем его дополнительно проверять?
Спасибо за совет с диалоговым окном, пойду смотреть как его создавать)
Записан
avc
ADN Club
Сообщений: 822
Карма: 166
Re: Ввод строки пользователем, начинающейся с "("
«
Ответ #3 :
03-10-2024, 13:01:56 »
затем, что ваша программа будет терроризировать пользователя новыми запросами, хотя он давно уже отказался от ввода. Как в анекдоте - "хочешь я расскажу тебе сказку..."
Записан
Отмечено как Решение
PuSTaM
18-10-2024, 21:14:29
Алексей Кулик
Administrator
Сообщений: 1115
Карма: 173
Re: Ввод строки пользователем, начинающейся с "("
«
Ответ #4 :
18-10-2024, 20:16:27 »
В запросе строки стоит добавить возможность использования пробелов.
Записан
Все, что сказано - личное мнение.
Правила форума
существуют не просто так!
Приводя в сообщении код, не забывайте про его
форматирование
!
Печать
Страницы: [
1
]
Вверх
« предыдущая тема
следующая тема »
Сообщество программистов Autodesk в СНГ
»
ADN Club
»
AutoCAD .NET API
»
Ввод строки пользователем, начинающейся с "("