AcDbProxyEntity:kNoOperation - не получается взорвать блок!

Автор Тема: AcDbProxyEntity:kNoOperation - не получается взорвать блок!  (Прочитано 9526 раз)

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

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Есть чертежик с блоками SPDS от Autodesk и блоки от СПДС Graphics. Не могу взорвать их.

С блоками SPDS от Autodesk я еще смог бы выйти из положения, но вот СПДС Graphics меня удивили.

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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Я не увидел проблем с расчленением прокси-объектов в этом чертеже (при чем здесь блоки я не понял):

Для расчленения прокси я использовал мою программу ExplodeProxy, написанную при помощи ObjectARX (C++): http://www.maestrogroup.com.ua/support/ExplodeProxy.zip
Но здесь на форуме есть исходники и на C# (почитай всю тему): http://adn-cis.org/forum/index.php?topic=1060.0
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Windcastle

  • ADN OPEN
  • **
  • Сообщений: 58
  • Карма: 0
Для расчленения прокси я использовал мою программу ExplodeProxy, написанную при помощи ObjectARX (C++)
Ну у меня-то нет такой програмки и команды EXPLODEALLPROXY тоже.

Похоже стандартными средствами AutoCAD взорвать эти блоки не получится (рамки - это и есть блоки), у Вас на видео они определяются как ACAD_PROXY_ENTITY, у меня как динамические блоки. Показать смогу лишь в понедельник (с работы). У меня установлена панель SPDS от Autodesk. Придется расширить тему (REMOVEALLPROXY) по написанию команды для расчленения таких блоков, но уже под VB.NET. Я оказывается не один такой нуждающийся в таком модуле.

То, что я нашел в теме REMOVEALLPROXY меня пока легко шокировало, поскольку я не подозревал, что эта тема столь сложной оказалась... для понимания моего.
У Андрея Бушмана нашел готовое решение...но, мне в нем еще разбираться и разбираться. Ваши ExplodeProxy.arx тоже меня смущают. Я так понимаю, что команда EXPLODEALLPROXY ломает объекты на линии! А мне бы до полилиний их сломать. А то потом определять размеры объектов как-то станет сложнее, мне же их еще потом в листы кидать. Допиливать сломанные блоки на линии командой PEDIT и превращать их в полилинии как-то не хочется,поскольку AutoCAD может затронуть и другие линии, которые трогать НЕЛЬЗЯ. Может попробуем найти решение?!

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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Ну у меня-то нет такой програмки и команды EXPLODEALLPROXY тоже.
Я дал на неё прямую ссылку. Там есть описание (в Readme.txt). Программа бесплатная. Те кто работают с AutoCAD её хорошо знают не первый десяток лет.
Похоже стандартными средствами AutoCAD взорвать эти блоки не получится (рамки - это и есть блоки)
Рамки - это не блоки, а примитивы SPDS GraphiCS. У меня он не установлен, а также не установлен его ObjectEnabler. Поэтому вот так:

Явно видно, что с этим примитивом можно делать всё что угодно.

P.S.: Откуда ты получил сообщение AcDbProxyEntity:kNoOperation ???
P.S.S: По поводу сложности самостоятельного написания EXPLODEALLPROXY - это всё относительно.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Я так понимаю, что команда EXPLODEALLPROXY ломает объекты на линии! А мне бы до полилиний их сломать.
Ну это зависит от прокси-примитива. Например эта рамка расчленилась на полилинии и МТекст'ы:

А то потом определять размеры объектов как-то станет сложнее
А ты уверен, что это тебе нужно? А сразу определить размер этого прокси-примитива не пробовал?

У меня он точно определяется.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Windcastle

  • ADN OPEN
  • **
  • Сообщений: 58
  • Карма: 0
А сразу определить размер этого прокси-примитива не пробовал?

Пробовал, но с помощью VBA GetBoundingBox получал размеры всех видимых и невидимых в блоке объектов, то есть размеры получить можно, но размеры заведомо неверные.

AcDbProxyEntity:kNoOperation

Программисты из СПДС Graphics сказали. Я им пример высылал.

По поводу сложности самостоятельного написания EXPLODEALLPROXY - это всё относительно.

Согласен! Это как если бы я был кучером повозки, запряженной тройкой лошадей и мимо меня промчался на Lexus какой-нибудь водитель, сказав: "Ты знаешь, а водить машину проще и удобнее, чем на телеге с лошадьми"... и это действительно всё относительно! И потому мне нужно понять как "слезть с повозки" и научиться "водить Lexus", при этом не потеряв много времени на  (пере)обучение и успев доехать до места назначения ВОВРЕМЯ! Эндрю Троельсен (C#) мне в помощь (но это, знаете, конечно не легко читать - быстро "с повозки не слезу")!

Кстати, а где можно взять SNOOP OBJECTS?

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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Кстати, а где можно взять SNOOP OBJECTS?
Эта утилита называется MGDDBG: http://adn-cis.org/assets/gallery/AutoCAD/MgdDbg.zip (эта утилита написана с помощью AutoCAD .NET API на C#)
На первой картинке ARXDBG (написана на C++ с использованием ObjectARX):
http://maestrogroup.com.ua/support/ArxDbg2013.zip (AutoCAD 2013 и 2014)
http://maestrogroup.com.ua/support/ArxDbg2015.zip (AutoCAD 2015 и 2016)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Цитата: Александр Ривилис от 28-08-2015, 18:44:47

    AcDbProxyEntity:kNoOperation


Программисты из СПДС Graphics сказали. Я им пример высылал.
Что-то я вообще перестал понимать что-либо. Или ты не тот чертеж сюда выложил, или им отослал не тот чертеж.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Windcastle

  • ADN OPEN
  • **
  • Сообщений: 58
  • Карма: 0
Хм, итак в чертеже 3 блока от СПДС Graphics и 2 нижних блока от SPDS Autodesk

Если сохранить их в DXF, то можно посмотреть кто их автор!

Например вот этот:
AcDbDimAssoc
  3
"AcDbDimAssoc|Product Desc:     AcDim ARX App For Dimension|Company:          Autodesk, Inc.|WEB Address:      www.autodesk.com"


или вот этот

SPDSFORMAT
  2
mcsDbObjectFormat
  3
SPDSGraphiCS|Company: CSoft Development|WEB Address: www.csoft.ru


Просто пересохраните этот чертеж в DXF и гляньте внутрь и всё поймёте.

Оффлайн Windcastle

  • ADN OPEN
  • **
  • Сообщений: 58
  • Карма: 0
Не сильно удивлюсь, если узнаю, что Эта утилита называется MGDDBG - Ваша )))

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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Не сильно удивлюсь, если узнаю, что Эта утилита называется MGDDBG - Ваша )))
Нет. Эти обе утилиты не мои.
Хм, итак в чертеже 3 блока от СПДС Graphics и 2 нижних блока от SPDS Autodesk
И что? Я тебе показывал на примитивы от СПДС Graphics и показывал, что с ними можно делать всё что угодно (расчленить, получить габариты, стереть и т.д.). Так что или программисты СПДС Graphics тебе что-то не то сказали, или ты что-то не понял.
Вот у примитива SPDS Autodesk (кончай называть их блоками) действительно установлен флаг kNoOperation. Но габариты берутся нормально. И, как ты увидел, это не помешало моей программе их расчленять и удалять.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Эндрю Троельсен (C#) мне в помощь
Процитирую себя же:
Цитировать
Я бы порекомендовал начать с Герберт Шилдт "C# 4.0. Полное руководство". Автор - популяризатор различных языков программирования. Пишет очень доступно для непрофессионалов.
Думаю, что это было бы для тебя проще.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Windcastle

  • ADN OPEN
  • **
  • Сообщений: 58
  • Карма: 0
кончай называть их блоками

OK

Так что или программисты СПДС Graphics тебе что-то не то сказали, или ты что-то не понял.

В понедельник выложу письмо, которое от них получил ) Может Вы там найдете иное толкование.
Или ты не тот чертеж сюда выложил, или им отослал не тот чертеж.

А это вполне возможно... Я им кучу всего высылал.

Можно у Вас попросить написать последовательность действий для определения габаритов примитивов СПДС Graphics, поскольку средствами AutoCAD NET Interop я не могу у этого объекта получить размеры с помощью GetBoundingBox. Так как (может не у этих) у таких примитивов внутри есть скрытые объекты, которые могут помешать правильно определить размеры рамки примитива (так и хочется написать блока, по-инерции  :)). Кстати и у SDPS Autodesk размеры рамки примитива тоже не верно определяются. Кажется именно в этом чертеже нет примитива, который содержит скрытые объекты, а в других (в понедельник выложу) есть!

Я тебе показывал на примитивы от СПДС Graphics и показывал, что с ними можно делать всё что угодно

Я видел и теперь тоже самое нужно сделать программно средствами AutoCAD NET или COM, я пока к C# не готов... но если вариантов нет, то постараюсь за выходные этот орех разгрызть... Конечно, периодически обращаясь к Вам. С Вами процесс в разы быстрее движется!!! И Вам за это спасибо.