//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"); }