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

  • 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);
            }
    

  • Anders, I too was confused by some of the details, and lack thereof. r.nitubu, let me ask this a different way. Do you see the machine moving when you run it from the script. I suspect you are getting frustrated with these questions, but when we assume, well. . . . .

    Aside from that, we wrote a simple VBA automation project to execute a similar program using a perimeter scan and then a surface profile, executing online there was no problem.

    Can you attach ALL the files involved please? The PRG, the c# project with all subs and functions, and whatever else might be included and we will try it again here in a different way.

    and. . . let me ask you for one more file. In PC-DMIS, make sure debug is enabled. You'll find this under Edit - Preferences - Machine Interface Setup and then the Debug tab. Enable the debug log, then exit PC-DMIS. Now start PC-DMIS (without automation) and execute that same routine. Then exit PC-DMIS and send the debug file. It is usually called debug.text and found in the folder named C:\ProgramData\Hexagon\PC-DMIS\2017 R2 with that last folder based on whatever version you are using. Please send that file also


    Sorry Don if i'm not clear. and no i'm not frustrated, you can ask me anything that can help you.

    Yes, i see the machine moving when I set my C# app to "CMM1". that's my probleme, When I execute my PP trough C#, even if the machine is moving, for a specific command, results are outputted like the machine was offline. but when I use directly PC-DMIS to run my PP, we don't have any problems.

    when I set my C# app to "offline". some values are outputted at the DEV and Measurment:
    https://www.pcdmisforum.com/filedata...3&d=1528143063
    i saw on this forum that it was an unusual behavior
    https://www.pcdmisforum.com/forum/pc...line-deviation

    I don't know if it can be a hint or not.


    Don, i'm preparing a package i can send you easily, can you send me an email ?

    Thanks for your time.
  • r.nitubu, in case you've not already arrived at this conclusion, your situation is unique. I think none of us have seen it before. This does not mean it is not happening, but rather it means we are not doing exactly the same thing in the same way with the same environment. That is the reason for all the questions. . . .
  • Hi Don,

    I finally found the issue. When i copied files to the local folder

    themodel.Instance.cadPath was not given the correct path so the CAD file was not copied correctly and not linked with the .PRG

    now it's working well trough c#.

    Thanks to all for your time, and sorry if i was sometimes hard to understand
  • Thank you for posting the solution. This makes sense now. Its not so much that you were hard to understand, we just did not seem to have all the information we wanted in one place, and apparently not asking all the right questions either.