Сообщество программистов Autodesk в СНГ
ADN Club => AutoCAD .NET API => Тема начата: Пашин Евгений от 28-08-2015, 14:14:33
-
Есть чертежик с блоками SPDS от Autodesk и блоки от СПДС Graphics. Не могу взорвать их.
С блоками SPDS от Autodesk я еще смог бы выйти из положения, но вот СПДС Graphics меня удивили.
-
Я не увидел проблем с расчленением прокси-объектов в этом чертеже (при чем здесь блоки я не понял):
Для расчленения прокси я использовал мою программу ExplodeProxy, написанную при помощи ObjectARX (C++): http://www.maestrogroup.com.ua/support/ExplodeProxy.zip
Но здесь на форуме есть исходники и на C# (почитай всю тему): http://adn-cis.org/forum/index.php?topic=1060.0
-
Для расчленения прокси я использовал мою программу ExplodeProxy, написанную при помощи ObjectARX (C++)
Ну у меня-то нет такой програмки и команды EXPLODEALLPROXY тоже.
Похоже стандартными средствами AutoCAD взорвать эти блоки не получится (рамки - это и есть блоки), у Вас на видео они определяются как ACAD_PROXY_ENTITY, у меня как динамические блоки. Показать смогу лишь в понедельник (с работы). У меня установлена панель SPDS от Autodesk. Придется расширить тему (REMOVEALLPROXY) по написанию команды для расчленения таких блоков, но уже под VB.NET. Я оказывается не один такой нуждающийся в таком модуле.
То, что я нашел в теме REMOVEALLPROXY меня пока легко шокировало, поскольку я не подозревал, что эта тема столь сложной оказалась... для понимания моего.
У Андрея Бушмана нашел готовое решение...но, мне в нем еще разбираться и разбираться. Ваши ExplodeProxy.arx тоже меня смущают. Я так понимаю, что команда EXPLODEALLPROXY ломает объекты на линии! А мне бы до полилиний их сломать. А то потом определять размеры объектов как-то станет сложнее, мне же их еще потом в листы кидать. Допиливать сломанные блоки на линии командой PEDIT и превращать их в полилинии как-то не хочется,поскольку AutoCAD может затронуть и другие линии, которые трогать НЕЛЬЗЯ. Может попробуем найти решение?!
-
Ну у меня-то нет такой програмки и команды 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 - это всё относительно.
-
Я так понимаю, что команда 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)
У меня он точно определяется.
-
А сразу определить размер этого прокси-примитива не пробовал?
Пробовал, но с помощью VBA GetBoundingBox получал размеры всех видимых и невидимых в блоке объектов, то есть размеры получить можно, но размеры заведомо неверные.
AcDbProxyEntity:kNoOperation
Программисты из СПДС Graphics сказали. Я им пример высылал.
По поводу сложности самостоятельного написания EXPLODEALLPROXY - это всё относительно.
Согласен! Это как если бы я был кучером повозки, запряженной тройкой лошадей и мимо меня промчался на Lexus какой-нибудь водитель, сказав: "Ты знаешь, а водить машину проще и удобнее, чем на телеге с лошадьми"... и это действительно всё относительно! И потому мне нужно понять как "слезть с повозки" и научиться "водить Lexus", при этом не потеряв много времени на (пере)обучение и успев доехать до места назначения ВОВРЕМЯ! Эндрю Троельсен (C#) мне в помощь (но это, знаете, конечно не легко читать - быстро "с повозки не слезу")!
Кстати, а где можно взять SNOOP OBJECTS?
-
Кстати, а где можно взять 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)
-
Цитата: Александр Ривилис от 28-08-2015, 18:44:47
AcDbProxyEntity:kNoOperation
Программисты из СПДС Graphics сказали. Я им пример высылал.
Что-то я вообще перестал понимать что-либо. Или ты не тот чертеж сюда выложил, или им отослал не тот чертеж.
-
Хм, итак в чертеже 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 и гляньте внутрь и всё поймёте.
-
Не сильно удивлюсь, если узнаю, что Эта утилита называется MGDDBG - Ваша )))
-
Не сильно удивлюсь, если узнаю, что Эта утилита называется MGDDBG - Ваша )))
Нет. Эти обе утилиты не мои.Хм, итак в чертеже 3 блока от СПДС Graphics и 2 нижних блока от SPDS Autodesk
И что? Я тебе показывал на примитивы от СПДС Graphics и показывал, что с ними можно делать всё что угодно (расчленить, получить габариты, стереть и т.д.). Так что или программисты СПДС Graphics тебе что-то не то сказали, или ты что-то не понял.
Вот у примитива SPDS Autodesk (кончай называть их блоками) действительно установлен флаг kNoOperation. Но габариты берутся нормально. И, как ты увидел, это не помешало моей программе их расчленять и удалять.
-
Эндрю Троельсен (C#) мне в помощь
Процитирую себя же:
Я бы порекомендовал начать с Герберт Шилдт "C# 4.0. Полное руководство". Автор - популяризатор различных языков программирования. Пишет очень доступно для непрофессионалов.
Думаю, что это было бы для тебя проще.
-
кончай называть их блоками
OK
Так что или программисты СПДС Graphics тебе что-то не то сказали, или ты что-то не понял.
В понедельник выложу письмо, которое от них получил ) Может Вы там найдете иное толкование.Или ты не тот чертеж сюда выложил, или им отослал не тот чертеж.
А это вполне возможно... Я им кучу всего высылал.
Можно у Вас попросить написать последовательность действий для определения габаритов примитивов СПДС Graphics, поскольку средствами AutoCAD NET Interop я не могу у этого объекта получить размеры с помощью GetBoundingBox. Так как (может не у этих) у таких примитивов внутри есть скрытые объекты, которые могут помешать правильно определить размеры рамки примитива (так и хочется написать блока, по-инерции :)). Кстати и у SDPS Autodesk размеры рамки примитива тоже не верно определяются. Кажется именно в этом чертеже нет примитива, который содержит скрытые объекты, а в других (в понедельник выложу) есть!
Я тебе показывал на примитивы от СПДС Graphics и показывал, что с ними можно делать всё что угодно
Я видел и теперь тоже самое нужно сделать программно средствами AutoCAD NET или COM, я пока к C# не готов... но если вариантов нет, то постараюсь за выходные этот орех разгрызть... Конечно, периодически обращаясь к Вам. С Вами процесс в разы быстрее движется!!! И Вам за это спасибо.