hexagon logo

Alignment from FCF Datum Shift



I think what vpt (and me) were hoping for was a way to create an alignment that uses the Xact fit shift. There are all sorts of applications for this. Using the available options in best-fit alignment is not the same, because they do not attempt to fit within a tolerance zone.

A few years old but I haven't found anything using search.

SPH1       =GENERIC/SPHERE,DEPENDENT,CARTESIAN,OUT,$
            NOM/XYZ,<0,0,0>,$
            MEAS/XYZ,<0,0,0>,$
            NOM/IJK,<0,0,1>,$
            MEAS/IJK,<0,0,1>,$
            DIAMETER/1,1.1
DIM LOC1= LOCATION OF SPHERE SPH1
AX    NOMINAL       +TOL       -TOL       MEAS        DEV     OUTTOL
D       1.0000     0.2500    -0.2500     1.1000     0.1000     0.0000 ------#--
END OF DIMENSION LOC1
            DATDEF/FEATURE=SPH1,A
            DISPLAYPRECISION/6
FCFLOC1 =POSITION : CIR152_1,CIR152_2,CIR152_3,...
            FEATCTRLFRAME/SHOWNOMS=NO,SHOWPARAMS=NO,SHOWEXPANDED=NO
              SIZE TOLERANCES/33,DIAMETER,0.375,0.005,-0.005
              PRIMARY DIMENSION/POSITION,DIAMETER,0.01,MMC,A,MMC,,
              NOTE/FCFLOC1
            FEATURES/CIR152_1,CIR152_2,CIR152_3,CIR152_4,CIR152_5,
                                CIR152_6,CIR152_7,CIR152_8,CIR152_9,CIR152_10,
                                CIR152_11,CIR152_12,CIR152_13,CIR152_14,
                                CIR152_15,CIR152_16,CIR152_17,CIR152_18,
                                CIR152_19,CIR152_20,CIR152_21,CIR152_22,
                                CIR152_23,CIR152_24,CIR152_25,CIR152_26,
                                CIR152_27,CIR152_28,CIR152_29,CIR152_30,
                                CIR152_31,CIR152_32,CIR152_33,,
            ASSIGN/V1=GETTEXT("DRF_SHIFTX",1,{FCFLOC1})
            ASSIGN/V2=GETTEXT("DRF_SHIFTY",1,{FCFLOC1})
            ASSIGN/V3=GETTEXT("DRF_SHIFTZ",1,{FCFLOC1})
            ASSIGN/V4=GETTEXT("DRF_ROTATIONX",1,{FCFLOC1})*-1
            ASSIGN/V5=GETTEXT("DRF_ROTATIONY",1,{FCFLOC1})*-1
            ASSIGN/V6=GETTEXT("DRF_ROTATIONZ",1,{FCFLOC1})*-1
            FORMAT/TEXT, , ,HEADINGS, , ;NOM,MEAS, , , , , 
DIM BEFORE= LOCATION OF CIRCLE CIR152_1
AX     NOMINAL        MEAS
X     10.153721   10.154507
Y    -27.402826  -27.405035
Z     -8.032519   -8.025360
END OF DIMENSION BEFORE
ALIGN1     =ALIGNMENT/START,RECALL:PREVIOUS,LIST=YES
              ALIGNMENT/ROTATE_OFFSET,V4,ABOUT,XPLUS
              ALIGNMENT/ROTATE_OFFSET,V5,ABOUT,YPLUS
              ALIGNMENT/ROTATE_OFFSET,V6,ABOUT,ZPLUS
              ALIGNMENT/TRANS_OFFSET,XAXIS,V1
              ALIGNMENT/TRANS_OFFSET,YAXIS,V2
              ALIGNMENT/TRANS_OFFSET,ZAXIS,V3
            ALIGNMENT/END
DIM AFTER= LOCATION OF CIRCLE CIR152_1
AX     NOMINAL        MEAS
X     10.151373   10.152161
Y    -27.394485  -27.396694
Z     -8.041472   -8.034312
D      0.376500    0.377383
END OF DIMENSION AFTER
            COMMENT/REPT,
            "Xshift:  "+V1
            "Yshift:  "+V2
            "Zshift:  "+V3
            "Rotation X:  "+V4*-1
            "Rotation Y:  "+V5*-1
            "Rotation Z:  "+V6*-1

The FCF output with datum shift is:


Using a sphere as the only datum seems to allow all 6 degrees to float. There is some small round-off error due to the numbers being used limited to the current DISPLAYPRECISION (not much).

Now what? Trying to actually use this has me baffled. I'd like to simulate the FCF output having the transformed measured coordinates evaluated against the model nominal values. The BEFORE dim has the nominals I want but the AFTER dim has the measured I want (like the FCF output). Inserting & Recalling alignments, Updating Dependent Commands (answering both yes and no) leaves me feeling like I've found my way into a rabbit hole. Maybe Profile dims behave differently?

I'm aware that some settings may influence the results: Update Dependent Commands (warning), UpdateBelowChangedAlignmentDuringExecution (registry), Ignore CAD to part (F5 settings), Allow Fine Tuning of Alignment (F5 settings). I'd really like to get this working inline without resorting to any type of external automation if possible. Can someone throw me a bone here? There's gotta be a way to get some mileage out of this.
Parents
  • Thanks so much! Not that I want to delve too deeply into this... But I did find DRF_SHIFTY and DRF_ROTATIONX in the manual when I searched for those specific terms. but I don't see anywhere in the manual where it refers to the ,1, parameter. is that just a 1=yes or 0=no sort of switch that a 'professional' vb guy would know about?



    GETTEXT Returns the current text from the specified data field: GETTEXT(<String or Integer>, <Integer>, <Pointer>Wink

    This function has three fields.

    First Field—Data Field Number or Description

    The first field can be either a string description of the data field, indicated by item (A) in the image below or the data field number, indicated in item (C) in the image below.

    Note: Item (B) in the image below is not used in this function, but is sometimes used in automation or in report expressions.

    To obtain these values:

    Place PC-DMIS in Command Mode. Right-click anywhere in the Edit window. A shortcut menu appears.

    From the shortcut menu, select Change Pop-up Display and then Data Type Information.

    Position the mouse over a data field in the Edit window. The type description, type number and the type index for that data item are displayed.

    Note: Since the type description may be different for different languages, use the type number if you're using the part program under a language other than the current one.



    Sample Data Type Information Showing (A) Type Description (B) Type String Identifier, (C) Type Number, and (D) Type Index

    Second Field—Type Index

    The second field is the type index, indicated as (D) in the above image. This field is usually zero unless you have more instances of the same type of field in the same command such as multiple DIRECTORY fields shown in the above image. The correct value for this field can be obtained in the same manner as described for the first field.

    Third Field—Command Pointer

    The third field is a command pointer. It points to the command containing the field from which the text is being obtained. This field can be specified either by using command pointer notation (i.e. {F15}) or by using the GETCOMMAND expression as shown in this example.



    Basically it's the instance number of the data type you want.

    For a FCF the datum shift only has one set of values.

    However if you were trying to grab the diameter of the 6th circle where you had reported a pattern 10 holes in one FCF you'd use this number to access the one you wanted.
Reply
  • Thanks so much! Not that I want to delve too deeply into this... But I did find DRF_SHIFTY and DRF_ROTATIONX in the manual when I searched for those specific terms. but I don't see anywhere in the manual where it refers to the ,1, parameter. is that just a 1=yes or 0=no sort of switch that a 'professional' vb guy would know about?



    GETTEXT Returns the current text from the specified data field: GETTEXT(<String or Integer>, <Integer>, <Pointer>Wink

    This function has three fields.

    First Field—Data Field Number or Description

    The first field can be either a string description of the data field, indicated by item (A) in the image below or the data field number, indicated in item (C) in the image below.

    Note: Item (B) in the image below is not used in this function, but is sometimes used in automation or in report expressions.

    To obtain these values:

    Place PC-DMIS in Command Mode. Right-click anywhere in the Edit window. A shortcut menu appears.

    From the shortcut menu, select Change Pop-up Display and then Data Type Information.

    Position the mouse over a data field in the Edit window. The type description, type number and the type index for that data item are displayed.

    Note: Since the type description may be different for different languages, use the type number if you're using the part program under a language other than the current one.



    Sample Data Type Information Showing (A) Type Description (B) Type String Identifier, (C) Type Number, and (D) Type Index

    Second Field—Type Index

    The second field is the type index, indicated as (D) in the above image. This field is usually zero unless you have more instances of the same type of field in the same command such as multiple DIRECTORY fields shown in the above image. The correct value for this field can be obtained in the same manner as described for the first field.

    Third Field—Command Pointer

    The third field is a command pointer. It points to the command containing the field from which the text is being obtained. This field can be specified either by using command pointer notation (i.e. {F15}) or by using the GETCOMMAND expression as shown in this example.



    Basically it's the instance number of the data type you want.

    For a FCF the datum shift only has one set of values.

    However if you were trying to grab the diameter of the 6th circle where you had reported a pattern 10 holes in one FCF you'd use this number to access the one you wanted.
Children
No Data