本文介绍使用 EKL 创建 Structure Functional Design 模型的各种零件特征。
目录
4、创建自由边线上的型材(Stiffener On Free Edge)
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:
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:
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:
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)以及型材孔等,感兴趣的可以试试。
1063

被折叠的 条评论
为什么被折叠?



