So I'm currently working on trying to optimise an automated process that takes an existing illustrator document and prettifies it by, among other things, replacing simple placeholder symbols with their more detailed final art versions created by the design team. The problem is, we're talking folders upon folders of literally hundreds if not thousands of files containing various symbols and icons and signposts and what have you, and one of the most time-consuming parts of the entire process is just waiting for illustrator to open and then later close a whole lot of files that contain maybe just a single signpost or other symbol.
Which to me sounds like exactly the kind of thing that the CC Libraries feature is for - putting a bunch of simple, often reused elements into existing collections that are easier to access and load than browsing through a folder of 800+ different individual .ai files.
The problem is, how do I access the CC Libraries through either (preferably) C++ plugin code or jsx extendscript or the like? Is it even possible to? The AILibraryType enum in AIDocument.h references, among other things, a kAISymbolLibraryType, but it only seems referenced in AIDocumentSuite->WriteDocumentAsLibrary() which isn't quite what I'm looking for, and while there's an AISwatchLibrariesSuite for swatch libraries, there doesn't seem to be anything equivalent for the aforementioned Symbol Libraries. The AISymbolSuite has a SymbolPatterns list you can iterate through, but that seems to be tied to the document and I haven't been able to get it to list the contents of CC Libraries.
There's a built in "Adobe Symbol Palette Plugin" plugin that I'm thinking might possibly be what I'm looking for, but I've yet to find any documentation on how one would interface with it, so I don't even know if that's a potential false lead or not.
Basically tl;dr: I would like a way for my plugin to be able to access and iterate through art objects existing in the Creative Cloud Libraries for the purpose of automised replacement of placeholder art with the final art made by the design team, and preferrably also to be able to populate said libraries with art objects that are currently located within hundreds, potentially thousands, of individual .ai files. Does anyone know how this might be done?
Hm. I was hoping to be able to just piggyback on Illustrator's own access to CC libraries rather than needing to act as a separate program with its own API key and all, but alas.
I do think I've figured out roughly how Illustrator imports objects from the CC Libraries into documents though, because from an implementation standpoint it looks like Illustrator basically treats CC Libraries as a bunch of single-symbol files stuck somewhere under %appdata%/Adobe/Creative Cloud Libraries/LIBS/ behind at least two UIDs, and it seems what it basically does is instead of the slow route of opening a file, copying its contents, and closing it again, it basically creates an empty PlacedArt via the AIArtSuite and then uses the AIPlacedSuite->ExecPlaceRequest() to import the contents of the file on top of that art object without having to go through all the time-consuming elements of setting up a new open document and context, which takes the process from 4-5ish seconds down to around 100-300 ms or so. This also seems to be how Illustrator handles it when you drag an Illustrator file onto an already open document.
So while I didn't necessarily find out exactly what I was asking for, I did end up finding a solution to the problem, so I'm going to see about marking this topic as closed.