You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询:C#中是否有DerivativeAPI函数支持调用{urn}/metadata/{modelGuid}/properties:query接口

C#中封装Derivative API的properties:query端点函数
  • 官方Forge .NET客户端的DerivativesApi类目前未直接封装{urn}/metadata/{modelGuid}/properties:query端点,仅支持单objectId的属性查询操作。
  • 你可以通过手动封装HTTP请求来实现该端点的多参数查询功能,以下是具体实现示例:
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

public class ForgeDerivativesHelper
{
    private readonly HttpClient _httpClient;
    private readonly string _accessToken;

    public ForgeDerivativesHelper(string accessToken)
    {
        _accessToken = accessToken;
        _httpClient = new HttpClient
        {
            BaseAddress = new Uri("https://developer.api.autodesk.com/")
        };
        _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
    }

    /// <summary>
    /// 封装properties:query端点,支持多参数复杂查询
    /// </summary>
    /// <typeparam name="T">响应结果的类型</typeparam>
    /// <param name="urn">模型的URN(需Base64编码)</param>
    /// <param name="modelGuid">模型的Metadata GUID</param>
    /// <param name="queryPayload">查询条件体,参考API文档构造</param>
    /// <returns>查询结果</returns>
    public async Task<T> QueryPropertiesAsync<T>(string urn, string modelGuid, object queryPayload)
    {
        var requestUri = $"modelderivative/v2/designdata/{urn}/metadata/{modelGuid}/properties:query";
        var jsonContent = JsonConvert.SerializeObject(queryPayload);
        var httpContent = new StringContent(jsonContent, Encoding.UTF8, "application/json");

        var response = await _httpClient.PostAsync(requestUri, httpContent);
        response.EnsureSuccessStatusCode();

        var responseJson = await response.Content.ReadAsStringAsync();
        return JsonConvert.DeserializeObject<T>(responseJson);
    }
}

// 使用示例
public class QueryUsage
{
    public async Task ExecuteQuery()
    {
        string accessToken = "YOUR_FORGE_ACCESS_TOKEN";
        string modelUrn = "BASE64_ENCODED_MODEL_URN";
        string modelGuid = "METADATA_GUID_OF_THE_MODEL";

        // 构造多参数查询条件,可根据API需求自定义过滤规则
        var queryBody = new
        {
            filter = new
            {
                type = "wall",
                properties = new[] { "Height", "FireRating" }
            },
            include = new[] { "objectid", "name", "properties" },
            limit = 50
        };

        var helper = new ForgeDerivativesHelper(accessToken);
        var queryResult = await helper.QueryPropertiesAsync<dynamic>(modelUrn, modelGuid, queryBody);
        
        // 处理查询结果
        Console.WriteLine(JsonConvert.SerializeObject(queryResult, Formatting.Indented));
    }
}
  • 说明:
    • queryPayload可根据API文档定义,构造任意复杂的过滤、包含、分页等参数,完全匹配端点的多参数查询能力。
    • 需确保传入的accessToken拥有viewables:read权限。
    • 建议定义强类型的请求体和响应体类,替代示例中的dynamic,提升代码的类型安全性和可维护性。

内容的提问来源于stack exchange,提问作者user426118

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 20:22:13