|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
19.05.2010, 13:04 | #1 | |
Передача параметров процедуре на LISP
Регистрация: 10.08.2009
Сообщений: 5
|
||
Просмотров: 10568
|
|
||||
Регистрация: 11.03.2009
Тюмень
Сообщений: 109
|
Не силен в Тройниках и отводах, но если суть проблеммы такова:
есть набор стандартных деталей для каждой из которых существует рряд параметров и Автокад каждый раз запрашивает в коммандной строке все эти параметры по очереди (а их может быть много), то всё решается диалоговым окном "помнящим" пераметры последней или наиболее распостраненной детали каждого типа из набора. Если задача другая, то и решений может быть несколько в зависимости от типа задачи: забирать данные из Exel или Open Office calc, через временные файлы и проч. |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
По сути параметры можно задать практически любым мыслимым способом - через файл, через COM (а там и ADO - то есть практически любая БД и мс-офис), виндовый реестр, при желании можно и с устройства снять (возможно придеться какой-нибудь COM драйверок написать). Так-же есть пара способов (стандартный и не очень) создания диалоговых окон - вобщем лисп могуч.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Регистрация: 10.08.2009
Сообщений: 5
|
Capiton
почти правильно - единственное, но, диалоговое окно уже реализовано - это отдельная программа работающая с базой оборудования. Пользователь выбирает в этой проге интересующее его оборудование которое он хочет добавить на чертеж. Моя задача как-то передать параметры для вычерчивания и запустить процедуру на LISP которая, основываясь на переданных параметрах, начертит соотв. деталь. Всем спасибо за ответы |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Есть три варианта:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 10.08.2009
Сообщений: 5
|
Дима_ проблема была в том, что я не знал можно ли передавать параметры в процедуры LISP извне акада. Сейчас все прояснилось.
Кулик Алексей aka kpblc вот-вот, правда недопонял чем отличаются пункты 2 и 3. Я планирую подключатся через позднее связывание к АвотоКАДу и запускать ЛИСПовскую ф-цию, которая считает переданные параметры из файла/реестра/буфера_обмена и вычертит по ним соотв. деталь. Второй вариант, я из проги запускаю ЛИСПовскую ф-цию и помере её запросов параметров автоматически подкидываю их (из своей программы). Второй вариант гораздо предпочтительнее так как не потребует изменений существующих ф-ций вычерчивания на Лиспе. Возможен ли он в принципе? В случае первого варианта ф-ции на лиспе прийдется переписать, чтоб они брали параметры не от пользователя, а, например, из буфера обмена. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
В п.2 фактически запускается лисп0функция. В п.3 никаких лисп-функций не запускается, и вся работа выполняется через соответствующие методы и свойства примитивов (и не только примитивов )
P.S. Цитата:
Цитата:
ИМХО: зачем использовать файловые операции или работу с реестром, когда можно попытаться обойтись без нее?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 11.03.2009
Тюмень
Сообщений: 109
|
Есть еще способ. Он не совсем честный и возможно использовать его не всегда, но зато не надо лезть в СОМ. Данные, которые использует программа с диалогом часто бывают в файле легко и наглядно открываемом блокнотом. Посмотреть структуру - "нарисовать" своё диалоговое окно - написать простой LISP - всё готово. Не собираетесь распостранять получившуюся программу- Вы кристально чисты.
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Как я понял, диалог как раз реализован на "нормальном" языке типа C++ / C# / Vb.NET / Delphi etc, и посмотреть его структуру уже шансов маловато...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 11.03.2009
Тюмень
Сообщений: 109
|
Часто программы написаные на C++ / C# / Vb.NET / Delphi и любых других языках хранят данные в отдельном легко просматриваемом файле (группе файлов), к которому и обращаются. Программисты не запихивают его внутрь, по разным причинам(может, чтобы пользователь мог легко редактировать или еще почему-то) Про такой файл я говорил.
|
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
И никто не сказал, что в LISP нет вообще никаких "процедур" - только функции. Функциям передаются аргументы. А передать аргументы можно множеством способов.
В том числе из файла, реестра, через память. С диалоговым окном или без. Вот буфер обмена - пожалуй наихудший вариант. |
|||
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Цитата:
И вообще: архив в студию, тогда можно о чем-либо говорить... |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
ну допустим не только - например if, or, and - совсем не являются функциями - названиям им куча и специальные формы, и операторы и процедуры кто как переведет да и в зависимости от диалекта лиспа. Но по сути они никак не функции.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Это в других языках они операторы - в LISP'е только функции. Именно в этом принципиальное отличие этого языка от большинства других. Ну а как их переводят переводчики на суть не влияет.
|
||||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Оп оп оп? А нука - попробуйте написать (на лиспе разумеется), ну например, подобие функции if, причем даже с возможностью использовать внутри стандартную if - назовем например AR-if (Александр Ривлис) - и выложите код - а там посмотри что такое оригинальная if - функция или нет.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Ну, полностью от if избавиться не удалось, но в качестве "разминки":
Код:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
То vovka вся беда в твоем if что перед тем как дойдет дело до выполнения функции все ТРИ аргумента будут уже вычесленны, как впрочем и у любой функции - вначале вычисляються аргументы. Крыс верно написал - именно так она и реализованна на самом деле, с той лишь разницей что в функцию добален парсинг - что выполнять а что нет - посему это никак не функция. В and и or то же самое - операнды выполняются последавательно (а не вычисленны все до начала функции).
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |