private bool SetPoinProcess(ContactSimple prevCnt, ContactSimple inCnt, NodePointProcess pntProcess) { if ( (prevCnt.layer != inCnt.layer) && ((prevCnt.layer == Layers.siliconTrace || inCnt.layer == Layers.siliconTrace)) ) { if (GetPoint(inCnt, Layers.contactTrace).name != Material.diffusionName) { pntProcess.ProcessPoint(layoutMap[inCnt.x][inCnt.y][inCnt.layer]); return true; } } else { pntProcess.ProcessPoint(layoutMap[inCnt.x][inCnt.y][inCnt.layer]); } return false; }
private List<ContactSimple> SetOneWave(List<ContactSimple> inWave, List<ContactSimple> bandedConts, NodePointProcess pntProcess, string currentName) { List<ContactSimple> thisWave = new List<ContactSimple>(); foreach (ContactSimple cntUnit in inWave) { //thisWave.Add(cntUnit); //passedPoints.Add(cntUnit); bool b; foreach (int opposLay in Params.GetOppositeLayers(cntUnit.layer)) { ContactSimple curCnt = new ContactSimple(cntUnit, opposLay); if (bandedConts.FindIndex(el => el == curCnt) < 0) { if ((opposLay == Layers.siliconTrace || cntUnit.layer == Layers.siliconTrace)) { if ((GetPoint(cntUnit, Layers.contactTrace).name != Material.diffusionName) && (GetPoint(cntUnit, opposLay).name == currentName)) { //pntProcess.ProcessPoint(layoutMap[cntUnit.x][cntUnit.y][opposLay]); //passedPoints.Add(new ContactSimple(cntUnit,opposLay)); if ( cntUnit.x == 31 && (cntUnit.y == 21 || cntUnit.y == 22))// && cntNebor.layer == 1) b = true; //pn1 = GetPoint(cntNebor); thisWave.Add(new ContactSimple(cntUnit,opposLay)); } } else { if (GetPoint(cntUnit, opposLay).name == currentName) { //pntProcess.ProcessPoint(layoutMap[cntUnit.x][cntUnit.y][opposLay]); //passedPoints.Add(new ContactSimple(cntUnit,opposLay)); if ( cntUnit.x == 31 && (cntUnit.y == 21 || cntUnit.y == 22))// && cntNebor.layer == 1) b = true; thisWave.Add(new ContactSimple(cntUnit,opposLay)); } } } } pntProcess.ProcessPoint(layoutMap[cntUnit.x][cntUnit.y][cntUnit.layer]); } return thisWave; }