UG爱好者

标题: 寻边器任意三点找圆心宏程序 [打印本页]

作者: l铁匠l    时间: 2017-5-21 04:03
标题: 寻边器任意三点找圆心宏程序

  1. O9007
  2. #111=#5021
  3. #112=#5022
  4. M99
  5. O9008
  6. #121=#5021
  7. #122=#5022
  8. M99
  9. O9009
  10. #131=#5021
  11. #132=#5022
  12. #1=#111*[#122-#132]+#121*[#132-#112]+#131*[#112-#122]
  13. IF[#1 EQ 0] THEN #3000=1(Error/3 In a staright line)
  14. #2=[#111*#111+#112*#112-#121*#121-#122*#122]/2
  15. #3=[#111*#111+#112*#112-#131*#131-#132*#132]/2
  16. #4=#2*[#112-#132]-#3*[#112-#122]
  17. #5=#3*[#111-#121]-#2*[#111-#131]
  18. (半径-#30=SQRT[[#4/#1-#111]*[#4/#1-#111]+[#5/#1-#112]*[#5/#1-#112]])
  19. #5221=#4/#1
  20. #5222=#5/#1
  21. #111=#0
  22. #112=#0
  23. #121=#0
  24. #122=#0
  25. #131=#0
  26. #132=#0
  27. M99
复制代码


fanuc可以打开参数6077-6079输入机床没有的m代码,之后就能够在mdi页面用m功能调用了。例如我设置的是6077=77,6078=78,6079=79,所以第一点运行M77,第二点运行M78,最后M79。这样就能把圆心坐标输入到G54里面了!


作者: 你相当可以、    时间: 2017-5-21 18:20
怎么用的啊?
作者: l铁匠l    时间: 2017-5-22 02:56
你相当可以、 发表于 2017-5-21 18:20
怎么用的啊?

Mxx调用,如O9007对应的是参数6077,就在机床参数修改成你想要的代码就还好了
作者: wzpwan168    时间: 2017-10-21 21:31
请大神举例说明一下 很感谢!
作者: yang_yy    时间: 2018-3-8 20:40
这个可以
作者: mastercam.lele    时间: 2018-4-3 11:58
还是不清楚怎么用?三菱系统的能用吗?
作者: mastercam.lele    时间: 2018-4-3 11:59
还有o9009 里面的半径字要不要删掉?
作者: mastercam.lele    时间: 2018-4-3 12:01
还有只能g54吗?大神出个可以g54-g59的
作者: l铁匠l    时间: 2018-8-2 18:46
mastercam.lele 发表于 2018-4-3 11:59
还有o9009 里面的半径字要不要删掉?

哪一行是算半径的,已经注释掉了!删除和不删除都不会运行!
作者: l铁匠l    时间: 2018-8-2 19:02
本帖最后由 l铁匠l 于 2018-8-2 19:18 编辑
mastercam.lele 发表于 2018-4-3 12:01
还有只能g54吗?大神出个可以g54-g59的

可以做任何坐标!包括G54.1坐标,把它做成计算当前运行的加工坐标就行了。把程序作成读取当前的工件坐标就行了!

IF[#4014EQ54.1]GOTO10
#[5221+[#4014-54]*20]=#4/#1
#[5221+[#4014-54]*20]=#5/#1
GOTO99
N10
#[7001+[#4130-1]*20]=#4/#1
#[7002+[#4130-1]*20]=#5/#1
N99

三点找圆心.zip

517 Bytes, 阅读权限: 10, 下载次数: 305, 下载积分: G币 -1


作者: l铁匠l    时间: 2018-8-3 08:54
mastercam.lele 发表于 2018-4-3 11:58
还是不清楚怎么用?三菱系统的能用吗?

工件坐标变量一样的情况下可以用。我记得是一样的,你自己查看下手册!
作者: elince*    时间: 2018-8-3 23:00
膜拜了
作者: ……背影*    时间: 2020-3-10 14:55
牛,学习一下
作者: ……背影*    时间: 2020-3-18 22:10
试试试试
作者: lmjams    时间: 2020-3-25 20:59
还不错, 都是玩宏程序的,就不评价好坏了,我一般是拿刀子碰来,直接铣圆或圆弧,但是毕竟用得少,久了又忘了,最后还是电脑踩三点来画圆弧来的长久,简洁。

作者: ug1029    时间: 2020-4-17 17:32
谢谢分享!谢谢分享!
作者: huangcfm123    时间: 2020-10-14 06:32
你的三点分圆程式用不了拷贝到机床报警mc3001
qq240034955
这程对我有帮助希望能帮我
作者: tkk42195    时间: 2020-10-27 21:42
西门子比较好些,有三点对刀自动找圆心
作者: lmjams    时间: 2020-11-4 19:02
很不错,同是玩宏的,顶起来。
作者: fxp_tyust    时间: 2021-2-22 09:50
楼主辛苦了,感谢分享。
作者: 石墩、    时间: 2021-3-2 09:53
老哥能讲详细一点吗?怎么用这个程序,小白啊
作者: 蓝天258    时间: 2021-3-4 16:44
参数对应关系  里面还牵扯运算过程 及报警输出信息 等   

Snipaste_2021-03-04_16-40-43.jpg (355.21 KB, 下载次数: 34)

Snipaste_2021-03-04_16-40-43.jpg

作者: l铁匠l    时间: 2021-4-1 21:56
本帖最后由 l铁匠l 于 2021-4-2 02:19 编辑
huangcfm123 发表于 2020-10-14 06:32
你的三点分圆程式用不了拷贝到机床报警mc3001
qq240034955
这程对我有帮助希望能帮我

3点成直线了吧!
作者: l铁匠l    时间: 2021-4-1 22:03
本帖最后由 l铁匠l 于 2021-4-1 23:40 编辑
蓝天258 发表于 2021-3-4 16:44
参数对应关系  里面还牵扯运算过程 及报警输出信息 等

三点一线了,怎么能算出圆心来,肯定报错啊!
作者: l铁匠l    时间: 2021-4-1 23:38
huangcfm123 发表于 2020-10-14 06:32
你的三点分圆程式用不了拷贝到机床报警mc3001
qq240034955
这程对我有帮助希望能帮我

IF[#1 EQ 0] THEN #3000=1(Error/3 In a staright line)
你是三个点都成一条直线了吧.一个圆三个点都在一条直线上怎么会是一个圆呢?
作者: alwayyang123    时间: 2021-5-14 19:56
明天试试
作者: l铁匠l    时间: 2021-5-30 19:25
分中宏程序
http://www.ugsnx.com/forum.php?mod=viewthread&tid=297801
深孔加工宏程序
http://www.ugsnx.com/forum.php?mod=viewthread&tid=298901
作者: 余鱼与鱼    时间: 2021-11-6 19:53
还没看懂怎么用。下下来慢慢试着用了
作者: xubo87    时间: 2021-12-10 23:07
谢谢分享!
作者: 2228977390    时间: 2022-5-11 21:31
我试了下三点分圆有问题,不知道是不是哪里算错了。。你试试三个点(1,2)(2,1)(1,0)带进去,圆心是不是(1,1)。
作者: l铁匠l    时间: 2022-5-17 20:48
2228977390 发表于 2022-5-11 21:31
我试了下三点分圆有问题,不知道是不是哪里算错了。。你试试三个点(1,2)(2,1)(1,0)带进去,圆心是 ...

我这边没错啊,机床FANUC Oi。
作者: 2228977390    时间: 2022-5-28 23:30
l铁匠l 发表于 2022-05-17 20:48


我这边没错啊,机床FANUC Oi。
没问题了。是我算错了没有除以#1。M代码调用是真好用。


作者: lqlkmqj2    时间: 2022-6-6 14:49
我使用你这个宏程序分小工件能正常运行,可是当直径大于400以上,到第三点分中时会 出现“PS0003 数位太多”的报警情况,请问如何处理呢?
作者: l铁匠l    时间: 2022-6-7 08:23
lqlkmqj2 发表于 2022-6-6 14:49
我使用你这个宏程序分小工件能正常运行,可是当直径大于400以上,到第三点分中时会 出现“PS0003 数位太多 ...

如果出现这种情况,可以用取余法消除多余的小数,如#100=[FIX[#100*1000]]/1000。
作者: l铁匠l    时间: 2022-6-7 09:14
l铁匠l 发表于 2022-6-7 08:23
如果出现这种情况,可以用取余法消除多余的小数,如#100=[FIX[#100*1000]]/1000。

是去余,打错字了,不好意思。如果是4位小数的机床就是*10000再/10000,计算结果小数点后面位太多的情况下都可以这样做。
作者: lqlkmqj2    时间: 2022-6-8 16:25
l铁匠l 发表于 2022-6-7 09:14
是去余,打错字了,不好意思。如果是4位小数的机床就是*10000再/10000,计算结果小数点后面位太多的情况 ...

这样就会降低对刀精度,FIX是去除小数点后面的数,能不能保留小数点后面3位或4位数,这样对刀精度才有保障。请指教,谢谢!!
作者: l铁匠l    时间: 2022-6-9 10:05
lqlkmqj2 发表于 2022-6-8 16:25
这样就会降低对刀精度,FIX是去除小数点后面的数,能不能保留小数点后面3位或4位数,这样对刀精度才有保 ...

不会啊,你没发现我是乘以1000或者10000再去掉小数的么?就比如我的机床是3位小数的,那我乘以1000后再去掉后面的小数再除以1000那不是保留了3位小数么?
作者: l铁匠l    时间: 2022-6-9 10:09
lqlkmqj2 发表于 2022-6-8 16:25
这样就会降低对刀精度,FIX是去除小数点后面的数,能不能保留小数点后面3位或4位数,这样对刀精度才有保 ...

前面我写的是这样的 #100=[FIX[#100*1000]]/1000 结果是保留3位小数呢。
作者: lqlkmqj2    时间: 2022-6-9 11:42
l铁匠l 发表于 2022-6-9 10:09
前面我写的是这样的 #100=[FIX[#100*1000]]/1000 结果是保留3位小数呢。

现在搞明白了,非常感谢!
作者: l铁匠l    时间: 2022-6-9 14:33
lqlkmqj2 发表于 2022-6-9 11:42
现在搞明白了,非常感谢!

这只是一个简单的数学问题,但是哪个变量造成溢出只能你自己发现了。
作者: 郏向阳    时间: 2022-7-9 06:16
不需要指定圆的半径吧
作者: l铁匠l    时间: 2022-7-27 05:58
郏向阳 发表于 2022-7-9 06:16
不需要指定圆的半径吧

不须要。




欢迎光临 UG爱好者 (https://www.ugsnx.com/) Powered by Discuz! X3.2