hzlyblue 发表于 2008-3-28 17:18:43

tutor星形测头自动测孔子程序

这是一个没有任何参数询问的星形测头自动测孔子程序.该程序已在国内多家TUTOR用户中予以应用.为了表示对BBS参与人员的感谢,现将其完整的源程序公开在此,供大家研究和发展.
procedure STAR4
   real AA=90,DD,C1,C2,NN=0,TT,TR,RN=0
   real XC,YC,ZC,SA=0,EA=360,NX=0,ED
   vector VCIR
   coord XYZ,CCIR,XYZ2,XYZ3,XYZ4,XYZ5,ABC
   integer HEAD,SI,BL,PLXYZ,TIP1,TIPA,TIPB
   element EL
   dy icon "c:\wtutor\dq\kxx.bmp"
   dy ("")
   dy ("")
   dy ("")
   dy ("")
   dy ("")
   dy ("")
   dy ("")
   dy ("NC / STAR PROBEHOLE<4> PROGRAM")
   dy ("")
   fly (off)
   mspeed 100
   no_approach
   BL=info_func (7)
   PLXYZ=info_func (8)
   if PLXYZ eq 3 then
   dy ("=== XY ===")
   end_if
   if PLXYZ eq 1 then
   dy ("=== YZ ===")
   end_if
   if PLXYZ eq 2 then
   dy ("=== ZX ===")
   end_if
   dy ("")
   delay (40)
   for I=1 to 100 by 1
   dist_approach 6.,12.
   manmove
   ncmove
   dist_approach 1.,100.
   HEAD=info_func (2)
   if NN eq 0 then
       probe (HEAD,2)
       get_position (XYZ2)
       probe (HEAD,3)
       get_position (XYZ3)
       probe (HEAD,4)
       get_position (XYZ4)
       probe (HEAD,5)
       get_position (XYZ5)
       if PLXYZ ne 1 then
         if XYZ2|x gt XYZ3|x then
         TIPA=2
         TT=XYZ2|x
         else
         TIPA=3
         TT=XYZ3|x
         end_if
         if XYZ4|x gt TT then
         TIPA=4
         TT=XYZ4|x
         end_if
         if XYZ5|x gt TT then
         TIPA=5
         end_if
         if PLXYZ eq 3 then
         TIP1=TIPA
         else
         TIPB=TIPA
         end_if
       end_if
       if PLXYZ ne 2 then
         if XYZ2|y gt XYZ3|y then
         TIPA=2
         TT=XYZ2|y
         else
         TIPA=3
         TT=XYZ3|y
         end_if
         if XYZ4|y gt TT then
         TIPA=4
         TT=XYZ4|y
         end_if
         if XYZ5|y gt TT then
         TIPA=5
         end_if
         if PLXYZ eq 1 then
         TIP1=TIPA
         else
         TIPB=TIPA
         end_if
       end_if
       if PLXYZ ne 3 then
         if XYZ2|z gt XYZ3|z then
         TIPA=2
         TT=XYZ2|z
         else
         TIPA=3
         TT=XYZ3|z
         end_if
         if XYZ4|z gt TT then
         TIPA=4
         TT=XYZ4|z
         end_if
         if XYZ5|z gt TT then
         TIPA=5
         end_if
         if PLXYZ eq 2 then
         TIP1=TIPA
         else
         TIPB=TIPA
         end_if
       end_if
       if ((TIP1 eq 2) and (TIPB eq 5)) or (TIP1 gt TIPB) then
         NX=1
         if (TIP1 eq 5) and (TIPB eq 2) then
         NX=0
         end_if
       end_if
       NN=1
       for TP=2 to 5 by 1
         probe (HEAD,TP)
         TR=info_func (4)
         RN=RN+TR
       end_for
       RN=RN/2
   end_if
   if NX eq 0 then
       SI=TIP1-1
   else
       SI=TIP1+1
   end_if
   BL=BL+1
   blknb BL
   HEAD=info_func (2)
   output off
   mcir (MEMO,4) savepts
   for K=0 to 3 by 1
       if NX eq 0 then
         SI=SI+1
         if SI gt 5 then
         SI=SI-4
         end_if
       else
         SI=SI-1
         if SI eq 1 then
         SI=SI+4
         end_if
       end_if
       probe (HEAD,SI)
       get_position (XYZ)
       XC=XYZ|x
       YC=XYZ|y
       ZC=XYZ|z
       move (X=XC,Y=YC,Z=ZC)
       C1=0.5*cos (SA+K*AA)
       C2=0.5*sin (SA+K*AA)
       if PLXYZ eq 3 then
         movetf (X=XC+C1,Y=YC+C2,Z=ZC)
       end_if
       if PLXYZ eq 1 then
         movetf (X=XC,Y=YC+C1,Z=ZC+C2)
       end_if
       if PLXYZ eq 2 then
         movetf (X=XC+C2,Y=YC,Z=ZC+C1)
       end_if
   end_for
   TR=info_func (4)
   output on
   EL=MEMO
   ED=EL|dm
   MEMO|dm=ED-TR*2+RN
   output MEMO
   move (X=XC,Y=YC,Z=ZC)
   end_for
end_procedure

[ 本帖最后由 hzlyblue 于 2008-3-28 18:32 编辑 ]
页: [1]
查看完整版本: tutor星形测头自动测孔子程序