Bentley Communities
Bentley Communities
  • Site
  • User
  • Site
  • Search
  • User
Bentley 中国优先社区
  • Welcome to Bentley Communities
  • Bentley's Communities
  • Bentley 中国优先社区
  • Cancel
Bentley 中国优先社区
技术资料库 NamedView(SavedView)关联Clip
    • Sign In
    Bentley 中国优先社区 requires membership for participation - click to join
    • -Bentley 中文技术资料库
      • +AutoPIPE
      • +Bentley Civil
      • +Bentley Navigator
      • +Bentley Substation
      • +BRCM
      • +BridgeMasterModeler/OpenBridgeModeler
      • +i-model / DgnDb
      • +LumenRT/ContextCapture
      • -MicroStation
        • +01-常见问题解答
        • +02-培训资料
        • +03-软件安装与配置
        • +04-图形用户界面
        • +05-辅助绘图
        • +06-二维绘图
        • +07-三维建模
        • +08-渲染和动画
        • +09-打印
        • +10-元素选择和操作/测量
        • +11-单元/组/图案化
        • +12-文字/标注/表格/报表
        • +13-自定义线型和多线
        • +14-单位和坐标系
        • +15-模型与参考文件
        • +16-视图和层
        • +17-动态视图和组图
        • +18-光栅/点云/实景
        • +19-DGN/DWG及格式转换
        • +20-实用工具
        • -21-二次开发
          • Addin程序集接口扩充
          • +MDL函数勘误
          • MDL程序员指南
          • -MicroStation二次开发专题文章
            • Addin给元素添加自定义Linkage数据
            • C#实现Mesh布尔运算
            • CursorDialog
            • CurveVector平面投影交点
            • Dgn文件所属WorkSpace设置
            • ECPropertyPane控件
            • EC属性之数组
            • EC属性之结构体
            • EC属性之结构体数组
            • EC属性值范围
            • EC属性添加注释
            • EC属性预选值
            • ElementTemplates读取
            • Mesh指定材质贴图坐标
            • MicroStation CE下三种编程语言的运行效率比较
            • Microstation Connect Edition二次开发-VisualStudio 2013开发环境配置(C++)
            • Mstn中的Group功能
            • NamedView(SavedView)关联Clip
            • PreviewControl首次加载实现FitToView
            • VS热重载
            • [CE]ConfigurationManager取代mdlSystem_expandCfgVar
            • [CE]CONNECT版下如何扫描Cell下的子元素
            • [CE]升级mdlKISolid_xxx函数到CONNECT版
            • [MSCE C++]在.r对话框中实现对话框部分控件的展开和收起
            • [MSCE C++]如何在.r对话框中显示一个图片
            • [MSCE C++]曲线压印至实体
            • [MSCE]程序化导入X_T文件
            • “Create Drawing”对话框设置
            • 三维空间下线与面的交点
            • 交互式工具动态绘制优化
            • 元素充满视图
            • 关于TextBlock中的TextPart
            • 关闭EC属性覆盖元素名称
            • 判断元素是否受修改限制
            • 如何创建指定大小的图纸模型(To create a sheet model with specific size)
            • 如何用API操作Tag元素
            • 如何调试旧式的.mc源代码?
            • 如何遍历嵌套单元子元素
            • 如何遍历模型包括外部引用在内的所有元素
            • 尺寸标注元素中的旋转矩阵
            • 按里程截取CurvePrimitive
            • 更新参数化单元定义
            • 材质加载
            • 沿路径扫掠构造Body
            • 消隐结果如何区分不同元素
            • 线性元素平行拷贝
            • 联动文本元素
            • 自定义XAttributes属性的XAttributeId
            • 获取DockableWindow主窗体
            • 获取创建Dgn文件的产品名称
            • 获取碰撞检查结果
            • 计算三维空间线真实交点
            • 设置显示样式的显示规则
          • +MVBA小程序
          • 一步步学习MicroStation CE Addin(C#)开发
          • 一步步学习MicroStation CE MDL(C++)开发
          • 一步步学习MicroStation V8i Addin开发
          • 一步步学习MicroStation V8i MDL开发
          • 二次开发常见问题解答
          • 如何寻求Bentley代码级技术支持?
          • 学习Microstation交互式工具开发
          • 精选MicroStation二次开发文章
        • +22-其它
        • +23-MicroStation与iTwin交互
        • +24- Learning Tips
      • +MOSES
      • +OpenBuildings Designer
      • +OpenFlows
      • +OpenPlant
      • +OpenPlant Electrical CCK
      • Plaxis 地质分析
      • +ProjectWise
      • +ProStructures
      • +SACS
      • +STAAD.Pro
      • +SYNCHRO Pro
      • +其 它
      • +建筑设计之思考(赵大师专作)
      • +桥梁大师<BridgeMaster>
      • +现浇箱梁
      • +软件激活及授权
    • +iTwin 数字孪生平台
    • Bentley二次开发资料库
    • +常见问题汇总
    • Bentley-Learn 官方教学平台-使用方法
    • +中国优先社区使用指南
    • +Bentley学习资料库
    • +Bentley用户成功活动精选
    • +服务合作伙伴计划

     
     Questions about this article, topic, or product? Click here. 

    NamedView(SavedView)关联Clip

    我们在Mstn中出图时,通常是要在三维模型中使用Clip元素(如ClipVolume,NamedBoundary等)对模型做一个剪切,然后创建SavedView,最后创建一个Sheet Model,将刚刚创建的SavedView参考到新创建的Sheet Model中。创建的SavedView通常是与一个Clip元素关联起来的,这样在Sheet Model中参考了SavedView以后,看到的就是模型剪切后的效果,我们也可以设置Clip各个部分(Forward、Back、Cut、Outside)的显示样式等。那么我们如何通过程序创建SavedView使之与指定的Clip元素关联呢?Mstn SDK中NamedView类型代表了Mstn中的SavedView,在NamedView下有一个SetViewInfo成员函数,如下所示:

    -

    在ViewInfo下有一个SetDynamicViewSettings成员函数,如下所示:

    这个函数的参数类型为DynamicViewSettingsR,DynamicViewSettings下有一个SetClipBoundElementId成员函数可以设置新创建的NamedView关联的Clip元素,而且在DynamicViewSettings还有如下所示的成员变量可以设置Clip各个部分的显示设置。

    我们以NamedBoundary为例,给大家演示具体如实现创建一个跟Clip元素关联的SavedView,如下代码所示:

    ElementAgenda eleAgen;
    	SelectionSetManager::GetManager().BuildAgenda(eleAgen);
    	if (eleAgen.GetCount() < 1)
    		return;
    	EditElementHandleR eeh = eleAgen[0];
    	NamedBoundaryPtr namedptr = NamedBoundary::Create();
    	namedptr->SetModelRef(ACTIVEMODEL);
    	namedptr->SetName(L"Untitled-1");
    	namedptr->SetDrawingScale(1.0);
    	namedptr->SetGraphicalElement(eeh);
    	namedptr->Save();
    	NamedBoundaryGroupPtr boundarygrop = NamedBoundaryGroup::Create(*ISessionMgr::GetActiveDgnModelP(), WString(L"NamedGroupTest"), WString(L""));
    	boundarygrop->InsertBoundary(namedptr);
    	boundarygrop->WriteToFile();
    	DgnFileP dgnFile = ISessionMgr::GetActiveDgnFile();
    	NamedViewPtr namedView = nullptr;
    	NamedViewCollectionCR nvCollect = ISessionMgr::GetActiveDgnFile()->GetNamedViews();
    	namedView = nvCollect.FindByName(L"Untitled-1", false);
    	if (namedView != NULL)
    	{
    		namedView->DeleteFromFile();
    	}
    	if (NamedViewStatus::Success != NamedView::Create(namedView, *dgnFile, L"Untitled-1"))
    	{
    		return;
    	}
    	ViewGroupCollectionCR viewGrpCol = dgnFile->GetViewGroups();
    	ViewGroupP activeViewGrp = viewGrpCol.GetActiveP();
    	ViewInfoR viewInfo = activeViewGrp->GetViewInfoR(tcb->lstvw);
    	DynamicViewSettingsR dvSetting = viewInfo.GetDynamicViewSettingsR();
    	dvSetting.SetClipBoundElementId(eeh.GetElementId());
    	viewInfo.SetDynamicViewSettings(dvSetting);
    	ViewPortInfoCR viewPortInfo = activeViewGrp->GetViewPortInfo(tcb->lstvw);
    	namedView->SetViewInfo(viewInfo);
    	namedView->SetViewPortInfo(viewPortInfo);
    	namedView->SynchViewBoundaryWithClipVolume(ViewBoundarySynchOptions());
    	namedView->WriteToFile();
     

    • Share
    • History
    • More
    • Cancel
    • HongQiang Guo Created by Bentley Colleague HongQiang Guo
    • When: Tue, Sep 26 2023 9:42 PM
    • Revisions: 1
    • Comments: 0
    • Sign in to reply
    Recommended
    Related
    Communities
    • Home
    • Getting Started
    • Community Central
    • Products
    • Support
    • Secure File Upload
    • Feedback
    Support and Services
    • Home
    • Product Support
    • Downloads
    • Subscription Services Portal
    Training and Learning
    • Home
    • About Bentley Institute
    • My Learning History
    • Reference Books
    Social Media
    •    LinkedIn
    •    Facebook
    •    Twitter
    •    YouTube
    •    RSS Feed
    •    Email

    © 2023 Bentley Systems, Incorporated  |  Contact Us  |  Privacy |  Terms of Use  |  Cookies