|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
[autolisp] Передача в функцию по ссылке
Регистрация: 14.11.2010
Сообщений: 25
|
||
Просмотров: 2912
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
используй subst
По-моему, можно. Попробуй использовать апостроф (')
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
1. Невозможно изменить список - список НЕИЗМЕНЯЕМАЯ структура, можно только создать новый на основе предыдущего.
2. К списку возможен ТОЛЬКО последовательный доступ (это не массив и nth - по сути отсчитывает car'ы), так что организация порядка в списке "по индексу" - уже по сути своей не есть правильная (посмотрите dxf коды - там нет ни одного значения которое имело-бы фиксированный индекс).
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Регистрация: 14.11.2010
Сообщений: 25
|
ок, список --- неизменяемая структура.
что-то типа этого можно ведь было реализовать: (defun put (lst i n_i/ ...) ; проверки на границы списка ; добавить в список первые i-1 элементов ; добавить в список i-й элемент ; добавить в список оставшиеся элементы ; реверс результирующего списка ) или это нарушает какие-то концепции? Ps. забыл сказать "спасибо" за подсказку про апостроф. Спасибо! Решил реализовать вычисления на С++. Самый лучший выход, насколько я понял --- сделать com dll. Но времени/желания разбираться в Windows технологиях нет. Самое простое, что приходит в голову (для внутреннего пользования) --- передача данных через файл: из лиспа: 1. вывод в input файл 2. вызов .exe с параметром пути к файлу 3. запрос на существование output файла и возможность его записи (то есть на то, что он готов; если не готов --- ждём дальше). 4. чтение output файла Как можно реализовать п.3? Последний раз редактировалось kriolog, 08.03.2012 в 14:11. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Код:
Парочка функций из этой темы (там требутся регистрация) Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Цитата:
2. Если Вы "мудрите" с вычислениями из-за скорости - не займет-ли Ваш "интерфейс" львинную долю времени? 3. Не изобретайте велосипед. То что Вы описали конечно реализуемо, но со стороны похоже на чесание левой пяткой правого уха (с кучей слабых и кривых мест).
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Регистрация: 14.11.2010
Сообщений: 25
|
to VVA: спасибо, пригодится на будущее. Это я так удивлялся, почему subst, nth, sort, etc. встроены, а subst_i --- нет.
to Дима_: код на C++ планирую потом включить в opensource проект (С++/Qt/CGAL) по построению цифровой модели рельефа. Сейчас нужно проверить пригодность алгоритма построения сглаженных горизонталей, основанного на детализации триангуляции. Сами вычисления просты, описаны в книге Скворцова "Триангуляция Делоне и её применение", сс.107-109. Для тестов тратить время на изучение winapi нецелесообразно. Сначала думал на лиспе быстро накидать, но сейчас вижу, что много времени займёт. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
А цифровую модель рельефа в конечном проекте в автокаде выводить будете? Решайте сами - но мне кажеться Вы неправильно к задаче подходите - хотя Вам конечно виднее. Если есть конкретный вопрос по автокаду я (ну или кто другой), скорее всего, на него отвечу, пока я не очень понимаю что нужно.
p.s. не забывайте что лисп язык декларативный, а c++ императивный, подходы в языках разные соответственно и "правильные" алгоритмы для них будут отличаться (в деталях). Например те же списки в c++ как корове седло - одеть можно, но незачем.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Передача данных в функцию | Zaghim | Программирование | 2 | 24.08.2011 17:24 |
VBA AutoCAD передача объекта в функцию | ikambi | Программирование | 13 | 12.10.2010 16:48 |
Как правильно вызвать функцию? | paradoxvaha | Программирование | 7 | 09.07.2008 16:25 |