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

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

Выделить вновь только что скопированный набор объектов?

Ответ
Поиск в этой теме
Непрочитано 02.07.2012, 21:01 #1
Выделить вновь только что скопированный набор объектов?
Qir
 
арх
 
мск
Регистрация: 02.07.2012
Сообщений: 2

как выделить только что скопированный набора объектов для дальнейшего редактирования...(mirror, rotate, move,,,,)??
опция _p (previous) для команд выделяет исходник для копии.. ((

по сайту нашёл лишь чудесный лисп от TararykovDG в теме "LISP. Повтор предыдущего выбора элементов". вариация на тему select_p

и лисп от Krieger: _RotateCopy. (вращение копии). где-то рядом, но узко специализированно и без опции не удалять копию..

весьма востребованная возможность вроде..
допетрил только до следующего алгоритма:
копировать в буфер, вставлять блоком, выделять блок, редактировать, разбивать.. но много лишних движений.
Просмотров: 3288
 
Непрочитано 02.07.2012, 21:03
#2
Кулик Алексей aka kpblc
Moderator

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


Перед выполнением копирования вставки через (entlast) запомнить последний примитив; выполнить команду; через (entnext) после entlast пройтись по всем примитивам. Или вообще выполнять свои действия через ActiveX
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 02.07.2012, 21:32
#3
Qir

арх
 
Регистрация: 02.07.2012
мск
Сообщений: 2


это всё уже высшая математика!! )..
мои познания в лиспе -- быстрый вызов команд с набором опций с клавиатуры.. )

думал коллективный разум уже что-то сообразил на тему ). по сути ведь действие: выбрать (высветить) только-что созданное. ведь набор копируемых объектов как-то запоминается в процессе, где-то хранится. и небольшим лиспом его можно вызволить из акадовских недр )
Qir вне форума  
 
Непрочитано 02.07.2012, 21:51
#4
Кулик Алексей aka kpblc
Moderator

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


Как пример:
Код:
[Выделить все]
 (defun copy-with-select-last (/ _entlast lastsel)
  (setq _entlast (entlast))
  (if ((lambda ()
         (vl-cmdf "_.copy")
         (while (/= (getvar "cmdactive") 0)
           (vl-cmdf pause)
           ) ;_ end of while
         ) ;_ end of lambda
       )
    (progn
      (while (setq _entlast (entnext _entlast))
        (setq lastsel (cons _entlast lastsel))
        ) ;_ end of while
      ) ;_ end of progn
    ) ;_ end of if
  (reverse lastsel)
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 03.07.2012, 09:32
#5
TararykovDG

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


На основе идеи Кулик Алексей aka kpblc, плюс ректоры, чтобы можно было штатной командой копирования пользоваться
Код:
[Выделить все]
 
; ------------------------------------------------------------------------------------------------
(defun commandWillStart(reac data / ) ; старт какой-то комады ACad
  (if (member (car data) (list "COPY" "_COPY")) ; если это была команда копирования
    (setq *current_last_ent* (entlast)
          *last_select_selection* (ssadd)
          )
    )
)
(defun commandEnded(reac data / ) ; конец какой-то комады ACad
  (if (member (car data) (list "COPY" "_COPY")) ; если это была команда копирования
    (while (setq *current_last_ent* (entnext *current_last_ent*))
      (setq *last_select_selection* (ssadd *current_last_ent* *last_select_selection*))
      )
    )
)
; ------------------------------------------------------------------------------------------------

; ------------------------------------------------------------------------------------------------
(setq Cmnd_Reac (vlr-command-reactor "Реактор команд: "
		  (list '(:VLR-commandWillStart . commandWillStart)
			'(:VLR-commandEnded . commandEnded)
			)
		  )
      )
; -------------------------------------------------------------------------------------------------

; -------------------------------------------------------------------------------------------------
(defun c:gls() (c: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)
  )
; -------------------------------------------------------------------------------------------------
P.S. Добавить лисп в автозагрузку, после копирования набрать команду gls
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 03.07.2012, 23:16
#6
VVA

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


http://forum.dwg.ru/showthread.php?t=85733
Похожая тема
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Выделить вновь только что скопированный набор объектов?

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рифмоплетство. Kryaker Разное 554 14.11.2023 11:59
Разрез плоскостью сечения только определенных объектов Amethystos AutoCAD 4 31.01.2012 10:43
FILTER / фильтр BM60 Справочник команд 0 08.07.2008 15:35
НЕ получается выделить сразу несколько объектов abram AutoCAD 15 05.05.2008 15:16
-= Вместо текстовых объектов видны только рамки =- CADastr AutoCAD 5 21.06.2005 11:53