Hi @bhudson4XNR5. If you want to run a rule from the top level assembly that will make this change to a part somewhere down within the assembly, then one way or another, we will need to specify either the full file name (path, name, & extension) of the part, or we need to specify which component in the assembly represents that part, so we can climb down through the API object structure to that part. Is the part represented by a 'top level' component in the main assembly, or is it down within a sub assembly, or is it even deeper than that? There are several ways to specify which component to target, but I need to know which way would work best for you. We can prompt the user to manually 'Pick' a component (with the mouse), but that would take away some of the automation. We could just type the name of the component into the code, as long as that component's name will not change. If the component is down one or more levels, then we would need to specify which components to go down through to get to that part, starting with the top level sub assembly.
Below is an example of if the part is a top level component named "Part1:1", within the 'active' assembly.
If ThisDoc.Document.DocumentType <> DocumentTypeEnum.kAssemblyDocumentObject Then
MsgBox("An Assembly Document must be active for this rule to work. Exiting.", vbCritical, "")
Exit Sub
End If
Dim oADoc As AssemblyDocument = ThisDoc.Document
Dim oADef As AssemblyComponentDefinition = oADoc.ComponentDefinition
Dim oOccs As ComponentOccurrences = oADef.Occurrences
'only if it is a 'top level' component. If not, we would need to do this different.
Dim oOcc As ComponentOccurrence = oOccs.ItemByName("Part1:1")
Dim oPDoc As PartDocument = oOcc.ReferencedDocumentDescriptor.ReferencedDocument
Dim oHoleFeats As HoleFeatures = oPDoc.ComponentDefinition.Features.HoleFeatures
Dim oHole1 As HoleFeature = oHoleFeats.Item("Hole1")
oHole1.SetThroughAllExtent(kPositiveExtentDirection)
oHole1.TapInfo.FullTapDepth = True
Wesley Crihfield

(Not an Autodesk Employee)