abby118的个人空间 https://blog.eetop.cn/?1555282 [收藏] [复制] [分享] [RSS]

日志

trimWire2Via.il

已有 103 次阅读| 2025-8-14 09:44 |个人分类:学习skill|系统分类:芯片设计

别人的脚本,备份一下。

procedure(trimWire2Via(@optional (align2Edge nil))

  let((id overlaps stretchDelta overlap stretchID seledPt selSet id1)

    selSet=geGetSelSet()

    foreach(id selSet

    if(remove(nil geGetSelSetFigPoint(id)) == '(t) then

        overlaps=dbGetTrueOverlaps(geGetEditCellView() id->bBox id->lpp 1)

        if(length(overlaps) ==2 && car(overlaps)->objType == "pathSeg" && cadr(overlaps)->objType == "pathSeg" then

            case(geGetSelSetFigPoint(id)

                            ('(nil t)

                                    seledPt=id->endPt

                   geDeselectFigPoint(id list(nil nil))

                                )

                                ('(t nil)

                                     seledPt=id->beginPt

                   geDeselectFigPoint(id list(nil nil))

                               )

                       )

             id=car(leMergeShapes(overlaps))

             if(id->endPt == seledPt then

                 geSelectFigPoint(id list(nil t))

             else

                 geSelectFigPoint(id list(t nil))

             )

             overlaps=dbGetTrueOverlaps(geGetEditCellView() id->bBox id->lpp 1)

           )

           if(length(overlaps) >=2 then

              stretchDelta=1000000

                          stretchID=nil

                          seledPt1=nil

              foreach(overlap overlaps

                  if(listp(overlap) then

                      if(car(overlap)->objType == "stdVia" || car(overlap)->objType == "customVia" then

                          if(id->objType == "path" then

                              seledPt=nth(lindex(geGetSelSetFigPoint(id) t)-1 id->points)

                          else if(id->objType == "pathSeg" then

                              case(geGetSelSetFigPoint(id)

                                  ('(nil t)

                                      seledPt=id->endPt

                                  )

                                  ('(t nil)

                                      seledPt=id->beginPt

                                          )

                                  )

                                ))

                                if(sqrt(pow(-(xCoord(seledPt)-xCoord(car(overlap)->xy)) 2)+pow(-(yCoord(seledPt)-yCoord(car(overlap)->xy)) 2)) <= stretchDelta then

                                   stretchDelta=sqrt(pow(-(xCoord(seledPt)-xCoord(car(overlap)->xy)) 2)+pow(-(yCoord(seledPt)-yCoord(car(overlap)->xy)) 2))

                                   stretchID=overlap

                                   seledPt1=seledPt

                                 )

                                )

                               )

                              )

                                if(stretchID && align2Edge == nil then

                                    leStretchShape(id-(xCoord(seledPt1)-xCoord(car(stretchID)-xy)):-(yCoord(seledPt1)-yCoord(car(stretchID)->xy)) geGetSelSetFigPoint(id))

                                else if(stretchID && align2Edge then

                                    if(abs(-(xCoord(seledPt1)-xCoord(car(stretchID)->xy))) > abs(-(yCoord(seledPt1)-yCoord(car(stretchID)->xy))) then

                                    if(xCoord(seledPt1) > xCoord(car(stretchID)->xy) then

                                        leStretchShape(id -(xCoord(seledPt1)-xCoord(upperRight(car(stretchID)->bBox))):-(yCoord(seledPt1)-yCoord(car(stretchID)->xy)) geGetSelSetFigPoint(id))

                                    else

                                        leStretchShape(id -(xCoord(seledPt1)-xCoord(lowerLeft(car(stretchID)->bBox))):-(yCoord(seledPt1)-yCoord(car(stretchID)->xy)) geGetSelSetFigPoint(id))

                                       )

                                    else

                                        if(yCoord(seledPt1) > yCoord(car(stretchID)->xy) then

                                        leStretchShape(id -(xCoord(seledPt1)-xCoord(car(stretchID)->xy)):-(yCoord(seledPt1)-yCoord(upperRight(car(stretchID)->bBox))) geGetSelSetFigPoint(id))

                                    else

                                        leStretchShape(id -(xCoord(seledPt1)-xCoord(car(stretchID)->xy)):-(yCoord(seledPt1)-yCoord(lowerLeft(car(stretchID)->bBox))) geGetSelSetFigPoint(id))

                                         )

                                        )

                                      ))

                                     );if

                                    )

                                    )

                                  nil

                                  )

                                 ) 



点赞

全部作者的其他最新日志

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 2

    周排名
  • 0

    月排名
  • 0

    总排名
  • 1

    关注
  • 1

    粉丝
  • 5

    好友
  • 5

    获赞
  • 5

    评论
  • 304

    访问数
关闭

站长推荐 上一条 /1 下一条


手机版| 小黑屋| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-8-21 06:40 , Processed in 0.066824 second(s), 15 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部