目录
3、使用 EKL 调用 VB Script 创建参数化线框特征
1、简介
EKL 中有很多线框特征的构造函数,可以方便的创建线框特征,但一般情况下,若将创建的线框特征聚集到几何图形集中,则生成的特征为非参数化的隔离元素,例如下面的代码创建一个点特征并聚集到几何图形集中(图 1):
iParent : OpenBodyFeature
--------------------------
let myPoint(Point)
set myPoint = new("Point", "myPoint", iParent)
myPoint = point(0mm, 0mm,0mm)
myPoint->Update()
那如何使用 EKL 创建参数化线框特征呢?下面我们就来介绍两种方法。
2、使用 EKL 直接创建参数化线框特征
直接使用 EKL 可以创建参数化点和直线特征,其原理是修改生成的特征类型为参数化的特征类型。
例 1 - 使用 EKL 直接创建参数化点特征
iParent : OpenBodyFeature
--------------------------
let myPoint(GSMPoint)
set myPoint = new("Point", "myPoint", iParent)
let ptType(PointType)
ptType = "Coordinates"
myPoint.PointType = ptType
let paramPoint(GSMPointCoord)
set paramPoint = myPoint
paramPoint.X = 100mm
paramPoint.Y = 100mm
paramPoint.Z = 0mm
iParent->Update()
本例中创建点特征后,将点的类型改为坐标点,并将其赋值给坐标点类型的变量,然后通过坐标点变量设置点的坐标参数,从而实现创建参数化的坐标点。
例 2 - 使用 EKL 直接创建参数化直线特征
iParent : OpenBodyFeature,iStart : Point,iEnd : Point
--------------------------
let myLine(GSMLine)
set myLine = new("Line", "myLine", iParent)
let lnType(LineType)
set lnType = "PointPoint"
myLine.LineType = lnType
let paramLine(GSMLinePtPt)
set paramLine = myLine
paramLine.FirstPoint = iStart
paramLine.SecondPoint = iEnd
paramLine.Length1 = 0mm
paramLine.Length2 = 0mm
iParent->Update()
本例中创建直线特征后,将直线的类型改为两点线,并将其赋值给两点线类型的变量,然后通过两点线变量设置线的端点等参数,从而实现创建参数化的两点线。
上面的两个例子分别介绍了使用 EKL 创建参数化的点和直线,但直接使用 EKL 创建参数化线框特征有其局限性,例如 EKL 不能直接创建参数化的样条线,下面我们来介绍另外一种方法。
3、使用 EKL 调用 VB Script 创建参数化线框特征
3DE Automation 中有许多实用的接口和方法,例如 HybridShapeFactory 接口可以用于创建各种类型的参数化线框特征,而且这个接口的许多方法都可以在 VB Script 中调用,请看下面的例子:
例 3 - 使用 EKL 调用 VB Script 创建参数化样条线特征
首先创建一个 VB Script 用于创建样条线,示例代码如下:
Sub Main(iPart, iParent, iPointList)
Dim oPart As Part
set oPart = iPart
Dim oHybridBody As HybridBody
Set oHybridBody = iParent
Dim oListParameter As ListParameter
Set oListParameter = iPointList
Dim oPointList As List
Set oPointList = oListParameter.ValueList
Dim oHybridShapeFactory As HybridShapeFactory
Set oHybridShapeFactory = oPart.HybridShapeFactory
Dim oSpline As HybridShapeSpline
Set oSpline = oHybridShapeFactory.AddNewSpline()
Dim i As Integer
For i = 1 To oPointList.Count
Dim oPoint As Point
Set oPoint = oPointList.Item(i)
oSpline.AddPoint oPoint
Next
oHybridBody.AppendHybridShape oSpline
End Sub
下面是使用 EKL 调用 VB Script 的示例代码:
iPart : PartFeature,iParent : OpenBodyFeature,iPointList : List
--------------------------
let vbs(VBScript)
vbs = `关系\VB Script\AddNewSpline`
vbs->Run(iPart, iParent, iPointList)
iParent->Update()
本例中 EKL 主要是选择输入参数,然后将参数传入到 VB Script 中实现参数化样条线的创建(图 4)。