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

Bentley ProjectWise WSG API V2.5:如何访问自定义架构中的文件属性

解决ProjectWise WSG API访问自定义架构属性的问题

错误原因分析

你之前的调用存在两个核心问题:

  1. 误用$file后缀:该后缀用于下载文件二进制内容,并非获取实例属性;
  2. 直接复用Document的file_instance_id:CustomSchema.CustomClass的实例ID与PW_WSG.Document的实例ID不属于同一实体,二者为关联关系,不能直接复用ID访问。

正确访问方式

方式1:先查询关联自定义类实例ID,再获取属性

  1. 查询关联的CustomClass实例ID
    构造OData查询端点,过滤出与目标Document实例绑定的自定义类实例:
# 构造查询端点
query_endpoint = f"/ws/v2.5/Repositories/{repository_id}/CustomSchema/CustomClass?$filter=RelatedInstance/Id eq '{file_instance_id}' and RelatedInstance/Class eq 'PW_WSG.Document'"

# 发送GET请求
response = requests.get(base_url + query_endpoint, auth=HTTPBasicAuth(username, password))
custom_instance = response.json()['value'][0]  # 取首个匹配实例
custom_instance_id = custom_instance['Id']
  1. 获取自定义属性
    使用拿到的custom_instance_id访问自定义类实例端点,即可获取所有自定义属性:
# 构造属性获取端点
attr_endpoint = f"/ws/v2.5/Repositories/{repository_id}/CustomSchema/CustomClass/{custom_instance_id}"

# 发送GET请求
response = requests.get(base_url + attr_endpoint, auth=HTTPBasicAuth(username, password))
custom_attributes = response.json()

若仅需特定属性,可添加$select参数筛选:

attr_endpoint = f"/ws/v2.5/Repositories/{repository_id}/CustomSchema/CustomClass/{custom_instance_id}?$select=YourCustomAttr1,YourCustomAttr2"

方式2:查询Document时直接关联展开自定义属性

通过$expand参数,在获取Document默认属性的同时直接拉取关联的自定义类属性,一步完成:

# 构造带关联展开的端点
expand_endpoint = f"/ws/v2.5/Repositories/{repository_id}/PW_WSG/Document/{file_instance_id}?$expand=CustomSchema.CustomClass"

# 发送GET请求
response = requests.get(base_url + expand_endpoint, auth=HTTPBasicAuth(username, password))
full_data = response.json()
# 默认属性在根节点,自定义属性存储于full_data['CustomSchema.CustomClass']字段下

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 05:17:21