MSCE C++ 标注在复杂结构中的 应用问题

老师好:

我这边测试 创建标注 已经,完成了,但是只是针对 简单线性 元素 的标注。我现在有这样一个结构,具体效果如图所示:

首先是一个cell,然后 这个cell包含 两个相对复杂的结构,和一些简单的线性结构,如果按照之前测试的时候,是需要给添加标注的元素 先添加到 文件中,然后创建标注给这个元素,而我当前这个(给这个cell添加标注) 就有点不符合那个要求了!!!!

请老师指点迷津 !!! 辛苦老师了  !!!!!

Parents
  • 被标注的元素必选要先添加到文件中这个要求是因为尺寸标注元素要跟被标注的元素关联起来,两者关联起来的话好处是被标注的元素尺寸或者位置发生变化时,标注元素会自动更新,如果元素不会变化的话,就没必要关联起来。您说的有点不符合那个要求能否说具体点?

  • 首先我是 用的cell  创建的元素,其次,我是按照 CurveVectorPtr 的 Add 添加结构 后,使用 DraftingElementSchema::ToElement()转换成 元素,然后  使用 NormalCellHeaderHandler::AddChildElement()添加到 cell中,待cell完成后,才将cell 添加到 文件中的 过程。

    所以,再这样的过程中,我涉及到了 一个cell 元素(且只有这个元素做了添加到文件的步骤),其他元素只是 作为cell的子元素 ,添加到 cell中,并没有 单独将这些 子元素 添加到文件中。

    那么我想问的是,我要给这 cell 中的所有 元素 添加标注,要怎么做呢?  

    Bentley 二次开发小白一枚

  • 必须先添加到文件中是因为要把标注元素跟被标注的元素关联起来才这样的,关联起来的好处是可以使被标注的元素发生变化时,尺寸标注能够自动更新,如果不需要这样的话,就不用非得把元素添加到文件中再去标注了。

  • 明白您说的意思,我想说的是 看看还有没有其他的替代方法或策略!比如使用MSCE的Label 可以吗?我看之前有帖子在使用标注的时候,涉及到这个概念了,但我没有接触过!不明白,是否可行!!!

    Bentley 二次开发小白一枚

  • 老师好:

    我现在 遇到两个问题,需要老师 支援一下,问题如下:

    1、我有一个三维的实体,类型是Smart Soild  ,获取子元素类型后为ID值 2,也就是CELL_HEADER_ELM类型。具体效果如下图,

     ,那么如果我在这上面做标注的话 ,怎么做呢?

    2、对于一个二维图,该cell 包含除了基本简单的元素类型外,通过获取元素类型后 ID值为12 ,也就是 CMPLX_STRING_ELM 类型,那么我是不是要对 这个 CMPLX_STRING_ELM 类型在进行一下 遍历啊?那么这种嵌套的遍历 要如何遍历呢?具体情况如下图

    辛苦老师 ,解答一下!如果这个帖子不方便看了,我可以做一次结帖,重新开一个帖子的!辛苦老师了!!!!!

    Bentley 二次开发小白一枚

  • 比如使用MSCE的Label 可以吗?

    Label可以用来标注元素属性对话框中看到的元素属性,跟尺寸标注不是一个概念。

  • 我有一个三维的实体,类型是Smart Soild  ,获取子元素类型后为ID值 2,也就是CELL_HEADER_ELM类型。

    SmartSolid是以Cell的形式组织起来的,其实如果不需要非得跟元素关联起来,仅仅只是标注两个点的话,是很简单的,代码中调用IDimensionEdit的InsertPoint函数插入标注点时,直接传递一个DPoint3d点即可。

    那么这种嵌套的遍历 要如何遍历呢?

    嵌套的话,通过递归算法就可以遍历到所有的子元素。例如写一个函数,接受一个元素,如果是简单元素直接处理,然后返回。如果是复杂元素就用ChildEditElemIter遍历这个复杂元素的所有子元素,如果子元素又是个复杂元素,继续调用这个函数去遍历。

Reply
  • 我有一个三维的实体,类型是Smart Soild  ,获取子元素类型后为ID值 2,也就是CELL_HEADER_ELM类型。

    SmartSolid是以Cell的形式组织起来的,其实如果不需要非得跟元素关联起来,仅仅只是标注两个点的话,是很简单的,代码中调用IDimensionEdit的InsertPoint函数插入标注点时,直接传递一个DPoint3d点即可。

    那么这种嵌套的遍历 要如何遍历呢?

    嵌套的话,通过递归算法就可以遍历到所有的子元素。例如写一个函数,接受一个元素,如果是简单元素直接处理,然后返回。如果是复杂元素就用ChildEditElemIter遍历这个复杂元素的所有子元素,如果子元素又是个复杂元素,继续调用这个函数去遍历。

Children
No Data