Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: avc от 27-10-2020, 22:26:42

Название: Вызвать Калькулятор
Отправлено: avc от 27-10-2020, 22:26:42
Есть ли какой-нибудь способ вызвать калькулятор Автокад? Передать ему цифру, получить от него результат. Я имею ввиду модальный диалог калькулятора, который вызывается из палитры свойств, а не палитру QuickCalc. Что-то этого диалога не видно в Autodesk.AutoCAD.Windows. Есть какой-то Autodesk.AutoCAD.Internal.Calculator, но похоже это чисто для вычислений, не диалог.
Название: Re: Вызвать Калькулятор
Отправлено: Александр Ривилис от 27-10-2020, 23:28:13
Так
Передать ему цифру, получить от него результат.
или
Я имею ввиду модальный диалог калькулятора
Согласись, что это совершенно разные вещи.
Название: Re: Вызвать Калькулятор
Отправлено: avc от 27-10-2020, 23:33:34
Не соглашусь. Может не понятно объясняю...
Модальный (то есть прерывающий работу в Автокад) калькулятор именно так и работает - берет число из свойств объекта и по нажатию ОК возвращает результат обратно в палитру свойств. А не модальная палитра-калькулятор так не умеет и поэтому мне вызов команды QuickCalc ничего полезного не даст.
Название: Re: Вызвать Калькулятор
Отправлено: Александр Ривилис от 27-10-2020, 23:38:12
Так тебе нужен этот диалог или просто вычислить выражение, переданное в виде строки, а диалог при необходимости ты нарисуешь сам?
Название: Re: Вызвать Калькулятор
Отправлено: avc от 27-10-2020, 23:41:31
Именно диалог. Выражения я умею вычислять прямо в полях ввода.
Название: Re: Вызвать Калькулятор
Отправлено: Александр Ривилис от 28-10-2020, 01:08:47
"А всё-таки она вертится!" (c) Галилео Галилей :D

Причем всё очень просто:

Код - C# [Выбрать]
  1. using Autodesk.AutoCAD.Runtime;
  2. using Autodesk.AutoCAD.ApplicationServices;
  3. using Autodesk.AutoCAD.EditorInput;
  4. // Это из файла AcCalcUi.dll - не забываем про CopyLocal = False
  5. using Autodesk.AutoCAD.CalculatorUI;
  6. using Autodesk.AutoCAD.Internal.Calculator;
  7.  
  8. [assembly: CommandClass(typeof(Rivilis.CalcFormTest))]
  9.  
  10. namespace Rivilis
  11. {
  12.   public class CalcFormTest
  13.   {
  14.     [CommandMethod("CalcTest")]
  15.     public void CalcTestHandler()
  16.     {
  17.       Document doc = Application.DocumentManager.MdiActiveDocument;
  18.       Editor ed = doc.Editor;
  19.       CalcResult rs = QCalcApplication.ShowModalCalculator("Тест Калькулятора", "3*14*15+92.6", true);
  20.       if (rs != null) {
  21.         ed.WriteMessage($"\nDWGResultString = {rs.DWGResultString}, " +
  22.                         $"\nResultString = {rs.ResultString}," +
  23.                         $"\nResult = {rs.Result}"
  24.         );
  25.       }
  26.     }
  27.   }
  28. }



Интересно, что в интернете нет никаких упоминаний об этом... Сделаю-ка я статью на сайт по этому поводу.


Название: Re: Вызвать Калькулятор
Отправлено: avc от 28-10-2020, 08:39:41
Вот оно как! В отдельную dll запрятано... Спасибо!
Обязательно делайте статью. Вызов калькулятора полезен во многих формах ввода
Название: Re: Вызвать Калькулятор
Отправлено: Привалов Дмитрий от 28-10-2020, 10:17:52
Вызов калькулятора полезен во многих формах ввода
А чем полезен? Показать формулу расчета?
Название: Re: Вызвать Калькулятор
Отправлено: avc от 28-10-2020, 10:34:44
Приятно пользователю нажать кнопочку получить калькулятор, потыкать в нем мышкой (клавиатуру то мы не любим), получить результат уже прямо в нашей форме, без всяких Ctrl+C|Ctrl+V. Мелочь конечно, но приятно. Тем более Автокадовский калькулятор дистанции мерить умеет.
Я вот встроил в поля ввода калькулятор. Достаточно написать 2+2 чтоб ввелось 4. И как вы думаете сколько пользователей у этой фичи? Ровно 0. Надо чтоб мышкой кнопочку калькулятора и в ней мышкой кнопочки [2][ + ][2]... такие дела...
Название: Re: Вызвать Калькулятор
Отправлено: Александр Ривилис от 28-10-2020, 11:02:59
Я вот встроил в поля ввода калькулятор. Достаточно написать 2+2 чтоб ввелось 4. И как вы думаете сколько пользователей у этой фичи? Ровно 0. Надо чтоб мышкой кнопочку калькулятора и в ней мышкой кнопочки [2][ + ][2]... такие дела...
Это не очевидно, что в полях ввода можно писать выражения. Наверное поэтому и не пользуются.
Название: Re: Вызвать Калькулятор
Отправлено: avc от 28-10-2020, 11:06:56
Это не очевидно, что в полях ввода можно писать выражения. Наверное поэтому и не пользуются.
Согласен. И это тоже аргумент в пользу кнопочки вызова калькулятора.
Название: Re: Вызвать Калькулятор
Отправлено: Привалов Дмитрий от 28-10-2020, 12:06:15
И это тоже аргумент в пользу кнопочки вызова калькулятора.
А что в поле такое вводят, что им приходиться калькулятором пользоваться?
Название: Re: Вызвать Калькулятор
Отправлено: Александр Ривилис от 28-10-2020, 12:08:50
И это тоже аргумент в пользу кнопочки вызова калькулятора.
А что в поле такое вводят, что им приходиться калькулятором пользоваться?
Элементарный пример - расстояние между точками на чертеже.
Название: Re: Вызвать Калькулятор
Отправлено: avc от 28-10-2020, 12:22:59

Re: Вызвать Калькулятор
« Ответ #11 : 28-10-2020, 12:06:15 »
Цитировать (выделенное)
Цитата: avc от 28-10-2020, 11:06:56
И это тоже аргумент в пользу кнопочки вызова калькулятора.
А что в поле такое вводят, что им приходиться калькулятором пользоваться?
Сообщить модератору  
Размеры деталей, параметры, цены, веса,.... Да любые цифровые данные. Все иногда приходится пересчитывать в разные единицы, делить на части, суммировать...