|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
16.05.2004, 20:37 | #1 | |
Помогите новичку
Сообщений: n/a
|
||
Просмотров: 9033
|
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
|
Конечно не будет работать...
И где только берутся "образцы" для таких "творений" Цитата:
Значит так, давай по порядку. Чтоб не путаться в дальнейшем, сначала завязывай с вот этим Цитата:
Код:
Цитата:
Код:
PS В целях сохранности мозгов выкинь подальше "образец" откуда срисовывал сей шедевр и найди нормальный учебник. Хотя бы хелп АКАДовый. |
|||
|
||||
Сообщений: n/a
|
Спасибо за помощь, но я до сих пор не догоняю...
Вот переделал, а он доходит до (0 (- Высота 19)) и выводит это число... почему? а главное почему не рисует? (defun C:vid ( ) (setvar "blipmode" 0) (command "vpoint" "0,0,1") (setq Высота ( getreal "Высота шкафа =")) (setq Ширина ( getreal "Ширина шкафа=")) (setq Глубина ( getreal "Глубина шкафа=")) (setvar "cmdecho" 0) (setvar "Shadedge" 1) (command "grid" "off") (command "color" "White") (command "pline" '(11 0) '(11 11) '(0 11) '(0 (- Высота 19)) '(11 (- Высота 19)) '(11 (- Высота 8) "") ) ; end function |
|||
|
||||
Сообщений: n/a
|
А если так:
(defun C:vid ( ) (setvar "blipmode" 0) (command "vpoint" "0,0,1") (setq Высота ( getreal "Высота шкафа =")) (setq Ширина ( getreal "Ширина шкафа=")) (setq Глубина ( getreal "Глубина шкафа=")) (setvar "cmdecho" 0) (setvar "Shadedge" 1) (command "grid" "off") (command "color" "White") (command "pline" '(11 0) '(11 11) '(0 11) (cons 0 (- Высота 19)) (cons 11 (- Высота 19)) (cons 11 (- Высота 8)) "") ) ; end function То получается (после 3-х первых точек, их он рисует) Unknown command "HKAF". Press F1 for help. nil Н |
|||
|
||||
Сообщений: n/a
|
Спасибо, так все работает:
(command "pline" '(11 0) '(11 11) '(0 11) (list 0 (- Высота 19)) (list 11 (- Высота 19)) (list 11 (- Высота 8)) (list (- Ширина 19) (- Высота 8)) (list (- Ширина 19) (- Высота 19)) (list (- Ширина 8) (- Высота 19)) (list (- Ширина 8) 11) (list (- Ширина 19) 11) (list (- Ширина 19) 0) "close") А еще подскажите, как выглядят в Lisp команды: 1) circle 161,1320 2.1 2) ucs n 1248,0,0 Всем огромное спасибо за помощь |
|||
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
|
Как выглядят команды... Почти (!) любая команда АКАД может быть вызвана из Лиспа при помощи (command ...). Самый простой способ записи - написать то же самое, как будто пишешь в командной строке. При этом вместо Enter'а используется пустая строка - "". Точки в команду нужно передавать как списки координат. Опции - как строковые. Дистанции, радиусы и т.п. - как целые или вещественные. Графические примитивы - куча вариантов... как примитив, как примитив с точкой, как набор. Пользовательский ввод - pause. Подробнее смотри в учебниках.
Код:
Код:
|
|||
|
||||
Сообщений: n/a
|
Еще несколько вопросов по Lisp:
1) Возможно ли в Lisp "вводить" данные не в командной строке, а как-нибудь через окошки (если Lisp такое позволяет)? 2) На экран выводиться число 31,456000000, а надо 31,45 - как отсечь тысячные? 3) Существует ли звуковой сигнал типа "sound"? 4) Можно ли замедлить рисование (выполнение программы), не паузами, а равномерно? (через строчку (command "delay" "1000") - не предлогать) 5) Можно ли программой создавать каталоги и сохранять в них созданные данные? Спасибо за подсказки. |
|||
|
||||
Сообщений: n/a
|
По (3), я не понял как заставить пискнуть в программе, как это пишется?
По (4), есть 2000 линий, на моей машине рисуется за ~2 сек, в институте за ~40 сек и выглядет очень умно :), как можно замедлить ход на быстрых машинах? А еще, подскажите, существует ли команда СТИРЕТЬ ВСЕ (включая слои и типы линий)? |
|||
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
|
3) (vlr-beep-reaction)
4) Все таки наверно придется использовать (command "_.delay" "1000"), только надо поточнее определиться, куда ее впихивать... И параметр поменьше, например 1 или 10. Если конечно это действительно нужно. Вариант - сделать свою функцию без command, но на основе while. "СТИРЕТЬ ВСЕ" - _.erase _all и потом несколько раз _.purge |
|||
|
||||
Проектировщик свиноводство Регистрация: 21.08.2003
Сообщений: 2,267
|
Цитата:
(atoi (menucmd "M=$(edtime,$(getvar,date),MSEC)")) и отрабатывать каждый следующий шаг отрисовки только спустя нужное количество миллисекунд. |
|||
|
||||
Сообщений: n/a
|
Появились еще вопросы, подскажите кто знает...
Начало: (setq Высота ( getreal "Высота шкафа =")) (setq Ширина ( getreal "Ширина шкафа=")) (setq Глубина ( getreal "Глубина шкафа=")) После всех нарисовок надо сохранить: (command "saveas" "dxf" "16" "00000.dxf") У меня не получается заменить "00000.dxf" на "ВысотахШиринахГлубина.dxf" (естественно должны быть цифры) получается довольно сложно и не работает :((( И еще как написать путь сохранения этого файла, если требуется сохранять в папку например "ris" которая расположена на рабочем столе? (на одном компе, несколько рабочих столов и должен сохранять в текущую) |
|||
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
|
Цитата:
Код:
|
|||
|
||||
Сообщений: n/a
|
А как все таки выглядит строка полностью
(command "saveas" "dxf" "16" "00000.dxf") + (strcat (rtos Высота 2 0) "x" (rtos Ширина 2 0) "x" (rtos Глубина 2 0) ".dxf") + (VL-REGISTRY-READ "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders" "Desktop") + в папку "ris" А то мысль есть, но мне ее явно не хватает... или если это сложно, как сохранить в папку С:\ris\ (я потом ярлык папки вытащу на стол) |
|||