Bentley Communities
Bentley Communities
  • Site
  • User
  • Site
  • Search
  • User
Bentley 中国优先社区
  • Welcome to Bentley Communities
  • Bentley's Communities
  • Bentley 中国优先社区
  • Cancel
Bentley 中国优先社区
技术资料库 设置显示样式的显示规则
    • 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. 

    设置显示样式的显示规则

    我们在视图中可以通过设置不同的显示样式来调整视图中模型的显示效果,显示样式中包含了很多设置可以影响视图中模型的显示效果。例如渲染模式,可以是线框模式,可见边模式等等。那么我们如何通过编程来修改这些设置的值呢?在Mstn SDK中提供了DisplayStyleManager类型可以获取dgn文件中的显示样式,如下所示:

    通过函数原型可以看到这些函数返回的类型中都带了“const”修饰符,如下所示:

    “const”表示常量的意思,如果我们直接通过这些函数返回的指针去设置显示样式的属性值的话,可能在当前Mstn进程中可以看到修改成功了,但是如果我们退出Mstn,再重新打开dgn文件的话会发现我们先前的修改都会无效。那么该如何避免这个问题呢?我们需要先通过DisplayStyle下的“Clone”函数将要修改的DisplayStyle实例拷贝出一个新的实例,然后对新拷贝出的实例做修改,最后调用DisplayStyleManager下的WriteDisplayStyleToFile函数将修改的内容写回dgn文件即可。需要注意的一点是,“Clone”函数有多个重载形式,如下所示:

    我们要调用第一个无参的这个重载函数,如果我们调用后两个重载函数并且指定了不同的dgn我呢见或者给了一个新的名字的话,在保存修改时,可能会造成新增加了显示样式,而不是修改已有的显示样式。具体实现代码如下所示:

    DgnFileR dgnFile = *ISessionMgr::GetActiveDgnFile();
    	DisplayStylePtr pds = DisplayStyleManager::FindDisplayStyleByName(L"MyDisStyle", &dgnFile)->Clone();
    	DisplayRuleSetCP displayRuleSetCP = DisplayRulesManager::GetDisplayRuleSetByName(L"MyRule", dgnFile);
    	DisplayRulesManager::SetDisplayRuleSetToDisplayStyle(*displayRuleSetCP, *pds);
    	DisplayStyleManager::WriteDisplayStyleToFile(*pds, dgnFile);
    

    • Share
    • History
    • More
    • Cancel
    • HongQiang Guo Created by Bentley Colleague HongQiang Guo
    • When: Thu, Sep 28 2023 2:46 AM
    • 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