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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > ObjectARX. Расчленение и удаление proxy-объектов

ObjectARX. Расчленение и удаление proxy-объектов

Ответ
Поиск в этой теме
Непрочитано 25.10.2007, 12:08 5 |
ObjectARX. Расчленение и удаление proxy-объектов
Profan
 
Москва
Регистрация: 25.12.2005
Сообщений: 13,627

Оригинал темы находится на форуме caduser.ru.

Автор программы Александр Ривилис.

Команда EXPLODEALLPROXY:
Разбивает вообще все proxy-объекты, неважно, где они лежат.
Команда REMOVEALLPROXY:
Удаляет все proxy-объекты и proxy-примитивы. Ее удобно выполнять
после EXPLODEALLPROXY — тогда она удалит все то, что не удалось расчленить.
================================================================================
Для вызова из VisualLisp:
(ExplodeProxyEntity ent)
ent — имя примитива вида <entity name: 321456465465465>. Расчленяет только этот
примитив, даже если он входит в блок.
Например: (explodeproxyentity (car (nentsel)))
(ExplodeAllProxyInBlock "имя блока")
Этой функции можно передавать не только имя блока, но и имя примитива внутри блока.
Например: (explodeallproxyinblock (car (nentsel)))
расчленит все прокси в блоке, на который указали.
Функции возвращают следующие значения:
0 success — успешное завершение
-1 parmerr — ошибка передачи параметра
-2 openerr — ошибка открытия proxy-объекта
-3 explerr — ошибка разбития proxy
-4 appenderr — ошибка добавления "состава" proxy в файл dwg.
-5 eraseerr — ошибка удаления исходного объекта.
Во всех случаях, кроме success и appenderr, требуется провести _AUDIT для файла.
arx-файлы для AutoCAD 2004...2021 находятся здесь: https://adn-cis.org/assets/files
Важно! Перед применением обязательно читайте README.TXT - он существует не просто так и несет в себе необходимую информацию!

Последний раз редактировалось Кулик Алексей aka kpblc, 20.11.2020 в 19:42.
Просмотров: 558422
 
Непрочитано 22.01.2013, 14:00
#81
Gmk17

САПРовод
 
Регистрация: 22.01.2013
Красноярск
Сообщений: 290


Уважаемый Автор, подскажите - можно ли вашей программой вычистить из файла только proxy-объекты "без графики"? А остальные proxy, в случае их наличия, оставить как есть. Насколько я понял, по-умолчанию удаляются все объекты.
Миниатюры
Нажмите на изображение для увеличения
Название: no_graphic_proxy.png
Просмотров: 405
Размер:	36.2 Кб
ID:	94924  
Gmk17 вне форума  
 
Непрочитано 22.01.2013, 16:09
#82
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,405
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Gmk17 Посмотреть сообщение
Уважаемый Автор, подскажите - можно ли вашей программой вычистить из файла только proxy-объекты "без графики"? А остальные proxy, в случае их наличия, оставить как есть. Насколько я понял, по-умолчанию удаляются все объекты.
В том виде как поставлена задача сделать нельзя, но можно расчленить все прокси с графикой в обычные примитивы AutoCAD при помощи команды EXPLODEALLPROXY, а затем уже удалить все оставшиеся при помощи REMOVEALLPROXY.
Удаление только прокси без графики вероятно приведет к фатальной ошибке AutoCAD при открытии такого чертежа в том приложении, в котором этот чертеж был сделан (в данном случае в GeoniCS)

Последний раз редактировалось Александр Ривилис, 22.01.2013 в 17:47.
Александр Ривилис вне форума  
 
Непрочитано 22.01.2013, 17:34
#83
kha

BIM, С#, AutoCAD, LISP
 
Регистрация: 15.03.2006
Дуброво
Сообщений: 657


Так и делаю всё время. Сначала EXPLODEALLPROXY, затем REMOVEALLPROXY. Чтобы не вбивать каждый раз вручную команды - сделал кнопочку с макросом: ^C^CExplodeallproxy;^C^CRemoveAllProxy;^C^C_Audit;_y;
__________________
"Молодой человек, Вы не представляете всей широты поставленной перед Вами задачи." © Панкратова Г.Е.
kha вне форума  
 
Непрочитано 20.08.2013, 07:52 Проблема с прокси
#84
kropalik2010


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


Доброго времени суток! У меня такая проблема, имеется чертеж экспортированный из топоплана, при попытке скопировать объекты в автокаде вылетает ошибка "Копирование в буфер не выполнено". Варианты с explodeallproxy и removeallproxy пробовал, ничего абсолютно не происходит.Найдено 0 удалено 0 . Что делать?
kropalik2010 вне форума  
 
Непрочитано 20.08.2013, 09:28
#85
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,405
Отправить сообщение для Александр Ривилис с помощью Skype™


Ну значит прокси в этом чертеже нет. Без самого чертежа ничего сказать не могу.
Александр Ривилис вне форума  
 
Непрочитано 20.08.2013, 09:41
#86
kropalik2010


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


Хорошо. Прикладываю файл. Просто раньше все работало как часы а сейчас вот такая ситуация. AutoCAD 2010
Вложения
Тип файла: rar Архив WinRAR.rar (11.3 Кб, 156 просмотров)
kropalik2010 вне форума  
 
Непрочитано 20.08.2013, 09:54
#87
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,405
Отправить сообщение для Александр Ривилис с помощью Skype™


Сохрани как dwg-файл. Открой чертеж через восстановление (команда _RECOVER) - в чертеже ошибки.
Александр Ривилис вне форума  
 
Непрочитано 20.08.2013, 09:57
#88
kropalik2010


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


И из-за этого не происходит копирование в буфер?
Дело в том что даже те файлы которые я обрабатывал до этого никак не реагируют на команды и копирование недоступно. Хотя раньше все получалось.
kropalik2010 вне форума  
 
Непрочитано 20.08.2013, 09:58
#89
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,405
Отправить сообщение для Александр Ривилис с помощью Skype™


Да.
Александр Ривилис вне форума  
 
Непрочитано 20.08.2013, 10:03
#90
kropalik2010


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


Безрезультатно. Команда _RECOVERY неизвестна 2010 автокаду, а команда ВОССТАН не дает результатов.
kropalik2010 вне форума  
 
Непрочитано 20.08.2013, 13:26
#91
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,405
Отправить сообщение для Александр Ривилис с помощью Skype™


Повторюсь.
1. Открываешь свой dxf-файл.
2. Сохраняешь его как dwg-файл.
3. Закрываешь файл.
4. Запускаешь ВОССТАН (_RECOVER)
Получаешь приблизительно такой протокол:
Drawing recovery.
Drawing recovery log.


Validating objects in the handle table.
Valid objects 737 Invalid objects 0
Validating objects completed.

Reading handle 27 object type AcDbDimStyleTableRecord
Error 67 (eDwgObjectImproperlyRead) Object discarded

Replacing dimension style table record at index 0.


Salvaged database from drawing.


Auditing Header


Auditing Tables


Auditing Entities Pass 1

Pass 1 200 objects auditedAcDbHatch(15D) Boundary Undefined
Remove Associativity
Pass 1 700 objects audited
Auditing Entities Pass 2

AcDbDimStyleTableRecord: "$RECOVER_130820122018-0"
Not in Table Added
Pass 2 700 objects audited
Auditing Blocks


2 Blocks audited

Total errors found 3 fixed 3

Erased 1 objects

5. После этого всё прекрасно копируется.
Проверял в AutoCAD 2008 и 2011. К прокси это всё не имеет никакого отношения.
Александр Ривилис вне форума  
 
Непрочитано 20.08.2013, 19:08
#92
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Александр Ривилис
Открой чертеж через восстановление (команда _RECOVER) - в чертеже ошибки.
Цитата:
Сообщение от kropalik2010 Посмотреть сообщение
Безрезультатно. Команда _RECOVERY неизвестна 2010 автокаду
И это не удивительно...

@kropalik2010,
Ничего лишнего не замечаешь в своём сообщении?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 18.12.2013, 10:56
#93
Андрей 777


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


Здравствуйте коллеги!
Возникла проблема с файлом AutoCad, в виде непомерно огромного размера.
Все известные мне способы уменьшения уже опробованы, в том числе и программа Александра Ривилиса для удаления прокси.
Пишет, что в файле 530 000 объектов, хотя визуально файлик полностью пустой.
Скорее всего кто-то уже сталкивался с такими же проблемами.
Буду благодарен за любую информационную помощь.
Установлен AutoCad 2013, без каких либо надстроек.
PS^Сам исходный файлик от Заказчика, о его истории сказать ничего не могу. Естественно, что на нем были кое-какие чертежи, но на их полное удаление размер файла ни как не отреагировал.
Вложения
Тип файла: zip 2013-12-02_ГлВход777.zip (8.41 Мб, 114 просмотров)
Андрей 777 вне форума  
 
Непрочитано 18.12.2013, 19:38
#94
VVA

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


Андрей 777,
1. Если выполнить _-purge _R * _N (удаление зарегистированных приложений), то можно увидеть, что их там набралось 44 штуки
Цитата:
Команда: _-PURGE

Тип неиспользуемых объектов [Блоки/стилиВЫносныхэлементов/Рзмстили/Группы/Слои/типыЛин/мАтериалы/мвЫноскастиль/Пстили/Формы/Тстили/Млстили/стиливидовРАзрезов/тблстИли/визУальные стили/Зарегприл/геометрия Нулевой длины/пустыЕ текстовые объекты/Все]: З
Имена удаляемых элементов <*>:
Запрашивать подтверждение на удаление каждого элемента? [Да/Нет] <Д>: Н
Удаление зарегистрированное приложение "ACAD_DIMASSOC_CALC_DIMLFAC".
Удаление зарегистрированное приложение "ACAD_DIMASSOC_DIMLFAC".
Удаление зарегистрированное приложение "ACAD_DIMASSOC_OVERRIDDEN_DIMLFAC".
Удаление зарегистрированное приложение "ACAD_DSTYLE_DIMARC_LENGTH_SYMBOL".
Удаление зарегистрированное приложение "ACAD_DSTYLE_DIMEXT_LENGTH".
Удаление зарегистрированное приложение "ACAD_DSTYLE_DIMJOGGED_JOGANGLE_SYMBOL".
Удаление зарегистрированное приложение "ACAD_EXEMPT_FROM_CAD_STANDARDS".
Удаление зарегистрированное приложение "ACAD_MLEADERVER".
Удаление зарегистрированное приложение "ACAD_OBJECT_CHANGE_GUID".
Удаление зарегистрированное приложение "AcAecLayerStandard".
Удаление зарегистрированное приложение "ACAUTHENVIRON".
Удаление зарегистрированное приложение "AcCmTransparency".
Удаление зарегистрированное приложение "AcDbAttr".
Удаление зарегистрированное приложение "AcDbBlockArrayActionTag".
Удаление зарегистрированное приложение "AcDbBlockRepBTag".
Удаление зарегистрированное приложение "AcDbBlockRepETag".
Удаление зарегистрированное приложение "AcDbDynamicBlockGUID".
Удаление зарегистрированное приложение "AcDbDynamicBlockTrueName".
Удаление зарегистрированное приложение "AcLayerTools".
Удаление зарегистрированное приложение "AcMapDMDisplayStyleRegapp".
Удаление зарегистрированное приложение "AEC_XDATA_BOUND_SPACE".
Удаление зарегистрированное приложение "AeccLand90".
Удаление зарегистрированное приложение "AeccUiMgr".
Удаление зарегистрированное приложение "AeccUiModel".
Удаление зарегистрированное приложение "AeccUiQTO".
Удаление зарегистрированное приложение "AeccUiQTOEntityPayItemData".
Удаление зарегистрированное приложение "AeccUiQTOFreqUsedPayItemsList".
Удаление зарегистрированное приложение "AeccUiQTOPayItemCategoryFilePath".
Удаление зарегистрированное приложение "AeccUiQTOPayItemFilePath".
Удаление зарегистрированное приложение "AeccUiQTOPayItemFormulaExpression".
Удаление зарегистрированное приложение "AeccUiQTOPayItemFormulaFilePath".
Удаление зарегистрированное приложение "AeccUiQTOPayItemFormulaParameters".
Удаление зарегистрированное приложение "AeccUiQTOPayItemSpecBookVersionFloridaDOT".
Удаление зарегистрированное приложение "AeccUiQTOTransportDesignerFileFloridaDOT".
Удаление зарегистрированное приложение "GradientColor1ACI".
Удаление зарегистрированное приложение "GradientColor2ACI".
Удаление зарегистрированное приложение "MB_AREA".
Удаление зарегистрированное приложение "MC_VERSION_DATA".
Удаление зарегистрированное приложение "MCS_DIM1".
Удаление зарегистрированное приложение "MCS_DOCUMENT_ID".
Удаление зарегистрированное приложение "MCS_PARAMS_DATA".
Удаление зарегистрированное приложение "McsXdata5".
Удаление зарегистрированное приложение "RAK".
Удаление зарегистрированное приложение "TOPOPLAN".
Удалено 44 зарегистрированные приложения.

2. Если пристальнее посмотреть на словари автокада,
Код:
[Выделить все]
(mapcar 'cdr(vl-remove-if-not '(lambda(x)(= (car x) 3))(entget(namedobjdict))))
то увидим, что там есть много чего подозрительного
Цитата:
("ACAD_BACKGROUND" "ACAD_CIP_PREVIOUS_PRODUCT_INFO" "ACAD_COLOR" "ACAD_DETAILVIEWSTYLE" "ACAD_DGNLINESTYLECOMP" "ACAD_FIELDLIST" "ACAD_GROUP" "ACAD_IMAGE_VARS" "ACAD_LAYOUT" "ACAD_MATERIAL" "ACAD_MLEADERSTYLE" "ACAD_MLINESTYLE" "ACAD_PLOTSETTINGS" "ACAD_PLOTSTYLENAME" "ACAD_SCALELIST" "ACAD_SECTIONVIEWSTYLE" "ACAD_TABLESTYLE" "ACAD_VISUALSTYLE" "ACAD_WIPEOUT_VARS" "AcDbVariableDictionary" "ADE_QUERY_LIBRARY" "AEC_CLASSIFICATION_SYSTEM_DEFS" "AEC_DISP_REP_CONFIGURATIONS" "AEC_DISP_REP_SETS" "AEC_DISP_REPS" "AEC_DISPLAY_PROPS_DEFAULTS" "AEC_PROPERTY_SET_DEFS" "AEC_VARS" "ASE_INDEX_DICTIONARY" "Autodesk_MAP" "BNS_VARIABLES" "MCS_STREAM_DICT" "{24DE2741-47F6-4298-B91B-737E814BAE3E}")
3. Если попробовать удалить все словари, которые удаляются, то получим результат во вложении
Код:
[Выделить все]
(mapcar
 '(lambda(d)
  (vl-catch-all-apply '(lambda()(dictremove (namedobjdict) d))))
 (mapcar 'cdr(vl-remove-if-not '(lambda(x)(= (car x) 3))(entget(namedobjdict))))
)
4. Для удаления всех словарей кроме автокадовских берем из поста #98 ниже или смотрим команду DR отсюда

PS
Еще про словари здесь http://proekt.by/programmi_dlya_proe...-t38702.0.html
http://forum.dwg.ru/showthread.php?p...77#post1308077
Вложения
Тип файла: dwg
DWG 2013
2013-12-02_ГлВход777-1.dwg (56.2 Кб, 5538 просмотров)
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 30.05.2015 в 11:48.
VVA вне форума  
 
Непрочитано 19.12.2013, 12:36
#95
Андрей 777


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


Здравствуйте Владимир (VVA) !
Спасибо за быстрый ответ.
Лисп подгрузил, все отлично. По всем пунктам Вашего сообщения точно так, как Вы и написали (хотя честно признаться слова про подозрительность п.2 для меня "дремучий лес").
Что это за словари то такие? :-)) (вопрос риторический)
СПАСИБО!!!
Андрей 777 вне форума  
 
Непрочитано 10.02.2014, 11:56
#96
Archidar


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


а как этот код подгрузить? команды defun здесь нет и тогда что считать главной функцией? просто скопировать в командную строку?
Archidar вне форума  
 
Непрочитано 10.02.2014, 11:59
#97
Кулик Алексей aka kpblc
Moderator

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


readme прочитай, который в архиве.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.02.2014, 13:54
2 | #98
VVA

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


Цитата:
Сообщение от Archidar Посмотреть сообщение
а как этот код подгрузить? команды defun здесь нет и тогда что считать главной функцией? просто скопировать в командную строку?
Вариант в виде команды
Код:
[Выделить все]
(defun C:DR ()
(mapcar
'(lambda(d)
(vl-catch-all-apply '(lambda()(dictremove (namedobjdict) d))))
(mapcar 'cdr(vl-remove-if-not '(lambda(x)(= (car x) 3))(entget(namedobjdict))))
) )
В командной строке набирать DR (Dict Remove)
=== Добавлено
Вариант со списком игнорируемых словарей + purge + audit
Код:
[Выделить все]
(defun c:dr (/ notdelete adoc)
;;;notdelete список неудаляемых словарей
 (vl-load-com)
(setq adoc      (vla-get-activedocument (vlax-get-acad-object)) 
      notdelete  '("ACAD_IMAGE_DICT" "ACAD_COLOR" "ACAD_FIELDLIST" "ACAD_GROUP" "ACAD_IMAGE_VARS"
            "ACAD_LAYOUT" "ACAD_MATERIAL" "ACAD_MLEADERSTYLE" "ACAD_MLINESTYLE" "ACAD_PLOTSETTINGS"
            "ACAD_PLOTSTYLENAME" "ACAD_SCALELIST" "ACAD_TABLESTYLE" "ACAD_VISUALSTYLE" "ACAD_WIPEOUT_VARS"
            "ACAD_PDFDEFINITIONS" "ACAD_DWFDEFINITIONS" "ACAD_BACKGROUND" "ACAD_CIP_PREVIOUS_PRODUCT_INFO" "ACAD_COLOR" 
            "ACAD_DETAILVIEWSTYLE" "ACAD_SECTIONVIEWSTYLE" "AcAec" "AcDbVariableDictionary" "AcDsDecomposeData"
            "ADE_QUERY_LIBRARY" "AEC_CLASSIFICATION_SYSTEM_DEFS" "AEC_DISP_REP_CONFIGURATIONS" "AEC_DISP_REP_SETS"
            "AEC_DISP_REPS" "AEC_DISPLAY_PROPS_DEFAULTS" "AEC_PROPERTY_SET_DEFS" "AEC_VARS" "ASE_INDEX_DICTIONARY"
            "Autodesk_MAP" )
) ;_ end of setq 
  (vla-startundomark adoc)
  (mapcar
    '(lambda (d)
       (vl-catch-all-apply '(lambda ()
                              (if (not (member d notdelete))
                                (dictremove (namedobjdict) d)
                                ) ;_ end of if
                              ) ;_ end of lambda
                           ) ;_ end of vl-catch-all-apply
       ) ;_ end of lambda
    (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 3)) (entget (namedobjdict))))
    ) ;_ end of mapcar
  (repeat 3 (vla-purgeall adoc))
  (vla-auditinfo adoc :vlax-true)
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
Для удаления всех словарей кроме автокадовских смотрим команду DR отсюда
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 28.09.2016 в 08:50.
VVA вне форума  
 
Непрочитано 29.05.2014, 14:45
#99
andrewsta12


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


Здравствуйте! Проблема: в присланном файле не отображается половина объектов. Быстрым выбором по acad_proxy_entity выдает больше 3000 proxy-объектов.
1. Отображение proxy включено
2. Explodeallproxy не находит ни одного proxy
Файл во вложении.
Вложения
Тип файла: dwg
DWG 2007
_12-16 тип.этаж(планы).dwg (1.95 Мб, 3962 просмотров)
andrewsta12 вне форума  
 
Непрочитано 29.05.2014, 14:49
#100
Кулик Алексей aka kpblc
Moderator

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


66 зарегистрированных приложений...
И я далеко не уверен, что "неотображаемые" объекты там вообще были.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > ObjectARX. Расчленение и удаление proxy-объектов

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление объектов из пространства листа paradoxvaha Программирование 9 24.08.2007 14:25
Удаление объектов, сделанных недоступным ObjectARX-прил. жертва нашизма AutoCAD 11 25.07.2006 09:37
Удаление дублируюшихся объектов Арлинг AutoCAD 2 25.04.2004 13:56