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

Вернуться   Форум 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.
Просмотров: 2048426
 
Непрочитано 03.12.2023, 18:58
1 | #4501
Кулик Алексей aka kpblc
Moderator

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


VLIDE либо VS Code с расширением AutoLISP (ИМХО)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 03.12.2023, 19:06
1 | #4502
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от posetitel Посмотреть сообщение
А как код можно быстро тестировать и писать с цветовым выделением переменных, функций, чтобы нагляднее было?
ну я в Notepad++ писал сейчас, там подсветка синтаксиса лиспа есть. А тестировать - autolisp внутренний язык приложения, поэтому без акада его (код) и не протестируешь в работе. Так что встроенный редактор акада и там сразу fixedsys (вроде) шрифт поставить - чтобы кириллица нормально отображалась.
Сергей812 вне форума  
 
Непрочитано 07.12.2023, 22:08
#4503
Alxndr1697


 
Регистрация: 24.01.2008
Подольск
Сообщений: 170


Упс)

Последний раз редактировалось Alxndr1697, 10.12.2023 в 19:27.
Alxndr1697 вне форума  
 
Непрочитано 09.12.2023, 13:57
#4504
posetitel


 
Регистрация: 16.10.2013
Сообщений: 395


Товарищи, подскажите еще где смотреть описание команд, их параметры и очередность ввода, чтобы можно было написать в лиспе или в командной строке? В справочнике команд автокада приводится только общее описание, без описания, как пользоваться командой через командную строку.
Т.е., например, я взял из другого лиспа команду (command "_mleader" p1 p1 str) и пытаюсь разобраться как она работает. Интуитивно понятно, что p1 - это переменная координаты точки вставки стрелки, она в лиспе задается в другом месте, вторая p1 по идее должна быть переменная координаты вставки текста выноски, но они почему-то одинаковые, хотя по факту при выполнении лиспа все же в итоге запрашиваются на экране, ну а str - это содержание мультивыноски.
Так вот если я попытаюсь ввести в команду в строчку вот так "_mleader 10.5 20.6 Текст", то автокад вообще выдаст ошибку, он не понимает мои координаты 10.5 и 20.6, а просит указать их на экране и вместо "текст" ждет ввода совсем других параметров команды mleader, таких как что указывать вначале положение стрелки выноски или положение текста выноски или вообще выбрать опции.
posetitel вне форума  
 
Непрочитано 09.12.2023, 14:12
1 | #4505
Кулик Алексей aka kpblc
Moderator

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


Самое простое - пытаться выполнять команды напрямую в ACAD. Помня о том, что точки, к примеру, задаются не
Код:
а как
Код:
Правда, там могут быть нюансы Особенно касаемо мультивыноски: https://autolisp.ru/2015/01/21/mleader_create_order/
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.12.2023, 14:25
#4506
posetitel


 
Регистрация: 16.10.2013
Сообщений: 395


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Самое простое - пытаться выполнять команды напрямую в ACAD. Помня о том, что точки, к примеру, задаются не
Код:
а как
Код:
Правда, там могут быть нюансы Особенно касаемо мультивыноски: https://autolisp.ru/2015/01/21/mleader_create_order/
Через запятую получилось ввести координаты начала стрелки и начала текста, т.е. вводил "_mleader 10,5 20,6 Текст" (без кавычек), тогда стрелка в точке (10,5), текст выноски начинается в точке (20,6), разделение координат начала стрелки и начала текста пробелом. Но вот слово "Текст" в выноску поместить не удается ни через кавычки, ни через пробел, автокад ждет выбора параметра построения, о котором как раз идет речь по ссылке.
Ну и в общем случае, не для мультивыноски, а для построения других примитивов где посмотреть очередность и синтаксис параметров?
posetitel вне форума  
 
Непрочитано 09.12.2023, 14:37
#4507
Кулик Алексей aka kpblc
Moderator

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


Ну, сначала-то было написано
Цитата:
Сообщение от posetitel Посмотреть сообщение
_mleader 10.5 20.6 Текст
а не
Цитата:
Сообщение от posetitel Посмотреть сообщение
_mleader 10,5 20,6 Текст
И я бы, если честно, не создавал бы командными методами мультивыноски, многострочные тексты, таблицы и до дури других типов примитивов, особенно если заранее известны все параметры. В Download есть книга В.Света "Язык макрокоманд", советую скачать и почитать - там про командные методы много всякого рассказано. В глубинах форума есть "САПР на базе AutoCAD - как это делается": мощнейший талмуд, больше 1000 страниц, практически библия для разработки под ACAD. Хорошо прочищает мозги, если ее осилить хотя бы наполовину ))
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.12.2023, 15:29
#4508
posetitel


 
Регистрация: 16.10.2013
Сообщений: 395


Обе книги нашел, монументальные, ничего не скажешь, надо прям вчитываться. Сходу пробежался, то что хотел не обнаружил.
Мне казалось должен быть простой список команд с синтаксисом написания, ну если возвращаться к мультивыноске, то что-то вроде:
_mleader <arg1> <arg2> <arg3>,
где <arg1> - координата первой точки, <arg2> - координата второй точки, <arg3> - содержание.
Ну как обычно описывают функции, так и для команд должно быть что-то похожее.
posetitel вне форума  
 
Непрочитано 09.12.2023, 15:55
1 | #4509
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от posetitel Посмотреть сообщение
для команд должно быть что-то похожее
Подобный подход работает далеко не для каждой команды, к сожалению.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.12.2023, 16:10
1 | #4510
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


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

А чтобы был удобный вызов - пишутся на базе существующего языка программирования свои функции (классов в лиспе нет), и после отладки собираются в библиотеки для повторного использования. Собственно, книга <САПР на базе AutoCAD - как это делается> об этом всем и рассказывает. Другое дело, что писать сейчас САПР на лиспе - это очень на любителя, имхо)
Сергей812 вне форума  
 
Непрочитано 09.12.2023, 19:40
#4511
posetitel


 
Регистрация: 16.10.2013
Сообщений: 395


тогда может есть список с описанием для команд, для которых доступно такое описание?
posetitel вне форума  
 
Непрочитано 12.12.2023, 07:15
| 1 #4512
Alxndr1697


 
Регистрация: 24.01.2008
Подольск
Сообщений: 170


Цитата:
Сообщение от posetitel Посмотреть сообщение
тогда может есть список с описанием для команд, для которых доступно такое описание?
Если найдешь ответ на этот вопрос, - поделись, пожалуйста.
Alxndr1697 вне форума  
 
Непрочитано 12.12.2023, 08:28
#4513
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от posetitel Посмотреть сообщение
тогда может есть список с описанием для команд, для которых доступно такое описание?
F1 ?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.02.2024, 10:10
#4514
posetitel


 
Регистрация: 16.10.2013
Сообщений: 395


Подскажите простую вещь, самому допереть не получается.
Есть команда _SPDSNET_ExportACAD, которая должна взрывать все объекты spds extension (Autodesk SPDS)
В составе лиспа, который в том числе должен вызывать и эту команду, у меня код выглядит так:
(command "команда1")
(command "_SPDSNET_ExportACAD" )
(command "команда2")
и все бы ничего, но после вызова _SPDSNET_ExportACAD вылетает диалоговое окно с просьбой подтвердить действия (Все объекты безвозвратно расчленятся. Вы уверены? и кнопки ОК и Cancel).
Как в тексте лиспа прописать автоматическое подтверждение?

Последний раз редактировалось posetitel, 19.02.2024 в 10:17.
posetitel вне форума  
 
Непрочитано 19.02.2024, 11:07
#4515
Alxndr1697


 
Регистрация: 24.01.2008
Подольск
Сообщений: 170


Двойные кавычки ("") имитируют нажатие Enter.
Alxndr1697 вне форума  
 
Непрочитано 19.02.2024, 11:18
#4516
posetitel


 
Регистрация: 16.10.2013
Сообщений: 395


да, я пытался через двойные кавычки, т.е. писал (command "_SPDSNET_ExportACAD" ""), но скорее всего после запуска команды и выскакивания меню лисп ставится на паузу и ждет действия от пользователя, т.е. даже двойные кавычки ждут, пока я не нажму кнопку в меню.
т.е не получается через двойные кавычки.

Последний раз редактировалось posetitel, 19.02.2024 в 13:05.
posetitel вне форума  
 
Непрочитано 19.02.2024, 11:39
#4517
Alxndr1697


 
Регистрация: 24.01.2008
Подольск
Сообщений: 170


Цитата:
Сообщение от posetitel Посмотреть сообщение
да, я пытался через двойные кавычки, т.е. писал (command "_SPDSNET_ExportACAD" ""), но скорее всего после запуска команды и выскакивания меню лисп ставится на паузу и ждет действие от пользователя, т.е. даже двойные кавычки ждут, пока я не нажму кнопку в меню.
т.е не получается через двойные кавычки.
А ещё раз нажать Enter? ("" "")
Alxndr1697 вне форума  
 
Непрочитано 19.02.2024, 11:47
#4518
posetitel


 
Регистрация: 16.10.2013
Сообщений: 395


не помогает.
вот выкопировка из кода
(command "_SPDSNET_ExportACAD" "" "")
все равно требует подтверждения с мыши или клавиатуры
posetitel вне форума  
 
Непрочитано 19.02.2024, 12:03
#4519
Кулик Алексей aka kpblc
Moderator

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


Интересно, а эта команда имеет вариант недиалогового режима? Что будет, если перед именем команды поставить минус?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.02.2024, 12:52
#4520
posetitel


 
Регистрация: 16.10.2013
Сообщений: 395


написал (command "-_SPDSNET_ExportACAD" "" "")
вот что в командой строке получилось
Команда: -_SPDSNET_ExportACAD Неизвестная команда "-_SPDSNET_EXPORTACAD". Для вызова справки нажмите F1
posetitel вне форума  
Ответ
Вернуться   Форум 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