目录
1、数学函数 ............................................................................................ 2-3 2、分析运算符 ........................................................................................... 4 3、测量 ................................................................................................... 5-6 4、零件测量 ............................................................................................... 7 5、核心工程语言(C-EKL) ......................................................................... 8 6、控制结构 .......................................................................................... 9-13 7、设计表方法 .................................................................................... 14-21 8、关键字 ............................................................................................ 22-25 9、列表 ............................................................................................... 26-28 10、消息 ............................................................................................. 29-32 11、字符串 .......................................................................................... 33-37 12、方向构造函数 ................................................................................... 38 13、圆构造函数 .................................................................................. 39-40 14、线构造函数 .................................................................................. 41-42 15、点构造函数 .................................................................................. 43-45 16、平面构造函数 ................................................................................... 46 17、曲面构造函数 ................................................................................... 47 18、线框构造函数 .............................................................................. 48-49
1
1、数学函数
示例(说明插值):KwrInterpolations.CATPart 注意,余弦函数的输入应当是一个角度,尽管其签名允许实
数。因此,举例来说,在“公式 (Formula)”编辑器中,cos(3.14) 等同于 cos(3.14 * 1rad)。但显示一条警告。注意, 这也适用于正弦和切线函数。
abs(Real):Real 计算参数的绝对值。
ceil(Real):Real
返回大于或等于参数中指定值的最小整数值。
floor(Real):Real
返回小于或等于参数中指定值的最大整数值。
int(Real):Real
返回参数的整数部分。
min(Real,Real):Real, max(Real,Real)
返回在参数中指定的一组值中的最小值或最大值。
sqrt(Real):Real 返回平方根。
log(Real):Real 返回对数。
ln(Real):Real 返回自然对数。
round(Real):Real
Round 将 x.5 形式的数值舍入为与它最接近的偶数。
round(Real, String, Integer):Real
返回舍入后的数字。该方法适用于需要单位的类型(长度、角度、...)。
“Real”是要舍入的实数(例如 13.552)。
“String”是单位(例如“mm”)。 “Integer”对应于要在小数点后面显示的位数。
2
exp(Real):Real 返回指数。
LinearInterpolation(arg1:Real, arg2:Real, arg3:Real) :Real
应在从法则曲线创建平行曲线时使用。 示例:
1 - 在“创成式外形设计 (Generative Shape Design)”工作台创建一条直线 2 - 访问“知识工程顾问 (Knowledge Advisor)”工作台并创建下面的法则曲线: FormalReal.1 = LinearInterpolation(1,9,FormalReal.2)
3 - 返回“创成式外形设计 (Generative Shape Design)”,创建一条平行曲线。选择法则 曲线模式,并指定上面的法则曲线作为要应用的法则曲线。
CubicInterpolation(arg1:Real, arg2:Real, arg3:Real) :Real
应在从法则曲线创建平行曲线时使用。 示例:
1 - 在“创成式外形设计 (Generative Shape Design)”工作台创建一条直线 2 - 访问“知识工程顾问 (Knowledge Advisor)”工作台并创建下面的法则曲线: FormalReal.1 = CubicInterpolation(1,50,FormalReal.2)
3 - 返回“创成式外形设计 (Generative Shape Design)”,创建一条平行曲线。选择法则 曲线模式,并指定上面的法则曲线作为要应用的法则曲线。
mod(Real,Integer):Real 给出 Integer 除 Real 的余数。 语法:mod(Real,Integer):Real 样例:Mod.CATPart
Cos(Real):Real, cosh (Real):Real 计算余弦 (cos) 或双曲余弦 (cosh)。 示例 Real.1 = cos(PI*1rad/4) Real.1 = cos(45deg)
tan(Real):Real, tanh(Real):Real 计算正切 (tan) 或双曲正切 (tanh)。
sin(Real):Real, sinh(Real):Real 计算正弦或双曲正弦。
3
asin(Real):Real, asinh(Real):Real 计算反正弦或反双曲正弦。
acos(Real):Real, acosh(Real):Real 计算反余弦或反双曲余弦。
atan(Real):Real, atanh(Real):Real 计算正切或双曲正切。
max(arg1:Real, arg2:Real, ...):Real 返回最大的参数。
min(arg1:Real, arg2:Real, ...):Real 返回最小的参数。
not(Boolean):Boolean 表示与圆括号内的表达式相反的结果。 示例:not(A==B) 等同于 A<>B。
要使这些方法有效,只应使用实数。
2、分析运算符
energy (Case:StaticSolution) 计算静态解的全局能。
misesmax (Case:StaticSolution) 计算节点的冯米斯应力的最大值。 示例
misesmax.1=misesmax(\"Finite Element Model Static Case Solution.1\")
dispmax (Case:StaticSolution) 计算节点的最大位移。 示例
length.1=dispmax(\"Finite Element Model Static Case Solution.1\")
frequency (Case:FrequencySolution) 计算给定的频率。 示例
Frequency.1=Frequency(\"Finite Element Model
Frequency Case
4
Solution.1\")
frequencies (Case:FrequenciesSolution) 计算所有的频率。 示例
FrequenciesList.1=Frequencies(\"Finite Element Model
Frequencies Case
Solution.1\")
globalerror (Case:StaticSolution) 计算静态盒的全局错误百分比。 示例
percentage.1=globalerror(\"Finite Element Model Static Case Solution.1\")
bucklingfactors (Case:BucklingSolution) 计算纵向弯曲因子的列表。 示例
Bucklingfactors.1=BucklingFactors(\"Finite Element Model
Buckling Case
Solution.1\")
dispmaxongroup (Case:AnalysisResults, Group:Group):Length 计算节点的最大位移。它适用于一组项。
reaction (Entity:EntityForReaction,Case:StaticSolution, Axis:Axis
System))
计算在连接或边界条件下的反应。
3、测量
测量是通过从几何区域捕获的数据计算结果的函数。测量是应用程序相关对象,如果没有安装正确的产品(例如,零件设计或创成式外形设计),它们将不会显示在词典中。
示例:KwrMeasuresWiz.CATPart
distance (Body, Body):Length 返回零件的两个几何体之间的距离。
minimumCurvatureRadius (Curve):Length
对于尺寸为 1 的项(曲线),用户可以测量曲率的最小半径。
nbDomains (Body):Integer
5
对于所有类型的项,用户可以计算域数。 length (Curve):Length 返回曲线的总长度。
length (Curve, Point, Boolean):Length 返回位于 Point1 与某个曲线端点之间的曲线段的长度。 修改布尔值可以检索从指定点到另一端的长度。
length (Curve, Point, Point):Length 返回被两个点定界的曲线段的长度。
area (Surface):Area
返回由创成式外形设计产品(例如拉伸曲面)生成的曲面面积。 area (Curve):Area 返回被曲线定界的面积。
perimeter (Surface,...):Length 返回曲面的周长。它接受包含多个曲面特征的输入。周长函数将每个曲面的周长相加。返回 值是长度。
Point->coord (x:out Length, y:out Length, z:out Length):Void Type
使用户可以计算点坐标。
Point->coord (rank:Integer):Length
返回点的坐标。如果指定 1 则返回 X,如果指定 2 则返回 Y,如果指定 3 则返回 Z。
Body->centerofgravity (x:out length, y:out length, z:out length):Void Type
使用户可以计算重心。
volume (closed_surface:Surface, ...):Volume 返回闭合曲面的体积。
volume (Volume geometry,...):Volume 返回立体几何图形的体积。
angle (Center:Point, Pt1:Point, Pt2:Point):Angle 返回“C-Point1”线和“C-Point2”线之间的角度。
angle (Direction, Direction):Angle
6
返回两个方向之间的角度。 angle (Line, Line):Angle 返回两条线之间的角度。
angle (Plane, Plane):Angle 返回两个平面之间的角度。
angleoriented (Direction, Direction, Direction):Angle 返回两个方向之间由第三个方向定位的角度。 angleoriented (Line, Line, Direction):Angle 返回两条线之间由方向定位的角度。
angleoriented (Plane, Plane, Direction):Angle 返回两个平面之间由方向定位的角度。 curvature (crv:Curve, pt:Point):Real 返回曲线在给定点的曲率。
distancedir (Body, Body, Direction):Length 返回零件的两个几何体之间由方向定位的距离。
4、零件测量
smartVolume 和 smartWetarea 是指实体的中间状态。smartVolume 不计算包含 在零件几何体中的每个凸台的体积,但计算总体积。
示例:已知包含 3 个凸台的零件几何体:Pad.1 的体积 = 0.1m3、Pad.2 的体积 = 0.1m3 和 Pad.3 的体积 = 0.1m3。显示的 Pad.3 的体积为 Pad.3 = 0.3M3。 Pad.3 的体积 = Pad.1 的体积 + Pad.2 的体积 + Pad.3 的体积。
注意,这也适用于 smartWetarea(计算潮区域的总数)。
smartVolume(elem:Solid, ...):Volume 返回实体的体积。
示例 Total_Volume= smartVolume(PartBody)
smartWetarea(elem:Solid, ...): Area 返回实体的潮区域。
7
示例 Total_Area=
smartWetarea(PartBody
Pad.1 )
5、核心工程语言(C-EKL)
请注意,此语言继承数学工程语言 (M-EKL) 的组成内容。
C-EKL 添加如下语言元素:
控制结构的关键字,如:规则中的条件语句“if... then... else”。
特定函数,如:专用于用户输入的消息和提示、几何图形构造或字符串和列表操作等的 函数。
其它运算符,例如“=>”运算符,它相当于检查时所用的一种意思为“意味着”的关键字。
C-EKL 用于以下知识工程项目,这些项目通过其参数与更新过程相关:
公式
设计表 知识工程顾问产品中提供的规则和检查。
规则、检查、公式和设计表是集成到 CATIA V5 更新过程的对象。要符合更新过程,重 要的是这些对象仅将参数作为输入或输出(参数为单值、列表或几何基准)进行操作。建 议不要使用它们访问那些对象的属性或调用方法。
知识工程模块和扩展函数
设计表 列表 运算符 圆构造函数 线构造函数 平面构造函数 线框构造函数
关键字 数学函数 字符串 方向构造函数
测量 点构造函数
法则曲线 消息 分析运算符 电气函数 零件测量 曲面构造函数
8
属于知识工程产品的运算符。
属于非知识工程产品的运算符和构造函数。
下面提供的信息是使用 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(\"Y\") < x.SetAttributeReal(\"Y\ } 有关 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
执行以下操作的不同方式
写入值
假设 p 是长度类型的参数。
let p1 = 12mm let p2 = 7 mm let x = 3mm let pt (Point)
x=p // 将 p 的值赋值给变量 x x=p+3 // 读取 p
pt.coord (p,p1,p2) // p 由带有输出参数的变量赋值
此类参数与局部变量具有完全相同的行为。
写入输入对象
假设 H1 是孔 (Hole.1)
let x = 0 mm let H3 (Hole) let H4 (Hole) H1.Diameter = 3mm // 对属性赋值 X=H1.Diameter+3mm // 读取属性 H3=H1 // H3 指向 Hole.1 H4=H3 // H4 变量指向由 H3 指向的特征 处理此类对象类似处理常量变量。同一类型的局部变量具有与此相似的行为。编写输出对象:基准
假设 D1 和 D2 是 2 个现有的几何基准。
let S1 (Surface) let S2 (Surface) let P1(Point) S1 = S2 // 变量 S1 指向由变量 S2 指向的特征 S1 = D1 // 变量 S1 指向基准特征 D1 D1 = D2 // 将 D2 的几何结果复制到 D1 中 13
D1 = S1 // 将由 S 指向的特征的结果复制到 D1 中 a = area(D1) // 作为输入参数传递 D1 = point (0mm,0mm,0mm) // 将点的几何结果复制到 D1 中 P1 = point (0mm, 0mm, 0mm) // 变量 S 指向点运算符的结果(局部特征)
无法创建基准的局部变量,但可以通过知识工程类型使用基准。
编写输出对象:列表
假设存在 2 个列表:L1 和 L2 let L3(List) L1.Size() // L1 作为输入 L1=L2 // 内容受到影响 L3=L1 // 内容受到影响
7、设计表方法
CloserSupConfig 方法 CloserInfConfig 数 MinInColumn 函数 函 CloseValueSupInColumn 方法 MaxInColumn 方法 CellAsBoolean 方法 LocateInRow 方法
CloseValueInfInColumn 方法 LocateInColumn 方法 CellAsReal 方法 CellAsString 函数 SetCell 方法
Sheet.CloserConfig
CloserSupConfig()
适用于设计表图纸。返回配置,该配置包含大于或等于给定参数值的最小值。如果几个配置满足 此条件,该方法将按照参数列表中指定的列顺序挑选出可能的配置。
语法
sheet.CloserSupConfig(columnName:String, minValue:Literal, ...):Integer
CloserSupConfig 函数使用以下参数:
参数 columnName 描述 应放在引号中。至少需要一组参数 columnNamei/minValuei 14
minValue
必选。应指定单位。
示例
假定下面的设计表:
1 2 3 4 SketchRadius(mm) 120 130 120 140 PadLim1(mm) 60 50 60 50 PadLim2(mm) 10 30 25 40
表达式如下:
Relations
DesignTable1
sheet_name.CloserSupConfig(\"PadLim1\
\"SketchRadius\ 返回 3
CloserInfConfig()
适用于设计表图纸。返回配置,该配置包含小于或等于给定参数值的最大值。如果几个配置满足 此条件,该方法将按照参数列表中指定的列顺序挑选出可能的配置。
语法
sheet.CloserInfConfig(columnName:String, maxValue:Literal, ...):Integer
CloserInfConfig 方法使用以下参数:
参数 columnName maxValue
描述 应放在引号中。至少需要一组 columnName/maxValue 必选。应指定单位。
示例
假定下面的设计表:
1 2 SketchRadius(mm) 120 130 PadLim1(mm) 60 50 PadLim2(mm) 10 30 15
3 4 120 140 60 50 20 40
语句如下
Relations
DesignTable1 sheet_name.CloserInfConfig(\"PadLim1\
60mm, \"SketchRadius\ 返回 3。
说明
线 1、2 和 3 的值都小于或等于在方法参数中指定的值。
因为在参数列表中指定的第一参数是“PadLim1”,因此方法将扫描线 1、2 和 3,并 搜索最大的“PadLim1”值(小于或等于 60 mm)。两个配置符合条件:配置 1 和配置 3。
因为指定的第二参数为“SketchRadius”,因此方法将扫描配置 1 和 3,并搜索最大的
“SketchRadius”值(小于或等于 130 mm)。函数再次找到两个符合条件的配置。 然后,
方法重新扫描线 1 和 3 并搜索最大的“PadLim2”值(小于或等于 40mm)。 结果为线 3。
CloserValueSupInColumn()
适用于设计表图纸。扫描列的值并返回最大的单元格值(最接近于指定值的值)。如果未找到任 何值或者未正确指定方法参数,则返回 0。
语法
sheet.CloserValueSupInColumn(columnIndex:Integer, Value:Real)
CloserValueSupInColumn 方法使用两个参数:
参数 columnIndex Value
描述 必选。表的列索引。从 1 到 n 的整数。 必选。搜索的值。应当为一个实数。
示例
ValueSup=Relations DesignTable1 sheet_name.CloserValueSupInColumn(1, 16
80mm)
Message(\"Closest sup value is # (0.08 is expected)\
CloserValueInfInColumn()
适用于设计表图纸。扫描列的值并返回最小单元格值(最接近于指定值的值)。如果未找到任何 值或者未正确指定方法参数,将返回 0。
语法
sheet.CloserValueInfInColumn(columnIndex:Integer, value:Real):Real
CloserValueInfInColumn 函数具有两个参数:
参数 columnIndex value
描述 必选。表中列的编号或索引。从 1 到 n 的整数。 必选。搜索的值。应当为一个实数。
示例
Message(\"Closest inf value is # \
Relations
DesignTable1
sheet_name.CloserValueInfInColumn(2,41mm))
MinInColumn() 适用于设计表图纸。返回最小列值。如果指定的
列超出范围,则返回 0。 语法
sheet.MinInColumn(columnIndex :Index):Real
其中 columnIndex 为列编号。
17
示例
MinimumValue=MinInColumn(3) Message(\"Minimum value is # (0 is expected)\/* you can use also */ Message(\"Minimum value is # (0 is expected)\
样例
KwrProgramDT.CATPart
MaxInColumn() 适用于设计表图纸。返回最大列值。如果列不包含数字值或没有正确指
定方法参数,则返回 0。 语法
sheet.MaxInColumn(columnIndex:Integer):Real
示例
MaximumValue=Relations
DesignTable1
sheet_name.MaxInColumn(1)
Message(\"Maximum value is # (0.150 is expected)\
LocateInColumn()
适用于设计表图纸。返回包含指定值的第一行的索引。如果未找到该值或没有正确指定该方法的 参数,将返回 0。
语法
sheet.LocateInColumn(columnIndex:Integer, value:Literal) :Integer
LocateInColumn 方法具有两个参数:
参数 描述 18
ColumnNumber Value
必选。表中列的编号或索引。从 1 到 n 的整 必选。搜索的值。可以为字符串或布尔值
示例
Line=Relations DesignTable1 sheet_name.LocateInColumn(4,11mm)
if (Line == 0) { Message(\"No value found \") }
CellAsString()
适用于设计表图纸。返回一列中某个单元格的内容。如果该单元格为空或没有正确指定方法参数, 则返回空字符串。
语法
sheet.CellAsString(rowIndex:Integer, columnIndex:Integer):String
其中 rowIndex 为配置编号,columnIndex 为列编号。
示例
CString=Relations DesignTable1 sheet_name.CellAsString(1,5)
if (CString == \"\") { Message(\"No value read \") }
CellAsBoolean()
适用于设计表图纸。返回专用于布尔值的列中单元格的内容。如果单元格中不包含布尔值或没有 正确指定方法参数,则返回 false。
19
语法
sheet.CellAsBoolean(rowIndex:Integer, columnIndex:Integer):Boolean
CellAsBoolean 方法具有两个参数:
参数 rowIndex columnIndex
描述 必选。配置编号。从 1 到 n 的整数。 必选。表的列索引。从 1 到 n 的整数。
示例
Boolean2=Relations DesignTable1 sheet_name.CellAsBoolean(1,5)
if (Boolean2 <> true) { Message(\"Error \") }
CellAsReal()
适用于设计表图纸。返回专用于实数值的列中单元格的内容。如果该单元格不包含实数或没有正 确指定方法参数,则返回 0。
语法
sheet.CellAsReal(rowIndex:Integer, columnIndex:Integer):Real
其中 rowIndex 为配置编号(从 1 到 n 的整数),columnIndex 为列数。
SetCell()
使您能够填充位于 Excel 文件或表文件内给定位置的单元格。 请注意:索引应该在左上角的 (1,1) 单元格中从 1 开始。
20
语法
sheet.SetCell(IndexRow:Integer, IndexColumn:Integer, CellValue:Literal):Void
LocateInRow()
适用于设计表图纸。返回包含指定值的第一行的索引。如果未找到该值或没有正确指定该方法的 参数,则返回 0。
语法
sheet.LocateInRow(rowIndex:Integer, value:Literal) :Integer
LocateInRow 方法具有两个参数:
参数 RowNumber Value
描述 必选。表中行的编号或索引。从 1 到 n 的整数。 必选。搜索的值。可以为字符串或布尔值
Sheet.CloserConfig()
该方法使您可以根据混合大于(或等于)和小于(或等于)条件找到设计表的最接近配置。
其中:
columnName < , <= , > , >= , == , != value == 或 != 或 ,将采用 != 时使用该方法)。如果 sortmethod 不是 。 == == 21 示例: Sheet.CloserConfig( column1 column3 , , < != , 10mm, , column2 standard , >= 下: , 20deg, )可以解释如 找到满足以下条件的配置: column1 中的值必须小于 10mm, column2 中的值大于或等于 20deg column3 中的值与标准字符串不同。 请注意: 如果多个配置有效,将找出与 界限 值最接近的配置。如果仍然有多个配置有效, 则返回第一个有效值。 如果没有有效 配置,则返回 0。 8、关键字 if...else else... if ... let for set inside while 使用布尔值参数 true 和 false 时,须确保使用这些值的英文形式。不要使用本国语言中 与 true 和 false 等效的词汇。 if...else ... else...if 规则 if ... else ... else if 根据表达式的值有条件地执行一组语句。或者可以使用块成型语法: if condition statements [else elsestatements ] or if condition { statements } [else if condition-n [ { elseifstatements } ] ] . . . [else 22 [ { elsestatements } ] ] 对于简短的规则,可以使用单 行成型(第一个语法)。但是块成型(第二个语法)比单 行语句提供了更多的结构和灵活性,并且通常更易于读取、维护和测试。 else 和 else if 子句都是可选子句。可以在块 if 下有多个 else if 语句,但它们都 不能出现在 else 子句后面。块 if 语句可以彼此嵌套(即包含)。 检查 检查只能读取参数。因此,不能在输出中使用具有自变量的函数。 Relations Formula.1 Activity == false 检查可使用特定的关键字 =>。statement1 => statement2 (if statement1 then statement2)。 每次 statement1 满足而 statement2 无效时都将显示消息(如果类型是警告或信息)并在 结构树中变为红色。 OK => KO KO => KO KO => OK OK => OK For 语句 请注意,For 语句只能用于动作脚本和反应脚本。 For 关键字的第一种用法是基于列表中元素的循环。请参见旁边 et List.1(List) 的语法。 let x(Point) 其中: For x inside List { x 是变量名(类型给定。它可以表示一个对象或一个值)。 Body if (x <> x 可以在几何体中使用(与语言的其它变量一样)。它包 NULL) 含与当前迭代相对应的列表中的元素。 } 列表是类型列表的变量名或返回列表的表达式。 23 几何体将执行 N 次,其中 N 是列表中元素的数量。 For 关键字的第二种用法是执行循环,直到某个表达式为 false。 For x while predicate 请参见旁边的语法。 { 其中: } Body x 是整数类型的变量名。它在每次执行几何体后都会渐 增。 谓词是布尔表达式。只要此表达式为 true,就会执行主 体。此表达式在几何体前赋值。 请注意,For 运算符的第二种用法可能导致无限循环。 While 语句 此循环在表达式变为 false 前一直执行。请参见旁边的语法。 let i = 1 let x(Point) 其中: for i i 是整数类型的变量名。它在每次执行几何体后都会 i<=parameter.Size() 渐增。 { X 是点的变量。 while x = parameter.GetItem(i) if (x.GetAttributeReal(\"Y\") < 0.04) x.SetAttributeReal(\"Y\} let 使用 let 关键字可在脚本开头声明临时变量。规则执行结束后,临时变量不会持续作为参数。 /*Rule created by CRE 08/23/99*/ let x = 5 mm if PartBody Hole.1 Diameter > x { PartBody Hole.1 Activity = false 24 } 对于非数字值,必须指定类型: let S(Surface) S= split (...,...) 临时变量应在指定任何条件指令前在规则开头声明。 let S1(Surface) let S2(Surface) let S3(Surface) S1 = Split ... S2 = ... S3 = ... set 如果要操作类型,可以使用 set 关键字来设置此类型的变量并直接键入属性来读取和/或写入它 的特性。 /*You can start from an object in a variable x and want to manipulate it as a Hole. To do so, use the set keyword to indicate that you want to manipulate the object as a Hole*/ let y(Hole) set y = x if (y <> NULL) Message ( Hole diameter is # ,y.Diameter) 评价方法 允许您计算法则曲线是知识工程顾问法则曲线还是创成式外形设计法则曲线,并允许在另一个法 则曲线内使用结果数据。 语法 law.Evaluate(Real):Real 其中,参数为应用法则曲线的参数。 25 示例 1. 创建创成式外形设计直线。 2. 在“标准 (standard)”工具栏单击 图标以创建第一条法则曲线。 3. 在“法则曲线编辑器 (Law Editor)”中,创建两个实型形参。 4. 将下面的法则曲线 (Law.1) 输入到编辑器中: FormalReal.1 = 5*sin(5*PI*1rad*FormalReal.2)+ 10 5. 单击“确定 (OK)”按钮将此法则曲线添加到文档中。 6. 重复同样的操作,并输入下面的法则曲线 (Law.2): FormalReal.1 = 3* FormalReal.2*Relations Law.1.Evaluate(FormalReal.2) 7. 在“创成式外形设计 (Generative Shape Design)”工作台中,创建一条直线,使其平 行于在步骤 1 中创建的直线。在“偏移 (Offset)”字段中指定上面定义的法则曲线。 9、列表 列表方法用于管理参数、凸台等的列表它们允许您创建列表、将项添加到列表、从列表中移除项、 从列表中检索值、将列表中的元素移动到其它位置、过滤以及将列表的内容复制到其它列表中。 下面描述的函数可在公式、规则和“动作 (Action)”编辑器中使用。 List->Size () :Integer 26 用于返回列表中包含的项数的方法。 List->GetItem (Index:Integer) :ObjectType 用于从列表中检索值/项的方法。(索引从 1 开始)。 Copy (List:List):List 用于将列表内容复制并粘贴到另一个列表的方法。 List (Next:ObjectType, ...):List 用于创建列表的方法。 List(Item1, Item2, Item3) List->Sum ():Real 计算包含在列表中的项的总和。仅适用于整数和实数。 List->IndexOf (Element:ObjectType, StartIndex:Integer):Integer 返回列表项的第一个索引。从“开始索引”开始搜索项。 下面描述的函数仅在“动作 (Action)”编辑器中可用。 List->AddItem (Object:Objecttype, Index:Integer):VoidType 用于向列表中添加项的方法。如果索引等于 0,则在列表末端添加新项。如果索引等于 1, 则新项插入到索引指示的列表位置,表示现有项被新项替换,从而从列表中被移除。建议使 用 InsertItem 方法。 let list (List) list->AddItem(PartBody Hole.2 ,1) Hole.3 ,2) list->AddItem(PartBody Message(\"#\List->InsertItem (Object:ObjectType, Index:Integer):VoidType 用于将项插入到列表中的方法。其中: Object 是要插入到列表中的对象。 Index 是对象插入到列表中的位置。 List->Append (Object:ObjectType) 27 用于将项添加到列表末端的方法。其中: Object 是要插入到列表中的对象。 List->SetItem (Object:ObjectType, Index:Integer):VoidType 用于替换列表中项的方法。其中: Object 是要插入到列表中的对象。 Index 是列表中要替换对象的位置。在这种情况下,将删除要被替换的对象。 List->RemoveItem (Index:Integer) :VoidType 用于移除列表中项的方法。 List->RemoveAll():VoidType 清空列表。 List->ReorderItem (Current:Integer, Target:Integer ) :ObjectType 用于将列表中由其位置所引用的元素移动到新位置的方法。 List->Compute(Operation:String, Type:String, Expression:String, Result:out UndefinedType):VoidType 该函数用于计算在列表中特征所支持的属性上执行的运算的结果。 示例: List.1 .Compute(\"+\ 其中: List.1 是将执行计算的列表的名称。 + 是使用的运算符。(支持的运算符有:+、min 和 max。) Hole 是用于计算的列表项的类型(要计算直径,需指定 Hole 类型;要计 算体积,需指定 Solid 类型) x 代表列表项。注意,列表中包含的项的类型应该相同。 Length.1 是输出参数。 注意,该方法可在动作、反应和知识工程专家中使用。 List->Apply (Type:String, Expression:String):VoidType 将给定的表达式应用到列表中具有给定类型的对象上。 示例: //Finds all rule bases and executes them Expression1 (P:#In PartFeature) 28 { /* Finding a value */ let L (List) L = P->Query( Rulebase , ) L->Apply ( RuleBase , x->Update() ) } List->Filter(Type:String, Condition:String):List 该方法通过提取满足布尔表达式的对象,来过滤对象列表。 该方法具有以下签名: List.Filter(String TypeName,String Expression) :List TypeName 是用户要提取的对象类型(内容可以为 。在这种情况下,将不过滤类型) 第二个字符串表达式对应于必须满足此给定类型对象的布尔表达式。在该表达式中, x 用作类型 TypeName 的变量名。该字符串可以等于 。在这种情况下,将不选中任何表达式。 示例: I = (List->Filter( Hole , x.Diameter > 3mm )).Size() I = (List->Filter( Hole , )).Size() 10、消息 Message 函数 Question 函数 Trace Message 函数 在信息框中显示消息。消息可以包含一个或多个参数值。 语法 29 Message(String [# String1 # String2 ..., Param1Name, Param2Name, ...]) : Void Message 函数有一个必选参数和多个可选参数,可选参数取决于是否在消息中显示参数值。 参数 String # String1 描述 必选。将在信息框中显示的字符串(应括在引号内)。 , 可选。要在消息中显示参数值时,应按以下方式指定参数: 任何将显示参数值的位置都有一个带引号的字符串,包括 符号 # Param1Name... [, parameter name] 语句的数量和消息中以“#”声明的 参数值的数量相同。 使用“|”符号在消息中插入回车。 示例 1 Message(\"External radius is:# | Internal Radius is: #\PartBody PartBody Sketch.1 Hole.1 Radius.3 Diameter) Radius, 示例 2 请注意,该函数可以和 buildMessageNLS 函数一起使用 Message (BuildMessageNLS(\"KwrCATCatalog.CATNls\ 请注意,可以将 Message 函数和 BuildMessageNLS 函数一起使用,以便使用您的语 言显示问题。若要使用此功能,请使用下面的语法: Message(BuildMessageNLS (\"x\ x 对应于 CATXXX.CATNls 文件名,将在该文件中找到 NLS 消息(它是没有 CATNls 扩展名的 CATXXX 名称)。 xx 对应于该目录中的关键名称。 a 和 b 是参数(将在消息中替换的值) 30 Question 函数 在对话框中显示消息,等待您单击按钮并返回一个值,该值将指示单击了哪个按钮(如果单击“是 (Yes)”则返回 true,如果单击“否 (No)”则返回 false) 语法 Question(String [# String1 # String2 ..., Param1Name, Param2Name, ...]): Boolean Question 函数有一个必选参数和多个可选参数,可选参数取决于是否在消息中显示参数值。 参数 String # String1 描述 必选。要在对话框中显示的字符串(应括在引号内)。 , 可选。要在消息中显示参数值时,应按以下方式指定参数: 任何将显示参数值的位置都有一个带引号的字符串,包括 符号 # Param1Name... [, parameter name] 语句的数量和消息中以“#”声明的 参数值的数量相同。 使用“|”符号在提示中插入回车。 示例 Boolean2 = Question(\"SketchRadius is # | Do you want to change this value ?\ PartBody Sketch.1 Radius.3 Radius ) 请注意,可以将 Question 函数和 BuildMessageNLS 函数一起使用,以便使用您的语 言显示问题。若要使用此功能,请使用下面的语法: question(BuildMessageNLS (\"x\ x 对应于 CATXXX.CATNls 文件名,将在该文件中找到 NLS 消息(它是没有 CATNls 扩展名的 CATXXX 名称)。 xx 对应于该目录中的关键名称。 a 和 b 是参数(将在消息中替换的值) 31 Trace 函数 使您可以在文件中写入信息,例如用于调试。若要执行此操作,请给 CATKnowledgeTracePath 变量赋值(例如,设置 CATKnowledgeTracePath=E:\\Temp\\CATKnowledge_UserDefined.txt)。如果该变量 为空,则跟踪文件的默认名称是 CATKnowledgeTrace_YYYY-MM-DD_HH-MM-SS.txt。该 文件位于 CATTemp 目录(例如:C:\\Documents and Settings\\Local Settings\\Application Data\\DassaultSystemes\\CATTemp\\CATKnowledgeTrace_2005-8-8_16-28-20.txt) 中。 语法 Trace(level:Integer, message:String, argument:Literal, ...): VoidType 其中: level 由 1 和 9 之间的数字组成,用于缩进跟踪 message 用法与 message 函数相同 argument 中 # 的数量与参数一致。如果参数多于 #,将在消息结尾处添加参数。如果 # 多于参数,将不替换 # 字符。 请注意: 使用“|”符号可在提示中插入回车。 # 由参数值替换。 示例 Trace(Integer.1 , \"MyMessage...Param1:#, Param2:#\.1, String.1) 生成的 .txt 文件与以下文件相似: 32 11、字符串 Search() ToString() ToUpper() Extract() ToReal() ToLower() Length() ReplaceSubText() BuildMessageNLS Search() 在字符串类型的参数中搜索子字符串的第一个匹配项。返回该子字符串开头处的索引(0 或 1)。 如果未找到指定的子字符串,则返回 -1。 语法 string.Search(StringToBeSearchedFor):Integer 其中 StringToBeSearchedFor 是子字符串参数的名称。 示例 Responsible = Cilas Evans = ... SEvans = Evans I1Search = 6 = Responsible.Search(SEvans) 样例 33 KwrString.CATPart Extract() 返回从给定位置开始的指定 长度的子字符串。 语法 string.Extract(StartIndex:Integer, Length:Integer) :String 其中 StartIndex 是子字符串第一个字符的索引(0 或 1),Length 是子字符串长度。示例 Message (Responsible.Extract(2,2)) 样例 KwrString.CATPart Length() 适用于字符串类型的参数。返 回字符串长度。 语法 string.Length(Integer 样例 KwrString.CATPart ToString() 34 将整数转换为字符串。 语法 ToString(Real) :String 样例 KwrString.CATPart ToReal() 将字符 串转换为实数。 语法 String.ToReal(Real):Real ReplaceSubText() 用一个子字符串替 换字符串中的另一个子字符串。 语法 ReplaceSubText(InputString:String, SubStringToBeReplaced:String, ReplacingSubString:String):String 可以通过参数的名称或字符串本身(用引号括起来)来指定第二个参数和第三个参数。样例 KwrString.CATPart 35 ToUpper() 将字符串中的所有小写字母 更改为大写字母。 语法 ToUpper(StringTobeConverted:String):String 其中 StringTobeConverted 是字符串类型参数的名称。 样例 KwrString.CATPart ToLower() 将字符串中的所有大写字母 更改为小写字母。 语法 ToLower(StringTobeConverted:String):String 其中 StringTobeConverted 是字符串类型参数的名称。 样例 KwrString.CATPart BuildMessageNLS 使您可用自选的语言通过 Message 和 Question 函数发送消息或提出问题。 BuildMessageNLS 函数可以通过在 CATXXX.CATNls 文件中查找来生成 NLS 消息(使用 给定语言的消息)。 36 注意,当与 Message 和 Question 函数一起使用时,此函数非常有用。若要了解有关这两个 函数的详细信息,请参见知识工程顾问文档。 语法 BuildMessageNLS(MessageCatalog:String, MessageKey:String, argument:Literal, ...):String 其中: MessageCatalog:String 是 CATXXX.CATNls 文件的名称,将在此文件中查找 NLS 消息(它是不带 CATNls 扩展名的 CATXXX 名称)。 MessageKey:String 是此目录中的关键字名称 argument:Literal, ... 是消息中将要被替换的值。 示例 KwrCATCatalog.CATNls 文件包含以下文本。 Zero = \"Zero\"; One = \"One /P1\"; Two = \"Two /P1 /P2\"; Zero、One 和 Two 是消息。第一条消息没有参数,第二条有一个参数,第三条有两个参数。 例如,要在“知识工程顾问 (Knowledge Advisor)”规则中显示这些消息,请输入以下规则几何 体: Message (BuildMessageNLS(\"KwrCATCatalog\ 或 Message (BuildMessageNLS(\"KwrCATCatalog\ 其中 x 是参数。 或 Message (BuildMessageNLS(\"KwrCATCatalog\ 其中 y 和 z 是参数。 37 如果此函数未找到该关键字或该 .NLS 目录,它将返回一个空字符串。 如果与消息的参数数目相比,参数的数目太多,则会忽略这些参数。 如果与消息的变量数目相比,参数的数目太少,则会用“”字符串代替这些参数。 注意,.NLS 文件将存储在运行时视图中(在 msgcatalog 目录下) 12、方向构造函数 注意:在 f(x) 中不能使用“新建参数类型 (New Parameter of type)”功能创建方向对象,而 是必须在向构造函数传递方向类型参数时,在其它构造函数中使用它们。下面提供了示例。 示例:请参见 KwrLineConstructors.CATPart 和 KwrPointConstructors.CATPart direction (x:Length, y:Length, z:Length):Direction 创建一个由参考轴原点和坐标由函数参数指定的点定义的方向。 示例: Geometrical Set.1 Point.1 = pointtangent (Geometrical Set.1 Spline.1, direction (10mm,10mm,10mm)) direction (Line):Direction 通过线创建方向。 示例: Geometrical Set.1 Point.1 = pointtangent (Geometrical Set.1 line3)) Spline.1, direction (Geometrical Set.1 direction (Plane):Direction 通过平面创建方向。 示例: Geometrical Set.1 Point.1 = pointtangent (Geometrical Set.1 Spline.1, direction (`zx plane`)) 13、圆构造函数 示例:KwrCircleConstructors.CATPart circleCtrRadius (center:Point, support:Surface, radius:Length, limits:Integer, start:Angle, end:Angle):Circle 通过圆心和半径创建圆弧。如果第四个参数是 0,则考虑第五个和第六个参数。否则,将创建 38 一个圆。 circleCtrPt (center:Point, point:Point, support:Surface, limits:Integer, start:Angle, end:Angle):Circle 通过圆心和圆上的另一个点创建圆弧。如果第四个参数是 0, 则考虑第五个和第六个参数。否则,将创建一个圆。 circle2PtsRadius (point1:Point, point2:Point, support:Surface, radius:Length, orientation:Boolean, limits:Integer):Circle 创建一个圆弧。第一个参数和第二个参数中指定的点位于要创建的弧上,这些点在第六个参数中 指定的整数是 0 时定义弧限制。当第六个参数中指定 0 时,修改第五个参数布尔值使您可以 显示替代弧。 Circle3Pts (point1:Point, point2:Point, point3:Point, limits:Integer):Circle 经过三个点创建一个或多个圆弧。当第四个参数中指定 0 时,第一个和第三个点定义弧限制。 当第四个参数中指定 1 时,定义全圆。当第四个参数中指定 2 时,定义直接圆。当第四个参 数中指定 3 时,定义补充圆。 circleBitgtRadius (curve1:Curve, curve2:Curve, support:Surface, radius:Length, orientation1:Boolean, orientation2:Boolean, limits:Integer):Circle 创建一个或多个与两条曲线相切的圆弧。当第七个参数中指定 0 时,相切点定义弧限制。修改 orientation1 参数值可以反转相对于 curve1 曲线的弧方向(可能没有解法)。修改 orientation2 参数值可以反转相对于 curve2 曲线的弧方向。 circleBitgtradius (curve:Curve, point:Point, support; Surface, radius:Length, orientation1:Boolean, orientation2:Boolean, limits:Integer):Circle 创建一个或多个与两条曲线相切的圆弧。 circleBitgtPoint (curve1:Curve, curve2:Curve, pt:Point, support:Surface, orientation1:Boolean, orientation2:Boolean, limits:Integer):Circle 创建一个或多个与两条曲线相切且经过第二条曲线上的点的圆弧。当第七个参数中指定 0 时, 相切点定义弧限制。修改 orientation1 参数值可以反转相对于 crv1 曲线 的弧方向(可能没有解法)。修改 orientation2 参数值可以反转相对于 crv2 曲线的弧方向。 circleTritgt (curve1:Curve, curve2:Curve, curve3:Curve, support:Surface, orientation1:Boolean, orientation2:Boolean, orientation3:Boolean, limits:Integer):Circle 创建一个或多个与三条曲线相切的圆弧。当第八个参数中指定 0 时,相切点定义弧限制。修改 orientation 参数值可以反转相对于参数规格中有相同阶数的曲线的弧方向(orientation1 与 39 curve1 关联)。 circleCtrAxis (axis:Line, point:Point, radius:Length, start:Angle, end:Angle, projectionmode:Boolean, limits:Integer):Circle 通过将点和轴线/线作为输入元素创建圆,对应于用户界面中的“中心和轴线 (Center and axis)”圆类型。 axis:圆创建在垂直于此轴线的平面上。 point:用于计算圆心的元素。 radius:创建的圆的半径。 start:圆的起始角度。仅当限制值为 0 时使用。 end:圆的终止角度。仅当限制值为 0 时使用。 projectionmode:ProjectionMode = True 表示指定的点将投影到轴线/线上,并被 用 作圆的中心,projectionMode = False 表示点是圆的中心。 limits :圆限制类型。0 表示角度(即部分弧),1 表示全圆 有投影的“点和轴线 (Point and axis)” 没有投影的“点和轴线 (Point and axis)” circleCtrtgt (point:Point, curve:Curve, curve orientation:Boolean, tangent orientation:Boolean, support:Surface):Circle 使用中心、曲线和支持面创建圆弧,对应于用户界面中的“中心和切线 (Center and tangent)” 圆弧类型。如果有多个解法,则需要方向以选择适当的圆。 point:圆的中心 curve:与创建的圆相切的曲线。 curve orientation:用于圆计算的相切曲线方向。 angent orientation:用于圆计算的相切曲线的切线方向。 support:支持曲面。 40 circleCtrtgt (curve1:Curve, curve2:Curve, curve2 orientation:Boolean, curve2 tgt orientation:Boolean, support:Surface, radius:Length, curve1 orientation:Boolean, curve1 tgt orientation:Boolean):Circle 使用中心、曲线和支持面创建圆,对应于用户界面中的“中心和切线 (Center and tangent)” 圆类型。如果有多个解法,则需要方向以选择适当的圆。 curve1:圆的中心所在的中心元素。它是一条曲线 curve2:与创建的圆相切的曲线。 curve2 orientation:用于圆计算的相切曲线方向。 curve2 tgt orientation:用于圆计算的相切曲线的切线方向。 support:支持曲面。 radius:创建的圆的半径 curve1 orientation:用于圆计算的中心元素方向。 curve1 tgt orientation:用于圆计算的中心元素的切线方向。 14、线构造函数 41 示例:KwrLineConstructors InertiaAxis (rank:Integer, Body, ...):Line 使您可以确定几何体的惯量轴。 示例: Geometrical Set.1\\Line.9 = inertiaAxis (1 , `PartBody`) line (Point, Point):Line 通过两个点创建一条线。 示例: Geometrical Set.1 Line_Point_Point = line (`Geometrical Set.1\\Point.1`, `Geometrical Set.1\\Point.2`) line (pt:Point, dir:Direction, start:Length, end:Length, orientation:Boolean):Line 创建一条经过 点且与方向平行的线。 使用第三个和第四个参数指定起点和终点。 最后一个参数允许您反转线方向。 示例: Geometrical Set.1 Line.13 = line (`Geometrical Set.1\\Point.2` , direction (`zx plane`), 0mm, 20mm, false) lineangle (crv:Curve, sur:Surface, pt:Point, geodesic:Boolean, start:Length, end:Length, angle: Angle, orientation:Boolean):Line 创建一条经过点、 与曲面相切并与曲线成给定角度的线。当最短距离参数设置为 true 时, 在曲面上创建(投影)了一条最短距离线。 示例: Geometrical Set.1 Line.1 = lineangle (Geometrical Set.1 Extrude.1 , Geometrical Set.1 Spline.1 , Geometrical Set.1 Point.4, false, 0mm, 50mm, 80deg, false) linetangent (crv:Curve, pt:Point, start:Length, end:Length, orientation:Boolean):Line 在给定的点创建一条与曲线相切的线。 示例: Geometrical Set.1 Line.11 = linetangent (`Geometrical Set.1\\Spline.1`, `Geometrical Set.1\\Point.6`,0mm, 30mm, true) 42 linenormal (sur:Surface, pt:Point, start:Length, end:Length, orientation:Boolean):Line 在给定的点创建一条与曲面垂直的线。 示例: linenormal = linenormal (`Geometrical Set.1\\Extrude.1` ,`Geometrical Set.1\\Point.2` ,10mm,16mm, true) mainnormal (crv:Curve, pt:Point):Line 在给定的点创建一条与曲线垂直的线。 该线创建在包含切线向量的平面中。 示例: Geometrical Set.1\\Line.10 = mainnormal (`Geometrical Set.1\\Spline.1`, `Geometrical Set.1\\Point.6`) binormal (crv:Curve, pt:Point):Line 在给定的点创建一条与曲线垂直的线。 该线创建在与切线向量正交的平面中。 示例: Geometrical Set.1\\Line.8 = binormal (`Geometrical Set.1\\Spline.1`, `Geometrical Set.1\\Point.6`) 15、点构造函数 示例:KwrPointConstructors point (x:Length, y:Length, z:Length):point 通过点的三个坐标创建点。可以使用值或参数名传递参数。 示例: 指定值: Geometrical Set.1 Point.1 = point(10mm,10mm,10mm) 指定参数名: Geometrical Set.1 Point.4 = point(0mm,L3,L1) pointbetween (pt1:Point, pt2:Point, ratio:Real, orientation:Boolean):Point 在另外两个点之间创建一个点。如果第四个参数中指定 true,则第三个参数为 pt1 到新点 的距离与 pt1 到 pt2 的距离的比率。如果第四个参数中指定 false,则比率表示 pt2 到 新点的距离与 pt1 到 pt2 的距离之比(比率 0.5 在 pt1 和 pt2 之间的中点创建点)。 43 示例: Geometrical Set.1 Point.5 = Point.1, Geometrical Set.1 Point.2, 0.6, pointbetween (Geometrical Set.1 true) pointoncurve (crv:Curve, pt:Point, distance:Length, orientation:Boolean):Point 在曲线上创建点。在相距第二个参数中所指定参考点的给定曲线距离 (distance) 处创建点。 使用第四个参数中指定的布尔值可以反转点的创建方向。如果 第二个参数中指定的点不在曲 线上,则该点到曲线的投影成为实际参考点。 示例: Geometrical Set.1 Point.6 = Spline.1, Geometrical Set.1 Point.5, 5mm, pointoncurve (Geometrical Set.1 true) pointoncurveRatio (crv:Curve, pt:Point, ratio:Real, orientation:Boolean):Point 在曲线上创建点。点的创建位置由第三个参数中指定的实数确 定。此实数是【要创建的点 -> 参考点】的距离与【要创建的点 -> 曲线端点】的距离的比率。使用第四个参数中指定的布 尔值可以反转点的创建方向。如果第二个参数中指定的点不在曲线上,则该点到曲线的投影 成为实际参考点。 示例: Geometrical Set.1 Point.7 = Spline.1,Geometrical Set.1 Point.3, pointoncurveRatio (Geometrical Set.1 0.4,true) pointonplane (pln:Plane, pt:Point, dx:Length, dy:Length):Point 在平面上创建点。点在平面上的创建位置由第三个和第四个参数中传递的坐标(H,V 系)确 定。相对于第二个参数中传递的参考点指定这些值。 示例: Geometrical Set.1 Point.8 = Plane.1,Geometrical Set.1 Point.1, pointonplane (Geometrical Set.1 10mm,10mm) pointonsurface (sur:Surface, Pt:Point, Dir:Direction, dist:Length):Point 在曲面上创建点。点在曲面上的创建位置由该点沿方向(第三个参数)到参考点(第二个参 44 数)的距离(第四个参数)确定。 示例: Geometrical Set.1 Point.9 = Extrude.1,Geometrical Set.1 Point.3, pointonsurface (Geometrical Set.1 direction (Geometrical Set.1 Line.1),10mm) center (circle):Point 在圆上创建点。圆可以是任何类型(草图或 GSM 圆)。创建的点是圆心。 示例: Geometrical Set.1 Point.10 = circle (Geometrical Set.1 Circle.1) pointtangent (Curve, Direction):Point 通过曲线和方向创建切点。 示例: Geometrical Set.1 Point.11 = pointtangent (Geometrical Set.1 Spline.1, direction (`yz plane`)) extremum (Curve, Direction, Boolean, Direction, Boolean, Direction, Boolean):Point 构造极值点。输入值是一个曲线、三个方向和三个布尔值。 示例: Geometrical Set.1\\Point.2= extremum (`Geometrical Set.1\\Circle.1` ,direction (`xy plane` ) ,FALSE, direction (`xy plane` ),TRUE, direction (`xy plane` ),TRUE) extremum (Surface, Direction, Boolean, Direction, Boolean, Direction, Boolean):Point 构造极值点。输入值是一个曲面、三个方向和三个布尔值。 extremum (Solid, Direction, Boolean, Direction, Boolean, Direction, Boolean):Point 构造极值点。输入值是一个实体、三个方向和三个布尔值。 centerofgravity (Body,...):Point 45 构造实体(即零件几何体类型特征)的重心。 示例: Geometrical Set.1 Point.12 = centerofgravity (PartBody) curvaturecenter (crv:Curve, pt:Point):Point 构造曲线在给定点的曲率中心。 示例: Geometrical Set.1 Point.13 = Circle.1, Geometrical Set.1 Point.6) curvaturecenter(Geometrical Set.1 16、平面构造函数 示例:KwrPlaneConstructors.CATPart plane (Point, Point, Point):Plane 通过三个点创建平面。 plane (a:Real, b:Real, c:Real, d:Length):Plane 通过方程式 aX+bY+cZ=d 创建平面。 plane (Line, Line):Plane 通过两条线创建平面。 plane (Point, Line):Plane 通过一个点和一条线创建平面。 plane (Curve):Plane 通过平面曲线创建平面。 planetangent (Surface, Point):Plane 创建与曲面在给定点相切的平面。 planenormal (Curve, Point):Plane 创建与曲线在给定点垂直的平面。 planeoffset (Plane, offset:Length, orientation:Boolean):Plane 以给定的距离创建另一个平面的偏移平面。将布尔运算方向设置为 false 可更改所创建的平 46 面相对于参考平面的边。 planeoffset (Plane, Point):Plane 经过点创建另一个平面的偏移平面。 planeangle (pln:Plane, axis:Line, angle:Angle, orientation:Boolean):Plane 创建角度平面。将布尔运算方向设置为 false 可更改所创建的平面相对于参考平面的边。 planemean (Point,...):Point 通过一组点计算平均平面。 17、曲面构造函数 示例:KwrSurfaceConstructors offset (sur:Surface, offset:Length, orientation:Boolean):Surface 创建偏移曲面。将布尔运算方向设置为 false 可更改所创建的曲面相对于参考曲面的边。 assemble (Surface, ...):Surface 创建多个曲面的接合。 split (tosplit:Surface, splitting:Surface, orientation:Boolean):Surface 创建由另一个曲面分割的曲面。使用第三个参数选择要保留的边。 split (tosplit:Surface, splitting:Curve, orientation:Boolean):Surface 创建由曲线分割的曲面。使用第三个参数选择要保留的边。 trim (sur1:Surface, orientationSur1:Boolean,sur2:Surface, orientationSur2:Boolean):Surface 创建由另一个曲面修剪的曲面。使用布尔值选择在每个曲面上保留的边。 near (sur:surface, near:wireframe):Surface 提取距离另一个元素最近的非连接实体的连接子元素。 extrude (Curve, Direction, length1:Length, length2:Length, orientation:Boolean) :Surface 沿给定的方向拉伸线框轮廓。 extrude (Surface, Direction, length1:Length, length2:Length, orientation:Boolean):Surface 沿给定的方向拉伸曲面。结果为生成体积的蒙皮。 47 revolve (Curve, axis:Line, angle1:Angle, angle2:Angle):Surface 绕给定的轴旋转线框轮廓。 revolve (Surface, axis:Line, angle1:Angle, angle2:Angle):Surface 绕给定的轴旋转曲面。结果为生成体积的蒙皮。 loft (sections:List, orientations:List):Surface 通过多个截面创建放样。 loft (sections:List, orientations: List, guides:List):Surface 通过多个截面和多个引导线创建放样。 18、线框构造函数 示例:KwrWireFrameConstructors.CATPart spline (Point, ...):Curve 通过多个点创建样条线。 intersect (Curve, Curve):Point 在两条曲线的相交处构造点。 intersect (Curve, Surface):Point 在曲线和曲面的相交处构造点。 intersect (Surface, Surface) :Curve 在两个曲面的相交处构造曲线。 curveparallel (crv:Curve, sur:Surface, offset:Length):Curve 构造与另一条曲线平行的曲线。第二个参数中指定的曲面是支持面。 project (toproject:Point, support:Curve):Point 将点投影到曲线上。 project (toproject:Point, support:Surface):Point 将点投影到曲面上。 project (toproject:Curve, support:Surface):Surface 将曲线投影到曲面上。 48 assemble (Curve,...):Curve 在多条曲线之间创建接合。 corner (crv1:Curve, crv2:Curve, support:Surface, radius:Length, orientationcrv1:Boolean, orientationcrv2:Boolean, trim:Boolean):Curve 在 两条曲线之间构造圆角。应使用第五个参数和第六个参数扫描可能的解法。 有关圆角的更多信息,请参见《创成式外形设计用户指南》。 split (tosplit:Curve, splitting:Wireframe, orientation:Boolean):Curve 使您可以分割曲面。 trim (crv1:Curve, orientationCrv1:Boolean, crv2:Curve, orientationCrv2:Boolean):Curve 使您可以修剪两个线框元素。 near (crv:Curve, near:Wireframe):Curve 创建多个子元素的最近实体。结果是曲线。 near (crv:Point, near:Wireframe):Point 创建多个子元素的最近实体。结果是点。 extrude (Point, Direction, length1:Length, length2:Length, orientation:Boolean):Line 根据方向拉伸点。结果是直线。 revolve (Point, axis:Line, angle1:Angle, angle2:Angle):Circle 使您可以通过按给定的方向旋转点来创建圆。 49 因篇幅问题不能全部显示,请点此查看更多更全内容