hexagon logo

T-value Calculation

I searched PCdmis help menu & this forum and couldn't find the formula that the software is using for calculation the reported T-values. Does anybody have this information?

I have some historic XYZ data & current data. The current data has T-values reported but the historic data does not. The customer wants to know the difference in historic & current data based only on the T-values.

Thanks in advance for your assistance.
  • You can calculate T-Value like this :
    ASSIGN/TVAL=DOT((PT1.XYZ-PT.TXYZ),PT1.TIJK)
    T-Value is the projection of the measured point along the theoritical surface vector.
  • You can calculate T-Value like this :
    ASSIGN/TVAL=DOT((PT1.XYZ-PT.TXYZ),PT1.TIJK)
    T-Value is the projection of the measured point along the theoritical surface vector.


    Profile tolerance is buggy in 2015.1 SP10 and it's reporting a false NG when clearly it's all in tolerance.

    Ref:
                ASSIGN/V1=GETPROGRAMINFO("NUMOOT") 'is 0 when no dims are out of tolerance
    


    I used above DOT() to report the min/max of a feature set and put them in a T-Val location dimension instead of a Profile dimension.
    My process is part of an automated cell and when multiple parts are 'NG' the order finishes short and moves on to the next order on que. Big no-no when I have to explain why CMM is reporting things in 'error' and our orders are wrapping up prematurely.

    Thanks it saved my neck.
  • Here's the code:
    SCN1       =FEAT/SET,CARTESIAN
                THEO/<0.0296,-2.0885,0.4079>,<0,0,1>
                ACTL/<0.0291,-2.0889,0.4079>,<0,0,1>
                CONSTR/SET,BASIC,PNT18,PNT19,PNT20,PNT21,PNT22,PNT23,PNT12,PNT13,PNT14,PNT15,PNT16,PNT17,PNT3,PNT5,PNT6,PNT7,PNT8,PNT9,PNT10,PNT30,PNT29,PNT28,PNT27,PNT26,PNT25,PNT24,PNT31,PNT32,PNT33,PNT34,PNT35,PNT36,PNT37,PNT38,PNT39,PNT40,PNT41,PNT42
                           PNT43,PNT44,PNT45,PNT46,PNT47,PNT48,PNT49,PNT50,PNT51,PNT52,PNT53,PNT54,PNT55,PNT56,PNT57,PNT58,PNT59,PNT60,PNT61,PNT62,PNT63,PNT64,PNT65,PNT66,PNT67,PNT68,PNT69,PNT70,PNT71,PNT72,PNT73,PNT74,PNT75,PNT76,PNT77,PNT78,PNT79,PNT80
                           PNT80,PNT81,PNT82,PNT83,PNT84,PNT85,PNT86,PNT87,PNT88,PNT89,PNT90,PNT91,PNT99,PNT100,PNT101,PNT102,PNT103,PNT104,PNT105,PNT106,PNT107,PNT108,PNT109,PNT110,PNT111,PNT112,PNT113,PNT114,PNT115,PNT116,PNT117,PNT118,PNT119,PNT120,$
                           PNT121,PNT122,PNT123,PNT124,PNT125,PNT126,PNT127,PNT128,PNT129,PNT130,PNT131,PNT132,PNT133,PNT134,PNT135,PNT136,PNT137,PNT138,PNT139,PNT140,PNT141,PNT142,PNT143,PNT144,PNT145,PNT146,PNT147,PNT148,PNT149,PNT150,PNT151,PNT152,$
                           PNT160,PNT161,PNT162,PNT186,PNT187,PNT188,PNT189,PNT190,PNT191,PNT192,PNT193,PNT194,PNT195,PNT196,PNT197,PNT198,PNT199,PNT200,PNT201,PNT202,PNT203,PNT204,PNT205,PNT206,PNT207,PNT208,PNT209,PNT210,PNT211,PNT212,PNT213,PNT214,$
                           PNT215,PNT216,PNT217,PNT218,PNT219,PNT220,PNT221,PNT222,PNT223,PNT224,PNT225,PNT226,PNT227,PNT228,PNT229,PNT230,PNT231,PNT232,PNT233,PNT234,PNT235,PNT236,PNT237,PNT238,PNT239,PNT240,PNT241,PNT242,PNT243,PNT244,PNT245,PNT246,$
                           PNT247,PNT248,PNT249,PNT250,PNT251,PNT252,PNT253,PNT254,PNT255,PNT256,PNT257,PNT258,PNT259,PNT260,PNT261,PNT262,PNT263,PNT264,PNT265,PNT266,PNT267,PNT268,PNT269,PNT270,PNT271,PNT272,PNT273,PNT274,PNT275,PNT276,PNT277,PNT278,$
                           PNT279,PNT280,PNT281,PNT282,PNT283,PNT284,PNT285,PNT286,PNT287,PNT288,PNT289,PNT290,PNT291,PNT292,PNT293,PNT294,PNT295,PNT296,PNT297,PNT298,PNT299,PNT300,PNT301,PNT302,PNT303,PNT304,PNT305,PNT306,PNT307,PNT308,PNT309,PNT310,$
                           PNT311,PNT312,PNT313,PNT314,PNT315,PNT316,PNT317,PNT318,PNT319,PNT320,PNT321,PNT322,PNT323,PNT324,PNT325,PNT326,PNT327,PNT328,PNT329,PNT330,PNT331,PNT332,PNT333,PNT334,PNT335,PNT336,PNT337,PNT338,PNT339,PNT340,PNT341,PNT342,$
                           PNT343,PNT344,PNT345,PNT346,PNT347,PNT348,PNT349,PNT350,PNT351,PNT352,PNT353,PNT354,PNT355,PNT356,PNT357,PNT358,PNT359,PNT360,PNT361,PNT362,PNT363,PNT364,PNT365,PNT366,PNT367,PNT368,PNT369,PNT370,PNT371,PNT372,PNT373,PNT374,$
                           PNT375,PNT376,PNT377,PNT378,PNT379,PNT380,PNT381,PNT382,PNT383,PNT384,PNT385,PNT386,PNT387,PNT388,PNT389,PNT390,PNT391,PNT392,PNT393,PNT394,PNT395,PNT396,PNT397,PNT398,PNT399,PNT400,PNT401,PNT402,PNT403,PNT404,PNT405,PNT406,$
                           PNT407,PNT408,PNT409,PNT410,PNT411,PNT412,PNT413,PNT414,PNT415,PNT416,PNT417,PNT418,PNT419,PNT420,PNT421,PNT422,PNT423,PNT424,PNT425,PNT426,PNT427,PNT428,PNT429,PNT430,PNT431,PNT432,PNT433,PNT434,PNT435,PNT436,PNT437,PNT438,$
                           PNT439,PNT440,PNT441,PNT442,PNT443,PNT444,PNT445,PNT446,PNT447,PNT448,PNT449,PNT450,PNT451,PNT452,PNT453,PNT454,PNT455,PNT456,PNT457,PNT458,PNT459,PNT460,PNT461,PNT462,PNT463,PNT464,PNT465,PNT466,PNT467,PNT468,PNT469,PNT470,$
                           PNT471,PNT472,PNT473,PNT474,PNT475,PNT476,PNT477,PNT478,PNT479,PNT480,PNT481,PNT482,PNT483,PNT484,PNT485,PNT486,PNT487,PNT488,PNT489,PNT490,PNT491,PNT492,PNT493,PNT494,PNT495,PNT496,PNT497,PNT498,PNT499,PNT500,PNT501,PNT502,$
                           PNT503,PNT504,PNT505,PNT506,PNT507,PNT508,PNT509,PNT510,PNT511,PNT512,PNT513,PNT514,PNT515,PNT516,PNT517,PNT518,PNT519,PNT520,PNT521,PNT522,PNT523,PNT524,PNT525,PNT526,PNT527,PNT528,PNT529,PNT530,PNT531,PNT532,PNT533,PNT534,$
                           PNT535,PNT536,PNT537,PNT538,PNT539,PNT540,PNT541,PNT542,PNT543,PNT544,PNT545,PNT546,PNT547,PNT548,PNT549,PNT550,PNT551,PNT552,PNT553,PNT554,PNT555,PNT556,PNT557,PNT558,PNT559,PNT560,PNT561,PNT562,PNT563,PNT564,PNT565,PNT566,$
                           PNT567,PNT568,PNT569,PNT570,PNT571,PNT572,PNT573,PNT574,PNT575,PNT576,PNT577,PNT578,PNT579,PNT580,PNT581,PNT582,PNT583,PNT584,PNT585,PNT586,PNT587,PNT588,PNT589,PNT590,PNT591,PNT592,PNT593,PNT594,PNT595,PNT596,PNT597,PNT598,$
                           PNT599,PNT600,PNT601,PNT602,PNT603,PNT604,PNT605,PNT606,PNT607,PNT608,PNT609,PNT610,PNT611,PNT612,PNT613,PNT614,PNT615,PNT616,PNT617,PNT618,PNT619,PNT620,PNT621,PNT622,PNT623,PNT624,PNT625,PNT626,PNT627,PNT628,PNT629,PNT630,$
                           PNT631,PNT632,PNT633,PNT634,PNT635,PNT636,PNT637,PNT638,PNT639,PNT640,PNT641,PNT642,PNT643,PNT644,PNT645,PNT646,PNT647,PNT648,PNT649,PNT650,PNT651,PNT652,PNT653,PNT654,PNT655,PNT656,PNT657,PNT658,PNT659,PNT660,PNT661,PNT662,$
                           PNT663,PNT664,PNT665,PNT666,PNT667,PNT668,PNT669,PNT670,PNT671,PNT672,PNT673,PNT674,PNT675,PNT676,PNT677,PNT678,PNT679,PNT680,PNT681,PNT682,PNT683,PNT684,PNT685,PNT686,PNT687,PNT688,PNT689,PNT690,PNT691,PNT692,PNT693,PNT694,$
                           PNT695,PNT696,PNT697,PNT698,PNT699,PNT700,PNT701,PNT702,PNT703,PNT704,PNT705,PNT706,PNT707,PNT708,PNT709,PNT710,PNT711,PNT712,PNT713,PNT714,PNT715,PNT716,PNT717,PNT718,PNT719,PNT720,PNT721,PNT722,PNT723,PNT724,PNT725,PNT726,$
                           PNT727,PNT728,PNT729,PNT730,PNT731,PNT732,PNT733,PNT734,PNT735,PNT736,PNT737,PNT738,PNT739,PNT740,PNT741,PNT742,PNT743,PNT744,PNT745,PNT746,PNT747,PNT748,PNT749,PNT750,PNT751,PNT752,PNT753,PNT754,PNT755,PNT756,,
    $$ NO,
    
    
    
    
    
    
    
                ASSIGN/COUNTER=0
                ASSIGN/SCNPNTS=0
                ASSIGN/PNTS=ARRAY(0,0)
                DO/
                ASSIGN/COUNTER=COUNTER + 1
                IF/!COUNTER > SCN1.NUMHITS
                  ASSIGN/SCNPNTS[COUNTER]=DOT(SCN1.HIT[COUNTER].XYZ-SCN1.HIT[COUNTER].TXYZ,SCN1.HIT[COUNTER].IJK)
                  ASSIGN/PNTS[1]=IF(SCNPNTS[COUNTER] < PNTS[1],SCNPNTS[COUNTER], PNTS[1])
                  ASSIGN/PNTS[2]=IF(SCNPNTS[COUNTER] > PNTS[2],SCNPNTS[COUNTER], PNTS[2])
                END_IF/
                UNTIL/COUNTER >= SCN1.NUMHITS
    $$ NO,
    
    
    
    
    
    
    
                FORMAT/TEXT,OPTIONS,ID,HEADINGS,SYMBOLS, ;NOM,TOL,MEAS,OUTTOL, , ,
    PNTMIN     =GENERIC/POINT,DEPENDENT,CARTESIAN,$
                NOM/XYZ,<0,0,0>,$
                MEAS/XYZ,<0,0,0>,$
                NOM/IJK,<0,0,1>,$
                MEAS/IJK,<0,0,1>
    PNTMAX     =GENERIC/POINT,DEPENDENT,CARTESIAN,$
                NOM/XYZ,<0,0,0>,$
                MEAS/XYZ,<0,0,0>,$
                NOM/IJK,<0,0,1>,$
                MEAS/IJK,<0,0,1>
    DIM NOTE1_1_MIN= LOCATION OF POINT PNTMIN  UNITS=IN ,$
    GRAPH=OFF  TEXT=OFF  MULT=10.00  OUTPUT=BOTH  HALF ANGLE=NO
    AX    NOMINAL       +TOL       -TOL       MEAS     OUTTOL
    T       0.0000     0.0100     0.0100    -0.0020     0.0000 ---#-----
    END OF DIMENSION NOTE1_1_MIN
    DIM NOTE1_1_MAX= LOCATION OF POINT PNTMAX  UNITS=IN ,$
    GRAPH=OFF  TEXT=OFF  MULT=10.00  OUTPUT=BOTH  HALF ANGLE=NO
    AX    NOMINAL       +TOL       -TOL       MEAS     OUTTOL
    T       0.0000     0.0100     0.0100     0.0108     0.0008 -------->
    END OF DIMENSION NOTE1_1_MAX
                ASSIGN/NOTE1_1_MIN.T.MEAS=PNTS[1]
                ASSIGN/NOTE1_1_MAX.T.MEAS=PNTS[2]
    
  • PNT756 gheez... might just stick to my easy stuff here
  • Hey they say dimensionless prints are the way of the future, they save time they told, just slap a general note with profile tolerance of .020 and be done they said. We'll save time....


    1000 points later:
    Welp that's one side of the part done... on to the next side! Time savings are in there somewhere bahaha!
  • Some make pea size parts others make gigantic parts... I'm somewhere in-between. 1000 points isn't crazy I've had to work on bigger stuff like 20hrs run times at full friggin' speed.
  • You could also :
    ASSIGN/V1=DOT(SCN1.HIT[1..SCN1.NUMHITS].XYZ-SCN1.HIT[1..SCN1.NUMHITS].TXYZ,SCN1.HIT[1..SCN1.NUMHITS].TIJK)
    Then :
    ASSIGN/V2=MININDEX(V1)
    ASSIGN/V3="SCN1.HIT["+V2+"]"
    PNTMIN =GENERIC/POINT,DEPENDENT,CARTESIAN,$
    NOM/XYZ,<V3.TX,V3.TY,V3.TZ>,$
    MEAS/XYZ,<V3.X,V3.Y,V3.Z>,$
    NOM/IJK,<V3.TI,V3.TJ,V3.TK>,$
    MEAS/IJK,<V3.I,V3.J,V3.K>
    ASSIGN/V4=MAXINDEX(V1)
    ASSIGN/V5="SCN1.HIT["+V4+"]"
    PNTMAX =GENERIC/POINT,DEPENDENT,CARTESIAN,$
    NOM/XYZ,<V5.TX,V5.TY,V5.TZ>,$
    MEAS/XYZ,<V5.X,V5.Y,V5.Z>,$
    NOM/IJK,<V5.TI,V5.TJ,V5.TK>,$
    MEAS/IJK,<V5.I,V5.J,V5.K>