Chip123 科技應用創新平台

標題: 一個sKILL範列,切4邊行的角 [打印本頁]

作者: 12345    時間: 2007-12-8 08:23 PM
標題: 一個sKILL範列,切4邊行的角
最近才剛在看SKILL,cadence的pdf檔寫的好爛,一個leChopShape試好久才試出來,這是我最近寫的,還有註解
2 T+ T# q+ N1 p5 \/*5 H9 o8 G) A# J; w2 A
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////( ~7 y3 H8 T2 p' F6 f$ T
作者:Y.P.LIN
5 X  r; g) a9 ZFile name : CUT.il7 j6 Z7 }! ~( R- j5 V+ T6 P+ S5 N3 M
POP menu Write by nfmao6 f- P* i: l( v8 V
Date: 2007.12.11
, W# f" F5 U7 N, o8 X0 [; mVer : 0.01
/ C% i6 S3 S! V4 `用法:在icfb,load本sKILL(例如 load "CUT.il" ),再開一個layout,選取rectangle(可複選),按滑鼠中鍵(會跳初選單),再選chop
8 Y' _* a7 d3 j參考:雷奧星空論壇(http://www.armbell.com/forum/viewforum.php?f=13&mforum=iclayout): T6 b" ?1 \, p& D' V
     :中国集成电路教育网(http://www.icedu.net/Article/shuzi/houduan/Index.html)
3 ?% Y9 Y% p. R. r1 ]  P     :cadence手冊(安裝目錄下/doc/sk開頭目錄)+ X- e" _) U- j: r6 }9 O$ t
注:本SKILL還在開發中,目前只能切RECTANGLE的4個角
% T& G7 ^( D/ q, @. i* m8 ?4 G5 K8 N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
! G# ^9 Y1 c4 k( D* c4 ~% z*/
0 p" S0 s4 x: l4 G6 g# M;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cut矩型的4個角;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;. J( k8 W$ j$ |+ h: b8 m3 s
procedure(getXY(xyBox)                                ;取得四邊行CUT點座標的程序8 h2 F' Q7 V, z" b# N* q. [
d=0.5                                                 ;切的距離(自己設)
0 Z2 g( q3 w3 Y/ _x1 = car(car(xyBox))+ i4 `2 N3 n! K8 h" h2 {" H
y1 = cadr(car(xyBox))
  u- |# Z6 \$ C" f4 f9 @x2 = car(cadr(xyBox))
  _* c- g. F! ^5 Y- oy2 = cadr(cadr(xyBox))- q. \6 o- Z- ]$ h/ J
cut1=list((x1:y1) (x1+d:y1) (x1:y1+d) (x1:y1))                        ;cut lin1座標list(是一個封閉cycle)
' `2 }8 X+ C3 T+ ?5 k, lcut2=list((x2:y1) (x2-d:y1) (x2:y1+d) (x2:y1))                        ;cut lin2座標list(是一個封閉cycle)5 t3 D; v, N6 \7 X2 ]3 M- a
cut3=list((x1:y2) (x1+d:y2) (x1:y2-d) (x1:y2))                        ;cut lin3座標list(是一個封閉cycle)
' V6 e! g7 h2 J) K" _' r  L/ x/ zcut4=list((x2:y2) (x2-d:y2) (x2:y2-d) (x2:y2))                        ;cut lin4座標list(是一個封閉cycle)3 i0 P; p, \: t" V" x
)
8 H  e/ m" P; _% X" }
* P% C7 K: W, Gprocedure(chop()9 _7 X4 {1 Y, z8 g6 m1 u
   selobj=geGetSelSet()                                ;取得選的物件$ i  ^* @# t; `
   foreach(shape selobj                                ;把每一個物件逐一丟到shape變數
* v& m. w/ J9 O- T+ K   ;leChopShape( selobj list(0:0 100:100 ) nil nil 10 )! c! n8 J5 F* [- h* O
   selobjbox=shape~>bBox                               ;取得物件的BOX(指方形座標2點->list)
0 `! D% I% k8 r2 T1 i  s, k6 |   getXY(selobjbox);                                   ;呼叫getXY程序,且給一個參數selobjx3 S$ P% D  \  w
   leChopShape( shape cut1  t t)                       ;cut一邊,第一個t只是一個封閉cycle,第2個t指移除(remove)
7 ]) p' _7 f8 ^5 G$ K. i4 `   leChopShape( shape cut2  t t)                       ;cut一邊
7 g" v: f; W3 L0 Q. ]: Z$ g   leChopShape( shape cut3  t t)                       ;cut一邊
" @- l+ P; [6 t   leChopShape( shape cut4  t t)                       ;cut一邊' Y+ k$ b% W, d" r$ E8 S
   println(x1);8 `7 D: Z" c$ w
   println(y1);
! q2 F2 a7 d2 E: u) Z   println(x2);9 `% c6 _! a$ x$ @' a3 B
   println(y2);
0 D; R% G: B/ `   );foreach/ D6 c; n# ~4 z' m) T  t1 }, A
)
, E) Z: Y& Z3 p  y) p% X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;表單;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1 N$ X, n4 t) C9 m' [: C. G
trA_MenuItem = hiCreateMenuItem(                          ;menu項目1
# i8 Z' ^' \2 v   ?name 'trA_MenuItem8 R' v9 d! G$ V( o' M* w- G& {
   ?itemText "chop"                                       ;menu項目2標題% y3 J& s5 c2 t+ H: {
   ?callback "chop()" ;;; prints B in the CIW             ;選項後的動作(呼叫chop()程序)
$ r4 G: a9 ~/ y5 P# a$ [1 a# A   )
0 g( L% T. f/ jtrB_MenuItem = hiCreateMenuItem(                          ;menu項目2
- q& E+ d1 U  E2 V% |4 F3 G   ?name 'trB_MenuItem4 H7 R+ L  |7 n- I+ h
   ?itemText "Hello World"                                ;menu項目1標題( n1 A1 y9 [7 }" \; i3 K1 w
   ?callback  "println(word)"                     ;選項後的動作(在CIW視窗印出Hello World!!)
2 c0 Q5 a5 N" |. H4 s: F: o! S   )+ `) l0 M( a% X9 V* j8 V

0 L( i6 N5 e. \' ^7 k3 b; K! `$ m5 z8 b; i, @
procedure(trSimpleMenu()                                ;產生meun表單的程序
. j. J" C. f& S" d  C6 O0 [let((simpleMenuID)                                     ;宣告區域(local)變數
" v. d) Y1 r, y* e- d; aword="Hello wodr!!"                                    ;字串變數
5 U& U: W* H  ?simpleMenuID=hiCreateMenu(                              ;產生一個menu
: }' q7 X* ]" p8 ^'simpleMenu                                            ;GLOBAL(ID)
3 D5 x9 t' V+ {- f; S& i! y( Y"Simple Menu"                                          ;標題
1 ~; Z) @, ~/ O; j# H8 X/ }' b'(trA_MenuItem trB_MenuItem)                           ;LIST(表單的項目)
% d8 g0 b! I( t0 A2 H- `9 I)4 H4 N3 `: L% x" I+ h+ ?
' o1 ~, W/ f6 L7 W5 _% c
hiDisplayMenu(simpleMenuID)                             ;根據menuID在螢幕顯示: x2 q4 b3 [+ a! ~+ X
);let
0 g5 R2 N- p$ C( G3 S);proce! v- y8 s+ W' {0 s1 W. ]; u) F

作者: oiziyo    時間: 2007-12-10 08:30 PM
那麼勵害,
% i+ i$ U$ z2 Z. b. j3 X+ t這可是高手啊,& C/ ^7 R& D$ r% S7 L; I( c: Y% l
這樣的東西可不是一般人可以做的到的
4 j7 I% |* I1 h& i2 e: N; i9 D3 c謝謝分享
作者: afor    時間: 2007-12-13 03:08 AM
原來還可以這樣用啊.....
' H, N& s) Y* o$ F7 Z可惜都已經下線出去了,
2 P# w' O; D4 A" F/ E謝謝大大分享實用的技巧
作者: jling    時間: 2009-6-23 09:03 AM
正在找这个skill,网上这个资料好少啊,谢谢分享!
作者: ryan1    時間: 2009-7-2 01:38 PM
好像不錯喔.來試試看囉.謝謝您的方享...............
作者: sterling    時間: 2012-7-11 10:45 AM
  謝謝啦謝謝啦 謝謝啦謝謝啦
作者: loongsky    時間: 2012-8-23 03:10 PM
cadence有自带的切角工具嘛
作者: a2763338    時間: 2014-2-17 04:09 PM
非常感謝  這部分目前需要做測試
作者: pjh02032121    時間: 2014-3-24 02:40 PM
好不好用,我来试一试,多谢楼主。
作者: blackcorrupt    時間: 2014-6-26 05:19 PM
謝謝分享囉, 來實驗看看
作者: sheilamenuett    時間: 2015-5-6 04:53 PM
正好很需要,謝謝分享~
作者: janus7799    時間: 2015-5-10 06:01 PM
正好很需要,超級感謝!
作者: skeepy    時間: 2015-7-9 05:31 PM
ic5141  EDIT > Other > modify corner ,不會就按Help 看一下就會設定了。
作者: hunky    時間: 2022-5-24 04:12 PM
太神啦,谢谢分享啊啊啊啊4 _+ k2 l# ~2 U8 L) h





歡迎光臨 Chip123 科技應用創新平台 (http://free.vireal.world/chip123_website/innoingbbs/) Powered by Discuz! X3.2