• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 电子设计 > PCB设计 > Allegro PCB技术问答 > cadence有没有聚拢器件的工具或sill

cadence有没有聚拢器件的工具或sill

录入:edatop.com     点击:
有没有大神知道cadence怎么能聚拢器件的操作

请问什么叫聚拢器件啊?

删了,重新Quick Place

跟AD软件似的能把同一模块的器件聚拢在一块

小编都发话了,这是最快的,在Quick Place里面还有很多选择...  当然还有其他的,,,

有skill可以

你这有这个SKILL吗

小编能不能给截个屏看看怎么操作的啊

但是不会用啊

这样的态度和悟性,还是放弃allegro算了。 后面的路还长啊!

有这种skill 么?

抱歉,发不了图片。
有个办法就是在原理图中将零件编号复制到一个文本文件,然后在Allegro执行Move命令的Find面板下方将Name改为lst,然后选择这个文本文件,那么相关零件就会选中。
对于PDF的原理图这种方法非常好用,极力推荐!

;************************************************************************************
;Symbol Gather beta1.0
;
;功能概述:类似Protel交互布局时器件的聚拢。
;
;使用说明: 首先加载此il文件,在pcbenv文件目录下的allegro.ilinit最后一行添加
;     load("symbol_gather.il")  ,axlCmdRegister("gs" 'gather_sym)中的"gs"
;  为启动命令关键字,可以自定义此关键字。
;axlTriggerSet('Select 'myxprobe)
;axlTriggerPrint()
axlCmdRegister("gs" , 'gather_sym)
defun( gather_sym ()
let( (path p)
  Path = "./_gathersym.form"
  p = outfile( Path "w")
  
  fprintf(p "FILE_TYPE=FORM_DEFN VERSION=2\n")
  fprintf(p "FORM\n")
  fprintf(p "FIXED\n")
  fprintf(p "PORT 30 11\n")
  fprintf(p "HEADER \"Gather Symbol\"\n")
  fprintf(p "TILE\n")
  fprintf(p "TEXT \"Active Symbols:\"\n")
  fprintf(p "FLOC 3 1\n")
  fprintf(p "ENDTEXT\n")
  fprintf(p "FIELD ref_sym\n")
  fprintf(p "FLOC 2 3\n")
  fprintf(p "LIST \"\" 10 10\n")
  fprintf(p "OPTIONS multiselect\n")  
  fprintf(p "ENDFIELD\n")
  
  fprintf(p "FIELD gather\n")
  fprintf(p "FLOC 15 4\n")
  fprintf(p "MENUBUTTON \"Gather\" 12 5\n")
  fprintf(p "ENDFIELD\n")
  
  fprintf(p "FIELD hilight\n")
  fprintf(p "FLOC 15 10\n")
  fprintf(p "MENUBUTTON \"Hilight\" 12 5\n")
  fprintf(p "ENDFIELD\n")
  
  fprintf(p "TEXT\n")
  fprintf(p "FLOC 25 21\n")
  fprintf(p "INFO msg 20\n")
  fprintf(p "FSIZE 20 2\n")
  fprintf(p "ENDTEXT\n")

  fprintf(p "ENDTILE\n")
  fprintf(p "ENDFORM\n")
  close(p)
axlFormCreate('gather  "_gathersym" '("msglines" 1) 'gatherCB t nil)
axlUIWPerm(gather t)
axlFormDisplay(gather)

deleteFile(Path)
);let
);
defun( gatherCB (gather)
targ = nil

case(gather->curField
  ("gather"  
   output()
   axlTriggerClear('xprobe 'myxprobe)
  );#1
  ("hilight"
   axlTriggerSet('xprobe 'myxprobe)
   hilight()
  );#2
);case
case(gather->doneState
  (3 axlTriggerClear('xprobe 'myxprobe))
);case

reflist = nil
);defun
defun( hilight ()
targ = nil
axlFormListDeleteAll(gather "ref_sym" )
axlShell("hilight")

);
defun(myxprobe (items)
if(car(items) == 'highlight
  then
   targ = cons(caadr(items)->refdes targ)
);if
axlFormListDeleteAll(gather "ref_sym" )
when(member(nil targ) targ = remove(nil targ))
targ = unique(targ)
axlFormSetField( gather "ref_sym"  targ)
reflist = targ
);defun
defun(output ()
axlShell("done")
axlClearSelSet()
axlSetFindFilter(?enabled list( "noall" "symbols") ?onButtons list( "noall" "symbols"))

sym = makeTable("Symbol" nil)
k = 0
LenX = 0
LenY = 0
foreach(db reflist
  k = k + 1 ;
  sym[k] = gensym()
  
  tmp = car(axlSelectByName("REFDES" db))
  sym[k]->db = tmp
  foreach(db0 tmp->children
   ;layer = cadr(parseString(db0->layer "/"))
   ;if(layer == "PLACE_BOUND_TOP" || layer == "PLACE_BOUND_BOTTOM"
   if(rexMatchp("[A-Z]+._BOUND_."  db0->layer)
    then
     box = db0->bBox
   );if
  );foreach
  sym[k]->lenH = xCoord(cadr(box)) - xCoord(car(box));x长度
  sym[k]->lenV = yCoord(cadr(box)) - yCoord(car(box));y长度
  sym[k]->Xo = xCoord(car(box));box左下角x
  sym[k]->Yo = yCoord(car(box));box左下角y
  path = list( 0 : 0
      sym[k]->lenH : 0
      sym[k]->lenH : sym[k]->lenV
      0 : sym[k]->lenV
      0 : 0
     );path list
  outline = axlPathStart(path)
  
  sym[k]->otl = outline
  
  LenX = LenX + sym[k]->lenH ;总长度
  LenY = LenY + sym[k]->lenV ;总高度
  
);foreach

PlenX1 = 0
PlenX2 = 0
PlenX3 = 0
Rsec = 0
Rtht = 0
PlenY = 0
PlenY1 = 0
for(i 1 k
  
  if(PlenX1 <= LenX / 3
   then
    PlenX1 = PlenX1 + sym->lenH
    org = -(PlenX1 - sym[1]->lenH) : PlenY
   else if(PlenX2 <= LenX / 3
     then
      when(PlenX2 == 0 Rsec = sym->lenH)
      PlenX2 = PlenX2 + sym->lenH
      PlenY = sym->lenV +50
      org = -(PlenX2 - Rsec ) : PlenY
      when(PlenY1 == 0 PlenY1 = PlenY)
       else
      when(PlenX3 == 0 Rtht = sym->lenH)
      PlenX3 = PlenX3 + sym->lenH
      PlenY = PlenY1 + sym->lenV +50
      org = -(PlenX3 - Rtht ) : PlenY
    );else if
  );if
  axlAddSimpleMoveDynamics(org outline "path" ?ref_point 0:0)
  sym->Xt = - car(org)
  sym->Yt = - cadr(org)
);for

  if(pic = axlEnterPoint()
  then
   move(pic)
);if

);defun
defun( move (pick)
for(i 1 k
  relaxy = car(pick) - sym->Xo + sym->Xt : cadr(pick) - sym->Yo + sym->Yt
  axlTransformObject(sym->db, ?move relaxy)
);
axlClearDynamics()
axlFormListDeleteAll(gather "ref_sym" )

);defun

Cadence Allegro 培训套装,视频教学,直观易学

上一篇:在allegro里面如何实现下面几个快捷操作功能与初始化
下一篇:Allegro 有没有自动载入 Design Parameter 的方法?

  网站地图