Bentley Communities
Bentley Communities
  • Site
  • User
  • Site
  • Search
  • User
  • Welcome
  • Products
  • Support
  • About
  • More
  • Cancel
中国BDN社区
  • Welcome to Bentley Communities
  • Bentley's Communities
  • 中国BDN社区
  • More
  • Cancel
中国BDN社区
中国BDN社区-威客 3.5.2 通用几何提取器
    • Sign in
    • 中国BDN社区-威客
    • +iTwin.js编程
    • +MicroStation CONNECT版SDK的新变化
    • +MicroStation编程技巧
    • -OpenRoads中国版平台开发指南
      • 1 概述
      • 2. 系统基本组成
      • -3. CIM SDK
        • 3.1 CIM SDK概述
        • 3.2 CIM SDK组成
        • +3.3 创建并使用自定义对象
        • +3.4 自定义对象的EC属性应用
        • -3.5 其他工具类的使用
          • 3.5.1 事件管理器
          • 3.5.2 通用几何提取器
      • +4 Cim Elements
      • +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. 

    3.5.2 通用几何提取器

            有些时候,我们可能会需要将特定Element所代表的几何图形提取出来做进一步处理,比如删选其中的曲线用于坐标计算,筛选其中的实体用于网格化处理等等。这个过程有时可能会很简单,比如: 这个Element是内置类型的有对应API可用于此目的;但有时候这个过程也可能会很复杂,比如: 这个Element是第三方模块创建的,我们不知道它的形成规则,也没有能操作它的API。为此,CIM系统提供了一个名为CimGraphicsElementCollector的工具类,专门用于将特定Element所代表的几何图形按原样分类提取出来以供后期使用。使用此工具的最大好处在于,它是通用的,使用时不需要关心目标Element的来源和种类,只需要按固定模式执行提取即可;这个工具除了能处理单个Element外,还支持批量处理位于特定视口中的所有Element,并能将得到的几何体与其来源Element相关联以供反向查询使用。

             此工具的使用非常简单,只需按照执行处理和提取结果两步进行即可:

    • 执行处理: 即开始处理指定的Element或Element集合,系统目前支持3种方式的处理:

      • ProcessViewport: 提取指定视口(为空时指代当前视口)中所有Element的几何体;

      • ProcessElement: 提取指定Element的几何体;

      • ProcessXGraphics: 提取指定Element上关联的XGraphics(不存在时可指示自动创建)中的几何体;

    • 提取结果: 即提取处理后所得到的分类存储的几何体,既可以按Element来提取(即提取特定Element所属的特定类型的几何体),也可以全部直接提取。系统目前支持的提取方法如下:

      • GetElementHandles: 获取本次参与处理的Element集合;

      • GetCurves: 获取参与本次处理的特定Element所属的CurveVector;

      • GetAllCurves: 获取本次处理后得到的所有CurveVector;

      • GetSolids: 获取参与本次处理的特定Element所属的ISolidPrimitive;

      • GetAllSolids: 获取本地处理后得到的所有ISolidPrimitive;

      • GetSurfaces: 获取本次参与处理的特定Element所属的B样条曲面(MSBSplineSurface);

      • GetAllSurfaces: 获取本次处理后得到的所有B样条曲面(MSBSplineSurface);

      • GetBodies: 获取参与本次处理的特定Element所属的实体(ISolidKernelEntity);

      • GetAllBodies: 获取本次处理后得到的所有实体(ISolidKernelEntity);

      • GetFacets: 获取参与本次处理的特定Element所属的网格面(PolyfaceHeader);

      • GetAllFacets: 获取本次处理后得到的所有网格面(PolyfaceHeader);

    • Share
    • History
    • More
    • Cancel
    • Li Ma Created by Li Ma
    • When: Thu, Mar 11 2021 10:21 PM
    • 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

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