Совместимость программы с разными версиями AutoCAD
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Совместимость программы с разными версиями AutoCAD

Совместимость программы с разными версиями AutoCAD

Ответ
Поиск в этой теме
Непрочитано 14.03.2024, 19:02 #1
Совместимость программы с разными версиями AutoCAD
Дмитрий Юпатов
 
Украина, Запорожье
Регистрация: 05.03.2009
Сообщений: 609

Возник вопрос... сделал казалось бы простейшую вещь.
Десктопная программка должна подхватить запущенный экземпляр Автокада (точнее Mechanical), найти в активном чертеже вхождения блока(ов) (нужные блоки фильтруются по TagString, прочитать значения атрибутов и показать пользователю. Пользователь может изменить значения или оставить как есть.
Все.
Использовал только AutoCAD Type Lib версии, которая установлена (на данный момент 2015).
Все работает норм на разных машинах, но если попытаться подрубиться (через GetObject) к версии Акада 2022 то ничего не получается: вываливается сообщение, что ActiveX не получилось создать. Разрядность системы и самих Автокадов одинаковая во всех случаях (х64).
Возможно ли теоретически обойтись поздним связыванием или все же нужно будет пересобирать программу под ссылку на библиотеку типов Автокада новой версии.

И второй момент. Речь идет о заполнении стандартной основной надписи. Фишка в чем... Как Автокад Механикл отличает блок основной надписи, оторый вставлен командой AMTITLE от такого же блока, вставленного руками как блок?
В первом случае при даблклике по блоку откроется диалог "Изменение граф основной надписи", а во втором - редактор атрибутов. Долго медитировал, но не нашел ни скрытых атрибутов, ни каких либо переменных, хранимых в чертеже, по которым могли бы отличия идентифицироваться... Как?

Вот и два вопроса зависли:
1. Спасет ли позднее связывание? Сейчас раскуриваю объектную модель для версии 2015 и 2022 в плане отличий (хотя пока отличий, связанных с действиями моей проги, не нашел)
2. Как же происходит идентификация вхождения блока - основной надписи и просто такого же вхождения блока?
Просмотров: 2054
 
Непрочитано 14.03.2024, 20:27
1 | #2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


1. Скорее всего, позднее связывание спасет.
2. Вполне возможно, что на вхождение блока засовываются расширенные данные или словари какие-то бросаются / дополняются.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 14.03.2024, 20:36
#3
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от Дмитрий Юпатов Посмотреть сообщение
Использовал только AutoCAD Type Lib версии, которая установлена (на данный момент 2015).
смущает эта фраза - либо подключена библиотека типов в проект, либо позднее связывание. Одновременное использование лишено смысла, имхо.
Сергей812 вне форума  
 
Автор темы   Непрочитано 14.03.2024, 20:40
#4
Дмитрий Юпатов


 
Регистрация: 05.03.2009
Украина, Запорожье
Сообщений: 609


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
1. Скорее всего, позднее связывание спасет.
2. Вполне возможно, что на вхождение блока засовываются расширенные данные или словари какие-то бросаются / дополняются.
Спасибо, буду проверять этот вариант (п. 1).

Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Одновременное использование лишено смысла, имхо.
Конечно. После написания и тестирования либу отлучаем, а специфические типы меняем на object.
Просто писать сразу без раннего связывания такое себе удовольствие
Дмитрий Юпатов вне форума  
 
Непрочитано 14.03.2024, 20:52
#5
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


на каком ЯП пишите то?
Сергей812 вне форума  
 
Автор темы   Непрочитано 14.03.2024, 20:58
#6
Дмитрий Юпатов


 
Регистрация: 05.03.2009
Украина, Запорожье
Сообщений: 609


VB.net
Дмитрий Юпатов вне форума  
 
Непрочитано 14.03.2024, 21:06
1 | #7
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


ну тогда можете попробовать переписать консольное приложение и запустить на машине с 2022 акадом. Собственно, там надо убрать строки с 25 по 48 включительно - так как нужно лишь факт наличия идентификаторов акада. Если найдет - тогда уже следующим шагом разбираться с подключением.

Ну или просто вручную в редакторе реестра поискать AutoCAD.Application - если лень переводить код в VB.NET)

Последний раз редактировалось Сергей812, 14.03.2024 в 21:15. Причина: неправильно строки кода были указаны
Сергей812 вне форума  
 
Автор темы   Непрочитано 14.03.2024, 21:25
#8
Дмитрий Юпатов


 
Регистрация: 05.03.2009
Украина, Запорожье
Сообщений: 609


Посмотрю, пасиб!
Еще аналогичное буду ваять для Inventor но там все гораздо проще - данные для осн надписи в свойствах файла хранятся. Да и, честно говоря, там вообще все както логичнее и прямолинейнее. Плюс sdk в комплекте.
Дмитрий Юпатов вне форума  
 
Автор темы   Непрочитано 15.03.2024, 11:48
#9
Дмитрий Юпатов


 
Регистрация: 05.03.2009
Украина, Запорожье
Сообщений: 609


Докладываю:
1. Позднее связывание работает. Причем даже не обязательно указывать для GetObject "AutoCAD.Application.XX" (где XX номер версии). Достаточно "AutoCAD.Application"
2. Да, сканирование реестра перевел (че там делать то, мне одна строчка и понадобилась). Считывает. Но есть свой подводный камень: приложение DWG TrueView тоже определяется как AutoCAD.Application.XX так что на автомате подтаскивать значение из массива отсканированных не вариант (как в коде-примере было). Хотя само по себе имеет место быть - если это сделать как элемент настроек приложения и хранить нужное значение в параметрах приложения, например, то норм.
Но есть еще
3. Версия .NET Framework ... бида-бида, огорчение. Компилировать свое. поделие нужно под версию дотнета, не древнее, чем нужна для AutoCAD, к которому цепляемся. Это для меня стало нежданчиком, потому что скажем, довольно много опыта по написанию прог и надстроек под MS Office. Там все проще в этом плане. У меня есть еще надстройка, написанная под 2003 версию, так вот она без всяких изменений до сих пор прекрасно работает и под 2016, и под Office 365 (которые для себя хотят минимум .net framework 3.5 и не меньше), хотя компилировалась под дотнет 2.0

Ну а так, в общем и целом - опыт удался!
Дмитрий Юпатов вне форума  
 
Непрочитано 15.03.2024, 13:02
#10
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от Дмитрий Юпатов Посмотреть сообщение
приложение DWG TrueView
Ну вылетит с ошибкой - потому что даже если у TrueView есть какой-то API COM интерфейс, у него точно нет методов модификации чертежа - так как бесплатная программа. Т.е. обрабатывать ошибки, еще и в таблицу исполняемых объектов придется, может быть, залезать.
Сергей812 вне форума  
 
Автор темы   Непрочитано 15.03.2024, 13:22
#11
Дмитрий Юпатов


 
Регистрация: 05.03.2009
Украина, Запорожье
Сообщений: 609


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Ну вылетит с ошибкой
естественно. Кстати, к нему даже не цепляется - вылетает сразу при попытке подключения, уже проверял.
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Т.е. обрабатывать ошибки, еще и в таблицу исполняемых объектов придется, может быть, залезать.
посмотрим, это моя первая проба с Автокадом, так что все еще впереди.
Дмитрий Юпатов вне форума  
 
Непрочитано 15.03.2024, 14:09
#12
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


учите C#
trir вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Совместимость программы с разными версиями AutoCAD



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Появление надписи "неизвестный" внизу чертежа программы AutoCAD 2014 LT rtyu AutoCAD 9 03.08.2015 09:43
Какой формат предпочтительней для работы с разными версиями 2004 или 2007 или...? Max358 AutoCAD 8 21.10.2014 08:45
Полное зависание Autocad 2008 LT после загрузки программы Zaverra AutoCAD 3 03.06.2009 12:29
Совместимость IndorCAD и AutoCAD mazahackoff Программирование 4 31.07.2008 18:42