Тема: Проблема с GetString

Добрый день всем !
Обнаружилась следующая проблема.
Я получаю строку от пользователя с помощью getstring. Все вроде работает. Но теперь захотели цифры вводить не вручную, а с помощью тулбара. Поставил кнопки, цифры прописал. Запускаю программу, она запршивает от меня стринг по функции getstring. Далее нажимаю на кнопку тулбара - пишет error command "5". А при ручном вводе с клавы - все окей. Можно ли в принципе получать в свою программу данные из тулбара ?

Re: Проблема с GetString

Если в кнопках тулбара снять ^C^C перед значением.

Re: Проблема с GetString

^C^C - не проходит такой фокус :((
Просто пишу цифру, при этом автоматически акад к цифре или любому символу в конце добавляет пробел

Re: Проблема с GetString

> Alexys
Поставь в меню:

5^H

Тогда AutoCAD не будет добавлять пробел.

Re: Проблема с GetString

Или смотри опции GetString - задавай опцию "принимать пробелы" в True, а потом через Replace сноси их

Re: Проблема с GetString

Я их не смогу replacом снести тк у меня глючок возникает на команде getstring - и обрыв

Re: Проблема с GetString

5^H
Написал так. Потом вызываю getstring, жму кнопку - пишет cancel, но без еррора, значение в строку не поступает. Это что так задумано или глючок акада ?

Re: Проблема с GetString

> Alexys
Или глюк AutoCAD'а, или ты чего-то недоговариваешь.

Re: Проблема с GetString

Мне что код привести ? Там одна строка getstring. В качестве того, что пишется под кнопкой точно написал то что Александр Р прописал

Re: Проблема с GetString

Кстати когда прописал под кнопку 5^H, то в командную строку вообще ничего не передается. Цифра 5 не пишется в строку

Re: Проблема с GetString

Вроде бы getstring (и метод VBA и функция лисп) предназначены для ввода с клавиатуры, и попросту не умеют обрабатывать клик по кнопке. ЯТД.
Может, красивше будет небольшая форма с textbox и необходимыми кнопками с числами? Заодно и числовой тулбар не будет съедать рабочее пространство..

Re: Проблема с GetString

> Alexys

Sub GetFromToolbar()
 Dim s As String
 s = ThisDrawing.Utility.GetString(0, vbCr + "Введите число: ")
 ThisDrawing.Utility.Prompt (vbCr + "Пользовател ввел: " + s)
End Sub

На кнопках для ввода цифр, знаков ".","+","-" (можно добавить по аналогии и свои)

0x^H
1x^H
2x^H
3x^H
4x^H
5x^H
6x^H
7x^H
8x^H
9x^H
.x^H
+x^h
-x^h
;   <- Это будет завершение ввода строки

В каждой из кнопок символ x "съедается" комбинацией ^H, поэтому печатается только один символ.

Re: Проблема с GetString

Сидор Лютый пишет:

Вроде бы getstring (и метод VBA и функция лисп) предназначены для ввода с клавиатуры, и попросту не умеют обрабатывать клик по кнопке. ЯТД.

Это не так. Можно вводить откуда угодно в том числе и из toolbar.

Re: Проблема с GetString

> Alexys
Это у меня был небольшой склероз: забыл, что нужно не 5^H, а 5x^H :)

Re: Проблема с GetString

> Александр Ривилис
Спасибо, полезное замечание.

Re: Проблема с GetString

Вот я написал под кнопкой 1: 1x^H
Программа спрашивает у меня, я нажимаю кнопку 1 и получается cancel
Command: Введите смещение: 1 *Cancel*
Commnad: 1
или
Command: Введите смещение: *Cancel*
commnad: 1
Почему cancel-то идет ?

Re: Проблема с GetString

Alexys пишет:

Почему cancel-то идет ?

Понятия не имею. У меня все вышенаписанное работает нормально в AutoCAD 2004...2007. В других не проверял. Возможно Cancel у тебя идет раньше, а обрабатывается только при вызове GetString(). Проверь тот тест, который я написал. Если он будет нормально работать - ищи ошибку у себя.

Re: Проблема с GetString

У меня 2002 autocad. Скрипт на delphi аналогичен приведенному выше.
запустил вызов процедуры в своей программе
Пишет в командной строке
Command: Введите номер объекта:
Нажимаю кнопку с цифрой "1" согласно приведенному выше коду
Получаю
Command: Введите номер объекта: *Cancel*
Command: 2
жму enter - пишет
Unknow command "2".
Что такое vbCr - в VB ?

Re: Проблема с GetString

> Александр Ривилис
Тоже не могу заставить ввести с тулбара цифру. При клике на кнопке появляется таки сообщение об ошибке "Method 'GetString' of object 'IAcadUtility' failed", а в командной строке то же что и у Alexys
Пробовал в 2002-м и 2006-м.
Хочется понять, почему у Вас получается, а у нас - нет.

Re: Проблема с GetString

> Alexys
vbCr - это перевод строки ("\n" в Lisp и C++)

Сидор Лютый пишет:

Хочется понять, почему у Вас получается, а у нас — нет.

Понятия не имею, т.к. не пишу на VB/VBA/DELPI. Специально проверил по просьбе Alexys - все сработало. Точно также у меня это работат в Lisp'е и в ObjectARX.

Re: Проблема с GetString

Значит это очередной глючек AutoCAD.

Re: Проблема с GetString

Тоже проверил, все работает.
Макрос на кнопке:

567x^H;

Протокол:

Command: -vbarun
Macro name: Module1.GetFromToolbar
Введите число: 567
Пользовател ввел: 567

Re: Проблема с GetString

> BP
Значит нас уже двое! :)

Re: Проблема с GetString

Мне кажется, что если мы внешним способом коннектимся к Акаду, то это не срабатывает. А согласно приведенной статистике успехов следует, что получается при использовании внутренних средств автоматизации. Если я коннектчусь из внешней проги - не проходит.
arx, lisp, vbarun - это все родное

Re: Проблема с GetString

Кстати, я заметил, что если предварительно по первому getstring - ввожу вручную,
а потом еще раз вызываю getstring и пишу число с тулбара, то автокад ругается cancelom, но число все же со второй появляющейся строчки считывает.
Что же здесь такое :)) ?