BlockUI 在无部件下正常是无法创建成功的,但某些时候确实需要在无部件模式使用UI,方法如下:
在 theUI->CreateDialog 之前打开一个prt,theUI->CreateDialog之后关闭!
//无部件模式打开BlockUI
tag_t NoPartTag= NULL;
if (UF_ASSEM_ask_work_part() == NULL)
{
UF_PART_load_status_t error_status;
UF_PART_open_quiet(part_name, &NoPartTag, &error_status);
UF_PART_free_load_status(&error_status);
//使用 quietly 模式设置为工作部件
tag_t previous_work_part;
UF_ASSEM_set_work_part_quietly(NoPartTag,&previous_work_part);
}
theDialog = xxxxx::theUI->CreateDialog("xxxxx.dlx"); //创建BlockUI
if (NoPartTag) UF_PART_close(NoPartTag, 0, 1);
效果如下:
弄一个空的prt,这样UI显示速度基本没有影响,但是这样也会在历史记录里面出现打开过这个prt的历史信息,体验不是很好!可以再做一些优化,在UF_PART_open_quiet之前复制一个history.pax,在UF_PART_open_quiet之后再替换回去!