|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Цитата:
http://aco.ifmo.ru/~nadinet/html/oth...book/lisp.html А вообще пользуюсь книжкой Полещука и Лоскутова AutoLISP и VisualLISP в среде AutoCAD ![]() У меня вопрос к опытным людям по функции initget: ... (initget "Yes No") (setq antw (getkword "\nContinue?[Yes/No]:<Yes>")) ... Выглядит это как показано на первой картинке. А хотелось бы, чтоб было похоже на вызов стандартной функции, как на второй картинке. Есть какие-нибудь параметры initget, чтобы варианты не выскакивали сразу, а их можно было высветить, если стрелочку "вниз" нажать. Мелочь кнешна, но вот такая тонкость интересует ![]() |
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Do$, getkword не запрашивает точки, соответственно нет координат. Сравни:
Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
Помимо этого, еще и биты для initget не помешают
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Супер!
![]() В той программе, из которой этот фрагмент, в этом месте точку указывать не надо. Там смысл именно в том, что либо "да" либо "нет" или же пустой ввод, что равносильно "да" - Пользователь выбирает пару объектов, затем выскакивает этот запрос: выбрать еще пару или выход? Если "да" или пустой ввод - то цикл повторяется, пользователь выбирает еще пару объектов. Дело только в том, что таких пар может быть больше сотни, и рука отвалится на "enter" жать каждый раз... Наверное, лучше тогда перед выбором первого объекта из пары сделать запрос такого вида: ... (initget "Exit") (setq text1 (entsel "\nSelect first object or Exit?[Exit]:<Exit>")) ... Там правда не entsel а ssget используется... Код на работе, к сожалению. Буду пробовать, спасибо VVA! Насчет битов, чтоб с ошибками не вылетало при неправильном вводе... Запретить пустой ввод, и ... все? |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
Сейчас кад не запустить, но можно попробовать (initget 169 "Да Нет Yes No _ Y N Y N") перед getpoint.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
проектировщик CТБ Регистрация: 03.03.2009
Сообщений: 28
|
День добрый!
Подскажите, пожалуйста, как лучше реализовать следуюющее: Есть программка на автолиспе, в которой выполняется цикл. Необходимо написать прерывание цикла по некоторой клавише или комбинации клавиш, при этом программа на автолиспе должна продолжить свою работу дальше. Правильно ли я понимаю, что нужно писать макрокоманду для "привязки" некоторого действия к комбинации клавиш, причем писать макрокоманду нужно внутри той же программы? И еще вопрос: во многих языках программмирования имеется возможность устанавливать "метки" на строчки и при необходимости перейти к необходимой строчке, которую пометили, из любой точки программы. Есть ли такая возможность в автолисп? Поскольку с автолиспом я на "Вы", буду благодарна за простые и понятные новичку ссылки по теме) Если не очень хорошо объяснила, что нужно, то вот: (начало программы() (начало функции "клавиша"() (если нажаты клавиши "ST" (setq условие2 nil)) ) (while (условие1) (программа что-то делает в цикле 1) (setq условие2 T) (while (условие2) (программа что-то делает в цикле 2) ) ) ) Т.е. если в процессе выполнения цикла2 будут нажаты клавишы ST, произойдет выход из цикла. |
|||
![]() |
|
||||
Насчет меток: тоже озадачился этим вопросом, когда начинал изучение ЛИСПа. В фортране: goto <метка> и переход на нужную строку. Тут такого нет, поэтому программы по другому приходится выстраивать. Честно говоря, особых сложностей из-за отсутствия такого оператора безусловного перехода не возникало.
Насчет цикла : делал похожую программу, выкрутиться можно так - в процессе выполнения цикла 2 выводится запрос: введите "Да" или "Нет" (к примеру). Если "Да" - условию 2 присваивается Т, если Нет - присваивается nil и цикл завершается. |
||||
![]() |
|
||||
проектировщик CТБ Регистрация: 03.03.2009
Сообщений: 28
|
Этот вариант применять бы не хотелось изначально, потому что нажимать триста раз ентер в цикле - монтонно слишком и времени займет много.
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
vovkam, мой AutoCAD 2008 не знает функции sqr, это раз. Второе: где и что конкретно не работает?
Aminka, а что конкретно хочется сделать-то? Полный код кусков "что-то делать" покажи.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
E-degtyarev, vovkam говорит, что во втором случае код работает. А sqr там используется. Значит, она уже определена и загружена.
--- Добавлено: методика записи Код:
Короче, код написан "не для лиспа" ![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
vovkam, с тебя значение переменной g:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 16.01.2009
Сообщений: 15
|
Добрый день (или вечер) уважаемые корифеи Лиспа!
Я еще только как месяц пробую освоить программирование на Лиспе. Маленькие программки вроде как освоил и тут замахнуться (дурень думками богат?) на расчет эвакуации людей из здания. Может это уже кто и без меня придумал, но я об этом пока не знаю. Задумка была такова чтобы можно было нарисовать пути эвакуации людей на чертеже, ввести количество людей в чертёж и в таблице получить все результаты вычислений, и в конце время эвакуации из здания. Это была такая задумка, а сталкнулся я с проблемой, когда пытался ввести длину участка маршрута в таблицу, для дальнейших вычислений. Длину участка изображенного до этого графически я так и не смог вычислить и ещё не смог научиться определять длины различных участков одного маршрута. Пока что дальше не пошел. Если кто может подсказать, каким образом можно информацию о длине линий из чертежа вставить в таблицу Автокада (или экселя) , для использования в вычислениях, то очень буду тому благодарен. И вообще возможно ли это в Лиспе? |
|||
![]() |
|
||||
проектировщик CТБ Регистрация: 03.03.2009
Сообщений: 28
|
Цитата:
Код:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
не вникая в код (поздновато уже):
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Цитата:
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
По идее надо:
Код:
__________________
Моя библиотека 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 |