3DE 知识工程 —— 使用 EKL 提取特征的拓扑元素

目录

1、简介

2、详细介绍

2.1  提取顶点

2.2  提取边线

2.3  提取面

2.4  使用参数控制提取类型

2.5  提取阵列元素


1、简介

在定义模板的时候,有时候需要提取特征的拓扑元素,但特征的拓扑元素是不稳定的,当参数发生改变时,有些拓扑元素可能会提取失败。

例如下面的示例中使用阵列生成多个曲面特征,如果采用直接提取的方式创建提取特征,改变阵列的实例数量会出现以下两种情况:

  • 当阵列的实例数量增多时:部分曲面没有被提取到,可能影响模板的适用性。
  • 当阵列的实例数量减少时:模型直接报错,提取失败,直接影响模板的使用。
图 1  提取阵列的曲面

为解决上述这种问题,本文介绍一种使用 EKL 提取特征拓扑元素的方法。 

2、详细介绍

使用 EKL 提取特征拓扑元素主要用到以下两个函数:

List GetSubElements(Integer dimension, Boolean duplicates)
WireFrame extract(CATCell cell, Integer propagationType)
  • GetSubElements() 方法用于获取特征的拓扑元素,返回相应子元素的列表,dimension 参数指定提取元素的维度,它只有 3 个合法值(0 表示提取顶点,1 表示提取边线,2 表示提取面),duplicates 有默认值,可不传入。
  • extract() 方法用于提取拓扑元素生成几何特征,返回线框类型特征,cell 参数是要提取的拓扑元素,propagationType 表示连续性(0 表示 G0,1 表示 G1,2 表示 G2,其他值表示不连续),此参数指定提取时将符合 propagationType 连续性的拓扑元素一起提取。

2.1  提取顶点

顶点的类型为 CATVertex,下面是一个提取顶点的示例:

iFeature :  GeometricFeature 
--------------------------

let parent(OpenBodyFeature)
set parent = `提取元素`

let vertex(CATVertex)
for vertex inside iFeature->GetSubElements(0)
{
	let wf(Wireframe)
	set wf = new("Point", "", parent)
	wf = extract(vertex)
}

parent->Update()
图 2  提取顶点

2.2  提取边线

边线的类型为 CATEdge,下面是一个提取边线的示例:

iFeature :  GeometricFeature 
--------------------------

let parent(OpenBodyFeature)
set parent = `提取元素`

let edge(CATEdge)
for edge inside iFeature->GetSubElements(1)
{
	let wf(Wireframe)
	set wf = new("Curve", "", parent)
	wf = extract(edge)
}

parent->Update()
图 3  提取边线

2.3  提取面

面的类型为 CATFace,下面是一个提取面的示例:

iFeature :  GeometricFeature 
--------------------------

let parent(OpenBodyFeature)
set parent = `提取元素`

let face(CATFAce)
for face inside iFeature->GetSubElements(2)
{
	let wf(Wireframe)
	set wf = new("Surface", "", parent)
	wf = extract(face)
}

parent->Update()
图 4  提取面

2.4  使用参数控制提取类型

上面分别提取的方式有些繁琐,因为拓扑元素都属于 CATCell 类型,我们可以使用一个参数来控制提取类型,示例如下:

iFeature :  GeometricFeature,iExtract :  String 
--------------------------

let parent(OpenBodyFeature)
set parent = `提取元素`

let dimension(Integer)
if iExtract == "Point" dimension = 0
if iExtract == "Curve" dimension = 1
if iExtract == "Surface" dimension = 2

let cell(CATCell)
for cell inside iFeature->GetSubElements(dimension)
{
	let wf(Wireframe)
	set wf = new(iExtract, "", parent)
	wf = extract(cell)
}

parent->Update()
图 5  使用参数控制提取类型

2.5  提取阵列元素

上面的示例中都需要手动执行提取操作,在简介中提到的提取阵列问题需要实现自动提取,怎么解决呢?

有两种解决方法:

  1. 使用规则的自动执行特性进行自动提取;
  2. 使用反应监控参数的修改来调用提取操作。

这里我们使用规则来进行自动提取,示例如下:


let parent(OpenBodyFeature)
set parent = `提取元素`

// 删除“提取元素”里已经存在的提取特征
let feat(Feature)
for feat inside parent.Children
{
	feat->Delete()
}

// 执行提取操作
let geoFeature(GeometricFeature)
set geoFeature = `零件几何体\圆形阵列.1`

let extractType(String)
extractType = `提取类型`

let dimension(Integer)
if extractType == "Point" dimension = 0
if extractType == "Curve" dimension = 1
if extractType == "Surface" dimension = 2

let i = 1
let cell(CATCell)
for cell inside geoFeature->GetSubElements(dimension)
{
	let wf(Wireframe)
	set wf = new(extractType, "曲面." +  i, parent)
	wf = extract(cell)
	i = i + 1
}

parent->Update()
图 6  应用规则提取阵列元素

要在Docker中安装Elasticsearch、Kibana和Logstash(EKL)堆栈,您可以按照以下步骤进行操作: 1. 首先,确保您已经安装了Docker和Docker Compose。您可以根据您的操作系统找到适合您的安装方法。 2. 创建一个新的目录来存放您的EKL配置文件和数据。例如,您可以创建一个名为`ekl`的目录。 3. 在`ekl`目录中创建一个名为`docker-compose.yml`的文件,并使用以下内容填充它: ```yaml version: '3' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.15.0 container_name: elasticsearch environment: - discovery.type=single-node ports: - 9200:9200 volumes: - esdata:/usr/share/elasticsearch/data kibana: image: docker.elastic.co/kibana/kibana:7.15.0 container_name: kibana ports: - 5601:5601 environment: - ELASTICSEARCH_HOSTS=http://elasticsearch:9200 logstash: image: docker.elastic.co/logstash/logstash:7.15.0 container_name: logstash volumes: - ./logstash/config/:/usr/share/logstash/pipeline/ ports: - 5044:5044 volumes: esdata: ``` 4. 在`ekl`目录中创建一个名为`logstash`的子目录,并在其中创建一个名为`config`的子目录。 5. 在`config`目录中创建一个名为`logstash.conf`的文件,并使用以下内容填充它: ``` input { beats { port => 5044 } } output { elasticsearch { hosts => "elasticsearch:9200" index => "logs-%{+YYYY.MM.dd}" } } ``` 6. 确保您在`ekl`目录中打开一个终端或命令提示符窗口,并运行以下命令来启动EKL堆栈: ``` docker-compose up ``` 这将下载所需的Docker镜像并启动Elasticsearch、Kibana和Logstash容器。 7. 在浏览器中访问`http://localhost:5601`以打开Kibana控制台。您可以使用Kibana来管理和可视化您的日志数据。 请注意,以上步骤提供了一个基本的配置,并且默认情况下没有进行任何安全性配置。在生产环境中,您应该根据需要进行进一步的配置和安全性硬化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值