Реклама i
Стань нашим партнером - зарабатывай с нами!
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > AutoLisp. Как получить текущее время?

AutoLisp. Как получить текущее время?

Ответ
Поиск в этой теме
Непрочитано 04.07.2012, 11:21 #1
AutoLisp. Как получить текущее время?
Zaghim
 
Регистрация: 01.07.2010
Сообщений: 521

Тема подобная есть, время получал так:
Код:
[Выделить все]
(setq time (rtos (fix (* 1000000 (- (getvar "cdate") (fix (getvar "cdate"))))) 2 0))
,
но если время равно 00:00:20, то возвращает только 20
Пробовал считать по кол-ву символов и принудительно дописывать нули, но почему-то не всегда срабатывает....
Просмотров: 2963
 
Непрочитано 04.07.2012, 12:25
#2
KSI


 
Регистрация: 19.03.2004
Калининград
Сообщений: 1,842


А если так:
Код:
[Выделить все]
 (setq time (substr (rtos (- (getvar "cdate") (fix (getvar "cdate"))) 2 6) 3 6))
Хотя нет, хвостовые нули подавляет.
А может разложить на составляющие, часы минуты секунды, и потом объединить строки с разделителем?

Последний раз редактировалось KSI, 04.07.2012 в 12:32.
KSI вне форума  
 
Автор темы   Непрочитано 04.07.2012, 12:31
#3
Zaghim


 
Регистрация: 01.07.2010
Сообщений: 521


Если я этот код запускаю просто, то все ровно, выдает с нулем...
Вот еще такой нашел:
Код:
[Выделить все]
 (setq a (menucmd "M=$(edtime,$(getvar,date),hhmmsshh)"))
НО, если это все дело вот здесь:
Код:
[Выделить все]
 (vl-load-com)


(setq cmr (vlr-dwg-reactor "Реактор файлов: "
  (list '(:vlr-savecomplete . undel1)
        '(:vlr-beginclose . undel2)))
);setq

(setq usname (getenv "username"))
(setq usname1 (strcat "H:\\03 Programs\\Engineering Programs\\00 графические\\00 Acad\\log\\" usname ".txt"))

(setq fp (open usname1 "a"))

(gettime)

    (setq dat (itoa (fix(getvar "CDATE")))
	  
          nam (getvar "DWGNAME")
          nam (strcat (getvar "DWGPREFIX")(getvar "DWGNAME"))
          tday (substr dat 7 2)
          tmon (substr dat 5 2)
          tyer (substr dat 1 4)
          	  
          strok1 (strcat "Имя файла:" nam "  Дата:" tday "-" tmon "-" tyer "г  " thh ":" tmm ":" tss)
          strok1 (strcat "Имя файла: " nam )
	  strok3 (strcat "Действие: " "Чертеж открыт")
	  strok4 (strcat "Имя пользователя: " usname)
	  strok5 (strcat "   " "   ")
    )

    (write-line strok4 fp)
    (write-line strok2 fp)
    (write-line strok1 fp)
    (write-line strok3 fp)
    (write-line strok5 fp)
    
    (princ)


(defun undel1 (reac cname / _ad)
;(princ (strcat "\n" (vlr-data reac) " контролирую "))
;(princ cname)
(setq _ad (vla-get-ActiveDocument (vlax-get-acad-object)))
; Проверка имени команды
;(if (member (getcname (car cname)) (list "SAVE" "_SAVE" "QSAVE" "_QSAVE" "OPEN" "_OPEN" "QNEW" "_QNEW" "CLOSE" "_CLOSE"))
  ;(progn
    (setq usname (getenv "username"))
(setq usname1 (strcat "H:\\03 Programs\\Engineering Programs\\00 графические\\00 Acad\\log\\" usname ".txt"))

(setq fp (open usname1 "a"))

  (gettime)
  
(setq strok2 (strcat "Дата: " tday "-" tmon "-" tyer "г  " thh ":" tmm ":" tss))

    (setq dat (itoa (fix(getvar "CDATE")))
	  
          nam (getvar "DWGNAME")
          nam (strcat (getvar "DWGPREFIX")(getvar "DWGNAME"))
          tday (substr dat 7 2)
          tmon (substr dat 5 2)
          tyer (substr dat 1 4)
          	  
          strok1 (strcat "Имя файла:" nam "  Дата:" tday "-" tmon "-" tyer "г  " thh ":" tmm ":" tss)
          strok1 (strcat "Имя файла: " nam )
	  strok3 (strcat "Действие: " "Чертеж открыт")
	  strok4 (strcat "Имя пользователя: " usname)
	  strok5 (strcat "   " "   ")
    )

    (write-line strok4 fp)
    (write-line strok2 fp)
    (write-line strok1 fp)
    (write-line strok3 fp)
    (write-line strok5 fp)
    
    (princ)
    ;(vla-SendCommand _ad "_.UNDO ")
    ;(vla-SendCommand _ad "1 ")
  ;);progn
;);if
);defun undel

(defun undel2 (reac cname / _ad)
;(princ (strcat "\n" (vlr-data reac) " контролирую "))
;(princ cname)
(setq _ad (vla-get-ActiveDocument (vlax-get-acad-object)))
; Проверка имени команды
;(if (member (getcname (car cname)) (list "SAVE" "_SAVE" "QSAVE" "_QSAVE" "OPEN" "_OPEN" "QNEW" "_QNEW" "CLOSE" "_CLOSE"))
  ;(progn
    (setq usname (getenv "username"))
(setq usname1 (strcat "H:\\03 Programs\\Engineering Programs\\00 графические\\00 Acad\\log\\" usname ".txt"))

(setq fp (open usname1 "a"))

  (gettime)
  
(setq strok2 (strcat "Дата: " tday "-" tmon "-" tyer "г  " thh ":" tmm ":" tss))

    (setq dat (itoa (fix(getvar "CDATE")))
	  
          nam (getvar "DWGNAME")
          nam (strcat (getvar "DWGPREFIX")(getvar "DWGNAME"))
          tday (substr dat 7 2)
          tmon (substr dat 5 2)
          tyer (substr dat 1 4)
          	  
          strok1 (strcat "Имя файла:" nam "  Дата:" tday "-" tmon "-" tyer "г  " thh ":" tmm ":" tss)
          strok1 (strcat "Имя файла: " nam )
	  strok3 (strcat "Действие: " "Чертеж открыт")
	  strok4 (strcat "Имя пользователя: " usname)
	  strok5 (strcat "   " "   ")
    )

    (write-line strok4 fp)
    (write-line strok2 fp)
    (write-line strok1 fp)
    (write-line strok3 fp)
    (write-line strok5 fp)
    
    (princ)
    ;(vla-SendCommand _ad "_.UNDO ")
    ;(vla-SendCommand _ad "1 ")
  ;);progn
;);if
);defun undel


(defun gettime ()

  (setq time (substr (rtos (- (getvar "cdate") (fix (getvar "cdate"))) 2 6) 3))

  ;(setq time (menucmd "M=$(edtime,$(getvar,date),hhmmss)"))
  
  (setq thh (substr time 1 2)
        tmm (substr time 3 2)
        tss (substr time 5 2)
  )


  (setq strok2 (strcat "Дата: " tday "-" tmon "-" tyer "г  " thh ":" tmm ":" tss))

)
То оно каким то образом первый ноль убивает... не понимаю что за хрень... как только не пытался обмануть, никак не выходит... что за бред... причем, если запускаю по шагам в дебаге, то время сразу считается нормально WTF????!!!
Zaghim вне форума  
 
Непрочитано 04.07.2012, 12:40
1 | #4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Это так, что ли?
Код:
[Выделить все]
 (defun get-time (date)
          ; date - аналог (getvar "cdate")
  (setq date (itoa (fix (* 1e6 (- date (fix date)))))
        ) ;_ end of setq
  (while (< (strlen date) 6)
    (setq date (strcat "0" date))
    ) ;_ end of while
  (strcat (substr date 1 2) ":" (substr date 3 2) ":" (substr date 5 2))
  ) ;_ end of defun
Пример вызова:
(get-time (getvar "cdate"))
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 04.07.2012, 13:05
#5
Zaghim


 
Регистрация: 01.07.2010
Сообщений: 521


Друзья, все три случая по-отдельности работают прекрасно.
Но именно в этом коде нули умирают!! Можете помочь, ибо я убил уже кучу времени на такую херню, попробуйте запустить код у себя (только путь к файлу имените)

Код:
[Выделить все]
 (vl-load-com)

(setq date (getvar "cdate"))

(setq cmr (vlr-dwg-reactor "Реактор файлов: "
  (list '(:vlr-savecomplete . undel1)
        '(:vlr-beginclose . undel2)))
);setq

(setq usname (getenv "username"))
(setq usname1 (strcat "H:\\03 Programs\\Engineering Programs\\00 графические\\00 Acad\\log\\" usname ".txt"))

(setq fp (open usname1 "a"))

(setq date (itoa (fix (* 1e6 (- date (fix date))))))
 (while (< (strlen date) 6)
   (setq date (strcat "0" date))
 ) 
  
  (setq thh (substr date 1 2)
        tmm (substr date 3 2)
        tss (substr date 5 2)
  )


  (setq strok2 (strcat "Дата: " tday "-" tmon "-" tyer "г  " thh ":" tmm ":" tss))

    (setq dat (itoa (fix(getvar "CDATE")))
	  
          nam (getvar "DWGNAME")
          nam (strcat (getvar "DWGPREFIX")(getvar "DWGNAME"))
          tday (substr dat 7 2)
          tmon (substr dat 5 2)
          tyer (substr dat 1 4)
          	  
          strok1 (strcat "Имя файла:" nam "  Дата:" tday "-" tmon "-" tyer "г  " thh ":" tmm ":" tss)
          strok1 (strcat "Имя файла: " nam )
	  strok3 (strcat "Действие: " "Чертеж открыт")
	  strok4 (strcat "Имя пользователя: " usname)
	  strok5 (strcat "   " "   ")
    )

    (write-line strok4 fp)
    (write-line strok2 fp)
    (write-line strok1 fp)
    (write-line strok3 fp)
    (write-line strok5 fp)
    
    (princ)


(defun undel1 (reac cname / _ad)
;(princ (strcat "\n" (vlr-data reac) " контролирую "))
;(princ cname)
(setq _ad (vla-get-ActiveDocument (vlax-get-acad-object)))
; Проверка имени команды
;(if (member (getcname (car cname)) (list "SAVE" "_SAVE" "QSAVE" "_QSAVE" "OPEN" "_OPEN" "QNEW" "_QNEW" "CLOSE" "_CLOSE"))
  ;(progn
    (setq usname (getenv "username"))
(setq usname1 (strcat "H:\\03 Programs\\Engineering Programs\\00 графические\\00 Acad\\log\\" usname ".txt"))

(setq fp (open usname1 "a"))

  (setq date (itoa (fix (* 1e6 (- date (fix date))))))
 (while (< (strlen date) 6)
   (setq date (strcat "0" date))
 ) 
  
  (setq thh (substr date 1 2)
        tmm (substr date 3 2)
        tss (substr date 5 2)
  )


  (setq strok2 (strcat "Дата: " tday "-" tmon "-" tyer "г  " thh ":" tmm ":" tss))
  
(setq strok2 (strcat "Дата: " tday "-" tmon "-" tyer "г  " thh ":" tmm ":" tss))

    (setq dat (itoa (fix(getvar "CDATE")))
	  
          nam (getvar "DWGNAME")
          nam (strcat (getvar "DWGPREFIX")(getvar "DWGNAME"))
          tday (substr dat 7 2)
          tmon (substr dat 5 2)
          tyer (substr dat 1 4)
          	  
          strok1 (strcat "Имя файла:" nam "  Дата:" tday "-" tmon "-" tyer "г  " thh ":" tmm ":" tss)
          strok1 (strcat "Имя файла: " nam )
	  strok3 (strcat "Действие: " "Чертеж открыт")
	  strok4 (strcat "Имя пользователя: " usname)
	  strok5 (strcat "   " "   ")
    )

    (write-line strok4 fp)
    (write-line strok2 fp)
    (write-line strok1 fp)
    (write-line strok3 fp)
    (write-line strok5 fp)
    
    (princ)
    ;(vla-SendCommand _ad "_.UNDO ")
    ;(vla-SendCommand _ad "1 ")
  ;);progn
;);if
);defun undel

(defun undel2 (reac cname / _ad)
;(princ (strcat "\n" (vlr-data reac) " контролирую "))
;(princ cname)
(setq _ad (vla-get-ActiveDocument (vlax-get-acad-object)))
; Проверка имени команды
;(if (member (getcname (car cname)) (list "SAVE" "_SAVE" "QSAVE" "_QSAVE" "OPEN" "_OPEN" "QNEW" "_QNEW" "CLOSE" "_CLOSE"))
  ;(progn
    (setq usname (getenv "username"))
(setq usname1 (strcat "H:\\03 Programs\\Engineering Programs\\00 графические\\00 Acad\\log\\" usname ".txt"))

(setq fp (open usname1 "a"))

 (setq date (itoa (fix (* 1e6 (- date (fix date))))))
 (while (< (strlen date) 6)
   (setq date (strcat "0" date))
 ) 
  
  (setq thh (substr date 1 2)
        tmm (substr date 3 2)
        tss (substr date 5 2)
  )


  (setq strok2 (strcat "Дата: " tday "-" tmon "-" tyer "г  " thh ":" tmm ":" tss))
  
(setq strok2 (strcat "Дата: " tday "-" tmon "-" tyer "г  " thh ":" tmm ":" tss))

    (setq dat (itoa (fix(getvar "CDATE")))
	  
          nam (getvar "DWGNAME")
          nam (strcat (getvar "DWGPREFIX")(getvar "DWGNAME"))
          tday (substr dat 7 2)
          tmon (substr dat 5 2)
          tyer (substr dat 1 4)
          	  
          strok1 (strcat "Имя файла:" nam "  Дата:" tday "-" tmon "-" tyer "г  " thh ":" tmm ":" tss)
          strok1 (strcat "Имя файла: " nam )
	  strok3 (strcat "Действие: " "Чертеж открыт")
	  strok4 (strcat "Имя пользователя: " usname)
	  strok5 (strcat "   " "   ")
    )

    (write-line strok4 fp)
    (write-line strok2 fp)
    (write-line strok1 fp)
    (write-line strok3 fp)
    (write-line strok5 fp)
    
    (princ)
    ;(vla-SendCommand _ad "_.UNDO ")
    ;(vla-SendCommand _ad "1 ")
  ;);progn
;);if
);defun undel
Zaghim вне форума  
 
Непрочитано 04.07.2012, 14:06
#6
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Код:
[Выделить все]
 (vl-load-com)

(if *vlr-dwg*
  (progn
    (setq *vlr-dwg* nil)
    (vlr-remove-all :vlr-dwg-reactor)
    ) ;_ end of progn
  ) ;_ end of if

(if (not *vlr-dwg*)
  (setq *vlr-dwg* (vlr-dwg-reactor "dwgru_dwg"
                                   '((:vlr-savecomplete . vlr-savecomplete)
                                     (:vlr-beginclose . vlr-beginclose)
                                     )
                                   ) ;_ end of vlr-dwg-reactor
        ) ;_ end of setq
  ) ;_ end of if

(defun _kpblc-log (msg / get-time file handle)

  (defun get-time (date)
          ; date - аналог (getvar "cdate")
    (setq date (itoa (fix (* 1e6 (- date (fix date)))))
          ) ;_ end of setq
    (while (< (strlen date) 6)
      (setq date (strcat "0" date))
      ) ;_ end of while
    (strcat (substr date 1 2) ":" (substr date 3 2) ":" (substr date 5 2))
    ) ;_ end of defun

  (if msg
    (progn
      (setq file   (strcat "d:\\" (getenv "username") ".log")
            handle (open file
                         (if (and (findfile file)
                                  (< (vl-file-size file) 2097152)
                                  ) ;_ end of and
                           "a"
                           "w"
                           ) ;_ end of if
                         ) ;_ end of open
            msg    (if (= (type msg) 'str)
                     (list msg)
                     (mapcar (function vl-princ-to-string) msg)
                     ) ;_ end of if
            ) ;_ end of setq
      (write-line (strcat "Time: " (get-time (getvar "cdate"))) handle)
      (foreach item msg
        (write-line item handle)
        ) ;_ end of foreach
      (close handle)
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of defun

(defun vlr-savecomplete (react cmd)
  (_kpblc-log
    (list (strcat "Имя файла    : " (vl-string-right-trim "\\" (getvar "dwgprefix")) "\\" (getvar "dwgname"))
          "Действие     : Сохранение выполнено"
          (strcat "Пользователь : " (getenv "username") "@" (getenv "userdomain"))
          ""
          ) ;_ end of list
    ) ;_ end of _kpblc-log
  ) ;_ end of defun

(defun vlr-beginclose (react cmd)
  (_kpblc-log
    (list (strcat "Имя файла    : " (vl-string-right-trim "\\" (getvar "dwgprefix")) "\\" (getvar "dwgname"))
          "Действие     : Начало закрытия файла"
          (strcat "Пользователь : " (getenv "username") "@" (getenv "userdomain"))
          ""
          ) ;_ end of list
    ) ;_ end of _kpblc-log
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > AutoLisp. Как получить текущее время?

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Литература по AutoLISP на русском языке PeterPeter LISP 43 22.09.2015 10:33
Кто нибудь знает как получить текущее "компьютерное игорёк Программирование 6 07.07.2015 10:47
Юмор 2007 Огурец Разное 1172 29.12.2007 11:16
VBA. получить центр окружности HiddenM Программирование 2 24.10.2005 12:54
Помощь: Необходимо получить из буквы - ее контур Almig AutoCAD 3 02.06.2005 10:56