hexagon logo

Alignment in Subroutine Not Working

Hi All,

I've worked with subroutines a bit before, but so far mostly to put math stuff in one place out of the main program. Today I'm working on writing an external subroutine to measure a threaded hole using something like this: < https://www.pcdmisforum.com/forum/pc...ion-of-threads>. I think this might be my first subroutine that I've actually tried to measure features in.

My first step in the subroutine is to create an alignment directly over the hole, which vastly simplifies the feature programming. However, PC-DMIS is not using the alignment properly. Move points move the machine relative to the alignment as I would expect; however, it is trying to probe all of my measured features as if they were at the CAD origin rather than at the center of my alignment!

Here is my subroutine code so far:


SUBROUTINE/THREADSCANNER,
POSITION = : POSITION OF HOLE IN ACTIVE ALIGNMENT,
DIRECTION = : DIRECTION VECTOR (POINTING STRAIGHT OUT OF HOLE) IN ACTIVE ALIGNMENT,
ORIENTATION = : VECTOR NORMAL TO DIRECTION, POINTING TO SIDE TO VERTICALLY SCAN,
MINOR_DIA = : NOMINAL MINOR DIAMETER OF HOLE,
MAX_DEPTH = : DEPTH TO START VERTICAL SCAN AT (MUST BE AT LEAST 2*PITCH BELOW TOP),
PITCH = : PITCH OF THREAD,
SCAN_REVS = : NUMBER OF REVOLUTIONS TO SPIRAL SCAN (MUST FIT WITHIN HOLE),
MOVESPD = : SPEED DURING MOTION,
RADIAL_DISTANCE_TOL = 0.001 : POINTS WITHIN THIS DISTANCE FROM HIGH POINT WILL BE CONSIDERED ON THE CREST,
MIN_CREST_TOL = 0.125 : MINIMUM ACCEPTABLE CREST WIDTH AS A PERCENTAGE OF PITCH,
MAX_CREST_TOL = 0.375 : MAXIMUM ACCEPTABLE CREST WIDTH AS A PERCENTAGE OF PITCH,
=
$$ NO,
**WARNING: THIS WILL MOVE THE MACHINE!!!**
If you type in dumb numbers, it will do dumb things.
Also, make sure your tip angle is right.
ACCELERATION/MAXACCELX=250, MAXACCELY=250, MAXACCELZ=250
MOVESPEED/ MOVESPD
$$ NO,
Align to hole, move to top
POSITION_POINT=GENERIC/POINT,DEPENDENT,CARTESIAN,$
NOM/XYZ,<POSITION.X,POSITION.Y,POSITION.Z>,$
MEAS/XYZ,<POSITION.X,POSITION.Y,POSITION.Z>,$
NOM/IJK,<DIRECTION.X,DIRECTION.Y,DIRECTION.Z>,$
MEAS/IJK,<DIRECTION.X,DIRECTION.Y,DIRECTION.Z>
ORIENTATION_LINE=GENERIC/LINE,DEPENDENT,CARTESIAN,$
NOM/XYZ,<POSITION.X,POSITION.Y,POSITION.Z>,$
MEAS/XYZ,<POSITION.X,POSITION.Y,POSITION.Z>,$
NOM/IJK,<ORIENTATION.X,ORIENTATION.Y,ORIENTATION.Z>,$
MEAS/IJK,<ORIENTATION.X,ORIENTATION.Y,ORIENTATION.Z>,$
DISTANCE/1,1
[COLOR=#2980b9]HOLE_ALIGNMENT=ALIGNMENT/START,RECALL:STARTUP,LIST=YES
ALIGNMENT/LEVEL,ZPLUS,POSITION_POINT
ALIGNMENT/ROTATE,XPLUS,TO,ORIENTATION_LINE,ABOUT,ZPLUS
ALIGNMENT/TRANS,XAXIS,POSITION_POINT
ALIGNMENT/TRANS,YAXIS,POSITION_POINT
ALIGNMENT/TRANS,ZAXIS,POSITION_POINT
ALIGNMENT/END[/COLOR]
[COLOR=#27ae60]MOVE/POINT,NORMAL,<0,0,0>
MOVE/POINT,NORMAL,<0,0,0.1>
MOVE/POINT,NORMAL,<0.05,0,0>
MOVE/POINT,NORMAL,<0,0,0>
MOVE/INCREMENT,<0,0,0.1>
MOVE/INCREMENT,<0.1,0,0>[/COLOR]
[COLOR=#e74c3c]TEST_MEAS_POINT=FEAT/POINT,CARTESIAN
THEO/<0,0,0>,<0,0,1>
ACTL/<0,0,0>,<0,0,1>
MEAS/POINT,1,WORKPLANE
HIT/BASIC,NORMAL,<0,0,0>,<0,0,1>,<0,0,0>,USE THEO=YES
ENDMEAS/[/COLOR]
[COLOR=#e74c3c]TEST_POINT =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
THEO/<0,0,0>,<0,0,1>
ACTL/<0,0,0>,<0,0,1>
TARG/<0,0,0>,<0,0,1>
SNAP=NO
SHOW FEATURE PARAMETERS=NO
SHOW CONTACT PARAMETERS=YES
AVOIDANCE MOVE=NO,DISTANCE=0.4
SHOW HITS=NO[/COLOR]
$$ NO,
Set scanning options to take ~1 second with 100 points, make vertical scan
ASSIGN/VERTICAL_SCAN_LENGTH=PITCH*2
ASSIGN/VERTICAL_SCAN_LENGTH_MM=VERTICAL_SCAN_LENGTH*25.4
SCANSPEED/VERTICAL_SCAN_LENGTH_MM
OPTIONPROBE/MAXFORCE=0.36,LOWFORCE=0.06,UPPERFORCE=0.18,TRIGGE RFORCE=0.06,
PROBEACCURACY=0.1,POSACCURACY=0.1,#RETURNDATA=7,
RETURNSPEED=1,SCANPNTDENSITY=100/VERTICAL_SCAN_LENGTH_MM,
SCANACCELERATION=10,SCANOFFSETFORCE=0.06,
PROBINGMODE=DFL,MANFINEPROBING=NO
PREHIT/MINOR_DIA/2
RETRACT/MINOR_DIA/2
TOUCHSPEED/ 1
[COLOR=#e74c3c]VERT_LINE_SCAN=BASICSCAN/LINE,NUMBER OF HITS=2,SHOW HITS=YES,SHOWALLPARAMS=YES
<MINOR_DIA/2,0,-MAX_DEPTH>,<MINOR_DIA/2,0,-MAX_DEPTH+VERTICAL_SCAN_LENGTH>,CutVec=0,1,0,DirVe c=0,0,1
InitVec=-1,0,0,EndVec=-1,0,0,THICKNESS=0,PROBECOMP=YES,AVOIDANCE MOVE=NO,DISTANCE=0
FILTER/NULLFILTER,
EXEC MODE=DEFINED
BOUNDARY/PLANE,<0,0,0>,PlaneVec=0,0,-1,Crossings=1
HITTYPE/VECTOR
NOMS MODE=NOM,0.05
HIT/VECTOR,<0,0,0>,<-1,0,0>,<0,0,0>,T=0
HIT/VECTOR,<0,0,0>,<-1,0,0>,<0,0,0>,T=0
ENDSCAN[/COLOR]
ENDSUB/



The move points in green work, both in simulation and on the machine; the features in red do not work in either simulation or reality (or at least, the first one doesn't in reality; I didn't let it bury itself in my part just to test the next two Slight smile ). Here's the code I'm calling it with, if that helps:


MOVE/CLEARPLANE
MILL_MILL_1=CALLSUB/THREADSCANNER,"THREAD_SCANNER":MPOINT(-0.15,0.375,0),MPOINT(0,0,1),MPOINT(0,1,0),0.07,0.0 5,1/56,1,20,,



This is preceded by manual, rough, and finish alignments which I can post as well if that would be helpful.

Does anyone know why my alignment might work for movements but not for measurements, or how I can fix it so it works for both?

Thank you,
Matthew
Parents
  • continued....

    $$ NO,
                _____________________________________________________________________________________________
    
                By: Kp61dude!
                Create date: 01-13-2020
    
                Description:
                inputs- X, Y, Z, I, J, K                     0
                return- creates 4 auto vector points at each | location in a patter similar to below.
                Patter origin at [S] defined by inputs.      *
    
    
                                                  [S] 
                                                   0
                                                   |
                                                   *
                                       qqqqqqqqqqqqqqqqqqqqqqqqp
                                    pqpwffffffffffffffffffffffvkpp
                                   qqpwwwwwwwwwwwwwwwwwwwwwwwwwwvqp
                                   qgvwwwwwwwwwwwwwwwwwwwwwwwwwwwqqp
                                   qpwwwwwwwwwwwwwwwwwwwwwwwwwwwwqqp
                                   qpwwwwwwwwwwwulgggljwwwwwwwwwwqqp
                                   qpwwwwwwwwwgqp     qgpwwwwwwwwqqp
                                   qpwwwwwwwukp         qpwwwwwwwqqp
                               0-* qpwwwwwwwwqb         qqjwwwwwwqqp *-0
                                   qpwwwwwwwqq          qqbwwwwwwqqp
                                   qpwwwwwwwwqp         qpvwwwwwwqqp
                                   qpwwwwwwwwdqp       qgvwwwwwwwqqp
                                   qpwwwwwwwwwdmpgjjyqmkvwwwwwwwwqqp
                                   qpwwwwwwwwwwwvvvvvvvwwwwwwwwwwqqp          0
                                  jqpwwwwwwwwwwwwwwwwwwwwwwwwwwwwvqp          |
                                 jqpvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwqqpj        *
                qggqggqggqggqggqgmmhwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwhmbqggqggqggqggqggqgg
                mmmmmmmmmmmmmmmmvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwvmmmmmmmmmmmmmmmmmm
                wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
                wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
                wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
                _____________________________________________________________________________________________
    
                SUBROUTINE/CREATE_POINT_PATTERN,
                    I_X = 0 : ,
                    I_Y = 0 : ,
                    I_Z = 0 : ,
                    I_I = 0 : ,
                    I_J = 0 : ,
                    I_K = 0 : ,
                     = 
    $$ NO,
    
    
    
    
    
    
                ASSIGN/DEBUG=1
    $$ NO,
    
    
    
    
    
    
                IF/DEBUG
                  ASSIGN/LOG_FILE="C:\users\public\documents\wai\pc-dmis\2015.1\DEBUG_LOG.TXT"
      $$ NO,
                  clears old contents
    FPTR         =FILE/OPEN,LOG_FILE,WRITE
                  FILE/WRITELINE,FPTR,"Started: " + SYSTEMTIME("hh:mm:ss tt") + ", " + SYSTEMDATE("MM'/'dd'/'yyyy")
                  FILE/CLOSE,FPTR,KEEP
                END_IF/
                ASSIGN/POS=MPOINT(I_X,I_Y,I_Z)
                ASSIGN/POSIJK.XYZ=MPOINT(I_I,I_J,I_K)
                IF/DEBUG
    FPTR         =FILE/OPEN,LOG_FILE,APPEND
                  FILE/WRITELINE,FPTR,"*********************************************"
                  FILE/WRITELINE,FPTR,"individual XYZ : " +  POS.XYZ
                  FILE/WRITELINE,FPTR,"individual IJK : " +  POSIJK.XYZ
                  FILE/WRITELINE,FPTR,"_____________________________________________"
                  FILE/CLOSE,FPTR,KEEP
                END_IF/
                IF/POS.XYZ == 0 AND POSIJK.XYZ == 0
                  COMMENT/OPER,NO,FULL SCREEN=NO,AUTO-CONTINUE=NO,
                  Subroutine: SUB_BLOCK
                  ERROR: cannnot pass null.
                GOTO/SUB_RET
                END_IF/
                IF/DEBUG
    FPTR         =FILE/OPEN,LOG_FILE,APPEND
                  FILE/WRITELINE,FPTR,"*********************************************"
                  FILE/WRITELINE,FPTR,"Information about point SB1:"
                  FILE/WRITELINE,FPTR,"XYZ: " + SB1.XYZ
                  FILE/WRITELINE,FPTR,"IJK: " + SB1.IJK
                  FILE/WRITELINE,FPTR,"_____________________________________________"
                  FILE/CLOSE,FPTR,KEEP
                END_IF/
    SB1        =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
                THEO/<POS.X+0,POS.Y+0,POS.Z+0>,<I_I+0,I_J+0,I_K+0>
                ACTL/<0.0295,0,-0.0295>,<0.0001264,-0.0000672,1>
                TARG/<POS.X+0,POS.Y+0,POS.Z+0>,<I_I+0,I_J+0,I_K+0>
                SHOW FEATURE PARAMETERS=NO
                SHOW CONTACT PARAMETERS=YES
                  AVOIDANCE MOVE=NO,DISTANCE=0.3937
                SHOW HITS=NO
                MOVE/POINT,NORMAL,<,,0.1500>
    $$ NO,
    
    
    
    
                ASSIGN/PASS_I=FORMAT("%.6f", I_I)
                ASSIGN/PASS_J=FORMAT("%.6f", I_J)
                ASSIGN/IANG=0
                IF/DEBUG
    FPTR         =FILE/OPEN,LOG_FILE,APPEND
                  FILE/WRITELINE,FPTR,"*********************************************"
                  FILE/WRITELINE,FPTR,"BEFORE"
                  FILE/WRITELINE,FPTR,"formated: " + FORMAT("%.20f", PASS_I)
                  FILE/WRITELINE,FPTR,"formated: " + FORMAT("%.20f", PASS_J)
                  FILE/WRITELINE,FPTR,"returned ang: " + IANG + " <<<<<<"
                  FILE/WRITELINE,FPTR,"        main sub        "
                  FILE/WRITELINE,FPTR,"_____________________________________________"
                  FILE/CLOSE,FPTR,KEEP
                END_IF/
    TODANGLE   =CALLSUB/ANG_FROM_IJ,:PASS_I,PASS_J,IANG,,,
                IF/DEBUG
    FPTR         =FILE/OPEN,LOG_FILE,APPEND
                  FILE/WRITELINE,FPTR,"*********************************************"
                  FILE/WRITELINE,FPTR,"AFTER"
                  FILE/WRITELINE,FPTR,"formated: " + FORMAT("%.20f", PASS_I)
                  FILE/WRITELINE,FPTR,"formated: " + FORMAT("%.20f", PASS_J)
                  FILE/WRITELINE,FPTR,"returned ang: " + IANG + " <<<<<<"
                  FILE/WRITELINE,FPTR,"        main sub        "
                  FILE/WRITELINE,FPTR,"_____________________________________________"
                  FILE/CLOSE,FPTR,KEEP
                END_IF/
                ASSIGN/TARGPNTX=SB1.X -.14
                ASSIGN/TARGPNTY=SB1.Y - .25
                ASSIGN/IANG=DEG2RAD(IANG)
                ASSIGN/ROTATEDX=COS(IANG) * (TARGPNTX - SB1.X) - SIN(IANG) * (TARGPNTY - SB1.Y) + SB1.X
                ASSIGN/ROTATEDY=SIN(IANG) * (TARGPNTX - SB1.X) + COS(IANG) * (TARGPNTY - SB1.Y) + SB1.Y
                IF/DEBUG
    FPTR         =FILE/OPEN,LOG_FILE,APPEND
                  FILE/WRITELINE,FPTR,"*********************************************"
                  FILE/WRITELINE,FPTR,"information for point: SB2"
                  FILE/WRITELINE,FPTR,"Point targs X: " + TARGPNTX
                  FILE/WRITELINE,FPTR,"Point targs Y: " + TARGPNTY
                  FILE/WRITELINE,FPTR,"Point rotated X: " + ROTATEDX
                  FILE/WRITELINE,FPTR,"Point rotated Y: " + ROTATEDY
                  FILE/WRITELINE,FPTR,"_____________________________________________"
                  FILE/CLOSE,FPTR,KEEP
                END_IF/
    SB2        =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
                THEO/<ROTATEDX,ROTATEDY,SB1.Z>,<SB1.I,SB1.J,SB1.K>
                ACTL/<-0.1356,-0.2524,0>,<1,0,0>
                TARG/<ROTATEDX,ROTATEDY,SB1.Z>,<SB1.I,SB1.J,SB1.K>
                SHOW FEATURE PARAMETERS=NO
                SHOW CONTACT PARAMETERS=YES
                  AVOIDANCE MOVE=NO,DISTANCE=0.3937
                SHOW HITS=NO
    
    
Reply
  • continued....

    $$ NO,
                _____________________________________________________________________________________________
    
                By: Kp61dude!
                Create date: 01-13-2020
    
                Description:
                inputs- X, Y, Z, I, J, K                     0
                return- creates 4 auto vector points at each | location in a patter similar to below.
                Patter origin at [S] defined by inputs.      *
    
    
                                                  [S] 
                                                   0
                                                   |
                                                   *
                                       qqqqqqqqqqqqqqqqqqqqqqqqp
                                    pqpwffffffffffffffffffffffvkpp
                                   qqpwwwwwwwwwwwwwwwwwwwwwwwwwwvqp
                                   qgvwwwwwwwwwwwwwwwwwwwwwwwwwwwqqp
                                   qpwwwwwwwwwwwwwwwwwwwwwwwwwwwwqqp
                                   qpwwwwwwwwwwwulgggljwwwwwwwwwwqqp
                                   qpwwwwwwwwwgqp     qgpwwwwwwwwqqp
                                   qpwwwwwwwukp         qpwwwwwwwqqp
                               0-* qpwwwwwwwwqb         qqjwwwwwwqqp *-0
                                   qpwwwwwwwqq          qqbwwwwwwqqp
                                   qpwwwwwwwwqp         qpvwwwwwwqqp
                                   qpwwwwwwwwdqp       qgvwwwwwwwqqp
                                   qpwwwwwwwwwdmpgjjyqmkvwwwwwwwwqqp
                                   qpwwwwwwwwwwwvvvvvvvwwwwwwwwwwqqp          0
                                  jqpwwwwwwwwwwwwwwwwwwwwwwwwwwwwvqp          |
                                 jqpvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwqqpj        *
                qggqggqggqggqggqgmmhwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwhmbqggqggqggqggqggqgg
                mmmmmmmmmmmmmmmmvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwvmmmmmmmmmmmmmmmmmm
                wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
                wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
                wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
                _____________________________________________________________________________________________
    
                SUBROUTINE/CREATE_POINT_PATTERN,
                    I_X = 0 : ,
                    I_Y = 0 : ,
                    I_Z = 0 : ,
                    I_I = 0 : ,
                    I_J = 0 : ,
                    I_K = 0 : ,
                     = 
    $$ NO,
    
    
    
    
    
    
                ASSIGN/DEBUG=1
    $$ NO,
    
    
    
    
    
    
                IF/DEBUG
                  ASSIGN/LOG_FILE="C:\users\public\documents\wai\pc-dmis\2015.1\DEBUG_LOG.TXT"
      $$ NO,
                  clears old contents
    FPTR         =FILE/OPEN,LOG_FILE,WRITE
                  FILE/WRITELINE,FPTR,"Started: " + SYSTEMTIME("hh:mm:ss tt") + ", " + SYSTEMDATE("MM'/'dd'/'yyyy")
                  FILE/CLOSE,FPTR,KEEP
                END_IF/
                ASSIGN/POS=MPOINT(I_X,I_Y,I_Z)
                ASSIGN/POSIJK.XYZ=MPOINT(I_I,I_J,I_K)
                IF/DEBUG
    FPTR         =FILE/OPEN,LOG_FILE,APPEND
                  FILE/WRITELINE,FPTR,"*********************************************"
                  FILE/WRITELINE,FPTR,"individual XYZ : " +  POS.XYZ
                  FILE/WRITELINE,FPTR,"individual IJK : " +  POSIJK.XYZ
                  FILE/WRITELINE,FPTR,"_____________________________________________"
                  FILE/CLOSE,FPTR,KEEP
                END_IF/
                IF/POS.XYZ == 0 AND POSIJK.XYZ == 0
                  COMMENT/OPER,NO,FULL SCREEN=NO,AUTO-CONTINUE=NO,
                  Subroutine: SUB_BLOCK
                  ERROR: cannnot pass null.
                GOTO/SUB_RET
                END_IF/
                IF/DEBUG
    FPTR         =FILE/OPEN,LOG_FILE,APPEND
                  FILE/WRITELINE,FPTR,"*********************************************"
                  FILE/WRITELINE,FPTR,"Information about point SB1:"
                  FILE/WRITELINE,FPTR,"XYZ: " + SB1.XYZ
                  FILE/WRITELINE,FPTR,"IJK: " + SB1.IJK
                  FILE/WRITELINE,FPTR,"_____________________________________________"
                  FILE/CLOSE,FPTR,KEEP
                END_IF/
    SB1        =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
                THEO/<POS.X+0,POS.Y+0,POS.Z+0>,<I_I+0,I_J+0,I_K+0>
                ACTL/<0.0295,0,-0.0295>,<0.0001264,-0.0000672,1>
                TARG/<POS.X+0,POS.Y+0,POS.Z+0>,<I_I+0,I_J+0,I_K+0>
                SHOW FEATURE PARAMETERS=NO
                SHOW CONTACT PARAMETERS=YES
                  AVOIDANCE MOVE=NO,DISTANCE=0.3937
                SHOW HITS=NO
                MOVE/POINT,NORMAL,<,,0.1500>
    $$ NO,
    
    
    
    
                ASSIGN/PASS_I=FORMAT("%.6f", I_I)
                ASSIGN/PASS_J=FORMAT("%.6f", I_J)
                ASSIGN/IANG=0
                IF/DEBUG
    FPTR         =FILE/OPEN,LOG_FILE,APPEND
                  FILE/WRITELINE,FPTR,"*********************************************"
                  FILE/WRITELINE,FPTR,"BEFORE"
                  FILE/WRITELINE,FPTR,"formated: " + FORMAT("%.20f", PASS_I)
                  FILE/WRITELINE,FPTR,"formated: " + FORMAT("%.20f", PASS_J)
                  FILE/WRITELINE,FPTR,"returned ang: " + IANG + " <<<<<<"
                  FILE/WRITELINE,FPTR,"        main sub        "
                  FILE/WRITELINE,FPTR,"_____________________________________________"
                  FILE/CLOSE,FPTR,KEEP
                END_IF/
    TODANGLE   =CALLSUB/ANG_FROM_IJ,:PASS_I,PASS_J,IANG,,,
                IF/DEBUG
    FPTR         =FILE/OPEN,LOG_FILE,APPEND
                  FILE/WRITELINE,FPTR,"*********************************************"
                  FILE/WRITELINE,FPTR,"AFTER"
                  FILE/WRITELINE,FPTR,"formated: " + FORMAT("%.20f", PASS_I)
                  FILE/WRITELINE,FPTR,"formated: " + FORMAT("%.20f", PASS_J)
                  FILE/WRITELINE,FPTR,"returned ang: " + IANG + " <<<<<<"
                  FILE/WRITELINE,FPTR,"        main sub        "
                  FILE/WRITELINE,FPTR,"_____________________________________________"
                  FILE/CLOSE,FPTR,KEEP
                END_IF/
                ASSIGN/TARGPNTX=SB1.X -.14
                ASSIGN/TARGPNTY=SB1.Y - .25
                ASSIGN/IANG=DEG2RAD(IANG)
                ASSIGN/ROTATEDX=COS(IANG) * (TARGPNTX - SB1.X) - SIN(IANG) * (TARGPNTY - SB1.Y) + SB1.X
                ASSIGN/ROTATEDY=SIN(IANG) * (TARGPNTX - SB1.X) + COS(IANG) * (TARGPNTY - SB1.Y) + SB1.Y
                IF/DEBUG
    FPTR         =FILE/OPEN,LOG_FILE,APPEND
                  FILE/WRITELINE,FPTR,"*********************************************"
                  FILE/WRITELINE,FPTR,"information for point: SB2"
                  FILE/WRITELINE,FPTR,"Point targs X: " + TARGPNTX
                  FILE/WRITELINE,FPTR,"Point targs Y: " + TARGPNTY
                  FILE/WRITELINE,FPTR,"Point rotated X: " + ROTATEDX
                  FILE/WRITELINE,FPTR,"Point rotated Y: " + ROTATEDY
                  FILE/WRITELINE,FPTR,"_____________________________________________"
                  FILE/CLOSE,FPTR,KEEP
                END_IF/
    SB2        =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
                THEO/<ROTATEDX,ROTATEDY,SB1.Z>,<SB1.I,SB1.J,SB1.K>
                ACTL/<-0.1356,-0.2524,0>,<1,0,0>
                TARG/<ROTATEDX,ROTATEDY,SB1.Z>,<SB1.I,SB1.J,SB1.K>
                SHOW FEATURE PARAMETERS=NO
                SHOW CONTACT PARAMETERS=YES
                  AVOIDANCE MOVE=NO,DISTANCE=0.3937
                SHOW HITS=NO
    
    
Children
No Data