UG二次开发,建立矩形线框 UFUN

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;
}
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值