1.在ZW3D用户交互中,可以直接使用接口选择对象(可以通过修改evxEntInpOpt枚举选择不同类型的实体),主要方式有以下几种:
1)选择单个对象
int entity_id = 0;
ZF_CALL(cvxGetEnt("选择单个实体", evxEntInpOpt::VX_INP_SHAPE, false/*是否可以为空*/, &entity_id));//选择单个实体
WriteMessage("选择的实体 = [%d]", entity_id);
2)选择多个对象
int nEntIds = 0;//选择的实体数量
int* pEntIds = NULL; // 选择的实体
ZF_CALL(cvxGetEnts("请选择多个实体,按鼠标中键结束选择", evxEntInpOpt::VX_INP_SHAPE, false/*是否可以为空*/, &nEntIds, &pEntIds));
WriteMessage("选择实体的数量 = [%d]", nEntIds);
ZF_VOID(cvxMemFree((void**)&pEntIds));//释放内存
3)选择单个对象 _返回实体路径
svxEntPath path = {};
ZF_CALL(cvxGetEntPath("请输入单个造型", evxEntInpOpt::VX_INP_SHAPE, false/*是否可以为空*/, &path));
4)选择多个对象_返回实体路径
int nPaths = 0;
svxEntPath *pPaths = NULL;
ZF_CALL(cvxGetEntPaths("请输入多个造型,按鼠标中键结束选择", evxEntInpOpt::VX_INP_SHAPE, false/*是否可以为空*/, &nPaths, &pPaths));
ZF_VOID(cvxMemFree((void**)&pPaths));
5)选择多种对象类型
evxEntInpOpt optionFilter[2] = { evxEntInpOpt::VX_INP_SHAPE, evxEntInpOpt::VX_INP_FACE };// 过滤器
int nEntIds = 0;//选择的实体数量
int* pEntIds = NULL; // 选择的实体
ZF_CALL(cvxGetEntsMultiFilter("请选择造型或面,按鼠标中键结束选择", optionFilter, 2/*过滤器数量*/, false/*是否可以为空*/, &nEntIds, &pEntIds));
WriteMessage("选择实体的数量 = [%d]", nEntIds);
ZF_VOID(cvxMemFree((void**)&pEntIds));//释放内存
6)选择多种对象类型_返回实体路径
evxEntInpOpt optionFilter[2] = { evxEntInpOpt::VX_INP_COMP, evxEntInpOpt::VX_INP_SUB_COMP };// 过滤器
int nPaths = 0;//选择的实体路径数量
svxEntPath *pPaths = NULL;//选择的实体路径
ZF_CALL(cvxGetEntPathsMultiFilter("请选择组件或造型,按鼠标中键结束选择", optionFilter, 2/*过滤器数量*/, false/*是否可以为空*/, &nPaths, &pPaths));
WriteMessage("选择实体的数量 = [%d]", nPaths);
ZF_VOID(cvxMemFree((void**)&pPaths));//释放内存
2.截图
![](https://img-blog.csdnimg.cn/direct/c9bbc4e9ebfc4024a6d6c9b2da6cef2f.png)