信息中心
INFORMATION CENTRE
EKL智能化模型数据处理相关应用介绍
发表日期:2022.10.25 浏览次数:2318

本文档的目的在于通过具体实例帮助用户更好得理解达索系统3DEXPERIENCE平台中EKL语言的用法。


EKL全称Enterprise Knowledge Language(企业知识语言),是在V5/V6/3DEXPERIENCE环境下基于知识工程的一种脚本编程语言,属于进程内的访问,与CATIA/3DEXPERIENCE软件同时执行,它的目的是让设计工程师在设计过程中,在确定变化规则的前提下,更快速高效得让程序自动执行重复性操作。


EKL具有可移植、面向对象、不需要编译、自动化、能直接操作模型数据对象等特点,可以用作在数据库中搜索对象、浏览不同结构、遍历统计汇总、创建产品和PLM对象、导出数据至Excel或Xml中、读取或写入产品属性等用途。


基础语法

变量声明:
使用 let 关键字(类型)声明变量,如:
let x(real)
let y(Integer)


类型:
所有类型都为基本类型ObjectType 的派生类型。从ObjectType往下派生出Feature特征类型与Literal字面类型。
Feature特征类型提供了每个对象上可用的属性列表(名称、用户信息、子项),以及可应用到每个对象的方法列表(访问动态属性、查询、修改等)。
Literal字面类型表示普通字面类型(如长度、实数、整数等),无法具有属性。且提供有限的现有字面类型列表。


图1. ObjectType类型关系图


功能Functions:
功能表示完成特定任务并返回值的代码块。功能使用输入并对其进行处理,然后返回结果。
对Plane类型来说,Function可以使用Plane作为输入条件,返回平面夹角。也可指定返回类型为Plane,查询可用于此的Function。
angle (Plane, Plane): Angle 
plane (Curve): Plane

属性Attributes:
每个Feature类型均有可操作属性,有些属性可获取,如:List->GetItem (Index: Integer),有些属性可写入,如:PLMEntity.V_Name,有些属性只支持读取,如:PLMEntity. PrimaryType。



图2. 可查询类型功能、属性的EKL语言浏览器


控制流语句
条件语句:
EKL使用if 、else if、 else结构判断条件是否为真:
if conditio-A 
    { statementsA }
[else if condition-B
    [    { statementsB    } ] ] ...
[else
    [    {  statementsC   } ]  ]

循环语句:
循环语句重复执行直到满足特定条件。其也可执行循环直到某个表达式赋值为 false。在这种情况下,执行终止。
有两种可用的循环语句:
第一种执行次数取决于列表中的数量,且不可自定义起始与终止条件。
For inside


第二种执行次数取条件后设置的次数,可以自定义起始与终止条件。
For while


循环中可使用Break、Continue、Exit跳出或继续或结束程序。
Break:结束当前循环,执行循环外语句。
Continue:结束当前条件,继续执行循环。
Exit:结束程序,不再执行剩余语句。

创建对象
创建对象时可使用下列四个功能:
1.new 
2.CreateOrModifyDatum
3.CreateOrModifyTemplate
4.InstantiateTemplate
new:支持创建的类型最多,Product,3Dpart,几何体,几何图形集,各类AEC类型对象,点、线、面等对象,都可用new功能创建。

CreateOrModifyDatum:用于创建无参的点、线、面、轴系等Feature对象。

CreateOrModifyTemplate:用于零件内部使用Knowledge Pattern循环创建特征模板时使用。

InstantiateTemplate:常用于产品级循环创建产品模板时使用。


查询与浏览对象

在进程中常用的查询相关函数有:
1.Query
2.Access
3.Find
Query返回的结果是List,其他两个是UndefinedType。
Query与Find函数支持条件查找,比如搜索总节点中带有某些关键字的零件。


EKL另外也支持使用CreatePLMQuery函数查询数据库中文件。

当需要浏览模型,并获取上下文对象时可以使用如下属性:
1.Children  
2.Reference
3.Owner
4.InstantiatedBy

Children属性返回List,常用于获取Product下所有Instance对象。

图3. 通过Children函数获取父级下所有子级List


Reference属性:通过获取Instance对象,使用.Reference属性,返回此实例的参考模型。

InstantiatedBy属性:当获取对象是Reference时,可以通过此属性获取此参考模型的所有实例List。

Owner属性:常用于查询当前Feature的上一级Feature(模型特征,实例,参考等都属于Feature)。


图4. Owner与InstantiatedBy属性关系图


灵活使用Query加Children、Reference、Owner、InstantiatedBy属性,可完整浏览整棵模型结构树,完成数量统计,属性提取,干涉检查等多种工程应用。

文件交互
EKL支持与TXT、EXCEL、Xml进行文件读取与写入交互操作。

TXT常用函数有:
1.OpenTextFile
2.file->Read()
3.file->Write()
4.file->Close()

通过OpenTextFile函数访问本地磁盘文件,file->Read()读取文件内信息。file->Write()将信息写入本地磁盘文件。最后通过file->Close()关闭文件,释放内存。

EXCEL常用函数有:
1.CreateSheet
2.CellAsBoolean()
3.CellAsString()
4.CellAsReal()
5.SetCell()
通过CreateSheet函数访问本地磁盘上EXCEL文件,再通过CellAsReal、Boolean、String分别读取EXCEL中数值、布尔、字符串类型数据,完成数据获取。
当需将数据写入EXCEL内时,使用SetCell()函数,按照SetCell(rowIndex, columnIndex)先行后列顺序完成写入。


总结


图5. EKL与Automation、CAA代码量对比图


达索系统3DEXPERIENCE平台中常用的开发工具有EKL、Automation、CAA。

EKL因为是脚本语言,代码量最少,函数接口较多,设计工程师最容易学习,通常几行代码,就能完成一个简易功能。而Automation虽然可支持VBA、C#、VB.NET多种开发语言,但是往往平台的新功能、重要功能的接口并未开放给Automation。CAA因其专业性与复杂性,适合于公司程序开发团队,而不适合于设计工程师使用。


如上所述,这三种开发工具中,EKL为最适合设计工程师掌握和使用的开发工具。
















长按识别顾问微信
 电话咨询  在线咨询  关于我们