ZW3D的模板表单的控件即“ZW3D Template Widgets”下的控件,常用的如“ZsCc::Entity”和"Zscc::Point"等,使用它们时,ZW3D在内部实现了这些控件的最常用的回调机制(比如选中实体,选中点等)。
在设计表单UI和tcmd文件时,我们需要设置这些控件的Id和回调命令名,以便准确触发回调
1.在表单UI中添加Id
这里以“ZsCc::Point为例”,添加控件后,属性页的“Dynamic Properties”中默认有一个“Id”,此即该识别该控件的唯一id,可为任意正整数
2.在Tcmd编辑器中添加回调函数
在tcmd编辑器中找到该点对应的元素,在属性->回调函数中输入回调命令名"ZsCcPoint_callback"(名称可自定义)。
3.在代码中编写及注册注销回调命令
模板表单的控件的回调函数的函数签名为:
int CallbackName(char* formName, int idField, int idData);
其中第一个参数为表单名,第二个参数为触发此回调的控件,第三个参数为模板的数据容器的id
int ZsCcPoint_callback(char* formName, int idField, int idData)
{//获取选择点svxPoint point{};ZF_CALL(cvxDataGetPnt(idData, idField, &point));WriteMessage("当前点 = (%.2f,%.2f,%.2f)", point.x, point.y, point.z);return 0;
}
在插件的入口和出口函数中注册和注销回调命令
//入口函数,函数名必须为“项目名”+“Init”,区分大小写
// Entry function, which must be named as "Project name" + "Init" ,case sensitive
extern "C" _declspec(dllexport) int 项目名Init(int format, void* data)
{ZF_CALL(cvxCmdFunc("ZsCcPoint_callback", ZsCcPoint_callback, VX_CODE_GENERAL));return 0;
}//出口函数,函数名必须为“项目名”+“Exit”,区分大小写
// Exit function, which must be named as "Project name" + "Exit" ,case sensitive
extern "C" _declspec(dllexport) int 项目名Exit(void)
{ZF_CALL(cvxCmdFuncUnload("ZsCcPoint_callback"));return 0;
}
4.效果
用户在界面上选中点后,触发回调命令