iLogic 提供了一些用于驱动装配约束抑制状态的规则函数;在使用 iLogic 规则定义部件级配置时,这些函数非常有用。
例如,假设您要在部件中定义零部件的替换位置。可以定义要将零部件约束到每个位置所需的全部配合。然后,可以根据需要使用规则抑制或解除抑制配合,以移动每个配置中的零部件。
Inventor 不允许出现冲突约束。请先针对一个零部件位置创建约束,并手动抑制这些约束,然后再针对替换零部件位置创建其他约束集。为每个配置创建了定位零部件所需的所有约束后,便可立即编写用于选择约束的规则。
若要访问装配约束函数,请展开 iLogic“编辑规则”对话框“代码段”区域中“系统”选项卡上的“约束”节点。
设定或读取顶级装配约束的抑制状态。
为规则中参考的每个约束指定唯一的自定义名称:
如果您手动更改约束的抑制状态,则不会导致自动触发参考该约束的规则。
语法
Constraint.IsActive(“Mate:1”)
Constraint.IsActive(“SubAssem.iam”, “Mate:1”)
示例
设定抑制状态:
If ConfigStyle = “A” Then Constraint.IsActive("MateLeftSide:1") = true Constraint.IsActive("MateRightSide:2") = false ElseIf ConfigStyle = “B” Then Constraint.IsActive("MateLeftSide:1") = false Constraint.IsActive("MateRightSide:2") = true End If
读取抑制状态:
If Constraint.IsActive("MateLeftSide:1") Then (Do something)
设定或读取子部件中约束的抑制状态(指定子部件文件名和约束名称):
Constraint.IsActiveInDoc("SubAssem.iam", "Mate:1")
若要复制并重命名部件中的所有文件,同时保持所有规则完好无损,请使用 Constraint.IsActiveInComponent,然后指定子部件名称,而不是文件名。
使用子部件名称设定:
If ConfigStyle = “A” Then Constraint.IsActiveInDoc("SubAssem.iam", “LeftMate”) = true Constraint.IsActiveInDoc("SubAssem.iam", “RightMate”) = false ElseIf ConfigStyle = “B” Then Constraint.IsActiveInDoc("SubAssem.iam", “LeftMate”) = false Constraint.IsActiveInDoc("SubAssem.iam", “RightMate”) = true End If
使用子部件名称读取:
Constraint.IsActiveInDoc("SubAssem.iam",”LeftMate”) = true then (Do something)
抑制或解除抑制 iMate 定义。
Constraint.iMateDefIsActive(“iMate:1”) = False
抑制当前规则文档中名为 iMate:1 的 iMate 定义。结果与使用用户界面中的关联菜单进行抑制一样。抑制后,iMate 定义将不能用于配合。
Constraint.iMateDefIsActive(“SubAssem:1”,“iMate:1) = False
抑制零部件 SubAssem:1 中名为 iMate:1 的 iMate 定义。
Constraint.iMateDefIsActive(PartA:1”,“iMate:1”) = True
解除抑制零件 PartA:1 中名为 iMate:1 的 iMate 定义。