UG二次开发,UFUN 对容器中的边建立线框

此博客展示了一段C++代码,定义了CreateLineBlockFromEdges函数,用于从边创建线框块。函数先检查边的数量,接着计算边界框的最小和最大坐标,最后调用CreateLineBox函数创建线框块并返回true。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值