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

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

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

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

Задача проста: стрелочные ЧАСЫ средствами Автокад.
Покрасивее, пожалуйста...
Просмотров: 11440
 
Непрочитано 02.12.2005, 14:03
#2
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Глупый вопрос: часы стоячие или ходячие?
А если ходячие, то должны показывать правильное время?

Покорректнее задачку, пожалуйста
vk вне форума  
 
Непрочитано 02.12.2005, 14:13
#3
Кулик Алексей aka kpblc
Moderator

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


И вид - спередии? Сбоку? Сзади? 3Д или 2Д?
И наручные? Или с кукушкой? И кукушка должна выскакивать и чего-то пищать или нет?
И самое главное - пока часы работают, в каде можно будет работать или нет?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 02.12.2005, 15:56
#4
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


И главный вопрос. Почему задача ОЛИМПИЙСКАЯ :?: :?: :?:
Медаль золотую с пятью кольцами за её решение дают?
{Smirnoff} вне форума  
 
Непрочитано 03.12.2005, 11:24 Привет
#5
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Наверное материальное поощерение будет
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 03.12.2005, 12:43
#6
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Цитата:
Сообщение от {Smirnoff}
И главный вопрос. Почему задача ОЛИМПИЙСКАЯ :?: :?: :?:
Скорей всего, это означает, что срок сдачи решения задачи где то ближе к Олимпийским играм. Так что года два еще есть. [sm2305]
За полгода может быть утрясутся условия задачи, потом за два дня код напишем, а оставшиеся полтора года уйдут на отлов багов.

ПэЭс: для разнообразия попутно можно сделать песочную и солнечную версии. С последней, боюсь, могут возникнуть проблемы из за нехватки разрядности АКАД. Солнечную систему случайно никто 1:1 не моделировал в 3D ?
vk вне форума  
 
Непрочитано 03.12.2005, 15:50
#7
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


>VK
Цитата:
Солнечную систему случайно никто 1:1 не моделировал в 3D ?
А в чём проблема? Парсеки в единицах измерения есть. Правда либо километры придется писать миллионами, либо парсеки очень далеко от запятой.

Желающие могут написать прогу для визуализации движения небесных тел на AutoLISP

Данилину предлагается нарисовать собственное виденье Марса и потренироваться в реалистичности рендеринга.
{Smirnoff} вне форума  
 
Непрочитано 03.12.2005, 16:31
#8
asys

архитектор
 
Регистрация: 10.08.2005
Ростов-на-Дону
Сообщений: 5,283


Цитата:
Сообщение от {Smirnoff}
Данилину предлагается нарисовать собственное виденье Марса и потренироваться в реалистичности рендеринга.
В 5-м ArchiCADе по чертежам из AutoCADа 8)
asys вне форума  
 
Непрочитано 03.12.2005, 16:48
#9
Danilin


 
Сообщений: n/a


Смешно, но я думал, задача не вызовет проблем.
Хотя бы как игра-шутка: стрелочные часы с секундной стрелкой идут и показывают текущее время. В автокаде. Неужели невозможно?
 
 
Непрочитано 03.12.2005, 18:44
#10
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Цитата:
Сообщение от Danilin
Смешно, но я думал, задача не вызовет проблем.
Хотя бы как игра-шутка: стрелочные часы с секундной стрелкой идут и показывают текущее время. В автокаде. Неужели невозможно?
Вообще странно, ты такой бывалый...Чё нить слышал о поиске в Google? Я еще два года назад скачивал 4 типа часов реально
ходящих
Ищите и обрящете
fixo вне форума  
 
Непрочитано 03.12.2005, 19:34
#11
Danilin


 
Сообщений: n/a


Искал в Google, можете убедиться: бесполензно.
Простая задачка, а ставит всех в тупик?
На Бейсике стрелочные часы сделать очень просто.
А на Лиспе? Неужели невозможно?
 
 
Непрочитано 03.12.2005, 19:58
#12
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Да можно сделать то... И даже тикать будут... Только если на чистом Лиспе - то получится совершенно бестолковая ерунда. Во первых, использовать бесконечный цикл вроде "посмотреть скока время (в системе) -> перечертить (или повернуть) примитивы-стрелки" (чтоб не сбивать точность хода, вряд ли стоит делать через дилей). Естественно, никакие другие действия с этим документом (где работает часовой Лисп) сделать нельзя. Во вторых, Лисп работает только с активным документом, стало быть при переходе на другой документ чтото должно испортиться в этой системе. Может как то можно решить проблему с компиляцией в VLX, но очень не уверен, что получится.
Другое дело, если использовать внешнее по отношению к АКАДу приложение как часовой механизм, а АКАДу оставить скромную роль "циферблата со стрелками". Тогда в одном файле можно и на часы любоваться и план застройки Марса чертить....
vk вне форума  
 
Непрочитано 03.12.2005, 22:00
#13
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Цитата:
Сообщение от Danilin
Искал в Google, можете убедиться: бесполензно.
Простая задачка, а ставит всех в тупик?
На Бейсике стрелочные часы сделать очень просто.
А на Лиспе? Неужели невозможно?
Плохо ищешь
Переименуй расширение на LSP

:x
fixo вне форума  
 
Непрочитано 05.12.2005, 10:33
#14
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,260


Цитата:
Сообщение от vk
... -> перечертить (или повернуть) примитивы-стрелки"...
А я бы стрелки не примитивами рисовал, а функцией GRDRAW.
Pilot вне форума  
 
Непрочитано 21.12.2005, 14:25
#15
Елпанов Евгений

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


А вот и механика для часиков, с дизайном я не очень...
Код:
[Выделить все]
(defun c:my-clock (/ A B)
  (setvar "cmdecho" 0)
  (if (not (tblsearch "BLOCK" "cl_arrow"))
    (PROGN
      (setvar "clayer" "0")
      (setq a (vla-add (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
		       (vlax-3D-point (list 0. 0.))
		       "cl_arrow"
	      ) ;_  vla-add
      ) ;_  setq
      (vla-AddLine a (vlax-3D-point 0. -1.) (vlax-3D-point 0. 1.))
      (vla-AddLine a (vlax-3D-point 0. 1.) (vlax-3D-point 1. 0.))
      (vla-AddLine a (vlax-3D-point 1. 0.) (vlax-3D-point 0. -1.))
    ) ;_  PROGN
  ) ;_  if
  (setq a (getpoint "\nУкажите точку "))
  (setq	b (mapcar
	    (function
	      (lambda (x)
		(vla-insertblock (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
				 (car x)
				 "cl_arrow"
				 (cadr x)
				 (caddr x)
				 1.
				 0.
		) ;_  vla-insertblock
	      ) ;_  lambda
	    ) ;_  function
	    (list (list (vlax-3d-point a) 100. 1.)
		  (list (vlax-3d-point a) 75. 2.5)
		  (list (vlax-3d-point a) 45. 5.)
		  (list (vlax-3d-point (polar a pi 100)) 1. 1.)
	    ) ;_  list
	  ) ;_  mapcar
	b (append b
		  (vlax-safearray->list
		    (vlax-variant-value (vla-ArrayPolar (cadddr b) 12 (* pi 2) (vlax-3d-point a)))
		  ) ;_  vlax-safearray->list
	  ) ;_  append
  ) ;_  setq
  (repeat 90
    (vl-cmdf "Delay" 200)
    (vla-put-Rotation (caddr b)
		      (- (/ pi 2.)
			 (* (/ pi 6.)
			    (+ (atoi (menucmd "M=$(edtime,$(getvar,date),H)"))
			       (/ (atoi (menucmd "M=$(edtime,$(getvar,date),MM)")) 60.)
			    ) ;_  +
			 ) ;_  *
		      ) ;_  -
    ) ;_  vla-put-Rotation
    (vla-put-Rotation (cadr b)
		      (- (/ pi 2.) (* (/ pi 30.) (atoi (menucmd "M=$(edtime,$(getvar,date),MM)"))))
    ) ;_  vla-put-Rotation
    (vla-put-Rotation
      (car b)
      (- (/ pi 2.) (* (/ pi 30.) (atof (menucmd "M=$(edtime,$(getvar,date),SS.MSEC)"))))
    ) ;_  vla-put-Rotation
  ) ;_  repeat
  (mapcar (function (lambda (x) (vla-delete x) (vlax-release-object x))) b)
  (vla-purgeall (vla-get-activedocument (vlax-get-acad-object)))
  (setvar "cmdecho" 1)
)
Елпанов Евгений вне форума  
 
Непрочитано 21.12.2005, 14:30
#16
asys

архитектор
 
Регистрация: 10.08.2005
Ростов-на-Дону
Сообщений: 5,283


>Елпанов Евгений
Здорово! А вот дизайн и впрям слишком лаконичен
asys вне форума  
 
Непрочитано 21.12.2005, 14:34
#17
Елпанов Евгений

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


Цитата:
Сообщение от Asys
>Елпанов Евгений
Здорово! А вот дизайн и впрям слишком лаконичен
Была бы механика, а корпус можно подобрать любой...
Елпанов Евгений вне форума  
 
Непрочитано 22.12.2005, 11:48
#18
Елпанов Евгений

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


Циферблатик немного доделал - теперь не совсем спартанский вид...
Код:
[Выделить все]
(defun c:my-clock (/ A B)
 (setvar "cmdecho" 0)
 (if (not (tblsearch "BLOCK" "cl_arrow"))
  (PROGN
   (setvar "clayer" "0")
   (setq a (vla-add (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
		    (vlax-3D-point (list 0. 0.))
		    "cl_arrow"
	   ) ;_  vla-add
   ) ;_  setq
   (vla-AddLine a (vlax-3D-point 0. 1.) (vlax-3D-point 1. 0.))
   (vla-AddLine a (vlax-3D-point 1. 0.) (vlax-3D-point 0. -1.))
  ) ;_  PROGN
 ) ;_  if
 (setq a (getpoint "\nУкажите точку ")
       b (mapcar
	  (function
	   (lambda (x)
	    (vla-insertblock (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
			     (car x)
			     "cl_arrow"
			     (cadr x)
			     (caddr x)
			     1.
			     0.
	    ) ;_  vla-insertblock
	   ) ;_  lambda
	  ) ;_  function
	  (list	(list (vlax-3d-point a) 100. 0.5)
		(list (vlax-3d-point a) 90. 5.0)
		(list (vlax-3d-point a) 65. 5.)
		(list (vlax-3d-point (polar a pi 100)) 20. 1.)
		(list (vlax-3d-point (polar a pi 100)) 2.5 0.5)
	  ) ;_  list
	 ) ;_  mapcar
       b (append b
		 (cons (vla-AddCircle (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
				      (vlax-3D-point a)
				      5.
		       ) ;_  vla-AddCircle
		       (append
			(vlax-safearray->list
			 (vlax-variant-value (vla-ArrayPolar (nth 4 b) 60 (* pi 2) (vlax-3d-point a)))
			) ;_  vlax-safearray->list
			(vlax-safearray->list
			 (vlax-variant-value (vla-ArrayPolar (cadddr b) 12 (* pi 2) (vlax-3d-point a)))
			) ;_  vlax-safearray->list
		       ) ;_  append
		 ) ;_  cons
	 ) ;_  append
 ) ;_  setq
 (repeat 150
  (vl-cmdf "Delay" 200)
  (vla-put-Rotation (caddr b)
		    (- (/ pi 2.)
		       (* (/ pi 6.)
			  (+ (atoi (menucmd "M=$(edtime,$(getvar,date),H)"))
			     (/ (atoi (menucmd "M=$(edtime,$(getvar,date),MM)")) 60.)
			  ) ;_  +
		       ) ;_  *
		    ) ;_  -
  ) ;_  vla-put-Rotation
  (vla-put-Rotation (cadr b)
		    (- (/ pi 2.) (* (/ pi 30.) (atoi (menucmd "M=$(edtime,$(getvar,date),MM)"))))
  ) ;_  vla-put-Rotation
  (vla-put-Rotation (car b)
		    (- (/ pi 2.) (* (/ pi 30.) (atof (menucmd "M=$(edtime,$(getvar,date),SS.MSEC)"))))
  ) ;_  vla-put-Rotation
 ) ;_  repeat
 (mapcar (function (lambda (x) (vla-delete x) (vlax-release-object x))) b)
 (vla-purgeall (vla-get-activedocument (vlax-get-acad-object)))
 (setvar "cmdecho" 1)
)
Елпанов Евгений вне форума  
 
Непрочитано 22.12.2005, 12:18
#19
asys

архитектор
 
Регистрация: 10.08.2005
Ростов-на-Дону
Сообщений: 5,283


Другое дело а цифирки будут?
asys вне форума  
 
Непрочитано 22.12.2005, 12:25
#20
Елпанов Евгений

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


А они и впрямь нужны?
Можешь сам добавить или лучше сразу определить конечные рамки, в смысле, что нужно от этих часов...
Можно и корпус в трехмерке сварганить или настоящий часовой механизм с шестеренками (чтоб было видно как работают).

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

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

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