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

11/01/2014

Создание и запуск приложения

Создание приложения для Civil 3D начинается с выбора правильного типа проекта – библиотека классов:


Далее необходимо добавить несколько ссылок на соответствующие библиотеки:

  1. acdbmgd.dll – службы базы данных и управления DWG чертежа;
  2. acmgd.dll – определение приложения AutoCAD;
  3. accoremgd.dll – основная логика AutoCAD;
  4. AeccDbMgd.dll – базы данных объектов Civil 3D;
  5. AecBaseMgd.dll – базовые классы для работы с объектами Civil 3D и AutoCAD Architecture.

Все эти библиотеки располагаются в корневом каталоге установки Civil 3D.

Для совместимости приложения, необходимо для всех подключаемых библиотек AutoCAD и Civil 3D для свойства «Копировать локально» устанавливать значение «False».

Доступ к ранее созданному объекту Civil 3D осуществляется через транзакцию:

Код - VB.NET: [Выделить]
  1. Using a_trans As Autodesk.AutoCAD.DatabaseServices.Transaction = _
  2.   Autodesk.AutoCAD.ApplicationServices.Application. _
  3.     DocumentManager.MdiActiveDocument.Database.TransactionManager.StartTransaction
  4.   '...
  5.   a_trans.Commit()
  6. End Using

Важное замечание: любая транзакция должна завершаться либо закрытием – «a_trans.Commit()», либо отказом – «a_trans.Abort()». Все изменения объектов сохраняются в базе данных чертежа только после закрытия транзакции (a_trans.Commit()).

Открытие объекта Civil 3D выполнятся точно так же, как и объектов AutoCAD:

Код - VB.NET: [Выделить]
  1. 'Открытие только для чтения
  2. q_Profile = a_trans.GetObject(q_ProfileId, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForRead)
  3. 'Открытие для редактирования
  4. q_Profile = a_trans.GetObject(q_ProfileId, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForWrite)

При необходимости, объект, открытый для чтения, можно обновить для редактирования:

Код - VB.NET: [Выделить]
  1. q_Profile.UpgradeOpen()

 

Запуск приложения

Поскольку основой Civil 3D является обычный AutoCAD, то и запускать команды для Civil 3D можно точно так же, как и для AutoCAD:

Код - VB.NET: [Выделить]
  1. <Autodesk.AutoCAD.Runtime.CommandMethod("AOC_AppCreating")> _
  2. Public Sub AOC_AppCreating()
  3.  
  4. End Sub
 

Теперь в Civil 3D можно загрузить собственное приложение с помощью команды NETLOAD и выполнить созданную команду AOC_AppCreating.

Однако, Civil 3D предоставляет дополнительный более удобный механизм запуска внешних приложений – Панель инструментов.

При использования Панели инструментов наша процедура будет иметь следующий вид:

Код - VB.NET: [Выделить]
  1. Public Shared Sub AOC_AppCreating()
  2.  
  3. End Sub

После этого необходимо создать новый инструмент в Панели инструментов:

 

 

В поле «Выполнить файл» необходимо указать полный путь к исполняемому файлу DLL; в поле «Имя макроса» – имя процедуры, как оно было написано в исходном коде (с учетом регистра).

 

Автор: Алексей Терно
Автор перевода: Алексей Терно

Обсуждение: http://adn-cis.org/forum/index.php?topic=450

Опубликовано 11.01.2014
Отредактировано 11.01.2014 в 03:08:09