| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
>AlexeySh
Только если начинаете изучать LISP, то учитесь делать сразу правильно и надежно - переучиться будет трудно. Приводимые примеры расценивайте как прототипы "промышленных". В них, для простоты понимания, Profan опустил ряд важных моментов: 1. Что будет, если будет выбран не отрезок? 2. Что будет, если будет нажата ESC? 3. А если "реал" неправильно введут? 4. А если пустой ввод сделают? 5. А если будет включена постоянная привязка? 6. А если точку смещения как-то не эдак зададут? Например, на продолжении отрезка. Незачем внутрь команды в данном случае вставлять pause (источник ошибок пользователя). Надо до функции command запросить точку, проверить правильность её ввода, и, возможно, совместить указание точки с запросом величины смещения. Да и вообще command надо заменить на vl-cmdf и обернуть ловушкой ошибок. Функция command устарела, она всегда возвращает NIL, то есть не дает возможность оценить выполнилась она или нет. Чтобы не придумывать ещё украинских и грузинских вариантов, имена команд и опций надо всегда писать в английском варианте независимо от локализации AutoCAD с префиксом _. А уж текстовые сообщения - на любой мове. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
ShaggyDoc, хочу дополнить: если лисп применять в AutoCAD LT + LT Extender или, например, в BricsCAD'e, то более чем возможен вариант возврата vl-cmdf значения nil независимо от результата выполнения. Учитывая возможный зоопарк софта, я б не стал завязываться на возвращаемое значение, а при первой возможности вообще отказывался бы от командных методов. Независимо от того, как они вызываются.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 25.12.2005
Москва
Сообщений: 13,627
|
ShaggyDoc, какого черта. Вы обрушиваете на человека массу информации о проблемах, до которых он еще не вырос. Вы предлагаете ему выполнить пятилетку в 2 дня? Шаг за шагом - и все образуется. Шишки тоже бывают полезны.
|
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Цитата:
"Масса информации" - это только намёк на проблемы. Чтобы быть готовым к ним. Вот если бы я рабочий код привел, то в нем действительно разбираться было бы трудно начинающему. |
|||
|
||||
Регистрация: 25.12.2005
Москва
Сообщений: 13,627
|
Для ShaggyDoc.
Конечно, трудно было бы. И я сознательно все упростил. Почему? Да потому, что пока у AlexeySh частная задача: как переместить отрезок параллельно самому себе. Программа моя работает и "если" тут не причем. Esc ни на что в сущности не повлияет. Привязки при выполнении команды "_OFFSET" ("ПОДОБИЕ") не работают. Не попал на объект? Не страшно. Вот если бы я не ввел функцию (if), тогда другое дело. Хотя, конечно, надо было записать так: Код:
В отношении (pause). Наоборот, в данном случае, применение ее оправдано, потому что никаких ошибок в указании направления смещения быть не может, а привязки, как я уже написал, в этот момент не действуют. Да и вообще, дело здесь в другом. Цитата:
|
|||
|
||||
Регистрация: 25.12.2005
Москва
Сообщений: 13,627
|
Для AlexeySh.
Цитата:
Необязательно устанавливать английский AutoCAD, достаточно иметь файл acad_acr.chm из его Help. |
|||
|
||||
Регистрация: 26.11.2007
Сообщений: 60
|
Вот что у меня получилось.
Сделано для частной задачи. Область не разрывается при перемещении отрезка. Код:
1) Проверку на выбранный объект, ввод данных пользователя 2) Проверку на включенную привязку 3) Расчет угла направления перемещения (my_angle) Да,..., нужно книжицу по AUTOLISPу покупать. |
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Все равно программа вылетит, если "шагая" для подбора площади ты выйдешь за границы отрезка.
Предлагаю для такого случая воспользоваться XLINE (Прямая). Вижу 2 преимущества: 1. контур всегда будет пересекаться, как бы далеко ты не шагнул 2. в 10 поле xline хранится точка, а в 11 вектор направления (то есть угол). Добавив к нему 90 градусов, получишь перпендикуляр.
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ламерские вопросы по LISP и DCL | TheBuTeK | LISP | 7 | 03.07.2016 22:15 |
Подскажите, существуют ли практические руководства по Lisp? | vn | LISP | 261 | 26.11.2015 13:27 |
Библиотека доступа к содержимому растров из LISP - существуе | kp+ | LISP | 6 | 16.10.2007 21:45 |
Как вывести текст в model из приложения написанного на lisp? | paradoxvaha | AutoCAD | 3 | 16.04.2007 03:54 |
загрузка DOS прог через LISP | Gaa | LISP | 15 | 12.08.2005 19:19 |