Autolisp: как получить последний ввод (команду, координаты точек)? - Страница 3
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

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

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

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

В Автокаде сохраняется ввод (последняя введенная команда, координаты нескольких последних точек, указанных на чертеже). Как получить этот ввод средствами autolisp (для использования в программе)?
Просмотров: 13646
 
Непрочитано 13.12.2012, 10:30
#41
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от mamuk Посмотреть сообщение
хотя бы чтоб объект работал пока сам lisp работает?
можно что-то подобное при помощи реакторов.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 13.12.2012, 10:32
#42
mamuk


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


Попытался представить чего автор хочет, вот подумал что инструмент в его понимании это некий объект который формируется с помощью программы например Лисп становится статическим блоком и его надо отредактировать с помощью того же лиспа, а чтоб его отредактировать нужны прежние введенные данные, о которых говорил автор.
mamuk вне форума  
 
Непрочитано 12.08.2013, 18:54
#43
mechos

Ведущий архитектор
 
Регистрация: 17.01.2013
Москва
Сообщений: 31


Понимаю, что рискую быть названным некропостером, но всё-же не вижу смысла создавать целую новую тему и спрошу здесь:
Есть ли возможность через макросы или lisp ввести еще раз уже введенную в команде точку именно в процессе выполнения команды ?

Объясняю, зачем мне это нужно: Есть команда Rotate, она запрашивает базовую точку, потом опции [Copy][Reference] и при выборе референс - начальный и желаемый угол. Угол я задаю графически между направлениями линий, причем в 90% случаев первая линия начинается как раз с той базовой точки, что я выбирал в начале команды.
То есть хотелось бы добиться поведения команды rotate, как в Архикаде, если кто в курсе (выделяем объект, нажимаем кнопку/хоткей команды Rotate - она уже по-умолчанию идет с опцией Reference и запрашивает опорный и конечный угол, выделяем точку вокруг которой крутить, далее - "тык" откуда крутить и "тык" куда - Всё !)

По-идее, экономия всего в один клик, но очень назойливый..

Макросы предпочтительнее, но скорее всего через них это невыполнимо..
Даже через лисп - с ходу не понимаю, как получить данные о координатах этой уже введенной точки (точка введена, но никакого примитива она не построила и координаты нужно получить, находясь еще в действующей команде rotate).
Предполагаю, что задача может быть решена средствами .NET, но это для меня пока совсем незнакомая среда..

Последний раз редактировалось mechos, 12.08.2013 в 19:04. Причина: грамматика )
mechos вне форума  
 
Непрочитано 12.08.2013, 19:20
1 | #44
gomer

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


так?
Код:
[Выделить все]
 (if (and (setq ss (ssget))
	 (setq pt (getpoint "\nБазовая точка: "))
	 (setq an (getangle pt "\nБазовый угол: ")))
	   (command "_rotate" ss "" pt "_r" (/ (* an 180.0)pi) pause))
gomer вне форума  
 
Непрочитано 12.08.2013, 19:57
#45
mechos

Ведущий архитектор
 
Регистрация: 17.01.2013
Москва
Сообщений: 31


Да ! Именно так. Спасибо огромное !

Не с той стороны я пытался зайти и про существование "getangle" забыл совершенно
mechos вне форума  
 
Непрочитано 12.08.2013, 23:07
1 | #46
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от mechos Посмотреть сообщение
Макросы предпочтительнее, но скорее всего через них это невыполнимо.
Я бы так не сказал. Можно это забить на кнопку
Код:
[Выделить все]
(command "_rotate" (ssget) "" PAUSE "_r" "@" PAUSE PAUSE)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 12.08.2013, 23:27
#47
mechos

Ведущий архитектор
 
Регистрация: 17.01.2013
Москва
Сообщений: 31


Цитата:
Сообщение от VVA Посмотреть сообщение
Я бы так не сказал. Можно это забить на кнопку
Код:
[Выделить все]
(command "_rotate" (ssget) "" PAUSE "_r" "@" PAUSE PAUSE)
Ухты ! Вообще прекрасно ! Интересный ход с собачкой, спасибо .
mechos вне форума  
 
Непрочитано 13.08.2013, 07:50
#48
gomer

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


имхо, макросы -- это то, что работает в ЛТ, если применяются лисп-выражения, то лучше использовать все преимущества лиспа
gomer вне форума  
 
Непрочитано 13.08.2013, 13:44
#49
mechos

Ведущий архитектор
 
Регистрация: 17.01.2013
Москва
Сообщений: 31


Цитата:
Сообщение от gomer Посмотреть сообщение
имхо, макросы -- это то, что работает в ЛТ, если применяются лисп-выражения, то лучше использовать все преимущества лиспа
Ну для меня разница еще и в том, что при работе на нескольких разных компьютерах, не объединенных сетью, надо следить не только за переносом cui файлов, но еще и не забывать держать на всех компах все актуальные *.lsp файлы, поэтому предпочитаю чтобы lsp файлов было как можно меньше..
mechos вне форума  
 
Непрочитано 15.08.2013, 11:52
#50
Эдуард

строительство
 
Регистрация: 16.01.2004
Петербург
Сообщений: 165
<phrase 1=


Привет.
Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Нет. Во всяком случае на lisp'е ты к ним доступа не получишь.
Не согласен.
1.Создаем Vlr-SysVar-reactor
2.Пишем функцию отклика на изменение переменной Lastpoint
3.Записываем в словарь или объект координаты точки (далее по желанию - можно добавить дату и время указания , хендл примитива (если он создан) и т.д.)
Основной вопрос - А зачем это надо ?
Эдуард вне форума  
 
Непрочитано 04.12.2024, 10:33
#51
samos


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


Пожалуйста, подскажите. Не могу врубиться.
Хочу чертить ломанную линию:
(vl-cmdf "_.line")
(vl-cmdf pause)
В этот момент ожидается щелчок мышью.
Делаю щелчок.
Как определить координаты точки щелчка?
Это необходимо для того, чтобы проверить привязку к другим примитивам и принятия решения - чертить или нет
samos вне форума  
 
Непрочитано 04.12.2024, 11:00
#52
Кулик Алексей aka kpblc
Moderator

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


(getvar "lastpoit"), кажется
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 04.12.2024, 12:15
#53
samos


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


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

Реклама i


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить координаты рамки 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