iPart 和 iAssembly 函数参考 (iLogic)

您可以使用规则根据定义的条件和逻辑,更改 iPart 和 iAssembly 的当前配置。

使用 iPart 和 iAssembly 函数可驱动部件中的 iPart 和 iAssembly 配置。

这些函数用于 iAssembly 的方式与用于 iPart 的方式一样,但是,自定义参数只能用于 iPart。若要对 iAssembly 使用该函数,您还可以在指定函数时使用 iAssembly 替换 iPart

若要访问 iPart 和 iAssembly 函数,请展开 iLogic“编辑规则”对话框“代码段”区域中“系统”选项卡上的“iPart”节点。

还有用于 iFeature 的相似函数。详细信息,请参见 iFeature 函数

iPart.ChangeRow

更改 iPart 或 iAssembly 表中的激活行。

语法

iPart.ChangeRow("iChangedComponentName:1", "memberName")

“iChangedComponentName:1”

零部件名称,与在 Inventor 部件浏览器中显示的名称一样。更改 Inventor 指定的默认零部件名称以稳定该名称,并防止在选择表中的其他行时该名称发生更改。

“memberName”

指定给表中该行“成员”列的名称。

对于具有自定义参数的 iPart,请使用该语法在 "memberName" 后列出自定义参数。按照自定义参数在表中的显示顺序进行显示:

iPart.ChangeRow("iChangedComponentName:1", "memberName", customParam1,customParam2)

使用该语法来指定行号而不是成员名称。行号可以是整数,从 1 开始,1 表示第一行(仅适用于标准 iPart):

iPart.ChangeRow("iChangedComponentName:1", rowNumber)

示例

在此示例中,当前的 iPart 配置将根据评估 Inventor 用户参数 Port_1_Size 的条件语句进行更改。该函数只需要用 iPart 零部件名称 port_1_Flange_screw 和 iPart 表成员名称 Screw-01 来驱动激活的 iPart 配置:

If Port_1_Size = .50 Then
iPart.ChangeRow("port_1_flange_screw", "Screw-01")
ElseIf Port_1_Size = .75 Then
iPart.ChangeRow("port_1_flange_screw", "Screw-02")
ElseIf Port_1_Size = 1.00 Then
iPart.ChangeRow("port_1_flange_screw", "Screw-03")
End If

iPart.FindRow

在 iPart 或 iAssembly 表中按列搜索包含特定值或近似值的行,并将激活的配置设定为找到的行。

语法

i=iPart.FindRow("iChangedComponentName:1", "columnName","<=",0.2,"columnName","<=", 4.1,"|",customParam1,customParam2)

i=iPart.FindRow("iChangedComponentName:1","columnName", "<=",d1,"columnName","<=",d2)

“i”

可用来测试是否找到了有效行号的局部变量。

“iChangedComponentName:1”

零部件名称,与在 Inventor 部件浏览器中显示的名称一样。更改 Inventor 指定的默认零部件名称以稳定该名称,并防止在选择表中的其他行时该名称发生更改。

“columnName”

要在 iPart 表中搜索的列。使用与 iPart 表中所显示的列表头名称完全一样的列表头名称。

示例

该示例将搜索 iPart 表中列值等于或大于指定值的行。iLogic 会将当前的 iPart 配置切换为找到的行:

iPart.FindRow("port_1_flange_screw", "Thread_Diameter", ">=", 0.45, "Thread_Length", ">=", 2.0)

iPart.CurrentRowValue

一旦使用 iPart.FindRow 找到了行,该函数即会从该行读取关联的列值。该函数仅读取数值。使用 iPart.CurrentRowStringValue 可读取包含文本值的列。

语法

d0 = iPart.CurrentRowValue("columnName")

以下任意函数可以设定当前行:

iPart.FindRowiPart.ChangeRow

“columnName”

您想用的 iPart 表列的名称。

示例

在此示例中,我们将在 port_1_flare_flange iPart 表的 Port_Size 列中搜索与 Inventor 参数 Port_1_Size 的值精确匹配的值。一旦找到了行,我们即会使用 iPart.CurrentRowValue 从表的 A_dimB_dim 列中检索尺寸。然后,我们将其值指定给名为 Port_1_screw_A_dimPort_1_screw_B_dim 的 Inventor 参数:

i = iPart.FindRow("port_1_flare_flange", "Port_Size", "=", Port_1_Size)
Port_1_screw_A_dim = iPart.CurrentRowValue("A_dim")
Port_1_screw_B_dim = iPart.CurrentRowValue("B_dim")

iPart.CurrentRowStringValue

一旦使用 iPart.FindRow 找到了行,即会使用该函数从此行读取关联的列值。该函数与 iPart.CurrentRowValue 类似,但是它只读取文本值。使用 iPart.CurrentRowValue 可读取包含数字值的列。

语法

iPart.CurrentRowStringValue("PartNumber")

零部件名称的替换语法

若要指定零部件名称在 iPart 行发生更改时不进行更改:

iPart.ChangeRow("iParentFileName:1", "memberName")

iPart.FindRow("iParentFileName:1","columnName","<=",d1,"columnName","<=",d2)

“iParentFileName:1”

iPart 父文件名,其中“:1”替换了常规的 .ipt 或 .iam 扩展名。将“:1”更改为您正在处理的零部件的编号。

尽管系统也支持该语法,但是不建议使用该语法。更标准的方法是:更改零部件名称以将其稳定。

iPart.RowName

获取 iPart 或 iAssembly 零部件引用中激活行的成员名。在由“iPart 或 iAssembly 更改零部件”事件触发的规则中,该函数非常有用。使用 iPart.ChangeRow 或 iPart.FindRow 以从规则中自动选择行。如果您想允许用户手动选择行,可以将该事件与该函数结合,以对更改进行响应。

注: 使用该函数后,您可以使用 iPart.CurrentRowValueiPart.CurrentRowStringValue 检索激活行中其他单元的值。

语法

iPart.RowName("iChangedComponentName:1")

示例

memberName = iPart.RowName("port_1_flange_screw:1")

iPart.RowNumber

获取 iPart 或 iAssembly 零部件引用中激活行的行号。

注: 使用该函数后,您可以使用 iPart.CurrentRowValueiPart.CurrentRowStringValue 检索激活行中其他单元的值。

语法

iPart.RowNumber("iChangedComponentName:1")

示例

rowNumber = iPart.RowNumber("port_1_flange_screw:1")

iPart.Tolerance

将该函数与 iPart.FindRow 函数结合使用,您可以搜索某范围内的值,而不是搜索一个确切的值。该搜索始终使用公差。默认公差为 0.0000001 并且与文档单位无关。

语法

iPart.Tolerance = <值>

设定更高的公差以扩大可接受值的范围。

示例

假设您使用以下语句:

iPart.Tolerance = 0.001
i = iPart.FindRow("Block:1","length", "=", 2.3)

同时,这些语句会与以下不使用公差的搜索等效:

i = iPart.FindRow("Block:1", "length", ">=", 2.299, "length","<=", 2.301)

若要使用不同工厂中的成员替换 iPart 成员,请使用 Component.ReplaceiPart