О пользовательских объектах и прокси-объектах
Использование сторонних объектов открывает дополнительные возможности применения программы и родственных продуктов. Если приложение, в котором был создан сторонний объект, не загружено, то используется прокси-объект.
Сторонний объект – это тип объектов, созданных в приложении ObjectARX ® (AutoCAD Run-Time Extension), обладающий обычно более специализированными функциями по сравнению со стандартными объектами AutoCAD и AutoCAD LT. К сторонним объектам относятся параметрические тела (AutoCAD ® Mechanical), интерактивные (с интеллектуальными функциями) обозначения дверей (AutoCAD ® Architecture), объекты-полигоны (AutoCAD ® Map 3D) и объекты — ассоциативные размеры (AutoCAD и AutoCAD LT).
Кроме Autodesk, существуют производители программного обеспечения, использующие ObjectARX для создания приложений, с помощью которых можно строить графические и неграфические сторонние объекты. Эти объекты можно использовать в приложениях AutoCAD.
Прокси-объекты
Прокси-объекты используются в AutoCAD, AutoCAD LT и других приложениях вместо сторонних объектов, созданных с помощью приложения ObjectARX, если последнее недоступно. В дальнейшем, когда приложение становится доступным, прокси-объект заменяется сторонним объектом.
Прокси-объекты сильно упрощены по сравнению с исходными сторонними объектами. Возможности редактирования прокси-объектов определяются приложениями ObjectARX, в котором объекты были созданы. Например, такие операции, как стирание или перемещение прокси-объекта, а также изменение его свойств могут быть допустимы или нет в зависимости от создавшего их приложения.
Открывая чертеж, следует обратить внимание на диалоговое окно «Информация о прокси». В этом окне выводится общее количество прокси-объектов (как графических, так и неграфических), имя приложения, необходимого для нормального вывода замещенных объектов, а также дополнительная информация о типе и способе отображения прокси-объектов. С помощью данного диалогового окна можно управлять отображением прокси-объектов на чертеже.
Адаптеры объектов
Адаптер объектов — это средство доступа для специального просмотра и стандартного редактирования сторонних объектов в других приложениях, использующееся, если приложение, в котором был создан сторонний объект, в системе не установлено.
Использование адаптеров объектов обеспечивает большую гибкость работы со сторонними объектами, чем непосредственное использование прокси-объектов. Адаптеры объектов также обеспечивают возможность коллективной работы с другими продуктами Autodesk.
Если приложение ObjectARX не установлено в системе, можно выполнить поиск доступных адаптеров объектов в Интернете. Например, при получении чертежа с объектами, созданными с помощью программы Autodesk Architectural Desktop, которая не установлена в системе, выполняется загрузка адаптера объектов AEC для просмотра чертежа в исходном виде.
Чтобы найти доступные адаптеры объектов, перейдите на страницу https://www.autodesk.com/enablers.
Классификация объектов
Если в приложении (например, AutoCAD ® Map 3D) объекту была присвоена классификация элементов (объектов), ее можно просматривать на палитре свойств в поле записи «Имя класса». Если классификация объекта удалена из XML-файла, или удален сам файл классификаций, в группе имен классов выводится восклицательный знак. Сведения об условиях создания классификаций см. в документации по AutoCAD ® Map 3D.
Можно также использовать функцию «Быстрый выбор» для выбора объектов по именам или свойствам классов.
Понятия, связанные с данным
Ссылки, связанные с данной
Кустомальный CАПР
Сборка личных настроек, инструментов, заметок по автоматизации проектной работы
Удаление прокси объектов из файла
Posted on 2017/12/19 by Ilya Mikhajlov
Если в файле присутствуют прокси объекты — помогут команды:
EXPLODEALLPROXY — разбивает все proxy-примитивы, если это возможно — во всем чертеже.
REMOVEALLPROXY — удаляет все proxy-объекты и proxy-примитивы.
CADmaster

Горячая история техподдержки, или Почему AutoCAD удаляет прокси-объекты?
Скачать статью в формате PDF — 2.25 Мбайт
Главная » CADmaster №2(88) 2018 » Платформы САПР Горячая история техподдержки, или Почему AutoCAD удаляет прокси-объекты?
Дисклеймер
Целью этой статьи не является дискредитация программного обеспечения. Статья носит исключительно информационный характер и предназначена для защиты конечного пользователя, который может при определенных обстоятельствах потерять свои данные, работая в AutoCAD.
Предисловие
SPDS Extension или модуль СПДС — дополнение к продуктам семейства AutoCAD, разрабатываемым компанией Autodesk.
СПДС GraphiCS — кроссплатформенное приложение, предназначенное для подготовки проектно-технической документации. Разработчик — компания CSoft Development.
nanoCAD СПДС — тот же самый СПДС GraphiCS, но на платформе nanoCAD Plus от компании «Нанософт».
История
Разгребая утреннюю почту, наткнулся на обращение пользователя в техническую поддержку. Тема письма в принципе объясняла суть проблемы: «Объекты nanoCAD СПДС не отображаются в AutoCAD». К письму, как и полагается, были приложены файлы, скриншоты и подробное описание действий пользователя. Если говорить кратко, то суть обращения сводилась к следующему: пользователь создал проект в nanoCAD СПДС и передал его подрядчикам. Подрядчики, открывая этот файл в AutoCAD, не видят объектов СПДС.
Опытные пользователи сразу скажут, что скорее всего подрядчики просто не включили отображение прокси-объектов, поэтому и не видят данные, которые были созданы в специализированном приложении. Но, как оказалось, всё не так просто…
Исследование проблемы
Первым делом открываем файл в nanoCAD СПДС и проверяем состояние переменных proxyshow и proxygraphics. Всё в порядке, оба значения равны единице и файл отображается корректно.
proxyshow — переменная, которая управляет отображением прокси-объектов в чертеже;
proxygraphics — переменная, которая управляет сохранением прокси-объектов в чертеже.

Затем проверяем этот же файл в AutoCAD. При запуске файла появляется всплывающее сообщение, которое спрашивает, что нужно делать с проксями.

Выбираем опцию Показывать прокси-графику и нажимаем ОК. Всё в порядке, на моей машине AutoCAD корректно отображает все объекты nanoCAD СПДС.
С полной уверенностью, что я знаю причину проблемы, закрываю файл и пишу пользователю, что у подрядчиков скорее всего скрыты прокси-объекты в AutoCAD. Даю рекомендацию проверить значение переменной proxyshow (оно должно быть равным единице) прямо из командной строки AutoCAD.
Неожиданные открытия
Утром следующего дня получаю от пользователя ответ: значение переменной равно единице, но объекты по-прежнему не отображаются. К слову, чертеж у подрядчика выглядел вот так (вместо плана отображались лишь размеры и несколько отрезков):
Начинаю разбираться, почему один и тот же файл с одинаковыми значениями переменных может по-разному отображаться в AutoCAD. Дело в операционной системе? В версии AutoCAD? Может, у пользователя стоят какие-то дополнительные приложения? В общем, чтобы понять разницу в конфигурациях, запросил у пользователя больше данных.
Еще раз внимательно просмотрев материалы пользователя, замечаю на одном из скриншотов одну маленькую, но важную деталь. На скриншоте подрядчика в AutoCAD был установлен модуль СПДС или, как его еще называют, SPDS Extension.
В моей конфигурации был чистый AutoCAD без всяких надстроек — и, по сути, это оказалось единственной зацепкой. Не дождавшись от пользователя дополнительных данных, начинаю копать дальше.
Загрузив с официального сайта Autodesk модуль СПДС, устанавливаю его на свою версию AutoCAD 2018. Далее запускаю файл пользователя и вижу привычное сообщение. При этом объекты nanoCAD СПДС отображаются в AutoCAD еще до закрытия окна информации о прокси-объектах.
С мыслью «Мое расследование заходит в тупик» нажимаю кнопку ОК и готовлюсь к дальнейшим действиям. Через мгновение все прокси-объекты исчезают и я получаю тот же результат, что и подрядчики из обращения пользователя.

Перезагружаю AutoCAD и снова открываю этот файл — картина повторяется. Прокси-объекты исчезают из файла, хотя значение переменной proxyshow равно единице. И это очень странно.
Сохранив открытый в AutoCAD файл рядом с файлом, полученным от пользователя, и дописав в название файла _proxy, сравниваю их размеры.

Размер файла, сохраненного в AutoCAD, уменьшился в 10 раз, но я решаю открыть его в исходном приложении — nanoCAD СПДС.

Теперь и в nanoCAD СПДС наблюдаю ту же картинку, что при открытии файла в AutoCAD с модулем СПДС. Выходит, что после сохранения в AutoCAD файл пользователя потерял все прокси-объекты.
Удалять чужие прокси очень некрасиво. Решаю проверить данный баг, используя прокси от собственных приложений Autodesk. Нахожу в сети несколько файлов, созданных в приложениях Civil 3D и Advance Steel, и повторяю вышеупомянутый эксперимент, открывая чертежи с прокси-объектами. Во всех случаях после запуска этих файлов прокси-графика удалялась. Получается, что с модулем SPDS Extension многоуважаемый AutoCAD удаляет любые прокси.
Решаю откатиться к своей старой конфигурации AutoCAD и удаляю модуль СПДС от Autodesk, чтобы снова проверить работу файлов с прокси-объектами. Как ни странно, они снова стали нормально сохраняться. Из всего увиденного делаю окончательный вывод:
AutoCAD с установленным модулем СПДС удаляет все прокси-объекты из *.dwg-файлов.
Решение
Можно только предполагать, сколько пользователей потеряли свои данные из-за ошибки приложения SPDS Extension, но всё же цель этой статьи не только предупредить пользователей. Главное — спасти их проекты. Поэтому хочу поделиться решениями этой проблемы.
-
Полное удаление приложения SDPS Extension через панель управления.

Советы
Я призываю пользователей быть острожными и всегда хранить несколько копий своих проектов. nanoCAD, например, при открытии *.dwg-файла сразу делает средствами операционной системы его копию с расширением dwg. original; поэтому у вас всегда будет резервная копия исходного файла.

Если же вы пользуетесь другими САПР, то просто не поленитесь и вручную сделайте несколько копий своих проектов — на всякий случай.
Берегите свои *.dwg-файлы и удачного проектирования!
ObjectARX. Расчленение и удаление proxy-объектов (Страница 1 из 10)
Команда EXPLODEALLPROXY:
Расчленяет все proxy-примитивы (которые можно расчленить, т.е. программист при их создании не указал флаг нерасчленяемости), во всем чертеже.
Команда REMOVEALLPROXY:
Удаляет все proxy-объекты и proxy-примитивы (в том числе и те, которые имеют флаг неудаляемости). Ее удобно выполнять после EXPLODEALLPROXY — тогда она удалит все то, что не удалось расчленить.
=====================================================
Для вызова из VisualLisp:
(ExplodeProxyEntity ent)
ent — имя примитива вида . Расчленяет только этот
примитив, даже если он входит в блок.
Например: (explodeproxyentity (car (nentsel)))
(ExplodeAllProxyInBlock «имя блока»)
Этой функции можно передавать не только имя блока, но и имя примитива внутри блока.
Например: (explodeallproxyinblock (car (nentsel)))
расчленит все прокси в блоке, на который указали.
Функции возвращают следующие значения:
0 success - успешное завершение -1 parmerr - ошибка передачи параметра -2 openerr - ошибка открытия proxy-объекта -3 explerr - ошибка разбития proxy -4 appenderr - ошибка добавления "состава" proxy в файл dwg. -5 eraseerr - ошибка удаления исходного объекта.
