EDA365电子工程师网

标题: 如何在Allegro里面设置用1234...序号命令来换层 [打印本页]

作者: zuoyy    时间: 2014-9-11 15:00
标题: 如何在Allegro里面设置用1234...序号命令来换层
以前用过这个功能,就是在命令行输入1显示的是第一层的器件,孔,线,然后2就切换到第二层,以此类推;1 t* H  {& ]- ]+ |' a8 k
内层的话只显示线和孔,当然,route keepout也是显示出来的,我用script录制功能试过,但是效果不太好……8 C" I6 I+ Q7 z
然后同理,输入ka可以显示所有的route keepout,输入pbt可以显示TOP层的placebound,等等~
, P1 V5 s/ E; r: `1 f2 C; S1 o: b; n请教哪位大神有什么好的方法来实现下~
作者: owencai    时间: 2014-9-11 21:20
Skill论坛有个skill,输入命令L1,显示第一层,L2显示第二层,感觉用起来不错哦,/ K6 ?1 C% `& J$ Q: G) h- J; j+ a
还有一种快捷键设置,但是只能显示器件和线,过孔无法显示,现在用手机上,明天早上再上传,你到时候再研究下能不能改成全部显示,
- \' b4 y1 D8 e* N: S' g另:录制的应该可以吧,不好用么?
作者: owencai    时间: 2014-9-12 08:20
funckey zt1 'color -toggle "Package Geometry/Silkscreen_top"'    #控制顶层丝印9 L# ?; n  x2 x8 o* f
funckey zb1 'color -toggle "Package Geometry/Silkscreen_bottom"' #控制底层丝印
" c( X( e4 U; B! ]7 \你可以根据上面的语句编你想要的层,route keepout& [; f% F1 X$ j. T
下面是按1显示器件和线的快捷键,但是不显示过孔,你研究下,看能不能完善下,0 B1 Z# i; V7 o1 C9 _, z9 Z
funckey z1 'color -toggle "Pin/Top";color -toggle "Etch/Top"' # e% S5 p- O* O2 ^- s5 W) P
funckey z6 'color -toggle "Pin/BOTTOM";color -toggle "Etch/BOTTOM"'
作者: zuoyy    时间: 2014-9-12 08:33
owencai 发表于 2014-9-12 08:20
/ l0 \) Z0 q- v6 g4 w9 H0 Nfunckey zt1 'color -toggle "Package Geometry/Silkscreen_top"'    #控制顶层丝印. u* i; V! E0 j  C; K+ ]
funckey zb1 'color - ...

2 t& Y4 O2 ?+ t  C好的,灰常感谢~我自己再研究一下。
0 E' \: `. Y0 G* }) f' E用script录制的显示的是一步一步的,然后以前用的是输了命令过后直接显示的,所以觉得方法可能不对……
作者: zuoyy    时间: 2014-9-12 10:14
zuoyy 发表于 2014-9-12 08:33
2 `. w+ R7 t% ~& T2 f好的,灰常感谢~我自己再研究一下。6 O5 [9 z: A# q5 `& |$ \
用script录制的显示的是一步一步的,然后以前用的是输了命令过后直 ...
' J% d6 `: Z7 o- t! ^2 E" A
那个孔的可以加一条color -toggle "Via Class/Top";然后就能显示孔了,然后最好把funckey改成alias,这样好像就是通过命令行而不是快捷键, K0 u; s& Y; D2 e; W, X" ?
我刚才尝试了下,这个是可以显示的,但是好像只能开,不能在开的同是关掉其他层……1 {: H  G/ O  \- y
那个在color里面有个Global Visibility可以全局的全开和全关,这个想要通过命令行怎么实现?
. |; H& W  X7 ^# ^0 {如果实现了得话就可以在这些语句前面加一句all off,然后就能把其他的全部关掉,只开我们想要的那些层。
作者: owencai    时间: 2014-9-18 16:54
本帖最后由 owencai 于 2014-9-18 17:05 编辑 0 y( n* S* v6 g8 \" c( i
zuoyy 发表于 2014-9-12 10:14/ N0 N) X: `; G8 q4 Q: N" q) s+ u
那个孔的可以加一条color -toggle "Via Class/Top";然后就能显示孔了,然后最好把funckey改成alias,这样 ...
6 s& t' e: r6 m& }7 ~  {1 d5 Z

2 P# I3 W. P# v  Zfunckey z8 'color -globvis off'8 K$ \8 T+ A; I8 j0 v/ k
  全部关掉命令,0 X1 `# w& l( X0 K
还有你加的那条color -toggle "Via class/Top"我这里是没有用的,显示E- Unmatched quote 我的是16.3 的,
4 |, W$ c. Y) R; a9 o& R5 f! z. q! E2 f, t5 N; G! p
搞不懂,正在测试中 : g  [9 y6 C6 m; }
" |2 E5 L8 R$ }. k- e
经过测试可以用,嘿嘿,不能把这个语句直接复制到命令行执行,否则会出错,直接放在ENV里就可以,
作者: zuoyy    时间: 2014-9-19 08:09
owencai 发表于 2014-9-18 16:54$ n* |. O' a' A' `
funckey z8 'color -globvis off'
" U) z' w+ o5 w; o  全部关掉命令,2 R/ d+ C9 E% \9 A
还有你加的那条color -toggle "Via class/Top"我 ...
3 V& e5 u0 f3 o; I8 }' X
哦,感谢~这个命令找不到……后来用录制的scr代替了这一步……0 r1 |' v7 _# N7 Q
我的env里面这么写的:0 u& M( G0 }; F9 B  e. ]
alias T 'replay alloff;color -toggle "Via Class/Top";color -toggle "Pin/Top";color -toggle "Etch/Top";color -toggle "Package Geometry/Silkscreen_Top";color -toggle "Board Geometry/Outline"'
& S8 V- [& S0 X3 ^6 a5 V我等下把第一步的改一下,用命令执行要快一点,scr文件执行有点慢- x5 B' e, P+ h% p& w% ^" u7 }7 Z' }& c7 e; I
那个Via Class/Top我这边是可以的,你看一下你的那个层名称是不是这样命名的,这个好像还是区分大小写的
作者: zuoyy    时间: 2014-9-19 08:15
owencai 发表于 2014-9-18 16:54  K, \1 V/ j5 {! ~" K. X
funckey z8 'color -globvis off'* q0 T2 {2 r( A9 G6 a# X
  全部关掉命令,
" d9 D8 z3 z7 e% w还有你加的那条color -toggle "Via class/Top"我 ...
4 i2 V9 F5 N, s" J: B& C$ Q1 ?
哦,对了,我这边还有个问题……中间层每次的叠层都不一样,在env文件里面写:
% g% m1 K' d: R3 |( T* k  ~: ]4 t+ Zalias 2 'color -globvis off;color -toggle "Via Class/L02_*";color -toggle "Etch/L02_*";color -toggle "Board Geometry/Outline"'
$ B' B; Z* X3 q我尝试用星号代替,可是无法识别
* C# k0 y. a& H4 V# @不知道这个要怎么描述……
作者: owencai    时间: 2014-9-19 08:32
不能用*号代替,系统识别不了这个subclass,只能在命名层的时候将名字与ENV里一样!
作者: zuoyy    时间: 2014-9-19 08:46
owencai 发表于 2014-9-19 08:329 Y8 ~2 I* q) }% D* l
不能用*号代替,系统识别不了这个subclass,只能在命名层的时候将名字与ENV里一样!
1 E& s/ Q3 f: W$ h" D  D! n, c9 e
呃……这样啊……但是我以前用过这个功能啊……叠层不可能每次都一样的……( J# g3 t( Z) ~2 [: k$ }2 M
以前公司用的是按几就是第几层,然后每次的叠层都不一样的,层的名字也不一样,但是没有改过ENV里面的东西……% `' V; j- [- B. H' ~% @
好后悔当时怎么没有研究下……以为是Cadence软件自带的功能……
作者: owencai    时间: 2014-9-19 10:08
可能用别的语句实现吧!继续研究,共同研究
作者: zuoyy    时间: 2015-8-7 16:57
owencai 发表于 2014-9-19 10:08
( ^  \  P3 t( k4 _' P. M. a! c# w0 T可能用别的语句实现吧!继续研究,共同研究
& F, \. ~' r  w( j. D8 G' }, D
最终搞定了,用了一个小skill搞定了
# |8 ^% J& O. eaxlCmdRegister("c_layer" 'c_layer ?cmdType "interactive")
2 [: H3 j. ^2 [5 V7 ]* q4 c% l4 ^0 x0 K! {( ^
defun(c_layer (@optional (layer ""))- Y; j5 f+ [, G, t6 |9 i
let((allLayer countLayer); S; U. A" B5 H$ l, z5 V3 c3 M
        allLayer = axlGetParam("paramLayerGroup:ETCH")->groupMembers$ g) q+ H! v7 q& |& i9 L/ Z5 P
        countLayer = length(allLayer)9 y& k4 y' S* W- n) s
        if(layer != "" && atoi(layer)
. a! `+ e( `% ^                then
* ^0 G8 M4 a6 k) R$ x7 p4 x7 ~8 O                        layer = atoi(layer)
* F( i* q9 a& s+ @4 u/ {                        if( layer <= countLayer && layer > 0
: g. `0 k+ {# m. X                                then
2 r7 W" ~4 }* q; K4 ^                                        axlVisibleDesign(nil)
' L; u% M4 c& K$ c' |                                        axlVisibleLayer(strcat("ETCH/" nthelem(layer allLayer)) t); ?% S6 f7 T/ P  ~# W% ^4 I" s/ }1 @
                                        axlVisibleLayer(strcat("PIN/" nthelem(layer allLayer)) t), Z$ l: @! ^! O' B8 o
                                        axlVisibleLayer(strcat("VIA CLASS/" nthelem(layer allLayer)) t)    + s( O: n* N" L4 t8 |4 h
                                        axlVisibleLayer(strcat("DRC ERROR CLASS/" nthelem(layer allLayer)) t)" ?; Z+ F( z- d! q  g. I1 X
                                        axlVisibleLayer(strcat("Board Geometry/Outline") t)8 Y- D4 F0 R6 I5 ~
                                        axlVisibleUpdate(t)( b2 E1 ^$ {: G! j+ b, q
                                        axlUIWPrint(nil "Swtich layer complet...")9 y3 }( q4 i2 G8 ?. H1 W" B
                                else
6 \% Y8 ~4 y: L                                        axlUIWPrint(nil "Error,Wrong layer argument!
( V, X2 b) h9 B                        );end if% R7 y4 u% V2 ?( A5 Y: G! e
                else; `6 p  |' }" g: \: h
                        axlUIWPrint(nil "Please Input argument...")' X. {4 M6 I8 c( Z* |$ W5 U
        );end if
" O" ^4 b  R8 A9 u+ Z$ }- q);end let/ m+ D% D3 I9 ^
);end defun
! c2 \& \9 S3 l& F/ I+ d2 ]% n: w6 m  e0 q/ c6 D

, v* [9 w8 F/ O! k) {8 @- W, {5 l( K
把这个skill加载进allegro,然后输入命令就可以了1 I6 E1 Y8 `5 l+ s8 v9 S
或者在env文件里面加快捷命令1 2 3 4 ...就可以实现用数字换层' _8 T) j7 `, m& @7 K4 @2 e% t





欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/) Powered by Discuz! X3.2