Пошаговая инструкция по 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 в качестве авторизации.
- var clientId = "**your id**";
- var clientSecret = "**your secret**";
- string token = null;
- using (var client = new HttpClient())
- {
- var values = new List<KeyValuePair<string, string="">>();
- values.Add(new KeyValuePair<string, string="">("client_id", clientId));
- values.Add(new KeyValuePair<string, string="">("client_secret", clientSecret));
- values.Add(new KeyValuePair<string, string="">("grant_type", "client_credentials"));
- var requestContent = new FormUrlEncodedContent(values);
- var response = client.PostAsync("https://developer.api.autodesk.com/authentication/v1/authenticate", requestContent).
- Result;
- var responseContent = response.Content.ReadAsStringAsync().Result;
- var resValues = JsonConvert.DeserializeObject<Dictionary<string, string="">>(responseContent);
- token = resValues["token_type"] + " " + resValues["access_token"];
- }
- if (!string.IsNullOrEmpty(token))
- 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.
Создание консольного приложения
- В Visual Studio, создайте консольное приложение. В поле Name укажите AcadIoSample в качестве названия вашего приложения.
- В меню Tools выберите Extensions and Updates.
- В диалоговом окне Extensions and Updates, введите OData v4 client в поле поиска.
- Скачайте и установите OData V4 Client Code Generator. Ввод команды: вам, возможно, потребуется перезапустить Visual Studio, чтобы завершить установку.
- В обозревателе решений щелкните правой кнопкой мыши имя проекта, выберите пункт Add, а затем нажмите New Item.
- В диалоговом окне Add New Item, на панели типов элементов Visual C++, выберите OData Client и переименуйте ваш файл клиента, например AIO.tt, и нажмите кнопку Add. Ввод команды: два файла: AIO.tt и AIO.ttinclude добавлены к вашему проекту.
- Используя любой текстовый редактор, откройте файл AIO.tt и обновите значение строки для MetadataDocumentUri и set_NamespacePrefix, как указано в следующем коде:
- public const string MetadataDocumentUri = "https://developer.api.autodesk.com/autocad.io/us-east/v2/";
- public const string NamespacePrefix = "AIO";
- В диалоговом окне Reference Manager, найдите Net.Http и json.net и добавьте его в ваши ссылки.
- using System.Net.Http;
- using Newtonsoft.Json.Net;
Примечание: ACadIO определяет пространство имен прокси-класса. .NET генерирует прокси-классы в рамках этого пространства имен для доступа к услуге OData. Вам не требуется помнить подробности об OData. Это осуществляется с помощью прокси-классов.
Создание экземпляра прокси-класса
В методе Main() создайте экземпляр прокси-класса, как показано ниже:
- namespace AcadIoSample
- {
- class Program
- {
- static void Main(string[] args)
- {
- Uri uri = new Uri("https://developer.api.autodesk.com/autocad.io/us-east/v2/");
- var container = new AcadIO.Container(uri);
- container.Format.UseJson();
- }
- }
- }
Настройка авторизации
- На этом этапе мы используем следующий код, чтобы настроить разрешения доступа к AutoCAD I/O API:
- var clientId = "**your id**";
- var clientSecret = "**your secret**";
- string token = null;
- using (var client = new HttpClient())
- {
- var values = new List<KeyValuePair<string, string="">>();
- values.Add(new KeyValuePair<string, string="">("client_id", clientId));
- values.Add(new KeyValuePair<string, string="">("client_secret", clientSecret));
- values.Add(new KeyValuePair<string, string="">("grant_type", "client_credentials"));
- var requestContent = new FormUrlEncodedContent(values);
- var response = client.PostAsync("https://developer.api.autodesk.com/authentication/v1/authenticate", requestContent).Result;
- var responseContent = response.Content.ReadAsStringAsync().Result;
- var resValues = JsonConvert.DeserializeObject<Dictionary<string, string="">>(responseContent);
- token = resValues["token_type"] + " " + resValues["access_token"];
- }
- if (!string.IsNullOrEmpty(token))
- container.SendingRequest2 += (sender, e) => e.RequestMessage.SetHeader("Authorization", token);
- В обозревателе решений щелкните правой кнопкой мыши на References и выберите команду Add Reference.
- В диалоговом окне Reference Manger, найдите Net.Http и json.net, и добавьте их в ваши ссылки.
- Добавьте следующие строки в ваш файл кода:
- using System.Net;
- using System.Net.Http;
- using Newtonsoft.Json;
Осуществление запроса службы
Теперь, когда мы настроили аутентификацию, мы бы запросить службу OData и распечатать UserId и Id каждого мероприятия, используя следующий пример кода:
- using System.Net;
- using System.Net.Http;
- using Newtonsoft.Json;
- class Program
- {
- static void Main(string[] args)
- {
- Uri uri = new Uri("https://developer.api.autodesk.com/autocad.io/v2/");
- var container = new AcadIO.Container(uri);
- container.Format.UseJson();
- var clientId = "**your id**";
- var clientSecret = "**your secret**";
- string token = null;
- using (var client = new HttpClient())
- {
- var values = new List<KeyValuePair<string, string="">>();
- values.Add(new KeyValuePair<string, string="">("client_id", clientId));
- values.Add(new KeyValuePair<string, string="">("client_secret", clientSecret));
- values.Add(new KeyValuePair<string, string="">("grant_type", "client_credentials"));
- var requestContent = new FormUrlEncodedContent(values);
- var response = client.PostAsync("https://developer.api.autodesk.com/authentication/v1/authenticate", requestContent).Result;
- var responseContent = response.Content.ReadAsStringAsync().Result;
- var resValues = JsonConvert.DeserializeObject<Dictionary<string, string="">>(responseContent);
- token = resValues["token_type"] + " " + resValues["access_token"];
- }
- if (!string.IsNullOrEmpty(token))
- container.SendingRequest2 += (sender, e) => e.RequestMessage.SetHeader("Authorization", token);
- GetActivities(container);
- }
- static void GetActivities(AcadIO.Container container)
- {
- foreach(var act in container.Activities)
- {
- Console.WriteLine("Id = {0}", act.Id);
- }
- }
- }
Источник: https://developer.autodesk.com/api/autocadio/
Обсуждение: http://adn-cis.org/forum/index.php?topic=4292
Опубликовано 10.02.2016