|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Вариант 1: назначить функции функции от 1-го аргумента (это будет описание ошибки в виде строки) имя *error* - где произвести необходимые манипуляции по восстановлению.
Код:
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Геодезист Регистрация: 09.02.2012
Сергиев Посад
Сообщений: 6
|
Цитата:
![]() Про решение моей задачи есть тема http://forum.dwg.ru/showthread.php?t...EA%F1%F2%EE%E2. Взяв за основу буду разбираться и доводить ее для своих целей. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 12.01.2015
Сообщений: 261
|
В 2015 версии появилась новая функция COMMAND-S.
Ее надо использовать вместо VL-CMDF и COMMAND, если функция вызывается с заранее заданными аргументами и не подразумевается никаких действий пользователя во время ее вызова. Синтаксис функции command-s: (command-s [cmdname [arguments ...]]). Синтаксис функции command: (command [cmdname [arguments ...]] ... [cmdname [arguments ...]]). При адаптации древних Lisp'ов при тупой замене command на command-s выполняется только первая команда остальные команды игнорируются с продолжением работы без прерывания и сообщения об ошибке. Более детально лезть в код лень. Что посоветуете? P.S. В 2015 с command в работе лиспа нареканий не обнаружил. |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Боюсь, что кроме как бороться с ленью тут ничего не посоветуешь... На мой взгляд, самый изящный вариант выхода описан здесь, но все коды придется доработать.
В смысле? Вроде как command в 2015-м не работает. Сам проверить не могу - нет 15-го, это я по сообщениям форума сужу. Были также предложения просто заменить во всех лиспах command на vl-cmdf, но поведение их порой отличается, и на результатах работы программы сказаться может в худшую сторону. Довольно редко, но я с этим сталкивался. Последний раз редактировалось skkkk, 12.01.2015 в 13:49. |
|||
![]() |
|
||||
Регистрация: 21.04.2009
Тюмень
Сообщений: 97
|
Помогите, пожалуйста, с сортировкой списка:
Есть набор динамических блоков в автокад. Блоки преобразованы во VLA-объекты. Необходимо отсортировать список из VLA - объектов (названий блоков), но по их длине. Никак не могу понять как привязать коэффициент перебора номера блока k: (vl-sort-i ars_list_blocks '< (vlax-variant-value (vla-get-value (car (vl-remove-if-not '(lambda (x) (= "ars_distance" (vla-get-propertyname x))) (vlax-safearray->list (vlax-variant-value (vla-GetDynamicBlockProperties (nth k ars_list_blocks)))))))))) где ars_list_blocks-список, созданный функцией list, возвращает значение, типа (#<VLA-OBJECT IAcadBlockReference 19733bf4> #<VLA-OBJECT IAcadBlockReference 19744bf5> #<VLA-OBJECT IAcadBlockReference 19538gh4>) |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
на выбор:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
Минуту. Ты просил:
Я так понял, что нужно было именно имя блока. А если нет - то получай соответствующее значение определенного свойства дин.блока и сортируй по нему. Принцип не меняется ни на йоту.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 21.04.2009
Тюмень
Сообщений: 97
|
Хорошо, попробую, спасибо
![]() Пол-дня бьюсь, никак не выходит((( голову скоро сломаю... Как заменить vla-get-effectivename на код по извлечению длины? Задача состоит в том, чтобы отсортировать список ИМЕН (VLA-адресов) блоков, но по их длине (свойство "ars_distance"). Получается что-то вроде двойной сортировки. Последний раз редактировалось Wolkodaw, 14.01.2015 в 12:55. |
|||
![]() |
|
||||
Регистрация: 12.01.2015
Сообщений: 261
|
Я не программист, английского не знаю. В середине 90-х пересел от
кульмана к компьютеру. Каюсь, первое время расстояние на мониторе мерял линейкой. Познакомился с lisp'ом, dcl в объеме книги Ю. А. Кречко В. В. Полищук "Автокад 13: новые возможности" Москва "Диалог-МИФИ" 1996. Связки DCL-LSP по параметрическому вычерчиванию прослужили без проблем от R12 по AutoCAD 2014. Беглая проверка на ACADVER = "20.0s (LMS Tech)" показала их работоспособность. По совету skkkk изучил тему "Mapcar, foreach и AutoCAD 2015". Очень понравилось решение VVA (#8) и идея пакетной обработки roaa (#13). В результате родилось следующее: Замена command на функцию adapt С учетом синтаксиса функции command: (command [cmdname [arguments ...]] ... [cmdname [arguments ...]]) На вход adapt подается список: Код:
Код:
затраты на преобразование кода (strcat (rtos x 2 n) "," (rtos y 2 n)). Можно ли обойтись без этих затрат? Но продолжает грызть вопрос: нужна ли адаптация если нет вложений command в mapcar или foreach? ----- добавлено через ~15 мин. ----- Прошу прощения. На вход adapt подается список: Код:
Последний раз редактировалось Кулик Алексей aka kpblc, 15.01.2015 в 10:23. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
В какой "отдельный файл"? В текстовый?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
Это было неочевидно.
Есть команда _.wblock, есть вариант выполнять через ObjectDBX копирование объектов (vla-CopyObjects). Что больше нравится? ![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 05.09.2007
RUSSIA
Сообщений: 166
|
|
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |