hexagon logo

PC-DMIS 2017 (interop.pcdlrn.dll) issue on profile of a surface measurements

Hi,

i am software programer so i dont really know about inspection and CMM.

i am having issue using the library interop.pcdlrn.dll for the command "perimeter scan" for a "profile of surface".


when i'm using the librairy it shows a measurement value of 0 like if the machine is offline. but when i use the software PC-DMIS, i have the good results.


but when i do a "constructed set" for a "profile of surface" i have good results either if im using the library or the software.

i dont't understand how the library can act differently from the software. this strange behavior prevents us to use the custom software on the prod environnment.

because im a software programmer i dont really know how to express myself in this forum so i'm sorry if i dont give enough details

Parents
  • You don't show , and it is rather important how you open the part program. You have to tell PC-DMIS which machine the program should run on (or OFFLINE).
    From my own barcode pp starter programmed in Delphi Pascal:

    PCD_PartProgram := PCD_PartPrograms.Open(LocalFileName, [COLOR=#0000FF][B]'CMM1'[/B][/COLOR]);
    


    Also, only one PP can have the machine, normally the one you open first. Opening two PP:s in PC-DMIS will open the second one offline, so you need to make sure there are no other PP:s open, before you open the one you want to run.

    while (PCD_PartPrograms.Count > 0) do begin
    PCD_PartProgram := PCD_Application.ActivePartProgram;
    if not VarIsEmpty(PCD_PartProgram) then begin
    PCD_PartProgram.Close;
    PCD_PartProgram := null;
    end
    end;
    



    Hi Andersi,
    here is the initPCDMIS(...) subroutine:

      private void initPCDMIS(FileInfo tempPrg, out PCDLRN.Application PCDApp, out IPartPrograms PCDPartPrograms, out PartProgram pcdActivePart)
            {
                PCDApp = new PCDLRN.Application(); // fetch the PC-DMIS application
                PCDPartPrograms = PCDApp.PartPrograms; // set up partprograms
    
                //THE MACHINE IS DEFINED IN App.config. (CMM1 or offline)
                string machine_name = ConfigurationManager.AppSettings["machine"];
                PCDPartPrograms.Open(tempPrg.FullName, machine_name); // have PC-DMIS open the PRG
    
                pcdActivePart = PCDApp.ActivePartProgram;
                pcdMachine = PCDApp.ActivePartProgram.ActiveMachine;
    
                Thread.Sleep(100);
    
                PCDLRN.ExecutionWindow ew = pcdActivePart.GetExecutionWindow(0);
    
                ew.Top = 1;
                Thread.Sleep(100);
            }
    

Reply
  • You don't show , and it is rather important how you open the part program. You have to tell PC-DMIS which machine the program should run on (or OFFLINE).
    From my own barcode pp starter programmed in Delphi Pascal:

    PCD_PartProgram := PCD_PartPrograms.Open(LocalFileName, [COLOR=#0000FF][B]'CMM1'[/B][/COLOR]);
    


    Also, only one PP can have the machine, normally the one you open first. Opening two PP:s in PC-DMIS will open the second one offline, so you need to make sure there are no other PP:s open, before you open the one you want to run.

    while (PCD_PartPrograms.Count > 0) do begin
    PCD_PartProgram := PCD_Application.ActivePartProgram;
    if not VarIsEmpty(PCD_PartProgram) then begin
    PCD_PartProgram.Close;
    PCD_PartProgram := null;
    end
    end;
    



    Hi Andersi,
    here is the initPCDMIS(...) subroutine:

      private void initPCDMIS(FileInfo tempPrg, out PCDLRN.Application PCDApp, out IPartPrograms PCDPartPrograms, out PartProgram pcdActivePart)
            {
                PCDApp = new PCDLRN.Application(); // fetch the PC-DMIS application
                PCDPartPrograms = PCDApp.PartPrograms; // set up partprograms
    
                //THE MACHINE IS DEFINED IN App.config. (CMM1 or offline)
                string machine_name = ConfigurationManager.AppSettings["machine"];
                PCDPartPrograms.Open(tempPrg.FullName, machine_name); // have PC-DMIS open the PRG
    
                pcdActivePart = PCDApp.ActivePartProgram;
                pcdMachine = PCDApp.ActivePartProgram.ActiveMachine;
    
                Thread.Sleep(100);
    
                PCDLRN.ExecutionWindow ew = pcdActivePart.GetExecutionWindow(0);
    
                ew.Top = 1;
                Thread.Sleep(100);
            }
    

Children
No Data