Подскажите, существуют ли практические руководства по Lisp? - Страница 6
Реклама i
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

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

Подскажите, существуют ли практические руководства по Lisp?

Ответ
Поиск в этой теме
Непрочитано 07.03.2006, 15:51
Подскажите, существуют ли практические руководства по Lisp?
vn
 
Регистрация: 10.02.2006
Сообщений: 373

Недавно купил книгу. Полный сборник команд Lisp с их описанием.
Но на этом все и кончилось. Никаких примеров для начинающих.
Если кто знает, с чего начинать изучение Lisp медленно и шаг за шагом , подскажите пожалуйста.
Просмотров: 77042
 
Непрочитано 23.06.2008, 12:47
#101
VVA

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


Alaspher, Наверное все правильно. Я просто ими уже со времен 14 или 2000 Автокада не пользуюсь Это я достал из пыльного мешка для начинающих как один из вариантов решения.
Почему я оставил твой вариант закоментированным уже не помню. Наверное потому что сейчас делаю по другому.
Цитата:
выглядят проще, а делают тоже самое
Я всегда учился красивой оптимизации кода у тебя и у Эдуарда. Главное выглядит ли это проще для Руслана
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 23.06.2008 в 15:14. Причина: Орфография
VVA вне форума  
 
Непрочитано 23.06.2008, 14:21
#102
Рyslan


 
Регистрация: 25.07.2007
Сообщений: 2,518


Леша, вот задача

(defun C:VALVE (/ D1 L D2 H1 D3 D4 Pline)
(initget 7)
(setq D1 (getdist "\Диаметр задвижки:"))
(setq L (getdist "\Длина задвижки:"))
(setq D2 (getdist "\Диаметр шпинделя:"))
(setq H1 (getdist "\Высота шпинделя:"))
(setq D3 (getdist "\Диаметр маховика:"))
(setq D4 (getdist "\Диаметр поперечного сечения маховика:"))
(Command "_.View" "_Front")
(Command "_.Pline" "0,0" (list 0 (* 0.5 D1)) (list (* 0.5 L) (* 0.25 D1)) (list L (* 0.5 D1)) (list L 0) "_C")
(setq Pline (entlast))
(Command "_.Revolve" Pline "" "X" "")
(command "_.UCS" "_New" (list (* 0.5 L) 0))
(command "_.UCS" "_X" -90)
(command "_.Cylinder" "0,0" (* 0.5 D2) H1)
(command "_.UCS" "_New" (list 0 0 H1))
(command "_.Torus" "0,0" (* 0.5 D3) D4)
(Command "_.Union" "_ALL" "")
(command "_.UCS" "_World")
(Command "_.View" "_SWISO")
(princ)
)

Здесь слишком много задавать размеров для задвижки. А можно сформировать таблицу значений, чтобы чтобы не вводить кучу значений а ввести одно, обозначение изделия. Допустим ЗКЛ2-50-16 (обозначение изделия) или обозначение типа, 30с41нж. И еще лучше чтобы по двум этим значениям. Ну как задачка?
Рyslan вне форума  
 
Непрочитано 23.06.2008, 14:24
#103
Кулик Алексей aka kpblc
Moderator

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


Перед тем, как кидаться "в бой", позволю себе немного побурчать
Есть неписаное правило - если запросов больше чем 2, крайне желательно делать диалог. Соответственно получается dcl. Вдобавок dcl с заполняемыми списками (перечислениями). Да вдобавок еще и согласованными - сильно подозреваю, что назначать числа "от балды" недопустимо. Через полчаса-час попробую сесть
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.06.2008, 14:28
#104
Рyslan


 
Регистрация: 25.07.2007
Сообщений: 2,518


тебе материалы дать? Благовещенский каталог например? Про dcl еще не читал, пока выше command не прыгал
Рyslan вне форума  
 
Непрочитано 23.06.2008, 14:49
#105
Кулик Алексей aka kpblc
Moderator

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


Не, мне и без каталогов будет некисло Погоди, я свой код слегка добью до ума, за твою задачу возьмусь
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.06.2008, 14:53
#106
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


И вообще, если уж про задвижку, так не надо у нее ничего запрашивать. Есть изделие определенного Ду, Ру. У них всегда постоянная и известные размеры. Ну, может быть диаметр маховика чуть разный. Значит надо не размеры запрашивать, а выбирать изделие в целом.

А так как задвижка моделируется, то гораздо важнее ее положение в пространстве, например запросом точки начала, направления потока и направления шпинделя. Если всегда от точки 0, так это не програмирование. Начинать надо сразу методически правильно.

На рисунках пример выбора изделия и результат. Всё программирование множества задвижек сводится к вызову одной функции с разными аргументами.
Например:
Код:
[Выделить все]
 
(ru-3d-valve-gate-simple (ru-3d-pipe-flange-std-100-16) 230.0 523 200)
Здесь в аргументах изменяются основные размеры и параметры фланцев. Их (фланцы) тоже можно задать списком, но так как фланцы еще более стандартизированы, чем задвижки, то их данные зашиты в функцию, которую, если что, можно в единственном месте и поправить.
Миниатюры
Нажмите на изображение для увеличения
Название: xml_valves.jpg
Просмотров: 173
Размер:	45.1 Кб
ID:	7805  Нажмите на изображение для увеличения
Название: ru_gate_valve.jpg
Просмотров: 162
Размер:	42.0 Кб
ID:	7806  
ShaggyDoc вне форума  
 
Непрочитано 23.06.2008, 14:58
#107
Рyslan


 
Регистрация: 25.07.2007
Сообщений: 2,518


Хитрюга Шэгги из системы RuCAD показал, конечно у вас там все круто. Ну я ж и говорил, что выбирать по двум значениям, типу и назаванию изделияю
Рyslan вне форума  
 
Непрочитано 23.06.2008, 16:44
#108
Кулик Алексей aka kpblc
Moderator

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


Ни секунды не умаляя ruCAD, все же позволю себе порастекаться мыслию по древу:
Сначала анализируем программу. Там получается несколько запросов (если оставлять их в ком.строке, а не выводить в диалог). Почему бы не написать отдельную функцию, заменяющую get*-функции? Обработать там сразу и нажатие пользователем Esc, и преобразования точек в мировую систему координат (буде такое понадобится), и initget там же прошпарить - в общем, выполнить аналог _ru-get. Это часть 1, сервисная. Займет больше всего времени.
Часть 2, отрисовка. Тут, казалось бы, все просто, ясно и отлажено. Погоди радоваться! Во-первых, насчет использования (command) уже говорилось. Бог с ним, в некоторых случаях ее можно оставить. Но давай "подумаем вперед". Эти же задвижки потом надо будет считать... То есть надо (как минимум) делать блок, внутрь блока "загонять" всю задвижку (кстати, не забудь - у тебя ни тип линии, ни вес, ни слой - ничего не меняется). А потом уже вставлять сам этот блок (как раз тот случай, когда от команды не уйти) в точку, указанную пользователем, с соответствующими углами поворота и т.п.
То есть в принципе код, если его делать "по уму", с нуля может занять несколько дней.
===
Поскольку задача изначально стояла не написать код, а показать некоторые возможности vlide, так и сделаем (и на этом закруглимся ):
===
P.S. Ох и огребу же я сейчас...
Вложения
Тип файла: rar vlide_works_2008-06-23[16.44.18].part1.rar (1.62 Мб, 348 просмотров)
Тип файла: rar vlide_works_2008-06-23[16.44.18].part2.rar (1.15 Мб, 277 просмотров)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.06.2008, 17:23
#109
Рyslan


 
Регистрация: 25.07.2007
Сообщений: 2,518


Спасибо!
Рyslan вне форума  
 
Непрочитано 23.06.2008, 17:26
#110
Рyslan


 
Регистрация: 25.07.2007
Сообщений: 2,518


to ShaggyDoC
А сколько примерно будет стоить полная версия RuCAD? Да,я еще слышал что можно вам помогать в отрисовке чего-либо и за это получить RuCAD, так ли это?
Рyslan вне форума  
 
Непрочитано 23.06.2008, 20:34
#111
VVA

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


Рyslan, Не знаю, насколько этот релиз уже актруален, но можно кое-что посмотреть здесь:
http://dwg.ru/search.php?zone=1&mod=2&sName=ruCAD
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 24.06.2008 в 00:46.
VVA вне форума  
 
Непрочитано 23.06.2008, 23:02
#112
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Цитата:
Сообщение от Рyslan Посмотреть сообщение
to ShaggyDoC
А сколько примерно будет стоить полная версия RuCAD?
Откуда я знаю? Продавать-то уже не я буду. Во всяком случае всегда будет и бесплатная.

Что касается программирования.

Я ведь картинки показал не для рекламы. Интерфейс можно сделать всякий. Можно, например, в DCL. Разочка и хватит, вволю помучиться и для изучения.

А можно и вообще без интерфейса - пункты меню, а к каждому пункту - макрос, вызывающий функцию рисования, задвижки например. Наподобие той, что я привел.

А можно с опциями командной строки - в опции значение Ду, а все остальное уже зашито в программу. И запоминать и восстанавливать опции. Ведь если 100 раз за день надо задвижку нарисовать, так замучаетесь 100 раз отвечать на 6 вопросов, причем 90 раз одинаково.

Учиться надо от простого к сложному. Интересуют задвижки, например, так начните с простого обозначения "бабочкой". Там всего 4 точки, плюс "перекладина". Да и ее можно не рисовать, а сделать вентиль.

Вот и делайте сначала простую функцию рисования. Аргументами в нее можно передать поперечный размер, длину, точку начала и направление конца. Изменяя эти аргументы уже сможете рисовать арматуру и реальных размеров, и в виде условных знаков.

Затем осваиваете ввод точек. Не абы как, а безошибочно. Здесь много нюансов. Например, арматура обычно продолжает какой-то предыдущий элемент (патрубок с фланцем, например). Или врезается в трубу. Значит и точки надо хитро запрашивать, например с опцией наподобие Продолжить. То есть автоматически присоединяя точку начала к концу ранее нарисованного элемента. И продолжая изображение в том же направлении. Это второй этап изучения.

Еще дальше можно по желанию усложнять само изображение. Уже не просто "бантик", а "черт-те что и сбоку бантик". И делать это будет уже проще, если блок ввода точек отработан.

И только потом и к 3D переходить. Там одна геометрия на порядок усложняется. Нельзя ведь заставлять пользователя для каждой арматурины ПСК переносить в её начало. Но и в 3D сначала можно плоские изображения отработать, а уж потом перейти к телам.

И, разумеется. первым делом освоить Vlide. А в чем тогда программы-то писать, в Блокноте, что-ли?
ShaggyDoc вне форума  
 
Непрочитано 23.06.2008, 23:08
#113
Кулик Алексей aka kpblc
Moderator

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


Говорят, иногда пишут В Notepad++.
Сам иногда таким грешу
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 24.06.2008, 01:54
#114
KAI

геологоразведка, строительство
 
Регистрация: 14.10.2003
Магадан
Сообщений: 311


Цитата:
Сообщение от Alaspher Посмотреть сообщение
Правильно восстанавливать состояние среды на выходе таким, какое оно было до работы программы.
С восстановлением системных переменных по окончанию работы программы я совершенно согласен, это обязательно.
Но! Что касается OSNAP предпочитаю оставлять те значения, которые пользователь назначил в программе в функциях get* и пр., поскольку он подсознательно запомнил это значение, и будет уверен, что и в дальнейшем это будет текущеее значение.
То есть начальное значение OSNAP, которое будет сохраняться при выходе из программы, будет равно текущему значению (после функции get*).
__________________
Лень - великий двигатель прогресса!
KAI вне форума  
 
Непрочитано 24.06.2008, 08:20
#115
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Цитата:
Сообщение от KAI Посмотреть сообщение
Что касается OSNAP предпочитаю оставлять те значения, которые пользователь назначил в программе в функциях get* и пр...
То, что я говорил о восстановлении параметров среды, относится, в основном, к неинтерактивной части (наверное стоило сказать это более явно). На стадии ввода я вообще избегаю вмешательства в среду - никогда не угадаешь, каковы привычки пользователя. Так что - согласен.
Alaspher вне форума  
 
Непрочитано 24.06.2008, 08:36
#116
Рyslan


 
Регистрация: 25.07.2007
Сообщений: 2,518


а я в блокноте и писал у Vlide меню вся английская, а я не такой большой знаток инглиша, ну теперь будем меню переводить тогда
Рyslan вне форума  
 
Непрочитано 24.06.2008, 08:38
#117
Рyslan


 
Регистрация: 25.07.2007
Сообщений: 2,518


to VVA
А, это я уже скачал себе, там не все работает, но много чего есть.
Рyslan вне форума  
 
Непрочитано 24.06.2008, 09:58
#118
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Зачем в блокноте то? В крайнем случае в Notepad++ - там и подсветка есть, и пары можно отслеживать. В сторонних редакторах работали, пока не появился штатный редактор. Еще в R14 его не было.
ShaggyDoc вне форума  
 
Непрочитано 30.06.2008, 10:51
#119
Рyslan


 
Регистрация: 25.07.2007
Сообщений: 2,518


А по языку DCL есть литература какая-нибудь?
Рyslan вне форума  
 
Непрочитано 30.06.2008, 13:22
#120
Donhuan

Проектировщик СС
 
Регистрация: 24.06.2008
Минск
Сообщений: 134
<phrase 1=


Цитата:
Сообщение от Рyslan Посмотреть сообщение
А по языку DCL есть литература какая-нибудь?
http://levins.land.ru/index.html
Donhuan вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Подскажите, существуют ли практические руководства по Lisp?