bool CreateLineBlockFromEdges(std::vector<TaggedObject*>edges)
{
if (edges.size() < 0) { uc1601("没有选择对象,请重新选择", 1); }
double minConner[3] = { 0.0,0.0,0.0 };
double maxConner[3] = { 0.0,0.0,0.0 };
double dir[3][3] = { 0.0 };
double dis[3] = { 0.0,0.0,0.0 };
double tempP1[3] = { 0.0,0.0,0.0 };
double tempP2[3] = { 0.0,0.0,0.0 };
double tempP3[3] = { 0.0,0.0,0.0 };
double minX = 0.0, minY = 0.0, minZ = 0.0, maxX = 0.0, maxY = 0.0, maxZ = 0.0;
for (size_t i = 0; i < edges.size(); i++)
{
UF_MODL_ask_bounding_box_exact(edges[i]->Tag(), NULL, minConner, dir, dis);
maxConner[0] = minConner[0] + dis[0];
maxConner[1] = minConner[1] + dis[1];
maxConner[2] = minConner[2] + dis[2];
if (i == 0)
{
minX = minConner[0];
minY = minConner[1];
minZ = minConner[2];
maxX = minConner[0] + dis[0];
maxY = minConner[1] + dis[1];
maxZ = minConner[2] + dis[2];
}
else
{
if (minX > minConner[0]) { minX = minConner[0]; }
if (minY > minConner[1]) { minY = minConner[1]; }
if (minZ > minConner[2]) { minZ = minConner[2]; }
if (maxX < maxConner[0]) { maxX = maxConner[0]; }
if (maxY < maxConner[1]) { maxY = maxConner[1]; }
if (maxZ < maxConner[2]) { maxZ = maxConner[2]; }
}
}
double minPoint[3] = { minX ,minY ,minZ };
double maxPoint[3] = { maxX ,maxY ,maxZ };
CreateLineBox(minPoint, maxPoint, 211, 254, allLinea);
return true;
}