hexagon logo

More Generic Function Example

Construct Features Hits Function

Here is an example on how to use functions to simplify the syntax when typing in the commands for a Constructed Circle from two Auto Circles.

If you have two Auto Circles named CIR1 and CIR2 then you would have to use the syntax CIR1.HIT[1..CIR1.NUMHITS],CIR2.HIT[1..CIR2.NUMHITS] for the Constructed Circle.

With this Function example

ASSIGN/PAR_ALLHITS1=".HIT[1.."
ASSIGN/PAR_ALLHITS2=".NUMHITS]"
ASSIGN/ALLHITS=FUNCTION((IDA),(IDA)+PAR_ALLHITS1+(IDA)+PAR_ALLHITS2)

All you have to type in is ALLHITS("CIR1"),ALLHITS("CIR2")

Code example
ASSIGN/PAR_ALLHITS1=".HIT[1.."
ASSIGN/PAR_ALLHITS2=".NUMHITS]"
ASSIGN/ALLHITS=FUNCTION((IDA),(IDA)+PAR_ALLHITS1+(IDA)+PAR_ALLHITS2)
CIR1 =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,IN,LEAST_SQR
THEO/<4.291,3.5036,0>,<0,0,1>,0.6457
ACTL/<4.291,3.5036,0>,<0,0,1>,0.6457
TARG/<4.291,3.5036,0>,<0,0,1>
START ANG=0,END ANG=360
ANGLE VEC=<1,0,0>
DIRECTION=CCW
SHOW FEATURE PARAMETERS=NO
SHOW CONTACT PARAMETERS=NO
CIR2 =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,IN,LEAST_SQR
THEO/<4.291,3.5036,-0.7874>,<0,0,1>,0.6457
ACTL/<4.291,3.5036,-0.7874>,<0,0,1>,0.6457
TARG/<4.291,3.5036,-0.7874>,<0,0,1>
START ANG=0,END ANG=360
ANGLE VEC=<1,0,0>
DIRECTION=CCW
SHOW FEATURE PARAMETERS=NO
SHOW CONTACT PARAMETERS=NO
CIR5 =FEAT/CIRCLE,CARTESIAN,IN,LEAST_SQR,NO
THEO/<4.291,3.5036,-0.3937>,<0,0,1>,0.6457
ACTL/<4.291,3.5036,-0.3937>,<0,0,1>,0.6457
CONSTR/CIRCLE,BFRE,2D,ALLHITS("CIR1"),ALLHITS("CIR2"),,
OUTLIER_REMOVAL/OFF,3
FILTER/OFF,UPR=0
CIR3 =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,IN,LEAST_SQR
THEO/<3.1496,2.3622,0>,<0,0,1>,2.3622
ACTL/<3.1496,2.3622,0>,<0,0,1>,2.3622
TARG/<3.1496,2.3622,0>,<0,0,1>
START ANG=0,END ANG=360
ANGLE VEC=<1,0,0>
DIRECTION=CCW
SHOW FEATURE PARAMETERS=NO
SHOW CONTACT PARAMETERS=NO
CIR4 =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,IN,LEAST_SQR
THEO/<3.1496,2.3622,-0.7874>,<0,0,1>,2.3622
ACTL/<3.1496,2.3622,-0.7874>,<0,0,1>,2.3622
TARG/<3.1496,2.3622,-0.7874>,<0,0,1>
START ANG=0,END ANG=360
ANGLE VEC=<1,0,0>
DIRECTION=CCW
SHOW FEATURE PARAMETERS=NO
SHOW CONTACT PARAMETERS=NO
CIR6 =FEAT/CIRCLE,CARTESIAN,IN,LEAST_SQR,NO
THEO/<3.1496,2.3622,-0.3937>,<0,0,1>,2.3622
ACTL/<3.1496,2.3622,-0.3937>,<0,0,1>,2.3622
CONSTR/CIRCLE,BFRE,2D,ALLHITS("CIR3"),ALLHITS("CIR4"),,
OUTLIER_REMOVAL/OFF,3
FILTER/OFF,UPR=0
  • Thank you, that should work at least for new routines
  • Makes me happy to see everyone geeking out on functions and subroutines... keep it up ya'll...Sunglasses
  • Construct Features Hits Function

    Here is an example on how to use functions to simplify the syntax when typing in the commands for a Constructed Circle from two Auto Circles.

    If you have two Auto Circles named CIR1 and CIR2 then you would have to use the syntax CIR1.HIT[1..CIR1.NUMHITS],CIR2.HIT[1..CIR2.NUMHITS] for the Constructed Circle.

    With this Function example

    ASSIGN/PAR_ALLHITS1=".HIT[1.."
    ASSIGN/PAR_ALLHITS2=".NUMHITS]"
    ASSIGN/ALLHITS=FUNCTION((IDA),(IDA)+PAR_ALLHITS1+(IDA)+PAR_ALLHITS2)

    All you have to type in is ALLHITS("CIR1"),ALLHITS("CIR2")

    Code example
    ASSIGN/PAR_ALLHITS1=".HIT[1.."
    ASSIGN/PAR_ALLHITS2=".NUMHITS]"
    ASSIGN/ALLHITS=FUNCTION((IDA),(IDA)+PAR_ALLHITS1+(IDA)+PAR_ALLHITS2)
    CIR1 =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,IN,LEAST_SQR
    THEO/<4.291,3.5036,0>,<0,0,1>,0.6457
    ACTL/<4.291,3.5036,0>,<0,0,1>,0.6457
    TARG/<4.291,3.5036,0>,<0,0,1>
    START ANG=0,END ANG=360
    ANGLE VEC=<1,0,0>
    DIRECTION=CCW
    SHOW FEATURE PARAMETERS=NO
    SHOW CONTACT PARAMETERS=NO
    CIR2 =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,IN,LEAST_SQR
    THEO/<4.291,3.5036,-0.7874>,<0,0,1>,0.6457
    ACTL/<4.291,3.5036,-0.7874>,<0,0,1>,0.6457
    TARG/<4.291,3.5036,-0.7874>,<0,0,1>
    START ANG=0,END ANG=360
    ANGLE VEC=<1,0,0>
    DIRECTION=CCW
    SHOW FEATURE PARAMETERS=NO
    SHOW CONTACT PARAMETERS=NO
    CIR5 =FEAT/CIRCLE,CARTESIAN,IN,LEAST_SQR,NO
    THEO/<4.291,3.5036,-0.3937>,<0,0,1>,0.6457
    ACTL/<4.291,3.5036,-0.3937>,<0,0,1>,0.6457
    CONSTR/CIRCLE,BFRE,2D,ALLHITS("CIR1"),ALLHITS("CIR2"),,
    OUTLIER_REMOVAL/OFF,3
    FILTER/OFF,UPR=0
    CIR3 =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,IN,LEAST_SQR
    THEO/<3.1496,2.3622,0>,<0,0,1>,2.3622
    ACTL/<3.1496,2.3622,0>,<0,0,1>,2.3622
    TARG/<3.1496,2.3622,0>,<0,0,1>
    START ANG=0,END ANG=360
    ANGLE VEC=<1,0,0>
    DIRECTION=CCW
    SHOW FEATURE PARAMETERS=NO
    SHOW CONTACT PARAMETERS=NO
    CIR4 =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,IN,LEAST_SQR
    THEO/<3.1496,2.3622,-0.7874>,<0,0,1>,2.3622
    ACTL/<3.1496,2.3622,-0.7874>,<0,0,1>,2.3622
    TARG/<3.1496,2.3622,-0.7874>,<0,0,1>
    START ANG=0,END ANG=360
    ANGLE VEC=<1,0,0>
    DIRECTION=CCW
    SHOW FEATURE PARAMETERS=NO
    SHOW CONTACT PARAMETERS=NO
    CIR6 =FEAT/CIRCLE,CARTESIAN,IN,LEAST_SQR,NO
    THEO/<3.1496,2.3622,-0.3937>,<0,0,1>,2.3622
    ACTL/<3.1496,2.3622,-0.3937>,<0,0,1>,2.3622
    CONSTR/CIRCLE,BFRE,2D,ALLHITS("CIR3"),ALLHITS("CIR4"),,
    OUTLIER_REMOVAL/OFF,3
    FILTER/OFF,UPR=0
    


    Hi Dave, how did you attach the codes? it looks good. Slight smile
  • I'm not exactly sure what the problem is... I've checked and rechecked the code and I have it typed in exactly as it's shown here, but I keep getting two error messages as soon as I enter the ALLHITS("CIR3"),ALLHITS("CIR4").

    I'm getting the following errors-

    Math failed for CIR5: Input features not defined earlier.

    and

    Theo math failed for CIR5: Illegal number of input features used
    Meas math failed for CIR5: Illegal number of input features used.

    Am I missing something?

    I've used another method in the past that I found on the forum to take the points from two circles to create one circle where the points are put into a feature set and then a circle is created from the feature set, but this seemed both cleaner and simpler. However... obviously cleaner and simpler isn't advantageous if it doesn't work. I don't know if there's something I'm leaving out (and if I'm leaving something out it's because it's not shown here) or if it's something that's not compatible with the version I'm running 19R1 SP11.
  • DaVe_M,
    Can you post your code so we can take a look at it?
  • See below

    ASSIGN/PAR_ALLHITS1=".HIT[1.."
    ASSIGN/PAR_ALLHITS2=".NUMHITS]"
    ASSIGN/ALLHITS=FUNCTION((IDA),(IDA)+PAR_ALLHITS1+(IDA)+PA R_ALLHITS2)
    MOVE/CLEARPLANE
    CIR3 =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,OUT,LEAST_SQR
    THEO/<0.16,-1.69,-5.804>,<1,0,0>,16.32,0.1
    ACTL/<0.16,-1.69,-5.804>,<1,0,0>,16.32,0.1
    TARG/<0.16,-1.69,-5.804>,<1,0,0>
    START ANG=198.3311,END ANG=339.7178
    ANGLE VEC=<0,0,-1>
    DIRECTION=CCW
    SHOW FEATURE PARAMETERS=NO
    SHOW CONTACT PARAMETERS=YES
    NUMHITS=7,DEPTH=0.1969,PITCH=0
    SAMPLE METHOD=SAMPLE_HITS
    SAMPLE HITS=0,SPACER=0
    AVOIDANCE MOVE=BOTH,DISTANCE=0.3937
    FIND HOLE=DISABLED,ONERROR=NO,READ POS=NO
    SHOW HITS=NO
    MOVE/CLEARPLANE
    CIR4 =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,OUT,LEAST_SQR
    THEO/<0.16,-1.69,-5.804>,<-1,0,0>,16.32,0.1
    ACTL/<0.16,-1.69,-5.804>,<-1,0,0>,16.32,0.1
    TARG/<0.16,-1.69,-5.804>,<-1,0,0>
    START ANG=18.3311,END ANG=159.7178
    ANGLE VEC=<0,0,1>
    DIRECTION=CCW
    SHOW FEATURE PARAMETERS=NO
    SHOW CONTACT PARAMETERS=YES
    NUMHITS=7,DEPTH=0.1969,PITCH=0
    SAMPLE METHOD=SAMPLE_HITS
    SAMPLE HITS=0,SPACER=0
    AVOIDANCE MOVE=BOTH,DISTANCE=0.3937
    FIND HOLE=DISABLED,ONERROR=NO,READ POS=NO
    SHOW HITS=NO
    CIR5 =FEAT/CIRCLE,CARTESIAN,OUT,LEAST_SQR,NO
    THEO/<0,0,0>,<0,0,1>,1
    ACTL/<1.935,-1.69,-5.804>,<0,0,1>,1
    CONSTR/CIRCLE,BFRE,2D,ALLHITS("CIR3"),ALLHITS("CIR4"),,
    OUTLIER_REMOVAL/OFF,3
    FILTER/OFF,UPR=0​​
  • Thank you. I will give a go and let you know my results.
  • Here are the basic instructions to create a Constructed Circle from two circles.


    Code before constructing a constructed Circle.

    PART NAME  : TestGenericFunctions
    REV NUMBER : 1
    SER NUMBER : 20230316
    STATS COUNT : 1
     
    STARTUP    =ALIGNMENT/START,RECALL:USE_PART_SETUP,LIST=YES
                ALIGNMENT/END
                MODE/DCC
                FORMAT/TEXT,OPTIONS, ,HEADINGS,SYMBOLS, ;NOM,TOL,MEAS,DEV,OUTTOL, ,
                LOADPROBE/4BY20_40E_TP20MF_100E
                TIP/T1A0B0, SHANKIJK=0, 0, 1, ANGLE=0
                ASSIGN/PAR_ALLHITS1=".HIT[1.."
                ASSIGN/PAR_ALLHITS2=".NUMHITS]"
                ASSIGN/ALLHITS=FUNCTION((IDA),(IDA)+PAR_ALLHITS1+(IDA)+PAR_ALLHITS2)
    CIR3       =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,OUT,LEAST_SQR
                THEO/<0.16,-1.69,-5.804>,<1,0,0>,16.32,0
                ACTL/<0.16,-1.69,-5.804>,<1,0,0>,16.32,0
                TARG/<0.16,-1.69,-5.804>,<1,0,0>
                START ANG=198.3311,END ANG=339.7178
                ANGLE VEC=<0,0,-1>
                DIRECTION=CCW
                SHOW FEATURE PARAMETERS=YES
                  VOID DETECTION=NO
                  REMEASURE=NO
                  SURFACE=THICKNESS_NONE,0
                  MEASURE MODE=NOMINALS
                  RMEAS=NONE,NONE,NONE
                  AUTO WRIST=NO
                  CIRCULAR MOVES=STRAIGHT
                  GRAPHICAL ANALYSIS=NO
                  FEATURE LOCATOR=NO,NO,""
                SHOW CONTACT PARAMETERS=YES
                  NUMHITS=7,DEPTH=0.1969,PITCH=0
                  SAMPLE METHOD=SAMPLE_HITS
                  SAMPLE HITS=0,SPACER=0
                  AVOIDANCE MOVE=BOTH,DISTANCE=0.3937
                  FIND HOLE=DISABLED,ONERROR=NO,READ POS=NO
                SHOW HITS=NO
    CIR4       =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,OUT,LEAST_SQR
                THEO/<0.16,-1.69,-5.804>,<1,0,0>,16.32,0
                ACTL/<0.16,-1.69,-5.804>,<1,0,0>,16.32,0
                TARG/<0.16,-1.69,-5.804>,<1,0,0>
                START ANG=18.3311,END ANG=159.7178
                ANGLE VEC=<0,0,1>
                DIRECTION=CCW
                SHOW FEATURE PARAMETERS=YES
                  VOID DETECTION=NO
                  REMEASURE=NO
                  SURFACE=THICKNESS_NONE,0
                  MEASURE MODE=NOMINALS
                  RMEAS=NONE,NONE,NONE
                  AUTO WRIST=NO
                  CIRCULAR MOVES=STRAIGHT
                  GRAPHICAL ANALYSIS=NO
                  FEATURE LOCATOR=NO,NO,""
                SHOW CONTACT PARAMETERS=YES
                  NUMHITS=7,DEPTH=0.1969,PITCH=0
                  SAMPLE METHOD=SAMPLE_HITS
                  SAMPLE HITS=0,SPACER=0
                  AVOIDANCE MOVE=BOTH,DISTANCE=0.3937
                  FIND HOLE=DISABLED,ONERROR=NO,READ POS=NO
                SHOW HITS=NO
                WORKPLANE/XPLUS​
    


    After creating the two Auto Circles open the Construct Circle dialog window and select CIR3 in the list of features.
    CIR3 will be highlighted in the Graphics window showing each hit used for CIR3.
    Left mouse click at least 3 hits to create the constructed circle.


    This will be the code for the constructed circle.
    CIR1       =FEAT/CIRCLE,CARTESIAN,OUT,LEAST_SQR,NO
                THEO/<0.3569,-1.69,-5.804>,<1,0,0>,16.32
                ACTL/<0.3569,-1.69,-5.804>,<1,0,0>,16.32
                CONSTR/CIRCLE,BF,2D,CIR3.HIT[1..1],CIR3.HIT[4..4],CIR3.HIT[7..7],,
                OUTLIER_REMOVAL/OFF,3
                FILTER/OFF,UPR=0​
    


    Now edit the CIR3.HIT[1..1] by double left mouse click to highlight the hit and then type in ALLHITS("CIR3"), Hit the Tab key to edit CIR3.HIT[4..4] and type in ALLHITS("CIR4"). Hit the Tap key again and delete the CIR3.HIT[4..4]. As shown in the code below.
    CIR1       =FEAT/CIRCLE,CARTESIAN,OUT,LEAST_SQR,NO
                THEO/<0.3569,-1.69,-5.804>,<1,0,0>,16.32
                ACTL/<0.3569,-1.69,-5.804>,<1,0,0>,16.32
                CONSTR/CIRCLE,BF,2D,ALLHITS("CIR3"),ALLHITS("CIR4"),,
                OUTLIER_REMOVAL/OFF,3
                FILTER/OFF,UPR=0​
    


    Here is the caption of CIR3, CIR4 and CIR1


    Here is the complete code sample.
    PART NAME  : TestGenericFunctions
    REV NUMBER : 1
    SER NUMBER : 20230316
    STATS COUNT : 1
     
    STARTUP    =ALIGNMENT/START,RECALL:USE_PART_SETUP,LIST=YES
                ALIGNMENT/END
                MODE/DCC
                FORMAT/TEXT,OPTIONS, ,HEADINGS,SYMBOLS, ;NOM,TOL,MEAS,DEV,OUTTOL, ,
                LOADPROBE/4BY20_40E_TP20MF_100E
                TIP/T1A0B0, SHANKIJK=0, 0, 1, ANGLE=0
                ASSIGN/PAR_ALLHITS1=".HIT[1.."
                ASSIGN/PAR_ALLHITS2=".NUMHITS]"
                ASSIGN/ALLHITS=FUNCTION((IDA),(IDA)+PAR_ALLHITS1+(IDA)+PAR_ALLHITS2)
    CIR3       =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,OUT,LEAST_SQR
                THEO/<0.16,-1.69,-5.804>,<1,0,0>,16.32,0
                ACTL/<0.16,-1.69,-5.804>,<1,0,0>,16.32,0
                TARG/<0.16,-1.69,-5.804>,<1,0,0>
                START ANG=198.3311,END ANG=339.7178
                ANGLE VEC=<0,0,-1>
                DIRECTION=CCW
                SHOW FEATURE PARAMETERS=YES
                  VOID DETECTION=NO
                  REMEASURE=NO
                  SURFACE=THICKNESS_NONE,0
                  MEASURE MODE=NOMINALS
                  RMEAS=NONE,NONE,NONE
                  AUTO WRIST=NO
                  CIRCULAR MOVES=STRAIGHT
                  GRAPHICAL ANALYSIS=NO
                  FEATURE LOCATOR=NO,NO,""
                SHOW CONTACT PARAMETERS=YES
                  NUMHITS=7,DEPTH=0.1969,PITCH=0
                  SAMPLE METHOD=SAMPLE_HITS
                  SAMPLE HITS=0,SPACER=0
                  AVOIDANCE MOVE=BOTH,DISTANCE=0.3937
                  FIND HOLE=DISABLED,ONERROR=NO,READ POS=NO
                SHOW HITS=NO
    CIR4       =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,OUT,LEAST_SQR
                THEO/<0.16,-1.69,-5.804>,<1,0,0>,16.32,0
                ACTL/<0.16,-1.69,-5.804>,<1,0,0>,16.32,0
                TARG/<0.16,-1.69,-5.804>,<1,0,0>
                START ANG=18.3311,END ANG=159.7178
                ANGLE VEC=<0,0,1>
                DIRECTION=CCW
                SHOW FEATURE PARAMETERS=YES
                  VOID DETECTION=NO
                  REMEASURE=NO
                  SURFACE=THICKNESS_NONE,0
                  MEASURE MODE=NOMINALS
                  RMEAS=NONE,NONE,NONE
                  AUTO WRIST=NO
                  CIRCULAR MOVES=STRAIGHT
                  GRAPHICAL ANALYSIS=NO
                  FEATURE LOCATOR=NO,NO,""
                SHOW CONTACT PARAMETERS=YES
                  NUMHITS=7,DEPTH=0.1969,PITCH=0
                  SAMPLE METHOD=SAMPLE_HITS
                  SAMPLE HITS=0,SPACER=0
                  AVOIDANCE MOVE=BOTH,DISTANCE=0.3937
                  FIND HOLE=DISABLED,ONERROR=NO,READ POS=NO
                SHOW HITS=NO
                WORKPLANE/XPLUS
    CIR1       =FEAT/CIRCLE,CARTESIAN,OUT,LEAST_SQR,NO
                THEO/<0.3569,-1.69,-5.804>,<1,0,0>,16.32
                ACTL/<0.3569,-1.69,-5.804>,<1,0,0>,16.32
                CONSTR/CIRCLE,BF,2D,ALLHITS("CIR3"),ALLHITS("CIR4"),,
                OUTLIER_REMOVAL/OFF,3
                FILTER/OFF,UPR=0​
    
  • Apparently the manner in which the constructed circle is what makes all the difference, because following the methodology that you laid out worked like a charm. Thank you very much for your help.