| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Autolisp: как получить последний ввод (команду, координаты точек)?

Autolisp: как получить последний ввод (команду, координаты точек)?

Ответ
Поиск в этой теме
Непрочитано 04.12.2012, 13:45 #1
Autolisp: как получить последний ввод (команду, координаты точек)?
studentarh
 
Регистрация: 22.07.2012
Сообщений: 14

В Автокаде сохраняется ввод (последняя введенная команда, координаты нескольких последних точек, указанных на чертеже). Как получить этот ввод средствами autolisp (для использования в программе)?
Просмотров: 12435
 
Непрочитано 04.12.2012, 15:21
#2
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,835
<phrase 1=


"Огласите пожалуйста весь список!" (с) Операция Ы и др. приключения Шурика
Препод поставил задачу вот так, как ты написал?
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Непрочитано 04.12.2012, 15:49
#3
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


где вы такие беретесь
gomer вне форума  
 
Автор темы   Непрочитано 04.12.2012, 19:55
#4
studentarh


 
Регистрация: 22.07.2012
Сообщений: 14


Да не препод, для себя нужно.
Когда черчу в автокаде, указываю точки на чертеже (вручную), так вот, команда, которая мне нужна (для редактирования), должна использовать эти точки, для чего их и надо получить средствами автолиспа (на автолиспе предполагается саму команду писать).

Вручную можно получить координаты последних указанных точек через меню правой кнопки в процессе выполнения команды, например при черчении отрезка (пункт "Последний ввод"), по крайней мере так в 2012 автокаде. Последние команды тоже нужны, только для других целей (их можно получить вручную также после завершения команды).

Но главное - координаты точек, нужен их список, причем элементы в списке (точки) должны быть в том порядке, в котором были указаны при черчении. Команда, которая мне нужна, будет выполняться как раз в процессе черчения, то есть в процессе выполнения другой команды, если при этом можно получить точки вручную, значит и программа может их как-то получить.
studentarh вне форума  
 
Непрочитано 04.12.2012, 20:46
#5
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от studentarh Посмотреть сообщение
для себя нужно
Они растворяются в предзакатном тумане...
Но скажу тебе по секрету, о, мой юный падаван, чтоб ты смог постичь дзен рисования палочек и кружочков на забытом языке автолисп, некоторые из них хранятся в созданных тобой же объектах
Offtop: сорри
gomer вне форума  
 
Автор темы   Непрочитано 05.12.2012, 07:58
#6
studentarh


 
Регистрация: 22.07.2012
Сообщений: 14


Ну, мне нужны именно те точки, которые я указывал при черчении.
Иногда понимаешь, что чертишь не то, уже после того как начертил. При этом ошибка может быть, например, только в настройках инструмента, а надо все отменять, перенастраивать и потом чертить заново. Вот повторное вычерчивание после перенастройки (указание тех же точек) хотелось бы автоматизировать. Как бы "применить", но с новыми настройками и без завершения команды черчения. Если для этого есть стандартные средства в автокаде, хотелось бы знать, какие именно.

Последний раз редактировалось studentarh, 05.12.2012 в 08:03.
studentarh вне форума  
 
Непрочитано 05.12.2012, 08:41
#7
mamuk


 
Регистрация: 06.05.2010
Сургут
Сообщений: 248


Что имеете ввиду под настройками инструмента?
mamuk вне форума  
 
Автор темы   Непрочитано 05.12.2012, 09:30
#8
studentarh


 
Регистрация: 22.07.2012
Сообщений: 14


Его параметры.
Например, при создании окна в архитектурном автокаде или других подобных объектов через настройки инструмента (в командной строке или в меню свойств) можно изменить размеры будущего объекта и другие его свойства (для окна - высота подоконника, процент открывания и т. п.). Конечно, можно сначала вычертить "не то", потом это выделить и отредактировать по тем же свойствам, но это неудобно, а в некоторых случаях вообще не подходит (например, параметр смещения привязки по свойствам уже созданного объекта не изменить, а это важный параметр).

Наверное можно воспроизводить макрос для "применения", но такой макрос должен быть сначала записан а потом запущен в нужный момент автоматически (иначе проще будет вычертить заново вручную, чем работать с макросами).

Последний раз редактировалось studentarh, 05.12.2012 в 09:45.
studentarh вне форума  
 
Непрочитано 05.12.2012, 09:34
#9
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848


Вообще-то получить список точек по указанию пользователя совсем не сложно:
Код:
[Выделить все]
 (defun getpoints (/ pt lst)
  (while (and (not (vl-catch-all-error-p
                     (setq pt (vl-catch-all-apply
                                (function
                                  (lambda ()
                                    (getpoint "\nSelect point <Cancel> : ")
                                    ) ;_ end of lambda
                                  ) ;_ end of function
                                ) ;_ end of vl-catch-all-apply
                           ) ;_ end of setq
                     ) ;_ end of vl-catch-all-error-p
                   ) ;_ end of not
              pt
              ) ;_ end of and
    (setq lst (cons pt lst))
    ) ;_ end of while
  (reverse lst)
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.12.2012, 09:46
#10
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,408
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от studentarh Посмотреть сообщение
Если для этого есть стандартные средства в автокаде, хотелось бы знать, какие именно.
Нет. Во всяком случае на lisp'е ты к ним доступа не получишь.
Александр Ривилис вне форума  
 
Непрочитано 05.12.2012, 12:18
#11
john644


 
Регистрация: 06.05.2009
Сообщений: 18


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Нет. Во всяком случае на lisp'е ты к ним доступа не получишь.
Почему нет? Можно использовать расширенные данные примитива.
john644 вне форума  
 
Непрочитано 05.12.2012, 12:27
#12
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,408
Отправить сообщение для Александр Ривилис с помощью Skype™


john644, Какое отношение имеют расширенные данные примитива к имени последней введенной команды или последним введенным точкам?
Впрочем ТС (IMHO) совершенно не понимает ни что ему нужно, ни как можно работать в AutoCAD.
Александр Ривилис вне форума  
 
Непрочитано 05.12.2012, 13:10
#13
john644


 
Регистрация: 06.05.2009
Сообщений: 18


Александр Ривилис
Просто нумеруете примитивы. Я в свое время так и делал, а насчет ТС согласен Они сами не знают, чего они хочят(с)

Последний раз редактировалось john644, 05.12.2012 в 13:25.
john644 вне форума  
 
Автор темы   Непрочитано 05.12.2012, 14:59
#14
studentarh


 
Регистрация: 22.07.2012
Сообщений: 14


Надо получить точки, которые пользователь уже ввел, функция, предлагающая указать точки на экране не подходит.
Насчет расширенных данных примитива и нумерации примитивов не понял. Как именно через эти данные получить последние введенные точки?
studentarh вне форума  
 
Непрочитано 05.12.2012, 15:08
#15
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от studentarh Посмотреть сообщение
Например, при создании окна в архитектурном автокаде или других подобных объектов через настройки инструмента (в командной строке или в меню свойств) можно изменить размеры будущего объекта и другие его свойства (для окна - высота подоконника, процент открывания и т. п.). Конечно, можно сначала вычертить "не то", потом это выделить и отредактировать по тем же свойствам, но это неудобно, а в некоторых случаях вообще не подходит (например, параметр смещения привязки по свойствам уже созданного объекта не изменить, а это важный параметр).
Мне кажется или речь о динамических блоках?
gomer вне форума  
 
Непрочитано 05.12.2012, 15:09
#16
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,408
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от studentarh Посмотреть сообщение
Насчет расширенных данных примитива и нумерации примитивов не понял. Как именно через эти данные получить последние введенные точки?
Никак. Перечитай мой ответ #10
Александр Ривилис вне форума  
 
Непрочитано 05.12.2012, 15:18
#17
john644


 
Регистрация: 06.05.2009
Сообщений: 18


Цитата:
Сообщение от studentarh Посмотреть сообщение
Надо получить точки, которые пользователь уже ввел, функция, предлагающая указать точки на экране не подходит.
Уважаемый студент!
Вы сейчас написали, что хочу работать в Автокаде, НО АВТОКАД МЕНЯ НЕ УСТРАИВАЕТ( в Автокаде существует функция ssget в различных вариациях и другой нет)
Цитата:
Насчет расширенных данных примитива и нумерации примитивов не понял. Как именно через эти данные получить последние введенные точки?
Ну для начала надо знать, что это такое расширенные данные(это было написано для Александр Ривилис, поскольку он это знает.)
Поэтому чтобы не получать глупых ответов, не задавайте глупых вопросов. Объясните задачу полностью, тогда те незнания Автокада будут заметны, но некритичны.
Цитата:
Сообщение от Александр Ривилис
Никак. Перечитай мой ответ #10
Ну Вы неправы. Порядок команд и номер ввода точек при помощи расширенных данных сделать можно. Другой вопрос зачем

Последний раз редактировалось john644, 05.12.2012 в 15:43.
john644 вне форума  
 
Автор темы   Непрочитано 05.12.2012, 15:34
#18
studentarh


 
Регистрация: 22.07.2012
Сообщений: 14


Нет, окно в данном случае - не блок.
Я не знаю, что такое "расширенные данные примитива", поэтому и написал, что не понял, то есть не понял, ни что это, ни, главное, как именно это поможет в решении моей задачи (ну я думал, что о решении как раз пишут). А задачу, как мне кажется, я полностью объяснил в своих первых сообщениях. Чтобы объяснять дальше, мне надо знать, что именно не понятно в том, что я уже писал.

Последний раз редактировалось studentarh, 05.12.2012 в 15:41.
studentarh вне форума  
 
Непрочитано 05.12.2012, 15:40
#19
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,408
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от studentarh Посмотреть сообщение
А задачу, как мне кажется, я полностью объяснил в своих первых сообщениях.
Еще раз (но уже последний) повторюсь: "в том виде, как задача поставлена средствами lisp она не имеет решения."
Александр Ривилис вне форума  
 
Непрочитано 05.12.2012, 15:49
#20
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


studentarh, ты б хоть файлик приложил что там рисуешь
gomer вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Autolisp: как получить последний ввод (команду, координаты точек)?

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить координаты рамки text? mamuk Программирование 21 22.08.2010 13:26
Как получить экранные координаты курсора +Alex+ Программирование 12 07.07.2010 17:38
Как получить координаты точек отображенных на четеже в виде таблици?? nix-- AutoCAD 10 22.05.2009 13:41
Ввод третьей координаты Mazai Программирование 12 30.08.2008 20:50
координаты вершин выбранной полилинии на VB? как получить ssv22 Программирование 5 17.07.2008 00:01