Изменить свойства модели Autodesk-Forge

Я работаю над приложением, чтобы загрузить модель, а затем получить и разрешить пользователю изменять ее свойства через Excel/CSV/JSON. Я вижу здесь, что модели доступны только для чтения и что PATCH не предназначен для прямого изменения свойств объекта модели, но больше ориентирован на документы.

Это понимание правильно?

Если да, может ли Forge разместить JSON?

Текущий план состоит в том, чтобы экспортировать данные, изменить их в Excel, загрузить / преобразовать в JSON, сохранить их (где-нибудь) и затем отобразить в Forge свойства из данных JSON. Но мы ищем простое место для размещения нового внешнего БД.

1 ответ

Решение

Да, все извлеченные файлы через API Forge Model Derivative доступны только для чтения! И нет, вы должны сами размещать такой сервер веб-API, у Forge не было возможности размещать веб-сервер клиентов.

Вы можете проверить мою демонстрацию для панели Custom Props Panel здесь и ее 'скринкаст:

Посмотреть на Youtube

Ключевые понятия:

  1. Создайте веб-API, в котором будут храниться данные о ваших свойствах, я использую фиктивный сервер JSON API в этой демонстрации, см. Forge-au-sample / mock-server.
  2. Получите ваш собственный сервис свойств в панели пользовательских свойств, см. Строку 33 в свойствах / scripts / AdnPropsPanel.js

    getRemoteProps( dbId ) {
      return new Promise(( resolve, reject ) => {
        const srvUrl = getServerUrl();
        fetch( `${ srvUrl }/api/props?_expand=dataType&dbId=${ dbId }`, {
          method: 'get',
          headers: new Headers({
            'Content-Type': 'application/json'
          })
        })
          .then( ( response ) => {
            if( response.status === 200 ) {
              return response.json();
            } else {
              return reject( new Error( response.statusText ) );
            }
          })
          .then( ( data ) => {
            if( !data ) return reject( new Error( 'Failed to fetch properties from the server' ) );
    
            return resolve( data );
          })
          .catch( ( error ) => reject( new Error( error ) ) );
      });
    } 
    
Другие вопросы по тегам