Here is something I believe you can use then. It works with the appearances. By default, your document may only contain just a few appearances (ones you have used previously), so it sources the list of available appearances from the currently active appearance library. Then after you have selected one from the list, it checks to see if there is a local copy of that specific appearance. There needs to be a local copy of the appearance, before it will allow you to assign it to your model. So I included some code that loops through the appearances in your document, to see if it exists there first. If it is not found, it then copies the library appearance to your part document. Then it sets the selected appearance as the 'active' appearance.
Mostly the same general idea and workflow that @Curtis_Waguespack already posted, but with a couple extra things in there to help avoid potential errors.
Here's the iLogic code:
If ThisApplication.ActiveDocumentType <> DocumentTypeEnum.kPartDocumentObject Then
MsgBox("A Part document must be 'active' for this rule to work. Exiting.", , "")
Exit Sub
End If
Dim oPDoc As PartDocument = ThisApplication.ActiveDocument
Dim oCurrApp As String = oPDoc.ActiveAppearance.Name
Dim oApps As New List(Of String)
Dim oLibApps As AssetsEnumerator = ThisApplication.ActiveAppearanceLibrary.AppearanceAssets
For Each oApp As Asset In oLibApps
oApps.Add(oApp.DisplayName)
Next
Dim oSelected As String = InputListBox("Select an 'Appearance' to make active.", oApps, oCurrApp, "Appearances")
'check if this appearance has been added to the document or not
'if it isn't located in the local document, it will need to be copied there before you can assign it to your model
Dim oExists As Boolean 'false by default
For Each oDApp As Asset In oPDoc.AppearanceAssets
If oDApp.DisplayName = oSelected Then
oExists = True
End If
Next
If Not Exists Then
oLibApps.Item(oSelected).CopyTo(oPDoc)
End If
oPDoc.ActiveAppearance = oPDoc.AppearanceAssets.Item(oSelected)
If this solved your problem, or answered your question, please click ACCEPT SOLUTION.
Or, if this helped you, please click (LIKE or KUDOS) 👍.
If you want and have time, I would appreciate your Vote(s) for My IDEAS 💡or you can Explore My CONTRIBUTIONS
Wesley Crihfield

(Not an Autodesk Employee)