数控cnc宏程吧 关注:3,391贴子:8,260

三点定圆心编的园找中程式

只看楼主收藏回复

主程式
O1
#100=54 (G54~~G59)
#199=0 (分中棒刀号)
M98 P8899
M30
%
副程式
O8899
#100=#100
IF[#100LT54]THEN#100=54
IF[#100GT59]THEN#100=54
G5.1Q0.
T#199 M6
M3S600
N10
#111=0
#121=0
#131=0
N1
IF[#111NE0]GOTO2
M0
#111=#5021
#112=#5022
GOTO1
N2
IF[#121NE0]GOTO3
M0
#121=#5021
#122=#5022
#180=0
IF[#121EQ#111]THEN#180=#180+1
IF[#122EQ#112]THEN#180=#180+1
IF[#180EQ2]THEN#121=0
GOTO2
N3
IF[#131NE0]GOTO4
M0
#131=#5021
#132=#5022
#180=0
IF[#131EQ#121]THEN#180=#180+1
IF[#132EQ#122]THEN#180=#180+1
IF[#180EQ2]THEN#131=0
GOTO3
#180=1
IF[#131EQ#121]THEN#180=#180+1
IF[#131EQ#111]THEN#180=#180+1
IF[#180EQ3]THEN#131=0
GOTO3
#180=1
IF[#132EQ#112]THEN#180=#180+1
IF[#132EQ#122]THEN#180=#180+1
IF[#180EQ3]THEN#131=0
GOTO3
N4
#170=#121*#121-#111*#111+#122*#122-#112*#112
#171=#131*#131-#111*#111+#132*#132-#112*#112
#182=[#131-#111]*#170-[#121-#111]*#171
#183=2*[#112-#132]*[#121-#111]-[#131-#111]*[#112-#122]*2
#102=#182/#183 (Y)
#101=[#170+[#112-#122]*2*#102]/[[#121-#111]*2] (X)
#190=5201
#191=5202
#[#190-[53-#100]*20]=#101
#[#191-[53-#100]*20]=#102
#500=#101
#501=#102
#502=ABS[SQRT[[#111-#101]*[#111-#101]+[#112-#102]*[#112-#102]]](R)
M5
G0G91Z100.
G0G90G#100X0.Y0.
M99
%


1楼2017-05-24 18:23回复



    2楼2017-05-24 18:52
    回复
      之所以把草稿弄上去,一方面是方便大家看看这个是怎么出来的,一方面是防止有人说我是搬运工


      3楼2017-05-24 18:54
      收起回复
        %
        O8899
        #100=#100
        IF[#100LT54]THEN#100=54
        IF[#100GT59]THEN#100=54
        /↑检测坐标系是否在G54到G59之间,超出时默认到G54
        G5.1Q0.
        T#199M6
        M3S600
        /↑换出分中棒,启动
        N10
        #111=0
        #121=0
        #131=0
        /↑初始化三个碰点X值
        N1
        IF[#111NE0]GOTO2
        M0
        #111=#5021
        #112=#5022
        GOTO1
        /↑N1到此处之间取第一点坐标,记录XY机械值到#111和#112中,碰好数时按启动
        N2
        IF[#121NE0]GOTO3
        M0
        #121=#5021
        #122=#5022
        #180=0
        IF[#121EQ#111]THEN#180=#180+1
        IF[#122EQ#112]THEN#180=#180+1
        IF[#180EQ2]THEN#121=0
        GOTO2
        /↑N2到此处之间取第二点坐标,记录XY机械值到#121和#122中,并判断是否与第一点重合(如果重合不会继续向下执行,重新碰第二点数后按启动即可,下同)
        N3
        IF[#131NE0]GOTO4
        M0
        #131=#5021
        #132=#5022
        #180=0
        IF[#131EQ#121]THEN#180=#180+1
        IF[#132EQ#122]THEN#180=#180+1
        IF[#180EQ2]THEN#131=0
        GOTO3
        /↑N3到此处之间取第三点坐标,记录XY机械值到#131和#132中,并判断是否与第二点重合(同上)
        #180=1
        IF[#131EQ#121]THEN#180=#180+1
        IF[#131EQ#111]THEN#180=#180+1
        IF[#180EQ3]THEN#131=0
        GOTO3
        /↑判断三个点X是否相同,相同的话重新碰第三点
        #180=1
        IF[#132EQ#112]THEN#180=#180+1
        IF[#132EQ#122]THEN#180=#180+1
        IF[#180EQ3]THEN#131=0
        GOTO3
        /↑判断三个点Y是否相同,相同的话重新碰第三点
        N4
        #170=#121*#121-#111*#111+#122*#122-#112*#112
        /↑草稿中的“B”
        #171=#131*#131-#111*#111+#132*#132-#112*#112
        /↑草稿中的“C”
        #182=[#131-#111]*#170-[#121-#111]*#171
        #183=2*[#112-#132]*[#121-#111]-[#131-#111]*[#112-#122]*2
        #102=#182/#183
        /↑Y的最终运算式(X运算式代入后的)
        #101=[#170+[#112-#122]*2*#102]/[[#121-#111]*2]
        /↑X的最终运算式(把计算出的Y值代入后的)
        #190=5201
        #191=5202
        #[#190-[53-#100]*20]=#101
        #[#191-[53-#100]*20]=#102
        /↑将计算出的中心坐标分别记录到指定的坐标系XY中
        /↑系统变量#5221是G54的X,#5222是Y,#5241是G55的X....
        #500=#101
        #501=#102
        #502=ABS[SQRT[[#111-#101]*[#111-#101]+[#112-#102]*[#112-#102]]]
        /↑碰完数后打开变量查看用,#500是坐标系X机械值,#501是Y机械值,#502是所碰园半径减去分中棒半径
        M5
        G0G91Z100.
        G0G90G#100X0.Y0.
        M99
        %


        4楼2017-05-24 19:17
        回复
          一下看不完,先收着了


          IP属地:广东来自Android客户端5楼2017-05-25 05:52
          收起回复
            楼主非常厉害👍


            IP属地:广东来自Android客户端6楼2017-06-23 14:06
            回复
              经上机测试,“N4”放错了位置,应该放在第一个“GOTO 3”的下一行,否则无法检测三点的X和Y是否分别重合


              7楼2017-06-24 03:45
              回复(2)
                不知道怎么用,看不懂


                IP属地:广东来自Android客户端8楼2017-07-11 20:17
                收起回复
                  马上要去学习这个行业了!说实话心里挺纠结,我不知道我到什么时候能看懂你发的这些数据。唉╯﹏╰,自己努力吧!


                  IP属地:江苏来自Android客户端9楼2017-11-25 11:18
                  回复
                    THEN表示什么


                    IP属地:山东来自Android客户端10楼2017-12-21 22:42
                    收起回复
                      你之前的一系列确认的程序 有必要写进去吗?


                      来自iPhone客户端12楼2018-02-11 14:32
                      收起回复
                        大师帮忙看下是不是N4放这里


                        IP属地:广东来自Android客户端13楼2018-05-10 12:50
                        回复(4)
                          这样对吗师傅


                          IP属地:广东来自Android客户端14楼2018-05-12 16:08
                          回复(5)
                            按图片上的修改,N4放到1那一行,在2那个位置加入一行 IF[#180 LT 3] GOTO5,在原来N4的位置输入N5,


                            来自手机贴吧15楼2018-05-16 14:31
                            回复


                              来自手机贴吧16楼2018-05-16 14:34
                              回复(1)