Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Пашин Евгений от 28-08-2015, 14:14:33

Название: AcDbProxyEntity:kNoOperation - не получается взорвать блок!
Отправлено: Пашин Евгений от 28-08-2015, 14:14:33
Есть чертежик с блоками SPDS от Autodesk и блоки от СПДС Graphics. Не могу взорвать их.

С блоками SPDS от Autodesk я еще смог бы выйти из положения, но вот СПДС Graphics меня удивили.
Название: Re: AcDbProxyEntity:kNoOperation - не получается взорвать блок!
Отправлено: Александр Ривилис от 28-08-2015, 15:36:36
Я не увидел проблем с расчленением прокси-объектов в этом чертеже (при чем здесь блоки я не понял):

Для расчленения прокси я использовал мою программу ExplodeProxy, написанную при помощи ObjectARX (C++): http://www.maestrogroup.com.ua/support/ExplodeProxy.zip
Но здесь на форуме есть исходники и на C# (почитай всю тему): http://adn-cis.org/forum/index.php?topic=1060.0
Название: Re: AcDbProxyEntity:kNoOperation - не получается взорвать блок!
Отправлено: Windcastle от 28-08-2015, 18:31:16
Для расчленения прокси я использовал мою программу ExplodeProxy, написанную при помощи ObjectARX (C++)
Ну у меня-то нет такой програмки и команды EXPLODEALLPROXY тоже.

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

То, что я нашел в теме REMOVEALLPROXY меня пока легко шокировало, поскольку я не подозревал, что эта тема столь сложной оказалась... для понимания моего.
У Андрея Бушмана нашел готовое решение...но, мне в нем еще разбираться и разбираться. Ваши ExplodeProxy.arx тоже меня смущают. Я так понимаю, что команда EXPLODEALLPROXY ломает объекты на линии! А мне бы до полилиний их сломать. А то потом определять размеры объектов как-то станет сложнее, мне же их еще потом в листы кидать. Допиливать сломанные блоки на линии командой PEDIT и превращать их в полилинии как-то не хочется,поскольку AutoCAD может затронуть и другие линии, которые трогать НЕЛЬЗЯ. Может попробуем найти решение?!
Название: Re: AcDbProxyEntity:kNoOperation - не получается взорвать блок!
Отправлено: Александр Ривилис от 28-08-2015, 18:44:47
Ну у меня-то нет такой програмки и команды EXPLODEALLPROXY тоже.
Я дал на неё прямую ссылку. Там есть описание (в Readme.txt). Программа бесплатная. Те кто работают с AutoCAD её хорошо знают не первый десяток лет.
Похоже стандартными средствами AutoCAD взорвать эти блоки не получится (рамки - это и есть блоки)
Рамки - это не блоки, а примитивы SPDS GraphiCS. У меня он не установлен, а также не установлен его ObjectEnabler. Поэтому вот так:
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fimg-fotki.yandex.ru%2Fget%2F6732%2F7842324.4%2F0_105d71_899c452c_orig.png&hash=d1b95f168e4d1107cfad1899706989c3)
Явно видно, что с этим примитивом можно делать всё что угодно.

P.S.: Откуда ты получил сообщение AcDbProxyEntity:kNoOperation ???
P.S.S: По поводу сложности самостоятельного написания EXPLODEALLPROXY - это всё относительно.
Название: Re: AcDbProxyEntity:kNoOperation - не получается взорвать блок!
Отправлено: Александр Ривилис от 28-08-2015, 18:55:19
Я так понимаю, что команда EXPLODEALLPROXY ломает объекты на линии! А мне бы до полилиний их сломать.
Ну это зависит от прокси-примитива. Например эта рамка расчленилась на полилинии и МТекст'ы:
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fimg-fotki.yandex.ru%2Fget%2F6210%2F7842324.4%2F0_105d72_39a1a365_orig.png&hash=09b73b919af41367b452bab38ace8d5a)
А то потом определять размеры объектов как-то станет сложнее
А ты уверен, что это тебе нужно? А сразу определить размер этого прокси-примитива не пробовал?
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fimg-fotki.yandex.ru%2Fget%2F9749%2F7842324.4%2F0_105d73_a83343fe_orig.png&hash=54bd133799b871b506ee5ce24663e697)
У меня он точно определяется.
Название: Re: AcDbProxyEntity:kNoOperation - не получается взорвать блок!
Отправлено: Windcastle от 28-08-2015, 19:11:03
А сразу определить размер этого прокси-примитива не пробовал?

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

AcDbProxyEntity:kNoOperation

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

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

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

Кстати, а где можно взять SNOOP OBJECTS?
Название: Re: AcDbProxyEntity:kNoOperation - не получается взорвать блок!
Отправлено: Александр Ривилис от 28-08-2015, 19:38:31
Кстати, а где можно взять 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)
Название: Re: AcDbProxyEntity:kNoOperation - не получается взорвать блок!
Отправлено: Александр Ривилис от 28-08-2015, 19:40:17
Цитата: Александр Ривилис от 28-08-2015, 18:44:47

    AcDbProxyEntity:kNoOperation


Программисты из СПДС Graphics сказали. Я им пример высылал.
Что-то я вообще перестал понимать что-либо. Или ты не тот чертеж сюда выложил, или им отослал не тот чертеж.
Название: Re: AcDbProxyEntity:kNoOperation - не получается взорвать блок!
Отправлено: Windcastle от 28-08-2015, 19:43:46
Хм, итак в чертеже 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 и гляньте внутрь и всё поймёте.
Название: Re: AcDbProxyEntity:kNoOperation - не получается взорвать блок!
Отправлено: Windcastle от 28-08-2015, 19:51:21
Не сильно удивлюсь, если узнаю, что Эта утилита называется MGDDBG - Ваша )))
Название: Re: AcDbProxyEntity:kNoOperation - не получается взорвать блок!
Отправлено: Александр Ривилис от 28-08-2015, 19:59:31
Не сильно удивлюсь, если узнаю, что Эта утилита называется MGDDBG - Ваша )))
Нет. Эти обе утилиты не мои.
Хм, итак в чертеже 3 блока от СПДС Graphics и 2 нижних блока от SPDS Autodesk
И что? Я тебе показывал на примитивы от СПДС Graphics и показывал, что с ними можно делать всё что угодно (расчленить, получить габариты, стереть и т.д.). Так что или программисты СПДС Graphics тебе что-то не то сказали, или ты что-то не понял.
Вот у примитива SPDS Autodesk (кончай называть их блоками) действительно установлен флаг kNoOperation. Но габариты берутся нормально. И, как ты увидел, это не помешало моей программе их расчленять и удалять.
Название: Re: AcDbProxyEntity:kNoOperation - не получается взорвать блок!
Отправлено: Александр Ривилис от 28-08-2015, 20:16:17
Эндрю Троельсен (C#) мне в помощь
Процитирую себя же:
Цитировать
Я бы порекомендовал начать с Герберт Шилдт "C# 4.0. Полное руководство". Автор - популяризатор различных языков программирования. Пишет очень доступно для непрофессионалов.
Думаю, что это было бы для тебя проще.
Название: Re: AcDbProxyEntity:kNoOperation - не получается взорвать блок!
Отправлено: Windcastle от 28-08-2015, 20:17:11
кончай называть их блоками

OK

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

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

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

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

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

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