3DE 知识工程 —— EKL 函数重用与功能扩展

目录

1、简介

2、EKL 函数重用

2.1  直接调用

2.2  本地库重用

2.3  全局库重用

3、EKL 功能扩展


1、简介

本文介绍两种方法以展示 EKL 更为强大的能力:一是重用 EKL 函数,二是使用 EKL 调用 VB Script 宏中的函数以扩展其功能。

2、EKL 函数重用

使用 EKL 在单个 Action 中实现复杂的功能时比较比较麻烦:首先是调试困难,其次是代码增多后变量变得繁多,不利于后续的理解及修改;此外对于一些经常使用的代码块(如读写表格)要在每个 Action 中重复拷贝。因此本文介绍以下几种在 EKL 中重用函数的方法。

2.1  直接调用

这种方式是直接在一个 Action 中调用其他的 Action ,可以用于编写较为复杂的功能,特别是对于单个功能点的调试极为有用。直接调用的方法很简单,示例如下:

如图 1 所示,Main 为主调 Action,实现功能的主要业务逻辑(调用其他 Action),Add 为被调 Action,实现单个具体的功能(进行加法运算)

图 1

Add 脚本的代码如下(图 2):

图 2

Main 脚本的代码如下(图 3):

let act(AdvisorAction)
set act = Relations\Addlet a, b, sum(Real)
a = 5
b = 3
sum = 0
act->Run(a, b, sum)Notify("#", sum)
图 3

2.2  本地库重用

对于一些常用的功能,可以将其封装到函数库中,避免重复拷贝到每个 Action 中,具体示例如下:

首先需要在 Know How Libraries 中创建一个函数库(使用 Quality Rules Capture 模块创建),然后在函数库中将功能(如上面的 Add 函数)进行封装,如图 4:

图 4

函数库中的 Add 函数与 Action 略有不同,它可以有返回值。如图 5 所示,此处返回一个 Boolean 值表示函数执行状态:

图 5

要使用函数库中的 Add 函数,需要在本地创建一个资源表,然后将函数库添加到资源表中(图 6、图 7)

图 6
图 7

Main 脚本中调用方式也有所变化,需要使用 include 关键字引入函数库(库名为资源表中的逻辑名而不是函数库本身的名字),调用函数时需要加上库名和域限定符,代码如下(图 8):

include "EKLLib"let a, b, sum(Real)
a = 5
b = 3
sum = 0let hr(Boolean)
hr = EKLLib::Add(a, b, sum)if hr == TRUENotify("#", sum)
elseNotify("Error")
图 8

2.3  全局库重用

在本地资源表中创建的函数库只能本地使用,3DE 平台是基于服务器架构的,只需将函数库添加到 DataSetup 的资源表中就可以实现全局重用(即本项目所有参与者均可使用)。具体示例如下:

在 DataSetup 的 Includable EKL Libraries 下创建一个资源表(图 9):

图 9

然后将函数库添加到资源表中,并将资源表绑定到项目合作区,再在 Main 脚本中调用即可,操作方法与本地库重用的方法一样。

注意:应避免本地资源表和 DataSetup 资源表中函数库的逻辑名称相同。

3、EKL 功能扩展

在 3DE 知识工程 —— 使用 EKL 创建参数化线框(Wireframe)特征 一文中我们介绍过使用 EKL 调用 VB Script 脚本的方法,这里我们再介绍更进阶的用法:将 VB Script 脚本封装为 EKL 可直接调用的函数库,并通过 EKL 获取 VB Script 的返回值。示例如下:

首先创建一个 VBA 宏,在 VBA 宏中编写函数,如图 10

图 10

然后在本地添加资源表,并将 VBA 宏添加到资源表,如图 11

图 11

在 Main 脚本中调用 VBA 宏中的函数,代码如下(图 12):

iPart :  PartFeature,iBody :  OpenBodyFeature 
--------------------------
let myPoint(Point)
ExecuteVBResource("VBLib", "CreatePointCoord", myPoint, iPart, "part", iBody, "body", 50, "x", 100, "y", 0, "z")if myPoint == NULLNotify("Error")
elsemyPoint.Name = "MyPoint"iPart->Update()
图 12

上述代码的关键在于 ExecuteVBResource 函数,其用法说明如下(图 13):

图 13

同 EKL 函数重用一样,VBA 宏也可以添加到 DataSetup 的 Knowledge Resources 的资源表中(图 14)

图 14

调用 DataSetup 资源表中 VBA 宏库的函数时,Main 脚本中 ExecuteVBResource 函数修改如下(注意第一个参数的变化,VBLib 表示 VBA 宏在资源表的逻辑名称,KnowledgeResources 表示 DataSetup 中的资源表):

ExecuteVBResource("KnowledgeResources|VBLib", "CreatePointCoord", myPoint, iPart, "part", iBody, "body", 50, "x", 100, "y", 0, "z")

采用这种方式将 VB Script 函数封装为 VBA 宏之后,可以极大的扩展 EKL 的能力。

注意:应避免本地资源表和 DataSetup 资源表中 VBA 宏的逻辑名称相同。 


本文简单介绍了 EKL 函数重用和功能扩展的方法,如果你对 3DE 知识工程感兴趣以及想更深入的交流,欢迎评论留言。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/7646.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【GESP】C++一级真题练习(202309)luogu-B3864,小明的幸运数

GESP一级真题练习。为2023年9月一级认证真题。应该是两道题中略难的一道。 题目题解详见:https://www.coderli.com/gesp-1-luogu-b3864/ 【GESP】C一级真题练习(202309)luogu-B3864,小明的幸运数 | OneCoderGESP一级真题练习。为2023年9月一级认证真题…

从0开始学习机器学习--Day18--评估模型

在很多时候,构建并优化完模型并不代表这个问题就被解决了。事实上,很多时候,在第一次优化结束并进行预测时,其与真实值之间的误差都会提醒你这个模型需要继续优化。那么,我们应该怎么优化它呢? 选择更多的…

【Hadoop】【hdfs】【大数据技术基础】实验二 熟悉常用的HDFS操作

实验二: 熟悉常用的HDFS操作 一、实验题目 熟悉常用的HDFS操作。 二、实验目的 (1) 理解HDFS在Hadoop体系结构中的角色; (2) 熟练使用HDFS操作常用的Shell命令; (3)…

SpringSecurity的使用

文章目录 原理使用自定义权限校验 主要类通过debug的方式查看security有哪些过滤器配置类UsernamePasswordAuthenticationFilterUserDetailsServiceExceptionTranslationFilter自定义认证和授权异常处理 FilterSecurityInterceptor权限校验创建拦截器获取用户权限并传递给secur…

第30周:彩色图片分类(Tensorflow实战第二周)

目录 前言 一、前期工作 1.1 设置GPU 1.2 导入数据 1.3 数据归一化 1.4 数据可视化 二、构建CNN网络 2.1 基本概念 2.2 代码实现 三、编译 四、训练模型 五、预测 六、模型评估 总结 前言 🍨 本文为[🔗365天深度学习训练营]中的学习记录博…

【Linux】信号

🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343🔥 系列专栏:https://blog.csdn.net/qinjh_/category_12625432.html 目录 信号和信号量 信号 信号的处理 信号捕捉 信号的产生 系统调用 signal rais…

【国内中间件厂商排名及四大中间件对比分析】

国内中间件厂商排名 随着新兴技术的涌入,一批国产中间件厂商破土而出,并在短时间内迅速发展,我国中间件市场迎来洗牌,根据市占率,当前我国中间件厂商排名依次为:东方通、宝兰德、中创股份、金蝶天燕、普元…

【题解】CF2033G

题目 CF2033G 分析 一道很显然是树形dp的题,但非常恶心QwQ。   先不管复杂度,找找递推关系,一种很直接的想法如下(我觉得是错误的): d p [ i ] [ k ] m a x ( d p [ f a i ] [ k − 1 ] , d p [ s o …

SpringBoot之定时任务

1. 前言 本篇博客是个人的经验之谈,不是普适的解决方案。阅读本篇博客的朋友,可以参考这里的写法,如有不同的见解和想法,欢迎评论区交流。如果此篇博客对你有帮助,感谢点个赞~ 2. 场景 我们讨论在单体项目&#xff0c…

【日志】力扣58.最后一个单词的长度//14.最长公共前缀//28. 找出字符串中第一个匹配项的下标

2024.11.6 【力扣刷题】 58. 最后一个单词的长度 - 力扣(LeetCode)https://leetcode.cn/problems/length-of-last-word/?envTypestudy-plan-v2&envIdtop-interview-150 int lengthOfLastWord(char* s) {int count 0;for (int i strlen(s) - 1; i…

智能家居的未来:AI让生活更智能还是更复杂?

内容概要 智能家居的概念源于将各种家居设备连接到互联网,并通过智能技术进行控制和管理。随着人工智能的迅速发展,这一领域也迎来了前所未有的机遇。从早期简单的遥控器到如今可以通过手机应用、语音助手甚至是环境感应进行操作的设备,智能…

1. 初步认识 Java 虚拟机

一、前言 其实一直都想系统性的学习一下 JVM,尝试过很多次,最终没能坚持下来,现在已经工作多年,发现对于 JVM这块知识还是很薄弱,不利于职业长远发展,并且之前掌握的都是一些零散的知识,没能形…

数据结构之二叉树的链式结构——递归的暴力美学

1. 实现链式的二叉树结构 我们之前用顺序表里面数组的底层结构实现了二叉树中堆的结构,但是不是所有的二叉树都具有着堆的性质,所以我们现在需要一个链式结构来描述普遍的二叉树。其底层结构类似一个链表,但是每一个结点由单个区域&#xff…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-31

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-31 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-31目录1. Large Language Models for Manufacturing摘要创新点算法模型实验效果(包含重要数据与结论)推荐…

利用SpringBoot构建城镇住房保障平台

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理城镇保障性住房管理系统的相关信息成为必然…

【笔记】扩散模型(九):Imagen 理论与实现

论文链接:Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding 非官方实现:lucidrains/imagen-pytorch Imagen 是 Google Research 的文生图工作,这个工作并没有沿用 Stable Diffusion 的架构,而是级…

Windows下载安装Ollama本地运行大模型,新手详细

目录 1. 下载安装Ollama2. 环境配置- 关闭开机自启动(可选):- 配置环境变量(必须):- 配置端口(可选):- 允许浏览器跨域请求(可选): 3.…

代码随想录算法训练营Day55 | 图论理论基础、深度优先搜索理论基础、卡玛网 98.所有可达路径、797. 所有可能的路径、广度优先搜索理论基础

目录 图论理论基础 深度优先搜索理论基础 卡玛网 98.所有可达路径 广度优先搜索理论基础 图论理论基础 图论理论基础 | 代码随想录 图的基本概念 图的种类 大体分为有向图和无向图。 图中的边有方向的是有向图: 图中的边没有方向的是无向图: 图…

牛客练习赛131(dp,dfs,bfs,线段树维护等差数列)

文章目录 牛客练习赛131(dp,dfs,bfs,线段树维护等差数列)A. 小H学语文B. 小H学数学(dp、偏移值)C. 小H学生物(DFS、树上两点间路径的距离)D. 小H学历史(BFS)E. 小H学物理…

干货分享篇:Air780EP的硬件设计原理全解析(上)

一、绪论 Air780EP是一款基于移芯EC718P平台设计的LTE Cat 1无线通信模组。支持FDD-LTE/TDD-LTE的4G远距离无线传输技术。另外,模组提供了USB/UART/I2C等通用接口满足IoT行业的各种应用诉求。 二、综述 2.1 型号信息 表格 1:模块型号列表 2.2 主要性能…