Bentley Communities
Bentley Communities
  • Site
  • User
  • Site
  • Search
  • User
  • Welcome
  • Products
  • Support
  • About
  • More
  • Cancel
中国BDN社区
  • Welcome to Bentley Communities
  • Bentley's Communities
  • 中国BDN社区
  • Cancel
中国BDN社区
中国BDN社区-威客 4.3.2 配合CimPlatform Core使用
    • Sign In
    • 中国BDN社区-威客
    • +iTwin.js编程
    • +MicroStation CONNECT版SDK的新变化
    • +MicroStation编程技巧
    • -OpenRoads中国版平台开发指南
      • 1 概述
      • 2. 系统基本组成
      • +3. CIM SDK
      • -4 Cim Elements
        • 4.1前言
        • 4.2 Cim Elements的内容
        • -4.3 Cim Elements的应用
          • 4.3.1单独使用
          • 4.3.2 配合CimPlatform Core使用
        • 4.4 结语
      • +5 CIMMesh SDK
      • +6 CIMSolid SDK
      • +7 CIM Template
    • +ORD SDK二次开发编程
    • +一步步学习ABD-CE开发
    • +一步步学习MicroStation CE Addin开发
    • 一步步学习MicroStation CE MDL开发
    • +一步步学习ProjectWise编程
    • 中国优先社区二次开发精华帖汇总
    • +学习Microstation交互式工具开发
    • +过期帖,留存仅供参考
    • +非Bentley社区分享的文章
    • C#、C/C++相关的编程知识汇总

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

    4.3.2 配合CimPlatform Core使用

            CimPlatform Elements的另一个重要用途就是将其用作用户自定义对象的部分或全部图形表现。用户自定义对象是专业领域里的对象,是专业软件的核心,由开发者基于CimPlatform Core进行设计和实现。用户自定义对象并不是一定要用CimPlatform Elements作为其图形表现,如果对象的图形表现比较简单,则可以直接利用自己的的数据创建几何对象并将它们绘制出来。但是当图形表达比较复杂时,比如其中包含或者直接就是一种MultiLine、Mesh或Cell时,开发者就可以将CimPlatform Elements用作用户自定义对象的图形表现,这样就能在很大程度上降低绘制特定图形的难度并提升效率。将CimPlatform Elements用作用户自定义对象的部分或全部图形表现时,可分为以下几种情形。下面以CimPlatform Elements的C++版本为基础分别介绍常见的几种使用方式。

           

    class MyDomainObject : public CimGraphicObject
    {
        protected:
            DPoint3d GetStartPointFromECInstance()
                {
                // 利用存储在相应ECInstance中的数据,计算起点坐标
                }
    
            DPoint3d GetEndPointFromECInstance()
                {
                // 利用存储在相应ECInstance中的数据,计算终点坐标
                }
    
            virtual BentleyStatus _GeneratePresentation(ViewContextR viewContext) override
                {
                DgnModelRefR modelRef = *mdlModelRef_getActive();
    
                // 利用存储在ECInstance中的数据,构造创建元素所需要的参数。 
                DPoint3d start = GetStartPointFromECInstance();
                DPoint3d end = GetEndPointFromECInstance();
    
                // 创建元素,但不保存。
                CimLineElementPtr elementPtr = \ 
                CimLineElement::Create(start, end, modelRef.Is3d(), modelRef);
    
                // 获取元素的几何数据。注意,并非所有元素都能这样。
                
                // 绘制几何图形
             
                viewContext.VisitElemHandle(elementPtr->GetElementHandle(), true, true);
                // 绘制其它图形表示,如果有的话。
                // ...
                }
    
            // ...
    }
    

    • Share
    • History
    • More
    • Cancel
    • Li Ma Created by Li Ma
    • When: Fri, Mar 12 2021 12:29 AM
    • Revisions: 1
    • Comments: 0
    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