I'm trying to create a turret using a piece of the Battlecruiser's .m3 model (its laser turret armament, which I separated and created a new model file with the Blender m3 import plugin).
The intention is to create a turret comprised of two elements (sample image below):
A base (body) that can rotate around a single (preferably z) axis
A turret barrel which can rotate around the base (body) on two axes (x and y, preferably)
This is to mimic the properties of a conventional cannon, which normally has a base that can pivot on an axis perpendicular to the normal with the barrel working as the aiming mechanism. The normal Battlecruiser's turret models are set up this way - it uses CLookAt actor to direct the turret barrels at a target when firing, while the base simply pivots around its normal axis.
While this poses no problem if you're fine with the base model, I personally plan on adding more turrets to the Battlecruiser's model, which means I must use an m3 export tool to mess around and create a custom model. No import tools currently available have parameters available to utilize the CLookAt actor's functionality, therefore I must create the turrets manually myself and attach them to the Battlecruiser model.
I've set up CModelAdditions that use the immortal as the scope (for the base body, since the immortal only rotates on one axis) and another using the photon cannon as the scope (for the turret barrel, since the photon cannon can turn its turret on multiple axes). The models are invisible and scaled down so all you see is the Battlecruiser turret. Both of these actors work perfectly individually.
What I'm having issues with is attaching these two model additions to another actor which will act as the scope from which the two model additions derive their position and bearings from. I've tried setting it up a variety of ways and have have come short regardless of the method (either I get spammed with [more than one CActorUnit persisting in the same scope] or [cannot resolve actor from ref] errors, or they do attach but they lose the ability to rotate at all from either the CModelAddition scope OR the actor scope I decide to attach it to.
After that I would attach that actor to my Battlecruiser as individual weapons/turrets to individual attach points on the BC, which I can only assume will give me more of the same problems.
I know the concept seems a bit convoluted, but it's the only way I've thought of to recreate the effect I want since importing/exporting any kind of model and editing it directly bugs turret attachments...
Okay so seeing the number of responses makes me think maybe this problem is a little to complex.
Let me make my request a bit simpler:
How would I go about attaching a actor to another actor while each actor retains its own inherent properties.
Example: I attach an Immortal to a Battlecruiser's Weapon 11 attachment point. Whenever the Battlecruiser fires its laser batteries from Weapon 11's attachment point, the Immortal will rotate towards the target and play its own attack animation (separate from the Battlecruiser's own rotation and animation).
As a bonus: repeat the above, but have ONLY the Immortal's turret portion rotate towards the target [like it would do normally when it's its own unit] (rather than then entire Immortal body).
All of this without getting spammed by errors, warnings and graphical glitches - which I keep coming across no matter how I set up my actor messages, host properties, inherited properties, attachment points or site ops.
So after trying all of your suggestions, I've come to the conclusion that it is completely impossible to create a fully functioning turret from a unit which does not possess an explicit turret_Z attachment point (regardless of whether the models you attach to it have turret_Z's or not). The baneblade (and subsequent examples I found) all hold one trait in common - the base model possessed a turret_Z attachment point from which all other model's derived their bearings from.
At this point I have to assume its impossible to emulate the properties I want using the Battlecruiser (at least not without a LOT tinkering with data I'm not familiar with, not worth the trouble) as the base model.
I hope import tools become more powerful in the future - the blender .m3 import plugin is pretty good, but it fails to import some important behaviors from sc2 models. The 3ds .m3 plugin is semi-functional, with much of its functionality gone after the void patch updates, and Blizzard's Star Tools does not have official .m3 import integration yet (if ever)!