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

ADN Club => AutoCAD .NET API => Тема начата: Agens от 23-04-2014, 11:32:16

Название: как подключить *.arx в VB.NET...
Отправлено: Agens от 23-04-2014, 11:32:16
Привет всем. Нужна Ваша помощь.
После перехода с VBA на VB.NET не могу подключить *PropertiesPalette_r18x64.arx.
----
ниже:
1. подключение *.arx к VBA.
2. искользование *.arx в проекте, доступ к свойствам и функциям.
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Александр Ривилис от 23-04-2014, 19:06:53
Вот из той tlb-библиотеки, которую ты тщательно замазал (совершенно непонятно зачем), нужно будет сделать Interop Dll, который и можно будет подключить к VB.NET
Для этой цели обычно пользуются утилитой TLBIMP.EXE (http://msdn.microsoft.com/en-us/library/tt0cf3sx%28v=vs.110%29.aspx)
Обычно она в составе Visual Studio, но возможно тебе понадобится соответствующая версия Visual Studio (скорее всего 2008)
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Андрей Бушман от 23-04-2014, 22:49:09
тынц (http://bushman-andrey.blogspot.ru/search/label/TLB).
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Agens от 24-04-2014, 11:12:50
Спасибо. Вроде получилось. Разбираюсь на сколько силен.
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Agens от 24-04-2014, 11:34:43
здесь "C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools"
выполняю "tlbimp C:\Program Files\MagiCAD\MAGIMCPropertiesPalette_r18x64.arx" /out:"C:\ObjectARX2012\MAGIMCPropertiesPalette_r18x64.dll" /namespace:AGMCPP.4.0"
ответ:
Цитировать
Microsoft (R) .NET Framework Type Library to Assembly Converter 4.0.30319.17929
Copyright (C) Microsoft Corporation.  All rights reserved.

TlbImp : warning TI3002 : Importing a type library into a platform agnostic asse
mbly.  This can cause errors if the type library is not truly platform agnostic.

TlbImp : warning TI3016 : The type library importer could not convert the signat
ure for the member 'AGMCPP.4.0.tagCALPOLESTR.pElems'.
TlbImp : warning TI3016 : The type library importer could not convert the signat
ure for the member 'AGMCPP.4.0.tagCADWORD.pElems'.
TlbImp : Type library imported to C:\ObjectARX 2012\MAGIMCPropertiesPalette_r18x
64.dll
не подскажите, что за ошибки?
я вообще не программист, поэтому вопросы могут быть смешными... dll я импортировал в VB, даже в браузере видны свойства и методы, но в коде из нет, не знаю что делать...
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Андрей Бушман от 24-04-2014, 11:37:01
В референсах проекта библиотека подключена?
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Agens от 24-04-2014, 11:39:09
Подключи как и Acad.Interop...
Поставил галку True на копирование локально...
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Александр Ривилис от 24-04-2014, 11:41:19
Agens
1. Во-первых подозреваю, что не та версия TLBIMP, о чем я выше писал и  Андрей Бушман указывал у себя в блоге, т.к. скорее всего у тебя линейка AutoCAD 2010...2012 и соотвественно нужно .NET 3.5
2. У тебя нет указания параметра /machine:x64
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Agens от 24-04-2014, 11:43:34
Спасибо огромное, что помогаете. Сейчам буду экспериментировать...
а помему еще тут "C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\x64" "TlbImp.exe" есть?
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Agens от 24-04-2014, 11:44:40
Под 3.5 делал, с.час отпишусь...
Цитировать
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin>tlbimp "C:\Program Files
\MagiCAD\MAGIMCPropertiesPalette_r18x64.arx" /out:"C:\ObjectARX 2012\AGMCPP.3.5.
dll" /namespace:AGMCPP.3.5 /machine:x64
Microsoft (R) .NET Framework Type Library to Assembly Converter 3.5.30729.1
Copyright (C) Microsoft Corporation.  All rights reserved.

TlbImp : warning TI0000 : Программе импорта библиотек типов не удалось преобразо
вать подпись для члена "tagCALPOLESTR.pElems".
TlbImp : warning TI0000 : Программе импорта библиотек типов не удалось преобразо
вать подпись для члена "tagCADWORD.pElems".
TlbImp : error TI0000 : System.SystemException - Модуль импорта библиотеки типов
 обнаружил ошибку при проверке типа. Попытайтесь провести импорт без членов клас
са. : System.MissingMethodException - Метод не найден: "System.String AGMCPP.3.5
.IMCDuct.get_ObjectID()".
Я пока в тупике... :(
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Александр Ривилис от 24-04-2014, 12:08:02
Стоп. Я что-то не понял.  А в http://adn-cis.org/forum/index.php?topic=695.msg2443#msg2443 ты разве не подключил arx-файл как DLL?
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Андрей Бушман от 24-04-2014, 12:13:37
но в коде из нет, не знаю что делать...
Соответствующие using (в VB кажется import) в файл кода добавлены?
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Agens от 24-04-2014, 12:14:44
простите, может я что- то не понимаю. вроде как подключил, но не могу код написать, используя библиотеку...
Цитировать
Imports Autodesk.AutoCAD.Interop
Imports Autodesk.AutoCAD.Interop.Common
Imports AGMCPP
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Александр Ривилис от 24-04-2014, 12:15:39
Ну и не забыть (желательно в методе Initialize) убедится, что этот arx-файл загружен, а если не загружен, то загрузить его.
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Андрей Бушман от 24-04-2014, 12:17:31
Ну и не забыть (желательно в методе Initialize) убедится, что этот arx-файл загружен, а если не загружен, то загрузить его.
Если я правильно понял автора, то он спрашивает, почему у него для спёртых им библиотек не работает IntelliSense в редакторе кода, несмотря на то, что библиотека подключена и нэймспейс расшарен (согласно его утверждению).
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Александр Ривилис от 24-04-2014, 12:18:17
Imports AGMCPP
Может
Код - vb.net [Выбрать]
  1. Imports AGMCPP.4.0
?
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Александр Ривилис от 24-04-2014, 12:20:14
Если я правильно понял автора, то он спрашивает, почему у него для спёртых им библиотек не работает IntelliSense в редакторе кода.
Ну это я не подскажу. Я ему не об этом писал, а о том, что для того чтобы использовать классы и методы из этого ARX-файла он должен быть загружен в AutoCAD.
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Agens от 24-04-2014, 12:22:42
arx подгружается вместе с программой в которой я проектирую. в этом "затыка" быть не может...
я же даже еще код не написал, не компилировал...
Если я правильно понял автора, то он спрашивает, почему у него для спёртых им библиотек не работает IntelliSense в редакторе кода, несмотря на то, что библиотека подключена и нэймспейс расшарен (согласно его
спасибо, хоть научусь правильным терминам... да, говоря по-простому, нет подсказки после точки...
Может
Код - vb.net [Выбрать]
  1. Imports AGMCPP.4.0
?
У меня так "высвечивается"
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Александр Ривилис от 24-04-2014, 12:25:15
Попробуй вставить:
Код - vb.net [Выбрать]
  1. Imports MAGIMCPropertiesPalette_r18x64
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Agens от 24-04-2014, 12:31:01
Попробуй вставить:
Код - vb.net [Выбрать]
  1. Imports MAGIMCPropertiesPalette_r18x64
подчеркивает и ругается...
т.е. вы хотите сказать, что dll конвертировалась нормально, ошибок в ком.строке нет?
под 3.5 dll вообще не создается, только 4.0, но раз 2012 автокад использует 3.5, значит что-то я не так делаю...
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Андрей Бушман от 24-04-2014, 12:32:35
Попробуй вставить:
Код - vb.net [Выбрать]
  1. Imports MAGIMCPropertiesPalette_r18x64
Не думаю, что указание имени сборки вместо полного имени пространства имён, поможет делу :). Очень странно, что у него имена вложенных пространство имён содержит лишь цифры... Насколько мне известно, имена должны начинаться с букв... Во всяком случае C# на подобное "чудо" матерится.

Название: Re: как подключить *.arx в VB.NET...
Отправлено: Александр Ривилис от 24-04-2014, 12:33:56
Он вообще в данном случае не конвертируется, а просто подключается к проекту.
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Agens от 24-04-2014, 12:37:10
я запутался... VB проект я делаю пока под WinForms, т.к. под автокад отладка тяжковата...
проект в свойствах Fram.3.5, dll 3.5 не получается...
может поставить автокад 2013-14 и под 4.0 делать, или я в чем-то ошибаюсь...
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Андрей Бушман от 24-04-2014, 12:37:38
автор, а что это за хрень?
Цитировать
/namespace:AGMCPP.3.5
попробуй заменить например на это (в командной строке, когда используешь tlbimp):
Цитировать
/namespace:AGMCPP
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Андрей Бушман от 24-04-2014, 12:41:02
т.к. под автокад отладка тяжковата..
в чём тяжковата?
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Александр Ривилис от 24-04-2014, 12:43:22
VB проект я делаю пока под WinForms, т.к. под автокад отладка тяжковата...
Как ты собираешься заниматься отладкой, если это этот arx-файл (как и добавленные тобой сборки) можно использовать только внутри AutoCAD?
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Agens от 24-04-2014, 12:44:03
автор, а что это за хрень?
Да, правда "хрень", убрал цифры и все заработало, появились подсказки...
т.к. под автокад отладка тяжковата..
в чём тяжковата?
запускаю компилятор, запускается автокад, потом netoad-ом подгружаю dll.
т.к. у меня опыта мало, оч. много ошибок, и так по 100 раз. останавливаю компилятор, акад выгружается. оч. это проблемно, в VBA было просто :)
но если есть другой способ, оч. буду благодарен за подсказку...
спасибо...
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Agens от 24-04-2014, 12:45:31
VB проект я делаю пока под WinForms, т.к. под автокад отладка тяжковата...
Как ты собираешься заниматься отладкой, если это этот arx-файл (как и добавленные тобой сборки) можно использовать только внутри AutoCAD?
я пишу оболочку, обработчик данных, иногда подсовываю данные искусственно, потом уже лезу в автокад... или импортирую данные из библиотек, отдельнолежащих (выбор примитивов, построение, вывод данных и пр.)
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Андрей Бушман от 24-04-2014, 12:49:16
Да, правда "хрень", убрал цифры и все заработало, появились подсказки...
Странно, что tlbimp пропустил этот откровенный мусор... Должен был ругнуться на недопустимость подобного имени (имхо).
если есть другой способ, оч. буду благодарен за подсказку...
Нужно понимать, что существуют два понятия: тестирование и собственно отладка. Отладка, это когда ты через брэйкпоинты смотришь текущее состояние своего плагина, остановленное в процессе его работы. А чтобы не заморачиваться этим постоянно, как раз и пишутся тесты, используя для этого специализированные фрэймворки. Касательно плагинов AutoCAD для этого можно использовать фрэймворк Gallio. Наличие тестов позволяет быстро проверить весь твой код, либо лишь конкретную, интересующую его часть.
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Agens от 24-04-2014, 12:53:12
Спасибо, но для меня это сложновато.
Буду переваривать, если получится написать хоть-что то, используя полученную библиотеку, для меня это уже будет победа...
Спасибо за помощь... до земли...
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Андрей Бушман от 24-04-2014, 12:55:45
для меня это сложновато
"сложновато" сидеть и беспрерывно, судорожно стучать по левой кнопке мыши, переходя с одного брэйкпоинта на другой и формируя своему пальцу синдром дятла. Создавать тесты достаточно просто, было бы желание. Информации на эту тему в интернете море, в т.ч. и примеров. Но, как говорится: хозяин - барин. :)
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Agens от 24-04-2014, 13:01:53
у меня софт не того уровня... :)
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Владимир Шу от 24-04-2014, 15:29:12
Андрей, а можно тебя попросить написать небольшое пособие по тестам, применительно к автокаду.
Так сказать с чего начать и как это делать правильно, этакий quick start.
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Андрей Бушман от 24-04-2014, 15:43:51
Андрей, а можно тебя попросить написать небольшое пособие по тестам, применительно к автокаду.
Так сказать с чего начать и как это делать правильно, этакий quick start.
В принципе, у меня есть этот материал, нужно только оформить его нормально... Как оформлю - в блоге размещу (постараюсь на след. неделе).
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Agens от 24-04-2014, 16:13:29
скиньте потом пож.ста ссылку
у меня еще вопрос. как при отладке в автокаде отстановить другую dll, которая мешает запускаться отладчику.
пока я удаляю/переименовываю эту dll. вроде как можно скрипт написать, но я в этом не силен. спасибо.
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Александр Ривилис от 24-04-2014, 16:16:54
как при отладке в автокаде отстановить другую dll, которая мешает запускаться отладчику.
пока я удаляю/переименовываю эту dll.
Это что-то новенькое. Какая dll в AutoCAD может помешать запустится отладчику? Может быть имеется в виду исправление в коде, повторная компиляция и запуск отладчика? Тогда только перезапуск AutoCAD. Все остальные варианты или вообще не работают, или работают очень плохо. Причина - в AutoCAD нельзя выгрузить .NET-сборку. Обсуждалось много раз. В частности и в блоге Андрея. Воспользуйся поиском.
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Agens от 24-04-2014, 16:27:26
Бывают "хорошие" dll, а бывают "плохие", так вот это "плохая" dll, которая делает "хорошее" дело...
Позже скину скрин...
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Agens от 13-05-2014, 22:05:44
Андрей Бушман, пособие ждем :)
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Андрей Бушман от 13-05-2014, 22:14:47
Андрей Бушман, пособие ждем :)
После того, как доделаю текущую работу - она в приоритете и заняла больше времени, чем изначально предполагалось.
Название: Re: как подключить *.arx в VB.NET...
Отправлено: Андрей Бушман от 13-05-2014, 22:40:28
Если сильно невтерпёж, то можно получить некоторое общее представление посмотрев это (http://www.theswamp.org/index.php?topic=46980.msg520030#msg520030). Там, помимо маленького примера, я показал скрин с отчётом, автоматом сгенерированным по результатам тестирования.