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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как скопировать имя неименованного блока в буфер обмена?

Как скопировать имя неименованного блока в буфер обмена?

Ответ
Поиск в этой теме
Непрочитано 12.02.2016, 15:48 #1
Как скопировать имя неименованного блока в буфер обмена?
Pilot
 
Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,290

Предположим в чертеже есть множество неименованных блоков:
A$C331925A2
A$C3048027C
...
A$C3526056F

Предположим, один из таких блоков нужен для дальнейшей работы и для удобства стоит дать ему более вразумительное имя.
Первое что приходит в голову - команда _Rename.
Но там среди списка длинных и очень похожих между собой имен сложно найти нужное.
При выделении блока не чертеже в свойствах можно увидеть его имя. Однако скопировать это имя - например в буфер обмена - не получается.
Приходится сперва записывать имя на бумажку а потом долго его искать в списке - прямо скажем, какой-то "несовременный" способ.
Каким образом решить вопрос более элегантно?

(У меня AutoCAD-2013. Возможно в поздних версиях это решено)
Просмотров: 3738
 
Непрочитано 12.02.2016, 15:55
#2
Dakar


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


В редакторе блоков есть кнопка "Сохранить блок как...". При сохранении указывается новое имя блока.
Dakar вне форума  
 
Непрочитано 12.02.2016, 16:04
#3
Кулик Алексей aka kpblc
Moderator

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


В ком.строке вводи (cdr(assoc 2 (entget(car(entsel)))))
Укажешь блок - в строке будет выведено имя блока. Только с выбором не ошибись
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.02.2016, 16:04
#4
kacugu

начинающий инженер-гидротехник
 
Регистрация: 18.04.2010
Санкт-Петербург
Сообщений: 910


1. Двойной щелчок по нужному блоку. Открывается окно "Редактирование для создания или изменения блока". Имя нужного блока уже выделено, остаётся нажать ctrl-c
2. Лисп от Ли Мака: http://www.lee-mac.com/copyblock.html - команда rb, выбираем блок, вводим новое имя.
kacugu вне форума  
 
Автор темы   Непрочитано 12.02.2016, 16:33
#5
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,290


kacugu спасибо! По двойному щелчку - простейшее решение! Но я не догадался.
Остальные способы проверю на досуге, еще раз всем спасибо!!
Pilot вне форума  
 
Непрочитано 04.08.2023, 09:42
#6
alex2214


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


Цитата:
Сообщение от Pilot Посмотреть сообщение
kacugu спасибо! По двойному щелчку - простейшее решение! Но я не догадался.
Остальные способы проверю на досуге, еще раз всем спасибо!!
Это решение касается блока без атрибутов, а как быстро скопировать имя блока с атрибутами. Пока нашел такой костыль- решение в новых версиях автокада командой Подсчет и вставкой поля, потом копия имени. Подскажите как можно быстро скопировать имя блока с атрибутами!
alex2214 вне форума  
 
Непрочитано 04.08.2023, 10:06
#7
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Цитата:
Сообщение от alex2214 Посмотреть сообщение
Это решение касается блока без атрибутов, а как быстро скопировать имя блока с атрибутами. Пока нашел такой костыль- решение в новых версиях автокада командой Подсчет и вставкой поля, потом копия имени. Подскажите как можно быстро скопировать имя блока с атрибутами!
Попробуй такой код.
Набрать команду gb
Код:
[Выделить все]
;getblockname
;Кидает в буфер обмена название блока
(defun c:gb (/ blkname)
  (copyToclipboard (setq blkname (Vla-get-EffectiveName(vlax-ename->vla-object (Kr_entsel "\nВыбери блок: " '("INSERT") nil)))))
  (princ "\n")
  (princ blkname)
  (princ)
);defun

;|Функция Kr_entsel
*** Автор Морозов С.В. aka Krieger ***
Еденичный выбор объекта, замена функции entsel
Возвращает entity name выбранного примитива или nil, точку указки запоминает в переменной LASTPOINT
Параметры:
promt - предложение выбрать объект (string)
filter - фильтр объектов для выбора вида '("LINE" "LWPOLYLINE")
entlist - список примитивов которые не надо выбирать (либо список entity name, либо PICKSET)

Примеры:
(Kr_entsel "\nВыберите объекты" '("LINE" "LWPOLYLINE") nil)
(Kr_entsel "\nВыберите объекты" nil nil)
(setq aa nil) (Kr_entsel "\nВыберите объекты" '("LINE" "LWPOLYLINE") (while (setq a (car (entsel))) (setq aa (append aa (list a)))))
(Kr_entsel "\nВыберите объекты" '("LINE" "LWPOLYLINE") (ssget))

|;

(defun Kr_entsel (promt filter entlist / key n newentlist ent_point promt)
  
  (setq key T n 0 newentlist nil)
  (if (eq (type entlist) 'PICKSET)
    (progn
    	(while (setq a (ssname entlist n)) (setq newentlist (append newentlist (list a)) n (1+ n)))
    	(setq entlist newentlist)
    );progn
   );if
    (while key
    	(if (or (setq ent_point (entsel promt)) (= (getvar "ERRNO") 7))
	  	(if (or (eq (type ent_point) 'LIST) (not ent_point))
		  (if ent_point
		    (if (member (setq ent (car ent_point)) entlist)
		      (princ "\nПримитив уже выбран")
		      (if filter
			      (if (not (member (cdr (assoc 0 (entget ent))) filter))
				(progn (setq str "\nНе верный выбор, выберите: ")
				  (princ (substr (setq str (foreach n filter (setq str (strcat str n ", ")))) 1 (- (strlen str) 2)))
				);progn
				(setq key nil)
			      );if
				(setq key nil)
			);if
		    );if
		    (setq key T)
		  );if
	    	(setq key nil)
	    );if
	  (setq key nil)
      	);if
     );while
  (if (eq (type ent_point) 'LIST)
    (progn (setvar "LASTPOINT" (cadr ent_point)) ent)
    ent_point
  );if
);defun

;  ! ***************************************************************************
;; !                           copyToclipboard
;; ! ***************************************************************************
;; ! Function : Copy text to clipboard
;; ! Argument : 'str'     - String
;; ! Returns  : nil
;; see http://www.theswamp.org/index.php?topic=21764.new
;; ! ****************************************************************************

(defun copyToclipboard ( text / htmlfile result)
 (setq result
        (vlax-invoke
            (vlax-get
                (vlax-get
                    (setq htmlfile (vlax-create-object "htmlfile"))
                   'ParentWindow
                )
               'ClipBoardData
            )
           'SetData
            "Text"
            text
        )
    )

    (vlax-release-object htmlfile)
    result
)
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 07.08.2023, 05:51
#8
kuraga97


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


Цитата:
Сообщение от alex2214 Посмотреть сообщение
Это решение касается блока без атрибутов, а как быстро скопировать имя блока с атрибутами. Пока нашел такой костыль- решение в новых версиях автокада командой Подсчет и вставкой поля, потом копия имени. Подскажите как можно быстро скопировать имя блока с атрибутами!
Точно так же, только не двойным кликом заходить в окно "Редактирование для создания или изменения блока", а выделять блок и на ленте нажимать кнопку "Редактор блоков".
kuraga97 вне форума  
 
Непрочитано 07.08.2023, 06:28
#9
gumel


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


Для подобной задачи использую очень удобный макрос (по клику на блок, вводишь новое имя):
^C^P-rename;_b;(vla-get-effectivename (vlax-ename->vla-object (car(entsel))));
gumel вне форума  
 
Непрочитано 11.08.2023, 11:27
#10
alex2214


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


Цитата:
Сообщение от kuraga97 Посмотреть сообщение
Точно так же, только не двойным кликом заходить в окно "Редактирование для создания или изменения блока", а выделять блок и на ленте нажимать кнопку "Редактор блоков".
Спасибо. То что нужно. Как просто оказалось, сначала прочитал, думал что просто редактор запустится, пока не попробовал)))
alex2214 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как скопировать имя неименованного блока в буфер обмена?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с базовой точкой блока и вхождением блока в DXF nogaems Программирование 5 29.08.2013 15:46
В динамическом блоке слетает штриховка при копировании через буфер обмена Volodich Динамические блоки 2 17.12.2012 12:13
Почему в Автокад нет команды обновления структуры блоков при вставке блоков через буфер обмена? МишаИнженер AutoCAD 6 21.11.2012 12:07
Не могу скопировать файл один в другой через буфер обмена AnnaS AutoCAD 4 12.07.2010 22:25
Проблемы с копирование через буфер обмена. zenon AutoCAD 2 22.12.2005 07:20