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

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

Передача параметров процедуре на LISP

Ответ
Поиск в этой теме
Непрочитано 19.05.2010, 13:04
Передача параметров процедуре на LISP
Player
 
Регистрация: 10.08.2009
Сообщений: 5

Подскажите, существуют старые процедуры написанные на LISP. Суть их в следующем: они принимают параметры, и на основе введенных параметров вычерчиваются определенные соединительные детали трубопроводов (тройники, отводы и т.д.).

Параметры вводятся пользователем с клавиатуры в диалоговом режиме.

Вопрос такой: можно как-то по-другому передать эти параметры в лисповскую процедуру? Можно ли на ЛИСПе разобрать содержимое буфера обмена (например, передать в нём параметры текстом с разделителями)? Может ещё что-то предложите?

Спасибо
Просмотров: 6535
 
Непрочитано 02.09.2019, 13:52
#41
koMon


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


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Префикс "C:" означает, что это особый вид функции - команда. Её можно вызвать с клавиатуры, набрав add$. Но ей нельзя передать аргументы - ни с клавиатуры, ни программно.
вообще-то технически это возможно.

Код:
[Выделить все]
 (defun c:prn_scr (string / ) (princ string) (princ))
Код:
[Выделить все]
 (c:prn_scr "Shaggy_Dog isn't right")
koMon вне форума  
 
Непрочитано 02.09.2019, 14:10
#42
Сергей812


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


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Её можно вызвать с клавиатуры, набрав add$. Но ей нельзя передать аргументы - ни с клавиатуры, ни программно.
Попробуйте вызвать свой вариант без скобок:
Цитата:
Сообщение от koMon Посмотреть сообщение
Код:
[Выделить все]
 (c:prn_scr "Shaggy_Dog isn't right")
и увидите, что ваше команда командой не является: без аргумента ругается - "ошибка: слишком мало аргументов". А если указать с аргументом - "Неизвестная команда.."
Сергей812 вне форума  
 
Непрочитано 02.09.2019, 14:40
#43
koMon


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


я же написал технически и потом зачем мне без скобок запускать? я привёл пример команды и пример её нестандартного запуска с аргументом, разве нет? или определённая выше команда уже и не команда?
koMon вне форума  
 
Непрочитано 02.09.2019, 15:00
#44
Сергей812


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


Цитата:
Сообщение от koMon Посмотреть сообщение
я же написал технически и потом зачем мне без скобок запускать? я привёл пример команды и пример её нестандартного запуска с аргументом, разве нет?
Вы привели пример функции с синтаксисом команды) Что интерпретатор лиспа не ругнулся на это - ну это не сильно удивляет)

Команда должна запускаться без скобок, внутри себя может запрашивать дополнительные сведения, при этом пробелы эквиваленты вводу. Т.е. любой аргумент в комстроке будет считаться следующей командой, если запущенная команда сама не заберет данные из комстроки. А если она забирает данные - то тогда не аргументы, а локальные/глобальные переменные будут при необходимости.
Сергей812 вне форума  
 
Непрочитано 02.09.2019, 15:53
#45
ShaggyDoc

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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Вы привели пример функции с синтаксисом команды)
Правильно. И это даже не синтаксис команды, а просто имя функции, такое же, как могло бы быть у "команды". В Lisp вообще можно всякие интересные имена применять, чем многие и пользуются. Еще и анонимные есть...
ShaggyDoc вне форума  
 
Непрочитано 03.09.2019, 11:56
#46
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,274
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от koMon Посмотреть сообщение
вообще-то технически это возможно.
Чтобы это работало и как реальная команда и как функция, её нужно создавать при помощи ObjectARX или AutoCAD .NET API.
Александр Ривилис вне форума  
 
Непрочитано 03.09.2019, 12:10
#47
Сергей812


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


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Чтобы это работало и как реальная команда и как функция, её нужно создавать при помощи ObjectARX или AutoCAD .NET API.
Вроде в .Net тоже разделение: атрибуты CommandMethod и LispFunction для объявления команды и лиспоподобной функции.
Сергей812 вне форума  
 
Непрочитано 03.09.2019, 12:19
#48
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,274
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Вроде в .Net тоже разделение: атрибуты CommandMethod и LispFunction для объявления команды и лиспоподобной функции.
LispFunction может быть и без параметров, но с именем C:XXX
Смысл в том что в lisp нельзя сделать функцию с переменным числом аргументов, а в ObjectARX/AutoCAD .NET API можно.
Александр Ривилис вне форума  
 
Непрочитано 03.09.2019, 12:38
#49
Сергей812


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


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
что в lisp нельзя сделать функцию с переменным числом аргументов
тут форумчане развлекаются с этим)
Сергей812 вне форума  
 
Непрочитано 03.09.2019, 12:49
#50
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,274
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
тут форумчане развлекаются с этим)
Это лишь развлечение. Попробуй создать на lisp функцию C:XXX которую можно было бы использовать и как команду (т.е. с нулевым числом аргументов) и как функцию с числом аргументов > 0.
Александр Ривилис вне форума  
 
Непрочитано 03.09.2019, 13:15
#51
Сергей812


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


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Попробуй создать на lisp функцию C:XXX которую можно было бы использовать и как команду (т.е. с нулевым числом аргументов) и как функцию с числом аргументов > 0.
даже пытаться не буду - хотя бы в силу того, что на .Net пишу - практики на лиспе мало) Да и смысла не вижу - команда и функция - это две разные вещи, каждая под свою область применения. Вызывать из комстроки функцию можно, конечно - но с точки зрения удобства в процессе постоянной работы как то очень сомнительно, имхо.
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Передача параметров процедуре на LISP

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SolidWorks : Обновление таблиц параметров виртуальных деталей MAKSCHUK SolidWorks 10 15.02.2013 13:53
LISP & VBA. Передача данных. Кулик Алексей aka kpblc Готовые программы 8 29.06.2009 22:16
Запуск Lisp команды в новом документе BlackHarp LISP 1 26.03.2009 23:06
загрузка DOS прог через LISP Gaa LISP 15 12.08.2005 19:19