3DE 知识工程 —— 使用 EKL 创建结构 SFD 模型

本文介绍使用 EKL 创建 Structure Functional Design 模型的各种零件特征。

目录

1、创建板(Panel)

2、创建型材(Stiffener)

3、创建开口(Opening)

4、创建自由边线上的型材(Stiffener On Free Edge)

5、创建参数板(Parametric Panel)


1、创建板(Panel)

创建板(Panel)可以分为三个步骤:创建板对象、设置板参数、生成板对象,详情如下:

  • 创建板对象

在 EKL 中使用 new 函数来创建对象,板的知识工程类型为 SldPanel ,示例如下:

let myPanel(SldPanel)
set myPanel = new("SldPanel", "", iGeomSet)

创建板对象实际是创建了一个板材的数据结构,还需要设置相应的参数。

  • 设置板参数

与使用命令创建时手动选择输入一样,使用 EKL 代码创建也需要设置这些输入参数(板厚、材料、支持面等),示例如下:

myPanel->SetCategory("DeckPanel") // 设置词典类型
myPanel->SetMaterial("AH36") // 设置材料

let oThickness, oOffset(Feature)
myPanel->GetThickness(oThickness)
(oThickness:ValuePointer)->SetValue(6mm) // 设置板厚
myPanel->GetSupportOffset(oOffset)
(oOffset:ValuePointer)->SetValue(20mm) // 设置支持面偏移

myPanel->SetSupport(iSupport) // 设置支持面
myPanel->SetLimitingObject(iLimit1, -1, -1, 2, "") //设置限制边界

let iCuttingElements(List)
iCuttingElements.Append(iCutElement1)
iCuttingElements.Append(iCutElement2)
myPanel->SetCuttingElements(iCuttingElements) // 设置板缝元素

注意 SetLimitingObject() 函数的参数,其参数说明如下:

void SetLimitingObject (Feature iLimitingObject, // 作为限制元素的对象
                        Integer iLimitIndex, // 限制元素在列表中的索引, -1 表示追加到末尾
                        Integer iLimitOrientation, // 限制元素方向
                        Integer iLimitType, // 限制类型,如 weld
                        String iLimitKey) // 限制面特征标识

对于后面三个参数具体有哪些值可以设置,EKL 并没有说明,可以使用命令创建一个板,然后通过 GetLimitingObject() 函数获取可能的值,示例如下:

/*
iSldPanel :  SldPanel 
*/

let oNbOfLimits(Integer)
iSldPanel->GetNbOfLimits(oNbOfLimits)
Notify("NbOfLimits = #|", oNbOfLimits)

let i(Integer)
for i = 1 while i <= oNbOfLimits
{
	let oLimitingObject(Feature)
	iSldPanel->GetLimitingObject(oLimitingObject, i)
	let oLimitOrientation(Integer)
	iSldPanel->GetLimitOrientation(oLimitOrientation, i)
	let oLimitKey(String)
	iSldPanel->GetLimitKey(i, oLimitKey)
	let oLimitType(Integer)
	iSldPanel->GetPanelLimitType(i, oLimitType)
	Notify("LimitingIndex = #|LimitingObject = #|LimitOrientation = #|LimitKey = #|LimitType = #|", i, oLimitingObject.Name, oLimitOrientation, oLimitKey, oLimitType)
}
  • 生成板对象

设置完相应的参数后,还需要执行生成板的操作才能最终完成板的创建,示例如下:

myPanel->Run() // 生成板

通过上述步骤,可以实现创建一个 SFD 板零件。注意:使用 EKL 创建的零件没有应用结构资源集中的相关业务规则,需手动执行应用规则的命令

使用 EKL 创建板的效果如图 1:

图 1  创建 SFD 板

2、创建型材(Stiffener)

创建型材(Stiffener)与创建板类似,分为两个步骤,具体如下:

  • 创建型材对象

在板上创建型材使用 AddStiffener()  函数,示例如下:

let oFeature(Feature)
iSldPanel->AddStiffener(oFeature)

let myStiffener(SldStiffener)
set myStiffener = oFeature
  • 设置型材参数
myStiffener->SetType(5) // 设置类型
myStiffener->SetSectionName("L75x50x6") // 设置截面
myStiffener->SetCategory("DeckStiffener") // 设置词典类型
myStiffener->SetMaterial("AH36") // 设置材料
myStiffener->SetFirstSurface(iSldPanel.Children->GetItem(1)) // 设置所属板
myStiffener->SetSecondSurface(iSupport) // 设置支持面

对于参数中传递的值,可以先手动创建型材获取可能的值。

创建型材不用生成型材的步骤,直接更新板或父级节点即可。创建型材效果如图 2:

图 2   创建 SFD 型材

3、创建开口(Opening)

使用命令创建开口(Opening)有三种方式,分别为标准、草图、3D对象。创建步骤与上文相似,具体如下:

  • 创建开口对象

在板上创建型材使用 AddOpening()  函数,示例如下:

/*
iMode 指定创建开口的方式,其值为:
0 表示使用 3D Object 方式创建开口
1 表示使用 Skectch 方式创建开口
2 表示使用 Standard 方式创建开口
*/
let oFeature(Feature)
iSldPanel->AddOpening(oFeature, iMode)

let myOpening(SldOpening)
set myOpening = oFeature
  • 设置型材参数

对于标准方式创建开口,目前参数设置还存在问题,以下列出已验证的参数(注意,设置以下参数可以生成开口特征,但是由于参数缺失,模型会报错):

let paramList(List)
paramList.Append("1000mm")
myOpening->SetContour("Str_Round", "Generic Round R100", paramList) // 设置轮廓模板

let OpeningDirection(Feature)
iSldPanel->GetSupport(OpeningDirection)
myOpening->SetOpeningDirection(OpeningDirection) // 设置开口方向

使用草图方式创建开口,示例如下:

myOpening->SetOutputProfile(iObject)
// ...
// 省略词典类型、名称等设置

使用 3D 对象方式创建开口,示例如下:

myOpening->SetCuttingElement(iObject)
// ...
// 省略词典类型、名称等设置

设置参数后更新板或父级节点即可。创建开口效果如图 3:

图 3  创建 SFD 开口

4、创建自由边线上的型材(Stiffener On Free Edge)

这个没有实现,不知道是不是 bug ,下面给出参考代码:

/*
iSldPanel :  SldPanel // 所属板
*/

let oFeature(Feature)
iSldPanel->AddStiffenerOnFreeEdge(oFeature)

if oFeature == NULL
{
	Notify("oFeature is NULL")
	exitfunction
}

let mySFE(SldStiffenerOnFreeEdge)
set mySFE = oFeature

mySFE->SetType(7) // 设置类型
mySFE->SetSectionName("FB100x8") // 设置截面
mySFE->SetCategory("FacePlate") // 设置词典类型
mySFE->SetMaterial("AH36") // 设置材料

let dmsFeature(Surface)
set dmsFeature = iSldPanel.Children->GetItem(1)
mySFE->SetLimits(dmsFeature->GetSubElements(1)->GetItem(1)) // 设置限制元素

mySFE->SetAutomaticName(FALSE) // 取消自动命名
mySFE->SetName("EKL_SldStiffenerOnFreeEdge") // 设置名称

iSldPanel->Update()

5、创建参数板(Parametric Panel)

创建参数板需要配置好结构资源,由于测试环境里结构资源配置不完整,就先写到这里吧。创建思路与前面类似。


除了上述以外,SFD 结构中还有端切(Endcut)、贯穿孔(Slot)、高级连接(Advanced Connection)、折边(Flange)、角隅孔(Scallop)以及型材孔等,感兴趣的可以试试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值