|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
TararykovDG уже объяснил, немного дополню:
В лиспе вот это (/= <выражение> nil) в функциях проверки можно заменять на просто <выражение>: (if (/= x nil) (alert "a") (princ "b")) то же самое, что (if x (alert "a") (princ "b")). Цитата:
Код:
Последний раз редактировалось Do$, 01.06.2011 в 12:35. |
||||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Я бы написал (princ (if x "a" "b"))
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
|
|||
|
||||
Я вставил initget и добавил в него ключевое слово, просто для примера - показать, что есть такая возможность. Чтобы подчеркнуть важность этой функции. Что ее очень полезно использовать перед вызовом get-функций. В ключевых словах может быть все что угодно: выход, настройки, последнее значение, удаление последнего введеного значения, очистка списка и ввод сначала, показать промежуточный список и пр... Словом, на что фантазии хватит. И не так уж важно: выбираем мы пикеты (точнее, не выбираем, а вводим) иль еще что-то делаем. Человек только учится программировать на автолиспе, возможно он не знает о такой возможности, потому я и показал ее, так как считаю ее очень полезной.
Память надо развивать, или лечить (в зависимости от обстоятельств). Но даже на такой запущенный случай в коде уже есть соответствующая проверка введеного значения на нахождение в списке. Программа 1000 раз выдаст подсказку "Пикет уже задан!". |
||||
|
||||
проектирование железных дорог Регистрация: 12.04.2010
Самара
Сообщений: 60
|
TararykovDG,
Да я только начал все это постигать потому пишу как моей практики и ума хватает. Спасибо за помощь. Вот только тут немного задача усложнилась: Код:
|
|||
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Цитата:
я говорю об отсутствии наглядности процесса... код в #1541 на вид уж совсем оптимальный... и с точки зрения программиста и с точки зрения юзер... одно но... небольшая логическая ошибка... только выйти юзер может только первый раз, когда уже выбран хотя бы один пикет, можно либо выйти, либо завершить... По правилам хорошего тона Выход нужно перенести в опции, а Завершить оставить по умолчанию... зы.. никаких промежуточных вычислений... ввел данные - считай, рисуй... не ввел... жуй кофе... |
|||
|
||||
проектирование железных дорог Регистрация: 12.04.2010
Самара
Сообщений: 60
|
Я жутко извиняюсь. Но сейчас пытался как то все то что вы советовали применить на практике и понял что никак не пойму как это работатет
Код:
|
|||
|
||||
Да тут разъяснять нечего - при пустом вводе getreal возвращает nil, а математические функции * и / в качестве аргументов принимают только числа. А тут им nil подсовывают. Они дико обижаются и выдают ошибку
Тут надо сперва получить оба значения, потом их проверить, и, если оба являются числом (есть такая полезная функция numberp), проводить математические операции. Как-то так: Код:
Код, надеюсь, пишешь во VLIDE? Если так, то в нем можно выражения отдельно запускать и смотреть, что будет получаться. Благодаря Кулик Алексею, об этом можно довольно доступно почитать тут http://autolisp.ru/category/ide/ Выражение (if piket_list "Завершить" "Выход") вернет строку "Завершить", если список piket_list непустой или "Выход", если наоборот. |
||||
|
||||
Инженер Регистрация: 27.04.2009
Deutschland
Сообщений: 208
|
Цитата:
Если список с именем piket_list уже есть, то выполняется выражение "Завершить", если его нет, то "Выход". Здесь показана синтаксическая запись оператора if: (if <условие> <выражение1> <выражение2>) Если условие истинно, то выполняется выражение1, если ложно - то выражение2. Поскольку при первом вызове список пикетов еще не создан, то можно выйти из программы - поэтому написан Выход, когда список из пикетов уже есть и заполняется(-нен), то программу можно завершить - написано Завершить. |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Опять я влезаю (nil) это не пустой список, а волне себе список с пустым списком внутри - пустой список это nil либо () либо '().
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
проектирование железных дорог Регистрация: 12.04.2010
Самара
Сообщений: 60
|
Do$,
Цитата:
Код:
Код:
Цитата:
|
|||
|
||||
Цитата:
Код:
Код:
Код:
P.S. В этом конкретном случае, когда мы не задаем ключевых слов в initget, getreal может вернуть либо nil, либо число. Поэтому, проще проверять на nil, а проверку на число убрать. В итоге получается такая простая конструкция: Код:
Последний раз редактировалось Do$, 02.06.2011 в 09:30. Причина: P.S. |
||||
|
||||
проектирование железных дорог Регистрация: 12.04.2010
Самара
Сообщений: 60
|
Доброго времени суток! Нужно рисовать вручную полилинию в цикле при чем каждый раз проходящую через разное количество точек. в дальнейшем нужна будет площадь этой полилинии, но это я уже разобрался как сделать а вот полилинию вручную в код поставить не получается!
Прошу помощи. |
|||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |