Esempio n. 1
0
    //Autogenerated code. End of implementation [GetState_Viagrid]

    //Autogenerated code. Begin of implementation [Command_Viagrid]
    public void Command_Viagrid(IServerDocumentView view, ref string parameters)
    {
        IPCB_ServerInterface pcbServer = PCB.GlobalVars.PCBServer;

        if (pcbServer == null)
        {
            return;
        }

        IPCB_Board pcbBoard = pcbServer.GetCurrentPCBBoard();

        if (pcbBoard == null)
        {
            return;
        }

        DXP.Utils.RunCommand("PCB:DeSelect", "Scope=All");

        var boundingRect = pcbBoard.GetState_BoardOutline().BoundingRectangle();
        var gridSize     = (int)pcbBoard.GetState_ComponentGridSize();
        var delta        = EDP.Utils.MMsToCoord(0.001);

        IPCB_BoardIterator iterator = pcbBoard.BoardIterator_Create();

        iterator.AddFilter_ObjectSet(new PCB.TObjectSet(PCB.TObjectId.eViaObject));
        iterator.AddFilter_LayerSet(PCBConstant.V6AllLayersSet);
        iterator.AddFilter_Area(boundingRect.Left, boundingRect.Bottom, boundingRect.Right, boundingRect.Top);

        IPCB_Primitive pcbObject = iterator.FirstPCBObject();

        while (pcbObject != null)
        {
            if (pcbObject is IPCB_Via via &&
                (via.GetState_XLocation() % gridSize > delta ||
                 via.GetState_XLocation() % gridSize > delta))
            {
                via.SetState_Selected(true);
            }
            pcbObject = iterator.NextPCBObject();
        }

        pcbBoard.BoardIterator_Destroy(ref iterator);

        DXP.Utils.RunCommand("PCB:RunQuery", "Apply=True|Expr=IsSelected|Mask=True|Select=True");
    }