计量论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[工程参量] tutor星形测头自动测孔子程序

[复制链接]
hzlyblue 发表于 2008-3-28 17:18:43 | 显示全部楼层 |阅读模式
这是一个没有任何参数询问的星形测头自动测孔子程序.该程序已在国内多家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 PROBE  HOLE<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[BL],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[BL]
     ED=EL|dm
     MEMO[BL]|dm=ED-TR*2+RN
     output MEMO[BL]
     move (X=XC,Y=YC,Z=ZC)
   end_for
end_procedure

[ 本帖最后由 hzlyblue 于 2008-3-28 18:32 编辑 ]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|计量论坛 ( 闽ICP备06005787号-1—304所 )
电话:0592-5613810 QQ:473647 微信:gfjlbbs闽公网安备 35020602000072号

GMT+8, 2025-5-5 18:53

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表