繁体   English   中英

从 IFC 转换为 SVF

[英]Conversion from IFC to SVF

要将 IFC 文件转换为适用于 Autodesk 查看器的 SVF output,可以使用衍生 Webhook ( https://forge.autodesk.com/en/docs/webhooks/v1/developers_guide/overview/ )。 有没有另一种方法来做同样的事情,比如使用“autodesk 设计自动化”,如果是,应该选择哪个选项?

对于使用 output-advanced-conversionMethod-v3 而不是转换方法 legacy 或 modern 从 IFC 到 SVF 的转换,可以使用 .NET 的哪个库,因为在 Autodesk.Forge 中你不能 select “v3”选项,只有旧版或现代版。

对于“autodesk 设计自动化”,可以使用与衍生产品 API 具有相同功能的活动之王吗?

实际上,使用 Forge Design Automation 可以做到这一点。 FDA 的美妙之处在于它可以与多种 Autodesk 产品一起使用。 因此,您可以将 IFC 文件作为一个活动的一部分导入 Revit,并使用它来生成任何通用 3D 文件格式(如 STEP),然后创建另一个活动以将此文件导入 Inventor,从而可以轻松生成 SVF 文件。

不幸的是,设计自动化 API 不支持将 IFC 转换为 SVF/SVF2。 因此,使用 Model 衍生 API 是唯一的方法。

关于将 v3 转换方法与 .NET 一起使用,您可以发送提交原始 JSON 而不是使用类型映射数据 model ZA24F2ED4F8EBCABCA 作为解决方法。

string urn = "dXJuOmFkc2sub2JqZW....";

derivative.Configuration.AccessToken = "YOUR_ACCESS_TOKEN";

var restSharpClient = derivative.Configuration.ApiClient.RestClient;
var jobPayload = new JObject(
    new JProperty("input",
        new JObject(
            new JProperty("urn",
                urn
            )
        )
    ),
    new JProperty("output",
        new JObject(
            new JProperty("formats",
                new JArray{
                     new JObject(
                        new JProperty("type",
                            "svf"
                        ),
                        new JProperty("views",
                            new JArray{
                                "3d"
                            }
                        ),
                        new JProperty("advanced",
                            new JObject(
                                new JProperty("conversionMethod",
                                    "v3"
                                )
                            )
                        )
                    )
                }
            )
        )
    )
);

RestRequest request = new RestRequest("/modelderivative/v2/designdata/job", RestSharp.Method.POST);
request.AddHeader("Authorization", "Bearer " + derivative.Configuration.AccessToken);

var body = JsonConvert.SerializeObject(jobPayload);
request.AddParameter("application/json", body, ParameterType.RequestBody);

IRestResponse response = await restSharpClient.ExecuteAsync(request);
var result = JsonConvert.DeserializeObject<dynamic>(response.Content);

只是想澄清一下。 请注意 Forge API 是一组 RESTfull Web API。 Model 衍生 API 本身支持 v3 IFC 转换方式。 您绝对可以通过使用原始 JSON 直接调用 API 来提交翻译工作。

但是,您解决的问题是我们的 .NET API 客户端没有在ConversionMethodEnum中添加v3字段。 我会建议我们的团队尽快添加支持 很抱歉给您带来不便。

https://github.com/Autodesk-Forge/forge-api-dotnet-client/blob/4ed6475248743dafca9d6b13d5e28c3f50a6577f/src/Autodesk.Forge/Model/JobSvfOutputPayloadAdvanced.cs#L67

参看。 在这里创建了一个 PR: https://github.com/Autodesk-Forge/forge-api-dotnet-client/pull/100

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM