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

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

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

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

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

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,834
<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
С.-Петербург
Сообщений: 40,406


Вообще-то получить список точек по указанию пользователя совсем не сложно:
Код:
[Выделить все]
 (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,413
Отправить сообщение для Александр Ривилис с помощью 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,413
Отправить сообщение для Александр Ривилис с помощью 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,413
Отправить сообщение для Александр Ривилис с помощью 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,413
Отправить сообщение для Александр Ривилис с помощью Skype™


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

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


studentarh, ты б хоть файлик приложил что там рисуешь
gomer вне форума  
 
Автор темы   Непрочитано 05.12.2012, 15:50
#21
studentarh


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


Да, это я наконец понял (что решения нет на лиспе). Ну, значит, другими средствами надо попробовать решить. Я просто думал, что мне здесь помогут.
Насчет файла с чертежом: ну я ведь не про определенный чертеж писал, только старался приводить конкретные примеры, как в случае с окном.
studentarh вне форума  
 
Непрочитано 05.12.2012, 15:55
#22
john644


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


Цитата:
Сообщение от studentarh Посмотреть сообщение
что именно не понятно в том, что я уже писал.
Что именно Вас не устраивает в выборе точек?
john644 вне форума  
 
Автор темы   Непрочитано 05.12.2012, 16:26
#23
studentarh


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


Какой выбор точек? Если это про функцию (getpoints), так я же говорю, она предлагает указать точки на экране, а надо получить уже указанные при черчении.
Предполагается так:
1) черчу (при этом указываю точки)
2) замечаю, что начертил не то, отменяю (при этом подсчитывается количество отмен)
3) перенастраиваю инструмент
4) автоматически указываю те же точки, что в пункте 1), количество точек определяется по количеству отмен из пункта 2), а координаты точек должны сохраняться при черчении в пункте 1).
Так вот, я думал, раз точки сохраняются автоматически в последнем вводе, их можно просто оттуда взять. Но раз нельзя, значит надо их при черчении сохранить, то есть программа должна это выполнять. Но если использовать (getpoints) еще при черчении, то вместо черчения я буду указывать точки для этой функции. И даже если функция будет передавать точки автокаду (чтобы в автокаде все-таки создавались объекты при указании точек), все равно не подходит, так как при выполнении такой функции у меня простой курсор на экране и отсутствует изображение будущего объекта (которое есть при обычном черчении) - получается черчение вслепую, что очень плохо.
studentarh вне форума  
 
Непрочитано 05.12.2012, 16:37
#24
john644


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


Я говорил о выборе точек( функция ssget), а не задании точек ( функция getpoint) Теперь выясняется, что Вы не чертите точки, Вы чертите различные примитивы ( линии, трехмерные фигуры и т.д.) Это соверiенно разные вещи. Выбор последнего введенного примитивы (enget (entlast)), а из него уже извлекаете точки.
john644 вне форума  
 
Непрочитано 05.12.2012, 16:42
#25
Александр Ривилис

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


Цитата:
Сообщение от studentarh Посмотреть сообщение
1) черчу (при этом указываю точки)
Допустим.
Цитата:
Сообщение от studentarh Посмотреть сообщение
2) замечаю, что начертил не то, отменяю (при этом подсчитывается количество отмен)
Допустим. Только некоторые команды имеют внутренние средства отмены, а некоторые нет.
Цитата:
Сообщение от studentarh Посмотреть сообщение
3) перенастраиваю инструмент
Чего-чего?
Цитата:
Сообщение от studentarh Посмотреть сообщение
4) автоматически указываю те же точки, что в пункте 1)
Это как ты себе представляешь? Если это делаешь ты сам, то каким образом? Если это делает программа, то как она должна знать какую команду и с какими опциями запустить?

Резюме: Незнание возможностей AutoCAD и средств программирования под него приводит к таким вот темам на форуме.
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 05.12.2012, 17:26
#26
studentarh


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


Извлечение точек из созданного примитива не всегда поможет, так как точки, указанные при его создании, могут не совпадать ни с одной точкой самого примитива. Если я что-то неправильно понял насчет этого, объясните пожалуйста подробнее.

Цитата:
Сообщение от mamuk Посмотреть сообщение
Что имеете ввиду под настройками инструмента?
- Этот вопрос (насчет перенастройки) уже был, я пытался объяснить подробно на примере с созданием окна в архитектурном автокаде.

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

Последний раз редактировалось studentarh, 05.12.2012 в 17:36.
studentarh вне форума  
 
Непрочитано 05.12.2012, 17:34
#27
john644


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


Цитата:
Сообщение от studentarh Посмотреть сообщение
так как точки, указанные при его создании, могут не совпадать ни с одной точкой самого примитива.
Это как? Что Вы имеете ввиду? Если имеете ввиду, что существует формула перевода от заданной точки к точки примитива, так что Вас смущает. Что человек сделал, то человек завсегда и разломать может (С)
john644 вне форума  
 
Автор темы   Непрочитано 05.12.2012, 17:52
#28
studentarh


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


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

Последний раз редактировалось studentarh, 05.12.2012 в 18:19.
studentarh вне форума  
 
Непрочитано 05.12.2012, 17:55
#29
john644


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


Цитата:
Сообщение от studentarh Посмотреть сообщение
Чтобы учесть это автоматическое уточнение,
А зачем Вам нужно это уточнение? Вам шашечки или ехать?
john644 вне форума  
 
Автор темы   Непрочитано 05.12.2012, 18:19
#30
studentarh


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


Действительно, соседние объекты наверное не нужны и уточнение тоже, я как-то не подумал. Но все-таки при работе разных инструментов будут разные формулы расчета. То есть придется понять принцип построения каждого объекта отдельно, затем это описать в программе и еще включить в программу функцию определения того, какой объект в данном случае создан (чтобы она выбрала нужный способ построения в зависимости от объекта). Ну это тоже, мне кажется, довольно сложно, и, главное, есть вероятность, что не все будет учтено, и в программе будут ошибки, которые сложно найти и устранить.
studentarh вне форума  
 
Непрочитано 05.12.2012, 18:32
#31
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Про "настройку инструмента" - это да, это лихо. До этого даже Гаврила не додумался.
Profan вне форума  
 
Непрочитано 05.12.2012, 19:25
#32
Александр Ривилис

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


studentarh,
Александр Ривилис вне форума  
 
Непрочитано 05.12.2012, 19:32
#33
gomer

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


studentarh, хватит мурочку водить, скажи что конкретно тебе надо
gomer вне форума  
 
Непрочитано 06.12.2012, 08:28
#34
mamuk


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


Offtop: интерессно просто невозможно!!!!
mamuk вне форума  
 
Автор темы   Непрочитано 06.12.2012, 08:36
#35
studentarh


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


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

Последний раз редактировалось studentarh, 06.12.2012 в 08:44.
studentarh вне форума  
 
Непрочитано 06.12.2012, 09:22
#36
john644


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


Цитата:
Сообщение от studentarh Посмотреть сообщение
Да я говорил, что надо конкретно, в самом первом сообщении
Вы так особенно ничего и не сказали. Программирование конечно делается некоторое время. Но то что Вы хотите делается легко и при чем несколько вариантов. Для того чтобы решить Вашу задачу напишите программку для прилагаемого примера из набора линии 1 сделать 4 2 - это укоротить одну линию 3 красные перенести и 4 красные повернуть на угол 30 градусов Многие из здесь присутствующих сделают это за пару часов. Вам понадобиться несколько суток, но выбирать вариант Вам. А если хотите пришел на работу шелкнул пальцами и сказал Чертеж, то это на 3 круга ада а не на приличные форумыф.
Вложения
Тип файла: dwg
DWG 2000
Чертеж1.dwg (141.2 Кб, 1898 просмотров)
john644 вне форума  
 
Непрочитано 06.12.2012, 12:50
#37
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Profan Посмотреть сообщение
Про "настройку инструмента" - это да, это лихо. До этого даже Гаврила не додумался.
Есть такая возможность в вертикальных решениях.
Миниатюры
Нажмите на изображение для увеличения
Название: Редактирование команд.jpg
Просмотров: 89
Размер:	372.4 Кб
ID:	91909  
Do$ вне форума  
 
Непрочитано 06.12.2012, 12:57
#38
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Есть, конечно. Да и в самом AutoCAD'е можно настроить инструмент, расположенный на палитре. Но здесь-то о каком инструменте идет речь? О таком, который еще надо выдумать?
Profan вне форума  
 
Непрочитано 13.12.2012, 09:11
#39
mamuk


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


А можно с помощью Lisp создать объект как на ARX!!? хотя бы чтоб объект работал пока сам lisp работает? Что то типа динамического блока?
mamuk вне форума  
 
Непрочитано 13.12.2012, 09:20
#40
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Offtop: Вопрос очень в тему
Do$ вне форума  
 
Непрочитано 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,406


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


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


Работает. Спасибо!
samos вне форума  
Ответ
Вернуться   Форум 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