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

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

Удаление однотипного содержимого внутри теста по всему чертежу

Ответ
Поиск в этой теме
Непрочитано 12.01.2016, 12:55 #1
Удаление однотипного содержимого внутри теста по всему чертежу
Nazarova
 
Геолог
 
Кузбасс (Кемерово)
Регистрация: 12.09.2012
Сообщений: 12

Помогите с такой загвоздкой...На чертеже порядка тясячи текстовых объектов с типичным содержанием. Допустим 0,07-0,05. Необходимо во всех записях избавиться от того что пишется после тире (включая его) т.е. получить в результате 0,07. Ранее избавлялись от одинакового текста либо вручную, либо через поиск заменяя на пробел. Но сейчас содержимое абсолютно разное и путем подбора, с шагом или как угодно..ну очень муторно. Да и чертежей таких полно. Допусти еще нужно внитри этого же чертежа избавиться от всех данных содержащие значение с %, допустим 52%, 80% и т.д. Аналогично мучаемся вручную... Думаю кто то давно нашел способ это упростить..но у нас этим заняться не кому..сидели и работали ручками...Терпение на пределе. Помогите

Миниатюры
Нажмите на изображение для увеличения
Название: Снимок.JPG
Просмотров: 68
Размер:	81.1 Кб
ID:	163483  

Просмотров: 4472
 
Непрочитано 12.01.2016, 13:04
#2
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,835
<phrase 1=


Попробуйте от программы от Lee Mac
например, http://www.lee-mac.com/bfind.html
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Непрочитано 13.01.2016, 21:05
#3
G-RAV

Геодезист
 
Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
<phrase 1=


Код:
[Выделить все]
 (defun test (/ adoc)
  (vla-startundomark
    (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
  ) ;_ end_vla-startundomark
  (vl-catch-all-apply
    (function
      (lambda ()
	(mapcar
	  (function
	    (lambda (sl / i s)
	      (if (setq	i (vl-string-search
			    "-"
			    (setq s (cdr (assoc 1 (entget sl))))
			  ) ;_ end_vl-string-search
		  ) ;_ end_setq
		(entmod
		  (append (vl-remove (assoc 1 (entget sl)) (entget sl))
			  (list (cons 1 (substr s 1 i)))
		  ) ;_ end_append
		) ;_ end_entmod
	      ) ;_ end_if
	    ) ;_ end_lambda
	  ) ;_ end_function
	  (vl-remove-if
	    'listp
	    (mapcar 'cadr (ssnamex (ssget '((0 . "text")))))
	  ) ;_ end_vl-remove-if
	) ;_ end_mapcar
      ) ;_ end_lambda
    ) ;_ end_function
  ) ;_ end_vl-catch-all-apply
  (vla-EndUndoMark adoc)
  (princ)
) ;_ end_defun
Сильно не ругайте... написал только для данного(частного) случая и только в целях самообразования... если из профи кто оценит, может даст критику, буду только рад...
G-RAV вне форума  
 
Непрочитано 13.01.2016, 22:44
1 | #4
CTPAHHNK

чертила
 
Регистрация: 30.11.2009
Вятка
Сообщений: 828


А типа справку почитать?
Цитата:
Поиск и замена текста
Процедуры
Поиск и замену текста легко выполнить с помощью команды НАЙТИ.
Для поиска и замены текста можно использовать команду НАЙТИ. Заменяется только содержание текста; форматирование символов и свойства текста не изменяются.
При поиске текста в 3D среде видовой экран временно перейдет в режим 2D, чтобы текст не перекрывался имеющимися в чертеже 3D объектами.
Команда НАЙТИ позволяет использовать при поиске символы-шаблоны.
Символ
Определение
# (Решетка)
Соответствует любой одиночной цифре
@ (Коммерческое "при")
Соответствует любой одиночной букве
. (Точка)
Соответствует любому символу, кроме букв и цифр
* (Звездочка)
Соответствует любой последовательности символов. Может использоваться в любой позиции строки
? (Знак вопроса)
Соответствует любому одиночному символу; например, ?BC соответствует ABC, 3BC и т.п.
~ (Тильда)
Соответствует всем строкам, кроме отвечающих следующему после тильды шаблону; например, ~*AB* соответствует всем строкам, не содержащим последовательности AB
[ ]
Соответствует любому из символов в скобках; например, [AB]C соответствует AC и BC
[~]
Соответствует любому из символов, кроме заключенных в скобки; например, [~AB]C соответствует XC, но не соответствует BC
[-]
Задает диапазон для одиночного символа; например, [A-G]C соответствует AC, BC и так далее до GC, но не соответствует HC
' (Апостроф)
Следующий за ним специальный символ трактуется как обычный; например, '~AB соответствует ~AB
P.S. Не забыть поставить галочку у "Подстановочные знаки"
__________________
Основа вятской философии: "Так-то да, а так-то и нет." :secret:
CTPAHHNK вне форума  
 
Непрочитано 14.01.2016, 09:34
1 | #5
ProPeller

Пастух
 
Регистрация: 16.07.2012
Питер
Сообщений: 318


Цитата:
Сообщение от CTPAHHNK Посмотреть сообщение
А типа справку почитать?

P.S. Не забыть поставить галочку у "Подстановочные знаки"
А типа чем ему типа эта справка типа поможет?

Цитата:
Сообщение от G-RAV Посмотреть сообщение
Сильно не ругайте... написал только для данного(частного) случая и только в целях самообразования... если из профи кто оценит, может даст критику, буду только рад...
Я бы порекомендовал заменить:
Код:
[Выделить все]
 (entmod
 (append (vl-remove (assoc 1 (entget sl)) (entget sl))
	 (list (cons 1 (substr s 1 i)))
 )
)
На

Код:
[Выделить все]
 (entmod
 (subst	(cons 1 (substr s 1 i))
	(assoc 1 (entget sl))
	(entget sl)
 )
)
Так же vl-catch-all-apply лучше применить не к mapcar, а к каждому элементу списка внутри mapcar, иначе при получении ошибки при обработке элементов списка, оставшаяся его часть останется необработанной. Да и mapcar здесь не нужен, проще будет через foreach.
__________________
Автоматизация должна быть автоматической.
ProPeller вне форума  
 
Непрочитано 14.01.2016, 10:31
#6
Владимир_М


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


Цитата:
Сообщение от ProPeller Посмотреть сообщение
А типа чем ему типа эта справка типа поможет?
Ну и Справка (т. е. типа найти-заменить) типа помогает (для задач от ТС).
Владимир_М вне форума  
 
Непрочитано 14.01.2016, 11:35
#7
ProPeller

Пастух
 
Регистрация: 16.07.2012
Питер
Сообщений: 318


Цитата:
Сообщение от Владимир_М Посмотреть сообщение
Ну и Справка (т. е. типа найти-заменить) типа помогает (для задач от ТС).
Ну выберет он, допустим, какие-то текстовые примитивы по содержимому, а дальше-то что?
__________________
Автоматизация должна быть автоматической.
ProPeller вне форума  
 
Непрочитано 14.01.2016, 12:33
#8
Владимир_М


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


Цитата:
Сообщение от ProPeller Посмотреть сообщение
Ну выберет он, допустим, какие-то текстовые примитивы по содержимому, а дальше-то что?
Выберет нужный кусок в текстовом примитиве, который надо стереть (или текстовый полностью тот, который с %) и заменит его на " ".
Проверил экспериментально.

Для второй части: поиск соответственно ##% и замена на тот же пробел.
Миниатюры
Нажмите на изображение для увеличения
Название: Поиск-замена.PNG
Просмотров: 28
Размер:	27.1 Кб
ID:	163607  
Владимир_М вне форума  
 
Непрочитано 14.01.2016, 12:43
#9
Post

конструктор
 
Регистрация: 29.07.2005
Ростов-на-Дону
Сообщений: 1,091
<phrase 1=


Правка-найти-заменить
__________________
С уважением!!!
Post вне форума  
 
Непрочитано 14.01.2016, 12:49
#10
Puroshev


 
Регистрация: 22.10.2008
Сообщений: 73
Отправить сообщение для Puroshev с помощью Skype™


Нашел у себя и доработал
Удаляет текст после "-" и текст с %
Код:
[Выделить все]
 ;************************************************************
 ; Поиск текста в чертеже
 ;************************************************************
(defun C:PSW (/ A A2 A3 B I K N OB SS TIP )
    (prompt "\nПоиск текста в чертеже PSW - 2000 (c). е-mail [email protected]")
 ;************************************************************
    (prompt "\nВыберите текст :")
    (setq SS (ssget))
    (setq N (sslength SS))
    (setq I 0)
 ;************************************
    (repeat N
        (setq OB   (ssname SS I))
        (setq A2   (entget (ssname SS I)))
        (setq TIP  (cdr (assoc 0 (entget (ssname SS I)))))
              (setq I    (+ 1 I))
 ;************************************
        (if (= TIP "TEXT")
            (progn
                (setq A (cdr (assoc 1 A2))) ; строка текста
	      ;************************************************
	        (setq k (vl-string-search "-"  A))
	        (if (/= k nil)
		  (progn
		    (setq B (Substr A 1 k ))
                    (setq A3 (cons 1 B)) 
                    (setq A2 (subst  A3 (assoc 1 A2) A2))
                    (entmod A2)
		 ))
	      ;************************************************
	        (setq k (vl-string-search "%"  A))
	        (if (/= k nil) (entdel Ob))
	      ;************************************************
	      
            )
        ) ; end if
    ) ; Repeat

 (princ)
) ;defun
Puroshev вне форума  
 
Непрочитано 14.01.2016, 12:53
#11
Post

конструктор
 
Регистрация: 29.07.2005
Ростов-на-Дону
Сообщений: 1,091
<phrase 1=


Как-то писал, что скоро будем лиспы писать, которые точки близко близко расставляют и получается отрезок вместо того, чтобы программу изучить.
Чем базовый функционал Автокада не устраивает?
__________________
С уважением!!!
Post вне форума  
 
Непрочитано 14.01.2016, 13:12
#12
Puroshev


 
Регистрация: 22.10.2008
Сообщений: 73
Отправить сообщение для Puroshev с помощью Skype™


Уважаемый Post. Я понимаю, что можно найти текст используя подстановочные символы, а как быть с заменой? Если подскажите буду весьма признателен.
Программку писал в 2000 году , тогда команды найти-заменить не было.
Puroshev вне форума  
 
Непрочитано 14.01.2016, 13:16
#13
Post

конструктор
 
Регистрация: 29.07.2005
Ростов-на-Дону
Сообщений: 1,091
<phrase 1=


На пробел заменит и всё
__________________
С уважением!!!
Post вне форума  
 
Непрочитано 14.01.2016, 13:20
#14
Puroshev


 
Регистрация: 22.10.2008
Сообщений: 73
Отправить сообщение для Puroshev с помощью Skype™


Цитата:
На пробел заменит и всё
__________________
С уважением!!!
Уважаемый Post.
Девушке надо найти 1.82-1.28, оставить только 1.82.
В строке поиска пишу *-*, а на что менять.
Puroshev вне форума  
 
Непрочитано 14.01.2016, 13:21
#15
Post

конструктор
 
Регистрация: 29.07.2005
Ростов-на-Дону
Сообщений: 1,091
<phrase 1=


а в восьмом сообщении уже написали.
Просто ставишь в окошке "Заменить на" пробел и все

----- добавлено через ~1 мин. -----
Лучше не звездочки ставить, а решетку - соответствует цифре, а то мало ли где в тексте тире или минус встречается - снесет все.
__________________
С уважением!!!
Post вне форума  
 
Непрочитано 14.01.2016, 13:26
#16
Post

конструктор
 
Регистрация: 29.07.2005
Ростов-на-Дону
Сообщений: 1,091
<phrase 1=


На всякий случай:
Миниатюры
Нажмите на изображение для увеличения
Название: Clipboard01.jpg
Просмотров: 34
Размер:	76.8 Кб
ID:	163609  
__________________
С уважением!!!
Post вне форума  
 
Непрочитано 14.01.2016, 13:38
#17
Puroshev


 
Регистрация: 22.10.2008
Сообщений: 73
Отправить сообщение для Puroshev с помощью Skype™


Post, cпасибo. Все понятно.
Puroshev вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Удаление однотипного содержимого внутри теста по всему чертежу

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ObjectARX. Расчленение и удаление proxy-объектов Profan Готовые программы 293 08.04.2024 09:37
Как удалить тип линии Tolyanovich AutoCAD 48 20.11.2014 09:24
Проблема с чисткой чертежа AntonFox AutoCAD 33 20.02.2013 13:00
результат работ команд purge и audit lex0101 Программирование 23 13.02.2012 08:34
AutoCAD 2011 при копировании не вставляет в другой чертеж Maxxwell AutoCAD 7 07.05.2010 14:44