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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Книга по лиспу посоветуйте

Книга по лиспу посоветуйте

Ответ
Поиск в этой теме
Непрочитано 05.02.2008, 21:11 #1
Книга по лиспу посоветуйте
WWW
 
Москва
Регистрация: 16.03.2007
Сообщений: 17

Посоветуйте книгу по лиспу, или как быстрее научиться писать не особо сложные программки.
Есть толстая книга Полющика, она была единственная в книжном.
Еще вопрос, в лиспе есть списки ‘(1 2 3 4), но нечего не нашел про матрицы, как задавать матрицы? Например на чертеже есть N отрезков, как записать координаты вершин этих отрезков в матрицу. С размерностью N на 3, в строку записывалось 3 координаты точки XYZ, новая точка начиналась с новой строки.
Просмотров: 2919
 
Непрочитано 05.02.2008, 22:09
#2
Pilot

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


В лиспе нет типа данных "матрица". Косвенно ее можно организовать как список списков:
'('(1 2 3)
'(4 5 6)
'(7 8 9))
Pilot вне форума  
 
Автор темы   Непрочитано 05.02.2008, 23:11
#3
WWW


 
Регистрация: 16.03.2007
Москва
Сообщений: 17


Значит нельзя записать координаты как я хотел?
Допустим к примеру в бейсике, задаешь цикл в цикле. 1 отвечает за строки другой за столбцы матрицы. И внутри тел этих циклов делаешь присвоение каждой ячейке.
Как в лиспе можно сохранить координаты N количества точек, не писать же все в 1 список путаница будет. Или можно сделать чтоб вводил новые переменные?
Например: задал цикл от i=1 до N
(setq ai ‘(координаты XYZ)
Конец цикла.
И чтоб потом !а1= ‘(координаты 1-й точки), !а2= ‘(координаты 2-й точки)и т.д.
WWW вне форума  
 
Непрочитано 05.02.2008, 23:37
#4
Кулик Алексей aka kpblc
Moderator

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


WWW, Полещука знаю, Полющука - нет. Это раз.
Второе. Размерность списков ограничивается только фантазией программиста. Pilot прав по сути, но не по форме записи
Теперь по твоему вопросу, код некоторым количеством комментариев (у кого есть желание и возможность - добавьте и поправьте меня).
Код:
[Выделить все]
;; Устанавливаем определение функции
(defun get-line-coords (/
                        ;; Вводим локальные переменные
                        selset ;; Набор примитивов
                        res     ;; Список результата
                        ent     ;; Временная перемнная
                        )
  ;; Если пользователь не отказывается от выбора отрезков,
  ;; и при этом в выборе есть хотя бы один отрезок
  (if (setq selset (ssget '((0 . "LINE"))))
    (progn
      ;; то
      (foreach item ;; Для каждого элемента
 (vl-remove-if 'listp (mapcar 'cadr (ssnamex selset))) ;; Преобразовываем набор в список объектов
        (setq ent (entget item) ;; Чтобы не вычислять два раза, забьем все в переменную
              res
                  (append ;; Добавить
                          res ;; К имеющемуся результату
                          (list ;; Список, содержащий в себе
                                (list ;; Список
                                      (cdr (assoc 10 ent)) ;; Координаты начала
                                      (cdr (assoc 11 ent)) ;; Координаты конца
                                      ) ;_ end of list
                                ) ;_ end of list
                          ) ;_ end of append
              ) ;_ end of setq
        ) ;_ end of foreach
      ) ;_ end of progn
    ) ;_ end of if
  res ;; Возвращаем полученный список
  ) ;_ end of defun

;|
;; Пример использования:
(get-line-coords)
; вернет нечто вида
'(((537.944 201.544 0.0) (659.347 428.891 0.0))	; координаты начала и конца первого отрезка, попавшего в набор
  ((885.409 222.465 0.0) (635.625 297.783 0.0)) ; то же, второго
  ((1467.31 466.549 0.0) (1147.75 232.229 0.0))); то же, третьего
  ;; Ну и так далее
|;
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.02.2008, 23:50
#5
WWW


 
Регистрация: 16.03.2007
Москва
Сообщений: 17


Спасибо! Буду разбираться в коде не думал что такой большой получится.
За Полющика виноват исправлюсь
Литературу не посоветуете какую лучше читать? Или штудировать Полещука?
WWW вне форума  
 
Непрочитано 06.02.2008, 00:02
#6
Кулик Алексей aka kpblc
Moderator

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


Если бы я знал... Могу только рассказать в какой последовательности сам учился программированию. Если неинтересно - дальше мой пост можно не читать
Сначала был В.Свет "AutoCAD - язык макрокоманд и создание кнопок". До сих пор настольная книга.
Следом С.А.Зуев, Н.Н.Полещук при участии П.В.Лоскутова "САПР на базе AutoCAD - как это делается".
Ну а дальше как повезет "Visual LISP для AutoCAD 2002" (Н.Н.Полещук); "Разработка и адаптация AutoCAD" (Н.Н.Полещук); "VisualLISP в среде AutoCAD" (Н.Н.Полещук, П.В.Лоскутов, при участии Э.В.Смолянки (надеюсь, фамилию не переврал)). В названиями может выйти косяк - литература вся на работе.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.02.2008, 09:32
#7
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992
<phrase 1= Отправить сообщение для VVA с помощью Skype™


От себя добавлю, что хорошим двигателем вперед является разбор кодов, опубликованных на форумах. Причем разбор с вопросом к каждой строчке: "Почему так?". Ссылки на хорошие сайты с лиспом
http://dwg.ru/f/showthread.php?t=569
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 06.02.2008 в 12:22.
VVA вне форума  
 
Автор темы   Непрочитано 06.02.2008, 13:50
#8
WWW


 
Регистрация: 16.03.2007
Москва
Сообщений: 17


Спасибо! Скачал у крыс-а хелп по лиспу, почитаю его, потом если смогу найти Свет-а. Его что-то негде нету .
WWW вне форума  
 
Непрочитано 06.02.2008, 13:55
#9
Кулик Алексей aka kpblc
Moderator

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


Его книги в электронном виде вроде бы не существует. Но купить можно (по крайней мере в ozon'e точно есть). Так же как и "САПР на базе..."
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.02.2008, 14:24
#10
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от WWW Посмотреть сообщение
Спасибо! Скачал у крыс-а хелп по лиспу, почитаю его, потом если смогу найти Свет-а. Его что-то негде нету .
Поспрашивай здесь, может осталось.
Книга Владимира Света
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 06.02.2008 в 15:14.
VVA вне форума  
 
Автор темы   Непрочитано 09.02.2008, 00:23
#11
WWW


 
Регистрация: 16.03.2007
Москва
Сообщений: 17


Спасибо, за ссылку не думал что тут В. Свет появляется . Про книгу спросил пока жду ответа.
Когда время есть ковыряюсь в лиспе, начал вникать в пример Кулик Алексей aka kpblc. Вопрос по 1 строчке:

(vl-remove-if 'listp (mapcar 'cadr (ssnamex selset))) ;; Преобразовываем набор в список объектов

вписал ее в акаде как:

(vl-remove-if 'listp (mepcar 'cadr (ssnamex (ssget)))) заменил переменную на функцию выбора объекта в ручную. Указал на линию и мне это строка возвратила:

Select objects: 1 found

Select objects:
; error: no function definition: MEPCAR

Это я что то не доучил? Почему error?

Такой вариант кода нормальный?:

(cdr (assoc 10 (entget (car (entsel))))) - возвращает координаты начальной точки и потом присваиваем временной переменной, и добавляем в основную матрицу
WWW вне форума  
 
Непрочитано 09.02.2008, 00:33
#12
Кулик Алексей aka kpblc
Moderator

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


Сравни строки:
Код:
[Выделить все]
(vl-remove-if 'listp (mApcar 'cadr (ssnamex selset)))
и
Код:
[Выделить все]
(vl-remove-if 'listp (mEpcar 'cadr (ssnamex (ssget))))
Разница однако...
Дальше вопроса не понял.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 09.02.2008, 00:48
#13
WWW


 
Регистрация: 16.03.2007
Москва
Сообщений: 17


Теперь понял
Про 2-й вопрос: Думал можно заменить ту строчку на мою, уже разобрался понял что нет. Т.к. selset присваивается набор объектов, а не список характеристик объекта.
WWW вне форума  
 
Непрочитано 11.02.2008, 09:19
#14
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992
<phrase 1= Отправить сообщение для VVA с помощью Skype™


> WWW Вопросы по лиспу лучше бы все-таки задавать здесь
Я начинаю заниматься программированием LISP (help) Там много уже написано, может часть вопросов и снимешь
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 11.02.2008, 14:56
#15
WWW


 
Регистрация: 16.03.2007
Москва
Сообщений: 17


Хорошо, тогда эту тему можно закрывать.
Всем спасибо за помощь
WWW вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Книга по лиспу посоветуйте

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Книга Владимира Света Vova Разное 87 23.06.2009 11:51
Посоветуйте программу для ландшафтного проектирования... Chief Justice Разное 8 15.02.2008 22:29
Книга по Lisp-y Jоhnny Разное 12 27.12.2007 15:28
научится ЛИСПу isa LISP 7 02.06.2006 10:00