ピッチ(正三角形の1辺)10mm
-10度から100度まで、半径120mmの範囲
x=40、y=120、半径30の範囲は省略
作図は、Φ2mmを想定
10
OPTION ANGLE DEGREES
REM test 2
REM 穴位置プログラム
CLOSE #1
OPEN #1:NAME "O0001.NCD"
LET NC$="%"
GOSUB 9980
LET NC$="O0001"
GOSUB 9980
FOR yn=-10 TO 100
FOR xn=-10 TO 100
LET xa=10*xn
IF yn/2<>INT(yn/2) THEN LET xa=xa+5
LET ya=10*SQR(3)/2*yn
LET a1=-10 ! check-1
LET x1=0+2*COS(a1-90)
LET y1=0+2*SIN(a1-90)
LET a2=100
LET x2=0+2*COS(a2+90)
LET y2=0+2*SIN(a2+90)
REM y-y1=(x-x1)*tan(a1)
LET yc=y1+(xa-x1)*TAN(a1)
IF ya<yc THEN GOTO 90
LET yd=y2+(xa-x2)*TAN(a2)
IF ya<yd THEN GOTO 90
LET xg=0 ! check-2
LET yg=0
LET rg=120
LET lg=SQR(xa^2+ya^2)
IF lg>rg THEN GOTO 90
LET xq=40 ! check-3
LET yq=120
LET rq=30
LET lq=SQR((xa-xq)^2+(ya-yq)^2)
IF lq<rq THEN GOTO 90
LET X=XA
LET Y=YA
GOSUB 9900
90
NEXT xn
NEXT yn
LET NC$="%"
GOSUB 9980
STOP
9900 IF ABS(X-XM)<0.0005 THEN GOTO 9920
LET XX=(INT((X+0.0005)*1000))/1000
IF NN=0 THEN LET RM=XX
IF ABS(XX)>0.0005 THEN GOTO 9910
LET X$="X0"
GOTO 9920
9910 LET XX$=STR$(XX)
LET X$="X"&XX$
IF ABS(INT(XX)-XX)<0.0005 THEN LET X$=X$&"."
9920 IF ABS(Y-YM)<0.0005 THEN GOTO 9940
LET YY=(INT((Y+0.0005)*1000))/1000
IF ABS(YY)>0.0005 THEN GOTO 9930
LET Y$="Y0"
GOTO 9940
9930 LET YY$=STR$(YY)
LET Y$="Y"&YY$
IF ABS(INT(YY)-YY)<0.0005 THEN LET Y$=Y$&"."
9940 IF ABS(Z-ZM)<0.0005 THEN GOTO 9960
LET ZZ=(INT((Z+0.0005)*1000))/1000
IF ABS(ZZ)>0.0005 THEN GOTO 9950
LET Z$="Z0"
GOTO 9960
9950 LET ZZ$=STR$(ZZ)
LET Z$="Z"&ZZ$
IF ABS(INT(ZZ)-ZZ)<0.0005 THEN LET Z$=Z$&"."
9960 IF R<=0 THEN GOTO 9970
LET RR=(INT((R+0.0005)*1000))/1000
LET RR$=STR$(RR)
LET R$="R"&RR$
IF ABS(INT(RR)-RR)<0.0005 THEN LET R$=R$&"."
LET RM=R9
9970 LET NC$=G$&X$&Y$&Z$&R$&M$
9980 PRINT #1: NC$
LET XM=XX
LET YM=YY
LET ZM=ZZ
LET G$=""
LET X$=""
LET Y$=""
LET Z$=""
LET R$=""
LET M$=""
LET NC$=""
RETURN
END
OPTION ANGLE DEGREES
REM test 2
REM 穴位置プログラム
CLOSE #1
OPEN #1:NAME "O0001.NCD"
LET NC$="%"
GOSUB 9980
LET NC$="O0001"
GOSUB 9980
FOR yn=-10 TO 100
FOR xn=-10 TO 100
LET xa=10*xn
IF yn/2<>INT(yn/2) THEN LET xa=xa+5
LET ya=10*SQR(3)/2*yn
LET a1=-10 ! check-1
LET x1=0+2*COS(a1-90)
LET y1=0+2*SIN(a1-90)
LET a2=100
LET x2=0+2*COS(a2+90)
LET y2=0+2*SIN(a2+90)
REM y-y1=(x-x1)*tan(a1)
LET yc=y1+(xa-x1)*TAN(a1)
IF ya<yc THEN GOTO 90
LET yd=y2+(xa-x2)*TAN(a2)
IF ya<yd THEN GOTO 90
LET xg=0 ! check-2
LET yg=0
LET rg=120
LET lg=SQR(xa^2+ya^2)
IF lg>rg THEN GOTO 90
LET xq=40 ! check-3
LET yq=120
LET rq=30
LET lq=SQR((xa-xq)^2+(ya-yq)^2)
IF lq<rq THEN GOTO 90
LET X=XA
LET Y=YA
GOSUB 9900
90
NEXT xn
NEXT yn
LET NC$="%"
GOSUB 9980
STOP
9900 IF ABS(X-XM)<0.0005 THEN GOTO 9920
LET XX=(INT((X+0.0005)*1000))/1000
IF NN=0 THEN LET RM=XX
IF ABS(XX)>0.0005 THEN GOTO 9910
LET X$="X0"
GOTO 9920
9910 LET XX$=STR$(XX)
LET X$="X"&XX$
IF ABS(INT(XX)-XX)<0.0005 THEN LET X$=X$&"."
9920 IF ABS(Y-YM)<0.0005 THEN GOTO 9940
LET YY=(INT((Y+0.0005)*1000))/1000
IF ABS(YY)>0.0005 THEN GOTO 9930
LET Y$="Y0"
GOTO 9940
9930 LET YY$=STR$(YY)
LET Y$="Y"&YY$
IF ABS(INT(YY)-YY)<0.0005 THEN LET Y$=Y$&"."
9940 IF ABS(Z-ZM)<0.0005 THEN GOTO 9960
LET ZZ=(INT((Z+0.0005)*1000))/1000
IF ABS(ZZ)>0.0005 THEN GOTO 9950
LET Z$="Z0"
GOTO 9960
9950 LET ZZ$=STR$(ZZ)
LET Z$="Z"&ZZ$
IF ABS(INT(ZZ)-ZZ)<0.0005 THEN LET Z$=Z$&"."
9960 IF R<=0 THEN GOTO 9970
LET RR=(INT((R+0.0005)*1000))/1000
LET RR$=STR$(RR)
LET R$="R"&RR$
IF ABS(INT(RR)-RR)<0.0005 THEN LET R$=R$&"."
LET RM=R9
9970 LET NC$=G$&X$&Y$&Z$&R$&M$
9980 PRINT #1: NC$
LET XM=XX
LET YM=YY
LET ZM=ZZ
LET G$=""
LET X$=""
LET Y$=""
LET Z$=""
LET R$=""
LET M$=""
LET NC$=""
RETURN
END
コメント