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

ADN Club => AutoLisp / VisualLISP и DCL => Тема начата: Пашин Евгений от 24-11-2015, 07:49:34

Название: Создание лог-файла для LISP
Отправлено: Пашин Евгений от 24-11-2015, 07:49:34
Доброе утро!

Подскажите как грамотно создать лог-файл для LISP-функции, в котором должна быть информация:

Название файла должно содержать в себе Имя компьютера и дату в формате __ДДММГГГГ_ЧЧММСС, то есть Имя_компьютера__ДДММГГГ_ЧЧММСС.txt.
Внутри файла:
1) Дата: ДД-ММ-ГГГГ
2) Имя пользователя: #####
3) Имя компьютера: #####
4) Начало функции: ЧЧ:ММ:СС
5) Имя функции: «Вставка стандартного блока»
6) Конец функции: ЧЧ:ММ:СС

Буду признателен за помощь.

Цель: генерировать лог-файл для LISP - функции.


Что я делаю не так?

Код - Auto/Visual Lisp [Выбрать]
  1. (setq str1 "Дата создания:"); как определить?
  2. (setq str2 "Имя компьютера:"); как определить?
  3. (setq str3 "Имя пользователя:"); как определить?
  4. (setq str4 "Начало:"); как определить?
  5. (setq str5 (strcat str2 "__" str1 "_" str4)); имя файла
  6. (setq str6 (strcat "\\server-1\SAPR_report\" str5 ".txt")); полный путь к файлу
  7. (setq myFile (open str6 "w"))
  8. (write-line str1 myFile)
  9. (write-line str2 myFile)
  10. (write-line str3 myFile)
  11. (write-line str4 myFile)
  12. (close myFile)
Название: Re: Создание лог-файла для LISP
Отправлено: Владимир Шу от 24-11-2015, 08:28:03
Посмотрите тут: http://adn-cis.org/forum/index.php?topic=2580.0 , возможно появиться пара идей как получить имя компьютера и имя пользователя.
Название: Re: Создание лог-файла для LISP
Отправлено: Александр Ривилис от 24-11-2015, 09:31:22
Цитировать
Command: (setq comp (getenv "COMPUTERNAME")) "RIVILISAN"
Command: (setq user (getenv "USERNAME")) "Rivilis-AN"
Command: (setq sdate (rtos (getvar "CDATE") 2 6)) "20151124.082957"
Думаю, что этой информации предостаточно.
Название: Re: Создание лог-файла для LISP
Отправлено: Пашин Евгений от 24-11-2015, 09:36:19
Думаю, что этой информации предостаточно.

Увы, Александр Наумович, не достаточно!

Lisp-функция не работает:
Код - Auto/Visual Lisp [Выбрать]
  1. (setq username (getenv "username"))
  2. (setq copname (getenv "computername"))
  3. (setq sdate (rtos (getvar "CDATE") 2 6))
  4. (setq str5 (strcat copname "__" sdate))
  5. (setq str6 (strcat "\\server-1\SAPR_report\" str5 ".txt"))
  6. (setq myFile (open str6 "w"))
  7. (write-line username myFile)
  8. (write-line copname myFile)
  9. (close myFile)


Файл как не формировался, так и не хочет. Даже если задаю локальный путь, а не сетевой, то все равно кочевряжится.
Название: Re: Создание лог-файла для LISP
Отправлено: Александр Ривилис от 24-11-2015, 09:37:51
Lisp-функция не работает:
Кто не работает? Куда не работает? Какие сообщения выдаёт?
Название: Re: Создание лог-файла для LISP
Отправлено: Александр Ривилис от 24-11-2015, 09:40:29
А это что за ерунда:
Код - Auto/Visual Lisp [Выбрать]
  1. (setq str6 (strcat "\\server-1\SAPR_report\" str5 ".txt"))
В lisp обратные слэши (как и в C/C++/C#) нужно дублировать. Т.е.:
Код - Auto/Visual Lisp [Выбрать]
  1. (setq str6 (strcat "\\\\server-1\\SAPR_report\\" str5 ".txt"))
Название: Re: Создание лог-файла для LISP
Отправлено: Пашин Евгений от 24-11-2015, 09:40:32
Кто не работает?

Я запускаю из lisp-редактора, но никакой реакции, кроме "'VLIDE" не получаю.
Название: Re: Создание лог-файла для LISP
Отправлено: Александр Ривилис от 24-11-2015, 09:43:11
http://adn-cis.org/forum/index.php?topic=3233.msg13488#msg13488
Название: Re: Создание лог-файла для LISP
Отправлено: Пашин Евгений от 24-11-2015, 09:45:16
Запускаю построчно в командной строке Автокада - работает!

Код - Auto/Visual Lisp [Выбрать]
  1. (setq username (getenv "username"))
  2. (setq copname (getenv "computername"))
  3. (setq sdate (rtos (getvar "CDATE") 2 6))
  4. (setq str5 (strcat copname "__" sdate))
  5. (setq str6 (strcat "\\\\server-1\\SAPR_report\\" str5 ".txt"))
  6. (setq myFile (open str6 "w"))
  7. (write-line username myFile)
  8. (write-line copname myFile)
  9. (close myFile); чем-то ему последняя строка не угодила
Название: Re: Создание лог-файла для LISP
Отправлено: Александр Ривилис от 24-11-2015, 09:51:03
Запускаю построчно в командной строке Автокада - работает!
Так что еще нужно?
Название: Re: Создание лог-файла для LISP
Отправлено: Пашин Евгений от 24-11-2015, 10:18:19
Так что еще нужно?

Приношу извинения, только последняя строка не работает.
Название: Re: Создание лог-файла для LISP
Отправлено: Александр Ривилис от 24-11-2015, 10:19:41
Приношу извинения, только последняя строка не работает.
Как это выглядит? Если последняя строка не сработает, то и файл не появится или он будет пустой.
Название: Re: Создание лог-файла для LISP
Отправлено: Пашин Евгений от 24-11-2015, 10:22:14
Как это выглядит? Если последняя строка не сработает, то и файл не появится или он будет пустой.

Выводит nil. А файла и нет вовсе. Я думал, что сначала он где-то в памяти формируется, и лишь потом сохраняется в указанной папке. Даже подумал, что с определенной задержкой это происходит. Видимо, нет.

Что мешает ему (lisp-коду) сохраниться?

; error: bad argument type: streamp nil
Название: Re: Создание лог-файла для LISP
Отправлено: Александр Ривилис от 24-11-2015, 10:36:48
Если myfile равно nil то или путь к файлу ошибочный или нет прав на запись. Проверяй.
Название: Re: Создание лог-файла для LISP
Отправлено: Пашин Евгений от 24-11-2015, 10:41:50
нет прав на запись.

Запись у всех пользователей есть. Проверено! От каждого пользователя идет сохранения отчетов в эту папку.

путь к файлу ошибочный

Путь к папке 100% верный. Я же программно создаю в ней файлы.


(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fs11.postimg.org%2Fb5cz1hfxr%2Fpath.jpg&hash=ef3244222371cdaa35fe0926cf6136d6) (http://postimg.org/image/b5cz1hfxr/)
Название: Re: Создание лог-файла для LISP
Отправлено: Александр Ривилис от 24-11-2015, 11:22:44
Выполни свой код построчно и покажи результаты каждой строи в командной строке AutoCAD.
Особенно интересует значение str5, str6 и myfile
Название: Re: Создание лог-файла для LISP
Отправлено: Пашин Евгений от 24-11-2015, 11:27:27
Один момент.
Название: Re: Создание лог-файла для LISP
Отправлено: Пашин Евгений от 24-11-2015, 11:30:08
Command: (load "C:/Users/Pashin.Evgeniy/Desktop/write lisp.lsp")
nil

О мой бог! Файл появился!


(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fs3.postimg.org%2Fyim6m2f1b%2Fpath.jpg&hash=5cf5c9c5897985cc7d79a36aeb828139) (http://postimg.org/image/yim6m2f1b/)

Александр Наумович, их тут уже штук 6 лежит...Значит код срабатывал, а я просто не увидел их  в толпе остальных файлов...
Ну кто я после этого?


Итого:

Код - Auto/Visual Lisp [Выбрать]
  1. (setq username (getenv "username"))
  2. (setq copname (getenv "computername"))
  3. (setq sdate (rtos (getvar "CDATE") 2 6))
  4. (setq str5 (strcat copname "__" sdate))
  5. (setq str6 (strcat "\\\\server-1\\SAPR_report\\" str5 ".txt"))
  6. (setq myFile (open str6 "w"))
  7. (write-line username myFile)
  8. (write-line copname myFile)
  9. (close myFile)


Так как мне нужно вместо "." в переменной sdate установить "__", то код будет:

Код - Auto/Visual Lisp [Выбрать]
  1. (setq username (getenv "username"))
  2. (setq copname (getenv "computername"))
  3. (setq sdate (rtos (getvar "CDATE") 2 6))
  4. (setq str51 (vl-string-subst "__" "." sdate))
  5. (setq str5 (strcat copname "__" str51))
  6. (setq str6 (strcat "\\\\server-1\\SAPR_report\\" str5 ".txt"))
  7. (setq myFile (open str6 "w"))
  8. (write-line username myFile)
  9. (write-line copname myFile)
  10. (close myFile)
Название: Re: Создание лог-файла для LISP
Отправлено: Александр Ривилис от 24-11-2015, 11:32:39
И что это было???
Название: Re: Создание лог-файла для LISP
Отправлено: Пашин Евгений от 24-11-2015, 11:35:46
И что это было???

Ну, кроме моей слепоты ничего и не было! Вы не представляете как мне сейчас стыдно.