public void PrimPrimTest() { IPCB_BoardIterator BoardIterator; IPCB_Pad Pad, Selected1 = null, Selected2 = null; IPCB_Board Board = Util.GetCurrentPCB(); if (Board == null) { return; } double OriginX = EDP.Utils.CoordToMils(Board.GetState_XOrigin()); double OriginY = EDP.Utils.CoordToMils(Board.GetState_YOrigin()); //Iterate theough all components on the board. BoardIterator = Board.BoardIterator_Create(); PCB.TObjectSet FilterSet = new PCB.TObjectSet(); //Filter for components only. FilterSet.Add(PCB.TObjectId.ePadObject); BoardIterator.AddFilter_ObjectSet(FilterSet); BoardIterator.AddFilter_LayerSet(PCBConstant.V6AllLayersSet); //Filter all layers. BoardIterator.AddFilter_Method(TIterationMethod.eProcessAll); Pad = (IPCB_Pad)BoardIterator.FirstPCBObject(); while (Pad != null) { //RefDes = Component.GetState_Name().GetState_Text(); //Determines if component is a variant. if (Selected1 == null && Pad.GetState_Selected() == true) { Selected1 = Pad; } else if (Pad.GetState_Selected() == true) { Selected2 = Pad; } if (Selected1 != null && Selected2 != null) { break; } Pad = (IPCB_Pad)BoardIterator.NextPCBObject(); } if (Selected1 == null || Selected2 == null) { return; } bool bot = false, top = false; if (Selected1.GetState_Layer() == TV6_Layer.eV6_BottomLayer) { Selected1.SetState_Layer(TV6_Layer.eV6_TopLayer); top = true; } if (Selected2.GetState_Layer() == TV6_Layer.eV6_BottomLayer) { Selected2.SetState_Layer(TV6_Layer.eV6_TopLayer); bot = true; } MessageBox.Show(EDP.Utils.CoordToMMs(Board.PrimPrimDistance(Selected1, Selected2)).ToString()); if (top) { Selected1.SetState_Layer(TV6_Layer.eV6_BottomLayer); } if (bot) { Selected2.SetState_Layer(TV6_Layer.eV6_BottomLayer); } //Iterator clean-up Board.BoardIterator_Destroy(ref BoardIterator); }