Расчленение и\или удаление прокси-объектов
Для AutoCAD существует ARX расширение, написанное Александром Наумовичем Ривилисом, которое позволяет расчленять все ProxyEntity, а так же удалять все ProxyEntity и ProxyObjects из текущей базы данных чертежа. Опубликовываю свою версию .NET реализации данных операций, которая может быть успешно скомпилирована для AutoCAD, nanoCAD, BricsCAD, а так же для автономных приложений, использующих в своей работе платформу Teigha.
Возможно кому-то данный код будет интересен в качестве примера того, как можно писать код, который будет успешно компилироваться под различные CAD системы, не требуя при этом внесения в код каких-либо дополнительных изменений. Написание кода в подобном стиле предоставляет возможность портирования существующих наработок в другие CAD системы с минимумом затрат.
Конструктивные замечания по исходному коду приветствуются.
Comments
Приветствую
Интересный образец и хорошая тенденция
Попробую проверить
This discussion has been closed.
Howdy, Stranger!
It looks like you’re new here. Click one of the buttons on the top bar to get involved!
Работа с проблемными *.dwg-файлами в среде nanoCAD
Формат *.dwg — самый популярный формат хранения электронных чертежей. Зачастую *.dwg-файлы хранятся годами, сохраняются в различных системах, используются разными пользователями и из-за этого могут накапливать различные ошибки. Чтобы обезопасить себя и свои документы, перед началом работы с файлами в nanoCAD рекомендуется выполнить ряд действий для их проверки, очистки и оптимизации. Ниже мы рассмотрим основные инструменты и методы работы с *.dwg-файлами.
Как узнать версию *.dwg-файла?
Откройте *.dwg-файл через текстовый редактор – например Блокнот. Первые символы укажут на версию, остальная часть файла будет отображаться в зашифрованном виде.
Для открытия в Блокноте больших файлов может потребоваться дополнительное время.
Узнать версию dwg, в которой сохранен файл, можно из списка:
AC1015 — dwg 2000
AC1018 — dwg 2004
AC1021 — dwg 2007
AC1024 — dwg 2010
AC1027 — dwg 2013
AC1032 — dwg 2018
*.dwg-файл не открывается
Если по каким-либо причинам файл не открывается, не стоит паниковать. Попробуем восстановить его с помощью утилит. При открытии чертежа такого типа вы скорее всего увидите сообщение:
Перезапустите программу nanoCAD и воспользуйтесь утилитой Восстановление документа.
- Меню: Файл > Утилиты > Восстановление документа…
- Командная строка: ВОССТАН (RECOVER)
Если файл все равно не удается открыть, отправьте его специалистам технической поддержки, сопроводив письмо подробным описанием проблемы.
Как почистить *.dwg-файл?
Перед началом работы с утилитами очистки обязательно разблокируйте, включите и разморозьте все слои вашего документа, иначе вы не сможете исправить все дефекты файла.
1. Проверка документа
- Меню: Файл > Утилиты > Проверка документа
- Командная строка: ПРОВЕРИТЬ (AUDIT)
- Проверка_Z_координат – проверка координат по оси Z всех объектов чертежа;
- Проверка_Штриховок – проверка правильности отображения штриховок в границах контуров.
Симптоматика этой проблемы бывает разной. Плохо работают привязки, не отображается часть объектов, пропадает курсор в модели или чертеж медленно работает. Проблема очень актуальна при работе с большими файлами: генпланами, подложками и пр.
Начиная с 7-й версии платформа nanoCAD при запуске *.dwg-файлов проверяет Z-координаты автоматически, и если в вашем файле обнаружится проблема, вы увидите следующее окно:
Просто нажмите Исправить, и утилита перенесет все улетевшие объекты. Важно отметить, что данная функция не делает ваш чертеж полностью плоским, а просто переносит объекты с улетевшей координатой Z ближе к нулевому значению. Если у вас есть трехмерные объекты, они не будут разрушены. После проверки геометрии осмотрите ваш чертеж в 3D – если остались какие-то дефекты, рекомендуется воспользоваться функцией Конвертация в 2D.
3. Конвертация в 2D
- Меню: Файл > Утилиты > Конвертирование в 2D
- Командная строка: КОНВ2D (FLATTEN)
Способ №1
В этом случае требуется выбрать все объекты, лежащие вне нулевой плоскости. Для этого нам необходимо:
- Включить вид сбоку и выбрать все объекты, которые лежат выше или ниже нуля.
- После выделения всех объектов, которые находятся за пределами нулевой плоскости, переключаемся на вид сверху (это важно, иначе функция сплющит нам чертеж не на ту плоскость) и, не снимая селекции объектов, вызываем функцию Конвертация в 2D.
Способ №2
Способ более трудоемкий, но и более безопасный.
Дело в том, что конвертация в 2D разрушает объекты оформления СПДС (выноски, оси, отметки уровня и т.д.), поэтому перед началом конвертации нам необходимо исключить эти объекты из селекции.
- Выбираем все объекты чертежа (Ctrl+A). Переходим на функциональную панель Свойства, выбираем из выпадающего списка объекты оформления и исключаем их из выбора. Повторяем эту операцию до тех пор, пока в селекции не останется объектов оформления СПДС.
- Не сбрасывая селекции с объектов, вызываем функцию Конвертация в 2D. Затем файл можно снова проверить на ошибки. После проверки сохраните файл под другим именем – например, Архитектура_audit_flatten.dwg. Я использую при сохранении версионность, чтобы в случае какой-либо ошибки вернуться к предыдущей версии файла и не проделывать все операции по очистке с нуля.
4. Очистка документа (purge)
- Меню: Файл > Утилиты > Очистка документа…
- Командная строка: ОЧИСТИТЬ, ОЧ, УДАЛИ (PURGE, PU)
- Удаление вложенных элементов – включение режима удаления всех неиспользуемых именованных объектов, содержащихся внутри других неиспользуемых именованных объектов.
- Автоматическая очистка непривязанных данных – удаление устаревших стилей векторных данных формата DGN.
Файлы с DGN-стилями весят больше обычного, хотя содержат мало графики. Такие файлы могут медленно работать и вызывать зависание при сохранении.
Такие объекты тяжело найти в модели. Тексты визуально отображаются только после селекции, так как не имеют содержимого.
Обнаруживать их удобно через Диспетчер чертежа (меню Сервис > Диспетчер чертежа). В этой функциональной панели пустые однострочные и многострочные тексты будут отображаться как «ПУСТОЙ ТЕКСТ».
После выполнения очистки сохраните файл под другим именем. Я сохраняю чертежи с постфиксом утилиты, которой его проверял. Поэтому имя нашего файла будет теперь выглядеть так: Архитектура_audit_flatten_purge.dwg.
5. Перекодировка текста
- Меню: Файл > Утилиты > Перекодировка текста
- Командная строка: ДЕКОД (TEXTDECODER)
Утилита перекодировки текста представлена в виде отдельного выпадающего окна. Первое, что нам необходимо выбрать, это тип объектов, которые мы будет перекодировать. Такими объектами могут быть слои, стили, тексты и т.д.
Существуют два режима декодирования: вручную и автоподбор. Первый – самый точный и очень трудозатратный, второй – быстрый, но связанный с риском появления ошибок. Давайте рассмотрим подробнее каждый из них.
Выбираем из списка текст и назначаем ему конечную кодировку. Далее нажимаем Декодировать и смотрим результат в окне Результат декодирования. Если не угадали с кодировкой, выбираем другую и перекодируем заново.
В этом режиме программа подбирает конечную кодировку самостоятельно. Выберите пункт из списка с проблемной кодировкой, установите режим декодирования Автоподбор и нажмите кнопку Декодировать. Программе не всегда удается верно определить конечную кодировку, поэтому пользователю предоставляется список результатов с различной кодировкой. Из выпадающего списка выбираем верное представление.
Перекодировка всех объектов
Можно перекодировать и весь массив данных. Для этого нам нажать кнопку Выбрать все, установить режим декодирования Автоподбор и нажать на кнопку Перекодировка.
Если вам предстоит перекодировать большой массив объектов, постарайтесь исключить из перекодировки те из них, которые отображаются корректно. Сделать это можно, щелкнув по элементу списка левой кнопкой мыши при зажатой клавише Ctrl (Ctrl+ЛКМ).
После исправления кодировки сохраните файл под другим именем – например, Архитектура_audit_flatten_purge_decod.dwg
6. Вставка чертежа в новый файл
Существует еще один хороший метод, который позволяет исправить даже самые гадкие файлы. Этим способом пользователи CAD-систем пользуются давно, хочу лишь еще раз о нем напомнить.
К этому методу стоит прибегнуть, если очистка и проверка не помогают исправить тот или иной дефект. Внимание! В чертеже пропадут все оформленные листы.
Создаем в nanoCAD новый файл (меню Файл > Создать). Далее нужно вставить проблемный чертеж в этот открытый файл как блок (Меню Вставка > Блок). В окне Вставка блока следует снять флажок Указать на экране, чтобы вставить чертеж сразу в нулевые координаты. Еще нужно установить флажок напротив пункта Разбить, чтобы вставленный чертеж после вставки не пришлось разбивать.
После вставки чертежа таким способом будет сгенерирована заново вся база данных *.dwg-файла. Таким образом вы можете исправить ряд ошибок, которые находились в ваших старых файлах. При вставке вы также потеряете все прокси-объекты вашего чертежа, так что, применяя этот метод, будьте осторожны. После вставки чертежа сохраните файл под другим именем, например, Архитектура_insert.dwg.
7. Разбивка и удаление прокси-объектов
- Меню: Редактирование > Дополнительные средства > Удаление прокси-объектов
- Меню: Редактирование > Дополнительные средства > Разбивка прокси-объектов
Прокси – это технология транзитного хранения данных. Говоря простым человеческим языком, она позволяет приложению сохранить свой объект и защитить его от разрушения, даже если вы откроете его в другой САПР-системе, не имеющей данного приложения. Поэтому, прежде чем разбивать и удалять прокси, задумайтесь: вдруг объект стороннего приложения вам еще пригодится и не стоит спешить с его разбиением на примитивы.
Некоторые разработчики специализированных приложений защищают свои объекты, не позволяя разбить их командой EXPLODE. Именно для таких случаев в nanoCAD реализованы специальные утилиты разбивки и удаления прокси. Работают они достаточно просто, нужно только выбрать прокси-объекты и вызвать необходимую команду (разбивка и удаление). Эти команды доступны и контекстном меню Диспетчера чертежа – специального инструмента, показывающего всю структуру *.dwg-файла.
Заключение
После работы со всеми утилитами внимательно ознакомьтесь с финальным файлом. Иногда для сложных файлов может потребоваться 2-3 прохода утилитами. Если все нужные проектные данные целы и текущий результат вас полностью устраивает, удалите промежуточные файлы и оставьте исходный файл архитектура.dwg, а финальному присвойте имя архитектура_rec.dwg.
Используя такую маркировку, вы будете знать, какие файлы у вас уже обработаны, а какие еще только следует проверить. Всегда работайте в файлах с пометкой _rec.
Надеюсь, приведенная информация поможет вам навести порядок в ваших файлах, упростить и ускорить работу в *.dwg-среде, а также избежать критических ошибок и потери данных.
Удачного проектирования!
Сергей Спирин, mahbak
ЗАО Нанософт
- Блог компании Нанософт разработка
- CAD/CAM
Проект СПДС
Горячая история техподдержки, или Почему AutoCAD удаляет прокси-объекты?
При работе с пользовательским обращением в службу техподдержки выяснилось неприятное обстоятельство: AutoCAD с установленным приложением SPDS Extension удаляет из *.dwg-файлов все прокси-объекты. Как это происходит, что получается в результате и, главное, как защититься от последствий ошибки в приложении к 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 через панель управления. Радикально, но спасает все прокси.
- Установка энейблеров под платформу AutoCAD.
Подходит не для всех прокси-объектов, так как не у всех приложений есть энейблеры под AutoCAD. Но для продуктов nanoCAD СПДС/СПДС GraphiCS энейблер существует, и его можно скачать. После установки данного энейблера объекты СПДС перестанут быть прокси и больше не будут удаляться из AutoCAD.
Советы
Я призываю пользователей быть острожными и всегда хранить несколько копий своих проектов. nanoCAD, например, при открытии *.dwg-файла сразу делает средствами операционной системы его копию с расширением dwg. original; поэтому у вас всегда будет резервная копия исходного файла.
Если же вы пользуетесь другими САПР, то просто не поленитесь и вручную сделайте несколько копий своих проектов — на всякий случай.
Берегите свои *.dwg-файлы и удачного проектирования!
Сергей Спирин
АО «Нанософт»
E-mail: spirin@nanocad.ru
- Новости
- Новости проекта
- Новости САПР
- СПДС GraphiCS
- СПДС Стройплощадка
- СПДС Металлоконструкции
- СПДС Железобетон
- nanoCAD СПДС
- nanoCAD СПДС Стройплощадка
- nanoCAD СПДС Железобетон
- nanoCAD СПДС Металлоконструкции
- Статьи о СПДС
- Опыт использования
- История
- СПДС GraphiCS
- СПДС GraphiCS Enabler
- СПДС Стройплощадка
- СПДС Металлоконструкции
- СПДС Железобетон
- Утилиты, дополнения
- Библиотеки
- Официальная лицензия
- Прайс-лист
- Заявка на приобретение
- Обучение
- Услуги
- Онлайн руководство
- Блог проекта
- Вопросы и ответы
- Нормативы
- Обучающие примеры
- Инструкции
- Презентации
- Видеоролики с YouTube
- Совместимость
Задайте вопрос менеджеру по СПДС GraphiCS
Copyright © 2007-2024 АО «СиСофт Девелопмент»ObjectARX. Расчленение и удаление proxy-объектов (Страница 8 из 10)
можно ли загрузить LSP или подобный файл не через меню appload а командой типа (command «_appload» «path/file») ?
(load «path/file») для lisp-программ (lsp/fas/vlx-файлы) и (arxload «path/file») для arx-программ (arx/dbx-файлы)
#177 Ответ от hazri 13 декабря 2012г. 14:03:25
Re: ObjectARX. Расчленение и удаление proxy-объектов
#178 Ответ от ivan9000 1 февраля 2013г. 00:24:27
Re: ObjectARX. Расчленение и удаление proxy-объектов
СПАСИБО. ты гений 😀
#179 Ответ от Вовочка 25 апреля 2013г. 16:55:22
Re: ObjectARX. Расчленение и удаление proxy-объектов
Первый раз столкнулся с прокси-объектами, которые не может разрушить EXPLODEALLPROXY. По всей видимости они сделаны в AutoCAD P&ID. На технологической схеме изображен вентилятор. При EXPLODEALLPROXY геометрия вентилятора нарушается. Помогите, пожалуйста.
#180 Ответ от Александр Ривилис 25 апреля 2013г. 17:19:24 (изменено: Александр Ривилис, 25 апреля 2013г. 17:22:42)
Re: ObjectARX. Расчленение и удаление proxy-объектов
Владимир Бебякин пишет:
С чем? Не видя чертежа (минимальный фрагмент, на котором есть только этот вентилятор) я могу только гадать на кофейной гуще.
P.S.: Хотя это вполне нормальная ситуация — если смотреть в программе, в которой объект сделан и без неё картинка может очень сильно отличаться.
Правильнее установить соответствующий Object Enabler:
http://usa.autodesk.com/adsk/servlet/ps … D=11705366#181 Ответ от Вовочка 26 апреля 2013г. 09:13:05
Re: ObjectARX. Расчленение и удаление proxy-объектов
Столкнулся с иной проблеммой. Хочу выложить файл, для ознакомления с этим вентилятором. Но. выбрать только его для передачи не могу. А отправлять весь файл не имею права. Есть ли подфункция в explodeALLproxy — explodeNOTALLproxy? 😉
#182 Ответ от Александр Ривилис 27 апреля 2013г. 02:41:57
Re: ObjectARX. Расчленение и удаление proxy-объектов
А удалить всё с чертежа кроме «вентилятора» и сохранить под другим именем слабо?
#183 Ответ от Вовочка 29 апреля 2013г. 08:43:15 (изменено: Владимир Бебякин, 29 апреля 2013г. 08:50:32)
Re: ObjectARX. Расчленение и удаление proxy-объектов
Конечно, слабо. Штатная команда _Explode взорвать ничего не может. При _explodeallproxy взрываются все прокси-объекты. А так технологичка сделана вся полностью из прокси-объектов. Пблок справится с этим заданием тоже не может.
#184 Ответ от FrDrake 14 июня 2013г. 23:08:53
Re: ObjectARX. Расчленение и удаление proxy-объектов
Можно ли использовать эту программу в AutoCAD 2014?
#185 Ответ от Александр Ривилис 15 июня 2013г. 01:55:54
Re: ObjectARX. Расчленение и удаление proxy-объектов
#186 Ответ от Aлександр431 16 июля 2013г. 11:20:24
Re: ObjectARX. Расчленение и удаление proxy-объектов
Подскажите, пожалуйста, АВТОКАД 2012 при _APPLOAD не загружает ни один из файлов EXPLODEALLPROXY.
Для 2012 нет программы?#187 Ответ от Alan 16 июля 2013г. 12:10:14 (изменено: Alan aka Александр Назаров, 16 июля 2013г. 12:11:06)
Re: ObjectARX. Расчленение и удаление proxy-объектов
Александр Югин пишет:
Подскажите, пожалуйста, АВТОКАД 2012 при _APPLOAD не загружает ни один из файлов EXPLODEALLPROXY.
Для 2012 нет программы?Александр Ривилис в отпуске, отвечу за него.
Внимательно читаем файл Readme.txt из архива
.
ExplodeProxy2010x32.arx — для AutoCAD 2010. 2012 (x86 — 32-разрядный)
ExplodeProxy2010x64.arx — для AutoCAD 2010. 2012 (x64 — 64-разрядный)
.
Проверим на Автокад 2012 х86Команда: _APPLOAD
ExplodeProxy2010x32.arx успешно загружено.
Команда: EXPLODEALLPROXY
Удалено Proxy: 0 Новых объектов: 0#188 Ответ от Ren_Gen 30 ноября 2013г. 19:14:55
Re: ObjectARX. Расчленение и удаление proxy-объектов
Здравствуйте. Подскажите пожалуйста, а в чем может быть проблема. Делаю все по инструкции, а в ACAD 2013 и 2014 прокси объекты не удаляются. А вот в 2007, 2009, 2010 все работает прекрасно. Вот что пишет 2013:
Команда: REMOVEALLPROXY
Первая метка объекта: , последняя метка объекта:
Всего найдено proxy-объектов: 0. Из них proxy-примитивов: 0.
Всего удалено proxy-объектов: 0. Из них proxy-примитивов: 0.А вот что пишет в 2010 когда получается:
Команда: REMOVEALLPROXY
Первая метка объекта: , последняя метка объекта:
Всего найдено proxy-объектов: 108133. Из них proxy-примитивов: 0.
Всего удалено proxy-объектов: 108133. Из них proxy-примитивов: 0.