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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Сделать при выборе объектов Enter соответствующим <Все>

Сделать при выборе объектов Enter соответствующим <Все>

Ответ
Поиск в этой теме
Непрочитано 17.07.2021, 14:12 #1
Сделать при выборе объектов Enter соответствующим <Все>
АлексЮстасу
 
топограф, технолог
 
Москва
Регистрация: 24.05.2009
Сообщений: 3,031

Вопрос от профана в лиспе.
Как на лиспе сделать выбор объектов, при котором, если не было выделения курсором, но нажат Enter, то выбиралось все?
Если же было выделение курсором, то все как обычно - Enter подтверждает-завершает выбор указанного.
Сейчас при обычном выборе, если не было выделения курсором, то Enter означает пустой выбор.
Обычно:
Цитата:
Выберите объекты:
Сделать:
Цитата:
Выберите объекты <Все>:
Например, есть такой фрагмент кода для выбора:
Код:
[Выделить все]
       (initget "Selection All _Select All")
      (if (eq (getkword "\nObject Selection [Selection/All] <All>: ") "Select")
        (setq js (ssadd) js (ssget '((-3 ("*")))))
        (setq js (ssadd) js (ssget "_X" '((-3 ("*")))))
      )
Как сделать, чтобы в комстроке было:
Цитата:
Select objects <All>:
При этом, чтобы можно было выбирать курсором, а можно сразу нажать Enter для выбора всего.
__________________
количество моих сообщений не говорит о знании Автокада
Просмотров: 3333
 
Непрочитано 19.07.2021, 17:44
1 | #2
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 465


Ну так и осталось-то пару строк дописать...
Просто сделай проверку полученного набора.
Если он пустой (был нажат Ентер), то создать
новый набор, запихав в него "Всё".
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Автор темы   Непрочитано 19.07.2021, 20:36
#3
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,031


Я в лиспе профан совсем.

Кажется, что на основе моего фрагмента так не сделать.

Я пытаюсь сократить число действий пользователей.
Т.е. чтобы режим выбора объектов был уже активен. И не нужно было выбирать-вводить "S", "Selection", чтобы оказаться в режиме выбора курсором.
Хотелось бы, чтобы сразу было как при обычном выборе курсором.
Но при этом в комстроке была и подсказка про Enter == <All>.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 20.07.2021, 08:59
1 | #4
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,679


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Как сделать, чтобы в комстроке было
ну только если в комстроке.
Код:
[Выделить все]
 (setvar 'nomutt 1)
(princ "\nSelect objects <All>:")
(if (null (setq entities_ss (ssget '((-3 ("*")))))) (setq entities_ss (ssget "_X" '((-3 ("*"))))))
(setvar 'nomutt 0)
koMon вне форума  
 
Непрочитано 20.07.2021, 14:40
1 | #5
StupidDuck


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


nomutt интересная переменная, спасибо

(cond
((null (setq ss (ssget))) (vla-zoomextents (vlax-get-acad-object)) (setq ss (ssget "_X")) (vla-zoomprevious (vlax-get-acad-object)))
);cond

можно добавить зум, если не все обьекты на экране
StupidDuck вне форума  
 
Автор темы   Непрочитано 20.07.2021, 19:23
#6
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,031


Цитата:
Сообщение от koMon Посмотреть сообщение
ну только если в комстроке.
Получилось! Постепенно вставлю во всех лиспы, которыми пользуюсь.
Цитата:
Сообщение от StupidDuck Посмотреть сообщение
можно добавить зум, если не все обьекты на экране
Я же профан!
В какое место это прикрутить, допустим, к фрагменту от koMon?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 20.07.2021, 20:21
#7
Кулик Алексей aka kpblc
Moderator

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


StupidDuck, ssget с ключом "_X" выбирает вообще все объекты на всех листах и в модели.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.07.2021, 21:13
#8
StupidDuck


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


точно, спасибо. АлексЮстасу, в коде от koMon ничего менять не надо.

судя по '((-3 ("*")), это в продолжении нового тренда XData. АлексЮстасу, позвольте поинтересоваться (здесь, не в другой теме), какие фактические планы использования хдата, ввиду некторой ограниченности по составу и структуре хдата.
StupidDuck вне форума  
 
Автор темы   Непрочитано 20.07.2021, 21:51
#9
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,031


Цитата:
Сообщение от StupidDuck Посмотреть сообщение
судя по '((-3 ("*")), это в продолжении нового тренда XData
А! Т.е. в лиспах не для XData с этим придется еще повозиться.
Цитата:
Сообщение от StupidDuck Посмотреть сообщение
позвольте поинтересоваться (здесь, не в другой теме), какие фактические планы использования хдата, ввиду некторой ограниченности по составу и структуре хдата.
У меня - никаких. У меня в Map/Civil есть средства для описательных данных без этих ограничений. И там есть штатные и дополнительные инструменты для их удобного и полноценного использования.
Меня интересуют XData как аналог, пусть и меньше употребимый из-за ограничений. Но зато в любом, в базовом AutoCAD.
До совсем недавнего момента - месяц прошел, максимум - я много лет был убежден всем нашим сообществом, что для XData есть только две неудобные команды из Express. А оказалось, что есть множество лиспов.
Хочу собрать и доработать до общеупотребительного вида инструменты работы с XData. Чтобы получился общедоступный минимально необходимый набор команд для XData.
(С помощью программистов, конечно, поскольку я - совсем нет).
Чтобы пользователи AutoCAD могли применять и эту ценную его возможность, которой они лишены из-за отсутствия инструментов.
Практический для меня смысл - получать от исполнителей с базовым AutoCAD (а таких подавляющее большинство) данные с описательной информацией, аналогичной нашим в Map/Civil.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 21.07.2021, 00:46
#10
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,038


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Чтобы пользователи AutoCAD могли применять и эту ценную его возможность, которой они лишены из-за отсутствия инструментов.
были бы востребованы - давно были бы написаны за десятки лет активного использования акада.

Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Практический для меня смысл - получать от исполнителей с базовым AutoCAD (а таких подавляющее большинство) данные с описательной информацией, аналогичной нашим в Map/Civil.
а у исполнителей будет на это время - заносить данные с описательной информацией, пользуясь винегретом из собранных по миру программ?
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Сделать при выборе объектов Enter соответствующим <Все>

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При выборе объектов стало появляться небольшое окошко. Как убрать? Pilot AutoCAD 9 01.03.2019 11:00
Предварительный выбор объектов с фильтром. Do$ Программирование 11 17.04.2013 19:49
как сделать трехмерный чертеж плоским без потери объектов? tapych AutoCAD 11 22.01.2010 08:59
Как в _List (СПИСОК), _DBList (БДСПИСОК) на "Нажмите ENTER для продолжения:" сделать автоматическое нажатие Sapsan Программирование 5 22.01.2010 01:02
Как сделать 3D путь из объектов (линий и дуг), нележащих в одной плоскости Ухряб AutoCAD 5 21.01.2010 12:25