The interference rules is used to customize and control how interference such as clashes, clearances, or contacts are computed.
These rules help filter out irrelevant interferences (e.g., intentional contacts like seals or fasteners) and focus on critical issues, improving productivity by reducing noise in the results.
Rules are defined using Knowledge Rules, which allow users to specify conditions for when interferences should (or should not) be computed, based on part attributes, types, or relationships.
For example, a rule might ignore clashes between a door seal and its frame, as these are expected. Rules can be reused across simulations and prioritized within a RuleSet.
UC1 - Piping
In this example rule allows to remove the clash due to penetration of the pipe inside the Flange :
the numbers of clashes are reduce to only the real one.
Note : This code is very simple and can't be used as such in production.
/* iOcc1 VPMInstance */
/* iRepInst1 VPMRepInstance */
/* iOcc2 VPMInstance */
/* iRepInst2 VPMRepInstance */
let TypeOfCheck(PIM_TypeOfCheckWithRule)
let clearanceValue(LENGTH)
let IsConnected(Boolean)
IsConnected=False
TypeOfCheck = ""
clearanceValue = 0mm
if ((iOcc1.IsASortOf("Piping_Rigid_Pipe_Inst") and iOcc2.IsASortOf("Piping_Flange_Inst")) OR (iOcc2.IsASortOf("Piping_Rigid_Pipe_Inst") and iOcc1.IsASortOf("Piping_Flange_Inst")))
{
IsConnected = True
}
if IsConnected
{
TypeOfCheck = "PIM_NoCheck"
}
else
{
TypeOfCheck = "PIM_CheckNoClash"
}
DefineInterferenceComputation(iOcc1, iRepInst1, iOcc2, iRepInst2, TypeOfCheck, clearanceValue, ThisRule.CreatedFrom)
UC2 - Electrical
Thanks to the rules different clearance values can be defined based on segregation :
/* iOcc1 ProductOccurrence */
/* iRepInst1 VPMRepInstance */
/* iOcc2 ProductOccurrence */
/* iRepInst2 VPMRepInstance */
let TypeOfCheck(PIM_TypeOfCheckWithRule)
let clearanceValue(LENGTH)
TypeOfCheck = "PIM_CheckClearance"
clearanceValue = 200mm
if (iOcc1.IsASortOf("ElectricalBranchGeometryOccurrence") and iOcc2.IsASortOf("ElectricalBranchGeometryOccurrence"))
{
let ustrEBG1SepCode(String)
let ustrEBG2SepCode(String)
let EBG1Segment(Segment)
let EBG2Segment(Segment)
EBG1Segment = iOcc1.Reference.Find("Segment", "", True)
EBG2Segment = iOcc2.Reference.Find("Segment", "", True)
if (EBG1Segment <> NULL)
ustrEBG1SepCode = EBG1Segment.Elec_Segreg
if (EBG2Segment <> NULL)
ustrEBG2SepCode = EBG2Segment.Elec_Segreg
if ((ustrEBG1SepCode == "Signal" and ustrEBG2SepCode == "Power") or (ustrEBG1SepCode == "Power" and ustrEBG2SepCode == "Signal"))
clearanceValue = 50mm
else if ((ustrEBG1SepCode == "Signal" and ustrEBG2SepCode == "LAN") or (ustrEBG1SepCode == "LAN" and ustrEBG2SepCode == "Signal"))
clearanceValue = 100mm
else if ((ustrEBG1SepCode == "Power" and ustrEBG2SepCode == "Safety") or (ustrEBG1SepCode == "Safety" and ustrEBG2SepCode == "Power"))
clearanceValue = 500mm
Notify("Clearance Value : #", clearanceValue)
DefineInterferenceComputation( iOcc1, iRepInst1, iOcc2, iRepInst2, TypeOfCheck, clearanceValue, ThisRule.CreatedFrom)
}
How Interference Rules Work
1. Types of Checks
Interference rules support four primary types of checks, each determining how interactions between parts are evaluated:
PIM_NoCheck:
- Purpose: Skips interference computation entirely between specified parts.
- Use Case: Ignore known, non-critical interactions (e.g., a harness clipped to a bracket).
- Example: Avoid computing clashes between two "Harness" parts labeled in their
V_descriptionattribute.
PIM_CheckContact:
- Purpose: Computes interference only if there is a clash (overlap) or a clearance (gap) between parts.
- Use Case: Validate that parts touch as intended (e.g., gaskets or mating surfaces).
- Note: Contacts (zero-distance interactions) are included.
PIM_CheckNoClash:
- Purpose: Computes interference only if a clash (overlap) is detected.
- Use Case: Ensure no unintended overlaps exist (e.g., piping intersections).
- Default Behavior: If no check type is specified, this mode is applied automatically.
PIM_CheckClearance:
- Purpose: Computes interference only if the distance between parts is less than a specified threshold.
- Use Case: Enforce minimum gaps (e.g., 15 mm clearance for "Piping_Part").
- Example: Trigger a warning if two components are closer than 10 mm.
2. Rule Creation
Rules are created and managed through:
Knowledge Rules:
- Defined using Enterprise Knowledge Language (EKL).
- Create a RuleSet (reused across simulations).
- Working Mode = All Occurrence Objects Navigation
Create the rule under the RuleSet
Documentation
