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

10/02/2016

Пошаговая инструкция по AutoCAD I/O API

API для AutoCAD® I/O позволяет преобразовывать и управлять содержимым DWG в новой среде. Она позволяет предоставлять уникальные, масштабируемые, быстрые и мощные веб-службы для ваших клиентов.

AutoCAD I/O предоставляет службу OData, которая позволяет любому приложению, которое может потреблять OData, получать доступ к источникам данных, доступных через службу в AutoCAD I/O. OData позволяет разработчикам создавать службы данных, основанные на REST, которые разрешают ресурсы, определенные с использованием URIs (Uniform Resource Identifiers) и определяется в модели данных, которые будут опубликованы и отредактированы AutoCAD I/O и другими веб-клиентами, используя простые HTTP-сообщения.

Используя AutoCAD I/O OData Web API, вы можете:

  • Создать файл DWG
  • Запросить любую информацию из существующего файла DWG
  • Производить очистку чертежей и сохранять их в другие форматы
  • Печатать чертежи в формате DWF и PDF
  • Переводить текст с одного языка на другой

Шаг 1: Вход в систему и создание приложения

Для использования Autodesk AutoCAD I/O API, сначала создайте учетную запись Autodesk. Чтобы сделать это, нажмите "Sign Up" на панели навигации и заполните данные.

 

После того, как вы вошли в систему, вы можете создать приложение.

 

  • Нажмите кнопку "Create an App" на панели навигации, или на странице "My Apps".
  • Введите название приложения, описание и URL перенаправления (URL обратного вызова).
  • Выберите "AutoCAD I/O" API.

Примечание: URL-адрес перенаправления для OAuth2 двухфакторной аутентификации. Не волнуйтесь, если вы ещё не настроили перенаправление, однако, чтобы продолжить, в этом поле требуется значение.

После того, как вы создали приложение, вы увидите Consumer Key и Consumer Secret на вашей недавно созданной странице приложения и зарегистрированный электронной почте. Запишите эти цифры, они вам потребуются на следующем шаге.

 

Шаг 2: Создание маркера доступа (access token)

Из вашего приложения осуществите запрос к конечной точке маркера запроса AutoCAD I/O, который передаст client_id, client_secret и grant_type в качестве авторизации.

Код - JavaScript: [Выделить]
  1. var clientId = "**your id**";
  2. var clientSecret = "**your secret**";
  3. string token = null;
  4. using (var client = new HttpClient())
  5. {
  6.     var values = new List<KeyValuePair<string, string="">>();
  7.     values.Add(new KeyValuePair<string, string="">("client_id", clientId));
  8.     values.Add(new KeyValuePair<string, string="">("client_secret", clientSecret));
  9.     values.Add(new KeyValuePair<string, string="">("grant_type", "client_credentials"));
  10.     var requestContent = new FormUrlEncodedContent(values);
  11.     var response = client.PostAsync("https://developer.api.autodesk.com/authentication/v1/authenticate", requestContent).
  12.     Result;
  13.     var responseContent = response.Content.ReadAsStringAsync().Result;
  14.     var resValues = JsonConvert.DeserializeObject<Dictionary<string, string="">>(responseContent);
  15.                 token = resValues["token_type"] + " " + resValues["access_token"];
  16.  }
  17. if (!string.IsNullOrEmpty(token))
  18.     container.SendingRequest2 += (sender, e) => e.RequestMessage.SetHeader("Authorization", token);

Если значения client_secret и client_secret действительны, AutoCAD I/O отправляет обратный вызов на указанный URL, который содержит значение для access_token.

Шаг 3: Пример создания приложения

На этом этапе, мы хотели бы провести вас по примеру кода, который запрашивает службу AutoCAD I/O OData и печатает Id каждого мероприятия. Мероприятие представляет собой действие, которое может быть запущено в основном ядре AutoCAD.

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

  1. В Visual Studio, создайте консольное приложение. В поле Name укажите AcadIoSample в качестве названия вашего приложения.
  2. В меню Tools выберите Extensions and Updates.
  3. В диалоговом окне Extensions and Updates, введите OData v4 client в поле поиска.
  4. Скачайте и установите OData V4 Client Code Generator. Ввод команды: вам, возможно, потребуется перезапустить Visual Studio, чтобы завершить установку.
  5. В обозревателе решений щелкните правой кнопкой мыши имя проекта, выберите пункт Add, а затем нажмите New Item.
  6. В диалоговом окне Add New Item, на панели типов элементов Visual C++, выберите OData Client и переименуйте ваш файл клиента, например AIO.tt, и нажмите кнопку Add. Ввод команды: два файла: AIO.tt и AIO.ttinclude добавлены к вашему проекту.
  7. Используя любой текстовый редактор, откройте файл AIO.tt и обновите значение строки для MetadataDocumentUri и set_NamespacePrefix, как указано в следующем коде:

Код - JavaScript: [Выделить]
  1. public const string MetadataDocumentUri = "https://developer.api.autodesk.com/autocad.io/us-east/v2/";
  2. public const string NamespacePrefix = "AIO";

  1. В диалоговом окне Reference Manager, найдите Net.Http и json.net и добавьте его в ваши ссылки.

Код - JavaScript: [Выделить]
  1. using System.Net.Http;
  2. using Newtonsoft.Json.Net;

Примечание: ACadIO определяет пространство имен прокси-класса. .NET генерирует прокси-классы в рамках этого пространства имен для доступа к услуге OData. Вам не требуется помнить подробности об OData. Это осуществляется с помощью прокси-классов.

Создание экземпляра прокси-класса

В методе Main() создайте экземпляр прокси-класса, как показано ниже:

Код - JavaScript: [Выделить]
  1. namespace AcadIoSample
  2. {
  3.     class Program
  4.     {
  5.         static void Main(string[] args)
  6.         {
  7.             Uri uri = new Uri("https://developer.api.autodesk.com/autocad.io/us-east/v2/");
  8.             var container = new AcadIO.Container(uri);
  9.             container.Format.UseJson();
  10.         }
  11.     }
  12. }

Настройка авторизации

  1. На этом этапе мы используем следующий код, чтобы настроить разрешения доступа к AutoCAD I/O API:

Код - JavaScript: [Выделить]
  1. var clientId = "**your id**";
  2. var clientSecret = "**your secret**";
  3. string token = null;
  4. using (var client = new HttpClient())
  5. {
  6.     var values = new List<KeyValuePair<string, string="">>();
  7.     values.Add(new KeyValuePair<string, string="">("client_id", clientId));
  8.     values.Add(new KeyValuePair<string, string="">("client_secret", clientSecret));
  9.     values.Add(new KeyValuePair<string, string="">("grant_type", "client_credentials"));
  10.     var requestContent = new FormUrlEncodedContent(values);
  11.     var response = client.PostAsync("https://developer.api.autodesk.com/authentication/v1/authenticate", requestContent).Result;
  12.     var responseContent = response.Content.ReadAsStringAsync().Result;
  13.     var resValues = JsonConvert.DeserializeObject<Dictionary<string, string="">>(responseContent);
  14.     token = resValues["token_type"] + " " + resValues["access_token"];
  15. }
  16. if (!string.IsNullOrEmpty(token))
  17.     container.SendingRequest2 += (sender, e) => e.RequestMessage.SetHeader("Authorization", token);

  1. В обозревателе решений щелкните правой кнопкой мыши на References и выберите команду Add Reference.
  2. В диалоговом окне  Reference Manger, найдите Net.Http и json.net, и добавьте их в ваши ссылки.
  3. Добавьте следующие строки в ваш файл кода:

Код - JavaScript: [Выделить]
  1. using System.Net;
  2. using System.Net.Http;
  3. using Newtonsoft.Json;

Осуществление запроса службы

Теперь, когда мы настроили аутентификацию, мы бы запросить службу OData и распечатать UserId и Id каждого мероприятия, используя следующий пример кода:

Код - JavaScript: [Выделить]
  1. using System.Net;
  2. using System.Net.Http;
  3. using Newtonsoft.Json;
  4.  
  5. class Program
  6. {
  7.     static void Main(string[] args)
  8.     {
  9.         Uri uri = new Uri("https://developer.api.autodesk.com/autocad.io/v2/");
  10.         var container = new AcadIO.Container(uri);
  11.         container.Format.UseJson();
  12.         var clientId = "**your id**";
  13.         var clientSecret = "**your secret**";
  14.         string token = null;
  15.         using (var client = new HttpClient())
  16.         {
  17.             var values = new List<KeyValuePair<string, string="">>();
  18.             values.Add(new KeyValuePair<string, string="">("client_id", clientId));
  19.             values.Add(new KeyValuePair<string, string="">("client_secret", clientSecret));
  20.             values.Add(new KeyValuePair<string, string="">("grant_type", "client_credentials"));
  21.             var requestContent = new FormUrlEncodedContent(values);
  22.             var response = client.PostAsync("https://developer.api.autodesk.com/authentication/v1/authenticate", requestContent).Result;
  23.             var responseContent = response.Content.ReadAsStringAsync().Result;
  24.             var resValues = JsonConvert.DeserializeObject<Dictionary<string, string="">>(responseContent);
  25.             token = resValues["token_type"] + " " + resValues["access_token"];
  26.         }
  27.         if (!string.IsNullOrEmpty(token))
  28.             container.SendingRequest2 += (sender, e) => e.RequestMessage.SetHeader("Authorization", token);
  29.         GetActivities(container);
  30.     }
  31.     static void GetActivities(AcadIO.Container container)
  32.     {
  33.         foreach(var act in container.Activities)
  34.         {
  35.             Console.WriteLine("Id = {0}", act.Id);
  36.         }
  37.     }
  38. }

Источник: https://developer.autodesk.com/api/autocadio/ 

Автор перевода: Дмитрий Емельянов

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

Опубликовано 10.02.2016