The first catalog in the list is the dominant catalog so to speak. If I was to use a line of code like this:
CatalogManager manager
= new CatalogManager
();DataQuery queryForPartsList
= new DataQuery
{
Domain = Domain.MultiViewPartComponent,
CatalogId = manager.CatalogID(Domain.MultiViewPartComponent)
};
It would restrict the query to the first catalog in the list without knowing the CatalogID. If i was to remove the CatalogID from the search query then it would search all catalogs. CatalogID is a readonly property and the only way that I can see to get the CatalogID is to get the name of the catalog, then the path of the catalog and then parse the catalog.apc xml file for the ID.
I am working on an app that is an equipment manager of sorts. It is tool palette based and allows you to insert equipment based on the type, manufacturer, model, and size. I have that part working pretty good but only as long as the search for parts is restricted to my catalog. I have created a strongly enforced directory and naming structure for the parts that allow me to get to the part I need pretty quick based on the type, manufacturer, and model number. By using the folders and the path of the part I do not need to use the Expanded Tables for the parts but can find what I need using the PartLookUp which just searches the catalog.apc file. Once I have found the individual part based on Manufacturer and Model number I then use the Expanded Tables to get the part size. It is a much smaller list to search from.
Once you have found the part in the catalog, the app then prompts for you to place the part (with a jig) and then after placing will add the appropriate property sets, automatically prompt for you to place a tag (with a jig) and then create a 3D access zone around the part. If available the zone will be created based on dimensions that live on the part and will only need minimal interaction from the user. (the ceiling height). I have successfully created the zone as a 3D block but I am working on creating the zone as a mvblock and anchoring it to the mvpart so that it will move and adjust when the mvpart does.
Being able to manipulate the registry of catalogs also allows me to use the autoloader to distribute the catalog(s). It is just a small jump from sorting a catalog to the top of the list to creating a new catalog and placing it at the top of the list.
I am contemplating about using a duplicate GUID of the OOTB catalog for my catalog so it will restrict the masses from using "non-certified" parts. This will effectively remove the OOTB catalog from the program while still keeping it in the list causing a lot of head scratches by the lesser informed. We create fabrication drawings from MEP so we need to only use "certified" parts in our drawings and this is one method to help achieve that.
Not sure if I answered your question or not but in the long run being able to set the first catalog in the list will just make things a lot easier.