Прокси-объекты — это элементы, которые созданы в сторонних приложениях и импортированы в Autocad, при этом создавшее их приложение недоступно. Они обычно ограничены в возможностях по сравнению с обычными сторонними объектами, с ними не всегда корректно производятся некоторые действия, а часто они и совсем недоступны. Например, не редактируются или занимают много памяти, обладают неправильной структурой, выдают ошибку о невозможности поместить в буфер обмена. Чтобы решить эту проблему, можно либо установить приложение, в котором создавался элемент, либо удалить прокси-объект в Автокаде.
Проблема в том, что таких приложений может быть не одно, а несколько разных. Многие из которых и стоят недёшево. Покупать ради такого случая программное обеспечение не имеет смысла.
Использование ExplodeAllProxy
Чтобы легко произвести удаление proxy, скачайте инструмент ExplodeProxy http://www.maestrogroup.com.ua/support/ExplodeProxy.zip. Разархивируйте его в любую папку на компьютере. Далее в Автокаде выполните следующие действия:
- Зайдите в «Управление».
- Нажмите кнопку «Приложения».
- Выберите из скаченной папки файл с названием, соответствующим вашей версии AutoCad и разрядности операционной системы.
- Нажмите «Загрузить».
- Также вы можете добавить этот инструмента в автозагрузки, нажав соответствующую кнопку в окне. В результате, он будет автоматически запускаться при старте программы.
ВАЖНО. При перемещении папки с ExplodeProxy в другое расположение, он не будет подгружаться в Автокад. Не перемещайте его или придётся заново добавлять в программу.
Далее нужно выполнить следующие действия:
- После успешной загрузки программы нужно выполнить расчленение proxy-объектов. Для этого в командной строке Автокад наберите EXPLODEALLPROXY. Расчленить, или, как ещё по-другому можно сказать, «взорвать» блок, означает, что он будет разгруппирован до первоначальных элементов. Таким образом, вы сможете внести нужные изменения и снова собрать группу. В случае с proxy действие позволит избавиться от нередактируемых и некопируемых элементов.
Команда explodeallproxy в Автокаде
- Далее нужно опять же в командном окне Autocad ввести REMOVEALLPROXY. Это действие предполагает удаление всех proxy из памяти и из чертежа. Программа спросит, очистить ли список масштабов, нажмите «Да».
Команда removeallproxy в Автокаде
- После успешного удаления объектов, запустите команду AUDIT. Она выполнит проверку чертежа на наличие ошибок. На вопрос, исправить ли ошибки, нажмите «Да».
Рассмотрим, как узнать, из какого именно приложения попали в документ эти proxy:
- Правым щелчком мыши в окне документа выберите в меню «Параметры».
- Перейдите на вкладку «Открытие сохранения».
- Поставьте галочку в пункте «Выводить окно сведений о прокси объектах».
- Теперь закройте и заново откройте чертёж.
- При открытии документа появится окно «Информация о proxy-объектах».
Информация о proxy-объектах в Автокаде
- В окне будут указаны названия приложений, которые не найдены и в которых создавались некоторые элементы чертежа. Также будет указано количество proxy для каждой программы.
После выполнения действий по расчленению и удалению неразделённых прокси рекомендуется выполнить команду Purge. Она позволяет очистить документ от ненужной информации, например, неиспользуемых блоков, слоёв, текстовых стилей, типов линий и элементов. Если вы просто удалите элементы, то информация о них в программе останется. Например, в списке слоёв они будут отображаться как не содержащие объектов. Чтобы полностью удалить ненужные элементы чертежа выполните следующее:
- Наберите команду PURGE.
- Появится окно со списком найденных объектов, нажмите Purge.
- Чтобы удалить всё в следующем диалоге нажмите «Purge all items».
- Повторите действия последовательно для всех групп блоков до тех пор, пока будет активна кнопка «Purge».
Таким образом, можно удалить ненужные прокси объекты и их остатки в Автокаде. Обычно просто встроенной команде «Разделить» они не поддаются и приходится применять специальную утилиту ExplodeProxy, после чего проводить проверку и чистку документа. В итоге можно будет свободно с ним работать, кроме того, благодаря этим действиям он существенно уменьшится в размере.
- Печать
Страницы: [1] Вниз
Тема: Как узнать о наличии в чертеже прокси-объектов? (Прочитано 4189 раз)
0 Пользователей и 1 Гость просматривают эту тему.
Встал вопрос проверки наличия в чертеже прокси объектов. Пол интернета уже облазил – единственное, что пока приходит на ум – итерация по всем объектам базы с проверкой что это прокси объекты. Но ведь когда чертеж открывается, то автокад моментально сообщает о наличии прокси. Значит эта информация хранится в БД. Как ее получить?
Записан
В общем, листая различные ссылки, остановился на варианте итерации по объектам в файле. Опираясь на эту запись сделал себе такой метод:
-
public static bool HasProxyEntities(string file)
-
{
-
if (!File.Exists(file)) return false;
-
var db = new Database(false, true);
-
db.ReadDwgFile(file, FileShare.Read, true,string.Empty);
-
using (var tr = db.TransactionManager.StartTransaction())
-
{
-
var bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
-
foreach (var objectId in bt)
-
{
-
var btr = tr.GetObject(objectId, OpenMode.ForRead) as BlockTableRecord;
-
foreach (var objId in btr)
-
{
-
var ent = tr.GetObject(objId, OpenMode.ForRead) as Entity;
-
if (ent.IsAProxy)
-
return true;
-
}
-
}
-
}
-
return false;
-
}
Записан
Записан
Александр Пекшев aka Modis
Так ты узнаешь только про прокси-примитивы. Причем тоже возможно не все. Прокси-объекты могут быть не только в блоках. Так что просматривать нужно всю базу.
Записан
Александр Ривилис, я видел Ваш комментарий в той теме, на которую ссылку давал. Но я еще не разу ни сталкивался с полной проверкой БД. Даже не знаю с чего начать и что должно быть
Записан
Записан
Александр Ривилис, без зазрения совести взял ваш код из ссылки)) Думаю, вы совершенно не против
Получилось так:
-
public static bool HasProxyEntities(string file)
-
{
-
// Взято у Александра Ривилиса – http://adn-cis.org/forum/index.php?topic=1060.msg5017#msg5017
-
if (!File.Exists(file)) return false;
-
var db = new Database(false, true);
-
db.ReadDwgFile(file, FileShare.Read, true, string.Empty);
-
Handle firstHandle = db.BlockTableId.Handle; // Первая метка объекта – метка таблицы блоков
-
Handle lastHandle = db.Handseed; // Следующая после последней метки
-
int nObjects = db.ApproxNumObjects; // Приблизительное количество объектов в базе
-
string bufferLast = lastHandle.ToString();
-
string bufferFirst = firstHandle.ToString();
-
Int64 iLast = Int64.Parse(bufferLast, System.Globalization.NumberStyles.HexNumber);
-
Int64 iFirst = Int64.Parse(bufferFirst, System.Globalization.NumberStyles.HexNumber);
-
using (var tr = db.TransactionManager.StartTransaction())
-
{
-
for (Int64 i = iFirst; i < iLast && nObjects > 0; i++)
-
{
-
Handle h = new Handle(i);
-
ObjectId id = ObjectId.Null;
-
if (db.TryGetObjectId(h, out id))
-
{
-
try
-
{
-
DBObject dbObj = tr.GetObject(id, OpenMode.ForRead, true, true);
-
if (dbObj != null && !dbObj.IsErased && dbObj.IsAProxy)
-
{
-
return true;
-
}
-
nObjects–;
-
}
-
catch
-
{
-
//ignored
-
}
-
}
-
}
-
tr.Commit();
-
}
-
return false;
-
}
Записан
Не против. Я бы ещё и без транзакции обошелся.
Записан
если я правильно понял идею…
-
public static bool HasProxyEntities(string file)
-
{
-
if (!File.Exists(file)) return false;
-
var db = new Db.Database(false, true);
-
db.ReadDwgFile(file, FileShare.Read, true, string.Empty);
-
Db.Handle firstHandle = db.BlockTableId.Handle; // Первая метка объекта – метка таблицы блоков
-
Db.Handle lastHandle = db.Handseed; // Следующая после последней метки
-
int nObjects = db.ApproxNumObjects; // Приблизительное количество объектов в базе
-
Int64 iLast = Int64.Parse(lastHandle.ToString(), System.Globalization.NumberStyles.HexNumber);
-
Int64 iFirst = Int64.Parse(firstHandle.ToString(), System.Globalization.NumberStyles.HexNumber);
-
for (Int64 i = iFirst; i < iLast && nObjects > 0; i++)
-
{
-
Db.ObjectId id = db.GetObjectId(false, new Db.Handle(i), 0);
-
bool isProxyObject = id.ObjectClass.IsDerivedFrom(Rtm.RXClass.GetClass(typeof(Db.ProxyObject)));
-
bool isProxyEntity = id.ObjectClass.IsDerivedFrom(Rtm.RXClass.GetClass(typeof(Db.ProxyEntity)));
-
if (!id.IsNull && !id.IsErased &&
-
!id.IsEffectivelyErased && !isProxyObject &&
-
!isProxyEntity && id.IsResident && id.IsValid)
-
return true;
-
}
-
return false;
-
}
Записан
А случайно вот это:
-
Int64.Parse(lastHandle.ToString(), System.Globalization.NumberStyles.HexNumber)
не то же самое, что:
-
lastHandle.Value
?
А зачем проверка:
-
nObjects > 0
выполняется в условии цикла, если в теле цикла это значение не меняется?
Записан
Как ни странно, но вариант проверки ВСЕГО мне не подходит) Вариант проверки только на наличие прокси примитивов в моем случае лучше. Ну это касаемо уже потребностей моей функции
Если создать файл в 2017 автокаде и сохранить его в 2010 версию, то в автокаде 2010 у этого файла уже появятся прокси объекты (не примитивы)
Записан
- Печать
Страницы: [1] Вверх
Почему AutoCAD не показывает прокси-графику?
Используя командную строку в AutoCAD, установите следующие переменные по желанию:
- PROXYNOTICE — определяет, будет ли отображаться уведомление. Установите для этого параметра значение 0, чтобы отключить информационное сообщение о прокси-сервере.
- PROXYSHOW — эта переменная управляет отображением прокси-объектов на чертеже.
Как исправить прокси-объекты в AutoCAD?
Вы можете отключить уведомление, установив для системной переменной PROXYNOTICE значение 0. Если вы не копируете чертеж с вертикалью, такой как AutoCAD Civil 3D или AutoCAD Architecture, вы, безусловно, можете избавиться от прокси-объектов. Самый простой способ сделать это — использовать команду -EXPORTtoAUTOCAD.
Где находятся прокси-объекты в AutoCAD?
При открытии чертежа может появиться диалоговое окно «Информация о прокси». В диалоговом окне сообщается общее количество прокси-объектов на чертеже (как графических, так и неграфических) и имя отсутствующего приложения, а также предоставляется дополнительная информация о типе прокси-объекта и состоянии отображения.
Как включить адаптер объектов в AutoCAD?
Адаптеры объектов, установленные для AutoCAD, будут применяться ко всему программному обеспечению на основе AutoCAD.
…
Решение:
- Перейдите в Autodesk Knowledge Network.
- Выберите «Поддержка и обучение».
- Выберите подходящее программное обеспечение (например, AutoCAD).
- Выберите «Загрузки».
- Выберите подходящую версию (пример: 2019).
- Прокрутите страницу вниз до «Активаторов объектов».
Что такое активатор объектов AutoCAD?
Civil Object Enabler — это бесплатное приложение, которое можно использовать для доступа к файлам чертежей Autodesk Civil 3D. Этот выпуск позволяет получать доступ к данным объектов, созданным в Autodesk Civil 3D 2020, за пределами среды Autodesk Civil 3D 2020.
Как изменить настройки прокси-сервера в AutoCAD?
Чтобы войти в настройки прокси:
- Щелкните стрелку вниз справа от вашего имени в верхней части окна приложения. …
- Нажмите «Настройки».
- Щелкните значок прокси.
- В раскрывающемся списке «Настройки прокси» выберите «Вручную».
- Введите информацию, предоставленную вашим сетевым администратором. …
- Нажмите Готово.
Что такое прокси-графика AutoCAD?
Прокси-графика хранит последнее просмотренное изображение AD-объектов, что позволяет пользователям просматривать ваш чертеж без изменения исходных объектов. Прокси-графика хранит только отображаемое представление для текущего активного видового экрана.14 мая 2019 г.
Что такое прокси-объект?
Прокси-объект действует как посредник между клиентом и доступным объектом. Цель прокси-объекта — следить за сроком жизни доступного объекта и переадресовывать вызовы доступному объекту только в том случае, если он не уничтожен. … Прокси-объект прозрачен для клиента.31 мая 2018 г.
Почему в AutoCAD не удается скопировать в буфер обмена?
Существует несколько причин, в том числе: Набор объектов содержит прокси-объекты, которыми не может управлять процесс копирования. Чертеж создается или экспортируется из стороннего приложения (не собственного продукта Autodesk). Файл чертежа поврежден.
Что такое прокси-объект AutoCAD?
Технические советы AllyCAD регулярно публикуются в ответ на более частые запросы в службу поддержки. … Прокси-объект заменяет пользовательский объект, созданный дополнительным приложением, которое недоступно в AllyCAD.
Как отключить прокси-графику в AutoCAD?
Чтобы отключить сообщение, измените переменную PROXYNOTICE на 0 (ноль). Если на чертеже отображается прокси-уведомление, но соответствующий адаптер объектов уже установлен, файл может нуждаться в восстановлении (см. раздел Восстановление поврежденных файлов AutoCAD).31 мая 2020 г.
Что такое прокси-обработчик?
Обработчик прокси для сервера приложений отвечает за получение информации об исходном клиентском запросе, который был перехвачен прокси-сервером (в данном случае балансировщиком нагрузки) и перенаправлен на сервер приложений, а также за предоставление этой информации веб-приложению. (размещен на…
Как использовать активатор объектов Civil 3d?
Решения
- Шаг 1: Загрузите и установите Civil Option Enabler. Civil Object Enabler позволяет открывать и выполнять работу с 3D-чертежами, созданными в AutoCAD Civil 3D. …
- Шаг 2: Убедитесь, что вы видите прокси-объекты. Введите Op в командной строке и нажмите Enter, чтобы открыть диалоговое окно CAD Options.
Прокси объекты в AutoCAD
– Откуда берутся прокси объекты?
– Что это такое?
– Тормозит чертёж !!!
– Не могу скопировать 🙁 !!!
– Вообще ничего не могу сделать с чертежом
Наверное всем знакома подобная картина.
Именно с этими вопросами подходят ко мне мои коллеги.
Прокси объекты – что же это такое?
Прокси объекты появляются в чертеже AutoCAD когда чертёж создаётся с помощью СПДС GraphiCS, MechaniCS, ProjectStudio использующих при создании чертежа собственные объекты ( например многоуровневые ссылки, отметки этажей и пр.). Когда эти файлы открываются в чистом AutoCAD либо не совпадают версии, сборки то AutoCAD заменяет неизвестные ему объекты на понятные ему примитивы.
Для борьбы с Proxy используется инструмент “ExplodeProxy”. Скачать можно здесь
Командой _APPLOAD вызываем окно загрузки программ
Команда EXPLODEALLPROXY:
Разбивает вообще все proxy-объекты, неважно, где они лежат.
Команда REMOVEALLPROXY:
Удаляет все proxy-объекты и proxy-примитивы. Ее удобно выполнять
после EXPLODEALLPROXY – тогда она удалит все прокси объекты из чертежа и не будет держать их в памяти.
Команда REMOVEEXTENTS – Удаляет все за пределами указанными пользователем.
После выполнения приведенных команд необходимо выполнить последовательно проверку чертежа и чистку командами:
_AUDIT
_PURGE.
Все ваш чертёж больше не содержит Proxy объектов и готов к работе, копированию и пр.
Всё о прокси объектах.