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

16/04/2018

Новый параметр запроса objectid для Model Derivative Properties API

Это долгожданная функция некоторых разработчиков, использующих конечную точку Model Derivative API: GET :urn/metadata/:guid/properties, теперь позволяет использовать параметр запроса ObjectID чтобы получить свойства для конкретного компонента. Отсутствие этого необязательного параметра при запросе возвратит свойства всех компонентов модели.  

Проблема, с которой мы столкнулись в прошлом, заключается в том, что возвращаемая полезная нагрузка может быть довольно большой при работе с большими моделями BIM, например, содержащими множество компонентов с большим количеством свойств, поэтому они приводят к неудачному запросу или к трудностям при разборе полезной нагрузки. Теперь это в прошлом, так как теперь можно сначала получить иерархию модели, и запрашивать свойства для каждого компонента.

Чтобы использовать эту функцию, вам необходимо использовать следующие конечные точки:

1. Используя URN вашего преобразованного проекта, извлеките список содержащихся в нем метаданных. Для модели, содержащей несколько видов просмотра, вы получите один GUID на каждый, доступный для просмотра. Если ваша модель имеет только один вид, вам все равно нужно получить то, что является GUID для этого вида:

GET :urn/metadata

Вот пример ответа, который используется для одной из моих моделей:

Код - HTML: [Выделить]
  1. {
  2.   "statusCode": 200,
  3.   "headers": {
  4.     "access-control-allow-credentials": "true",
  5.       "access-control-allow-origin": "*",
  6.       "content-type": "application/json;
  7.     charset=utf-8",
  8.     "date": "Mon, 02 Apr 2018
  9.     08:15:31 GMT",
  10.     "x-ads-app-identifier": "platform-viewing-2018.01.02.49.b4217d5-production",
  11.       "x-ads-duration": "255
  12.     ms",
  13.     "x-ads-startup-time": "Fri Mar 16
  14.     06:18:48 UTC 2018",
  15.     "content-length": "122",
  16.       "connection": "Close"
  17.   },
  18.   "body": {
  19.     "data": {
  20.       "type": "metadata",
  21.         "metadata": [
  22.         {
  23.           "name": "Analyze.iam",
  24.           "role": "3d",
  25.           "guid": "ab2fb5b0-9101-0d3e-28c9-e61f9f0c15c5"
  26.         }
  27.       ]
  28.     }
  29.   }
  30. }

2. Используя данный GUID, извлеките иерархию модели, чтобы определить объект, который вы ищете, или существующие objectid в этой модели:

GET :urn/metadata/:guid

Образец ответа для вышеуказанного примера "ab2fb5b0-9101-0d3e-28c9-e61f9f0c15c5":

Код - HTML: [Выделить]
  1. {
  2.   "statusCode": 200,
  3.   "headers": {
  4.   "access-control-allow-credentials": "true",
  5.     "access-control-allow-origin": "*",
  6.     "content-type": "application/json;
  7.   charset=utf-8",
  8.   "date": "Mon, 02 Apr 2018
  9.   08:22:59 GMT",
  10.   "x-ads-app-identifier": "platform-viewing-2018.01.02.49.b4217d5-production",
  11.     "x-ads-duration": "77
  12.   ms",
  13.   "x-ads-startup-time": "Fri Mar 16
  14.   06:39:21 UTC 2018",
  15.   "content-length": "693",
  16.     "connection": "Close"
  17. },
  18.   "body": {
  19.     "data": {
  20.       "type": "objects",
  21.         "objects": [
  22.         {
  23.           "objectid": 13,
  24.           "name": "Analyze.iam",
  25.           "objects": [
  26.             {
  27.               "objectid": 15,
  28.               "name": "Upper_Plate:1"
  29.             },
  30.             {
  31.               "objectid": 16,
  32.               "name": "Upper_Plate:2"
  33.             },
  34.             {
  35.               "objectid": 17,
  36.               "name": "Lower_Plate:1"
  37.             },
  38.             {
  39.               "objectid": 12,
  40.               "name": "Lower_Plate:2"
  41.             },
  42.             {
  43.               "objectid": 14,
  44.               "name": "Pin_A:1"
  45.             },
  46.             {
  47.               "objectid": 18,
  48.               "name": "Pin_A:2"
  49.             },
  50.             {
  51.               "objectid": 19,
  52.               "name": "Pin_A:3"
  53.             },
  54.             {
  55.               "objectid": 20,
  56.               "name": "Pin_A:4"
  57.             },
  58.             {
  59.               "objectid": 21,
  60.               "name": "Pin_B:1"
  61.             },
  62.             {
  63.               "objectid": 22,
  64.               "name": "Pivot_Threaded:1"
  65.             },
  66.             {
  67.               "objectid": 23,
  68.               "name": "Handle:1"
  69.             },
  70.             {
  71.               "objectid": 24,
  72.               "name": "Screw:1"
  73.             },
  74.             {
  75.               "objectid": 25,
  76.               "name": "Pivot_Lower:1"
  77.             },
  78.             {
  79.               "objectid": 26,
  80.               "name": "SHCS_10-32x6:1"
  81.             },
  82.             {
  83.               "objectid": 27,
  84.               "name": "ch_09-Upper_Grip.ipt:1"
  85.             },
  86.             {
  87.               "objectid": 28,
  88.               "name": "ch_09-Lower_Grip.ipt:1"
  89.             }
  90.           ]
  91.         }
  92.       ]
  93.     }
  94.   }
  95. }

 

3. Извлечь свойства для данного objectid:

GET :urn/metadata/:guid/properties?objectid={objId}

Здесь я использовал objectid = 15 в моей строке запроса:

Код - HTML: [Выделить]
  1. {
  2.   "data": {
  3.   "type": "properties",
  4.     "collection": [
  5.       {
  6.         "objectid": 15,
  7.         "name": "Upper_Plate:1",
  8.         "externalId": "8fz31Z_6FEqOu56M881BVw",
  9.         "properties": {
  10.           "Author": "Administrator",
  11.           "label": "Upper_Plate:1",
  12.           "Design Tracking Properties": {
  13.             "Date Created": "1999-05-20",
  14.             "Design Status": "0",
  15.             "Designer": "Administrator",
  16.             "Part Number": "Upper_Plate"
  17.           },
  18.           "Physical": {
  19.             "Center of Gravity:": "-0.652 in, -0.197 in, -0.437 in",
  20.             "Density": "7.860 kilogram/inch^3",
  21.             "Material": "Steel, Mild"
  22.           }
  23.         }
  24.       }
  25.     ]
  26.   }
  27. }

Источник: https://forge.autodesk.com/blog/new-objectid-query-parameter-model-derivative-properties-api 

 

 

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

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

Опубликовано 16.04.2018
Отредактировано 16.04.2018 в 18:15:52