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

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

Можно-ли периименовать блок?

Ответ
Поиск в этой теме
Непрочитано 21.02.2006, 17:36 #1
Можно-ли периименовать блок?
Dante
 
Николаев
Регистрация: 01.12.2005
Сообщений: 76

Не кто не знает есть ли в Автокаде возможность переименовать созданный блок (в смысле одинаковых блоков блоков на чертеже много, т.е. один блок вставлен кучу раз из буфера с дурным именем, а потом размножен командой copy и нужно (т.е. из) назвать нормально).
Просмотров: 9314
 
Непрочитано 21.02.2006, 17:38
#2
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,336


команда
Код:
Хмурый вне форума  
 
Непрочитано 21.02.2006, 17:39
#3
Кулик Алексей aka kpblc
Moderator

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


_.rename опробуй
---
Опередили.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 21.02.2006, 17:47
#4
Dante


 
Регистрация: 01.12.2005
Николаев
Сообщений: 76


Прикольно. Спасибо.
Dante вне форума  
 
Непрочитано 21.02.2006, 18:12
#5
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Прикольно. Спасибо.
Пора объявлять соревнование на самый быстрый забег (ответ на вопрос), почти Турин 2006.
VVA вне форума  
 
Непрочитано 21.02.2006, 21:20
#6
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Цитата:
Сообщение от VVA
Пора объявлять соревнование на самый быстрый забег (ответ на вопрос), почти Турин 2006.
Не... Пора делать автоответчик. Но это уже вопрос к админу ))
vk вне форума  
 
Непрочитано 21.02.2006, 23:03
#7
Perezz!!
Moderator

архитектор
 
Регистрация: 21.08.2003
Москва
Сообщений: 3,587


Цитата:
Не... Пора делать автоответчик.
Perezz!! вне форума  
 
Непрочитано 22.02.2006, 05:33
#8
Vova

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


Интересно, если посмотреть в Хелпе на русском языке на слово Переименовать, можно-ли там найти ответ? А если хелп английский, то в словаре можно найти, что это есть Rename....
Скоро юбилейная двухсотая страница перелистнется на форуме, отделять мух от котлет становится все труднее
Vova вне форума  
 
Автор темы   Непрочитано 15.03.2006, 12:39 А если усложнить задачу.
#9
Dante


 
Регистрация: 01.12.2005
Николаев
Сообщений: 76


Команда rename - это конечно интересно, но есть нюансы. Например Вы хотите преименовать блок, который был вставлен из буфера обмена он как известно имеет имя типа A#546$#$@$#%#45645, а команда rename предпологает, что вы знаете имя этого блока, т.е. перед тем как переименовывать нужно это имя как-то найти, записать на листик (или в буфер) корче лая катавасия, а вот так, чтобы переименовать просто клацаньем на этом блоке? Неужно писать скрипт?
Dante вне форума  
 
Непрочитано 15.03.2006, 12:47
#10
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,336


Вызываешь команду _list
Тыкаешь в блок
Жмешь Enter
Раскрывается текстовое окно, если нет - то жми F2
Среди информации увидишь запись

Block Name: "A#546$#$@$#%#45645"

Скопируй содержимое кавычек в буфер....
Хмурый вне форума  
 
Непрочитано 15.03.2006, 12:51
#11
seaniv


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


Можно через кнопку "редактирование атрибута" которая на панели Редактирования-2. Еще быстрее и конкретнее.
seaniv вне форума  
 
Автор темы   Непрочитано 15.03.2006, 12:53
#12
Dante


 
Регистрация: 01.12.2005
Николаев
Сообщений: 76


Да я в общем то так и делаю...
Но дело в том, что есть в природе люди которые натыкают кучу блоков и нужно по ним спецификацию сделать... Т.е. я хочу сказать один-два блока так нормально а если сто...
Dante вне форума  
 
Автор темы   Непрочитано 15.03.2006, 12:58
#13
Dante


 
Регистрация: 01.12.2005
Николаев
Сообщений: 76


Цитата:
Сообщение от seaniv
Можно через кнопку "редактирование атрибута" которая на панели Редактирования-2. Еще быстрее и конкретнее.
Очень интересно...
Откуда во всталеном из буфера обмена блоке атрибут (вставляется не блок, а часть рисунка, вставленная командой "ваставиить как блок")
Dante вне форума  
 
Непрочитано 15.03.2006, 13:14
#14
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,336


Цитата:
Сообщение от Dante
... Т.е. я хочу сказать один-два блока так нормально а если сто...
Для выполнения рутинных операций программа нужна
Хмурый вне форума  
 
Непрочитано 15.03.2006, 15:15
#15
*Voland*

Инженер-технолог
 
Регистрация: 02.12.2004
Сообщений: 31


Цитата:
Сообщение от seaniv
Можно через кнопку "редактирование атрибута" которая на панели Редактирования-2. Еще быстрее и конкретнее.
Тут вроде блок редактируется, или я чего не понял. :?:
Мне кажется без лиспика не обойтись, чтобы методика была как предложил Хмурый. Только как реализовать, увы я не знаю, не владею.
*Voland* вне форума  
 
Непрочитано 15.03.2006, 15:43
#16
Кулик Алексей aka kpblc
Moderator

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


Попробуй такое (код не проверял):
Код:
[Выделить все]
(defun c:mren (/ ent new_name old_name _cmdecho_ *error*)
  (defun *error* (msg)
    (if	_cmdecho_
      (setvar "cmdecho" _cmdecho)
      ) ;_ end of if
    (vla-endundomark
      (vla-get-activedocument (vlax-get-acad-object))
      ) ;_ end of vla-endundomark
    (princ msg)
    (princ)
    ) ;_ end of defun
  (vl-load-com)
  (vla-startundomark
    (vla-get-activedocument (vlax-get-acad-object))
    ) ;_ end of vla-startundomark
  (while (and (setq ent (entsel "\nУкажите блок"))
	      (= (cdr (assoc 0 (entget (car ent)))) "INSERT")
	      ) ;_ end of and
    (setq old_name  (cdr (assoc 2 (entget (car ent))))
	  _cmdecho_ (getvar "cmdecho")
	  ) ;_ end of setq
    (if	(= (setq
	     new_name (getstring
			(strcat "\nНовое имя блока <" old_name "> : ")
			) ;_ end of getstring
	     ) ;_ end of setq
	   ""
	   ) ;_ end of =
      (setq new_name old_name)
      ) ;_ end of if
    (setvar "cmdecho" 0)
    (command "_.-rename" "_block" old_name new_name)
    (setvar "cmdecho" _cmdecho_)
    ) ;_ end of while
  (vla-endundomark
    (vla-get-activedocument (vlax-get-acad-object))
    ) ;_ end of vla-endundomark
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.03.2006, 15:53
#17
Кочетков Андрей

Java/Kotlin backend
 
Регистрация: 03.02.2006
Сообщений: 5,737


Постоянно пользуюсь этим лиспом:

Автор Эдуард:

Код:
[Выделить все]
(defun C:Insert_rename
       (/ block_adoc ins new_name_block old_block obj sf_obj)
  (setq	block_adoc
	 (vla-get-blocks
	   (vla-get-ActiveDocument (vlax-get-acad-object))
	 ) ;_  end of_vla-get-blocks
  ) ;_  end of_setq
  (if
    (and
      (setq ins (car (entsel "\n Select insert for rename:")))
      (= (cdr (assoc 0 (entget ins))) "INSERT")
      (setq new_name_block (getstring "\nNew block name:"))
      (snvalid new_name_block)
      (not (tblsearch "block" new_name_block))
    ) ;_  end of_and
     (progn
       (setq
	 old_block (vla-item block_adoc (cdr (assoc 2 (entget ins))))
       ) ;_  end of_setq
       (vlax-for item old_block
	 (setq obj (cons item obj))
       ) ;_  end of_vlax-for
       (setq sf_obj (vlax-make-safearray
		      vlax-vbobject
		      (cons 0 (1- (length obj)))
		    ) ;_  end of_vlax-make-safearray
       ) ;_  end of_setq
       (vlax-safearray-fill sf_obj obj)
       (setq new_block
	      (vla-add block_adoc
		       (vlax-3d-point '(0 0 0))
		       new_name_block
	      ) ;_  end of_vla-add
       ) ;_  end of_setq
       (vla-CopyObjects
	 (vla-get-ActiveDocument (vlax-get-acad-object))
	 sf_obj
	 new_block
       ) ;_  end of_vla-CopyObjects
       (vla-put-name (vlax-ename->vla-object ins) new_name_block)
     ) ;_  end of_progn
  ) ;_  end of_if
) ;_  end of_defun
Кочетков Андрей вне форума  
 
Непрочитано 15.03.2006, 15:59
#18
*Voland*

Инженер-технолог
 
Регистрация: 02.12.2004
Сообщений: 31


2 kpblc
Блин, класно, работает :P :!:
Откуда вы такие умные?
У нас на работе я Автокад знаю лучше всех, чуть у кого вопрос, сразу ко мне, но тут я чувствую себя не только чайником, но и полным профаном. :?
*Voland* вне форума  
 
Непрочитано 15.03.2006, 16:06
#19
Кулик Алексей aka kpblc
Moderator

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


А вот еще один вариант - получче будет имхо:
Код:
[Выделить все]
(defun c:mren2 (/ adoc ent block new_name)
  (vl-load-com)
  (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
  (vla-startundomark adoc)
  (while (and (setq ent (entsel "\nУкажите блок <Выход> : "))
	      (= (cdr (assoc 0 (entget (car ent)))))
	      ) ;_ end of and
    (setq block
	   (vla-item (vla-get-blocks adoc) (cdr (assoc 2 (entget (car ent)))))
	  ) ;_ end of setq
    (if	(= (setq
	     new_name (getstring (strcat "\nНовое имя <"
					 (vla-get-name block)
					 "> : "
					 ) ;_ end of strcat
				 ) ;_ end of getstring
	     ) ;_ end of setq
	   ""
	   ) ;_ end of =
      (setq new_name (vla-get-name block))
      ) ;_ end of if
    (vla-put-name block new_name)
    ) ;_ end of while
  (vla-endundomark adoc)
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.03.2006, 16:26
#20
Кулик Алексей aka kpblc
Moderator

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


> *Voland* : Ты второй вариант попробуй - он получше работает, да и обрабатывает все варианты (по-моему).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Динамические блоки > Можно-ли периименовать блок?

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