使用知识工程专家语言 (KWE)
此页包含运行“知识工程专家 (Knowledge Expert)”应用程序时要使用的语言的相关信息。在“知识工程专家 (Knowledge Expert)”中定义规则时,可以使用以下两种语言:
KWE 语言
Visual Basic 语言
在“知识工程专家 (Knowledge Expert)”中定义检查时,可以使用以下三种语言:
声明变量
basic语言if语句使用类型
使用类型属性
使用函数
使用语句
使用运算符
声明变量
在“全部”字段中
请注意:
变量必须包含字母和/或数字。
变量名称无大小限制。
有关知识工程语言的更多信息,请参见《知识工程顾问用户指南》中的“工程知识工程语言”。
KWE 语言
KWE 高级语言:知识工程专家 (KWE) 语言的延伸。此语言可使用局
部变量,以及 if then else、for、while 控制结构。
您还可以填写成功和失败对象列表,生成报告时将使用此列表。
请注意,只能在创建检查时使用此语言。
Visual Basic 语言
在“全部”字段中
在检查主体中
If 构造
构造
while 构造
for 构造
在“全部 (For All)”字段中声明规则和检查变量。
有关此字段中要使用类型的更多信息,请参见定义类型。
变量名称是区分大小写的字符串。
变量名称不能与单位名称冲突。要获取知识工程专家所支持单位的详尽列表,请参见“检查编辑器 (Check Editor)”/“规则编辑器 (Rule Editor)”中知识工程专家浏览器的“单位 (Units)”字段。
以数字 (2DCircle) 开始或包含特殊字符(+、- 等)的类型必须按以下方式写入:%2DCircle%,其中 % 是分隔符。
在检查主体中
临时变量可以通过 let 关键字声明。检查/规则执行结束后,临时变量不会持续作为参数。
使用类型
通过“对象浏览器 (Object Browser)”,可在“规则编辑器 (Rule Editor)”或“检查编辑器 (Check Editor)”中使用下述类型。
在“全部 (For all)”字段中,使用下列语法:type_identifier :type _name
使用 KWE 语言时,可以通过 Thisrule 或 Thischeck 在检查主体或规则主体中声明自动引用变量。有关更多信息,请参见在检查主体中访问专家检查。
let Mylist(List)
let childrenCheck(KWECheck)
let i = 1
let condition = 0
Mylist = H.DirectChildren
for i while condition == 0 AND i <= Mylist.Size()
{
childrenCheck = Mylist.GetItem(i)
if (childrenCheck.Name == "TargetCheck")
{
ThisCheck.AddTupleFailed(childrenCheck)
condition = 1
}
else
{
ThisCheck.AddTupleSucceeded(ChildrenCheck)
}
}其中 type_identifier 对应于要声明的变量,
type_name 表示要声明的类型,可在“浏览
器 (Browser)”中使用。
请注意,通过在“全部 (For all)”字段键入特
征名称(类型)、在“检查编辑器 (Check
Editor)”或“规则编辑器 (Rule Editor)”浏览
器中选择名称(类型)、或在几何图形窗口或
结构树中单击特征,您可以插入特征名称(类
型)。
示例:
H :孔;S :盒体
Hl :孔;Sel :盒体
类型声明必须用分号分隔。
使用类型属性
您可以通过“规则编辑器 (Rule Editor)”或“检查编辑器 (Check Editor)”访问“对象浏览器 (Object Browser)”,从中选择下面描述的类型属性。
类型是可在检查主体或规则主体中键入或在对象浏览器中选择的分配属性。
若要使用对象浏览器:
在“知识工程专家 (Knowledge Expert)”工作台中,访问“规则编辑器 (Rule Editor)”/“检查编
辑器 (Check Editor)”。
单击 或 图标,创建规则或检查,然后在“规则编辑器 (Rule Editor)”或“检查编辑器
(Check Editor)”中单击 图标。
在左侧窗口中单击要使用的包——在下图中为“零件设计 (PartDesign)”、类型——在下图中为“孔
(Hole)”和属性——在下图中为“直径 (Diameter)”,然后单击“关闭 (Close)”。
若要手动键入语句,请使用以下语法:
type_identifier.object_name
示例:
if H.Diameter > 10.0 then H.Activity = False
使用函数
知识工程专家所支持的函数可在检查或规则主体中手动输入,或从对象浏览器中进行选择(请参见上述内容,了解如何访问浏览器)。
示例
使用语句
任何 KWE 脚本都是由一系列语句组成的。语句可以是赋值语句、函数调用语句或条件语句,通常以分号结束,另外还可通过大括号括起一组语句,将其合成语句组。
If 构造
此构造中可以有条件执行代码段。请注意,“if”构造无法嵌套。
if ... else ... if 构造
规则
if ... else ... else if
根据表达式的值有条件地执行一组语句。您可以使用下列语法:
对于简短的规则,可以使用单行形式(第一个语法),但是块形式(第二个语法)比单行形式提供了更多的结构和灵活性,并且通常更易于读取、维护和测试。
else 和 else if 子句都是可选子句。块 if 下可以有任意多个 else if 语句,但这些语句都不能出现在 else 子句之后。块 if 语句可以嵌套,即彼此包含。
检查
要显示各种方法,请选中“显示继承的属性 (Show Inherited Attributes)”
框。
使用函数时,需要 > 运算符。
(for all)Prod1:Product ; Prod2:Product
if Prod1 > Prod2 and ClashOrContact("Clash", Prod1,Prod2)
Message ("Products clashing are # and #", Prod1 > Name(),Prod2 > Name())
您可在“规则编辑器 (Rule Editor)”或“检查编辑器 (Check Editor)”中使用下述控制结构。
if(Hole.HoleType == "Simple")
{
Hole.Diameter = 24mm;
}
KWE 语句中支持 and 和 or 。
若要在符合某个特定条件时执行一个语句,不符合条件时执行另一个语句,则请创建两个不同的规则或检查,即如何在其他语言中提供“else”功能。
if condition statements [else elsestatements ]
或
if condition
{ statements }
[else if condition-n
[ { elseifstatements } ] ] . . .
[else
[ { elsestatements } ] ]
statement1 => statement2 (if statement1 then statement2)
每当满足 statement1 而 statement2 无效时都将显示消息(若类型为警告或信息),并在结构树中变为红。
if ... then ... else 构造
if then else
语句用于条件计算。else 语句是可选的。语句可以嵌套,即彼此包含。
while
构造
若表达式判别为 true
,则 while 循环用于执行语句。
for 构造
请注意,if...lse
构造仅适用于: 使用 KWE 高级语言创建的检查。
规则。在本示例中,使用 KWE 语言。
H:Hole
if H.Diameter > 20mm
ThisCheck > AddTupleFailed(H)
else ThisCheck > AddTupleSucceeded(H)请注意,while 构造仅适用于: 使用 KWE 高级语言创建的检查。 规则。在本示例中,使用 KWE 语言。
let Mylist(List)
let childrenCheck(KWECheck)
let i = 1
let condition = 0
Mylist = H.DirectChildren
for i while condition == 0 AND i <= Mylist.Size()
{
childrenCheck = Mylist.GetItem(i)
if (childrenCheck.Name == "TargetCheck")
{
ThisCheck.AddTupleFailed(childrenCheck)
condition = 1
}
}
请注意,for 构造仅适用于:
使用 KWE 高级语言创建的检查。
规则。在本示例中,使用 KWE 语言。
for 基于列表元素执行循环。请参见右侧语法:将执行 N 次语句,其中 N 是列表元素的数量。 示例中:
x 是变量名称(给定类型),可以表示一个对象或一个值。
List 是类型列表的变量名称或返回列表的表达式。
x (与其他语言变量一样)可以在几何体中使用,其包含列表的第 N 个元素。 For x inside List
{ … Body …
} 示例
let Mylist(List) let children(KWERuleSet) Mylist = H.DirectChildren
for children inside Mylist
{
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论