我は追放する者なり。最後の灯を消す邪悪なる意思なり。 ――― 印章に刻まれた言葉.

local density

上一篇 / 下一篇  2018-01-09 15:50:31

proc density {} {
set left [lindex [lindex [get_attribute [ create_geo_mask -objects [ get_selection ]   ] bbox] 0] 0]
set bottom [lindex [lindex [get_attribute [ create_geo_mask -objects [ get_selection ]   ] bbox] 0] 1]
set right [lindex [lindex [get_attribute [ create_geo_mask -objects [ get_selection ]   ] bbox] 1] 0]
set top [lindex [lindex [get_attribute [ create_geo_mask -objects [ get_selection ]   ] bbox] 1] 1]
set totalarea 0
set selectedarea [expr ($right-$left)*($top-$bottom)]
set cmd01 "get_objects_by_location -filter \"is_physical_only == false \" -classes \{cell\} -within \{\{$left $bottom\} \{$right $top\}\}"
set cells [eval $cmd01]
foreach_in_collection  cell01 $cells {
    set cellarea [get_attribute [ get_cells $cell01] area]
    set totalarea [expr $totalarea + $cellarea]
    }

puts "total cell area= $totalarea"
puts "selected area= $selectedarea"
set density [expr $totalarea/$selectedarea]
puts "local density= $density"
}

计算选定区域的local density, ICC2的命令get_objects_by_lcation有大括号, 里面的变量不能正确内插。 把命令写成函数, 大括号转义之后用eval执行。 

foreach_in_collection 是ICC2的命令, 对应tcl的foreach, 但是执行起来比foreach效率高。 

(dalao说icc2有这个功能, 但是我没找到...)

相关阅读:

TAG: tcl Tcl TCL

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2018-01-23  
 123456
78910111213
14151617181920
21222324252627
28293031   

数据统计

  • 访问量: 937
  • 日志数: 6
  • 建立时间: 2017-09-11
  • 更新时间: 2018-01-11

RSS订阅

Open Toolbar
博聚网