4 Replies Latest reply on Sep 26, 2010 9:23 PM by m.soucek

    C# / COM connection to Expedition events blocks parts placement




      I tried to make my improvement to Display control in C#, so more layers will automatically change their visibility when I will change the route working layer ( e.g.  solder mask, paste mask etc. )

      This is " the body" of the program.

      Problem is, that even with that nothing-doing event attached to Expedition, You cannot place parts.

      You pick up a part with mouse, but You can not place it back to PCB - it still holds on cursor.

      After closing the C# program, it works again normally.

      If You add a line which removes the delegate after it is assignet, it works OK too.


      Any ideas ?

      I used C# 2008 and expedition 2007.8

      Has anybody tested this event-handling with other language and COM ( no VBscript - it works, but has other problems ) ?


      public partial class FormAutoswitch : Form


      MGCPCB.IMGCPCBApplication pcbApp;

      MGCPCB.Document pcbBrd;


      private MGCPCB.Document GetLicensedDoc(MGCPCB.Document doc)


      MGCPCBAutomationLicensing.Application licserver = new MGCPCBAutomationLicensing.Application();


      int key = doc.Validate(0);


      int token = licserver.GetToken(key);



      return doc;



      public FormAutoswitch()





      private void Form1_Load(object sender, EventArgs e)


      pcbApp = (MGCPCB.ExpeditionPCBApplication)Marshal.GetActiveObject("MGCPCB.ExpeditionPCBApplication");

      pcbBrd = GetLicensedDoc(pcbApp.ActiveDocument);

      pcbBrd.OnActiveRouteLayerChange += new _IMGCPCBDocumentEvents_OnActiveRouteLayerChangeEventHandler(pcbBrd_OnActiveRouteLayerChange);








      void pcbBrd_OnActiveRouteLayerChange(int Layer)


      // do something here