POWERMILL宏查询工具。“流程控制”,IF语句。

温馨提示: 本文最后更新于 2025-10-26 08:56:03,下载链接具有时效性,若已失效,请在下方留言提示站长
流程控制BANZHUAN 
图片[1]-POWERMILL宏查询工具。“流程控制”,IF语句。-机械资源网

IF语句

IF语句是当执行条件符合时,执行一系列命令框中的命令语句。

基本的语句结构为:

IF<条件表达式> {

//条件表达式成立,执行{}内代码:命令A

命令A

}

//条件表达式为假,继续执行命令B

命令B

【例】如果希望进行一条刀具路径的的计算,但不希望计算已经计算过的刀具路径,可以如下:

//如果激活的刀具路径已经计算

IF NOT Computed {

EDIT TOOLPATH $TpName CALCULATE

}

在这具命令中,必须使用大括号,并且大括号必须进行正确的定位。例如,以下的语句是无效的:

IF(radius==3) PRINT “Invalid radius”

正确的写法如下:

IF(radius==3) {

PRINT “Invalid radius”

}

注意:第一个大括号必须在最后一个字母的右侧,它们之间有个空格,并且与IF同行。第二个大括号必须单独一行,并且悬置最后。

IF-ELSE语句

如果条件表达式成立,先执行命令A,再执行命令C

如果条件表达式不成立,先执行命令B,再执行命令C

基本的语句结构为:

IF <条件表达式> {

命令A

} ELSE {

命令B

}

命令C

【例】如果刀具D12存在,则激活刀具,否则创建刀具再激活

IF entity_exists(‘Tool’,’D12′) {

ACTIVATE Tool “D12”

} else {

CREATE TOOL “D12” ENDMILL

EDIT TOOL ; DIAMETER “12”

}

IF-ELSEIF-ELSE语句

F-ELSEIF-ELSE语句在满足条件时执行第一个IF的系列命令,当第一个条件不满足,而第二个条件满足时,执行ELSEIF系列命令,当所有的条件都不满足时,执行ELSE后的系列命令。

基本语句结构为:

IF <条件表达式1> {

命令A

} ELSEIF<条件表达式2> {

命令B

} ELSE {

命令C

}

命令D

如果条件表达式1结果为真,将执行命令A,接着执行命令D。如果条件表达式1结果为假,

而条件表达式2结果为真时,将执行命令B后,接着执行命令D。

如果条件表达式1结果为假,和条件表达式2结果为假时,将执行命令C后,接着执行命令D。

注意:ELSE是一个可选的语句结构,在语句中可以数个ELSEIF语句块,但只能为一个ELSE语句块。

 

 

 

SWITCH语句

当判断一系列有可能的数值,并决定使用不同的操作命令时,可以使用SWITCH枚举语句。

SWITCH语句从根据比较数值的匹配情况,从而确定哪些命令将被执行。

基本的语法结构为:

SWITCH  变量 {

CASE(变量A)

命令A

CASE(变量A)

命令A

DEFAULT

命令C

}

命令D

如果条件A为真,将执行命令A,B,C和D。如果条件B为真,将执行命令B,C和D。如果条件A和条件B都为假,将执行命令C和D。

注意:当在SWITCH语句中发现具有匹配的情况时,将执行剩下全部CASE语句中的命令。如果不希望执行全部的CASE语句块中的命令,可以使用BREAK命令跳出语句块。

可以同时拥有多个CASE语句块,但只能有一个DEFAULT语句块。

【例】:

FUNCTION Main() {

STRING TName=”

STRING ARRAY Opts[] = {“全部刀路”,”激活刀路”,”已选刀路”}

INT C = INPUT CHOICE $Opts “选择操作模式(过切计算刀路):”

SWITCH $C {

CASE 0

FOREACH Toolpath IN folder(‘TOOLPATH’) {

$TName=Toolpath.name

CALL myfunction1(TName)

}

BREAK

CASE 1

CALL myfunction1(TName)

BREAK

CASE 2

ENTITY LIST $Selected_Toolpaths = INPUT ENTITY MULTIPLE toolpath “选择欲过切计算的刀具路径:”

FOREACH Toolpath1 in Selected_Toolpaths {

$TName=toolpath1.name

CALL myfunction1(TName)

}

BREAK

 

}

}

FUNCTION myfunction1(STRING TName1) {

DIALOGS MESSAGE OFF

DIALOGS ERROR OFF

if TName1!=” {

ACTIVATE Toolpath $TName1

}

EDIT COLLISION TYPE GOUGE

EDIT COLLISION SPLIT_TOOLPATH N

UNDRAW COLLISION

EDIT COLLISION APPLY

DIALOGS MESSAGE ON

DIALOGS ERROR ON

}

 

 

 

FOREACH循环

FOREACH循环重复执行每个项目在列表或者数组中的命令语句块。

基本语法结构:

FOREACH item IN sequence {

命令A

}

命令B

【例】枚举刀具路径,并打印刀具路径的名称:

FOREACH Toolpath IN folder(‘Toolpath’) {

PRINT $Toolpath.Name

}

注意:1)item是一个自动创建的变量,并且在循环中初始化变量类型。

2)sequence是一个列表或者数组。

3)可以使用BREAK取消循环(详情见BREAK语句)

4)可以使用CONTINUE直接跳到下一循环(详情见CONTINUE语句)

 

 

 

WHILE循环WHILE循环反复执行语句块,直到条件表达式为假。

基本语法结构:

WHILE <条件表达式> {

命令A

}

命令B

如果条件表达式为真,则执行命令A将被执行。当条件表达式保存为真的时候,命令A将继续被执行。当条件表达式为假的时候,命令B将会被执行。

【例】PM最小半径阴影分析

int i=10

while i>2 {

PRINT $i

}

PRINT “这是WHILE用法的简单例子”

 

注意:1)可以使用BREAK取消循环(详情见BREAK语句)

2)可以使用CONTINUE直接跳到下一循环(详情见CONTINUE语句)

 

 

 

DO-WHILE循环

DO-WHILE循环和WHILE循环的区别是:前者是先执行语句块,再进行条件表达式的真假判断,而后者是先判断条件表达式的真假,再执行语句块。所以,可以说DO-WHILE循环是“先循环,再判断”,而WHILE循环是“先判断,再循环”。

基本语法结构:

DO {

命令A

} WHILE <条件表达式>

命令B

其中,命令A被执行,当条件表达式为真时,命令A再次被执行,直到条件表达式为假,停止循环,继续执行命令B。

【例】毛坯重置后,锁定Z扩展给定值

string prompt=”输入毛坯扩展的数值:”

REAL i=0

bool err=0

//如果输入的不是一个数值,或者错误的值,则继续弹出窗口

do {

$i=input $prompt

$err=ERROR i

if err {

$prompt=”请输入一个数值:”

} else {

FORM BLOCK

DELETE BLOCK

EDIT BLOCKTYPE BOX

EDIT BLOCK LIMITTYPE MODEL

EDIT BLOCK ALL UNLOCK

EDIT BLOCK RESETLIMIT “0”

EDIT BLOCK RESET

EDIT BLOCK ZMAX LOCK

EDIT BLOCK ZMIN LOCK

EDIT BLOCK RESETLIMIT $i

EDIT BLOCK RESET

BLOCK ACCEPT

DRAW BLOCK

break

}

} while err

注意:1)可以使用BREAK取消循环(详情见BREAK语句)

2)可以使用CONTINUE直接跳到下一循环(详情见CONTINUE语句)

 

 

 

BREAK关键字

break在循环体内,强行结束循环的执行,也就是结束整个循环过程,不在判断执行循环的条件是否成立,直接转向循环语句下面的语句。

当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体。

【例】打印0到10之间的整数。当i等于5的时候,整个循环被强制结束!再PowerMILL命令窗口中只能看到打印的数为:0,1,2,3,4,5

INT i=0

WHILE i<=10 {

PRINT $i

IF i==5 {

BREAK

}

$i=i+1

}

 

 

 

CONTINUE关键字

终止本次循环的执行,即跳过当前这次循环中continue语句后尚未执行的语句,接着进行下一次循环条件的判断。

【例】打印0到10之间的整数。当i等于5的时候,整个循环被强制结束!在PowerMILL命令窗口中只能看到打印的数为:0,1,2,3,4,5,5,5,5……造成了无限循环。

INT i=0

WHILE i<=10 {

PRINT $i

IF i==5 {

CONTINUE

}

$i=i+1

}

造成这个结果的原因是:循环执行到CONTINUE的时候,直接跳到了下一次循环,$i=i+1这句没有被执行。可以作如下修改:

INT i=0

WHILE i<=10 {

PRINT $i

$i=i+1

IF i==5 {

CONTINUE

}

}

这样在PowerMILL命令窗口中只能看到打印的数为:0到10之间所有的整数。你也可以再次修改:

INT i=0

WHILE i<=10 {

$i=i+1

IF i==5 {

CONTINUE

}

PRINT $i

}

这时在PowerMILL命令窗口中只能看到打印的数为:1,2,3,4,6,7,8,9,10,11

 

 

 

RETURN关键字

宏中RETURN语句可以立即终止当前的宏循环。例如,在宏中检查到有一个错误的时候,当你不想继续其余的命令时,可以使用这个语句结束循环。

【例】打印0到10之间的整数。当i等于5的时候,整个循环被强制结束!再PowerMILL命令窗口中只能看到打印的数为:1,2,3,4

INT i=0

WHILE i<=10 {

$i=i+1

IF i==5 {

RETURN

}

PRINT $i

}

本文链接: https://www.u557.com/3977.html

© 版权声明
THE END
喜欢就支持一下吧
分享
评论 抢沙发

请登录后发表评论

    暂无评论内容