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

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

Добавление текста в аттрибут блока.

Ответ
Поиск в этой теме
Непрочитано 04.04.2005, 21:40 #1
Добавление текста в аттрибут блока.
Mikhail
 
инженер-технолог (ГИП)
 
Санкт-Петербург
Регистрация: 11.09.2003
Сообщений: 1,116

Добрый день.
Есть куча блоков. в них есть аттрибут Number с разными значениями. Как вот можно к этому значению добавить еще одну букву?
просто такой вопрос это прграммно или можно как то поиграть в окошечке свойств там пишется *VARIES* вот можно ли в окошке свойств как то добавить букву?
спасибо.
__________________
Большая беда науки в том, что при восхитительной теории можно получить отвратительные результаты.
Просмотров: 3655
 
Непрочитано 04.04.2005, 23:34
#2
ZZZ

электрик
 
Регистрация: 11.03.2005
Киев
Сообщений: 157


Програмно получится на ура
__________________
Когда под рукой нет ничего кроме молотка - всё вокруг кажется гвоздями...
Выбор правильного инструмента - залог успеха в любом деле.
ZZZ вне форума  
 
Непрочитано 05.04.2005, 01:18
#3
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


Набросал для вас несложную функцию замены текста в атрибутах с определенным тагом. Командой делать не стал, но можно дописать. В командной строке:
(AttChange "Таг" "Текст_Спереди" "Текст_Сзади" NIL)
Если не хотите менять текст спереди или сзади пишите "". Последний аргумент если не NIL, меняет основной текст - который уже был в атрибуте.
Код:
[Выделить все]
(defun AttChange(
		 Tag 	; название атрибута (tag)
		 Pref	; текст спереди или  ""
		 Suf	; текст сзади или ""
		 Main	; замена основному тексту или NIL
		 /
		 blSet
		 attCount
		 attList
		 errCount
		 )
  (vl-load-com)
  (if
    (and Tag Pref Suf
    (setq blSet(ssget '((0 . "INSERT")(66 . 1))))
     ); end and
    (progn
      (setq blSet(mapcar 'vlax-ename->vla-object 
                    (vl-remove-if 'listp 
                     (mapcar 'cadr(ssnamex blSet))))
	    attCount 0
	    errCount 0); end setq
      (foreach block blSet
	  (setq attList
		 (vlax-safearray->list
		   (vlax-variant-value
		     (vla-GetAttributes block))))
	  (foreach att attList
	    (if
	      (=(vla-get-TagString att)Tag)
	      (progn
		(setq text(vla-get-TextString att))
		(if Main(setq text Main))
		 (if
                   (not 
                     (vl-catch-all-error-p 
                       (vl-catch-all-apply
			 'vla-put-TextString(list att(strcat Pref text Suf)))))
		         (progn
			   (vla-Update block)
			   (setq attCount(1+ attCount))
			   ); end progn
		   	    (setq errCount(1+ errCount))
		   ); end if
		); end progn
	      ); ed if
	    ); end foreach
	); end foreach
      (princ(strcat "\n"(itoa attCount) " attribute(s) " Tag " was changed."))
      (if(/= 0 errCount)
	(princ(strcat "\n"(itoa errCount) " attribute(s) " Tag " was filtered out."))
    ); end if
      ); end progn
    ); end if
  (princ)
  ); end of AttChange
Можно командой сделать, только спать уже охота, надеюсь и так поможет...
{Smirnoff} вне форума  
 
Автор темы   Непрочитано 05.04.2005, 09:04
#4
Mikhail

инженер-технолог (ГИП)
 
Регистрация: 11.09.2003
Санкт-Петербург
Сообщений: 1,116


Спасибо. Все работает хорошо, правда пока только раз попробовал
__________________
Большая беда науки в том, что при восхитительной теории можно получить отвратительные результаты.
Mikhail вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Добавление текста в аттрибут блока.

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

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