找回密码
 注册
查看: 27718|回复: 222
打印 上一主题 下一主题

本人编写了个走线直角和小角度检查程序,供大家参考使用。

    [复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-7-14 15:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
本人编写了个走线直角和小角度检查程序,供大家参考使用。
游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 3贡献 +4 威望 +5 收起 理由
deargds + 5 支持!
zhoushoufeng + 2
hoo + 2 感谢分享

查看全部评分

  • TA的每日心情
    开心
    2020-1-6 15:29
  • 签到天数: 1 天

    [LV.1]初来乍到

    推荐
    发表于 2020-3-29 16:14 | 只看该作者
    本帖最后由 jason_hsu 于 2020-3-29 16:23 编辑

    ;#################################################
    ;## 1-SKILL CHECK Angle of Cline seg on the Cline#
    ;#################################################
    axlCmdRegister( "csa" `csa)
    (defun csa ()
        originalVisible=axlVisibleGet()
        designName = axlCurrentDesign()
        design_path = axlGetDrawingName()
        design_unit = car(axlDBGetDesignUnits())

        AllObject=list()
        drc = 0
        stop = nil
        logWindow = nil
        max_angle = 90.0

        axlSetFindFilter(?enabled '(noall CLINES) ?onButtons '(noall CLINES))
        mypopup = axlUIPopupDefine(nil  (list (list "Done" 'axlFinishEnterFun) (list "Cancel" 'axlCancelEnterFun)))
        axlUIPopupSet( mypopup)
        while(axlSelect(?prompt "Please select Cline...")
            AllObject = axlGetSelSet()
            axlClearSelSet()
            if(logWindow != nil then
                axlUIWClose(logWindow)
                if(isFile("Clineseg_angle.log") == t then deleteFile("Clineseg_angle.log"));end if
                logWindow = nil
            );end if
            drc = 0

            WriteOutFile = outfile("./Clineseg_angle.log" "w")
            fprintf(WriteOutFile, "Design name: %s\n", design_path)
            fprintf(WriteOutFile, "Angle Check: %f\n", max_angle)
            fprintf(WriteOutFile, "%s %s\n", "Check Date:", timeToString(fileTimeModified("Clineseg_angle.log")))
            fprintf(WriteOutFile, "%s\n", "------------------------------------------------")
            fprintf(WriteOutFile, "%-14s %-10s %s\n", "Layer", "Angle", "Locations")

            foreach(object AllObject
                Netname = object->net->name
                Layer = object->layer
                drcLayer = strcat("DRC ERROR CLASS/", cadr(parseString(Layer, "/")))
                Cline_Segments = object->segments
                while(length(Cline_Segments) > 1
                    First_seg = car(Cline_Segments)
                    Second_seg = nthelem(2,Cline_Segments)
                    First_seg_width = First_seg->width
                    Second_seg_width = Second_seg->width
                    if(First_seg_width < Max_LW || Second_seg_width < Max_LW then
                        First_seg_length = axlDistance(car(First_seg->startEnd) lastelem(First_seg->startEnd))
                        Second_seg_length = axlDistance(car(Second_seg->startEnd) lastelem(Second_seg->startEnd))
                        Third_seg_length = axlDistance(car(First_seg->startEnd) lastelem(Second_seg->startEnd))

                        aa = First_seg_length*First_seg_length
                        bb = Second_seg_length*Second_seg_length
                        cc = Third_seg_length*Third_seg_length
                        ab2 = 2*First_seg_length*Second_seg_length
                        CosC = (aa + bb - cc)/ab2
                        AngleInDegree = axlRadToDeg(acos(CosC))
                        ;### CONG THUC TINH GOC _axlAngleBetweenLines(list(pt1, pt2), list(pt3, pt4))  =>CHUA TEST THU
                        if(AngleInDegree <= max_angle then
                            fprintf(WriteOutFile, "%-14s %-10.2f %L\n", Layer, AngleInDegree, car(Second_seg->startEnd))
                            actual_text = sprintf(actual_text "%.2f", AngleInDegree)
                            drc_text = sprintf(drc_text "No Permit Angle In Cline")
                            drc_maker = axlDBCreateExternalDRC(list(drc_text sprintf(nil "%.3f", max_angle)), car(Second_seg->startEnd), drcLayer , list(First_seg Second_seg) , nil , actual_text)
                            drc = drc + 1
                        ;else
                        ;   printf("%L\n", AngleInDegree)
                        );end if
                    );end if seg_width
                    Cline_Segments = cdr(Cline_Segments)
                );end while i> 1
            );end foreach clines AllObject
            ; Close the file and wrap up
            fprintf(WriteOutFile, "%s\n", "END OF FILE")

            close(WriteOutFile)
            printf("Process done!\n")
            axlVisibleSet(originalVisible)
            axlShell("redisplay")
            if(drc > 0 then
                logWindow = axlUIViewFileCreate("Clineseg_angle.log" "Angle report..." nil );t xoa file sau khi xem, nil khong xoa
            else
                printf("No Error Found!\n")
                if(isFile("Clineseg_angle.log")  then deleteFile("Clineseg_angle.log"))
            );end if
            printf("Please select Cline...\n")
        );end while
    );end defun Clineseg_angle

    该用户从未签到

    推荐
    发表于 2018-6-13 11:17 | 只看该作者
    yaoxiao0302 发表于 2016-12-8 10:08
    补充一下啊,在allegro.ilinit 中写入load("angle.il") ,然后在打开allegro的时候报错如图,(本人使用的是 ...

    我的问题跟你的一样,

    点评

    我的也是报错,和你截图报错一样,怎么回事  详情 回复 发表于 2020-5-18 14:48

    该用户从未签到

    推荐
    发表于 2023-5-16 11:15 | 只看该作者
    学习学习                           

    该用户从未签到

    5#
    发表于 2011-7-14 16:31 | 只看该作者
    感谢分享!
  • TA的每日心情
    开心
    2019-11-20 15:20
  • 签到天数: 2 天

    [LV.1]初来乍到

    6#
    发表于 2011-7-16 11:51 | 只看该作者
    顶 谢谢分享

    该用户从未签到

    7#
    发表于 2011-7-19 09:50 | 只看该作者
    很好,谢谢!要是能加上使用说明就更好了!

    该用户从未签到

    8#
    发表于 2011-7-19 13:27 | 只看该作者
    看看,尝试下

    该用户从未签到

    9#
     楼主| 发表于 2011-7-22 10:38 | 只看该作者
    先将文件解压到pcbenv中,再打开此目录下的allegro.ilinit文件,在里面写上load("angle.il"),保存退出就ok了。每次打开设计时,在命令窗口输入ang就可调用出程序窗口。
  • TA的每日心情
    开心
    2019-11-20 15:24
  • 签到天数: 1 天

    [LV.1]初来乍到

    10#
    发表于 2011-7-22 17:53 | 只看该作者
    顶 谢谢分享

    该用户从未签到

    11#
    发表于 2011-7-23 16:57 | 只看该作者
    学习下!!

    该用户从未签到

    12#
    发表于 2011-10-5 18:05 | 只看该作者
    感谢

    该用户从未签到

    13#
    发表于 2011-12-30 15:59 | 只看该作者
    谢谢楼主分享 下载试试看

    该用户从未签到

    14#
    发表于 2011-12-30 16:13 | 只看该作者

    谢谢楼主分享

    该用户从未签到

    15#
    发表于 2012-1-2 19:55 | 只看该作者
    学习下!!

    该用户从未签到

    16#
    发表于 2012-1-3 17:07 | 只看该作者
    不错,顶起
  • TA的每日心情
    奋斗
    2021-5-18 15:19
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    17#
    发表于 2012-1-6 16:48 | 只看该作者
    Hi 無法用於16.3版本執行...
    能否請高手幫忙解決
  • TA的每日心情

    2020-7-21 15:38
  • 签到天数: 21 天

    [LV.4]偶尔看看III

    18#
    发表于 2015-7-17 09:16 | 只看该作者
    谢谢分享,支持一下~
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-6-3 07:10 , Processed in 0.093750 second(s), 30 queries , Gzip On.

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

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

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