[quote user="Bruce Reeves SRNS"]if ( eeh.GetElementType() == CELL_HEADER_ELM ) { // check for a Shared Cell auto cellQueryP = dynamic_cast<ICellQuery*>(&eeh.GetHandler()); if (cellQueryP->IsSharedCell(eeh)) { mdlSharedCell_dropToNormalCell (eeh.GetElementP(), filePos , true, false);[/quote]
That's never going to work. If your element handle contains a normal cell header, you can't pretend that it's a shared cell. If you want to test for element type, use SHARED_CELL_ELM, defined in DgnPlatform.r.h.
[quote user="Bruce Reeves SRNS"]Trying to figure out how to drop a Shared Cell to a Normal Cell[/quote]
The definition of a shared cell is stored in the active DGN file as a SHAREDCELL_DEF_ELM. The traditional path to follow would be to find the shared cell definition element and read its components. I suppose that's what mdlSharedCell_dropToNormalCell() does, adding in the cell translation.
I see that the MicroStationAPI for CONNECT provides two relevant handlers: SharedCellHandler and SharedCellDefHandler. Both inherit from ISharedCellQuery.