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

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

Замена части тэга

Ответ
Поиск в этой теме
Непрочитано 08.08.2011, 09:25 #1
Замена части тэга
МИХАИЛCAD
 
Регистрация: 19.11.2009
Сообщений: 21

Вот приходят чертежи из разных компаний.
А там (в этих компаниях) сидят вредители и вредят!
Они в своих атрибутах в блоках используют следующие значки:
"_", "#", ну и другие. А честные парни вроде меня пользуясь
gatte покрывают матом монитор.
Вот прошу помощи: как бы так
исхитрится и позаменять только эти значки?
Может быть кто нибудь уже сталкивался с этим?
Просмотров: 3117
 
Непрочитано 08.08.2011, 09:48
#2
TararykovDG

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


Меню "Правка" -> "Найти". Нажать кнопку "Параметры", отставить галочку только в поле "Значения атрибутов блока". В поле "Строка для поиска" и в поле "Заменить на" ввести соответствующие символы.
__________________
cadtools
TararykovDG вне форума  
 
Автор темы   Непрочитано 09.08.2011, 04:30
#3
МИХАИЛCAD


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


Вопрос был о замене части имени тэга
По замене атрибутов, текстов и пр. прошу не беспокоится
МИХАИЛCAD вне форума  
 
Непрочитано 09.08.2011, 08:44
#4
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от МИХАИЛCAD Посмотреть сообщение
Вопрос был о замене части имени тэга
В чем вопрос-то, как исправить свойство tagstring в вхождениях блока и его описании?? vla-put-tagstring и к тем, и к тем.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 09.08.2011, 10:03
#5
МИХАИЛCAD


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


Аааа вон оно что!
vla-put-tagstring
ну теперь конечно всё понятно!
Пойду где то в другом месте спрошу а то тут что не спросишь или "тебе зачем"
или vla-put-tagstring
Спасибо и на том.
МИХАИЛCAD вне форума  
 
Непрочитано 09.08.2011, 10:25
#6
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от МИХАИЛCAD Посмотреть сообщение
Пойду где то в другом месте спрошу
Да пожалуйста, кто ж мешает.
Цитата:
Сообщение от МИХАИЛCAD Посмотреть сообщение
а то тут что не спросишь или "тебе зачем"
Опытным людям виднее что спрашивать. Это называется "уточняющий вопрос", т.к. в чем у тебя проблема написано очень недоходчиво, вот и приходится в "гадалки" играть.
Do$ вне форума  
 
Непрочитано 09.08.2011, 10:37
1 | #7
TararykovDG

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


МИХАИЛCAD, попробуй так
Код:
[Выделить все]
 
(defun change-attr-tag(lst_replace_symbol / )
  (vl-load-com)
  (vlax-for blk_def (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object)))
    (vlax-for attr blk_def
      (if (= (vla-get-ObjectName attr) "AcDbAttributeDefinition")
        (foreach item lst_replace_symbol
          (vla-put-TagString attr (vl-string-subst-all (vla-get-TagString attr) (cdr item) (car item)))
          )
        )
      )
    )
  ((lambda(nbr)
     (if nbr
       (foreach item (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex nbr))))
         ((lambda(sf)
            (if (> (vlax-safearray-get-u-bound sf 1) -1)
              (foreach attr (vlax-safearray->list sf)
                (foreach item lst_replace_symbol
                  (vla-put-TagString attr (vl-string-subst-all (vla-get-TagString attr) (cdr item) (car item)))
                  )
                )
              )
            )
           (vlax-variant-value (vla-GetAttributes item))
           )
         )
       )
     )
    (ssget "_X" (list (cons 0 "INSERT")))
    )
  (princ)
  ); end change-attr-tag


; Заменяет в строке str все вхождения подстроки old_ss на подстроку new_ss
(defun vl-string-subst-all(str new_ss old_ss / )
  (while (vl-string-search old_ss str)
    (setq str (vl-string-subst new_ss old_ss str))
    )
  str
  ); end vl-string-subst-all
P. S. Сохранить этот код в лисп файл (например 1.lsp), загрузи в чертеж AutoCAD'а и вызови функци, как показано ниже
Примеры вызова:
(change-attr-tag '(("_" . ""))) - убрать из тегов символ "_"
(change-attr-tag '(("#" . ""))) - убрать из тегов символ "#"
(change-attr-tag '(("_" . "A") ("#" . "Вася"))) - заменить в тегах "_" на "A", "#" на "Вася"
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 09.08.2011, 10:56
#8
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от МИХАИЛCAD Посмотреть сообщение
Аааа вон оно что!
vla-put-tagstring
Вобще-то тема в разделе программирования под автокад, да еще, судя по 2 посту, с претензией на человека в этом деле понимающем (но сюдя по постановке вопроса это видимо не совсем так), так что как спросил так и ответил - успехов на других форумах.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 10.08.2011, 02:06
#9
МИХАИЛCAD


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


Спасибо TararykovDG !!
Это твоя прога и как я её пользую:
Код:
[Выделить все]
 ;замена символов в тэгах - "#", "_" и прочих на выбор
(defun change-attr-tag(lst_replace_symbol / )
	  (vl-load-com)
	  (vlax-for blk_def (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object)))
	    (vlax-for attr blk_def
	      (if (= (vla-get-ObjectName attr) "AcDbAttributeDefinition")
	        (foreach item lst_replace_symbol
	          (vla-put-TagString attr (vl-string-subst-all (vla-get-TagString attr) (cdr item) (car item)))
	          )
	        )
	      )
	    )
	  ((lambda(nbr)
	     (if nbr
	       (foreach item (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex nbr))))
	         ((lambda(sf)
	            (if (> (vlax-safearray-get-u-bound sf 1) -1)
	              (foreach attr (vlax-safearray->list sf)
	                (foreach item lst_replace_symbol
	                  (vla-put-TagString attr (vl-string-subst-all (vla-get-TagString attr) (cdr item) (car item)))
	                  )
	                )
	              )
	            )
	           (vlax-variant-value (vla-GetAttributes item))
	           )
	         )
	       )
	     )
	    (ssget "_X" (list (cons 0 "INSERT")))
	    )
	  (princ)
	  ); end change-attr-tag
	 
	 
	; Заменяет в строке str все вхождения подстроки old_ss на подстроку new_ss
	(defun vl-string-subst-all(str new_ss old_ss / )
	  (while (vl-string-search old_ss str)
	    (setq str (vl-string-subst new_ss old_ss str))
	    )
	  str
	  ); end vl-string-subst-all
;P. S. Сохранить этот код в лисп файл (например 1.lsp), загрузи в чертеж AutoCAD'а и вызови функци, как показано ниже
;Примеры вызова:
(change-attr-tag '(("_" . ""))) ;убрать из тегов символ "_"
(change-attr-tag '(("#" . "No"))) ;убрать из тегов символ "#"
; Сюда добавить строку подобную верхним двум
;(change-attr-tag '(("_" . "A") ("#" . "Вася"))) - заменить в тегах "_" на "A", "#" на "Вася"
Рекомендую всем!
Ничего подобного вы нигде не найдёте!!!
Большое спасибо!!!!

Последний раз редактировалось Кулик Алексей aka kpblc, 10.08.2011 в 08:36.
МИХАИЛCAD вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Замена части тэга



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Замена текстового стиля VVA Готовые программы 322 28.05.2025 09:59
Автоматическая замена части штампа без открытия чертежа ТР5 Программирование 2 21.05.2010 17:35
Ищу пример ПЗ к расчетной части проекта Alexandrtlt Поиск литературы, чертежей, моделей и прочих материалов 2 25.05.2009 16:38
Деленные на части документы по ГОСТ 2.105-95: наименования и запись в спецификацию BYM`|break^your^monitor| Машиностроение 1 27.03.2009 13:10
Перекрытие в форме части сферы в Лире Dzarabr Лира / Лира-САПР 7 08.03.2007 16:50