Региональные настройки AutoCAD Civil 3D версии 2019

Автор Тема: Региональные настройки AutoCAD Civil 3D версии 2019  (Прочитано 9428 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Сегодня обнаружил странность в работе своего приложения. Если запускать в AutoCAD Civil 3D 2017 - в диалогах настроек в окнах для ввода числовых значений в качестве разделителя используется точка, а в AutoCAD Civil 3D 2019 в тех же самых местах - запятая! Конечно же, хочется однообразия. Но для этого, сперва хочется понять причину такого поведения. В AutoCAD версии 2019 что-то изменили связанное с региональными настройками?
« Последнее редактирование: 05-03-2019, 23:16:13 от Дмитрий Загорулькин »

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Официальных заявлений по этому поводу я не видел. Насколько мне известно в AutoCAD всех версий и локализаций в качестве разделителя целой и дробной части использовалась точка. Это происходит и в чистом AutoCAD Civil 3D 2019 без дополнений и со всеми обновлениями?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Это происходит и в чистом AutoCAD Civil 3D 2019 без дополнений и со всеми обновлениями?
Ну он у меня вроде такой и есть. Или Вы что-то другое имели в виду?
Я пока просто поинтересовался - мало ли я что-то пропустил. Сейчас попробую сделать небольшую тестовую команду и прогнать её в разных версиях. Я правильно понимаю, что надо исследовать Thread.CurrentThread.CurrentUICulture?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Попробовал проверить вот таким кодом:
Код - C# [Выбрать]
  1. public class TestNumberDecimalSeparator
  2. {
  3.     [CommandMethod("ShowNumDecimalSeparator")]
  4.     public void Run()
  5.     {
  6.         string
  7.             curCultDecSep = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator,
  8.             curUICultDecSep = CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator;
  9.  
  10.         Application.ShowAlertDialog
  11.             ($"CurrentCulture разделитель: {curCultDecSep}{GetDescription(curCultDecSep)}\n"
  12.             + $"CurrentUICulture разделитель: {curUICultDecSep}{GetDescription(curUICultDecSep)}");
  13.     }
  14.  
  15.     static string GetDescription(string separator)
  16.     {
  17.         switch (separator)
  18.         {
  19.             case ".":
  20.                 return "(Точка)";
  21.  
  22.             case ",":
  23.                 return "(Запятая)";
  24.  
  25.             default:
  26.                 return "(Другой)";
  27.         }
  28.     }
  29. }
  30.  
Результат во всех AutoCAD и Civil на моём ПК одинаковый - первый разделитель точка, второй - запятая. Что-то я тогда совсем не понимаю, почему тогда в диалогах есть разница?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Дмитрий Загорулькин,
Не исключаю, что эти команды в AutoCAD Civil 3D 2019 зачем-то переключают разделитель целой и дробной части, а затем его восстанавливают.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Не исключаю, что эти команды в AutoCAD Civil 3D 2019 зачем-то переключают разделитель целой и дробной части, а затем его восстанавливают.
Так ведь это мои команды. В них нет никакого переключения разделителя. Код один и тот же для разных версий - вообще нет никаких различий. Но в 2017 точки, а в 2019 - запятые... Пока что-то даже сообразить не могу куда копать.
Есть только идея везде принудительно задавать отображение чисел с точкой с помощью конвертера, наподобие такого, как в этом обсуждении: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/aa6e7507-8a42-48fc-a5de-3c6a49f7e15f/problem-with-binding-double-value-to-textbox?forum=wpf
Но это работы немало :(

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Так ведь это мои команды.
Т.е. это твои диалоговые окна? А как ты туда выводишь числа?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Используется контрол TextBox у которого свойство Text с помощью Binding привязывается к соответствующему численному свойству класса, который является ViewModel'ю.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Используется контрол TextBox у которого свойство Text с помощью Binding привязывается к соответствующему численному свойству класса, который является ViewModel'ю.
Т.е. WPF? Ну там могут быть свои особенности и какой CultureInfo и какой используется разделитель - черт его знает...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Создал самое простейшее WPF окошко по тому же самому принципу привязки данных - у меня проблема воспроизводится. Проект прикладываю. Можете проверить у себя на чистом AutoCAD? Собранная DLL под .NETFramework 4.0 лежит в папке bin/Debug. Нужно загрузить и запустить команду RUNSIMPLEWPFWINDOW.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
У меня чистый AutoCAD 2019 English - в нём точка. Позднее проверю в русской локализации.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Вильдар

  • ADN Club
  • ****
  • Сообщений: 405
  • Карма: 77
  • Skype: vildar82
У меня
Civil 2017 - точка
Civil 2019 - запятая
Кстати, в моих плагинах оказывается тоже самое  ???
А на что это может повлиять?

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
А на что это может повлиять?
В моём приложении пользователи вводят значения в эти поля. И если ввести значение с неправильным разделителем, то результат может получиться неожиданным. И догадаться в чём дело довольно сложно.
Добавил вывод сообщения в окошко для наглядности.

Оффлайн Вильдар

  • ADN Club
  • ****
  • Сообщений: 405
  • Карма: 77
  • Skype: vildar82
Ну если TextBox биньдить к числу, то в него нельзя будет ввести не число же.