вторник, 26 января 2010 г.

Разработка модуля нормоконтроля (часть 2)

В этой части приводится общая обзорная информация по теме.


Во первых нужно будет подключить к проекту следующие библиотеки:
  1. Библиотека "AutoCAD/ObjectDBX Common 17.0 Type Library" (на вкладке COM окна добавления ссылок). Установить свойство Copy Local = False.
  2. Библиотека "Microsoft XML, v6.0" (на вкладке COM окна добавления ссылок). Установить свойство Copy Local = False.
  3. В каталоге "ObjectARX 2009\inc-win32" находится файл AcStMgr.tlb. Для этого файла нужно создать управляемую оболочку, которую затем следует подключить к проекту. Для того, чтобы создать управляемую оболочку, нужно открыть командную строку Visual Studio 2008, перейти в каталог, содержащий файл AcStMgr.tlb и выполнить команду "tlbimp acstmgr.tlb" (без кавычек). В результате работы команды, в этом же каталоге будет создан файл AcStMgr.dll.  Еслу у вас вместо MS VS 2008 установлен MS VS 2010, то применительно к AutoCAD 2009 придётся поступить иначе: скачайте отсюда
    Windows SDK и установите его. Затем перейдите в каталог %ProgramFiles%\Microsoft SDKs\Windows\v6.1\Bin и выполните команду, обозначенную выше, указав полный путь к tlb-файлу. Результирующий файл AcStMgr.dll будет создан в том же каталоге - %ProgramFiles%\Microsoft SDKs\Windows\v6.1\Bin. Переместите его в ваш каталог ObjectARX (в моём случае это C:\ObjectARX 2009\inc-win32).
  4. На полученный файл AcStMgr.dll следует добавить ссылку в вашем проекте (на вкладке COM окна добавления ссылок) и установить свойство Copy Local = True.
Создаваемый класс должен реализовывать интерфейс IAcStPlugin2 из пространства AcStMgr, определённого в файле AcStMgr.dll, полученном нами ранее. Помимо этого, класс следует объявлять с уровнем доступности public и определить для него атрибут ProgId.
Далее пишем программный код, реализовывая указанный выше интерфейс...
После того, как код написан, необходимо  выполнить ряд дополнительных действий:
  1. В файле AssemblyInfo.cs нужно установить видимость проекта для COM-объектов равным True (по умолчанию установлено False): [assembly: ComVisible(true)]. Это же самое действие можно сделать через свойства проекта, на вкладке "Application" нажав на кнопку "Assembly Information..." и  установив галочку в поле "Make assembly Com-Visible".
  2. После того, как проект будет написан и откомпилирован, полученную библиотеку (Имя файла нашей библиотеки.dll) необходимо  в окне консоли (cmd.exe) выполнить команду "regasm /codebase <Имя файла нашей библиотеки>.dll" (без кавычек). 
  3. Далее следует создать reg-файл со следующим содержимым:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\Drawing Check\Plugins2\<Значение атрибута ProgId  созданного нами класса>]
@="<Имя нашего dll-файла>"

Теперь нужно запустить созданный выше reg-файл, произведя тем самым необходимые изменения в реестре.
После этого в AutoCAD (в диалоговом окне "Configure Standard", на вкладке "Plag-ins") должна появиться запись для созданного и зарегистрированного нами в реестре модуля  нормоконтроля (помимо уже имеющихся четырёх, входящих в стандартную поставку AutoCAD).

Комментариев нет: