在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1511|回复: 8

[求助] 求帮忙debug 想实现最简单的功能从底层模块提取出M1到当前层

[复制链接]
发表于 2022-10-17 17:33:55 | 显示全部楼层 |阅读模式
15资产
procedure(getM1()
                let(()
                cv=geGetEditCellView()
                sel=geGetSelSet()
                when(sel~>objType == "inst"
                shapes=sel~>master~>shapes
                foreach(shape shapes
                        if(shape~>layerName == "M1" then
                                bBox=shape~>bBox
                                x0=leftEdge(car(bBox))
                                x1=righEdge(car(bBox))
                                y0=bottomEdge(car(bBox))
                                y1=topEdge(car(bBox))
                                dbCreateRect(cv "M1" (x0:y0 x1:y1))
                           )  ;end if
                                ) ;end foreach
) ;end when
)
)
有好心的前辈能帮忙看一下吗? 绑定快捷键~运行之后没有任何反应

最佳答案

查看完整内容

漏了一个问题, sel=geGetSelSet() 得到的是一个list, sel~>objType 的值应该是list("inst") , sel~>objType == "inst" 的条件永远不成立。 得改成用foreach 逐个读取sels的内容做处理 sels=geGetSelSet() foreach(sel sels when(sel~>objType == "inst" shapes=sel~>master~>shapes foreach(shape shapes if(shape~>layerName == "M1" then bBox=shape~>bBox ...
发表于 2022-10-17 17:33:56 | 显示全部楼层
漏了一个问题, sel=geGetSelSet() 得到的是一个list, sel~>objType 的值应该是list("inst") ,
sel~>objType == "inst" 的条件永远不成立。
得改成用foreach 逐个读取sels的内容做处理
sels=geGetSelSet()
foreach(sel sels
        when(sel~>objType == "inst"
           shapes=sel~>master~>shapes
           foreach(shape shapes
               if(shape~>layerName == "M1" then
                    bBox=shape~>bBox
                   dbCreateRect(cv "M1" bBox)
              )  ;end if
          ) ;end foreach
   ) ;end when
);end foreach
发表于 2022-10-18 09:41:06 | 显示全部楼层
问题有以下几点
1.leftEdge(car(bBox))  里 car(bBox) 是错误的,把x0打印出来看下能得到值是什么就明白了,下面 x1 y0 y1 相同
2.取出 x0 x1 y0 y1 值,然后再组成bBox2=list(x0:y0 x1:y1) ,bBox2和bBox完全一样的,这么做意义在哪里,直接用bBox不就完了。
3.修改完1,2后,得到的 x0 x1 y0 y1 值或者bBox都是inst里得坐标值,而不是当前的窗口的坐标,所以得做transform 转换,怎么转换去看dbTransformBBox 或者 dbTransformPoint。
 楼主| 发表于 2022-10-18 10:03:37 | 显示全部楼层


zlun1987 发表于 2022-10-18 09:41
问题有以下几点
1.leftEdge(car(bBox))  里 car(bBox) 是错误的,把x0打印出来看下能得到值是什么就明白了 ...


谢谢前辈耐心的回复
1,关于第一点的 leftEdge(bBox) 和 leftEdge(car(bBox)) 我自己在CIW里面试过不知道为何只有后者才有返回值
image.png
2,经过您一说,好像确实如此,确实多次一举了 感谢感谢
3,至于做transform 转换,作为一个新手skill的理解,这个是在用 dbCopyFig这个函数的时候用得上, 我这里可能只是在试试dbCreateRect的作用 ,如果是用copy的那个函数就会好很多
刚开始学,可能很多回复的地方比较浅薄 ,还请前辈多多海涵QAQ~

 楼主| 发表于 2022-10-18 10:18:32 | 显示全部楼层


zlun1987 发表于 2022-10-18 09:41
问题有以下几点
1.leftEdge(car(bBox))  里 car(bBox) 是错误的,把x0打印出来看下能得到值是什么就明白了 ...


您的意思是我获取到bBox的值(x0 x1 y0 y1)都是instance内部的值 不能通过这些值(x0 x1 y0 y1)来在当前层创建矩形吗?
 楼主| 发表于 2022-10-18 10:46:52 | 显示全部楼层
本帖最后由 gybak 于 2022-10-18 10:48 编辑


zlun1987 发表于 2022-10-18 10:33
漏了一个问题, sel=geGetSelSet() 得到的是一个list, sel~>objType 的值应该是list("inst") ,
sel~>objT ...


image.png

果真如您所说
image.png
发表于 2022-10-18 15:35:44 | 显示全部楼层
顶一下
 楼主| 发表于 2022-10-18 15:48:28 | 显示全部楼层
在前辈大佬的指点下,简单实现了这个功能,用createRect会有问题创建的图像是底层的bBox 用dpCopyFig就没问题
procedure(addM1()
        let(()
                cv=geGetEditCellView()
                sels=geGetSelSet()
                foreach(sel sels
                                if(sel~>objType == "inst"
                                        then tran=sel~>transform
                                                 shapes=sel~>master~>shapes
                                                 foreach(shape shapes
                                                                 if(shape~>lpp == list("M1" "drawing")
                                                                        then temp=dbCopyFig(shape cv tran)
                                                                         temp1=leConvertPolygonToPath(temp)
                                                                             temp1~>width=0.12
                                                                   ) ;end if
                                                            ) ;end foreach

                                  ) ;end if
                               
                           ) ;end foreach
)
)
发表于 2022-10-19 16:39:37 | 显示全部楼层
感谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-11-18 06:29 , Processed in 0.023288 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表