Bueno estuve probando con querys y lo malo de una query es que no se aplica a ISComponent en las reglas de ruteo solo a alyers y pads y vias.
Por lo que seguramente se podra hacer con un script, he estado leyendo superficialmente esto de la creacion de scripts y parece que no es una tarea imposible. Solo que si sera un poco tardado.
aqui un ejemplo de como eliminar los tracks de la top layer, este viene en la carpeta de scripts de ejemplos.
Procedure ReDrawCurrentBoard(Dummy : Integer = 0);
Var
P : String;
Begin
P := 'Action=Redraw';
MessageRouter_SendCommandToModule('PCB:Zoom', P, 255, GetState_CurrentEditorWindow);
End;
{..............................................................................}
{..............................................................................}
Procedure RemoveTracksOnTopLayer;
var
CurrentPCBBoard : IPCB_Board;
Iterator : IPCB_BoardIterator;
Track : IPCB_Track;
OldTrack : IPCB_Track;
Begin
CurrentPCBBoard := PCBServer.GetCurrentPCBBoard;
If CurrentPCBBoard = Nil Then Exit;
Iterator := CurrentPCBBoard.BoardIterator_Create;
If Iterator = Nil Then Exit;
Iterator.AddFilter_ObjectSet(MkSet(eTrackObject));
Iterator.AddFilter_LayerSet(MkSet(eTopLayer));
PCBServer.PreProcess;
Try
Track := Iterator.FirstPCBObject;
While Track <> Nil Do
Begin
OldTrack := Track;
Track := Iterator.NextPCBObject;
CurrentPCBBoard.RemovePCBObject(OldTrack);
PCBServer.SendMessageToRobots(CurrentPCBBoard.I_ObjectAddress,
c_BroadCast,
PCBM_BoardRegisteration,
OldTrack.I_ObjectAddress);
End;
Finally
CurrentPCBBoard.BoardIterator_Destroy(Iterator);
End;
PCBServer.PostProcess;
ReDrawCurrentBoard;
End;