CATIA - Knowledge - Advisor - help 联系客服

发布时间 : 星期一 文章CATIA - Knowledge - Advisor - help更新完毕开始阅读96c52d6652ea551811a68746

属于知识工程产品的运算符。

属于非知识工程产品的运算符和构造函数。

下面提供的信息是使用 C-EKL 时所必须了解的基本知识。

6、控制结构

条件语句

规则

if ... else ... else if

根据表达式的值有条件地执行一组语句。可以使用以下块形式的语法之一:

if condition statements [else elsestatements ]

或者

if condition { statements } [else if condition-n [ { elseifstatements } ] ] . . . [else [ { elsestatements } ] ] 可对简短规则使用单行形式语法(第一个语法)。但是块形式语法(第二个语法)与单 行语句相比,提供了更多的结构和灵活性,并且通常更易于读取、维护和测试。

else 和 else if 子句都是可选子句。在块 if 下可以有多个 else if 语句,但 else

子句后不能出现 else if 语句。块 if 语句可以彼此嵌套(即包含)。

检查

检查只能读取参数。因此,不能在输出中使用具有变量的函数。 Relations

Formula.1

Activity == false

检查可使用特定的关键字 =>. statement1 => statement2 (if statement1 then

statement2)。

每次 statement1 满足而 statement2 无效时,都将显示消息(如果类型是警告或信息)且

在结构树中显示为红色。

9

OK => KO KO => KO KO => OK OK => OK

For 语句

关键字 For 的第一种用法是基于列表中元素的循环。请参见右边 let List.1(List) 的语法。 let x(Point) For x inside List { x 是变量名(属于给定类型。它可以表示一个对象或一个 值)。 可以在几何体中使用 x(与语言的其它变量一样)。它包 含与当前迭代相对应的列表中的元素。 List 是类型列表的变量名或返回列表的表达式。 Body if (x <> 其中: NULL) } 几何体将执行 N 次,其中 N 是列表中元素的数量。 关键字 For 的第二种用 法是执行循 环,直到表 达式的值变 为 For x while predicate false 为止。请参见右边的语法。 { 其中: } x 是整数类型的变量名。它在每次执行几何体后递增。 Body 谓词是布尔表达式。只要此表达式的值为 true,几何体 就会继续执行。此表达式在几何体前赋值。 请注意,For 运算符的第二种用法可能导致无限循环。

While 语句

此循环一直执行到表达式的值变为 false 为止。请参见右边的 let i = 1 let x(Point) 语法。 其中: for i while i<=parameter.Size() i 是整数类型的变量名。它在每次执行几何体后递增。 {

10

X 是点的变量。 x = parameter.GetItem(i) 0.04) if (x.GetAttributeReal(\ x.SetAttributeReal(\ } 有关 C-EKL 的更多信息

定义

函数由其签名、输入参数以及输出参数标识。 方法与对象相关联。它由包含 # in 和 # out 的签名标识。

使用变量

通过引用传递变量

调用函数时,知识工程模块语言通过引用系统地传递变量。通过引用分配意味着新的变量仅引用 (即“指向”)原始变量。对新变量的更改将影响原始变量,反之亦然。这也意味着不执行复制。 因此,调用函数或方法时,不复制值。参数通过引用传递。若写入 sin(x),将可以直接在正弦 函数的几何体中使用变量 x。

强键入 知识工程模块语言为强键入,这意味着必须遵守某

些规则。 作为参数传递的变量

作为函数输入中的参数传递的变量必须至少是此函数参数的子类型或其类型类似于该参数。若写 入 area (s),则 s 必须是曲面。返回函数的参数时也具有此规则。有关类型层次结构的更多信 息,请参见高级工程语言。

赋值规则 设置变量时,值的类型必须是变量创建类型的子类型。创建变量后,其类型便无法更改。

请注意,存在以下 4 种例外:

关键字 set 使您可以在不检查类型的情况下影响变量。若位于赋值规则右侧的成员对 象同样支持位于左侧的变量类型,则执行该规则。否则,变量被设置为 NULL。

set x=y,x 是点类型的变量而 y 是实体类型的变量。x=NULL set P1=Pad 和 set x=y。在此情况下 x 被赋值。 11

关键字 NULL 是常量。将此常量作为函数的参数传递时,将不执行任何类型检查。因 此,您可以将任何变量设置为 NULL 或比较变量和 NULL 以确定是否未设置该变量。

pointOncurve (C, 10mm, NULL)

某些方法的返回类型是 UndefinedType。此时,可以对任何返回此类型的变量赋值。

x = List.GetItem

使用值类型的变量时,将不对实型变量执行检查,因此您可以:

将整型赋值给实数 将角度赋值给实数 将实数赋值给长度 将角度赋值给长度

临时变量的范围

临时变量可以使用关键字 let 进行声明。规则执行结束后,临时变量不会继续充当参数。let x = 5 mm if PartBody Hole.1 Diameter > x { PartBody Hole.1 Activity = false

} 对于非数字值,必须指定类型:

let S(Surface)

S= split

(...,...)

必须在规则的开头,在指定任何其它指令前声明临时变量。 let S1(Surface) let S2(Surface) let S3(Surface) S1 = Split ... S2 = ... S3 = ... 12