I looked at NamedViews and made so progress. I now have code below. One thing missing is mdlViewInfo_setActiveZ handling. It takes ViewInfoP as argument and I don't know how I would get that from NamedView. There is a function GetActiveZ in ViewInfo, but no SetActiveZ.
DgnModelRefP modelRef = mdlModelRef_getActive(); DgnFileR dgnfile = *ISessionMgr::GetActiveDgnFile(); NamedViewPtr namedView; NamedViewStatus nStatus = NamedView::Create(namedView, dgnfile, viewName); namedView->SetDescription(description); ViewInfoR viewInfo = namedView->GetViewInfoR(); viewInfo.SetGeometry(&origin, &delta, &view_matrix); viewInfo.SetLevelDisplayMask(modelRef, *level_mask); ViewFlagsR viewFlags = viewInfo.GetViewFlagsR(); viewFlags.noClipVolume = false; viewFlags.noBackClip = false; viewFlags.noFrontClip = false; viewFlags.SetRenderMode(mode); namedView->WriteToFile();