该栏目11月15日决定正式开通,欢迎大家积极参与。我先发表一个“傻瓜”式小程序段【NCHOLE】,作为开张吧!该程序用于半自动测孔,是对TUTOR功能的一种补充。为了考虑新手的学习,我将它编成即是一个独立的测量程序,又是一个子程序,会哪种应用方式都行。大家可以试一下。首次运行要注意安全!
程序没有任何参数询问,但程序运行之前要在测量页面上选择好投影平面“XY/YZ/ZX”,然后,将测头移动到孔的大致中心位置即可执行CNC方式了。里面有哪些编程技巧,请大家分析一下。源程序附后:
program NSD[WM1,WM2]
  element_array MEMO[300]
  NCHO4
endstat 
  procedure NCHO4
    real C1,C2
    real XC,YC,ZC,SA=0,EA=360
    coord XYZ
    integer PLXYZ,HEAD,TIP,BL
!    dy icon "c:\wtutor\dq\k00.bmp"
    dy ("")
    dy ("")
    dy ("")
    dy ("")
    dy ("")
    dy ("")
    dy ("")
    dy ("NC / HOLE<4> PROGRAM")
    dy ("")
    fly (off)
    mspeed 100
    no_approach 
    HEAD=info_func (2)
    TIP=info_func (3)
    probe (HEAD,TIP)
    dy ("")
    dy ("PROBE( ",HEAD,", ",TIP,")")
    dy ("")
    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.
      get_position (XYZ)
      XC=XYZ|x
      YC=XYZ|y
      ZC=XYZ|z
      mcir (MEMO[BL+I],4) savepts
      for K=0 to 3 by 1
        move (X=XC,Y=YC,Z=ZC)
        C1=0.5*cos (K*90)
        C2=0.5*sin (K*90)
        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 
      move (X=XC,Y=YC,Z=ZC)
    end_for 
  end_procedure 
end_program