Команда PURGE, или как удалить действительно ненужные неиспользуемые элементы из файла - Страница 2
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Команда PURGE, или как удалить действительно ненужные неиспользуемые элементы из файла

Команда PURGE, или как удалить действительно ненужные неиспользуемые элементы из файла

Ответ
Поиск в этой теме
Непрочитано 04.06.2009, 18:35
Команда PURGE, или как удалить действительно ненужные неиспользуемые элементы из файла
AlphaGeo
 
Сообщений: n/a

Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Кто-нибудь придумал пуржить только "левое", сохраняя то, что было в указанном файле-шаблоне?
Можно задавать маски имен блоков
Код:
[Выделить все]
_.-purge;_b;*U*;_n;
_.-purge;_b;*D*;_n;
Однако есть опасность удалить неиспользуемые полезные блоки, в имени которых содержатся символы "D" или "U".
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Пока замечал, что скорость реген сильно зависит от числа узлов в границах заливок-штриховок. И от общего числа узлов всех элементов. Можно попробовать замораживать слои с Hatch на время работы с блоками.
Кстати, сегодня обратил внимание: если при штриховке часть контура приходится на дин.блок, то после завершения штрихования в файле как раз и появляются эти самые *Uxxx и *Dxxx. Видимо, происходит переопределение блоков при участии их в контуре штриховки.

Последний раз редактировалось AlphaGeo, 04.06.2009 в 18:43.
Просмотров: 18115
 
Непрочитано 08.06.2009, 21:06
#21
Кулик Алексей aka kpblc
Moderator

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


Попробуй перед $ точно так же поставить обратный апостроф.
P.S. не проверял, подобные блоки у меня удаляются лиспом обычно...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.06.2009, 22:08
#22
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,072


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Попробуй перед $ точно так же поставить обратный апостроф.
P.S. не проверял, подобные блоки у меня удаляются лиспом обычно...
По опыту предудущей сессии это, естественно, было сделано первым (см. мой второй вариант: _.-purge;_b;A`$C*;_n;). Увы, результат аналогичен. Автокад:
Enter name(s) to purge <*>: A`_n
Verify each name to be purged? [Yes/No] <Y>: _.-purge
Yes or No, please.

Такое ощущение, что знак доллара воспринимается как знак точки с запятой - даром, что они висят на одной клавише (4). А не живет ли второй знак доллара еще на какой-либо клавише? Как знак вопроса, например (в русской на 7, в английской - рядом с шифтом)? Или еще как-то это объехать?...

Последний раз редактировалось АлексЮстасу, 08.06.2009 в 22:23.
АлексЮстасу вне форума  
 
Непрочитано 08.06.2009, 22:23
#23
AlphaGeo


 
Сообщений: n/a


АлексЮстасу, а просто с клавиатуры пробовал прогнать макрос? У меня вроде срабатывает, но нет файла с блоками a la A$C18D953CB.
Код:
[Выделить все]
Команда: -очистить

Тип неиспользуемых объектов 
[Блоки/Рзмстили/Слои/типыЛин/Пстили/Формы/Тстили/Млстили/тблстИли/Зарегприл/Все]
: б
Имена удаляемых элементов <*>: A`$C*
Запрашивать подтверждение на удаление каждого элемента? [Да/Нет] <Д>: _n
Элемент с именем "A`$C*" не найден.

Команда:
Команда: *Прервано*

Команда: -ОЧИСТИТЬ


Тип неиспользуемых объектов 
[Блоки/Рзмстили/Слои/типыЛин/Пстили/Формы/Тстили/Млстили/тблстИли/Зарегприл/Все]
: б
Имена удаляемых элементов <*>: A$C*
Запрашивать подтверждение на удаление каждого элемента? [Да/Нет] <Д>: _n
Элемент с именем "A$C*" не найден.
 
 
Непрочитано 08.06.2009, 22:28
#24
Кулик Алексей aka kpblc
Moderator

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


AlphaGeo, у меня в 2008:
Код:
[Выделить все]
Command: _-purge
Enter type of unused objects to purge 
[Blocks/Dimstyles/LAyers/LTypes/MAterials/Plotstyles/SHapes/textSTyles/Mlinestyl
es/Tablestyles/Visualstyles/Regapps/All]: _b
Enter name(s) to purge <*>: A$C*
Verify each name to be purged? [Yes/No] <Y>: _n
Deleting block "A$C48AE7A7F".
Deleting block "A$C774453FF".
Deleting block "A$C7E873DAC".
3 blocks deleted.
Странно...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.06.2009, 23:00
#25
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,072


Гм... С клавиатуры и у меня сработало...

Command: _-purge
Enter type of unused objects to purge
[Blocks/Dimstyles/LAyers/LTypes/Plotstyles/SHapes/textSTyles/Mlinestyles/Tablest
yles/Regapps/All]: b
Enter name(s) to purge <*>: a$*
Verify each name to be purged? [Yes/No] <Y>: n
Deleting block "A$C18D953CB".
1 block deleted.
АлексЮстасу вне форума  
 
Непрочитано 08.06.2009, 23:24
#26
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Гм... С клавиатуры и у меня сработало...
А если маску имени блока взять в кавычки ("A$C*")?
Offtop: У меня все так же нет файла с блоками A$C... Пробовал разбивать размеры - думал от них эта зараза появляется - нифига, шиш.
Почитал Справку: символ $ вроде как используется при обозначении DIESEL-функций... Наверное, из-за этого и проблемы.
 
 
Непрочитано 08.06.2009, 23:25
#27
Кулик Алексей aka kpblc
Moderator

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


Ннда... Я б в таком случае задумывался о лиспе...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.06.2009, 02:14
#28
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,536
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Кулик Алексей aka kpblc, может вынести обсуждение в отдельную тему "Создание макроса для очистки чертежа от анонимных блоков"?
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 09.06.2009, 02:37
#29
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,072


Цитата:
Сообщение от AlphaGeo Посмотреть сообщение
А если маску имени блока взять в кавычки ("A$C*")?
Offtop: У меня все так же нет файла с блоками A$C... Пробовал разбивать размеры - думал от них эта зараза появляется - нифига, шиш.
Почитал Справку: символ $ вроде как используется при обозначении DIESEL-функций... Наверное, из-за этого и проблемы.
Кавычки не помогли. Все-таки, похоже, что символ $ воспринимается как точка с запятой...
Сейчас у меня нет под рукой настоящего блока A$C18D953CB - я его на скорую руку сконструлил сам из первого попавшегося элемента

Кулик Алексей, В таких случаях я задумываюсь о MicroStation...
До лиспа я еще не дорос...
Без шуток - известно, откуда такие адские блоки типа "A$C774453FF" вообще берутся?
АлексЮстасу вне форума  
 
Непрочитано 09.06.2009, 04:37
#30
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,536
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Без шуток - известно, откуда такие адские блоки типа "A$C774453FF" вообще берутся?
Это автоматически генерируемые Автокадом, имена.
Один из вариантов появления: ctrl+c, shift+ctrl+v
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 09.06.2009, 08:21
#31
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Кавычки не помогли. Все-таки, похоже, что символ $ воспринимается как точка с запятой...
А если записать действительно в виде LISP-выражения этот макрос?
Код:
[Выделить все]
^C^C(command "_Purge" "_b" "A$C*" "_n")
По-моему, должно сработать.
Цитата:
Сообщение от wetr Посмотреть сообщение
Кулик Алексей aka kpblc, может вынести обсуждение в отдельную тему "Создание макроса для очистки чертежа от анонимных блоков"?
Поддерживаю... Готов поспособствовать с номерами сообщений, которые стоит перенести в другую тему.
 
 
Непрочитано 09.06.2009, 08:34
#32
Кулик Алексей aka kpblc
Moderator

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


Да легко С вас номера сообщений и новое название темы.
Тем временем лисповая попытка:
Код:
[Выделить все]
(defun _dwgru-purge-blocks (mask audit / adoc)
                           ;|
*    Очистка текущего файла от неиспользуемых блоков.
*    Параметры вызова:
	mask		маска имени блока. Допустимо применение символов *, ? и т.п. nil -> "*"
	audit		выполнять или нет автоматический аудит файла. t - выполнять
*    Примеры вызова:
(_dwgru-purge-blocks "A$C*" t)
(_dwgru-purge-blocks "`*U*" t)
|;
  (vl-load-com)
  (setq mask (if mask
               (strcase mask)
               "*"
               ) ;_ end of if
        ) ;_ end of setq
  (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  (vlax-for blk_def (vla-get-blocks adoc)
    (vl-catch-all-apply
      (function
        (lambda (/ name)
          (if
            (and (equal (vla-get-islayout blk_def) :vlax-false)
                 (equal (vla-get-isxref blk_def) :vlax-false)
                 (wcmatch (strcase (cond
                                     ((vlax-property-available-p blk_def 'effectivename) (vla-get-effectivename blk_def))
                                     (t (vla-get-name blk_def))
                                     ) ;_ end of cond
                                   ) ;_ end of strcase
                          mask
                          ) ;_ end of wcmatch
                 ) ;_ end of and
             (vla-delete blk_def)
             ) ;_ end of if
          ) ;_ end of lambda
        ) ;_ end of function
      ) ;_ end of vl-catch-all-apply
    ) ;_ end of vlax-for
  (if audit
    (vla-auditinfo adoc :vlax-true)
    ) ;_ end of if
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
Особо не гонял.
---
Добавлено: www.jtbworld.com/lisp/purger.htm
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 09.06.2009 в 08:59.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.06.2009, 08:42
#33
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Да легко С вас номера сообщений и новое название темы.
Номера сообщений, переносимых в новую тему: 1251, 1253-1258, 1260, 1262, 1285.
Название... я бы предложил "Команда PURGE, или как удалить действительно ненужные неиспользуемые элементы из файла".

P.S. Это сообщение после создания новой темы и переноса сообщений можно удалить.
 
 
Непрочитано 09.06.2009, 09:03
#34
Кулик Алексей aka kpblc
Moderator

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


Сделано.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.06.2009, 17:06
#35
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,072


[quote=AlphaGeo;408058]А если записать действительно в виде LISP-выражения этот макрос?
Код:
[Выделить все]
^C^C(command "_Purge" "_b" "A$C*" "_n")
По-моему, должно сработать.

Автокад ответил:
Command: (command "_Purge" "_b" "A"_n")
Т.е. доллара не зрит напрочь, когда он не из командной строки...

Может быть текст для макроса подгружать из внешнего файла как-нибудь?
АлексЮстасу вне форума  
 
Непрочитано 09.06.2009, 17:36
#36
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


АлексЮстасу,
Код:
[Выделить все]
^C^C(command "_Purge" "_b" (strcat "A" (chr 36) "C*") "_n")
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 09.06.2009, 18:47
#37
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,072


Цитата:
Сообщение от VVA Посмотреть сообщение
АлексЮстасу,
Код:
[Выделить все]
^C^C(command "_Purge" "_b" (strcat "A" (chr 36) "C*") "_n")
Ура! Сработало!

В конце концов, что у меня получилось:
^C^C(command "_Purge" "_b" (strcat "A" (chr 36) "*") "n");_.-purge;_b;`*U*;_n;_.-purge;_b;`*D*;_n;_.-purge;_b;TerminatorO*;_n;_.-purge;_b;MAP_CLEAN*;_n;_.-purge;_b;ERR*;_n;_.-purge;_b;_AEC_*;_n;_.-purge;_d;;_n;_.-purge;_st;st*;_n;_.-purge;_st;стиль1;_n;_.audit;_y;

пуржу блоки: "A$*", "*U*", "*D*", "TerminatorO*", "MAP_CLEAN*",
"ERR*", "_AEC_*"
пуржу все стили Dimension
пуржу текстовые стили: "st*", любимый стиль "стиль1"
и делаю аудит.

спасибо ведь буквально всем!хотя, это ведь еще не решение...
АлексЮстасу вне форума  
 
Непрочитано 09.06.2009, 21:03
#38
Кулик Алексей aka kpblc
Moderator

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


Попробуй, например, код из #32 вызывать как (_dwgru-purge-blocks "A$C*,`*U*,teminator*,`*D*,_AEC_*,err*" t)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.06.2009, 02:44
#39
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,072


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Попробуй, например, код из #32 вызывать как (_dwgru-purge-blocks "A$C*,`*U*,teminator*,`*D*,_AEC_*,err*" t)
Для тупых: что такое "код из #32"?
Явочным порядком - ни из командной строки, ни с кнопки (_dwgru-purge-blocks "A$C*,`*U*,teminator*,`*D*,_AEC_*,err*" t) - не запустился...
Я же еще новичек в этом деле...
АлексЮстасу вне форума  
 
Непрочитано 10.06.2009, 02:49
#40
Кулик Алексей aka kpblc
Moderator

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


Ссылка из подписи VVA : http://dwg.ru/art/8
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Команда PURGE, или как удалить действительно ненужные неиспользуемые элементы из файла



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Вставка в таблицу поля, соотвествующего площади примитива Profan Готовые программы 272 06.06.2021 23:12
Сейсмозащита и сейсмоизоляция существующих, построенных зд. IANationalInformAgentstvo Прочее. Архитектура и строительство 216 20.01.2015 16:51
Мониторы LCD CRT Разное 94 17.06.2008 10:51
ответственность за проектную документацию zaza-noza Организация проектирования и оформление документации 3 07.03.2008 09:54
ЮМОР 2006 =) Perezz!! Разное 1122 04.01.2007 00:46