Almost every CMM software package provides HLL in various formats: native DMIS, non-Dmis, VB script, etc. Even in very old software like Umess, you can do very complicated things in PCM, for which a thick book can be written. Since many software in the market is still trying to comply with dmis standard to a high percentage and I'm a fan of dmis programming so I'll use dmis HLL as example.
And I want to focus on a few very practical scenarios:
1. Get operator input (for various purposes, i.e. part information)
This is so common and mainly for new users. I won't explain in details, just post out some sample codes for studying:
FileName=ASSIGN/CONCAT(FilePath, SerialNO, '.txt')
SerialNO=ASSIGN/CONCAT('Serial NO.: ', SerialNO)
$$********** Your measurement and dimensions here
Notes: In old Virtual Dmis system, PROMPT will not work, you need to use TEXT/QUERY instead and also it won't allow you to CONCAT with strings mixed with string variables so you need to assign all strings to string variables first then CONCAT.
2. Give warning when certain features are out of tolerance
This is very useful, for example: your datum A face is a kind of thin worm trailing where you need to take 40 hits along the entire trail but if there're some bad hits it will affect your whole alignment obviously. Your parts also vary quite a bit but you can't just watch every single hit. A simple way is let your program give out a warning when flatness is over certain value and pause so you can have a look:
$$*********** Your plane measurement
FLAT_1_DEV = VALUE/TA(FLAT_1),DEV
WARNING=ASSIGN/CONCAT('FLATNESS IS: ',STR(FLAT_1_DEV),' !!')
3. Capture actual feature position to handle part variation
This works similarly to the built-in read position in pc-dmis, when you have to measure a small hole with variations from part to part, i.e. use 1 mm probe to measure 1.5 mm hole:
$$******** set small probe approach/retract distance
TEXT/OPER, 'PLACE PROBE AT CENTER OF THE SMALL HOLE AND CONTINUE ...'
F(READ) = FEAT/POINT,CART, 456,123,789, 0,0,1
MEAS/POINT, F(READ), 0
READ_X = OBTAIN/FA(READ),3
READ_Y = OBTAIN/FA(READ),4
READ_Z = OBTAIN/FA(READ),5
F(CIR1) = FEAT/CIRCLE,INNER,CART, READ_X, READ_Y, READ_Z, 0.000, 0.000, 1.000, 1.500
MEAS/CIRCLE, F(CIR1), 4
F(CIR1) = FEAT/CIRCLE,INNER,CART, 456,123,789, 0,0,1, 1.5
Notes: the nominal definition line right after your circle measurement is very critical because it resets your feature nominal to what it's supposed to be otherwise you will get incorrect results when tolerance it.
or just simply scan this code from your smart phone:
Ray Xing GDTP S-0605
CGP Certified (ITAR equivalent)
CMM Application Specialist RX Metrology Solutions Inc.
One stop solution for CMM and GDT training www.rxmetrology.com