I ended up keeping the system in place as I have it, and created a script to parse and correct the generated Pick and Place files. Here's my reasoning:
Consistent pin <-> pad mapping
There are 480 pins on the referenced part. Mapping those pins to the corresponding connector pads was a lot of work and messing up a single one of those might ruin an entire PCB run. Keeping it all in a single library part guarantees that the mapping is correct for whoever uses it.
apalopohapa mentioned that I could place the two connector parts in a subsheet with the correct mapping to expose the pins. Expanding this idea to support consistency company-wide, we could instead create a device sheet out of the part. This method would also keep the correct mapping, but introduces some annoyances that I would rather not deal with:
Every user would have to explicitly add the device sheet directory to their Altium preferences in order to use the component.
Designers would just have to know to look for the component as a device sheet instead of looking in the usual libraries.
My experience using Device sheets has been somewhat of a pain. For example, if a component in a device sheet is pulled from a specific library, Altium requires the designer to look for and add the library to the project before anything can be exported to the PCB.
Consistent component spacing
Getting the spacing right between the connectors is critical. Martin mentioned that I could use a spare mechanical layer to call out the distance between the parts. This would work fine if it only had to happen once. But, this component is already being used in two separate products, and will likely be used again. Keeping the part as a single footprint guarantees that we only have to get it right one time.
apalopohapa also mentioned that a snippet could be used to guarantee spacing. This would also guarantee that we only have to get it right one time, but again introduces a few problems:
For company-wide deployment, every designer would have to explicitly add the snippet directory to their Altium preferences in order to use it.
Using a pcb snippet also appears to add several extra steps:
- Remove the component designator on the existing component(s) (eg 'U5' -> 'U?')
- If the component has already been imported in the pcb, delete it
- Place the snippet
- Modify project links so that the snippet is linked to the proper component(s)
- Pray that whoever made the snippet used component designators that won't conflict with something you already have.
- Push the 'changes' from the pcb to the schematic to update the designators in the schematic.
Ability to logically divide part across the schematic
Each connector is 240 pins, so representing the component in the schematic as two connectors would take up an entire page of the schematics and would rely on external NetLabels to make connections to parts on other pages.
I've seen this done before (sometimes it is necessary), but this practice has always annoyed me. To figure out what is connected where, I have to continually flip back and forth between pages. It makes the schematic much less readable and maintainable.
With the device entered in Altium as a single component, I can use Altium's part feature to logically group the pins together. For example, all of the power and ground pins can be grouped together, and the sub part placed on the schematic sheet that contains all of my regulators, etc.