| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,856
|
Скорее уж vl-string-subst
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 13.04.2017
Сообщений: 134
|
|
|||
|
||||
Доброго. Вопрос про обработку ошибок.
При нажатии esc в каком случае может выход из команды произойти не через *error* ? Для моего кода если Vlide закрыт то при esc обработка ошибок не происходит, если Vlide открыт то при esc либо Vlide зависает либо после многократного нажатия esc вычисления останавливаются и приходится выходить через Debug - reset to top level. Код обрабатывает очень длинные списки.
__________________
Блог |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,856
|
Поскольку код не показан, могу порекомендовать:
а) исключить рекурсию б) найти в "Библиотеке функций" обработчик ошибок (нечто типа _dwgru-catch-error) и использовать именно его.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Попытаюсь вечером почистить код и привести пример.
_dwgru-catch-error кстати не нашел, но до error дело просто не доходит.
__________________
Блог |
||||
|
||||
Вот более менее короткий пример и файл в котором следует тестировать.
После вызова test нужно задать 3 точки, очередность указана в файле. Если по середине процесса нажать esc, то *error* не сработает.
__________________
Блог |
||||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Цитата:
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
Спасибо за ссылку.
Подскажите плиз как именно мне следует использовать dwgru-error-catch? Скажем у меня проблема в цикле while. Вот участок кода Код:
Пробую подставить весь while под dwgru-error-catch Код:
Вообще я наивно полагал что при esc выход всегда через *error*, а тут нет. Почему так?
__________________
Блог |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,856
|
Red Nova, ты не поверишь, но считай весь твой код надо переделывать (это если по-хорошему )
Основной вопрос - тебе обязательно применение прямоугольника или можно обойтись без привязок? ----- добавлено через ~29 мин. ----- О, кстати! Обрати внимание на строку Код:
----- добавлено через ~50 мин. ----- Еще момент - сделай блок безразмерным и тогда не надо будет мучаться с масштабами.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Цитата:
1. Вариант по хорошему, с переделкой по полной программе. 2. Вариант полегче. Хоть какой костыль чтоб error заработала. Основная проблема не именно в этом коде. Я просто выбрал тот что покороче и поменьше вложенных функций. У меня десятки схожих кодов более сложной конструкции. Цитата:
Затем (этого в приведенном коде нет) задаю мертвые зоны (куда не должно попасть ребро панели), потом создаю списки со всевозможными положениями ребер. Нахожу наилучшее положение ребер сочитая эти списки у уже тогда строю блоки. В процессе составления списков и возникла нужда останавливать процесс вычисления про помощи escape. Так как в зависимости от площади список может состоять из десяток или сотен тысяч элементов. Вычисление займет много времени и если желаемое положение сравнительно быстро не найдено то нужно остановить вычисление. Цитата:
Код:
__________________
Блог |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,856
|
М-да... Тогда все мои переделки можно смело выбрасывать
В качестве пожеланий (и прошу не рассматривать ссылки как рекламу):
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
|||||||||
Спасибо за ответ.
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Пока не понял что мне делать с основной задачей? Через *error* никак не выйти? Цитата:
----- добавлено через ~2 ч. ----- Ну вот, добрался до дома, читаю твою статью и не пойму. Разве это мой случай? Цитата:
Давай забудем про мой предыдущий пример. Вот специально под вопрос написал задачку, своеобразный светофор. Создаю простой но требующий несколько секунд для исполнения цикл while. (5 миллионов простых вычислений у меня машина считает примерно за 5 секунд). Код:
Вызываем test. А. Если while и *error* отработали то на исходе цвет Зеленый (3). Б. Если промеж цикла while что-то не так (к примеру если нажать escape) то на выходе цвет Красный (1) (ни while ни *error* не отработали). В. Ну а если while отработала а до escape дело не дошло то выходе цвет Желтый (2). С вариантами А и В все ясно. (В в такой постановке по сути и не достегаем) Как быть с вариантом Б? Прошу привести решение.
__________________
Блог Последний раз редактировалось Red Nova, 11.01.2018 в 02:15. |
|||||||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,856
|
Ну, как вариант (без проверок):
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
kpblc,
Спасибо. Постараюсь сделать костыль на основе vl-catch-all-apply. На англоязычном форуме проверили мой код, дык у коллеги с Итальянским интерфейсом при escape по середине while *error* отрабатывает. А у меня нет. Баг акада? Код:
Цитата:
__________________
Блог |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,856
|
Может быть, дело в настройках среды
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Неа, у меня галочка не стоит.
На theswamp мне подсказали заменить mapcar в *error* на foreach. В начале это помогло (хотя почему mapcar приводило к ошибке так и не ясно). Переделанный код с #3437 заработал при нажатии escape. Но я рано радовался. Попытался добавить в *error* изменение системы координат и *error* опать сломалась. Цитата:
Цитата:
Код:
__________________
Блог |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,856
|
Offtop: Я бы постарался вообще обойтись без применения командных методов в *error*. Как-то не доверяю я подобному подходу...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |