習慣沉默 发表于 2017-4-29 10:44:25

UG螺旋铣削宏最强版本可以模态

本帖最后由 習慣沉默 于 2017-4-29 10:45 编辑

螺旋铣削宏最强版本可以模态

(先要在参数6050~6059设置G代码调用宏程序的数字,6050~6059分别对应程序号O9010~O9019。
我这里在参数6054里面输的是133(0~255之间的数字),也就是O9014程序。
还可以设置参数3202的NE9为1,隐藏并保护O9000~O9999,防止误删    --该段文字摘录他处)

调用示例:
G54G90G0X0Y0
M3S3000F2000
G43G0Z100H1
G133X100Y100Z-20R3C20D50Q3.7K02
G133X0
M5
M30

**** Hidden Message *****

优化说明:
1,    Z和R不区分上下;即既可以从下向上亦可以自上向下铣。
      (铣螺纹时,就可以选择自下向上顺铣就少伤刀。)

2,   该螺旋严格遵守Q值指定的螺距,无论是否整数螺距均为
      该指定螺距,铣完回归中心。无需考虑补全之类的。

3,   K值有四种状态可选,K_ _ K值个位可以选择2,3,意即
      顺逆时针螺旋,十位可以选择输入0,1,表示是否螺旋底部
      带清理刀路。特别注意:0表示底部清根,1表示不清根。
      例如;K02表示顺时针螺旋底部清根。

4,   XYZRCDQK均可模态指定。特别注意:首次调用时,若不指定Q,K,
      则默认Q为0,即自R至Z一刀螺旋。K值则默认逆时针螺旋含清理刀路
      所以首次调用XYZRCD是必须要有的,当然后面也有容错措施。
       (设置一刀螺旋目的是,一般可以做精修底面用,或设置大螺距可螺旋下刀
      做倒角刀路。)

5,   所有模态位置临时存储于#500-#506变量内。程序自动判断超过
      60分钟则清空该段变量。防止下次首次调用例如G133X0Y0Z-20R3,
      漏指定其他参数时发生未知铣削的情况。
      (特别注意;因此造成的副作用是,单个螺旋必须控制60分钟内,
      否则只需补全输入所有模态代码即可。一般无需在意,有需要的可以修改。
      主要是防止麻瓜第一行就漏写必写参数。)

毫不夸张的讲,这个宏足以完美替代UG的螺旋铣削功能了(也可以代替铣螺纹)。




不足说明:
1, 仍不能像G81等固定循环一样,虽然每行只需要输入G133。
    (现在还没人能做到!欢迎有高手赐教!)

2, 欢迎各路朋友不吝指正。虽然本人已上机测试各种情况
    仍不免有漏掉的特殊情况。

%
O9014( G133 XYZRCDQK )
#100=60*FIX[#3012/10000]+FIX[#3012/100]-100*FIX/100]
IF[]GE60]THEN#500=#0
IF[]GE60]THEN#501=#0
IF[]GE60]THEN#502=#0
IF[]GE60]THEN#503=#0
IF[]GE60]THEN#504=#0
IF[]GE60]THEN#505=#0
IF[]GE60]THEN#506=#0 ( TEMP CLEAN )
#999=#100 ( SET CLEAN LABEL )

#500=#5003 (START POINT Z )
IF[#24EQ#0]THEN#24=#5001 ( GET X )
IF[#25EQ#0]THEN#25=#5002 ( GET Y )


IF[[#26OR#505]EQ0]THEN#26=#5003 ( GET Z )
IF[#26NE#0]THEN#505=#26 ( SET TEMP Z )
IF[#26EQ#0]THEN#26=#505

IF[[#18OR#506]EQ0]THEN#18=#5003 ( GET R )
IF[#18NE#0]THEN#506=#18 ( SET TEMP R )
IF[#18EQ#0]THEN#18=#506

IF[[#3OR#501]EQ0]THEN#3000=133( NEED SET C! )
IF[#3NE#0]THEN#501=#3
IF[#3EQ#0]THEN#3=#501

IF[[#7OR#502]EQ0]THEN#3000=133( NEED SET D! )
IF[#7NE#0]THEN#502=#7
IF[#7EQ#0]THEN#7=#502

IF[[#6OR#503]EQ0]THEN#3000=133( NEED SET K! )
IF[#6NE#0]THEN#503=#6
IF[#6EQ#0]THEN#6=#503


IF[#17NE#0]THEN#504=#17
IF[#17EQ#0]THEN#17=#504( CHECK Q! )
IF[[OR]NE0]GOTO1

#33=[#7-#3]/2
IF[#33LT0.1]THEN#3000=133( ROTATE LE 0.1! )
G90G00X#24Y#25
G00Z#18
G01Y[#25+#33]F#9
G03Z#26I0.J-#33
G01X#24Y#25
GOTO99

N1
IF[#18LT#26]THEN#17=-#17
#31=ABS/#17]]
#32=ABS[#18-#26]-#31*#17
#33=[#7-#3]/2

#27=360*ABS[#32/#17]
IF[#31EQ0]THEN#27=360*ABS[[#18-#26]/#17]
IF[#6EQ#0]GOTO11

IF[[#6-10*FIX[#6/10]]EQ3]THEN#28=#24-#33*SIN[#27]
IF[[#6-10*FIX[#6/10]]EQ2]THEN#28=#24+#33*SIN[#27]
GOTO12

N11
#28=#24-#33*SIN[#27]
#6=13
N12
#29=#25+#33*COS[#27]

IF[#33LT0.1]THEN#3000=133( ROTATE LE 0.1! )
IF[]NE0]GOTO2

#6=#6-10*FIX[#6/10]
G90G00X#24Y#25
G00Z#18
G01Y[#25+#33]F#9
#30=1
WHILE[#30LE#31]DO1
G#6Z[#18-#17*#30]I0.J-#33
#30=#30+1
END1
G#6X#28Y#29Z#26I0.J-#33
G#6X#28Y#29Z#26I[#24-#28]J[#25-#29]
G01X#24Y#25
GOTO99

N2
#6=#6-10*FIX[#6/10]
G90G00X#24Y#25
G00Z#18
G01Y[#25+#33]F#9
#30=1
WHILE[#30LE#31]DO1
G#6Z[#18-#17*#30]I0.J-#33
#30=#30+1
END1
G#6X#28Y#29Z#26I0.J-#33
G01X#24Y#25
GOTO99

N99
G90G00Z#500
M99
%

alyb1234 发表于 2018-9-27 14:25:35

谢谢分享谢谢分享谢谢分享谢谢分享谢谢分享

leduong 发表于 2020-7-25 16:47:10

UG螺旋铣削宏最强版本可以模态

q6303729 发表于 2018-12-18 21:21:33

UG螺旋铣削宏最强版本可以模态

Jimmylin5521 发表于 2017-5-3 09:11:33

謝謝大大分享

Veroinca 发表于 2017-5-4 18:39:38

;P;P;P;P;P

上海_英山漫提兵 发表于 2017-5-6 11:05:20

好好好,我正在找呢,太感谢了

Jimmylin5521 发表于 2017-5-6 11:10:35

謝謝大大分享

adrianoxb 发表于 2017-5-8 20:03:33

思路是核心,厉害啊

407682117 发表于 2017-5-10 12:20:01

谢谢分享…………

乖乖的男孩 发表于 2017-5-10 15:51:44

很好,值得看看

水是醒来的冰 发表于 2017-7-23 15:30:54

谢谢分享了 了

xizhilang676 发表于 2018-1-30 21:47:36

好好好学习天天向上
页: [1] 2 3
查看完整版本: UG螺旋铣削宏最强版本可以模态