NX二次开发 PK布尔运算交 PK_BODY_boolean_2
//布尔交(不管是否成功,目标体工具体都会被删除)
bool PK_IntersectBodies(const PK_BODY_t pk_target_body, const std::vector<PK_BODY_t> pkToolBodys, std::vector<PK_BODY_t>& pkBodys)
{
pkBodys.clear();
if (PK_ENTITY_null == pk_target_body)
return false;
if (0 == (int)pkToolBodys.size())
return false;
int i = 0, num = 0;
PK_boolean_r_t results;
PK_TOPOL_track_r_t tracking;
PK_BODY_boolean_o_t options;
PK_BODY_t* pk_tool_bodys = NULL;
num = (int)pkToolBodys.size();
pk_tool_bodys = new PK_BODY_t[num];
for (i = 0; i < num; i++)
{
pk_tool_bodys[i] = pkToolBodys[i];
}
PK_BODY_boolean_o_m(options);
options.function = PK_boolean_intersect_c;
PK_BODY_boolean_2(pk_target_body, num, pk_tool_bodys, &options, &tracking, &results);
delete[]pk_tool_bodys;
if (results.n_bodies > 0)
{
for (i = 0; i < results.n_bodies; i++)
{
pkBodys.push_back(results.bodies[i]);
}
}
PK_TOPOL_track_r_f(&tracking);
PK_boolean_r_f(&results);
return true;
}