Classes

The CELL_HEADER_ELM type that corresponds to the Cell_3d and Cell_2d structures is a general purpose complex header element whose children can be most other displayable element types. More...

Classes

struct  Type2Handler
 Base class for application defined cells that want to be treated as a single object. More...
 
struct  NormalCellHeaderHandler
 Class for user defined cells and groups. More...
 

Detailed Description

The CELL_HEADER_ELM type that corresponds to the Cell_3d and Cell_2d structures is a general purpose complex header element whose children can be most other displayable element types.

Prior to the advent of element handlers CELL_HEADER_ELM was a convenient way for many applications to represent their graphical application data. This leads to two distinct types of cells, those that want to be treated as a single object and those that are just a collection of other "top-level" elements.

SmartSolids and Notes are examples of cells that do not have public children. All operations on these application defined types needs to go through the element handler as direct modification of the child elements may produce an invalid element.

User defined cells and group cells (Edit->Group) are collections of other element types and do have public child elements that may be of interest to applications.

Type2Handler is the base class for all cell sub-types. The Type2Handler class will never be the element handler for any element, it will always be a sub-class. The Type2Handler class itself does not report having any public children. Application defined cells (like SmartSolids) that want to be treated as a single object will be a direct sub-class of Type2Handler.

Whether a particular Type2Handler sub-class has public children is enforced through the use of child element iterators. A ChildElemIter can be used to iterate over the public children of a cell to extract information. A ChildEditElemIter can be used to iterate over the public children of a cell to make modifications like adding or removing area fill.

Note
Since cells can be nested inside other cells you will also need to ask the children at any given depth if they also have public children.
static bool queryCellChildren (ElementHandleCR eh)
{
if (NULL != dynamic_cast <"SomeInterface*"> (&eh.GetHandler ()))
return true;
for (ChildElemIter childEh (eh, false); childEh.IsValid (); childEh = childEh.ToNext ())
if (queryCellChildren (childEh))
return true;
return false;
}

NormalCellHeaderHandler is a sub-class of Type2Handler that is used for user defined cells and group cells. The NormalCellHeaderHandler class represents a public collection of other elements and will return a child iterator for both query and edit.

Remarks
Required library : DgnPlatform<ApiNumber>.lib i.e. DgnPlatform5.lib

Copyright © 2017 Bentley Systems, Incorporated. All rights reserved.