该栏目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