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

ADN Club => AutoLisp / VisualLISP и DCL => Тема начата: Алексей Кулик от 12-11-2018, 15:31:19

Название: Некорректная работа функций получения даты и времени?
Отправлено: Алексей Кулик от 12-11-2018, 15:31:19
Есть некоторый функционал, завязанный на получение текущей даты и времени. На AutoCAD 2018x64 и AutoCAD 2019x64 стандартнейшие функции перестали корректно работать.
Во-первых, получение миллисекунд запросто может оказаться некорректным:
Код - Auto/Visual Lisp [Выбрать]
  1. (menucmd "M=$(edtime,$(getvar,date),yyyymodd-hhmmssMSEC)")
В качестве миллисекунд в AutoCAD 2019 все время возвращает нули. Мне слабо верится, что я вручную настолько точно повторно вызываю функцию...
Далее. Если не повезет и запрос времени и даты будет выполняться "под конец минуты", можно получить следующее:
Код - Auto/Visual Lisp [Выбрать]
  1. (rtos (rem(getvar 'cdate)1) 2 30)
  2. ".1516999974846839"
Это как - 99 секунд?
И, наконец, последнее - такое ощущение, что прямой запрос к cdate срабатывает "от балды":
Код - Auto/Visual Lisp [Выбрать]
  1. (rtos (rem (getvar "cdate") 1) 2 16)
  2. (repeat 100 (vl-catch-all-apply (function (lambda () (sqrt (getvar "cdate"))))))
  3. (rtos (rem (getvar "cdate") 1) 2 16)
Возвращает
Код - Auto/Visual Lisp [Выбрать]
  1. ".1528149992227554"
  2. 4492.34
  3. ".1528149992227554"
Попробовал более топорным способом:
Код - Auto/Visual Lisp [Выбрать]
  1. (repeat 20
  2.   ((lambda (/ d)
  3.      (princ)
  4.      (setq d (getvar "cdate"))
  5.      (princ (strcat "\n" (rtos (fix (* 1e12 (- d (fix d)))) 2)))
  6.      ) ;_ end of lambda
  7.    )
  8.   ) ;_ end of repeat
И очень сильно удивился результату:
Код - Auto/Visual Lisp [Выбрать]
  1. 152952000498
  2. 152952000498
  3. 152952000498
  4. 152952000498
  5. 152952000498
  6. 152952000498
  7. 152952000498
  8. 152952000498
  9. 152952000498
  10. 152952000498
  11. 152952000498
  12. 152952000498
  13. 152952000498
  14. 152952000498
  15. 152952000498
  16. 152952000498
  17. 152952000498
  18. 152952000498
  19. 152952000498
  20. 152952000498
Собственно вопрос - что я не учитываю?
Название: Re: Некорректная работа функций получения даты и времени?
Отправлено: Александр Ривилис от 12-11-2018, 18:00:29
Собственно вопрос - что я не учитываю?
Вот это:
https://help.autodesk.com/view/ACD/2019/ENU/index.html?guid=GUID-31FD1A96-C002-434E-8684-63D50BE0CF94
https://help.autodesk.com/view/ACD/2019/RUS/index.html?guid=GUID-31FD1A96-C002-434E-8684-63D50BE0CF94

Начиная отсюда:
Цитировать
Программы на основе AutoCAD 2017 и более поздней версии
CDATE, DATE и другие связанные с датой и временем системные переменные
Название: Re: Некорректная работа функций получения даты и времени?
Отправлено: Алексей Кулик от 12-11-2018, 19:43:53
О, спасибо! Вот чуял я, что проблема в моей невнимательности :)