|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Инженер Регистрация: 27.04.2009
Deutschland
Сообщений: 208
|
Кулик Алексей aka kpblc
Цитата:
![]() ![]() |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,425
|
Сейчас пытаюсь написать статью про динамические диалоговые окна...
А так, сразу: По поводу lsp:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
|||||||||||||
Инженер Регистрация: 27.04.2009
Deutschland
Сообщений: 208
|
Кулик Алексей aka kpblc
![]() ![]() Будем копать дальше. 1. Цитата:
(vla-StartUndoMark (vla-Get-ActiveDocument (vlax-Get-Acad-Object))) после команды (vl-load-com),а перед закрывающей скобкой основной функции после возврата переменных osmode и oldlay: (vla-EndUndoMark (vla-Get-ActiveDocument (vlax-Get-Acad-Object)))? Или нет? 2. Что значит Цитата:
Должен ли я при определении локальных переменных основной функции дописать туда msg и (или) *error* (хотя последнее- это команда) ? Или ты имеешь ввиду что то другое? 3. Цитата:
4. Цитата:
5. Цитата:
![]() 6. Цитата:
![]() 7. Цитата:
![]() 8. Цитата:
9. Цитата:
10. Цитата:
![]() 11. Цитата:
12. Цитата:
![]() |
||||||||||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,425
|
1. По факту у меня типовой код выглядит так:
Код:
2. Ошибки (скажу честно, повторяться лениво): http://autolisp.ru/2009/09/13/error-catch/ 3. Я бы делал, наверно, так (правда, я и привык к англ.вариантам): Код:
5. А как же rb1, rb2 и т.п.? 6. Давно не игрался с dcl, но я бы делал примерно так: Код:
Код:
7. Попробуй сделать так: Код:
- в каком документе создавать (ведь можно и не текущий обрабатывать) - если слоя нет, то его надо создавать и настраивать. - если слой есть, то его надо настраивать. - в слое есть свойство "типа линии". Этот тип линии может отсутствовать в документе, то есть его надо подгружать. Возможно, из нестандартных файлов *.lin. Которые, в свою очередь, могут находиться не в путях поиска. Закошмарил? ![]() 11. Либо делать через entmakex, либо через vla-addtext. Извини, сейчас полноценно показать не могу. А если все же использовать командные методы, то получится нечто типа: Код:
![]() 12. Не сейчас. Скажу честно, времени и мозгов именно сейчас не хватает ![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер Регистрация: 27.04.2009
Deutschland
Сообщений: 208
|
Кулик Алексей aka kpblc
к п.12 Понятно, не хочешь, чтобы я за тобой на карачках ползал ![]() Подскажи, пожалуйста, как сформировать полученный программой dwgru-browsefiles-in-directory список, чтобы передать его на загрузку. А то только показывается в окне, что есть по такому то пути такие то файлы и все. Тут сообразил, что если в программе задать (load file), где файл - мой лисп, то можно оперативно подгружать недостающие функции. Типа, если команда не найдена, то загрузить функцию с этой командой, потом снова выполнить ее. Это может заметно упростить листинг основной функции, введя несколько вспомогательных библиотечных. ![]() |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,425
|
Русификатор не ставил?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 29.04.2010
Сообщений: 15
|
Ну он в комплекте шел, точнее сразу русифицированный ставился
А может я велосипед изобретаю? В целом задача тривиальная: есть функция (астроида), заданная параметрическим уравнением Код:
На любом другом языке сделал бы уже давно, а на лиспе всю ночь мучаюсь, и пока ничего. Может дадите волшебного пинка в нужном направлении? А, и самое главное - АвтоКАД 2005 Последний раз редактировалось magiker, 29.04.2010 в 10:05. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,425
|
Эта ошибка была в версиях 2005 и, по-моему, в 2006. Попробуй SP поставить - вроде бы решалась проблема, но точно не помню
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 29.04.2010
Сообщений: 15
|
А где взять сервиспак на варезный кад? )
Все, вопрос снят. Нашел, качаю. Посмотрим, встанет ли он на левый серийник Еще такой вопрос по структуре программы на лиспе. Функция должна быть описана до ее первого вызова или не имеет значения? И как все-таки быть со скобками в функции, возвращающей значение? Учебник говорит что синтаксис такой (defun %FnName% (par1 par2 ...) (%FnBody%) ), и как пример - стандартный DtR (defun dtr (u) (* pi (/ u 180)) ;Это как я понимаю то значение которое функция должна вернуть ) А как быть если перед расчетом возвращаемого значения надо провести дополнительные расчеты? Последний раз редактировалось magiker, 29.04.2010 в 11:26. |
|||
![]() |
|
||||
Цитата:
Цитата:
Код:
|
||||
![]() |
|
||||
Разделяет список переменных на глобальные и локальные.
В данном случае, после выполнения функции test локальной переменной C будет присвоено то значение, которое у нее было до начала выполнения функции. |
||||
![]() |
|
||||
Цитата:
![]() Наверное, это следует понимать так: Как задать значение, которое вернет функция после ее вызова? Я ж показал, для при веденного выше примера - функция test: -обращаемся к функции: (test 1 2) но надо как-то сохранить результат работы функции, поэтому: - сохраняем возвращаемое значение: (setq test_rez (test 1 2)) А функция test будет всегда возвращать вычисленное значение своей локальной переменной C, потому что в коде после всех вычислений стоит C: Код:
|
||||
![]() |
|
||||
Регистрация: 29.04.2010
Сообщений: 15
|
Во =) Спасибо за доходчивое объяснение
З.ы. сорри за невнятные вопросы, вторые сутки не сплю, поэтому мозг немного притормаживает Установка СП1 на АвтоКАД 2005 убила серийник, что впрочем и ожидалось. Поставил 2010 Кад, но тут другая проблема... а где в нем автолисп? о.0 Нашел, невнимательно смотрел просто. Очередной вопрос возник. Как в команде (command "_.line" p1 p2) задать ширину (толщину) линии и ее цвет? Разобрался... Следующий вопрос Код:
![]() Т.е. в целом рисунок правильный, не считая углов. Не подскажите почему? Поэкспериментировал сейчас - оказывается если максимально приблизить рабочий лист перед выполнением программы то строится без проблем, точнее чем больше приближение тем меньше скос на углах. Как избавиться от этого? Надо чтоб рисовалось нормально, независимо от масштаба Решил немного изменить алгоритм. Пусть сначала все точки собираются в список, а потом из этих точек рисовать график. Т.е. в теории это выглядит так Код:
Результатом работы циклы должен стать список ((х1 у1) (х2 у2) (х3 у3) (х4 у4) ... ) Но если использовать list то скорее всего получится ((((((х1 у1) (х2 у2)) (х3 у3)) (х4 у4)) ... ) как-то так Вобщем, как правильно в цикле составить список точек, и главное - как из этого списка построить полилинию? Ну помогите кто-нибудь пожалуйста Со скошенными углами разобрался, концы отрезков прилепляются к ближайшей точке. Справился отключением данного параметра. Вопрос с формированием массива точек и рисованием линии из этого массива все еще актуален Последний раз редактировалось magiker, 30.04.2010 в 03:27. Причина: Включил мозг |
|||
![]() |
|
|||||
Инженер-строитель Регистрация: 15.08.2007
Киров
Сообщений: 2,204
|
Цитата:
Вот код: Код:
Цитата:
Код:
Цитата:
1. Функцию можно определять и после её первого вызова. 2. Слэш не разделяет список переменных на глобальные и локальные. Он отделяет аргументы функции от её локальных переменных. Глобальные переменные появляются, если они просто не прописаны явно как локальные. А аргументы тоже по-сути локальны, что доказыавает проверка: a=nil. |
||||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |