ADN Club > Forge: Design Automation API
загрузка rvt файла
enot:
Надеюсь пишу в нужную ветку,
вопрос касается DesignAutomation
Команда Commands : IExternalDBApplication выполняется только для rvt файла находящегося в облаке Bim360 или его можно как то запустить предварительно загрузив с пк?
Александр Игнатович:
Привет,
--- Цитата: enot от 31-05-2021, 16:20:11 ---пишу в нужную ветку
--- Конец цитаты ---
не совсем, но это наша недоработка, в ближайшие дни немного изменим структуру форума по вопросам Forge-а.
По сути:
Движок Design Automation может брать исходные данные из любого места, доступного по некоему url (и складывать результаты, соответственно, тоже). OSS (Object store service) с его бакетами наиболее удобен для сценариев, когда ты загружаешь модель напрямую через своё веб-приложение + ты потратишь меньше cloud credit-ов, поскольку data management бесплатный, а время на загрузку исходных данных при запуске workitem-а тоже считается. Здесь получается, что модель уже находится в облаке Autodesk-а, перемещение данных из OSS занимает доли секунды.
Если ты хочешь брать исходные модели из BIM 360, то это тоже возможно, но есть один маленький нюанс. Чтобы получить файл из BIM 360, нужно в запросе добавить Authorization header, как-то примерно так:
--- Код - Javascript [Выбрать] ---arguments = new { inputFile = new { url = command.SourceRevitFileUrl, Headers = new { Authorization = $"Bearer {token.Token}" } }, ...
Здесь есть нюанс в том, что
enot:
у меня адрес приложения http://localhost:3000 то есть на пк ( также с пк я пытаюсь загрузить rvt файл по кнопке с браузера для его выполнения в IExternalDBApplication )
в index.html кнопка для выбора ревит файла:
--- Код - XML [Выбрать] --- <div class="form-group"> <input type="file" class="form-control-file" id="selectRVTfile" /> </div>
в javascript
--- Код - Javascript [Выбрать] ---$(document).ready(function () { $('#selectRVTfile').addEventListener("change", FileLoaded); startWorkItem();}function FileLoaded(){ if ($selectRVTfile.files.length > 0) { $inputFile = $selectRVTfile.files[0]; alert($inputFile); }} function startWorkitem() { var inputFileField = document.getElementById('selectRVTfile'); if (inputFileField.files.length === 0) { alert('Please select an RVT file!'); return; } startConnection(function () { // как я понимаю inputFile как то тут надо правильно добавить... ? var formData = new FormData(); formData.append('inputFile', file); formData.append('data', JSON.stringify({ activityName: $('#activity').val(), browerConnectionId: connectionId })); writeLog('Uploading input file...'); $.ajax({ url: 'api/forge/designautomation/workitems', data: formData, processData: false, contentType: false, type: 'POST', success: function (res) { writeLog('Workitem started: ' + res.workItemId); } }); }); }
Александр Игнатович:
--- Цитата: enot от 01-06-2021, 11:15:24 ---// как я понимаю inputFile как то тут надо правильно добавить... ?
--- Конец цитаты ---
эээ...
Тебе надо загрузить файл в бакет, создать для него signed url, который уже скормить design automation
Посмотри здесь:
https://learnforge.autodesk.io/#/tutorials/modifymodels
enot:
--- Цитата: Александр Игнатович от 01-06-2021, 11:22:51 ---создать для него signed url
--- Конец цитаты ---
можно уточнить какая именно строчка кода за это отвечает?
Навигация
Перейти к полной версии