只是我到这一步发现程序可能运行不了或位置不对,下面上传整个程序其实下面就是精建坐标系和测量元素了请指教
1.执行一次程序可循环测量3件摆放于不同位置与间距的相同零件尺寸
2.可分析测量数据状态判定是否需要重新测量,与自动列印测量报告
以下附测量程序:
PART NAME : test
REV NUMBER :
SER NUMBER :
STATS COUNT : 1
STARTUP =ALIGNMENT/START,RECALL:, LIST= YES
ALIGNMENT/END
MODE/DCC
LOADPROBE/D120C20
TIP/T1A0B0, SHANKIJK=0, 0, 1, ANGLE=0
ASSIGN/MEASURED_PARTNO = 0
INPUT_MODE =COMMENT/YESNO,是否需要手动确定零件位置? — (输入模式选择)
,"YES"==>>手动依次动建立1~3号零件粗定位坐标
,"NO"==>>测量机将自动测量1~3号零件.
IF/INPUT_MODE.INPUT=="YES"
DO/
ASSIGN/MEASURED(精确的)_PARTNO = MEASURED_PARTNO+1
(初始值为1,依次增加至3)
COMMENT/OPER,"请手动测量["+ MEASURED_PARTNO+"号]零件坐标!"
MODE/MANUAL
PLN1 =FEAT/PLANE,RECT
THEO/111.216,52.835,0,0,0,1
ACTL/111.216,52.835,0,0,0,1
MEAS/PLANE,4
HIT/BASIC,47.162,95.095,0,0,0,1,47.162,95.095,0,USE THEO = YES
HIT/BASIC,44.723,11.876,0,0,0,1,44.723,11.876,0,USE THEO = YES
HIT/BASIC,164.813,10.472,0,0,0,1,164.813,10.472,0,USE THEO = YES
HIT/BASIC,188.165,93.899,0,0,0,1,188.165,93.899,0,USE THEO = YES
ENDMEAS/
LIN1 =FEAT/LINE,RECT,UNBND
THEO/16.887,0,-6.103,1,0,0
ACTL/16.887,0,-6.103,1,0,0
MEAS/LINE,2,WORKPLANE
HIT/BASIC,16.887,0,-6.103,0,-1,0,16.887,0,-6.103,USE THEO = YES
HIT/BASIC,211.372,0,-5.865,0,-1,0,211.372,0,-5.865,USE THEO = YES
ENDMEAS/
PNT1 =FEAT/POINT,RECT
THEO/6.35,24.56,-5.632,-1,0,0
ACTL/6.35,24.56,-5.632,-1,0,0
MEAS/POINT,1
HIT/BASIC,6.35,24.56,-5.632,-1,0,0,6.35,24.56,-5.632,USE THEO = YES
ENDMEAS/
A1 =ALIGNMENT/START,RECALL:STARTUP, LIST= YES
ALIGNMENT/LEVEL,ZPLUS,PLN1
ALIGNMENT/ROTATE,XPLUS,TO,LIN1,ABOUT,ZPLUS
ALIGNMENT/TRANS,XAXIS,PNT1
ALIGNMENT/TRANS,YAXIS,LIN1
ALIGNMENT/TRANS,ZAXIS,PLN1
ALIGNMENT/END
SELECT/MEASURED_PARTNO
CASE/1
SAVE/ALIGNMENT,A1,Part1_ali.aln,MACHINETOPARTS
END_CASE/
CASE/2
SAVE/ALIGNMENT,A1,Part2_ali.aln,MACHINETOPARTS
END_CASE/
CASE/3
SAVE/ALIGNMENT,A1,Part3_ali.aln,MACHINETOPARTS
END_CASE/
END_SELECT/
UNTIL/MEASURED_PARTNO==3 (表达式比较真假 执行循环)
END_IF
(以上为手动粗建坐标系,根据需求依次测量3个工件)
ASSIGN/MEASURED_PARTNO = 0 (重新赋值)
DO/
ASSIGN /MEASURED_PARTNO = MEASURED_PARTNO+1
SELECT/MEASURED_PARTNO
CASE/1
RECALL/ALIGNMENT,EXTERNAL,a1,PART1_ALI:a1
SAVE/ALIGNMENT,PART_DCCALI,Part_dccAli.aln,MACHINETOPARTS
END_CASE/
CASE/2
RECALL/ALIGNMENT,EXTERNAL,a1,PART2_ALI:a1
SAVE/ALIGNMENT,PART_DCCALI,Part_dccAli.aln,MACHINETOPARTS
END_CASE/
CASE/3
RECALL/ALIGNMENT,EXTERNAL,a1,PART3_ALI:a1
SAVE/ALIGNMENT,PART_DCCALI,Part_dccAli.aln,MACHINETOPARTS
(以上标记红色部分坐标系文件名相同,被覆盖了)
END_CASE/
END_SELECT/
MODE/DCC
RECALL/ALIGNMENT,EXTERNAL,part_dccali,PART_DCCALI:part_dccali
(此处回调的是手动建立的3号工件坐标系位置吗??)
(以下为自动建立坐标系过程)
CLEARP/ZPLUS,15,ZPLUS,0
PLN2 =FEAT/PLANE,RECT
THEO/111.216,52.835,0,0,0,1
ACTL/111.216,52.835,0,0,0,1
MEAS/PLANE,4
MOVE/CLEARPLANE
HIT/BASIC,47.162,95.095,0,0,0,1,47.162,95.095,0,USE THEO = YES
HIT/BASIC,44.723,11.876,0,0,0,1,44.723,11.876,0,USE THEO = YES
HIT/BASIC,164.813,10.472,0,0,0,1,164.813,10.472,0,USE THEO = YES
HIT/BASIC,188.165,93.899,0,0,0,1,188.165,93.899,0,USE THEO = YES
ENDMEAS/
LIN2 =FEAT/LINE,RECT,UNBND
THEO/16.887,0,-6.103,1,0,0
ACTL/16.887,0,-6.103,1,0,0
MEAS/LINE,2,WORKPLANE
MOVE/CLEARPLANE
HIT/BASIC,16.887,0,-6.103,0,-1,0,16.887,0,-6.103,USE THEO = YES
HIT/BASIC,211.372,0,-5.865,0,-1,0,211.372,0,-5.865,USE THEO = YES
ENDMEAS/
PNT2 =FEAT/POINT,RECT
THEO/6.35,24.56,-5.632,-1,0,0
ACTL/6.35,24.56,-5.632,-1,0,0
MEAS/POINT,1
MOVE/CLEARPLANE
HIT/BASIC,6.35,24.56,-5.632,-1,0,0,6.35,24.56,-5.632,USE THEO = YES
ENDMEAS/
A2 =ALIGNMENT/START,RECALL:STARTUP, LIST= YES
ALIGNMENT/LEVEL,ZPLUS,PLN2
ALIGNMENT/ROTATE,XPLUS,TO,LIN2,ABOUT,ZPLUS
ALIGNMENT/TRANS,XAXIS,PNT2
ALIGNMENT/TRANS,YAXIS,LIN2
ALIGNMENT/TRANS,ZAXIS,PLN2
ALIGNMENT/END
MOVE/CLEARPLANE
CIR1 =AUTO/CIRCLE, SHOWALLPARAMS=NO, SHOWHITS=YES
THEO/19.049,25.4,-3,0,0,1,25.4
ACTL/19.049,25.4,-3,0,0,1,25.4
TARG/19.049,25.4,-3,0,0,1
MEAS/CIRCLE
HIT/BASIC,31.749,25.4,-3,-1,0,0,31.749,25.4,-3
HIT/BASIC,19.049,38.1,-3,0,-1,0,19.049,38.1,-3
HIT/BASIC,6.349,25.4,-3,1,0,0,6.349,25.4,-3
HIT/BASIC,19.049,12.7,-3,0,1,0,19.049,12.7,-3
ENDMEAS/
MOVE/CLEARPLANE
CIR2 =AUTO/CIRCLE, SHOWALLPARAMS=NO, SHOWHITS=YES
THEO/19.049,76.2,-3,0,0,1,25.4
ACTL/19.049,76.2,-3,0,0,1,25.4
TARG/19.049,76.2,-3,0,0,1
MEAS/CIRCLE
HIT/BASIC,31.749,76.2,-3,-1,0,0,31.749,76.2,-3
HIT/BASIC,19.049,88.9,-3,0,-1,0,19.049,88.9,-3
HIT/BASIC,6.349,76.2,-3,1,0,0,6.349,76.2,-3
HIT/BASIC,19.049,63.5,-3,0,1,0,19.049,63.5,-3
ENDMEAS/
DIM LOC1= LOCATION OF CIRCLE CIR1 UNITS=MM ,$
GRAPH=OFF TEXT=OFF MULT=1.00 OUTPUT=BOTH
AX NOMINAL +TOL -TOL MEAS MAX MIN DEV OUTTOL
X 19.049 0.000 0.000 19.049 31.749 6.349 0.000 0.000 ----#----
Y 25.400 0.000 0.000 25.400 38.100 12.700 0.000 0.000 ----#----
D 25.400 0.000 0.000 25.400 25.400 25.400 0.000 0.000 ----#----
END OF DIMENSION LOC1
DIMINFO/LOC1;DIMID,FEATID;HEADINGS,GRAPH AXIS;MEAS, , , , , , , , ,$
X,Y,D, , , , , , , , , , , , , ,
DIM LOC2= LOCATION OF CIRCLE CIR2 UNITS=MM ,$
GRAPH=OFF TEXT=OFF MULT=1.00 OUTPUT=BOTH
AX NOMINAL +TOL -TOL MEAS MAX MIN DEV OUTTOL
X 19.049 0.000 0.000 19.049 31.749 6.349 0.000 0.000 ----#----
Y 76.200 0.000 0.000 76.200 88.900 63.500 0.000 0.000 ----#----
D 25.400 0.000 0.000 25.400 25.400 25.400 0.000 0.000 ----#----
END OF DIMENSION LOC2
DIMINFO/LOC2;DIMID,FEATID;HEADINGS,GRAPH AXIS;MEAS, , , , , , , , ,$
X,Y,D, , , , , , , , , , , , , ,
ASSIGN/MEASURED_CIR1 = 0
ASSIGN/MEASURED_CIR2 = 0
ASSIGN/MEASURED_INFO = 0
ASSIGN/REPORT_BL = 0
IF/LOC1.X.OUTTOL<>0 OR LOC1.Y.OUTTOL<>0 OR LOC1.D.OUTTOL<>0
ASSIGN/MEASURED_CIR1 = 1
ASSIGN/MEASURED_INFO = "[CIR1]"
END_IF/
IF/LOC2.X.OUTTOL<>0 OR LOC2.Y.OUTTOL<>0 OR LOC2.D.OUTTOL<>0
ASSIGN/MEASURED_CIR2 = 1
ASSIGN/MEASURED_INFO = MEASURED_INFO +"[CIR2]"
END_IF/
IF/MEASURED_CIR1=1 OR MEASURED_CIR2=1
MEASURED_MODE =COMMENT/YESNO,"测量["+MEASURED_PARTNO+"号]零件发现:"
,“{” + MEASURED_INFO “}尺寸超差”
,“请选择是否重新测量[”+MEASURED_PARTNO+"号]零件"
,""YES"==>将重新测量"
,""NO"==>将列印此件报告并继续测量下一件零件"
IF/MEASURED_MODE.INPUT=="YES"
ASSIGN/MEASURED_PARTNO = MEASURED_PARTNO-1
END_IF/
ELSE/
ASSIGN/REPORT_BL = 1
END_ELSE/
END_IF/
ELSE/
ASSIGN/REPORT_BL = 1
END_ELSE/
IF/REPORT_BL==0
PRINT/REPORT,TO_FILE=ON,AUTO=1,$
TO_PRINTER=ON,DRAFTMODE=ON,$
PREVIOUS_RUNS=DELETE_INSTANCES
END_IF/
UNTIL/MEASURED_PARTNO==3