Exemple #1
0
    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);
    }