2017-02-14 5 views
0

Мы пытаемся преобразовать файл Revit (.rvt) в SVF, чтобы мы могли просматривать этот файл в программе просмотра, для этого мы используем forge API и PHP. Но когда мы выполняем команду cURL для получения SVF, получаем результат NULL.SVF-файл и SFV-файл URN с использованием PHP-кода - Forge

Мы используем следующие шаги -

  1. Authentication

    Создано приложение

    Использование 3-турецки токен

  2. управления данными

    Мы используем ' Загрузите учебник «Файл», чтобы получить URN le form A360. Ссылка - https://developer.autodesk.com/en/docs/data/v2/tutorials/download-file/ На пятом этапе мы получаем файл URN с версией - $ revitFileURN = 'urn: adsk.wipprod: fs.file: vf.2tIxruH7Qpuhai7__Z982g? Version = 1'; Теперь мы используем этот URN для подготовки этого файла к Viewer, для этого нам нужен SVF-файл. Ссылка - https://developer.autodesk.com/en/docs/model-derivative/v2/tutorials/prepare-file-for-viewer/

  3. Подготовить файл для просмотра

    преобразовал источник URN в кодировкой Base64 URN:

    $revitFileURNEncoded = base64_encode ( $revitFileURN); 
    

    массив Создание данных

    $dataValue = array("input" => array ("urn" =>$revitFileURNEncoded), "output"=>array("formats"=>array(array("type"=>"svf","views"=>array("2d","3D"))))); 
    $data_string = http_build_query($dataValue); 
    

    создания массива заголовка

    $strHeader=array(); 
    $strHeader[]='Authorization: Bearer '.$AccessToken; 
    $strHeader[]='Content-Type: application/json'; 
    
    исполнение

    Curl -

    curl_setopt_array($curlTranslateFileToSVF, array(
         CURLOPT_URL => $url, 
         CURLOPT_POSTFIELDS =>$data_string, 
         CURLOPT_POST => 1, 
         CURLOPT_HTTPHEADER=>$strHeader, 
         CURLOPT_RETURNTRANSFER=>true 
    )); 
    $curlTranslateFileToSVFResponse = curl_exec($curlTranslateFileToSVF); 
    curl_close($curlTranslateFileToSVF); 
    

    Мы получаем NULL в $ curlTranslateFileToSVFResponse

    Пожалуйста, руководство -

    1. Как получить SVF файл
    2. Как просмотреть этот SVF файл в браузере
+0

на 3 ножек контекста, не нужно конвертировать о SVF себя, все файлы на A360 автоматически преобразуется. Если вам нужен другой вывод, вам понадобится модель. –

ответ

0

Как Augusto explained, A360 или BIM360 автоматически переведут перевод, поэтому, если вы посмотрите на ответ элемента, вы заметите, что манифест SVF уже присутствует. Тем не менее, вы можете начать перевод в SVF или другие форматы при его поддержке, если вы используете правильный URN, как в A360/BIM360, для каждого элемента имеется несколько URN, но с другим значением. Вот мой код, который я использовал для тестирования:

$access_token =ThreeLeggedController::access_token() ; 
\Swagger\Client\Configuration::getDefaultConfiguration()->setAccessToken ($access_token) ; 

$api_instance =new \Swagger\Client\Api\HubsApi() ; 
$data =$api_instance->getHubs() ; 
//print_r ($data) ; 
// Cyrille Fauvel Hub = a.cGVyc29uYWw6dWUyOWNkYzc4 

$hub_id ="a.cGVyc29uYWw6dWUyOWNkYzc4" ; 
$data =$api_instance->getHubProjects ($hub_id) ; 
//print_r ($data) ; 
// Forge project = a.cGVyc29uYWw6dWUyOWM4OWI3IzIwMTYwNjEzMzQ4ODgxMzE 

$project_id ='a.cGVyc29uYWw6dWUyOWM4OWI3IzIwMTYwNjEzMzQ4ODgxMzE' ; 
$api_projects =new \Swagger\Client\Api\ProjectsApi() ; 
$data =$api_projects->getProject ($hub_id, $project_id) ; 
//print_r ($data) ; 
// Root folder = urn:adsk.wipprod:fs.folder:co.XRaMujM2Q-qQARnuF05FuA 

$folder_id ='urn:adsk.wipprod:fs.folder:co.XRaMujM2Q-qQARnuF05FuA' ; 
$api_folders =new \Swagger\Client\Api\FoldersApi() ; 
$data =$api_folders->getFolderContents ($project_id, $folder_id) ; 
//print_r ($data->data) ; 
// V8 Engine.dwfx = urn:adsk.wipprod:dm.lineage:IzRTVrfDRq6-y8pDzpRZ1g 
//    urn:adsk.wipprod:fs.file:vf.IzRTVrfDRq6-y8pDzpRZ1g?version=1 

$item_id ='urn:adsk.wipprod:dm.lineage:IzRTVrfDRq6-y8pDzpRZ1g' ; 
$file_id ='urn:adsk.wipprod:fs.file:vf.IzRTVrfDRq6-y8pDzpRZ1g?version=1' ; 
$api_items =new \Swagger\Client\Api\ItemsApi() ; 
$data =$api_items->getItem ($project_id, $item_id) ; 
//print_r ($data) ; 
//print_r ($data->included [0]->relationships->storage->data->id) ; 
// id = urn:adsk.objects:os.object:wip.dm.prod/72f7d0a2-0727-4346-ba0f-33b69d0c2a99.dwfx 
//print_r ($data->included [0]->relationships->derivatives->data->id) ; 
// urn = dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLkl6UlRWcmZEUnE2LXk4cER6cFJaMWc_dmVyc2lvbj0x 

$urn ='dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLkl6UlRWcmZEUnE2LXk4cER6cFJaMWc_dmVyc2lvbj0x' ; 
$id ='urn:adsk.objects:os.object:wip.dm.prod/72f7d0a2-0727-4346-ba0f-33b69d0c2a99.dwfx' ; 
$api_md =new \Swagger\Client\Api\DerivativesApi() ; 
$data =$api_md->getManifest ($urn) ; 
//print_r ($data) ; 

// This is what the viewer is using, so as long you get a descent 
// response here, you're good 


// Let's try to quick a new translation 
$urn2 =base64url_encode ($id) ; 
$formats =array ((object)[ 'type' => 'svf', 'views' => [ "2d", "3d" ] ]) ; 
$job =(object)[ 'input' => (object)[ 'urn' => $urn2 ], 'output' => (object)[ 'formats' => $formats ] ] ; 
$data =$api_md->translate ($job, true) ; 
print_r ($data) ; 

// Done! -> [result] => created 

Надеется, что это объясняет,