PDA

View Full Version : А кто-нибудь программирует в Lisp?



Кот Пушок
10-22-2012, 04:45 PM
Для AutoCAD?

A?

Bob Stein
10-22-2012, 05:45 PM
Объясни, плиз, - что, почему, зачем вопрос

Кот Пушок
10-22-2012, 06:24 PM
Объясни, плиз, - что, почему, зачем вопрос

Хочу узнать, есть ли кто на форуме, кто программирует в Lisp.

Ты программируешь в Lisp?

Кот Пушок
10-23-2012, 02:46 PM
Понятно, нихто...

А такой вапрос.

если написанно в Lisp - кто-нить сможет, скажем, ошибку найтить в написанном, или подсказать, каг правельно напесать?

А?

MariLi
10-23-2012, 02:53 PM
Понятно, нихто...

А такой вапрос.

если написанно в Lisp - кто-нить сможет, скажем, ошибку найтить в написанном, или подсказать, каг правельно напесать?

А?

через "и":122:

Кот Пушок
10-23-2012, 04:18 PM
через "и":122:

xe-xe...

Вот, описал деталь:

(defun c:detail ( / p1 d1 d2 d3 s h )

(setq p1 (Getpoint "Select point: ")
d1 10.0
D2 5.0
d3 15.0
s 6.0
h 12.0
)
(Draw p1 d1 d2 d3 s h)
)
(prompt "Try_param, ")
(defun Draw (p1 d1 d2 d3 s h / p2 p3 p4 p5 p6 p7 x y det)
(setq
x (nth 0 p1)
y (nth 1 p1)
p2 (list x (+ y (/ d2 2.0)))
p3 (list x (+ y (/ d1 2.0)))
p4 (list (+ x s) (+ y (/ d1 2.0)))
p5 (list (+ x s) (+ y (/ d3 2.0)))
p6 (list (+ x h) (+ y (/ d3 2.0)))
p7 (list (+ x h) (+ y (/ d2 2.0)))
)
(COMMAND "_layer" "_n" "MH-Detail" "_c" "_yellow" "MH-Detail" "")
(command "_.osnap" "_none")
(command "_layer" "_s" "MH-Detail" "")
(command "_.pline" p2 "w" "0" "" p3 p4 p5 p6 p7 "c")
(setq det (entlast))
(command "_.mirror" det "" p1 "@1,0" "N")
(command "_.pline" p2 (list x (- y (/ d2 2.0))) "")
(command "_.pline" p7 (list (+ x h) (- y (/ d2 2.0))) "")
(command "_layer" "_n" "MH-Center" "_c" "115" "MH-Center" "_l" "Center" "MH-Center" "")
(command "_.layer" "_s" "MH-Center" "")
(command "_.line" (list (- x 10) y) (list (+ x h 10) y)"")
(command "_layer" "_n" "MH-Hatch" "_c" "252" "MH-Hatch" "_l" "continuous" "MH-Hatch" "")
(command "_layer" "_s" "MH-Hatch" "")
(command "_.bhatch" "p" "ansi31"
(/ (+ d3 h) 70.0)
"0"
(list (+ x (/ h 10.0)) (+ y (/ d2 2.0) (/ (- d1 d2) 4.0)))
(list (+ x (/ h 10.0)) (- y (/ d2 2.0) (/ (- d1 d2) 4.0)))
""
)
)
(prompt "Draw ")


Строка, выделенная красным, отключает привязки.
Для того, чтобы возвратить привязки, существует :

(command "_.osnap" "int,cen,end,ins" "")

Как её не втыкаю в текст описания детали - не работает, зараза, хучь убейся.

Baba_Yaga
10-23-2012, 04:30 PM
xe-xe...

Вот, описал деталь:

(defun c:detail ( / p1 d1 d2 d3 s h )

(setq p1 (Getpoint "Select point: ")
d1 10.0
D2 5.0
d3 15.0
s 6.0
h 12.0
)
(Draw p1 d1 d2 d3 s h)
)
(prompt "Try_param, ")
(defun Draw (p1 d1 d2 d3 s h / p2 p3 p4 p5 p6 p7 x y det)
(setq
x (nth 0 p1)
y (nth 1 p1)
p2 (list x (+ y (/ d2 2.0)))
p3 (list x (+ y (/ d1 2.0)))
p4 (list (+ x s) (+ y (/ d1 2.0)))
p5 (list (+ x s) (+ y (/ d3 2.0)))
p6 (list (+ x h) (+ y (/ d3 2.0)))
p7 (list (+ x h) (+ y (/ d2 2.0)))
)
(COMMAND "_layer" "_n" "MH-Detail" "_c" "_yellow" "MH-Detail" "")
(command "_.osnap" "_none")
(command "_layer" "_s" "MH-Detail" "")
(command "_.pline" p2 "w" "0" "" p3 p4 p5 p6 p7 "c")
(setq det (entlast))
(command "_.mirror" det "" p1 "@1,0" "N")
(command "_.pline" p2 (list x (- y (/ d2 2.0))) "")
(command "_.pline" p7 (list (+ x h) (- y (/ d2 2.0))) "")
(command "_layer" "_n" "MH-Center" "_c" "115" "MH-Center" "_l" "Center" "MH-Center" "")
(command "_.layer" "_s" "MH-Center" "")
(command "_.line" (list (- x 10) y) (list (+ x h 10) y)"")
(command "_layer" "_n" "MH-Hatch" "_c" "252" "MH-Hatch" "_l" "continuous" "MH-Hatch" "")
(command "_layer" "_s" "MH-Hatch" "")
(command "_.bhatch" "p" "ansi31"
(/ (+ d3 h) 70.0)
"0"
(list (+ x (/ h 10.0)) (+ y (/ d2 2.0) (/ (- d1 d2) 4.0)))
(list (+ x (/ h 10.0)) (- y (/ d2 2.0) (/ (- d1 d2) 4.0)))
""
)
)
(prompt "Draw ")


Строка, выделенная красным, отключает привязки.
Для того, чтобы возвратить привязки, существует :

(command "_.osnap" "int,cen,end,ins" "")

Как её не втыкаю в текст описания детали - не работает, зараза, хучь убейся.

В этой строке с кавычками как то непонятно. Может в этом дело...

MariLi
10-23-2012, 04:38 PM
В этой строке с кавычками как то непонятно. Может в этом дело...
точно не нужны последние кавычки!:122:
http://aco.ifmo.ru/~nadinet/html/lectures/lect_7.html

Кот Пушок
10-23-2012, 04:39 PM
В этой строке с кавычками как то непонятно. Может в этом дело...

Ща попробую.
Но в этом вот случае - все работает...

(defun c:head-frame-el ()
(COMMAND "_layer" "_n" "MH-Head-frame" "_c" "_yellow" "MH-Head-frame" "")
(command "_osnap" "_none")
(command "_layer" "_s" "MH-Head-frame" "")
(COMMAND "LINE" "0,21" "-22.2,21" "")
(COMMAND "LINE" "0,-21" "-12.1,-21" "")
(COMMAND "LINE" "0,21" "0,-21" "")
(COMMAND "LINE" "-0.575,21" "-0.575,-21" "")
(COMMAND "LINE" "-11.525,21" "-11.525,-21" "")
(COMMAND "LINE" "-12.1,21" "-12.1,-47" "")
(COMMAND "LINE" "-12.715,21" "-12.715,-47" "")
(COMMAND "LINE" "-21.585,21" "-21.585,-47" "")
(COMMAND "LINE" "-22.2,21" "-22.2,-47" "")
(COMMAND "LINE" "-22.2,2.09177849" "-71.29177849,-47" "")
(COMMAND "LINE" "-22.2,1.22203715" "-70.42203715,-47" "")
(COMMAND "LINE" "-22.2,-11.32203715" "-57.87796285,-47" "")
(COMMAND "LINE" "-22.2,-12.19177849" "-57.00822151,-47" "")
(COMMAND "RECTANG" "-11.525,9.43750584" "-0.575,9.81250584" "")
(COMMAND "RECTANG" "-21.585,9.43750584" "-12.715,9.81250584" "")
(COMMAND "RECTANG" "-11.525,-9.81250584" "-0.575,-9.43750584" "")
(COMMAND "RECTANG" "-21.585,-9.81250584" "-12.715,-9.43750584" "")
(COMMAND "RECTANG" "-76.525,-48" "-55.525,-47" "")
(COMMAND "RECTANG" "-23.15,-48" "-11.15,-47" "")
(command "_layer" "_n" "MH-Center" "_c" "115" "MH-Center" "_l" "Center" "MH-Center" "")
(command "_layer" "_s" "MH-Center" "")
(command "LINE" "11.375,23.64910240" "11.375,-23.64910240" "")
(COMMAND "LINE" "35.02410240,0" "-34.15118442,0" "")
(COMMAND "LINE" "-17.15000000,24" "-17.15,-51" "")
(COMMAND "LINE" "-15.02867966,2.12132034" "-68.15,-51" "")
(COMMAND "LINE" "-14.52,-46" "-14.52,-49" "")
(COMMAND "LINE" "-19.775,-46" "-19.775,-49" "")
(COMMAND "LINE" "-62.025,-46" "-62.025,-49" "")
(COMMAND "LINE" "-74.525,-46" "-74.525,-49" "")
(command "_layer" "_n" "MH-Frame-hidden" "_c" "55" "MH-Frame-hidden" "_l" "HIDDEN" "MH-Frame-hidden" "")
(command "_layer" "_s" "MH-Frame-hidden" "")
(COMMAND "CIRCLE" "-17.15,0" "3.0325" "")
(COMMAND "CIRCLE" "-17.15,0" "3.3125" "")
(command "_layer" "_s" "0" "")
(command "_osnap" "int,cen,end,ins" "")
)

Кот Пушок
10-23-2012, 04:42 PM
точно не нужны последние кавычки!:122:
http://aco.ifmo.ru/~nadinet/html/lectures/lect_7.html

Попробовал - нихрена не включает все равно.

Последние "") означают нажатие клавиши Enter.

Кот Пушок
10-23-2012, 04:43 PM
точно не нужны последние кавычки!:122:
http://aco.ifmo.ru/~nadinet/html/lectures/lect_7.html

Я, кстати, с этим учебником и работаю :)))

Кот Пушок
10-23-2012, 04:48 PM
Чудеса в решете!
воткнул строку включения привязок перед

(command "_bhatch" "p" "ansi31"

-
работает!

Убицца ап стену!
Пачему не работает в конце программки?

MariLi
10-23-2012, 04:57 PM
Чудеса в решете!
воткнул строку включения привязок перед

(command "_bhatch" "p" "ansi31"

-
работает!

Убицца ап стену!
Пачему не работает в конце программки?

ура!:115:

смешно
10-25-2012, 08:32 AM
блин, какой древний язык. :)

crazy-mike
10-25-2012, 08:43 AM
блин, какой древний язык. :)
Язык? - из одних скобок! :169:
Мне SNOBOL 4 больше нравился когда-то.

Кот Пушок
10-25-2012, 10:11 AM
блин, какой древний язык. :)



Язык? - из одних скобок! :169:
Мне SNOBOL 4 больше нравился когда-то.

Тем не менее всё параметрическое черчение до сих пор описывается им.

MariLi
10-25-2012, 10:34 AM
ох, а я и не скажу что на ассемблере когда-то программировала...:239:

MariLi
10-25-2012, 10:38 AM
кстати, вчера была годовщина смерти John McCarthy - прародителя AI и создателя Лиспа.

реднек
10-25-2012, 10:50 AM
Для AutoCAD?

A?

Зачем мучаться скобочками, для AutoCAD можно C#/.Net пользоваться.

реднек
10-25-2012, 10:51 AM
Понятно, нихто...

А такой вапрос.

если написанно в Lisp - кто-нить сможет, скажем, ошибку найтить в написанном, или подсказать, каг правельно напесать?

А?

Я выставляю дебаг мод в Emacs он высвечивает стэк.

crazy-mike
10-25-2012, 12:49 PM
кстати, вчера была годовщина смерти John McCarthy - прародителя AI и создателя Лиспа.
а ведь ещё и Forth был - там вообще всё почти без скобок...:301:

Кот Пушок
10-25-2012, 03:32 PM
Зачем мучаться скобочками, для AutoCAD можно C#/.Net пользоваться.

Не знаю, что это такое даже.
Никогда не видел ничего написанного для автокада на чем-то другом, как ни на лиспе...
Примеры у тебя есть?

Кот Пушок
10-25-2012, 03:34 PM
Я выставляю дебаг мод в Emacs он высвечивает стэк.

И здесь ничего не понял.
Я, вообще-то, целых три недели, как этим занялся.

crazy-mike
10-25-2012, 04:22 PM
И здесь ничего не понял.
Я, вообще-то, целых три недели, как этим занялся.
там понимать особенно нечего - функциональный язык. Вызовы функций записываются в т.н. "кембриджской записи". В AutoCAD всё чуточку упростили даже по сравнению с "настоящим LISP-ом" - до сих пор не понимаю кайфа в использовании (( COND A EQ B ) ( SET A 2 ) ( SET B A )) .
:101: и даже когда точно представляешь семантику - ну очень трудно писать.
Мы LISP учили на третьем курсе - там отдельный семестр по "языкам программирования вообще" был. Но по-настоящему я на SNOBOL 4 кучу всякой мути потом делал.
P.S. А в LISP для AutoCAD есть LAMBDA ?

MariLi
10-25-2012, 04:50 PM
ну што за языки на свет божий повытаскивали!:120:
Я думала что много их знаю, а теперь у меня комплекс неполноценности разовьется:119:

crazy-mike
10-25-2012, 04:51 PM
ну што за языки на свет божий повытаскивали!:120:
Я думала что много их знаю, а теперь у меня комплекс неполноценности разовьется:119:
MUMPS ( на этом даже когда-то экранный редактор нарисовал )
FOCAL
:101:

MariLi
10-25-2012, 04:58 PM
MUMPS ( на этом даже когда-то экранный редактор нарисовал )
FOCAL
:101:

а-а-а-а-а... какая я ограниченная с моими фортранами, анголами, коболами, пл1, с с разными плюсами, борландами дельфи и дотами нетами...

Майки, не поверишь, но я когда-то на фортране пыталась что-то вроде КАДа изобрести :) Я и ещё человек 100 в одном научно-исследовательском институте:111:

crazy-mike
10-25-2012, 05:01 PM
а-а-а-а-а... какая я ограниченная с моими фортранами, анголами, коболами, пл1, с с разными плюсами, борландами дельфи и дотами нетами...

Майки, не поверишь, но я когда-то на фортране пыталась что-то вроде КАДа изобрести :) Я и ещё человек 100 в одном научно-исследовательском институте:111:
У нас лабораторная работа была - там надо было , чтобы программа на Fortran-IV чуть-чуть в шахматы играла. И всё это с перфокарт нужно было вводить и отлаживать...

Кот Пушок
10-25-2012, 05:11 PM
там понимать особенно нечего - функциональный язык. Вызовы функций записываются в т.н. "кембриджской записи". В AutoCAD всё чуточку упростили даже по сравнению с "настоящим LISP-ом" - до сих пор не понимаю кайфа в использовании (( COND A EQ B ) ( SET A 2 ) ( SET B A )) .
:101: и даже когда точно представляешь семантику - ну очень трудно писать.
Мы LISP учили на третьем курсе - там отдельный семестр по "языкам программирования вообще" был. Но по-настоящему я на SNOBOL 4 кучу всякой мути потом делал.
P.S. А в LISP для AutoCAD есть LAMBDA ?

Lambda есть, но я до неё еще не дошел.

Ну, например, вот такая вот писанина мною уже читается легко и пишется не трудно:

(defun c:slot (/ p d L R)
(setq p (Getpoint "Select point: "))
(setq d (Getreal "Identify Slot Diameter: "))
(setq L (Getreal "Identify Slot Lengths: "))
(setq R (Getreal "Specify Rotation Angle: "))
(Draw p d L R)
)
(prompt "slot, ")
(defun Draw (p d L R / p1 p2 p3 p4 p5 p6 x y det)
(setq
x (nth 0 p)
y (nth 1 p)
p1 (list (- x (/ (- L d) 2.0)) (+ y (/ d 2.0)))
p2 (list (+ x (/ (- L d) 2.0)) (+ y (/ d 2.0)))
p3 (list (+ x (/ (- L d) 2.0)) (- y (/ d 2.0)))
p4 (list (- x (/ (- L d) 2.0)) (- y (/ d 2.0)))
p5 (list (- x (/ (- L d) 2.0)) y)
p6 (list (+ x (/ (- L d) 2.0)) y)
)
(command "_osnap" "_none")
(command "_pline" p1 p2 "_arc" "_ce" p6 "_a"
-180 "_l" p3 p4 "_arc" "_ce" p5 "_a"
-180 "_cl" ""
)
(command "_rotate" "_last" "" p1 R "")
(command "_osnap" "int,cen,end,ins")
(prompt "Draw ")
)

рисует slot (не знаю, как это по-русски) любой длины, любого диаметра, под любым углом.

Кот Пушок
10-25-2012, 05:12 PM
а-а-а-а-а... какая я ограниченная с моими фортранами, анголами, коболами, пл1, с с разными плюсами, борландами дельфи и дотами нетами...

Майки, не поверишь, но я когда-то на фортране пыталась что-то вроде КАДа изобрести :) Я и ещё человек 100 в одном научно-исследовательском институте:111:

А я к етому, пожалуй, уже никогда не дойду... :117:

crazy-mike
10-25-2012, 05:15 PM
Lambda есть, но я до неё еще не дошел.

Ну, например, вот такая вот писанина мною уже читается легко и пишется не трудно:

(defun c:slot (/ p d L R)
(setq p (Getpoint "Select point: "))
(setq d (Getreal "Identify Slot Diameter: "))
(setq L (Getreal "Identify Slot Lengths: "))
(setq R (Getreal "Specify Rotation Angle: "))
(Draw p d L R)
)
(prompt "slot, ")
(defun Draw (p d L R / p1 p2 p3 p4 p5 p6 x y det)
(setq
x (nth 0 p)
y (nth 1 p)
p1 (list (- x (/ (- L d) 2.0)) (+ y (/ d 2.0)))
p2 (list (+ x (/ (- L d) 2.0)) (+ y (/ d 2.0)))
p3 (list (+ x (/ (- L d) 2.0)) (- y (/ d 2.0)))
p4 (list (- x (/ (- L d) 2.0)) (- y (/ d 2.0)))
p5 (list (- x (/ (- L d) 2.0)) y)
p6 (list (+ x (/ (- L d) 2.0)) y)
)
(command "_osnap" "_none")
(command "_pline" p1 p2 "_arc" "_ce" p6 "_a"
-180 "_l" p3 p4 "_arc" "_ce" p5 "_a"
-180 "_cl" ""
)
(command "_rotate" "_last" "" p1 R "")
(command "_osnap" "int,cen,end,ins")
(prompt "Draw ")
)

рисует slot (не знаю, как это по-русски) любой длины, любого диаметра, под любым углом.
Ага. Но в "настоящем LISP-е" программа могла самое себя дописывать во время выполнения!

Кот Пушок
10-25-2012, 05:19 PM
Ага. Но в "настоящем LISP-е" программа могла самое себя дописывать во время выполнения!

Я даже представить себе не могу, как это так.

Где-то мне попадалась лисп-программка, которая писала сама собой, пока чертишь чего-нибудь.
Но автор её оговорился, что надо её еще долаживать.
А для того, чтобы создать какой-нибудь узел, который меняется в зависимости от вводимых характеристик - как тебе программа сама напишет?

crazy-mike
10-25-2012, 05:27 PM
Я даже представить себе не могу, как это так.

Где-то мне попадалась лисп-программка, которая писала сама собой, пока чертишь чего-нибудь.
Но автор её оговорился, что надо её еще долаживать.
А для того, чтобы создать какой-нибудь узел, который меняется в зависимости от вводимых характеристик - как тебе программа сама напишет?
Она должна была строить список , элементы которого можно было бы обходить и выполнять в качестве "инструкций". Там дело упрощалось из-за того что любая из "инструкций" являлась вызовом функции по имени. Но эта "скобочная запись" просто "доставала" ( очень трудно читать ).
Там ещё были функции CAR и CDR для работы со списками ( какая-то из них добавляла "атом" в список ).

Кот Пушок
10-25-2012, 05:34 PM
Она должна была строить список , элементы которого можно было бы обходить и выполнять в качестве "инструкций". Там дело упрощалось из-за того что любая из "инструкций" являлась вызовом функции по имени. Но эта "скобочная запись" просто "доставала" ( очень трудно читать ).
Там ещё были функции CAR и CDR для работы со списками ( какая-то из них добавляла "атом" в список ).

Да, есть и такое, тоже буду еще грызть дальше.

А мне скобки нравяцца. )))
Вроде как кто-то пишет, и улыбку имитирует )))

Да я, собственно, по-моему никогда и не видел техта программы.
Мне сравнивать просто не с чем - где удобнее, где нет.

crazy-mike
10-25-2012, 05:40 PM
Да, есть и такое, тоже буду еще грызть дальше.

А мне скобки нравяцца. )))
Вроде как кто-то пишет, и улыбку имитирует )))

Да я, собственно, по-моему никогда и не видел техта программы.
Мне сравнивать просто не с чем - где удобнее, где нет.
PROLOG в отношении скобок намного элегантнее. :101:

MariLi
10-25-2012, 05:48 PM
PROLOG в отношении скобок намного элегантнее. :101:

А ЭПИЛОГ точки хорошо расставляет:111:

crazy-mike
10-25-2012, 05:51 PM
А ЭПИЛОГ точки хорошо расставляет:111:
Там DATALOG вот был - когда пробовали соединить SQL и PROLOG.

Quanty
10-25-2012, 08:23 PM
у меня вопрос интереснее: кто программирует в Haskel???

реднек
10-26-2012, 12:55 AM
Не знаю, что это такое даже.
Никогда не видел ничего написанного для автокада на чем-то другом, как ни на лиспе...
Примеры у тебя есть?

А, я подумал плагин надо написать. А просто скирптец можно конечно и на шарпе, только это будет заморочней чем на лиспе. Не знаю как лисп отлаживать в Автокаде. Должна быть тулза.

MariLi
10-26-2012, 02:17 AM
А, я подумал плагин надо написать. А просто скирптец можно конечно и на шарпе, только это будет заморочней чем на лиспе. Не знаю как лисп отлаживать в Автокаде. Должна быть тулза.

How do I debug AutoLISP programs?
(http://www.faqs.org/faqs/CAD/autolisp-faq/part1/section-4.html//) :)

смешно
10-26-2012, 09:41 AM
У нас лабораторная работа была - там надо было , чтобы программа на Fortran-IV чуть-чуть в шахматы играла. И всё это с перфокарт нужно было вводить и отлаживать...


ЛОЛ. ты не один такой. а если в перфокарте не так дырочка пробита...то ридер и не считает....

Кот Пушок
10-26-2012, 10:36 AM
How do I debug AutoLISP programs?
(http://www.faqs.org/faqs/CAD/autolisp-faq/part1/section-4.html//) :)

От, спасиба, Мари-Ли!

Ну, вот шоб я делал, если бы не ты?

crazy-mike
10-26-2012, 12:05 PM
ЛОЛ. ты не один такой. а если в перфокарте не так дырочка пробита...то ридер и не считает....
Я когда-то вообще программу на PL/1 всю полностью на перфокартах набил на русском регистре. Зато распечатка диагностических сообщений компилятора тогда была около трёх руллонов бумаги. :130:

MariLi
10-26-2012, 12:12 PM
ЛОЛ. ты не один такой. а если в перфокарте не так дырочка пробита...то ридер и не считает....

ага, и если пара килограмм перфокарт неожиданно выскальзывает из рук!!!:109:

crazy-mike
10-26-2012, 01:43 PM
ага, и если пара килограмм перфокарт неожиданно выскальзывает из рук!!!:109:
там ведь кроме 80-колоночных ешё и 45-колоночные перфокарты были! :303: