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

ADN Club => Civil 3D API => Тема начата: Stoner от 21-04-2015, 16:18:52

Название: Как правильно сделать транзакцию C#
Отправлено: Stoner от 21-04-2015, 16:18:52
Здравствуйте.
Подскажите как сделать правильно:
Пытаюсь из листинга http://forums.autodesk.com/t5/autocad-civil-3d-customization/points-api-in-2012/m-p/3185062#M5888 на VB
состряпать свой код на C#.
Вот застрял на транзакции:
Код - C# [Выбрать]
  1. [CommandMethod("GetCoordCOGObyNum")]
  2.         public float[] GetCoordCOGObyNum(uint num)
  3.         {
  4.             Autodesk.AutoCAD.Interop.AcadApplication oAcadApp = null;
  5.             Autodesk.AECC.Interop.UiLand.AeccApplication oAeccApp = null;
  6.             Autodesk.AECC.Interop.UiLand.AeccDocument oAeccDoc = null;
  7.             Autodesk.AECC.Interop.Land.AeccDatabase oAeccDB = null;
  8.             Transaction trans = HostApplicationServices.WorkingDatabase.TransactionManager.StartTransaction();
  9.             using (trans)
  10.             {
  11.                 try
  12.                 {
  13.                     if (oAcadApp==null) oAcadApp=GetObject(,"Autocad.Application");
  14.                 }
  15.                 catch (Exception ex)
  16.                 {
  17.                     ed.WriteMessage(ex.Message);
  18.                 }
  19.                 try
  20.                 {
  21.                     oAeccApp=oAcadApp.GetInterfaceObject("AeccXUiLand.AeccApplication.9.0");
  22.                     oAeccDoc=oAeccApp.ActiveDocument;
  23.                     oAeccDB=oAeccApp.ActiveDocument.Database;
  24.                 }
  25.             ed.WriteMessage("Получение координат точки COGO c номером ",num," .....");
  26.             float[] GetCoorfCOGObyNum=new float[2];//сюда будут записаны координаты
  27.             //Дальше ещё не написано, застрял на транзакции
  28.         }
Пытаюсь добраться до точек COGO через COM
 if (oAcadApp==null) oAcadApp=GetObject(,"Autocad.Application");//Вот здесь GetObject из листинга VB, как это в C# исправить?
Название: Re: Как правильно сделать транзакцию C#
Отправлено: Александр Ривилис от 21-04-2015, 16:42:28
1. Отформатируй код по правилам как у меня написано в подписи.
2. Есть online преобразование VB.NET -> C# http://www.developerfusion.com/tools/convert/vb-to-csharp/
Попробуй его.
3. Думаю что подойдёт:
Код - C# [Выбрать]
  1. oAcadApp = Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication;
Название: Re: Как правильно сделать транзакцию C#
Отправлено: Дмитрий Загорулькин от 22-04-2015, 10:28:35
Метод, помеченный атрибутом CommandMethod, должен быть типа void и без параметров:
Код - C# [Выбрать]
  1. [CommandMethod("GetCoordCOGObyNum")]
  2. public void GetCoordCOGObyNum()
  3. {
  4. ...