PTC Windchill WRS API创建WTPart时无法添加自定义属性CAT_CODE
解决WRS API为WTPart自定义属性赋值的问题
问题原因
Windchill的OData API(WRS)不支持直接使用自定义属性的原始名称(如CAT_CODE)进行赋值,必须通过指定的扩展属性格式提交。
可行解决方法
方法1:使用CustomAttributes数组提交(推荐)
修改POST请求的JSON数据,将单独的CAT_CODE字段替换为CustomAttributes数组,格式如下:
{ "DefaultUnit":{}, "EndItem": false, "GatheringPart": false, "DefaultTraceCode":{}, "PhantomManufacturingPart": false, "ConfigurableModule":{}, "Name":"pyapitest", "Source":{}, "AssemblyMode":{}, "Uses@odata.bind":[], "DescribedBy@odata.bind":[], "References@odata.bind":[], "PartDocAssociations@odata.bind":[], "Context@odata.bind":"Containers('OR:wt.pdmlink.PDMLinkProduct:109352')", "Folder@odata.bind":"Containers('OR:wt.folder.SubFolder:155247')", "CustomAttributes": [ { "AttributeName": "CAT_CODE", "AttributeValue": "52" } ] }
注意:
- 把原来的
False改为JSON标准的小写false - 移除原JSON中末尾多余的逗号(如原
"CAT_CODE": "52",的逗号)
方法2:使用完整命名空间的属性字段
先通过GET请求获取一个已包含CAT_CODE属性的WTPart,查看返回JSON中该属性的实际键名(格式通常为{命名空间别名}#{属性名},比如ns0#CAT_CODE),然后在POST数据中使用这个键名赋值:
{ // 其他字段... "ns0#CAT_CODE": "52" }
这种方式需要先确认属性的命名空间别名,适合需要直接映射单个属性的场景。
额外检查点
- 确保自定义属性
CAT_CODE确实已正确绑定到WTPart对象类型 - 确认请求的Content-Type为
application/json
内容的提问来源于stack exchange,提问作者tmorgan497
相关产品推荐
相关产品推荐

