hexagon logo

Shift Home Position on Virtual Machine

Hi Guys,

We recently purchased a 9-12-8 Global S machine with a scanning head. The length of the indexing portion (scanning head + longer tip) kind of freaked us out, and we wanted to be able to simulate the machine offline in order to catch collisions between the head or probe and the legs of the bridge. However, the closest model in the PC-DMIS (2019 R1) model list is the 9-12-8 Evo. The hardware dimensions seem close enough to use, but the home positions of this virtual machine and our physical machine differ by several inches. This is a problem because when we put the CAD model on the same granite position as in the real world, there is a large offset from reality on the physical machine. I could ditch the virtual machine and run my manual alignment to get it to work online, but a better solution would seem to be to move the home position on the virtual machine to better correlate with reality.

From what I've found on this forum already, it seems like many of you have done similar things with the machine models. I've played around with the usermachine.dat file a little bit (starting with a copy of the Global Evo 9-12-8 from machine.dat), but it's not at all clear to me from the help file what I would need to do change the origin/start point/home position, or even if those are in fact the same. Could any of you point me in the right direction? Thank you.
  • You can also use F5 and the Part/Machine tab. There is a place to offset the home position in the X, Y, & Z.
  • Yes, I did try using that. The problem is that that number ends up being different for the virtual machine vs. the physical machine. Again, I could change it by the difference between the two when I switch from offline to online, but that would be a pain, especially if I need to make offline edits later.
  • Aha! I felt like I was the only guy out there who had a need for this. You might be #2. There is a way and it is possible to dial it just like the real thing. I program a CMM that is part of a 24/7 operation and getting time on it is near impossible. So I went thru the trouble of doing this. I'll dig up my files and do a bullet point 'how to' in a few.
  • Thank you so much! From the other posts I read, I thought you might be the guy who would know this.
  • Alright here goes:

    First:
    Create a custom machine of your current machine. I run version 2015.1

    1. go to C:\Program Files\WAI\PC-DMIS 2015.1 64-bit
    2. open MACHINE.DAT
    3. copy your machine from (for me it's)
    ITEM:GLOBAL_B&S_7-10-7 ARM
    cadgeom 0 -1000 0 1 0 0 0 1 0 0 0 1 1 global_7-10-7.draw
    tablecenter 244.147 699 -786 0 0 1
    linearjoint 0 0 0 0 1 0 0 0 0 1000 y axis
    cadgeom 0 0 0 0 1 0 1 0 0 0 1 0 2 global_7-10-7.draw
    cadgeom 200 0 0 0 1 0 1 0 0 0 1 0 0 global_B&S_ygraph_9-X-X.draw
    linearjoint 0 0 0 -1 0 0 0 0 0 700 x axis
    cadgeom 0 0 0 0 1 0 0 0 1 1 0 0 3 global_7-10-7.draw
    cadgeom 0 0 0 0 1 0 0 0 1 1 0 0 6 global_B&S_xgraph_9-X-X.draw
    linearjoint 0 0 0 0 1 0 0 0 -700 0 z axis
    cadgeom 0 0 0 0 -1 0 1 0 0 0 0 1 4 global_7-10-7.draw
    connect 0 0 0 0 0 1 ARM
    

    4. go to C:\ProgramData\WAI\PC-DMIS\2015.1
    5. create USERMACHINE.DAT
    6. paste your machine from step #3
    7. rename your machine and edit your axis (for me it's). Notice I just added an extra "G" to machine name.
    ITEM:GGLOBAL_B&S_7-10-7 ARM
    cadgeom 0 -1000 -22.62 1 0 0 0 1 0 0 0 1 1 global_7-10-7.draw
    tablecenter 244.147 699 -786 0 0 1
    linearjoint 0 -49.14 0 0 1 0 0 0 0 1000 y axis
    cadgeom 0 0 -22.62 0 1 0 1 0 0 0 1 0 2 global_7-10-7.draw
    cadgeom 200 0 0 0 1 0 1 0 0 0 1 0 0 global_B&S_ygraph_9-X-X.draw
    linearjoint 56.56 0 0 -1 0 0 0 0 0 700 x axis
    cadgeom 0 0 -22.62 0 1 0 0 0 1 1 0 0 3 global_7-10-7.draw
    cadgeom 0 0 -22.62 0 1 0 0 0 1 1 0 0 6 global_B&S_xgraph_9-X-X.draw
    linearjoint 0 36.77 0 0 1 0 0 0 -700 0 z axis
    cadgeom 0 0 0 0 -1 0 1 0 0 0 0 1 4 global_7-10-7.draw
    connect 0 0 0 0 0 1 ARM
    

    8. Save USERMACHINE.DAT and close
    9. In PcDmis go to Insert | Hardware Definition | Machine and pick your custom machine (for me it's "GGLOBAL_B&S_7-10-7 ARM")

    Dialing the machine to your virtual machine will take some creativeness let us know if your need ideas.
  • This is great, but the last part is where I'm stuck. Do I move the origin points of the components (the first three numbers of each part) to get the home position in the right spot? Is there a way to shift everything at once?
  • This is great, but the last part is where I'm stuck. Do I move the origin points of the components (the first three numbers of each part) to get the home position in the right spot? Is there a way to shift everything at once?


    Notice that I moved x axis, y axis, and z axis? If I remember correctly this is what I had to do to move the Home position. Touching the input values in machine window did nothing for me so I had to play around with in usermachine.dat file.

    I edited the linearjoint for all XYZ.

    In your PcDmis help menu type: Editing the usrmachine.dat Data File
  • Well... in order to make it look right I had to shift the origin in the .DRAW file, which I did by changing the file extension to .CAD, importing it into a PC-DMIS routine, and using Operation -> Graphic Display Window -> Transform. Except that now the probe takes hits six inches off the part offline. I'll keep messing with it and post what I figure out.

    That was in addition to moving the joints around like you described, . Thank you very much for the pointers on that. It's so weird that the joints are in a different coordinate system...
  • Well... in order to make it look right I had to shift the origin in the .DRAW file, which I did by changing the file extension to .CAD, importing it into a PC-DMIS routine, and using Operation -> Graphic Display Window -> Transform. Except that now the probe takes hits six inches off the part offline. I'll keep messing with it and post what I figure out.

    That was in addition to moving the joints around like you described, . Thank you very much for the pointers on that. It's so weird that the joints are in a different coordinate system...


    Yep no problem! For sure it's the linearjoints you have to mess with. You have to shift your joints around to match your virtual CMM. I think I went out to the machine homed it and wrote down the values the machine over traveled beyond the home position (I moved the machine with the joy stick) and just offset the linearjoints until my virtual machine read the same. It's a bit tricky but nothing you can't get a concept of if you mess with long enough.

    From the help menu:
    <joint type> n1 n2 n3 n4 n5 n6 n7 n8 n9 n10 <joint name>

    Defines the type of joint used within the DRAW file:
    1. <joint type>

      The type of joint used. The options are "autojoint", "linearjoint" or "manualjoint".

      n1 n2 n3

      The X Y Z coordinate location from origin 0,0,0

      n4 n5 n6

      The I J K vector.

      n7 n8

      The angular offset value (n7) and the increment value (n8). These are mainly used for autojoint configurations and are typically set to 0 0 in most other configurations.

      Example:

      n9 n10

      The minus and plus motion for the defined axis. The first number (n9) is always a negative value or zero while the second number (n10) is always a positive number or zero.

      <joint name>

      A unique user-defined name for the joint for each ITEM definition. You can use space characters in the joint name.
      1. autojoint 244.147 -151.141 -586 0 0 1 0 0.01 -360 360 w axis

        The example shows the configuration starts at 0 (n7) and rotates in 0.01 (n8) degree increments.


  • Finally, I have something that looks write offline and runs through online without any messing around. , I ended up shifting the CAD components of the model around the origin rather than either changing the joint values or messing with the CAD like I mentioned above.

    For posterity (actually for me when I try to set it up for our other machine in 6 months Slight smile ), this is how I did it. Start with the unedited custom machine created as outlined above:

    ITEM:GLOBAL_S_9-12-8 Bridge-Hexagon
    cadgeom 0 0 0 1 0 0 0 1 0 0 0 1 1 Global_Evo_9-12-8.DRAW
    tablecenter 450 600 -882.9974 0 0 1
    linearjoint 0 0 0 0 1 0 0 0 0 1200 y axis
    cadgeom 0 0 0 0 1 0 1 0 0 0 1 0 2 Global_Evo_9-12-8.DRAW
    linearjoint 0 0 0 -1 0 0 0 0 0 900 x axis
    cadgeom 0 0 0 0 1 0 0 0 1 1 0 0 3 Global_Evo_9-12-8.DRAW
    linearjoint 0 0 0 0 1 0 0 0 -800 0 z axis
    cadgeom 0 0 0 0 -1 0 1 0 0 0 0 1 4 Global_Evo_9-12-8.DRAW
    connect 0 0 0 0 0 1 ARM
    


    1. Measure how much the home position needs to move. I did this referencing the -X, -Y, +Z corner of the granite. I probed the position on the physical machine by offsetting 2-4-6 and 1-2-3 blocks from the edge and probing them relative to the STARTUP alignment. I measured the position of the machine model by zooming way in on the edges of the granite with the grid turned on. The difference between each axis is what you're looking for. Remember to properly account for signs and the size of the blocks!
    2. Now, move the granite in the model (the first `cadgeom` line) that amount. The first three numbers are X, Y, Z. You'll need to play with the signs to get it to do what you want, but it's easy to check with the grid.
    3. Next, change the first and third numbers in the next `cadgeom` line to the X and Z values used above. The signs should be the same, but you never know...
    4. Finally, change just the third number in the third `cadgeom` line to the Z value. Watch out because some of these flip coordinate systems on you, so look closely at the result! The third number might not be the one you want...

    Here's what I ended up with:

    ITEM:GLOBAL_S_9-12-8 Bridge-Hexagon
    cadgeom [COLOR=#FF0000]35.72256 -177.41519 -18.23212[/COLOR] 1 0 0 0 1 0 0 0 1 1 Global_Evo_9-12-8.DRAW
    tablecenter 450 600 -882.9974 0 0 1
    linearjoint 0 0 0 0 1 0 0 0 0 1200 y axis
    cadgeom [COLOR=#FF0000]35.72256[/COLOR] 0 [COLOR=#FF0000]-18.23212[/COLOR] 0 1 0 1 0 0 0 1 0 2 Global_Evo_9-12-8.DRAW
    linearjoint 0 0 0 -1 0 0 0 0 0 900 x axis
    cadgeom 0 0 [COLOR=#FF0000]-18.23212[/COLOR] 0 1 0 0 0 1 1 0 0 3 Global_Evo_9-12-8.DRAW
    linearjoint 0 0 0 0 1 0 0 0 -800 0 z axis
    cadgeom 0 0 0 0 -1 0 1 0 0 0 0 1 4 Global_Evo_9-12-8.DRAW
    connect 0 0 0 0 0 1 ARM
    


    Notes:
    1. All XYZ's are in millimeters.
    2. The linearjoint values also do things, as discussed above, but they definitely flip coordinate systems sometimes.
    3. I tried changing the connect position to get the wrist to line up with the end of the quill at one point. It worked for that, but may have caused the disconnect between where I was clicking on the CAD model and where the probe was making hit motions I found later.
    4. If you figure out what the `tablecenter` values actually do, please let us know.
    5. You can edit the cad model by finding the file in the install directory under Models/CMM/, changing the extension (on a copy!) to .CAD, and loading it into PC-DMIS. It ended up being a huge rabbit trail for me, though.
    6. The help files are here. They say just enough to get you in trouble, but might be helpful combined with this.