找回密码
 注册
关于网站域名变更的通知
查看: 234|回复: 10
打印 上一主题 下一主题

请教如何获取斜着的器件的四个顶点坐标

[复制链接]
  • TA的每日心情
    开心
    2021-1-19 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
     楼主| 发表于 2025-7-24 10:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x




    现在的思路是遍历这个器件bound的所有segments,从中找出坐标点,但是现在只能找到四个顶点坐标的其中一个值,要么X坐标,要么Y坐标,不能形成(X,Y)的坐标点

    Bound_Box = Bound_Shape->bBox
    Bound_Shape_Segments = Bound_Shape->segments
    foreach ( seg Bound_Shape_Segments
        _ seg_bBOX = seg->bBox
        _ seg_X_list = list()
        _ seg_Y_list = list()

        _ Bound_Seg_urx = xCoord( upperRight( _seg_bBOX ))
        _ Bound_Seg_llx = xCoord( lowerLeft( _seg_bBOX ))
        _ seg_X list = cons( _Bound_Seg_urx _seg_X_list)
        _ seg_X list = cons( _Bound_Seg_llx _seg_X_list)

        _ Bound_Seg_ury = yCoord( upperRight( _seg_bBOX ))
        _ Bound_Seg_lly = yCoord( lowerLeft( _seg_bBOX ))
        _ seg_Y_list = cons( _Bound_Seg_ury _seg_Y_list)
        _ seg_Y_list = cons( _Bound_Seg_lly _seg_Y_list)

        _ Bound_Min_X = min( _seg_X_list) ; 找到了x方向上的最小点
        _ Bound_Max_X = max( _seg_X_list) ; 找到了x方向上的最大点
        _ Bound_Min_Y = min( _seg_Y_list) ; 找到了y方向上的最小点
        _ Bound_Max_Y = max( _seg_Y_list) ; 找到了y方向上的最大点

    “来自电巢APP”

  • TA的每日心情
    奋斗
    2025-7-7 15:38
  • 签到天数: 83 天

    [LV.6]常住居民II

    2#
    发表于 2025-7-24 12:08 | 只看该作者
    没看懂图中的是pin的形状还是器件的外形?
    4个顶点是形状的顶点还是box的顶点?
  • TA的每日心情
    开心
    2021-1-19 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
     楼主| 发表于 2025-7-24 12:19 | 只看该作者
    db-_- 发表于 2025-07-24 12:08:20
    没看懂图中的是pin的形状还是器件的外形?
    4个顶点是形状的顶点还是box的顶点?


    器件的外形和形状的顶点

    “来自电巢APP”

  • TA的每日心情
    开心
    2021-1-19 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    4#
     楼主| 发表于 2025-7-24 12:21 | 只看该作者
    db-_- 发表于 2025-07-24 12:08:20
    没看懂图中的是pin的形状还是器件的外形?
    4个顶点是形状的顶点还是box的顶点?


    想获取器件的外形形状(bound层)的4个顶点坐标


    “来自电巢APP”

  • TA的每日心情
    慵懒
    2025-7-25 15:55
  • 签到天数: 110 天

    [LV.6]常住居民II

    5#
    发表于 2025-7-24 14:12 | 只看该作者
    ABC是三视图?
  • TA的每日心情
    开心
    2021-1-19 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    6#
     楼主| 发表于 2025-7-24 16:08 | 只看该作者


    是不同器件的bound形状。画得抽象了一点

    “来自电巢APP”

  • TA的每日心情
    奋斗
    2025-7-7 15:38
  • 签到天数: 83 天

    [LV.6]常住居民II

    7#
    发表于 2025-7-24 17:22 | 只看该作者
    还是没看懂,你要外形的顶点坐标,你segment都有了,把segment的startEnd提取出来就好啦。

    该用户从未签到

    8#
    发表于 2025-7-24 21:49 | 只看该作者
    可以参考一下     pin_angle=pin_one->rotation       
                                           
                                            pin_shape_soder_0=axlCopyObject(pin_shape_soder, ?angle -pin_angle)
                                   
                                            pin_shape_soder_0_box=car(pin_shape_soder_0)->bBox       


                                            minXa=car(car(pin_shape_soder_0_box))  
                                            minYa=cadr(car(pin_shape_soder_0_box))
                                            maxXa=car(cadr(pin_shape_soder_0_box))
                                            maxYa=cadr(cadr(pin_shape_soder_0_box))
                                            axlDeleteObject(car(pin_shape_soder_0))
                                            axlDeleteObject(car(pin_shape_soder))       

                                           
                                            if(get_pin_defwidth==nil then
                                                    pin_thermal_width=get_thermal_width                                               
                                                    pin_thermal_heigth=get_thermal_width

                                            else       
                                                    pin_thermal_width = abs(minXa-pin_x)                  
                                                    pin_thermal_heigth = abs(minYa-pin_y)                                       
                                                   
                                           
                                            )

                                           
                                           
                                            pin_exp_shape_soder_0=axlCopyObject(pin_expand_soder, ?angle -pin_angle)
                                   
                                            pin_exp_shape_soder_0_box=car(pin_exp_shape_soder_0)->bBox       


                                            minXa0=car(car(pin_exp_shape_soder_0_box))  
                                            minYa0=cadr(car(pin_exp_shape_soder_0_box))
                                            maxXa0=car(cadr(pin_exp_shape_soder_0_box))
                                            maxYa0=cadr(cadr(pin_exp_shape_soder_0_box))
                                            axlDeleteObject(car(pin_exp_shape_soder_0))
                                            axlDeleteObject(car(pin_expand_soder))               
                   
                                           
                                            ;未旋转0度时PIN外扩顶点坐标                       
                                           
                                            p1xy0=list(minXa0 minYa0)
                                            p2xy0=list(maxXa0 minYa0)
                                           
                                            p3xy0=list(maxXa0 maxYa0)
                                            p4xy0=list(minXa0 maxYa0)
                                           


                                           
                                           
                                            ;旋转后的PIN外扩坐标,也就是当前PIN外扩顶点坐标                               
                                           
                                            rodians=3.14159265358979*pin_angle/180

                                            p1xy1=list((minXa0-pin_x)*cos(rodians)-(minYa0-pin_y)*sin(rodians)+pin_x  (minXa0-pin_x)*sin(rodians)+(minYa0-pin_y)*cos(rodians)+pin_y)
                                           
                                            p2xy1=list((maxXa0-pin_x)*cos(rodians)-(minYa0-pin_y)*sin(rodians)+pin_x  (maxXa0-pin_x)*sin(rodians)+(minYa0-pin_y)*cos(rodians)+pin_y)
                                           
                                            p3xy1=list((maxXa0-pin_x)*cos(rodians)-(maxYa0-pin_y)*sin(rodians)+pin_x  (maxXa0-pin_x)*sin(rodians)+(maxYa0-pin_y)*cos(rodians)+pin_y)
                                            p4xy1=list((minXa0-pin_x)*cos(rodians)-(maxYa0-pin_y)*sin(rodians)+pin_x  (minXa0-pin_x)*sin(rodians)+(maxYa0-pin_y)*cos(rodians)+pin_y)
                   


                           
                                                   
                                            p12xy=list((car(p1xy1)+car(p2xy1))/2  (cadr(p1xy1)+cadr(p2xy1))/2)
                                            p23xy=list((car(p2xy1)+car(p3xy1))/2  (cadr(p2xy1)+cadr(p3xy1))/2)
                                            p34xy=list((car(p3xy1)+car(p4xy1))/2  (cadr(p3xy1)+cadr(p4xy1))/2)                                       
                                            p41xy=list((car(p4xy1)+car(p1xy1))/2  (cadr(p4xy1)+cadr(p1xy1))/2)       


  • TA的每日心情
    开心
    2021-1-19 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    9#
     楼主| 发表于 2025-7-25 12:48 | 只看该作者
    db-_- 发表于 2025-07-24 17:22:53
    还是没看懂,你要外形的顶点坐标,你segment都有了,把segment的startEnd提取出来就好啦。


    谢谢????!startEnd还没太注意是不是就完全是起点和终点的坐标,我下来看看。要是这个segment是斜着的,这个startEnd,无法判断是左斜还是右斜


    “来自电巢APP”

  • TA的每日心情
    开心
    2021-1-19 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    10#
     楼主| 发表于 2025-7-25 12:49 | 只看该作者


    谢谢????!有些类似,下来参考参考

    “来自电巢APP”

  • TA的每日心情
    无聊
    2025-5-16 15:22
  • 签到天数: 34 天

    [LV.5]常住居民I

    11#
    发表于 2025-7-28 15:45 | 只看该作者
    沒這麼難啦~你把shape 轉成 polygon ,就可以取頂點(vertices)了。
    不過抓vertices的缺點就是,如果你的shape是四邊形以上,可能就要判斷哪一個點會是你要的了!
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-29 20:41 , Processed in 0.140625 second(s), 27 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表