You can make equipment with combined models with cur_item_add_mesh.Your idea is right and I believe that's what the operation was designed for.
Add your sub mesh just like applying mesh to item:armor meshs for armors, weapon mesher for weapons.So you need to take no care about the position the sub mesh fixed.
Just try it and you may know the rule.
Here's one of my item triggers:
["vik_round_shield_d", "Nordic Elite Shield", [("ba_newvikshield_i4",0)], itp_merchandise|itp_type_shield|itp_wooden_parry, itcf_carry_round_shield,
510 , weight(7)|hit_points(500)|body_armor(20)|spd_rtng(80)|shield_width(50),imodbits_shield,
[(ti_on_init_item,
[#(store_trigger_param_1, ":agent_no"),
(store_trigger_param_2, ":troop_no"),
(try_begin),
(this_or_next|le, ":troop_no", -1),
(troop_is_hero, ":troop_no"),
(str_store_string, s10, "@ba_newvikshield4"),
(cur_item_add_mesh, s10),
(else_try),
(store_random_in_range,":num_model",0,7),
(try_begin),
(eq,":num_model",0),
(str_store_string, s10, "@ba_newvikshield1"),
(else_try),
(eq,":num_model",1),
(str_store_string, s10, "@ba_newvikshield2"),
(else_try),
(eq,":num_model",2),
(str_store_string, s10, "@ba_newvikshield3"),
(else_try),
(eq,":num_model",3),
(str_store_string, s10, "@ba_newvikshield4"),
(else_try),
(eq,":num_model",4),
(str_store_string, s10, "@ba_newvikshield5"),
(else_try),
(eq,":num_model",5),
(str_store_string, s10, "@ba_newvikshield6"),
(else_try),
(str_store_string, s10, "@ba_newvikshield7"),
(try_end),
(cur_item_add_mesh, s10),
(try_end),
])
]
],
Store the name of your sub mesh into a quick string to use it in this operation.