1.什么是文件用户属性?
文件用户属性是指用户保存在ZW3D文件内的自定义属性。
如下图打开ZW3D文件用户属性界面可查看用户属性:
2.如何使用代码操作文件用户属性?
1)添加用户属性
//添加用户属性
const int number = 5;
svxAttribute userAttrs[number] = { 0 };
strcpy_s(userAttrs[0].label, "字符串");
userAttrs[0].type = VX_ATTR_STRING;//字符串类型
strcpy_s(userAttrs[0].data, "字符串用户属性值");
strcpy_s(userAttrs[1].label, "布尔");
userAttrs[1].type = VX_ATTR_BOOL;//布尔类型
userAttrs[1].dValue = TRUE;//布尔值
strcpy_s(userAttrs[2].label, "整数");
userAttrs[2].type = VX_ATTR_INT;//整数类型
userAttrs[2].dValue = 666;//整数值
strcpy_s(userAttrs[3].label, "数字");
userAttrs[3].type = VX_ATTR_REAL;//数字类型(实数)(常量、无单位)
userAttrs[3].sub_type = VX_UNDEF;//常量
userAttrs[3].dValue = 1000.66;//值
strcpy_s(userAttrs[4].label, "质量");
userAttrs[4].type = VX_ATTR_REAL; //数字类型(实数)(非常量、有单位)
userAttrs[4].sub_type = VX_MASS;//质量
userAttrs[4].unit = VX_UNIT_KG;//质量单位
userAttrs[4].dValue = 1000.66;//值
int delOrgAt = FALSE;//不删除原有的所有用户属性
ZF_CALL(cvxPartUserAtSet(fileName, rootName, delOrgAt, number, userAttrs));
添加后效果如下图:
2)获取用户属性
//获取特定名称的用户属性 | Get the user attribute for a specific name
svxAttribute attr;
strcpy_s(attr.label, "字符串");
ZF_CALL(cvxPartAtItemGetInFile(fileName, rootName, evxAtItemId::VX_AT_USER, &attr));
WriteMessage("用户属性[%s] = %s", attr.label, attr.strValue);
//获取所有用户属性 | Get all user attributes
int userAttributeListCount = 0;
svxAttribute* pUserAttributeList = NULL;
ZF_CALL(cvxPartUserAtGet(fileName, rootName, &userAttributeListCount, &pUserAttributeList));
WriteMessage("共读到了[%d]个用户属性", userAttributeListCount);
for (int i = 0; i < userAttributeListCount; i++) {
WriteMessage("用户属性[%d] = [%s]", i, pUserAttributeList[i].label);
}
ZF_VOID(cvxMemFree((void**)&pUserAttributeList));
3)修改用户属性
//建议先获取后修改,不容易出错。也可直接修改
//获取特定名称的用户属性 | Get the user attribute for a specific name
svxAttribute attr;
strcpy_s(attr.label, "字符串");
ZF_CALL(cvxPartAtItemGetInFile(fileName, rootName, evxAtItemId::VX_AT_USER, &attr));
WriteMessage("用户属性[%s] = %s", attr.label, attr.strValue);
//修改特定名称的用户属性
strcpy_s(attr.data, "新字符串值");
ZF_CALL(cvxPartAtItemSetInFile(fileName, rootName, evxAtItemId::VX_AT_USER, &attr));
修改后效果如下图:
4)删除用户属性
//删除用户属性
vxLongName deleteItemlabel = "质量";
ZF_CALL(cvxPartAtItemDel(evxAtItemId::VX_AT_USER, deleteItemlabel));
WriteMessage("已删除用户属性:[%s]", deleteItemlabel);
删除后效果如下图:
标签:attr,ZW3D,用户,label,VX,userAttrs,二次开发,属性 From: https://blog.csdn.net/weixin_38877807/article/details/137470649