struct PressBlock
{
int Type;
int LorR;
double L; //长
double W; // 宽
double H; //高
double H1; //7字型缺口高度
double W1; // 7字型缺口长度
double SCD;//螺丝直径
int scN; //螺丝数量
double scLDis;
double scWDis;
double mtx[9];
double AsmP[3];
};
std::vector<tag_t> CreatePressBlockLine(PressBlock pressBlock )
{
UF_initialize();
std::vector<tag_t> allPressblockLine;
double tempVecX[3] = { pressBlock.mtx[0], pressBlock.mtx[1] , pressBlock.mtx[2] };
double tempVecY[3] = { pressBlock.mtx[3], pressBlock.mtx[4] , pressBlock.mtx[5] };
double tempVecZ[3] = { pressBlock.mtx[6], pressBlock.mtx[7] , pressBlock.mtx[8] };
double tempP1st[3] = { 0.0,0.0,0.0 }, tempP2st[3] = { 0.0,0.0,0.0 }, tempP3st[3] = { 0.0,0.0,0.0 };
double Point1st[3] = { 0.0,0.0,0.0 }, Point2st[3] = { 0.0,0.0,0.0 }, Point3st[3] = { 0.0,0.0,0.0 };
double Point4st[3] = { 0.0,0.0,0.0 }, Point5st[3] = { 0.0,0.0,0.0 }, Point6st[3] = { 0.0,0.0,0.0 };
double Point7st[3] = { 0.0,0.0,0.0 }, Point8st[3] = { 0.0,0.0,0.0 }, Point9st[3] = { 0.0,0.0,0.0 };
double Point10st[3] = { 0.0,0.0,0.0 }, Point11st[3] = { 0.0,0.0,0.0 }, Point12st[3] = { 0.0,0.0,0.0 };
double Point13st[3] = { 0.0,0.0,0.0 }, Point14st[3] = { 0.0,0.0,0.0 }, Point15st[3] = { 0.0,0.0,0.0 };
double Point16st[3] = { 0.0,0.0,0.0 }, Point17st[3] = { 0.0,0.0,0.0 }, Point18st[3] = { 0.0,0.0,0.0 };
double finaVecX[3] = { 0.0,0.0,0.0 };
if ( pressBlock.LorR == 0 )
{
UF_VEC3_negate(tempVecX, finaVecX);
}
else
{
swap(tempVecX, finaVecX);
}
UF_VEC3_affine_comb(pressBlock.AsmP, pressBlock.W, finaVecX, Point1st); //O1,O2,O3//
UF_VEC3_affine_comb(pressBlock.AsmP, pressBlock.L, tempVecY, Point2st);
UF_VEC3_affine_comb(pressBlock.AsmP, pressBlock.H, tempVecZ, Point3st);
UF_VEC3_affine_comb(Point1st, pressBlock.L, tempVecY, Point4st); //14,15,24,35//
UF_VEC3_affine_comb(Point1st, pressBlock.H, tempVecZ, Point5st);
UF_VEC3_affine_comb(Point3st, pressBlock.L, tempVecY, Point6st); //36,57,47,26,67//
UF_VEC3_affine_comb(Point5st, pressBlock.L, tempVecY, Point7st);
allPressblockLine.push_back(CreatLine(pressBlock.AsmP, Point1st)); //O1
allPressblockLine.push_back(CreatLine(pressBlock.AsmP, Point2st)); //O2
allPressblockLine.push_back(CreatLine(pressBlock.AsmP, Point3st)); //O3
allPressblockLine.push_back(CreatLine(Point1st, Point4st)); //14
allPressblockLine.push_back(CreatLine(Point1st, Point5st)); //15
allPressblockLine.push_back(CreatLine(Point2st, Point4st)); //24
allPressblockLine.push_back(CreatLine(Point3st, Point5st)); //35
allPressblockLine.push_back(CreatLine(Point3st, Point6st)); //36
allPressblockLine.push_back(CreatLine(Point5st, Point7st)); //57
allPressblockLine.push_back(CreatLine(Point5st, Point7st)); //47
allPressblockLine.push_back(CreatLine(Point5st, Point7st)); //26
allPressblockLine.push_back(CreatLine(Point5st, Point7st)); //37
UF_terminate();
return allPressblockLine;
}