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

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

LISP. Повтор предидущего выбора элементов

Ответ
Поиск в этой теме
Непрочитано 18.10.2010, 20:50 #1
LISP. Повтор предидущего выбора элементов
Yuzer
 
Мозговой штурм
 
Рідна ненька - Україна, Харків
Регистрация: 26.10.2008
Сообщений: 5,705

Здравствуйте.
Подскажите пожалуйста где найти лисп, который бы повторил предидущий выбор элементов.
К примеру: долго и нудно выбирал кучу разных элементов, потом случайно нажал Esc и приходится заново их выискывать... А так бы нажал кнопуку и выбор повторился бы...
Offtop: Извиняюсь, что не на языке пергамистов выражаюсь - не силен в этом.
Просмотров: 16457
 
Непрочитано 18.10.2010, 21:00
#2
gomer

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


Код:
[Выделить все]
TIP1134.MNU:    SEL_SET.MNU   Selection Sets   (c)1995, Marc Stringer

***POP10
[Selection Sets]
[Selection A]^p(if (/= sela nil)(setq sela sela)(setq sela (ssget)));
[Selection B]^p(if (/= selb nil)(setq selb selb)(setq selb (ssget)));
[Selection C]^p(if (/= selc nil)(setq selc selc)(setq selc (ssget)));
[--]
[Clear Sel.A]^p(progn(setq sela nil)(prompt "Group A Cleared.")(terpri)(princ))
[Clear Sel.B]^p(progn(setq selb nil)(prompt "Group B Cleared.")(terpri)(princ))
[Clear Sel.C]^p(progn(setq selc nil)(prompt "Group C Cleared.")(terpri)(princ))
[Clear   All]^p(progn(setq sela nil selb nil selc nil)(prompt "All Groups Cleared.")(terpri)(princ))
gomer вне форума  
 
Автор темы   Непрочитано 19.10.2010, 00:15
#3
Yuzer

Мозговой штурм
 
Регистрация: 26.10.2008
Рідна ненька - Україна, Харків
Сообщений: 5,705


gomer, а можно краткое пояснение - что с ним делать?
Offtop: Как я понял defun тут не наблюдается...
Yuzer вне форума  
 
Непрочитано 19.10.2010, 00:25
#4
gomer

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


сохраняешь как SEL_SET.MNU
_menuload
загружаешь...
Появится новый пункт меню в строке меню...
Первые 3 подпункта либо создаешь либо пользуешься сохраненным набором,
Следующие 4 - чистишь наборы (обнуляешь)
gomer вне форума  
 
Автор темы   Непрочитано 19.10.2010, 00:50
#5
Yuzer

Мозговой штурм
 
Регистрация: 26.10.2008
Рідна ненька - Україна, Харків
Сообщений: 5,705


Малость не то, чего хотелось. Этот выбор нужно задавать через SEL_SET.MNU и тогда он "помнится".
Yuzer вне форума  
 
Непрочитано 19.10.2010, 00:58
#6
gomer

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


Например,
_move -> Selection A (выбрал объекты) -> _move -> Selection B (выбрал объекты) -> _rotate -> Selection A (повернул первый набор) -> copy -> Selection B (скопировал 2й набор) Не то?
gomer вне форума  
 
Автор темы   Непрочитано 19.10.2010, 01:03
#7
Yuzer

Мозговой штурм
 
Регистрация: 26.10.2008
Рідна ненька - Україна, Харків
Сообщений: 5,705


gomer, нужно изначально через select выбрать объекты, чтоб потом ими оперирывать. А мне нужно чтоб в памяти помнился последний выбор автоматически.Причем весь - начная от первого выбора до нажатия Esc.
Yuzer вне форума  
 
Непрочитано 19.10.2010, 01:19
#8
Кулик Алексей aka kpblc
Moderator

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


_.select _p
или
_.select _l
Не оно?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.10.2010, 05:53
#9
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


1. команда _Group
2. (Setq А (ssget)) где "А" имя набора. Вызов набора !А
Далее можно оперировать (не только в эту сессию) либо именем группы, либо (только в эту сессию) набором "A" а также другими наборами, имена которых задаются пунктом 2 (но кроме чистых цифр)
Vova вне форума  
 
Непрочитано 19.10.2010, 08:32
#10
gomer

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


Если я правильно понял... то нельзя... разве что через реакторы... но тут я пас...
gomer вне форума  
 
Непрочитано 19.10.2010, 11:01
5 | #11
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 575


Yuzer, попробуй так
Код:
[Выделить все]
(vl-load-com)
; Функция действия на событие описанное в реакторе
(defun pickfirstModified(reac data / )
  (if (cadr (ssgetfirst))
    (setq last_select_selection (cadr (ssgetfirst)))
    )
  )
;------------------------------------------------------------

; Реактор
(setq Misc_Reac (vlr-miscellaneous-reactor nil
          (list '(:VLR-pickfirstModified . pickfirstModified)
            )
          )
      )
;------------------------------------------------------------


;------------------------------------------------------------
; Пример вызова: get-last-select
(defun c:get-last-select()
  (if (= (type last_select_selection) 'PICKSET)
    (if (> (sslength last_select_selection) 0)
      (progn
    (sssetfirst nil last_select_selection)
    (prompt "\n Последный сформированный набор восстановлен в переменнной last_select_selection")
    )
      (prompt "\n Последный сформированный набор пустой")
      )
    (prompt "\n На чертеже еще не было сформировано ни одного набора")
    )
  (princ)
  )
;------------------------------------------------------------
Сохрани это в lsp-файл, загрузи или лучше вообще добавь в автозагрузку. В ком. строке ACad'а введи команду get-last-select, ну или повесь её на кнопку
__________________
cadtools

Последний раз редактировалось TararykovDG, 07.10.2011 в 11:24. Причина: добавлена строка (vl-load-com)
TararykovDG вне форума  
 
Автор темы   Непрочитано 19.10.2010, 19:31
#12
Yuzer

Мозговой штурм
 
Регистрация: 26.10.2008
Рідна ненька - Україна, Харків
Сообщений: 5,705


TararykovDG, то что доктор прописал!
Спасибо
Yuzer вне форума  
 
Непрочитано 04.10.2011, 11:43
#13
angel-fear

инженер-электрик
 
Регистрация: 21.10.2010
Краснодар
Сообщений: 134


Почему-то на некоторых компах, при прочих одинаковых условиях не пашет. Даже при выборе через TAB команда в списке не появляется?.. Кто знает почему?
angel-fear вне форума  
 
Непрочитано 04.10.2011, 12:14
#14
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 575


Цитата:
Сообщение от angel-fear Посмотреть сообщение
Почему-то на некоторых компах, при прочих одинаковых условиях не пашет. Даже при выборе через TAB команда в списке не появляется?.. Кто знает почему?
Как не пашет, что ACAD выдает, при вводе команды get-last-select? Что это неизветсная команда или еще что-то? Или не подсвечиваются ранее выбранные примитивы? И что значит на некоторых компах, и при прочих одинаковых условиях? И там и там осенью код запускали?
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 04.10.2011, 15:44
#15
angel-fear

инженер-электрик
 
Регистрация: 21.10.2010
Краснодар
Сообщений: 134


Винда одна (ХР) автокад один (2010) осенью, да )
Пишет неизвестная команда, хотя лисп 100% загружен.
На моем компе все работает... странности какие-то.
angel-fear вне форума  
 
Непрочитано 04.10.2011, 16:26
#16
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 575


angel-fear, на компе, где на работает код пробуй открыть lisp-файл в VLIDE и там в пошаговом режиме все отследить
Полезности в редакторе VLIDE
Полезности в редакторе VLIDE, часть 2
P. S. За "Полезности..." спасибо Кулик Алексей aka kpblc
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 06.10.2011, 10:11
#17
Евгений А.

Армспорт
 
Регистрация: 18.07.2006
Ейск
Сообщений: 355


тут обсуждалось .
"макрос попробуй (SSSETFIRST nil (ssget "_P")) " проще некуда!
Евгений А. вне форума  
 
Непрочитано 06.10.2011, 10:22
#18
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 575


Цитата:
Сообщение от Евгений А. Посмотреть сообщение
тут обсуждалось .
"макрос попробуй (SSSETFIRST nil (ssget "_P")) " проще некуда!
Евгений А., а теперь попробуйте выделять примитивы на рамкой, а по одному и в какой-то момент нажать Esc, а потом "макрос попробуй (SSSETFIRST nil (ssget "_P")) " проще некуда! и посмортеть что получиться. У Вас подсветиься только первый выбранный примитив, а не все, как это делается с помощью кода из поста #11. А так да проще некуда!
__________________
cadtools
TararykovDG вне форума  
 
Автор темы   Непрочитано 06.10.2011, 21:32
#19
Yuzer

Мозговой штурм
 
Регистрация: 26.10.2008
Рідна ненька - Україна, Харків
Сообщений: 5,705


TararykovDG, твоя прога постоянно меня выручает. Спасибо тебе огромное.
p.s. А можно сделать, чтоб влисп срабатывал не через get-last-select, а к примеру просто get или подобное? В некоторых лиспах я немного менял вызов.
Yuzer вне форума  
 
Непрочитано 07.10.2011, 08:24
#20
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 575


Цитата:
Сообщение от Yuzer Посмотреть сообщение
p.s. А можно сделать, чтоб влисп срабатывал не через get-last-select, а к примеру просто get или подобное? В некоторых лиспах я немного менял вызов.
Yuzer, это сделать элементарно. В кода замени строку (defun c:get-last-select()... на (defun c:get()... или с другим нужным Тебе именем. Я сам постоянно иcпользую эту утилиту, но по-моему проще создать кнопку и на нее повесить вызов лиспа, типа так ^C^Cget-last-select, я так сделал, тогда все равно будет какое там имя у команды и понить его не нужно просто кнопку нажал и набор восстановился
__________________
cadtools
TararykovDG вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Повтор предидущего выбора элементов



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Документация Проектировщику на Torrents DEM Разное 263 03.09.2024 12:25
Порекомендуйте литературу для повышения квалификации(грунты, геотехника) acid Поиск литературы, чертежей, моделей и прочих материалов 6 13.05.2015 22:14
Алгоритм выбора стандартных элементов, вопрос к проектировщикам-машиностроителям. Pavel Samofalov Машиностроение 21 26.04.2010 00:14
Как при помощи Lisp добраться до элементов не активного или вообще закрытого листа DWG? back1981 LISP 3 23.10.2009 19:39
Lisp: Список элементов в слоях ALFMario LISP 4 29.04.2008 17:26