Creo 二次开发-尺寸位置排序算法

本文探讨了在Creo二次开发中对工程图尺寸进行排序的问题,包括按视图位置、极坐标系角度及相邻尺寸优化的排序策略。在处理局部视图时可能出现异常,但对单个视图内的排序仍然正确。通过建立DimensionStruct类计算角度和距离,再进行局部排序和相邻尺寸优化,以解决角度相近但距离相差大的问题。最后,对可能的边界问题进行了讨论。
摘要由CSDN通过智能技术生成

在对工程图中所有尺寸进行自动球标标注时,对尺寸位置的排序是一个很关键的问题。基本思路:

  • 按视图位置从左到右、从上到下排序
  • 以当前视图中心为原点建立极坐标系,按逆时针排序
  • 对于相邻尺寸位置顺序进行优化
  1. 按视图位置排序
    这里面存在一个问题:当视图为局部显示的时候,视图中心并非实际显示的中心,这时候会出现一些异常,例如:当 AB 两个视图在图纸上是上下对齐,A 在上 B 在下,按正常排序 A 中尺寸序号应该在 B 中尺寸序号的前面,如果这时候其中一个使用了局部视图,导致视图中心 A 在 B 的右侧,这样 B 中尺寸序号就会排在 A 中尺寸序号的前面。
    这个异常影响不会太大,而且单个试图内序号排序都是正常的。
bool SortByView(const DimensionStruct &td1, const DimensionStruct &td2)
{
    DimensionStruct d1, d2;
    d1 = td1;
    d2 = td2;
    float vcx1, vcx2, vcy1, vcy2;
    vcx1 = d1.GetViewCenter()->get(0);
    vcx2 = d2.GetViewCenter()->get(0);
    vcy1 = d1.GetViewCenter()->get(1);
    vcy2 = d2.GetViewCenter()->get(1);
    if (vcx1 > vcx2)
    {
        return false; //视图中心:d1在d2的右侧
    }
    else if (IsEqual(vcx1, vcx2) && (vcy1 < vcy2))
    {
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值