public void Command_GetxSignalInfo()//Const View : IServerDocumentView; Var Parameters : WideString) { IPCB_ServerInterface PCBServer = PCB.GlobalVars.PCBServer; IPCB_Board Board; IPCB_BoardIterator Iterator; IPCB_ObjectClass2 ObjectClass; IPCB_PinPairsManager PinPairsManager; IPCB_PinPair PinPair; //int I; ArrayList Report = new ArrayList(); IClient Client = DXP.GlobalVars.Client; IPCB_Primitive Prim; IPCB_Pad Pad; if (PCBServer == null) { return; } Board = PCBServer.GetCurrentPCBBoard(); if (Board == null) { return; } PinPairsManager = Board.GetState_PinPairsManager(); if (PinPairsManager == null) { return; } PinPairsManager.InvalidateAll(); Iterator = Board.BoardIterator_Create(); try { Iterator.AddFilter_ObjectSet(Util.MKset(PCB.TObjectId.eClassObject)); Iterator.AddFilter_LayerSet(PCBConstant.V6AllLayersSet); ObjectClass = (IPCB_ObjectClass2)Iterator.FirstPCBObject(); while (ObjectClass != null) { if (ObjectClass.GetState_MemberKind() == TClassMemberKind.eClassMemberKind_Signal) { Report.Add("xSignal Class : " + ObjectClass.GetState_DisplayName()); for (int I = 0; I <= PinPairsManager.GetState_PinPairsCount() - 1; I++) { PinPair = PinPairsManager.GetState_PinPairs(I); if (ObjectClass.IsMember(PinPair.GetState_Name())) { //need primitive info //refdes and pin number Report.Add(String.Format(" xSignal : {0}, Node Count : {1}, Signal Length : {2}mils, Routed Length : {3}mils, Unrouted Length : {4}mils, Primitive Count : {5}", PinPair.GetState_Name(), PinPair.GetState_NodeCount(), EDP.Utils.CoordToMils((int)PinPair.GetState_Length()), EDP.Utils.CoordToMils((int)PinPair.GetState_RoutedLength()), EDP.Utils.CoordToMils((int)PinPair.GetState_UnroutedLength()), PinPair.GetState_PrimitivesCount())); for (int j = 0; j <= PinPair.GetState_PrimitivesCount() - 1; j++) { Prim = PinPair.GetPrimitives(j); if (Prim.GetState_DescriptorString().StartsWith("Pad")) //need refdes, pin number, net name { Pad = (IPCB_Pad)Prim; //Pad.GetState_PinDescriptorString() = "U6-C17" Report.Add(" Pin: " + Pad.GetState_PinDescriptorString() + ", Net: " + Prim.GetState_Net().GetState_Name()); //Report.Add(" Primative Desc: " + Prim.GetState_DescriptorString() + ", Net : " + Prim.GetState_Net().GetState_Name()); } } } } } ObjectClass = (IPCB_ObjectClass2)Iterator.NextPCBObject(); } File.WriteAllLines("C:\\xSignals.txt", (string[])Report.ToArray(typeof(string))); //Client.OpenDocument("Text", "C:\\xSignals.txt"); } finally { Board.BoardIterator_Destroy(ref Iterator); //FreeAndnull(Report); } }