Bin.wang的个人空间 https://blog.eetop.cn/1779684 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

PutOnGrid.il

已有 130 次阅读| 2025-6-24 13:46 |系统分类:芯片设计

procedure( PutOnGrid()
 let((gridField putOnGridForm)
    hiCreateForm('putOnGridForm "Put On Grid"
            "putOnGridCB(    putOnGridForm->gridField->value
                    putOnGridForm->convPathToPolygonButton->value
                    putOnGridForm->selectAllObjButton->value)"
            list(    hiCreateFloatField(
                    ?name 'gridField
                    ?prompt "Enter Grid Value"
                    ?defValue 0.005
                );

                hiCreateBooleanButton(
                    ?name 'convPathToPolygonButton
                    ?buttonText "Do you want to convert path to polygon?"
                    ?value nil
                    ?defValue nil
                );

                hiCreateBooleanButton(
                    ?name 'selectAllObjButton
                    ?buttonText "Select all object?"
                    ?value t
                    ?defValue t
                );
            );list
    );hiCreateForm

    hiDisplayForm(putOnGridForm)
 );let
);procedure

procedure(putOnGridCB(grid convPathToPolygon selectAll)
 prog( (compFactor cv selset saveLayer theta p obj path loc)

    compFactor = 1 / (geGetEditCellView()~>"DBUPerUU")
    
    if(!compFactor then
        hiDisplayModelessDBox('formHandle "Put On Grid"
            "The CellView does not have the DBUPerUU property defined"
            "" ""
        );
        return()
    );fi

    cv=geGetEditCellView()

    if(selectAll == t
       then selset=nconc(cv~>shapes cv~>instances cv~>mosaic)
    else
        selset=selectedSet()
    );fi

    if(selset == nil then
        hiDisplayModelessDBox('formHandle "Put On Grid"
            "Nothing has been selected objects"
            "" ""
        );
        return()
    );fi

    when(convPathToPolygon
        foreach(obj selset
            when(obj~>objType=="path"
                dbConvertPathToPolygon(obj)
            );when
        );foreach
    );when

    foreach( obj selset
        case( obj~>objType
            ("rect"
                path=obj~>bBox
            );

            (("polygon" "path")
                path=obj~>points
            );

            (("label" "inst" "mosaic" "mosaicInst")
                path=list(obj~>xy)            );

            (t
                println(obj~>objType)
            );
        );case

        newpath=nil
        foreach( pt path
            newpath=cons(roundCoord(pt grid) newpath)
        );foreach

        path=newpath

        case( obj~>objType
            ("rect"
                obj~>bBox=path
            );

            (("polygon" "path")
                obj~>points=path
            );

            (("label" "inst" "mosaic" "mosaicInst")
                obj~>xy=car(path)
            );

            (t
                println("Put On Grid: Encountered unknown shape");

            );
        );case

    );foreach
 );prog
);procedure

procedure(roundCoord(point grid)
 prog((x y)
    x=round((xCoord(point) + compFactor)/grid)*grid
    y=round((yCoord(point) + compFactor)/grid)*grid
    return(list(x y))
 );prog
);procedure
;hiSetBindKey("layout" "<Key>0" "grid()")

点赞

全部作者的其他最新日志

评论 (0 个评论)

facelist

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

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 9

    月排名
  • 0

    总排名
  • 1

    关注
  • 1

    粉丝
  • 0

    好友
  • 1

    获赞
  • 0

    评论
  • 3

    访问数
关闭

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

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

GMT+8, 2025-7-6 20:24 , Processed in 0.009874 second(s), 8 queries , Gzip On, MemCached On.

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