|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Забавные случаи с LISPовски кодом
Санкт-Петербург
Регистрация: 09.10.2006
Сообщений: 99
|
||
Просмотров: 3928
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
P_S, во-первых, где исходник (хотя бы текстовый)? Во-вторых, помимо IntersectWith есть и простой inters - для прямых участков. В-третьих, а ты уверен, что надо удлинять именно второй объект, а не первый? Или оба?
----- добавлено через ~1 мин. ----- На фига конструкция (member(ascii ",") <...>) Когда можно просто сделать vl-string-subst?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
Offtop: gomer, ты еще мои спагетти не видел
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 09.10.2006
Санкт-Петербург
Сообщений: 99
|
Кулик Алексей aka kpblc,
По п.1. Строки были такого формата: COORD:1041.83,4991.66,6.787 COORD:1040.17,5005.65 COORD:1043.96,5003.63 Вопрос: чем последняя строка отличается от двух предыдущих, которые обрабатываются корректно? Код:
(10 знач2 знач1) По п.2. Под конкретный чертёж делалось, который я своими глазами видел, и результат - не верь глазам своим. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
Нормальный код нормально срабатывает. Поскольку свой ты показываешь кусками, где там у тебя ошибка - остается только гадать. Я подозреваю, что ты конечный список не проверяешь, и у тебя три координаты первого элемента неправильно парсятся.
Гоняй, изучай, тестируй. Писалось "на коленке" и разъяснять код я не буду - некогда
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 09.10.2006
Санкт-Петербург
Сообщений: 99
|
Кулик Алексей aka kpblc,
Наверное, надо было с этого начать. Основной смысл рассказанных мной анекдотов в том, что при выполнении LISPовского кода происходят процессы, которые мы не видим и не контролируем, приводящие иногда к неожиданным результатам. Я и привожу только те строки, где это происходит. Остальное, я думаю, не интересно. Надеюсь, что в случае с пересечениями я правильно понял, каким образом решение системы уравнений координатной геометрии, скрытое от наших глаз, даёт две точки пересечения, вместо ожидаемой одной. А вот почему именно приведённая мною комбинация команд обработки строк одну из сотни однотипных строк обрабатывает иначе, чем остальные, пожалуй, никогда не узнаю. Вот, кстати, как обрабатывается выложенный кусочек файла выложенным кусочком кода (во всяком случае, на моей машине и в моей версии Автокада) ((10 4991.66 1041.83)) ((10 5005.65 1040.17)) ((10 5.0 1043.96)) |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
P_S, тебе никто не мешает нормально использовать vlide. Для начала можно глянуть http://autolisp.ru/2009/09/10/vlide-misc-01/ ; http://autolisp.ru/2009/09/12/vlide-misc-02/
Цитата:
Образец исходного dwg и полный код - где? В хрустальном шаре смотреть? У ноосферы спрашивать?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Мне кажется проблема не в лиспе...
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Регистрация: 21.07.2008
Луцьк
Сообщений: 179
|
Цитата:
лучше вот так сделай и не парся Код:
Последний раз редактировалось Vov.Ka, 23.05.2015 в 11:14. |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Я так понял речь идет о забавных багах лиспа?
Заметил такой баг. Если перефразировать одну забавную фразу одного известного боксера, то получится примерно такой анекдот: Если значения координат запредельно большие 10^n, то команды в функции command работают неправильно. Вернее работают не только лишь все, не каждый знает когда эта команда сработает не правильно. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
command - это отдельная пестня... написал тут одну команду, но из-за лени открывать влид не стал и кнопку не делал, прописал в лиспе запуск команды при загрузке... НО в автокаде (command "mycmd" ... не работает вообще, в брикскаде работает, но системные переменные почему то не изменяются, хотя это и прописано в команде пришлось лишний раз кнопкодавить при загрузке...
|
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Да. "Забавные случаи" связаны с забавно написанным кодом, а не с самим Lisp. Кто-то спотыкается "ошибке 1", кто-то на "ошибке 2", кто-то на вещественных числах, кто-то придумает свою "уловку 22".
Кое-что добавляет Autodesk, "улучшая" AutoCAD. Но в любом случае ошибки надо искать в своем коде, а не в языке. То же самое наблюдается и в других языках программирования. |
|||
![]() |
|
||||
Регистрация: 09.10.2006
Санкт-Петербург
Сообщений: 99
|
Кулик Алексей aka kpblc,
Цитата:
Попробую пояснить на примере: при работе любой рекурсивной функции при достаточно большом количестве циклов произойдёт переполнение стека, т.е. можно передать функции аргумент, который она обработать не сможет. Что-то в этом духе и здесь. В общем, есть вещи не совсем очевидные и совсем не очевидные. Кстати, насчёт двойной точки пересечения: Цитата:
|
|||
![]() |
|
||||
инженер-проектировщик КИПиА Регистрация: 30.08.2008
Минск
Сообщений: 159
|
долго перечитывал, за это время загнал себя в идиоты и обратно, в итоге решил:
#5 нужно поместить вместо заголовка! и вот очень нужной в данном случае функции expt - очень зря не использовали - ускорение работы проги было бы в разы PS да и забавностей поддабавилось бы |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
У тебя настолько дикое количество вычислений? Не поверю - это раз. Второе: ты свой код целиком так и не показал. Третье: нестабильность работы программы, как правило, означает не полную проработку кода.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |