Как найти прокси объект в автокаде

  • Печать

Страницы: [1]   Вниз

Тема: Как узнать о наличии в чертеже прокси-объектов?  (Прочитано 4195 раз)

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

Встал вопрос проверки наличия в чертеже прокси объектов. Пол интернета уже облазил — единственное, что пока приходит на ум — итерация по всем объектам базы с проверкой что это прокси объекты. Но ведь когда чертеж открывается, то автокад моментально сообщает о наличии прокси. Значит эта информация хранится в БД. Как ее получить?


Записан


В общем, листая различные ссылки, остановился на варианте итерации по объектам в файле. Опираясь на эту запись сделал себе такой метод:

  1. public static bool HasProxyEntities(string file)

  2. {

  3. if (!File.Exists(file)) return false;

  4.     var db = new Database(false, true);

  5.     db.ReadDwgFile(file, FileShare.Read, true,string.Empty);

  6. using (var tr = db.TransactionManager.StartTransaction())

  7. {

  8.         var bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;

  9. foreach (var objectId in bt)

  10. {

  11.             var btr = tr.GetObject(objectId, OpenMode.ForRead) as BlockTableRecord;

  12. foreach (var objId in btr)

  13. {

  14.                 var ent = tr.GetObject(objId, OpenMode.ForRead) as Entity;

  15. if (ent.IsAProxy)

  16. return true;

  17. }

  18. }

  19. }

  20. return false;

  21. }


Записан



Записан


Александр Пекшев aka Modis
Так ты узнаешь только про прокси-примитивы. Причем тоже возможно не все. Прокси-объекты могут быть не только в блоках. Так что просматривать нужно всю базу.


Записан


Александр Ривилис, я видел Ваш комментарий в той теме, на которую ссылку давал. Но я еще не разу ни сталкивался с полной проверкой БД. Даже не знаю с чего начать и что должно быть


Записан



Записан


Александр Ривилис, без зазрения совести взял ваш код из ссылки)) Думаю, вы совершенно не против ;)
Получилось так:

  1. public static bool HasProxyEntities(string file)

  2. {

  3. // Взято у Александра Ривилиса — http://adn-cis.org/forum/index.php?topic=1060.msg5017#msg5017

  4. if (!File.Exists(file)) return false;

  5.     var db = new Database(false, true);

  6.     db.ReadDwgFile(file, FileShare.Read, true, string.Empty);

  7.     Handle firstHandle = db.BlockTableId.Handle;  // Первая метка объекта — метка таблицы блоков

  8.     Handle lastHandle = db.Handseed;              // Следующая после последней метки

  9. int nObjects = db.ApproxNumObjects;           // Приблизительное количество объектов в базе

  10. string bufferLast = lastHandle.ToString();

  11. string bufferFirst = firstHandle.ToString();

  12.     Int64 iLast = Int64.Parse(bufferLast, System.Globalization.NumberStyles.HexNumber);

  13.     Int64 iFirst = Int64.Parse(bufferFirst, System.Globalization.NumberStyles.HexNumber);

  14. using (var tr = db.TransactionManager.StartTransaction())

  15. {

  16. for (Int64 i = iFirst; i < iLast && nObjects > 0; i++)

  17. {

  18.             Handle h = new Handle(i);

  19.             ObjectId id = ObjectId.Null;

  20. if (db.TryGetObjectId(h, out id))

  21. {

  22. try

  23. {

  24.                     DBObject dbObj = tr.GetObject(id, OpenMode.ForRead, true, true);

  25. if (dbObj != null && !dbObj.IsErased && dbObj.IsAProxy)

  26. {

  27. return true;

  28. }

  29.                     nObjects—;

  30. }

  31. catch

  32. {

  33. //ignored

  34. }

  35. }

  36. }

  37.         tr.Commit();

  38. }

  39. return false;

  40. }


Записан


Не против. Я бы ещё и без транзакции обошелся.


Записан


если я правильно понял идею…

  1. public static bool HasProxyEntities(string file)

  2. {

  3. if (!File.Exists(file)) return false;

  4.             var db = new Db.Database(false, true);

  5.             db.ReadDwgFile(file, FileShare.Read, true, string.Empty);

  6.             Db.Handle firstHandle = db.BlockTableId.Handle;  // Первая метка объекта — метка таблицы блоков

  7.             Db.Handle lastHandle = db.Handseed;              // Следующая после последней метки

  8. int nObjects = db.ApproxNumObjects;           // Приблизительное количество объектов в базе

  9.             Int64 iLast = Int64.Parse(lastHandle.ToString(), System.Globalization.NumberStyles.HexNumber);

  10.             Int64 iFirst = Int64.Parse(firstHandle.ToString(), System.Globalization.NumberStyles.HexNumber);

  11. for (Int64 i = iFirst; i < iLast && nObjects > 0; i++)

  12. {

  13.                 Db.ObjectId id = db.GetObjectId(false, new Db.Handle(i), 0);

  14. bool isProxyObject = id.ObjectClass.IsDerivedFrom(Rtm.RXClass.GetClass(typeof(Db.ProxyObject)));

  15. bool isProxyEntity = id.ObjectClass.IsDerivedFrom(Rtm.RXClass.GetClass(typeof(Db.ProxyEntity)));

  16. if (!id.IsNull && !id.IsErased &&

  17. !id.IsEffectivelyErased && !isProxyObject &&

  18. !isProxyEntity && id.IsResident && id.IsValid)

  19. return true;

  20. }

  21. return false;

  22. }


Записан


А случайно вот это:

  1. Int64.Parse(lastHandle.ToString(), System.Globalization.NumberStyles.HexNumber)

не то же самое, что:

  1.  lastHandle.Value

?
А зачем проверка:

  1. nObjects > 0

выполняется в условии цикла, если в теле цикла это значение не меняется?


Записан


Как ни странно, но вариант проверки ВСЕГО мне не подходит) Вариант проверки только на наличие прокси примитивов в моем случае лучше. Ну это касаемо уже потребностей моей функции

Если создать файл в 2017 автокаде и сохранить его в 2010 версию, то в автокаде 2010 у этого файла уже появятся прокси объекты (не примитивы)


Записан


  • Печать

Страницы: [1]   Вверх

Прокси объекты в AutoCAD

— Откуда берутся прокси объекты?
— Что это такое?
— Тормозит чертёж !!!
— Не могу скопировать :-( !!!
— Вообще ничего не могу сделать с чертежом
Наверное всем знакома подобная картина.

Именно с этими вопросами подходят ко мне мои коллеги.
Прокси объекты — что же это такое?

Прокси объекты появляются  в чертеже AutoCAD  когда  чертёж создаётся с помощью  СПДС GraphiCS, MechaniCS, ProjectStudio использующих при создании чертежа собственные объекты ( например многоуровневые ссылки, отметки этажей и пр.).  Когда эти файлы открываются в чистом AutoCAD либо не совпадают версии, сборки  то AutoCAD заменяет неизвестные ему объекты на понятные ему примитивы.

Для борьбы с Proxy  используется инструмент «ExplodeProxy». Скачать можно здесь

Командой _APPLOAD вызываем окно загрузки программ

Команда EXPLODEALLPROXY:
 Разбивает вообще все proxy-объекты, неважно, где они лежат.
Команда REMOVEALLPROXY:
 Удаляет все proxy-объекты и proxy-примитивы. Ее удобно выполнять
после EXPLODEALLPROXY — тогда она удалит все прокси объекты из чертежа и не будет держать их в памяти.
Команда REMOVEEXTENTS —  Удаляет все  за пределами указанными пользователем.
После выполнения приведенных команд необходимо выполнить последовательно проверку чертежа и чистку  командами:
_AUDIT
_PURGE.

Все ваш чертёж больше не содержит Proxy объектов и готов к работе, копированию  и пр.

Всё о прокси объектах.

Прокси-объекты — это элементы, которые созданы в сторонних приложениях и импортированы в Autocad, при этом создавшее их приложение недоступно. Они обычно ограничены в возможностях по сравнению с обычными сторонними объектами, с ними не всегда корректно производятся некоторые действия, а часто они и совсем недоступны. Например, не редактируются или занимают много памяти, обладают неправильной структурой, выдают ошибку о невозможности поместить в буфер обмена. Чтобы решить эту проблему, можно либо установить приложение, в котором создавался элемент, либо удалить прокси-объект в Автокаде.

Как удалить прокси-объект в AutoCAD

Проблема в том, что таких приложений может быть не одно, а несколько разных. Многие из которых и стоят недёшево. Покупать ради такого случая программное обеспечение не имеет смысла.

Использование ExplodeAllProxy

Чтобы легко произвести удаление proxy, скачайте инструмент ExplodeProxy http://www.maestrogroup.com.ua/support/ExplodeProxy.zip. Разархивируйте его в любую папку на компьютере. Далее в Автокаде выполните следующие действия:

  1. Зайдите в «Управление».
  2. Нажмите кнопку «Приложения».
  3. Выберите из скаченной папки файл с названием, соответствующим вашей версии AutoCad и разрядности операционной системы.
  4. Нажмите «Загрузить».
    Загрузить приложение в Автокаде
  5. Также вы можете добавить этот инструмента в автозагрузки, нажав соответствующую кнопку в окне. В результате, он будет автоматически запускаться при старте программы.

ВАЖНО. При перемещении папки с ExplodeProxy в другое расположение, он не будет подгружаться в Автокад. Не перемещайте его или придётся заново добавлять в программу.

Далее нужно выполнить следующие действия:

  • После успешной загрузки программы нужно выполнить расчленение proxy-объектов. Для этого в командной строке Автокад наберите EXPLODEALLPROXY. Расчленить, или, как ещё по-другому можно сказать, «взорвать» блок, означает, что он будет разгруппирован до первоначальных элементов. Таким образом, вы сможете внести нужные изменения и снова собрать группу. В случае с proxy действие позволит избавиться от нередактируемых и некопируемых элементов.

    Команда explodeallproxy в Автокаде

    Команда explodeallproxy в Автокаде

  • Далее нужно опять же в командном окне Autocad ввести REMOVEALLPROXY. Это действие предполагает удаление всех proxy из памяти и из чертежа. Программа спросит, очистить ли список масштабов, нажмите «Да».

    Команда removeallproxy в Автокаде

    Команда removeallproxy в Автокаде

  • После успешного удаления объектов, запустите команду AUDIT. Она выполнит проверку чертежа на наличие ошибок. На вопрос, исправить ли ошибки, нажмите «Да».

Рассмотрим, как узнать, из какого именно приложения попали в документ эти proxy:

  1. Правым щелчком мыши в окне документа выберите в меню «Параметры».
  2. Перейдите на вкладку «Открытие сохранения».
  3. Поставьте галочку в пункте «Выводить окно сведений о прокси объектах».
  4. Теперь закройте и заново откройте чертёж.
  5. При открытии документа появится окно «Информация о proxy-объектах».

    Информация о proxy-объектах в Автокаде

    Информация о proxy-объектах в Автокаде

  6. В окне будут указаны названия приложений, которые не найдены и в которых создавались некоторые элементы чертежа. Также будет указано количество proxy для каждой программы.

После выполнения действий по расчленению и удалению неразделённых прокси рекомендуется выполнить команду Purge. Она позволяет очистить документ от ненужной информации, например, неиспользуемых блоков, слоёв, текстовых стилей, типов линий и элементов. Если вы просто удалите элементы, то информация о них в программе останется. Например, в списке слоёв они будут отображаться как не содержащие объектов. Чтобы полностью удалить ненужные элементы чертежа выполните следующее:

  1. Наберите команду PURGE.
  2. Появится окно со списком найденных объектов, нажмите Purge.
  3. Чтобы удалить всё в следующем диалоге нажмите «Purge all items».
  4. Повторите действия последовательно для всех групп блоков до тех пор, пока будет активна кнопка «Purge».

Таким образом, можно удалить ненужные прокси объекты и их остатки в Автокаде. Обычно просто встроенной команде «Разделить» они не поддаются и приходится применять специальную утилиту ExplodeProxy, после чего проводить проверку и чистку документа. В итоге можно будет свободно с ним работать, кроме того, благодаря этим действиям он существенно уменьшится в размере.

Почему AutoCAD не показывает прокси-графику?

Используя командную строку в AutoCAD, установите следующие переменные по желанию:

  • PROXYNOTICE — определяет, будет ли отображаться уведомление. Установите для этого параметра значение 0, чтобы отключить информационное сообщение о прокси-сервере.
  • PROXYSHOW — эта переменная управляет отображением прокси-объектов на чертеже.

Как исправить прокси-объекты в AutoCAD?

Вы можете отключить уведомление, установив для системной переменной PROXYNOTICE значение 0. Если вы не копируете чертеж с вертикалью, такой как AutoCAD Civil 3D или AutoCAD Architecture, вы, безусловно, можете избавиться от прокси-объектов. Самый простой способ сделать это — использовать команду -EXPORTtoAUTOCAD.

Где находятся прокси-объекты в AutoCAD?

При открытии чертежа может появиться диалоговое окно «Информация о прокси». В диалоговом окне сообщается общее количество прокси-объектов на чертеже (как графических, так и неграфических) и имя отсутствующего приложения, а также предоставляется дополнительная информация о типе прокси-объекта и состоянии отображения.

Как включить адаптер объектов в AutoCAD?

Адаптеры объектов, установленные для AutoCAD, будут применяться ко всему программному обеспечению на основе AutoCAD.

Решение:

  1. Перейдите в Autodesk Knowledge Network.
  2. Выберите «Поддержка и обучение».
  3. Выберите подходящее программное обеспечение (например, AutoCAD).
  4. Выберите «Загрузки».
  5. Выберите подходящую версию (пример: 2019).
  6. Прокрутите страницу вниз до «Активаторов объектов».

Что такое активатор объектов AutoCAD?

Civil Object Enabler — это бесплатное приложение, которое можно использовать для доступа к файлам чертежей Autodesk Civil 3D. Этот выпуск позволяет получать доступ к данным объектов, созданным в Autodesk Civil 3D 2020, за пределами среды Autodesk Civil 3D 2020.

Как изменить настройки прокси-сервера в AutoCAD?

Чтобы войти в настройки прокси:

  1. Щелкните стрелку вниз справа от вашего имени в верхней части окна приложения. …
  2. Нажмите «Настройки».
  3. Щелкните значок прокси.
  4. В раскрывающемся списке «Настройки прокси» выберите «Вручную».
  5. Введите информацию, предоставленную вашим сетевым администратором. …
  6. Нажмите Готово.

Что такое прокси-графика AutoCAD?

Прокси-графика хранит последнее просмотренное изображение AD-объектов, что позволяет пользователям просматривать ваш чертеж без изменения исходных объектов. Прокси-графика хранит только отображаемое представление для текущего активного видового экрана.14 мая 2019 г.

Что такое прокси-объект?

Прокси-объект действует как посредник между клиентом и доступным объектом. Цель прокси-объекта — следить за сроком жизни доступного объекта и переадресовывать вызовы доступному объекту только в том случае, если он не уничтожен. … Прокси-объект прозрачен для клиента.31 мая 2018 г.

Почему в AutoCAD не удается скопировать в буфер обмена?

Существует несколько причин, в том числе: Набор объектов содержит прокси-объекты, которыми не может управлять процесс копирования. Чертеж создается или экспортируется из стороннего приложения (не собственного продукта Autodesk). Файл чертежа поврежден.

Что такое прокси-объект AutoCAD?

Технические советы AllyCAD регулярно публикуются в ответ на более частые запросы в службу поддержки. … Прокси-объект заменяет пользовательский объект, созданный дополнительным приложением, которое недоступно в AllyCAD.

Как отключить прокси-графику в AutoCAD?

Чтобы отключить сообщение, измените переменную PROXYNOTICE на 0 (ноль). Если на чертеже отображается прокси-уведомление, но соответствующий адаптер объектов уже установлен, файл может нуждаться в восстановлении (см. раздел Восстановление поврежденных файлов AutoCAD).31 мая 2020 г.

Что такое прокси-обработчик?

Обработчик прокси для сервера приложений отвечает за получение информации об исходном клиентском запросе, который был перехвачен прокси-сервером (в данном случае балансировщиком нагрузки) и перенаправлен на сервер приложений, а также за предоставление этой информации веб-приложению. (размещен на…

Как использовать активатор объектов Civil 3d?

Решения

  1. Шаг 1: Загрузите и установите Civil Option Enabler. Civil Object Enabler позволяет открывать и выполнять работу с 3D-чертежами, созданными в AutoCAD Civil 3D. …
  2. Шаг 2: Убедитесь, что вы видите прокси-объекты. Введите Op в командной строке и нажмите Enter, чтобы открыть диалоговое окно CAD Options.

Custom objects provide additional capabilities to the program and related products. When the application that created the custom object is not available, a proxy object is substituted in its place.

A custom object is a type of object created by an ObjectARX
®
(AutoCAD Run-Time Extension) application, which typically has more specialized capabilities than standard AutoCAD or AutoCAD LT objects. Custom objects include parametric solids (AutoCAD
®
Mechanical), intelligently interactive door symbols (AutoCAD
®
Architecture), polygon objects (AutoCAD
®
Map 3D), and associative dimension objects (AutoCAD and AutoCAD LT).

In addition to Autodesk, many software vendors use ObjectARX to write programs that create graphical and nongraphical custom objects that are useful in their AutoCAD based applications.

Proxy Objects

A proxy object is a substitute for a custom object when the ObjectARX application that created the custom object is not available to AutoCAD, AutoCAD LT, or other host applications. Later, when the application is available, the proxy object is replaced by the custom object.

Proxy objects have significantly reduced capabilities compared to their corresponding custom objects. The extent to which proxy objects can be edited is determined by the parent ObjectARX application. For example, operations such as erasing and moving an object, or changing object properties, may or may not be possible on a proxy object, depending on the application that created it.

When you open a drawing, you might see a Proxy Information dialog box. The dialog box tells you the total number of proxy objects in the drawing (both graphical and nongraphical) and the name of the missing application and provides additional information about the proxy object type and display state. You can use the dialog box to control the display of proxy objects.

Object Enablers

An object enabler is a tool that provides specific viewing and standard editing access to a custom object in the host applications when the application that created the custom object is not present.

Object Enablers allow custom objects in a drawing to behave with more intelligence than proxy graphics. Object enablers also facilitate workgroup collaboration when using other Autodesk products.

If the ObjectARX application is not installed on your system, you can check for available Object Enablers on the Web. For example, if you receive a drawing that contains objects that were created in AutoCAD Architecture, but you don’t have that application installed on your system, the AEC Object Enabler is downloaded so you can view those drawings as they were intended.

To search for currently available Object Enablers, go to
https://www.autodesk.com/enablers.

Object Classification

If an application such as AutoCAD
®
Map 3D was used to add a feature (object) classification to an object, you can view the classification in the Properties palette in the Class Name entry. If the object’s classification is missing from the associated classification (XML) file, or if the associated classification file is missing, an exclamation mark is displayed in the Class Name entry. For information about what is required to create a feature classification, see the AutoCAD
®
Map 3D documentation.

You can also use the Quick Select feature to select objects by their Class names and Class properties.

Понравилась статья? Поделить с друзьями:
  • Суп получился не наваристый как исправить
  • Колесо ходит восьмеркой на велосипеде как исправить
  • Как найти центр равносторонней гиперболы
  • Как найти энергию фотона до рассеяния
  • Как исправить сына гея