I was kinda working on something similar to you. Its kinda a work in progress of how to get a via cutClass You can read more about cutClass from the cdshelp search "accessing cutClass" If you need all the via names allViaNames = techGetTechFile(geGetEditCellView())~>viaDefs~>name viaDb = car(geGetSelSet()) procedure(stdLib_getViaCutClass(viaDb) let( (lib techId foundaryCg cutLay cutClassCg name sz cutSzList) lib = viaDb~>viaHeader~>master~>libName techId = techGetTechFile(ddGetObj(lib)) foundryCg = cstFindConstraintGroupIn(techId "foundry") cutLay = stdLib_getViaCutLpByViaDb(viaDb) cutClassCg = car(setof(cg foundryCg~>objects equal(cg~>defName "cutClass"))) foreach(cut cutClassCg~>objects if(equal(car(cut~>layers) cutLay) then name = cadar(cut~>params) sz = cut~>value cutSzList = cons(list(name sz) cutSzList)) ) cutSzList ); end of let ); end of stdLib_getViaCutClass procedure(stdLib_getViaCutLpByViaDb(viaDb) let( (lib techId lp1 lp2 viaCut ) lib = viaDb~>viaHeader~>master~>libName techId = techGetTechFile(ddGetObj(lib)) case(viaDb~>objType ("stdVia" lp1 = viaDb~>viaHeader~>viaDef~>layer1~>name lp2 = viaDb~>viaHeader~>viaDef~>layer2~>name) ("stdViaDef" lp1 = viaDb~>layer1~>name lp2 = viaDb~>layer2~>name) ) foreach(vLp techGetViaLayers(techId) if(member(lp1 vLp) && member(lp2 vLp) viaCut = cadr(vLp)) ) viaCut ); end of let ); end of stdLib_getViaCutLp Paul
↧