|
最近才剛在看SKILL,cadence的pdf檔寫的好爛,一個leChopShape試好久才試出來,這是我最近寫的,還有註解
. ]$ H6 Q# h. J# L/*
; r7 V/ `% C. B2 @9 W/ ?- B//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1 w& D' v% C# C0 k0 n
作者:Y.P.LIN9 ]0 z/ W P' e# y
File name : CUT.il K7 K4 Y" H1 G) G( Z7 S E
POP menu Write by nfmao. |& G( E- _# g/ _* V
Date: 2007.12.117 @3 C5 m# [& T
Ver : 0.01
1 Z% o: P' I. o用法:在icfb,load本sKILL(例如 load "CUT.il" ),再開一個layout,選取rectangle(可複選),按滑鼠中鍵(會跳初選單),再選chop* K1 \1 v9 H- W9 c1 Q
參考:雷奧星空論壇(http://www.armbell.com/forum/viewforum.php?f=13&mforum=iclayout)! {) m' w: Q, l" G& L
:中国集成电路教育网(http://www.icedu.net/Article/shuzi/houduan/Index.html)
' f# p% M4 o' [ :cadence手冊(安裝目錄下/doc/sk開頭目錄)
y' R6 ]' d/ Q0 J; ]注:本SKILL還在開發中,目前只能切RECTANGLE的4個角1 ^/ v$ R1 s. B3 s! C
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
, }! a. |4 z8 ^*/
& C# S+ B4 ~0 U% ` r;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cut矩型的4個角;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
* {# ?8 ^8 C/ }. ~procedure(getXY(xyBox) ;取得四邊行CUT點座標的程序
- B4 v1 _* P, Y. b+ A, kd=0.5 ;切的距離(自己設)
9 K, N4 e1 \9 n/ t: n( |x1 = car(car(xyBox))
+ G# ?2 L. m4 [0 Wy1 = cadr(car(xyBox))2 ]# _& |+ E7 N; Q% G \; u- l
x2 = car(cadr(xyBox))
; ~8 Q7 L8 n* h3 L8 k4 Y5 e9 U" oy2 = cadr(cadr(xyBox))
+ Y* N/ N4 V) i" L( Qcut1=list((x1:y1) (x1+d:y1) (x1:y1+d) (x1:y1)) ;cut lin1座標list(是一個封閉cycle)0 I! e$ A5 s5 H
cut2=list((x2:y1) (x2-d:y1) (x2:y1+d) (x2:y1)) ;cut lin2座標list(是一個封閉cycle)
: d& A0 j8 Y6 k6 {; ocut3=list((x1:y2) (x1+d:y2) (x1:y2-d) (x1:y2)) ;cut lin3座標list(是一個封閉cycle)
5 R. t3 [3 z" d% Z3 ~* ncut4=list((x2:y2) (x2-d:y2) (x2:y2-d) (x2:y2)) ;cut lin4座標list(是一個封閉cycle)
- [# m( Y. [, ?8 l)
* Z0 e& o# @3 s- e& Y# _
8 U: {9 u% a* l: Q! Iprocedure(chop()
5 G X8 |2 @$ L; i5 j selobj=geGetSelSet() ;取得選的物件, C$ g+ q) C6 [' i
foreach(shape selobj ;把每一個物件逐一丟到shape變數
3 C5 J! i4 }: _% g ;leChopShape( selobj list(0:0 100:100 ) nil nil 10 ) k) W+ N d- _6 @! c# M* C2 H
selobjbox=shape~>bBox ;取得物件的BOX(指方形座標2點->list)
+ J p& x/ y3 Z0 c) K+ n( @; o- i getXY(selobjbox); ;呼叫getXY程序,且給一個參數selobjx
8 S* h# Z8 Q" }+ M' m# Y+ G7 G leChopShape( shape cut1 t t) ;cut一邊,第一個t只是一個封閉cycle,第2個t指移除(remove)4 y. o/ {' C1 F+ n% F9 g6 Q, Y
leChopShape( shape cut2 t t) ;cut一邊2 T+ }7 o! {/ e" w3 M
leChopShape( shape cut3 t t) ;cut一邊
* _6 i9 @" S& |; g x leChopShape( shape cut4 t t) ;cut一邊
9 q, v% u" m4 E z8 r P println(x1);' A$ s2 u c0 k' K+ G
println(y1);* c: T3 l9 G/ A. o5 \- T
println(x2);# C; n+ \ t+ I1 p) Z& i6 N
println(y2);
7 C% V0 T3 b3 ?" K0 {) R4 }, h );foreach# d- r, S O/ g4 c3 w
)' R9 K& c, F0 J0 t: |, E
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;表單;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
4 F( t' M8 d' W, z: Q( ptrA_MenuItem = hiCreateMenuItem( ;menu項目16 Q% f. i v$ T
?name 'trA_MenuItem5 e% J D3 {' \4 {( ~
?itemText "chop" ;menu項目2標題
2 _ k9 S) `1 n" A" a4 a ?callback "chop()" ;;; prints B in the CIW ;選項後的動作(呼叫chop()程序)
& O$ u8 ]5 v1 M3 d* ]1 Z z )# y A. h; p. ^
trB_MenuItem = hiCreateMenuItem( ;menu項目2( I" ~+ |& H- `$ p% D
?name 'trB_MenuItem
- _3 m. z8 h5 ^+ B" B ?itemText "Hello World" ;menu項目1標題
: K" V" g3 g7 W# J% W ?callback "println(word)" ;選項後的動作(在CIW視窗印出Hello World!!)
# w c# s+ L0 ]2 E' [, p )2 m$ u; \8 }1 h( T- x
- K$ T) D0 w+ n" F- b: u, W( p. H9 w
% u7 e8 s* t% s* ^1 o6 L
procedure(trSimpleMenu() ;產生meun表單的程序7 s, T0 k+ t9 m& H( n
let((simpleMenuID) ;宣告區域(local)變數
6 N% L* i4 M9 H n( e4 g y$ N, Sword="Hello wodr!!" ;字串變數
1 ^3 s" x4 @9 U$ O/ }6 jsimpleMenuID=hiCreateMenu( ;產生一個menu
) l7 ?- m8 J4 Z, w! _'simpleMenu ;GLOBAL(ID)
2 z6 f4 J9 U; J9 e$ N/ C6 r"Simple Menu" ;標題! o: l: x& d3 U n8 r4 M
'(trA_MenuItem trB_MenuItem) ;LIST(表單的項目)
- Z+ `+ Y# I' Z/ q)
+ t0 h0 q5 o3 j+ C* j1 r2 {/ b1 Y! T; Q9 x$ q( U
hiDisplayMenu(simpleMenuID) ;根據menuID在螢幕顯示
4 v# d+ |* {; |2 P);let
% V5 N9 ~0 b, J# a: w( ?0 b/ M);proce+ ?1 T; m3 u- j) q L
|
評分
-
查看全部評分
|