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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > ЧАСЫ на Лиспе - Олимпийская задачка

ЧАСЫ на Лиспе - Олимпийская задачка

Ответ
Поиск в этой теме
Непрочитано 02.12.2005, 13:08
ЧАСЫ на Лиспе - Олимпийская задачка
Danilin
 
Сообщений: n/a

Задача проста: стрелочные ЧАСЫ средствами Автокад.
Покрасивее, пожалуйста...
Просмотров: 11450
 
Непрочитано 12.01.2006, 13:29
#41
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


>PSW
1 У тебя, почему то, слетело форматирование - потерялись некоторые скобки.
2 После приведения в порядок п 1 нашел еще две ошибки в вытаскивании даты не все цифры доставались, пришлось заменить
Код:
[Выделить все]
(setq A (rtos (getvar "CDATE") 2))
на
Код:
[Выделить все]
(setq A (rtos (getvar "CDATE") 2 16))
Тогда часики пошли, но очень быстро (полностью заканчивали работу за долю секунды) пришлось добавить в цикл
Код:
[Выделить все]
(vl-cmdf "Delay" 200)
и увеличить количество повторов...
После всех доделок получились приятные часики...
Код:
[Выделить все]
;**********Автор PSW ************************
; Функция переводит градусы в радианы ; Параметр - угол в градусах
;************************************************************
(defun G2R (GG / AA) (setq AA (/ (* pi GG) 180.0)) )

;************************************************************
;************************************************************
;************************************************************
; Функция переводит радианы в градусы
; Параметр - угол в радианах
(defun R2G (GG / AA) (setq AA (/ (* 180.0 GG) pi)) )

;************************************************************
;************************************************************
(defun *ERROR* ()
  (command "_ZOOM" "_ALL")
  (command "_ERASE" "_w" '(-100.0 -100.0) '(100.0 100.0) "")
  (SetVar "FILEDIA" 1)
  (princ)
) ;_  defun
  ; end defun *error*
  ;***********************************************************
(defun C:PSW (/ A A1 A2 A3 A4 B1 T0 T1 T2 U U1 W1 W2 W3)
  (setvar "CMDECHO" 0)
  (command "_ZOOM" "_w" '(-100.0 -100.0) '(100.0 100.0))
  (setq T1 (list 0.0 90.0))
  (setq T2 (list 0.0 100.0))
  (setq T0 (list 0.0 0.0))
  (command "_LINE" T1 T2 "")
  (setq A (entlast))
  (command "_ARRAY" A "" "_p" T0 60 "" "")
  ;***************************************************
  (setq T1 (list 0.0 85.0))
  (setq T2 (list 0.0 100.0))
  (command "_PLINE" T1 "_w" 2.0 2.0 T2 "")
  (setq A (entlast))
  (command "_ARRAY" A "" "_p" (list 0.0 0.0) 12 "" "")
  ;***************************************************
  (repeat 50
    (setq A (rtos (getvar "CDATE") 2 16))
    (setq A1 (substr A 10 2))
  ; Часы
    (setq A2 (substr A 12 2))
  ; Минуты
    (setq A3 (substr A 14 2))
  ; Cекунды
    (setq A4 A3)
  ;*****************************************************
    (setq B1 (+ (atoi A1) (/ (atoi A2) 60.0)))
    (setq U (- 90.0 (* B1 30.0)))
    (command "_PLINE" (polar T0 (G2R (+ 180.0 U)) 20.0) T0 "_w" 4.0 4.0 (polar T0 (G2R U) 50.0) "")
    (setq W1 (entlast))
  ;*****************************************************
    (setq B1 (+ (atof A2) (/ (atof A3) 60.0)))
    (setq U (- 90.0 (* B1 6.0)))
    (command "_PLINE" (polar T0 (G2R (+ 180.0 U)) 20.0) T0 "_w" 4.0 4.0 (polar T0 (G2R U) 80.0) "")
    (setq W2 (entlast))
  ;*****************************************************
    (setq B1 (atof A3))
    (setq U (- 90.0 (* B1 6.0)))
    (setq U1 (fix (- 90.0 (* B1 6.0))))
    (command "_LINE" (polar T0 (G2R (+ 180.0 U)) 20.0) (polar T0 (G2R U) 100.0) "")
    (setq W3 (entlast))
  ;*****************************************************
    (while (= A3 A4)
      (vl-cmdf "Delay" 200)
      (setq A (rtos (getvar "CDATE") 2))
      (setq A4 (substr A 14 2))
  ;*****************************************************
      (entdel W1)
      (entdel W2)
      (entdel W3)
    ) ;_  while
  ); REPEAT
    (command "_ZOOM" "_ALL")
    (command "_ERASE" "_w" '(-100.0 -100.0) '(100.0 100.0) "")
    (SetVar "FILEDIA" 1)
    (princ)
) ;_  defun
Елпанов Евгений вне форума  
 
Непрочитано 12.01.2006, 13:31
#42
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


>PSW
Если обидел, извини за нахальство.
Елпанов Евгений вне форума  
 
Непрочитано 12.01.2006, 14:15
#43
PSW


 
Регистрация: 12.01.2006
Донецк
Сообщений: 30


Евгений, в исходном тексте программы вместо числа 8 появился смайлики рожицы. Видимо их надо было отключить, а за функцию G2R правильное замечание, они у меня прописаны в ACAD.LSP, и я постоянно ими пользуюсь забывая присоединить к программам.
PSW вне форума  
 
Непрочитано 13.01.2006, 14:00
#44
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от VVA
>Елпанов Евгений
Запустил на русском акаде и получил
Цитата:
Неизвестная команда "DELAY". Для вызова справки нажмите F1.
200
Неизвестная команда "DELAY". Для вызова справки нажмите F1.
Подозреваю, что при вызове команд или опций не используется _
Былобы неплохо добавить что-то типа
Код:
[Выделить все]
(princ "\nНаберите CLO для запуска команды")
а то не сразу додумался, все c:my-clock да c:my-clock
Исправленно...
[ATTACH]1137150689.rar[/ATTACH]
Елпанов Евгений вне форума  
 
Непрочитано 13.01.2006, 14:04
#45
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от Asys
Отличная работа, Евгений. Такой вопрос - а изменяемая длина стрелки, чтоб она не вылезала за эллипс циферблата насколько сложна в исполнении?
Если изменять длинну стрелок может оказаться, что часовая будет короче минутной например в 3-00...
Наверное имеет смысл уменьшить секундную отрисовав ее тонкой линией.
Елпанов Евгений вне форума  
 
Непрочитано 13.01.2006, 14:29
#46
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


>Елпанов Евгений Не сочти за занудство, мне не влом будильник удалить ручками, просто так, для порядка. Появилось
Цитата:
Неизвестная команда "UNDO"
VVA вне форума  
 
Непрочитано 13.01.2006, 14:37
#47
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от VVA
>Елпанов Евгений Не сочти за занудство, мне не влом будильник удалить ручками, просто так, для порядка. Появилось
Цитата:
Неизвестная команда "UNDO"
Исправленно:
[ATTACH]1137152275.rar[/ATTACH]
Елпанов Евгений вне форума  
 
Непрочитано 13.01.2006, 15:53
#48
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Переделал секундную стрелку и добавил обработку ошибок на случай ESC...
[ATTACH]1137156816.rar[/ATTACH]
Елпанов Евгений вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > ЧАСЫ на Лиспе - Олимпийская задачка

Размещение рекламы