When deriving a component, you can iterate through each derived entity and specify if it has to be included or not. You could check for iMateDefinition and use "iMateDefinition.ReferencedEntity" property to determine if you want to derive this iMate or not.
Here is a sample code that checks parameters:
Public Sub CreateDerivedPart()
Dim doc As PartDocument
Set doc = ThisApplication.ActiveDocument
Dim derivedDoc As PartDocument
Set derivedDoc = ThisApplication.Documents.Add(kPartDocumentObject, _
ThisApplication.FileManager.GetTemplateFile(kPartDocumentObject), _
True)
Dim derivedPartComps As DerivedPartComponents
Set derivedPartComps = derivedDoc.ComponentDefinition.ReferenceComponents.DerivedPartComponents
Dim derivedPartDef As DerivedPartUniformScaleDef
Set derivedPartDef = derivedPartComps.CreateUniformScaleDef(doc.FullDocumentName)
derivedPartDef.ScaleFactor = 0.75
'derivedPartDef.ExcludeAll
'derivedPartDef.IncludeAlliMateDefinitions
'derivedPartDef.IncludeAllSurfaces
derivedPartDef.IncludeAll
Dim derivedEntity As DerivedPartEntity
For Each derivedEntity In derivedPartDef.parameters
If (TypeOf derivedEntity.ReferencedEntity Is parameter) Then
Dim parameter As parameter
Set parameter = derivedEntity.ReferencedEntity
Debug.Print "Derived Parameter: " & parameter.name
'Choose to include entity or not
'derivedEntity.IncludeEntity = False
End If
Next
derivedPartDef.DeriveStyle = kDeriveAsSingleBodyNoSeams
Dim derivedComp As DerivedPartComponent
Set derivedComp = derivedPartComps.Add(derivedPartDef)
End Sub
Regards,
Philippe.
Philippe Leefsma
Developer Technical Services
Autodesk Developer Network