ZW3D二次开发_文件_操作用户属性

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);

删除后效果如下图:

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值