REMOVEALLPROXY

Автор Тема: REMOVEALLPROXY  (Прочитано 94027 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн T72Автор темы

  • ADN Club
  • Сообщений: 23
  • Карма: 4
Re: REMOVEALLPROXY
« Ответ #75 : 21-11-2014, 12:21:18 »
Цитата: T72 от 21-11-2014, 12:09:06

    Огрызок от файла

Я не нашёл в этом файле ни одного proxy.
8 прокси там, нужно открыть в обычном автокаде и отключить энейблеры, если таковые имеются.

Оффлайн T72Автор темы

  • ADN Club
  • Сообщений: 23
  • Карма: 4
Re: REMOVEALLPROXY
« Ответ #76 : 21-11-2014, 12:23:38 »
Но нигде нет tmpObj.Erase(); :(
Так что или код у тебя работает не всегда, или на форуме не окончательный код. Проверь пожалуйста.
Да вы правы, имеет место досадная невнимательность, добавил, но и без нее работало. Ошибка с COGO точкой возникает при EXPLODEALLPROXY, а не REMOVEALLPROXY.

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: REMOVEALLPROXY
« Ответ #77 : 21-11-2014, 12:24:35 »
8 прокси там, нужно открыть в обычном автокаде и отключить энейблеры, если таковые имеются.
я добавил UPD в предыдущем сообщении.

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: REMOVEALLPROXY
« Ответ #78 : 21-11-2014, 12:31:56 »
8 прокси там
у меня показывает следующие цифры:
Цитировать
Command: proxy
21 ProxyEntity and 2583 ProxyObject items found.
Голый AutoCAD 2009.

Попытка выполнить команду xproxy (взорвать все ProxyEntity) привела к Fatal Error:
Цитировать
Unhandled Access Violation Reading 0x0008 Exception at 8d0076h

Спасибо за файл, буду дальше тестить.

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: REMOVEALLPROXY
« Ответ #79 : 21-11-2014, 12:36:39 »
Fatal Error происходит в коде метода ExplodeProxyEntity в строке кода
Код - C# [Выбрать]
  1. Db.BlockTableRecord btr = tr.GetObject(
  2.         proxyEntity.BlockId, Db.OpenMode.ForWrite, false)
  3.         as Db.BlockTableRecord;
Текст:
Цитировать
System.AccessViolationException occurred
  Message=Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
  Source=acdbmgd
  StackTrace:
       at AcDbEntity.blockId(AcDbEntity* , AcDbObjectId* )
       at Autodesk.AutoCAD.DatabaseServices.Entity.get_BlockId()
       at Bushman.CAD.ExtensionMethods.ExplodeProxyEntity(ObjectId proxyEntityId, Boolean& handOverTo_called) in c:\Users\developer\Documents\Visual Studio 2013\Projects\DwgResave_solution\DwgRecovery_x64\ExtensionMethods.cs:line 202
  InnerException:
Причину ошибки нашёл, исправил. Чуть позже обновлю исходники.

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: REMOVEALLPROXY
« Ответ #80 : 21-11-2014, 12:50:45 »
Обновил исходники в #56
Взрывы и расчленения прокси на обозначенном T72 файле (да и вообще в любом DWG) проходят без всяких блоков try\catch, тем самым существенно сокращая время обработки.

P.S. T72, благодарю за DWG файл, с его помощью я нашёл и исправил ошибку в своём коде.

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: REMOVEALLPROXY
« Ответ #81 : 21-11-2014, 13:19:22 »
Маленькое пояснение: в моём коде присутствует такой try\catch:
Код - C# [Выбрать]
  1. try {
  2.     proxyEntity.Explode(newDBObjects);
  3. }
  4. catch {
  5. }
его присутствие обусловлено тем, что мои оригинальные исходники несколько отличаются от тех, которые я опубликовываю на данном форуме. В оригинале компиляция попутно идёт и под др. CAD системы. Наличие данного блока try\catch обусловлено тем, что BricsCAD генерирует исключение при попытке взорвать некоторые ProxyEntity. Поскольку исходники одни и те же на все интересующие меня CAD системы, то я и добавил этот блок try\catch. Если компилировать только под AutoCAD, то операцию расчленения прокси элемента можно вытащить из try\catch (при желании), т.к. в AutoCAD всё взрывается успешно, без генерации Exceptions.

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: REMOVEALLPROXY
« Ответ #82 : 22-12-2014, 20:15:13 »
Обновлённая, полная версия исходников показана здесь. Исправлены найденные ошибки, добавлены более развёрнутые комментарии в код.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: REMOVEALLPROXY
« Ответ #83 : 28-08-2015, 21:03:43 »
Отделил оффтопик: http://adn-cis.org/forum/index.php?topic=2956.0
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: REMOVEALLPROXY
« Ответ #84 : 03-09-2015, 13:06:54 »
Внёс необходимые правки в исходный код, опубликованный ранее в блоге (была выявлена проблема с использованием "точки входа" в accoreconsole.exe) и перекомпилировал приложение. Проверил работу кода в AutoCAD 2009-2016 (acad.exe) и AutoCAD 2013-2016 (accoreconsole.exe). Перезалил архив по обозначенной в блоге ссылке, содержащей откомпилированную версию приложения.

Изменения:
1. Для accoreconsole.exe добавил отдельную точку входа (см. readme.txt).
2. Обновил содержимое файла readme.txt.
3. Убрал из исходного кода использование псевдонимов для пространств имён.
4. Отредактировал и опубликовал код "точки входа".

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: REMOVEALLPROXY
« Ответ #85 : 03-09-2015, 14:21:26 »
В соответствии с изменениями, указанными здесь, внёс исправления в исходный код, перекомпилировал его и перезалил архив.

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: REMOVEALLPROXY
« Ответ #86 : 22-09-2015, 16:14:37 »
Закинул исходники на GitHub.

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: REMOVEALLPROXY
« Ответ #87 : 23-09-2015, 20:18:46 »
По совету Алексея Кулика посмотрел в сторону BitBucket. Ознакомившись решил, что условия его использования и предоставляемые возможности для меня более приемлемы чем то, что предоставляет GitHub. Один из ключевых плюсов (для меня), при схожем наборе предоставляемых возможностей - это возможность бесплатно создавать private репозитории. В виду этого я перенёс репозиторий cadproxy на BitBucket, после чего удалил свой GitHub-аккаунт.

Оффлайн Владимир Азарко

  • ADN Club
  • Сообщений: 3
  • Карма: 3
  • Skype: azarko67
Re: REMOVEALLPROXY
« Ответ #88 : 03-10-2015, 18:52:46 »
В виду этого я перенёс репозиторий cadproxy на BitBucket, после чего удалил свой GitHub-аккаунт.
Андрей, в файле readme ссылка FEEDBACK осталась на github

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: REMOVEALLPROXY
« Ответ #89 : 03-10-2015, 20:45:48 »
Андрей, в файле readme ссылка FEEDBACK осталась на github
Исправил. Кстати, удалить профиль на GitHub, в свете перехода на BitBucket, было опрометчивым решением, т.к. он может пригодиться при работе с чужими проектами, размещёнными на нём. В виду этого профиль был на всякий случай восстановлен.