Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу) - Страница 55
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу)

Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу)

Ответ
Поиск в этой теме
Непрочитано 20.07.2008, 20:12 1 |
Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу)
Red Nova
 
ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Торонто
Регистрация: 23.10.2007
Сообщений: 1,990

Со школы не ладится у меня с программированием. Все предметы щелкал, а на экзамене по информатике (Visual foxpro) программку типа суммирования столбцов списал у соседа (это уже в университете).
Не смотря на эте намерен научится писать программы для Автокада на лиспе, скачал книгу Хювенена, несколько примеров создания программ, но после получасового “смотрения” таких книг мое мышление явно притормаживает.
Решил пойти другим путем.
Нашел самый короткий лисп из моей коллекции, и прошу программистов с этого форума пошагово объяснить какой символ что означает. Надеюсь на вашу помощь.


Код:
[Выделить все]
(defun c:make-blocks-explodeable (/ adoc)
  (vl-load-com)
  (vla-startundomark
    (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
    ) ;_ end of vla-startundomark
  (vlax-for blk_def (vla-get-blocks adoc)
    (if (and (equal (vla-get-isxref blk_def) :vlax-false)
             (equal (vla-get-islayout blk_def) :vlax-false)
             ) ;_ end of and
      (vl-catch-all-apply '(lambda () (vla-put-explodable blk_def :vlax-true)))
      ) ;_ end of if
    ) ;_ end of vlax-for
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
_____________________________________________________________________________________________________________

Прошло много лет и топик теперь представляет из себя площадку для обучения азов программирования для многих начинающих.
Так что начинающие лиспогрызы приветствуются .
__________________
Блог

Последний раз редактировалось Red Nova, 12.07.2017 в 05:43.
Просмотров: 2049528
 
Непрочитано 07.10.2010, 12:20
#1081
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


Подскажите, пожалуйста, как обработать формулу (см. вложение) при нескольких значениях угла альфа. Список из необходимых углов альфа и величина R известны, но количество альф может быть различным. Требуется получить список из Lx или конкретные значения L0, L1, L2 ... и т.д.
Через обработку списка из альф посредством команды nth получаю значения L0, ....Ln, но сама запись очень громоздкая:
Код:
[Выделить все]
(setq 
spisok_sin (mapcar 'sin (list 0 (/ pi 8.0) (/ pi 4.0) (* 3.0 (/ pi 8.0)) (/ pi 2.0)))
L0 (sqrt (- (expt R 2.0) (* (expt (* R (nth 0 spisok_sin)) 2.0))))
L1 (sqrt (- (expt R 2.0) (* (expt (* R (nth 1 spisok_sin)) 2.0))))
L2 (sqrt (- (expt R 2.0) (* (expt (* R (nth 2 spisok_sin)) 2.0))))
L3 (sqrt (- (expt R 2.0) (* (expt (* R (nth 3 spisok_sin)) 2.0))))
L4 (sqrt (- (expt R 2.0) (* (expt (* R (nth 4 spisok_sin)) 2.0))))
)
Попытался организовать через функции foreach, mapcar и lambda, но положительного результата не достиг - зато мозги вскипели
Не получается подставлять в выражение значение из списка - требуют всегда число, а как без nth до него добраться?
Миниатюры
Нажмите на изображение для увеличения
Название: Formula.jpg
Просмотров: 81
Размер:	3.8 Кб
ID:	46230  
alex8888 вне форума  
 
Непрочитано 07.10.2010, 12:45
#1082
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 575


alex8888, попробуй так

Код:
[Выделить все]
; если R и spisok_sin заданы
(mapcar '(lambda (x) (sqrt (- (expt R 2.0) (* (expt (* R x) 2.0))))) spisok_sin)
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 07.10.2010, 12:48
#1083
Frigate

КИП, АСУ ТП, слаботочка
 
Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422


Здравствуйте,

прошу ответить, верно ли я понял, что ruCAD, который бесплатно выложен в сети для общего пользования, работает только с 2006 автокадом? 2009-ый стартер даже не замечает
Frigate вне форума  
 
Непрочитано 07.10.2010, 13:10
#1084
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


TararykovDG, спасибо, получилось. А то голову сломал, куда же lambda воткнуть - я ее пытался внутри формулы прописать, а нужно в начале.

Вопрос другой, у метода AddSpline в качестве аргументов нужно задавать начальную и конечную касательные. Как они будут выглядеть, если необходимо получить замкнутый сплайн, где начало и конец совпадают и дополнительные точки я не просчитывал?

Последний раз редактировалось alex8888, 07.10.2010 в 15:09.
alex8888 вне форума  
 
Непрочитано 07.10.2010, 15:12
#1085
ShaggyDoc

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


Цитата:
Сообщение от Frigate Посмотреть сообщение
прошу ответить, верно ли я понял, что ruCAD, который бесплатно выложен в сети для общего пользования, работает только с 2006 автокадом? 2009-ый стартер даже не замечает
Это старая версия. Последняя версия ruCAD-2008 "замечает" и работает со всеми AutoCAD начиная с 2008 (R17.1) до R18.2 (если такая будет). Более ранние не поддерживаются.
ShaggyDoc вне форума  
 
Непрочитано 07.10.2010, 15:20
#1086
Frigate

КИП, АСУ ТП, слаботочка
 
Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422


ShaggyDoc

я скачал с этого сайта в downloads ruCAD. Значит она старая? А где я могу скачать новую, или это невозможно?
Frigate вне форума  
 
Непрочитано 07.10.2010, 16:02
#1087
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


ShaggyDoc, а в 2011 каде получится запустить? И где скачать, если можно?

Как привести список типа ((x1 y1)(x2 y2)(x3 y3)...(xn yn)) к виду (x1 y1 x2 y2 x3 y3 .... xn yn) ?
Offtop: (Туплю чего то сегодня ) - не могу найти никак

Последний раз редактировалось alex8888, 07.10.2010 в 18:15.
alex8888 вне форума  
 
Непрочитано 07.10.2010, 19:13
#1088
ShaggyDoc

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


Цитата:
А где я могу скачать новую, или это невозможно?
Скачать нельзя нигде. Используется только достаточно узким кругом спонсоров и заказчиков системы.

Цитата:
ShaggyDoc, а в 2011 каде получится запустить?
Должно быть. Покупать 2011 ради ответа на на этот вопрос у меня нет возможностей. Пока все мои клиенты работают в 2008 и не намерены обновлять Автокады из-за "сбоку-бантик". А радикальных новых возможностей не появляется.

Ограничения младших версий вызваны тем, что выполнен полный переход на возможности 3D, аннотативность и прочее, появившееся в 2008. А старшие версии ограничены 18.2, да и то "от фонаря". Технических ограничений нет, так как не используется OA, в котором есть контроль версий.
ShaggyDoc вне форума  
 
Непрочитано 07.10.2010, 20:22
1 | #1089
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 575


Цитата:
Сообщение от alex8888 Посмотреть сообщение
Как привести список типа ((x1 y1)(x2 y2)(x3 y3)...(xn yn)) к виду (x1 y1 x2 y2 x3 y3 .... xn yn) ?
Код:
[Выделить все]
(setq lst (list (list 1 1) (list 2 2) (list 3 3)))
(apply 'append lst)
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 08.10.2010, 14:38
#1090
Frigate

КИП, АСУ ТП, слаботочка
 
Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422


ShaggyDoc
а есть возможность запустить руКАД, скачанный с этого сайта, под 2009 автокадом?

У меня программа стартер пишет - не вижу автокада.
Frigate вне форума  
 
Непрочитано 09.10.2010, 22:14
#1091
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


Можно ли сплайн, созданный методом vla-addSpline сконвертировать в полилинию без применения командного метода
Код:
[Выделить все]
(vl-cmdf "_splinedit" (entlast) "_p" "10")
?
alex8888 вне форума  
 
Непрочитано 17.10.2010, 03:21
#1092
Frigate

КИП, АСУ ТП, слаботочка
 
Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422


Интересная особенность VLISP редактора - если создавать мастером приложение и файлы .lsp лежат в папке создаваемого приложения, то длина имени таких .lsp файлов не может превышать 24 символа. Если файлы-исходники находятся в др. папках, то таких ограничений нет. Но добавлять больше чем по 5 файлов-исходников (.lsp) не получается. Может кто знает, как можно за одно выделение добавить все свои исходные .lsp файлы в состав приложения?
Frigate вне форума  
 
Непрочитано 17.10.2010, 06:56
#1093
ShaggyDoc

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


Цитата:
Сообщение от Frigate Посмотреть сообщение
Интересная особенность VLISP редактора - если создавать мастером приложение и файлы .lsp лежат в папке создаваемого приложения, то длина имени таких .lsp файлов не может превышать 24 символа. Если файлы-исходники находятся в др. папках, то таких ограничений нет. Но добавлять больше чем по 5 файлов-исходников (.lsp) не получается. Может кто знает, как можно за одно выделение добавить все свои исходные .lsp файлы в состав приложения?
Пользоваться штатными средствами ведения проекта очень неудобно. Гораздо лучше редактировать файл проекта обычным текстовым редактором и добавлять файлы в список вручную. Первоначально проект создать в IDE, а потом - руками редактировать список :OWN-LIST.

Файлы можно группировать, вставлять комментарии как в LISP за символами ";", располагать в подкаталогах. Запись файла в список надо делать с относительным путем от файла проекта.

Например

"3d/draw/pipe/support/erico/ru-3d-steel-erico-bracket-2-channel-draw"

Неудобство - после изменения проект надо заново загружать.
ShaggyDoc вне форума  
 
Непрочитано 17.10.2010, 10:13
#1094
Frigate

КИП, АСУ ТП, слаботочка
 
Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422


Очень нужен совет опытных пользователей Автокада. Создал команду, подцепил ее на кнопку. Файл .lsp с командой разместил в папке, которую прописал в путях доступа к вспомогат. файлам. Теперь меняю код в .lsp файле, но подкачивается старый вариант файла. ВАообще удалил файл и папку. Все равно откуда-то подгружается файл )))

Прошу помощи ) Иначе придется просто менять название программсы и прописывать новое уже название на кнопке.
Frigate вне форума  
 
Непрочитано 17.10.2010, 10:36
#1095
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Frigate Посмотреть сообщение
Очень нужен совет опытных пользователей Автокада. Создал команду, подцепил ее на кнопку. Файл .lsp с командой разместил в папке, которую прописал в путях доступа к вспомогат. файлам. Теперь меняю код в .lsp файле, но подкачивается старый вариант файла. ВАообще удалил файл и папку. Все равно откуда-то подгружается файл )))

Прошу помощи ) Иначе придется просто менять название программсы и прописывать новое уже название на кнопке.
Загрузку файла вы прописываете в коде кнопки (т.е. выполняется проверка вызова команды, если возвращается nil - выполняется загрузка файла) или он грузится автоматически?
Если автоматически, то возможно, что команда с таким именем уже существует в др. lisp-файле, который грузится после вашего.

п.с. я не силён в лиспе, это предположение.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 17.10.2010, 10:45
#1096
Frigate

КИП, АСУ ТП, слаботочка
 
Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422


в общем щас более подробно опитшу ситуацию.
Программа (имя ее) - adv-programme-routing-cable-routing-create.
Сейчас такая ситуация-ни одного файла с таким названием нет. Открываю Автокад. Набираю в ком. строке название этой команды:

Цитата:
Команда: adv-programme-routing-cable-routing-create
Неизвестная команда "ADV-PROGRAMME-ROUTING-CABLE-ROUTING-CREATE". Для вызова
справки нажмите F1.
Далее пытаюсь подгрузить эту программу:
Цитата:
Команда: (load "adv-programme-routing-cable-routing-create")
; ошибка: сбой при выполнении LOAD: "adv-programme-routing-cable-routing-create"
Несмотря на сбой при загрузке, функция загрузилась (только неясно как и откуда???):
Цитата:
Команда: ADV-PROGRAMME-CABLE-ROUTINGS-CREATE-ONE

Введите поправку (в процентах) на длину кабеля (целое число от 6 до 30) <20>:
Это уже идет выполнение моей программы-невидимки:
Цитата:
Введите поправку (в процентах) на длину кабеля (целое число от 6 до 30) <20>:
Как можно узнать путь подгрузки программы??? Может ли она каким-то образом уже прописана в путях автозагрузки? ТОлько я ничего такого не делал )))
Прошу помощи )
Frigate вне форума  
 
Непрочитано 17.10.2010, 11:36
#1097
Кулик Алексей aka kpblc
Moderator

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


Попробуй указать загрузку так:
Код:
[Выделить все]
(load (findfile "adv-programme-routing-cable-routing-create.lsp"))
Или как там файл называется...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.10.2010, 11:41
#1098
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Frigate Посмотреть сообщение
ТОлько я ничего такого не делал )))
Точно не делал?

ИМХО Вешать на кнопки загрузку файлов - моветон, для этого есть файлы *.mnl и *.cui

и не факт, что команда определена только в этом файле
gomer вне форума  
 
Непрочитано 17.10.2010, 11:43
#1099
Frigate

КИП, АСУ ТП, слаботочка
 
Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422


ответ автокада

Цитата:
Команда: (load (findfile "adv-programme-routing-cable-routing-create.lsp"))
; ошибка: неверный тип аргумента: stringp nil
Я поиском проверял на компе - такого файла нет совсем больше, файл своей программы и саму прогрмму я переименовал.


Все нормально теперь, еще раз проверил - уже не находит эту программку.

Видимо, есть глюк у Акада какой-то, но сейчас он исчез (после переименования программы)


gomer,

а как сделать загрузку основного VLX файла через CUI?

Последний раз редактировалось Frigate, 17.10.2010 в 11:50.
Frigate вне форума  
 
Непрочитано 17.10.2010, 11:49
#1100
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Перезагрузи кад и попробуй снова
зы просто команда была уже загружена в документ и это не глюк
gomer вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу)



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Вставка в таблицу поля, соотвествующего площади примитива Profan Готовые программы 272 06.06.2021 23:12
Сейсмозащита и сейсмоизоляция существующих, построенных зд. IANationalInformAgentstvo Прочее. Архитектура и строительство 216 20.01.2015 16:51
Мониторы LCD CRT Разное 94 17.06.2008 10:51
ЮМОР 2006 =) Perezz!! Разное 1122 04.01.2007 00:46