使用 Forge DataManagement API 在 BIM360 中创建新项目版本时出现 VER_MISMATCH_MIMETYPE 错误

Posted

技术标签:

【中文标题】使用 Forge DataManagement API 在 BIM360 中创建新项目版本时出现 VER_MISMATCH_MIMETYPE 错误【英文标题】:VER_MISMATCH_MIMETYPE error when creating new item version in BIM360 with Forge DataManagement API 【发布时间】:2021-10-11 13:10:47 【问题描述】:

我正在使用 Forge DesignAutomation API 来更新 BIM360 上的 Revit 模型。一切顺利,直到我希望在 BIM360 上为 DesignAutomation 应用程序返回的 Revit 模型创建一个新版本。对于许多 Revit 文件(但不是全部:似乎在调用 GET item 时列出了包含 include.attributes.mimeType 属性的项目),Forge 服务器返回以下 400 BadRequest 错误:


    "jsonapi": 
        "version": "1.0"
    ,
    "errors": [
        
            "id": "37a8316e-661f-4ef0-9efd-121836bf27f1",
            "status": "400",
            "code": "ERR_WIP_ERROR",
            "title": "VER_MISMATCH_MIMETYPE",
            "detail": "The new version's MIME type must match the previous version's MIME type."
        
    ]

要创建新的项目版本,我按照here 所示的示例进行操作。 如here 所述,这会将带有以下正文的请求发送到版本端点:


    "jsonapi": 
        "version": "1.0"
    ,
    "data": 
        "type": "versions",
        "attributes": 
            "name": "SomeModelName.rvt",
            "extension": 
                "type": "versions:autodesk.bim360:File",
                "version": "1.0"
            
        ,
        "relationships": 
            "item": 
                "data": 
                    "type": "items",
                    "id": "urn:adsk.wipprod:dm.lineage:FPh4mXHCTluhI-xxxxxxxx"
                
            ,
            "storage": 
                "data": 
                    "type": "objects",
                    "id": "urn:adsk.objects:os.object:wip.dm.prod/3db6fe47-xxxx-xxxx-xxxx-xxxxxxxxx.rvt"
                
            
        
    

我该如何解决这个问题?在创建新的项目版本时我是否应该更改 POST 请求中的某些内容,还是问题在于 DesignAutomation 应用程序如何创建新的 Revit 模型?

感谢您的帮助!

编辑:我自己的印象是过去我没有这个问题。其他人现在也已针对其他应用程序确认了这一点。是不是这个问题的根源在于 Forge API 的更新?不过,我确实找到了another person mentioning it in February,可惜没有解决……

编辑:这是 Revit 模型产生错误的 json 响应(来自 GET item)的一部分,显示 mimeType“application/vnd.autodesk.r360”:

"included": [
        
            "type": "versions",
            "id": "urn:adsk.wipprod:fs.file:vf.FPh4mXHCTluhI-xyzxyzxyz?version=1",
            "attributes": 
                "name": "RevitModel.rvt",
                "displayName": "RevitModel.rvt",
                "createTime": "2021-07-09T12:18:24.0000000Z",
                "createUserId": "xyz",
                "createUserName": "xyz",
                "lastModifiedTime": "2021-07-09T12:18:25.0000000Z",
                "lastModifiedUserId": "xyz",
                "lastModifiedUserName": "xyz",
                "versionNumber": 1,
                "mimeType": "application/vnd.autodesk.r360",
                "storageSize": 491300637,
                "fileType": "rvt",
                "extension": 
                    "type": "versions:autodesk.bim360:C4RModel",
                    "version": "1.1.0",
                    "schema": 
                        "href": "https://developer.api.autodesk.com/schema/v1/versions/versions:autodesk.bim360:C4RModel-1.1.0"
                    ,
                    "data": 
                        "modelVersion": 1475,
                        "isCompositeDesign": true,
                        "mimeType": "application/vnd.autodesk.r360",
                        "compositeParentFile": "RevitModel.rvt",
                        "projectGuid": "some-guid",
                        "originalItemUrn": "urn:adsk.wipprod:dm.lineage:xyzxyzxyzxyz",
                        "modelType": "multiuser",
                        "latestEpisodeGuid": "some-guid",
                        "modelGuid": "some-guid",
                        "processState": "PROCESSING_COMPLETE",
                        "extractionState": "SUCCESS",
                        "splittingState": "NOT_SPLIT",
                        "reviewState": "NOT_IN_REVIEW",
                        "revisionDisplayLabel": "1",
                        "sourceFileName": "RevitModel.rvt"
                    
                
            ,
    [...]
]

这是 DesignAutomation 应用程序从上述项目生成的项目的相同 json 块,我想将其添加为新版本:

"included": [
        
            "type": "versions",
            "id": "urn:adsk.wipprod:fs.file:vf.X5m1BYxDRw-xyzxyzxyz?version=1",
            "attributes": 
                "name": "RevitModel.rvt",
                "displayName": "RevitModel.rvt",
                "createTime": "2021-08-06T12:25:13.0000000Z",
                "createUserId": "xyz",
                "createUserName": "xyz",
                "lastModifiedTime": "2021-08-06T12:34:10.0000000Z",
                "lastModifiedUserId": "xyz",
                "lastModifiedUserName": "xyz",
                "versionNumber": 1,
                "storageSize": 198492160,
                "fileType": "rvt",
                "extension": 
                    "type": "versions:autodesk.bim360:File",
                    "version": "1.0",
                    "schema": 
                        "href": "https://developer.api.autodesk.com/schema/v1/versions/versions:autodesk.bim360:File-1.0"
                    ,
                    "data": 
                        "processState": "PROCESSING_COMPLETE",
                        "extractionState": "SUCCESS",
                        "splittingState": "NOT_SPLIT",
                        "reviewState": "NOT_IN_REVIEW",
                        "revisionDisplayLabel": "1",
                        "sourceFileName": "RevitModel.rvt"
                    
                
            ,
      [...]
]

【问题讨论】:

如果版本提示记录中有attributes.mimeType,则看起来RVT模型是云工作共享模型。你能检查一下它的attributes.extension.type 是不是application/vnd.autodesk.r360 嗨@EasonKang,原始模型的mimeType确实是“application/vnd.autodesk.r360”。如果我将 DesignAutomation 应用程序生成的此模型的输出作为新项目添加到 BIM360,则不再列出任何 mimeType(请参阅上面的编辑)。 DesignAutomation 应用程序是否以错误的格式保存模型? 请看下面我的回答。 【参考方案1】:

您创建的没有mimeType 的版本是可以的,因为您无法创建这种类型的项目/版本。

mimeType application/vnd.autodesk.r360 的项目表示此模型是您的Revit cloud worksharing model 的published model。不幸的是,无法通过 Forge API 创建/附加版本到此类项目/版本。

【讨论】:

感谢您的回复。如果我将 BIM360 中的此类文件复制到另一个文件夹,则会保留 mimeType,因此对于此副本也无法使用 Forge 创建新版本,对吗?是否有其他类型的 Revit 模型无法使用 Forge 创建新版本?是否可以在Forge docs 中记录此限制?

以上是关于使用 Forge DataManagement API 在 BIM360 中创建新项目版本时出现 VER_MISMATCH_MIMETYPE 错误的主要内容,如果未能解决你的问题,请参考以下文章

electron使用electron-forge打包后报错cannot find module ‘XXX’

使用 conda-forge 强制升级软件包时是不是有破坏 anaconda python 的风险?

C++ 类函数分组

在 Autodesk forge 查看器中实现短路路径算法

在 Forge 查看器中从 Revit 模型重建对象组

Forge Vewer v7 - 在默认 UI 中搜索