|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
之前论坛大佬@jurcy分享的自动金属dummy经测试出现了一些问题,请教各位前辈是否有思路帮忙解决;原帖链接:如何自动添加dummy——https://bbs.eetop.cn/thread-434638-1-1.html
主要问题是:简单的矩形金属可以识别能完成较好的dummy效果,而path、切角、大于等于90°拐角附近无法填充dummy。
逐行测试显示代码前半部分填满dummy无问题,问题主要是出在dummy和金属覆盖区域的删除处。
测试结果如图:
源代码如下:
- cvid=geGetEditCellView()
- DummySpace=8.0; dummy to dummy space rule
- Shape2Dummy=10.0; Shapes to dummy space rule
- metal1_shapes=setof(x,cvid~>shapes,x~>lpp==list("M1" "drawing"))
- dummyWidth=15.0; Dummy shape width
- dummyHeight=15.0; Dummy shape height
- dummypitchX=dummyWidth+DummySpace
- dummypitchY=dummyHeight+DummySpace
- ColNumber=int((rightEdge(cvid~>bBox)-leftEdge(cvid~>bBox)+DummySpace)/dummypitchX)
- RowNumber=int((topEdge(cvid~>bBox)-bottomEdge(cvid~>bBox)+DummySpace)/dummypitchY)
- dummuList=nil
- x0=leftEdge(cvid~>bBox)
- y0=bottomEdge(cvid~>bBox)
- for(i 0 RowNumber
- for(j 0 ColNumber
- dummyId=dbCreateRect(cvid list("M1" "dummy") list(x0+j*dummypitchX:y0+i*dummypitchY x0+j*dummypitchX+dummyWidth:y0+i*dummypitchY+dummyHeight))
- dummuList=append1(dummuList,dummyId)
- )
- )
- SizedResult=dbLayerSize(cvid,list("M1" "drawing"),metal1_shapes,Shape2Dummy)
- foreach(obj SizedResult
- OverlapDummy=dbGetTrueOverlaps(cvid,obj~>bBox,list("M1" "dummy"))
- foreach(dmy OverlapDummy
- dbDeleteObject(dmy)
- )
- dbDeleteObject(obj)
- )
复制代码 希望各位大佬前辈指导一下
|
|