I'm not sure if this fix made it into 2011 or not, but I've come up with a workaround if anyone else needs it.
Basically, derived sketches in part features get their refchain added to %%FeatureInputs. This in turn gets added to %%SignatureXML. Unfortunately this causes new signatures (and new parts) to be generated for every single child that has derived sketches with different refchains even though they have the same sketch filename. Since %%SignatureXML is needed for iv_createInstanceDocument I created a new %%FixedFeatureInputs. Also, there is a %%SignatureXML override that passes in the fixed list.
This solves my problem; though, there is potential that my list fixing method could have problems and I'm open to suggestions, but it seems good for now.
{code}
Design IvAdoptedPartModifier: BOMMixin
Rule %%FixedFeatureInputs As List = RemoveRefChainFromFeatureInputs(%%FeatureInputs)
Method RemoveRefChainFromFeatureInputs (inList As List) As List
Dim lst As List = {}
Dim lstFeature As List
For Each lstFeature In inList
Dim innerList1 As List
Dim itemFeature As Any
For Each itemFeature In lstFeature
If typeCheck(itemFeature, :List) = False Then
innerList1 = innerList1 + {itemFeature}
Else'This is a list so let's loop through it
Dim innerList2 As List
If First(itemFeature) <> :DerivedSketch Then
innerList2 = itemFeature
Else'This is a derived sketch list and we need to modify it
Dim intIndex As Integer
For intIndex = 1 To length(itemFeature)
If intIndex <> 3 Then 'only add to list if not index 3, since it's the refchain
innerList2 = innerList2 + {nth(intIndex, itemFeature)}
End If
Next
End If
innerList1 = innerList1 + {innerList2}
End If
Next
lst = lst + {innerList1}
Next
Return lst
End Method
'Modified this so that we ignore the refchain of sketches in Derived Parts
Uncached Rule %%SignatureXml As String
Return iv_getPartSignature(iv_ProjectWorkspace(), %%ParamList, %%suppressionStates, iProperties, %%SkeletonFileNameList, %%FixedFeatureInputs, %%SheetMetalInputs)
End Rule
End Design
{code}
If there is an easier way to rebuild this list while removing a specific entity, I would love to know about it!