Hello together,
how could I change the material of a part in an assembly? I would like to select the part and change the material.
This works in part-environment:
http://adndevblog.typepad.com/manufacturing/2013/07/inventor-2014-api-set-part-material.html
Thanks Georg
Hi Georg,
Here is a sample that sets an occurrence appearrance:
Public Sub SetOccurrenceAppearance() Dim asmDoc As AssemblyDocument Set asmDoc = ThisApplication.ActiveDocument ' Get an appearance from the document. To assign an appearance is must ' exist in the document. This looks for a local appearance and if that ' fails it copies the appearance from a library to the document. Dim localAsset As Asset On Error Resume Next Set localAsset = asmDoc.Assets.item("Bamboo") If Err Then On Error GoTo 0 ' Failed to get the appearance in the document, so import it. ' Get an asset library by name. Either the displayed name (which ' can changed based on the current language) or the internal name ' (which is always the same) can be used. Dim assetLib As AssetLibrary Set assetLib = ThisApplication.AssetLibraries.item("Autodesk Appearance Library") 'Set assetLib = ThisApplication.AssetLibraries.Item("314DE259-5443-4621-BFBD-1730C6CC9AE9") ' Get an asset in the library. Again, either the displayed name or the internal ' name can be used. Dim libAsset As Asset Set libAsset = assetLib.AppearanceAssets.item("Bamboo") 'Set libAsset = assetLib.AppearanceAssets.Item("ACADGen-082") ' Copy the asset locally. Set localAsset = libAsset.CopyTo(asmDoc) End If On Error GoTo 0 ' Have an occurrence selected. Dim occ As ComponentOccurrence Set occ = ThisApplication.CommandManager.Pick(kAssemblyOccurrenceFilter, "Select an occurrence.") ' Assign the asset to the occurrence. occ.appearance = localAsset End Sub
Philippe.
Hello Philippe,
thanks for the answer. I tried to change it for material. Could you help me to get it running?
Georg
Public Sub SetOccurrenceMaterial() Dim Name As String Name = "1.0120 St37k" Dim asmDoc As AssemblyDocument Set asmDoc = ThisApplication.ActiveDocument Dim localAsset As Asset On Error Resume Next Set localAsset = asmDoc.Assets.Item(Name) If Err Then On Error GoTo 0 Dim assetLib As AssetLibrary ' Get the Autodesk Material Library. Set assetLib = ThisApplication.AssetLibraries.Item("AD121259-C03E-4A1D-92D8-59A22B4807AD") Dim libAsset As Asset Set libAsset = assetLib.MaterialAssets.Item(Name) Set localAsset = libAsset.CopyTo(asmDoc) End If On Error GoTo 0 Dim occ As ComponentOccurrence Set occ = ThisApplication.CommandManager.Pick(kAssemblyOccurrenceFilter, "Select an occurrence.") 'How to change? Call asmDoc.BrowserPanes.ActivePane.TopNode.DoSelect End Sub
Hi Georg,
You need to set the asset to the occurrence.appearance property
occ.appearance = localAsset
The CommandManager.Pick method should return the selected occurrence or null if the user cancelled the selection.
Hope that helps,
Philippe.
This works great for changing the appearance, but how can I excute a similar macro that removes the appearance override?
Thanks!
Can't find what you're looking for? Ask the community or share your knowledge.