Hoops Visualize HPS  version 2018-SP2
Hoops Visualize HPS 3D Rendering Engine
Looking for a senior C++ dev?
I'm looking for work. Hire me!
HPS::Component Class Reference

The Component class is a smart pointer. More...

#include <sprk.h>

Inheritance diagram for HPS::Component:
Collaboration diagram for HPS::Component:

Public Types

enum  Visibility : uint32_t {
  Visibility::PreserveUserDefined,
  Visibility::PreserveModelDefined,
  Visibility::PreserveNone,
  Visibility::PreserveAll
}
 Enumerates whether visibility will be overridden for the subtree under a ComponentPath. More...
 
enum  ComponentType : uint32_t {
  ComponentType::None = 0x00000000,
  ComponentType::GenericMask = 0xfffff000,
  ComponentType::ExchangeComponentMask = 0x00001000,
  ComponentType::ExchangeModelFile = 0x00001001,
  ComponentType::ExchangeProductOccurrence = 0x00001002,
  ComponentType::ExchangePartDefinition = 0x00001003,
  ComponentType::ExchangeView = 0x00001004,
  ComponentType::ExchangeFilter = 0x00001005,
  ComponentType::ExchangeRepresentationItemMask = 0x00003000,
  ComponentType::ExchangeRIBRepModel = 0x00003001,
  ComponentType::ExchangeRICurve = 0x00003002,
  ComponentType::ExchangeRIDirection = 0x00003003,
  ComponentType::ExchangeRIPlane = 0x00003004,
  ComponentType::ExchangeRIPointSet = 0x00003005,
  ComponentType::ExchangeRIPolyBRepModel = 0x00003006,
  ComponentType::ExchangeRIPolyWire = 0x00003007,
  ComponentType::ExchangeRISet = 0x00003008,
  ComponentType::ExchangeRICoordinateSystem = 0x00003009,
  ComponentType::ExchangeTopologyMask = 0x00005000,
  ComponentType::ExchangeTopoBody = 0x00005001,
  ComponentType::ExchangeTopoConnex = 0x00005002,
  ComponentType::ExchangeTopoShell = 0x00005003,
  ComponentType::ExchangeTopoFace = 0x00005004,
  ComponentType::ExchangeTopoLoop = 0x00005005,
  ComponentType::ExchangeTopoCoEdge = 0x00005006,
  ComponentType::ExchangeTopoEdge = 0x00005007,
  ComponentType::ExchangeTopoVertex = 0x00005008,
  ComponentType::ExchangeTopoSingleWireBody = 0x00005009,
  ComponentType::ExchangeTopoWireEdge = 0x0000500a,
  ComponentType::ExchangeDrawingMask = 0x00009000,
  ComponentType::ExchangeDrawingModel = 0x00009001,
  ComponentType::ExchangeDrawingView = 0x00009002,
  ComponentType::ExchangeDrawingSheet = 0x00009003,
  ComponentType::ExchangeBasicDrawingBlock = 0x00009004,
  ComponentType::ExchangeOperatorDrawingBlock = 0x00009005,
  ComponentType::ExchangePMIMask = 0x00011000,
  ComponentType::ExchangePMI = ExchangePMIMask,
  ComponentType::ExchangePMIText = 0x00011100,
  ComponentType::ExchangePMIRichText = 0x00011200,
  ComponentType::ExchangePMIRoughness = 0x00011300,
  ComponentType::ExchangePMIGDT = 0x00011400,
  ComponentType::ExchangePMIDatum = 0x00011500,
  ComponentType::ExchangePMILineWelding = 0x00011600,
  ComponentType::ExchangePMISpotWelding = 0x00011700,
  ComponentType::ExchangePMIDimension = 0x00011800,
  ComponentType::ExchangePMIBalloon = 0x00011900,
  ComponentType::ExchangePMICoordinate = 0x00011a00,
  ComponentType::ExchangePMIFastener = 0x00011b00,
  ComponentType::ExchangePMILocator = 0x00011c00,
  ComponentType::ExchangePMIMeasurementPoint = 0x00011d00,
  ComponentType::ParasolidComponentMask = 0x00020000,
  ComponentType::ParasolidModelFile = 0x00020001,
  ComponentType::ParasolidAssembly = 0x00020002,
  ComponentType::ParasolidInstance = 0x00020003,
  ComponentType::ParasolidTopologyMask = 0x00060000,
  ComponentType::ParasolidTopoBody = 0x00060001,
  ComponentType::ParasolidTopoRegion = 0x00060002,
  ComponentType::ParasolidTopoShell = 0x00060003,
  ComponentType::ParasolidTopoFace = 0x00060004,
  ComponentType::ParasolidTopoLoop = 0x00060005,
  ComponentType::ParasolidTopoFin = 0x00060006,
  ComponentType::ParasolidTopoEdge = 0x00060007,
  ComponentType::ParasolidTopoVertex = 0x00060008,
  ComponentType::DWGComponentMask = 0x00100000,
  ComponentType::DWGModelFile = 0x00100001,
  ComponentType::DWGLayout = 0x00100002,
  ComponentType::DWGBlockTable = 0x00100003,
  ComponentType::DWGBlockTableRecord = 0x00100004,
  ComponentType::DWGEntity = 0x00100005,
  ComponentType::DWGLayerTable = 0x00100006,
  ComponentType::DWGLayer = 0x00100007,
  ComponentType::UserComponent = 0x01000000
}
 Enumerates the format-dependent types a Component can represent. More...
 

Public Member Functions

 Component ()
 The default constructor creates an uninitialized Component object. More...
 
 Component (Component const &in_that)
 The copy constructor creates a Component object that shares the underlying smart-pointer of the source Component. More...
 
 Component (Component &&in_that)
 The move constructor creates a Component by transferring the underlying object of the rvalue reference to this Component. More...
 
virtual ~Component ()
 Releases a reference to this Component. More...
 
HPS::Type ObjectType () const
 
Componentoperator= (Component const &in_that)
 Share the underlying smart-pointer of the Component source. More...
 
Componentoperator= (Component &&in_that)
 The move assignment operator transfers the underlying object of the rvalue reference to this Component. More...
 
virtual void Assign (Component const &in_that)
 Share the underlying smart-pointer of the Component source. More...
 
bool Equals (Component const &in_that) const
 Check if the source Component points to the same underlying impl as this Component. More...
 
bool operator!= (Component const &in_that) const
 Check if the source Component points to a different impl than this Component. More...
 
bool operator== (Component const &in_that) const
 Check if the source Component points to the same underlying impl as this Component. More...
 
ComponentType GetComponentType () const
 Gets the specific format-dependent type this Component represents. More...
 
bool HasComponentType (ComponentType in_mask) const
 This function indicates whether this Component has the given ComponentType mask. More...
 
void AddKey (Key const &in_key)
 Adds a key to be associated with this Component. More...
 
KeyArray GetKeys () const
 Get the underlying keys (if any) which represent this Component. More...
 
void AddOwner (Component &in_owner, IncludeKey const &in_include=IncludeKey())
 Adds an owner to this Component. More...
 
ComponentArray GetOwners () const
 Get the Component objects (if any) which "own" this Component. More...
 
ComponentArray GetSubcomponents () const
 Get the subcomponent objects (if any) owned or referenced by this Component. More...
 
ComponentArray GetAllSubcomponents (ComponentType in_type) const
 Gets all components under this Component that have the specified ComponentType mask. More...
 
void AddReference (Component &in_reference)
 Adds a Component as a reference to this Component. More...
 
ComponentArray GetReferrers () const
 Gets the Component objects which refer to this Component (if any). More...
 
ComponentArray GetReferences () const
 Get the Component objects (if any) which are referenced by this Component. More...
 
MetadataArray GetAllMetadata () const
 Get all Metadata objects associated with this Component. More...
 
Metadata GetMetadata (char const *in_name) const
 Get the single Metadata object with the given name associated with this Component (if present). More...
 
UTF8 GetName () const
 Gets the name for this Component. More...
 
void Delete ()
 
void Flush ()
 Removes all references to the underlying subcomponents, but leaves this Component around. More...
 
virtual HPS::Type Type () const
 This function returns the true type of the underlying object. More...
 
virtual bool Empty () const
 Indicates whether this object has any values set on it. More...
 
virtual void Reset ()
 Resets this object to its initial, uninitialized state. More...
 
bool HasType (HPS::Type in_mask) const
 This function indicates whether this Object has the given Type mask. More...
 
intptr_t GetClassID () const
 Returns a unique identifier that is shared by all objects of the same class. More...
 
intptr_t GetInstanceID () const
 Returns an identifier that can be used to identify which instance of a class an object is. More...
 

Static Public Member Functions

static KeyPathArray GetKeyPath (Component const &in_component)
 Gets the list of KeyPath objects that correspond to the given Component. More...
 
static KeyPathArray GetKeyPath (size_t in_count, Component const in_components[])
 Gets the list of KeyPath objects that correspond to the given Component path. More...
 
static KeyPathArray GetKeyPath (ComponentArray const &in_components)
 Gets the list of KeyPath objects that correspond to the given Component path. More...
 
template<typename T >
static intptr_t ClassID ()
 Unique identifier for this class. More...
 

Static Public Attributes

static const HPS::Type staticType = HPS::Type::Component
 

Detailed Description

The Component class is a smart pointer.

It represents an arbitrary component of a structured file.

Member Enumeration Documentation

◆ ComponentType

enum HPS::Component::ComponentType : uint32_t
strong

Enumerates the format-dependent types a Component can represent.

Enumerator
None 
GenericMask 
ExchangeComponentMask 

Mask for any Exchange components.

ExchangeModelFile 

Represents an A3DAsmModelFile in Exchange.

This will be represented by an Exchange::CADModel.

ExchangeProductOccurrence 

Represents an A3DAsmProductOccurrence in Exchange.

This will be represented by an Exchange::Component.

ExchangePartDefinition 

Represents an A3DAsmPartDefinition in Exchange.

This will be represented by an Exchange::Component.

ExchangeView 

Represents an A3DMkpView in Exchange.

This will be represented by an Exchange::Capture component.

ExchangeFilter 

Represents an A3DMkpFilter in Exchange.

This will be represented by an Exchange::Filter component.

ExchangeRepresentationItemMask 

Mask for any Exchange representation items.

ExchangeRIBRepModel 

Represents an A3DRiBrepModel in Exchange.

This will be represented by an Exchange::Component.

ExchangeRICurve 

Represents an A3DRiCurve in Exchange.

This will be represented by an Exchange::Component.

ExchangeRIDirection 

Represents an A3DRiDirection in Exchange.

This will be represented by an Exchange::Component.

ExchangeRIPlane 

Represents an A3DRiPlane in Exchange.

This will be represented by an Exchange::Component.

ExchangeRIPointSet 

Represents an A3DRiPointSet in Exchange.

This will be represented by an Exchange::Component.

ExchangeRIPolyBRepModel 

Represents an A3DRiPolyBrepModel in Exchange.

This will be represented by an Exchange::Component.

ExchangeRIPolyWire 

Represents an A3DRiPolyWire in Exchange.

This will be represented by an Exchange::Component.

ExchangeRISet 

Represents an A3DRiSet in Exchange.

This will be represented by an Exchange::Component.

ExchangeRICoordinateSystem 

Represents an A3DRiCoordinateSystem in Exchange.

This will be represented by an Exchange::Component.

ExchangeTopologyMask 

Mask for any Exchange topology items.

ExchangeTopoBody 

Represents an A3DTopoBody in Exchange.

This will be represented by an Exchange::Component.

ExchangeTopoConnex 

Represents an A3DTopoConnex in Exchange.

This will be represented by an Exchange::Component.

ExchangeTopoShell 

Represents an A3DTopoShell in Exchange.

This will be represented by an Exchange::Component.

ExchangeTopoFace 

Represents an A3DTopoFace in Exchange.

This will be represented by an Exchange::Component.

ExchangeTopoLoop 

Represents an A3DTopoLoop in Exchange.

This will be represented by an Exchange::Component.

ExchangeTopoCoEdge 

Represents an A3DTopoCoEdge in Exchange.

This will be represented by an Exchange::Component.

ExchangeTopoEdge 

Represents an A3DTopoEdge in Exchange.

This will be represented by an Exchange::Component.

ExchangeTopoVertex 

Represents an A3DTopoVertex in Exchange.

This will be represented by an Exchange::Component.

ExchangeTopoSingleWireBody 

Represents an A3DTopoSingleWireBody in Exchange.

This will be represented by an Exchange::Component.

ExchangeTopoWireEdge 

Represents an A3DTopoWireEdge in Exchange.

This will be represented by an Exchange::Component.

ExchangeDrawingMask 

Mask for any Exchange drawing item.

ExchangeDrawingModel 

Represents an A3DDrawingModel in Exchange.

This is the starting point of a drawing. It is found under a product occurrence. Generally there is only one Drawing Model per file, but it is possible to have more than one. This will be represented by an Exchange::Component.

ExchangeDrawingView 

Represents an A3DDrawingView in Exchange.

A Drawing Sheet can contain views. Views are basically snapshot of the model from a particular angle. Each view has a name and a type, for example, front view, side view, section, etc. This will be represented by an Exchange::Component.

ExchangeDrawingSheet 

Represents an A3DDrawingSheet in Exchange.

A DrawingModel contains one or more sheets. Each sheet represents a physical sheet of paper. Generally a sheet defines the frame of the drawing, contains the name of the paper format it reproduces, and contains a transform. One of the sheets is classified as the "active sheet" by the model, and this one will be what you see when you first load a drawing. There can only be one active sheet at the time, with all the inactive ones being hidden. Drawing sheets have metadata associated with them called 'IsDefaultSheet'. This is a BooleanMetadata. It will return true if the sheet is the active sheet, and false otherwise. This will be represented by an Exchange::Component.

ExchangeBasicDrawingBlock 

Represents an A3DDrawingBlockBasic in Exchange.

Sheets and views contain blocks. Blocks can be of two types: basic or operator blocks. Operator blocks are blocks which reference a particular view. These two types are internally treated as the same thing. Blocks contain the actual representation items which will be tessellated and drawn on the screen. This will be represented by an Exchange::Component.

ExchangeOperatorDrawingBlock 

Represents an A3DDrawingBlockOperator in Exchange.

Sheets and views contain blocks. Blocks can be of two types: basic or operator blocks. Operator blocks are blocks which reference a particular view. These two types are internally treated as the same thing. Blocks contain the actual representation items which will be tessellated and drawn on the screen. This will be represented by an Exchange::Component.

ExchangePMIMask 

Mask for any Exchange PMI items.

ExchangePMI 

Represents a generic A3DMkpMarkup in Exchange.

This will be represented by an Exchange::Component.

ExchangePMIText 

Represents an A3DMarkupText in Exchange.

This will be represented by an Exchange::Component.

ExchangePMIRichText 

Represents an A3DMarkupRichText in Exchange.

This will be represented by an Exchange::Component.

ExchangePMIRoughness 

Represents an A3DMarkupRoughness in Exchange.

This will be represented by an Exchange::Component.

ExchangePMIGDT 

Represents an A3DMarkupGDT in Exchange.

This will be represented by an Exchange::Component.

ExchangePMIDatum 

Represents an A3DMarkupDatum in Exchange.

This will be represented by an Exchange::Component.

ExchangePMILineWelding 

Represents an A3DMarkupLineWelding in Exchange.

This will be represented by an Exchange::Component.

ExchangePMISpotWelding 

Represents an A3DMarkupSpotWelding in Exchange.

This will be represented by an Exchange::Component.

ExchangePMIDimension 

Represents an A3DMarkupDimension in Exchange.

This will be represented by an Exchange::Component.

ExchangePMIBalloon 

Represents an A3DMarkupBalloon in Exchange.

This will be represented by an Exchange::Component.

ExchangePMICoordinate 

Represents an A3DMarkupCoordinate in Exchange.

This will be represented by an Exchange::Component.

ExchangePMIFastener 

Represents an A3DMarkupFastener in Exchange.

This will be represented by an Exchange::Component.

ExchangePMILocator 

Represents an A3DMarkupLocator in Exchange.

This will be represented by an Exchange::Component.

ExchangePMIMeasurementPoint 

Represents an A3DMarkupMeasurementPoint in Exchange.

This will be represented by an Exchange::Component.

ParasolidComponentMask 

Mask for any Parasolid components.

ParasolidModelFile 

Abstract component representing the root of a Parasolid file.

Does not map to any Parasolid element.

ParasolidAssembly 

Represents a PK_ASSEMBLY in Parasolid.

This will be represented by a Parasolid::Component.

ParasolidInstance 

Represents a PK_INSTANCE in Parasolid.

This will be represented by a Parasolid::Component.

ParasolidTopologyMask 

Mask for any Parasolid topological items.

ParasolidTopoBody 

Represents a PK_BODY in Parasolid.

This will be represented by a Parasolid::Component.

ParasolidTopoRegion 

Represents a PK_REGION in Parasolid.

This will be represented by a Parasolid::Component.

ParasolidTopoShell 

Represents a PK_SHELL in Parasolid.

This will be represented by a Parasolid::Component.

ParasolidTopoFace 

Represents a PK_FACE in Parasolid.

This will be represented by a Parasolid::Component.

ParasolidTopoLoop 

Represents a PK_LOOP in Parasolid.

This will be represented by a Parasolid::Component.

ParasolidTopoFin 

Represents a PK_FIN in Parasolid.

This will be represented by a Parasolid::Component.

ParasolidTopoEdge 

Represents a PK_EDGE in Parasolid.

This will be represented by a Parasolid::Component.

ParasolidTopoVertex 

Represents a PK_VERTEX in Parasolid.

This will be represented by a Parasolid::Component.

DWGComponentMask 

Mask for any DWG components.

DWGModelFile 

Represents an AcDbDatabase in RealDWG.

This will be represented by a DWG::CADModel.

DWGLayout 

Represents an AcDbLayout in RealDWG.

DWGBlockTable 

Represents an AcDbBlockTable in RealDWG.

DWGBlockTableRecord 

Represents an AcDbBlockTableRecord in RealDWG.

DWGEntity 

Represents an AcDbEntity in RealDWG.

DWGLayerTable 

Represents an AcDbLayerTable in RealDWG.

DWGLayer 

Represents an AcDbLayer in RealDWG.

UserComponent 

Represents a user created component.

◆ Visibility

enum HPS::Component::Visibility : uint32_t
strong

Enumerates whether visibility will be overridden for the subtree under a ComponentPath.

Enumerator
PreserveUserDefined 

Preserve the user-derived visibility for the subtree under the ComponentPath specified (only where ComponentPath::Show or ComponentPath::Hide was explicitly invoked).

PreserveModelDefined 

Preserve the model-derived visibility for the subtree under the ComponentPath specified (ignoring any ComponentPath where ComponentPath::Show or ComponentPath::Hide was explicitly invoked)

PreserveNone 

Override the visibility for any components in the subtree under the ComponentPath specified regardless of how it was set.

PreserveAll 

Preserve the visibility for all components in the subtree under the ComponentPath specified regardless of how it was set.

Constructor & Destructor Documentation

◆ Component() [1/3]

HPS::Component::Component ( )

The default constructor creates an uninitialized Component object.

The Type() function will return Type::None.

◆ Component() [2/3]

HPS::Component::Component ( Component const &  in_that)

The copy constructor creates a Component object that shares the underlying smart-pointer of the source Component.

Parameters
in_thatThe source Component to copy.

◆ Component() [3/3]

HPS::Component::Component ( Component &&  in_that)

The move constructor creates a Component by transferring the underlying object of the rvalue reference to this Component.

Parameters
in_thatAn rvalue reference to a Component to take the underlying object from.

◆ ~Component()

virtual HPS::Component::~Component ( )
virtual

Releases a reference to this Component.

The Component will not be deleted unless the final reference is destroyed.

Reimplemented in HPS::Parasolid::Component, HPS::Exchange::Component, and HPS::DWG::Component.

Member Function Documentation

◆ AddKey()

void HPS::Component::AddKey ( Key const &  in_key)

Adds a key to be associated with this Component.

This will additionally ensure this key can be used to find this Component via CADModel::GetComponentFromKey on the owning CADModel. In general, this will either be a SegmentKey or a GeometryKey (or a subclass thereof), but it may also be an IncludeKey, which is necessary for an instanced Component. If an IncludeKey is associated with this Component, the underlying target of the include will be associated with this Component, though the include will be stored as well to determine things like the associated KeyPath correctly.

Parameters
in_keyThe key to associate with this Component.

◆ AddOwner()

void HPS::Component::AddOwner ( Component in_owner,
IncludeKey const &  in_include = IncludeKey() 
)

Adds an owner to this Component.

This is intended to facilitate adding additional owners to an instanced Component, and allows specifying the associated IncludeKey for the additional owner. It is possible to add an owner without adding an IncludeKey, and, if desired, add the IncludeKey separately via AddKey.

Parameters
in_ownerThe Component to act as an additional owner for this Component.
in_includeThe IncludeKey for this Component for this new owner. This defaults to an uninitialized IncludeKey.

◆ AddReference()

void HPS::Component::AddReference ( Component in_reference)

Adds a Component as a reference to this Component.

Parameters
in_referenceThe Component to add as a reference to this Component.

◆ Assign()

virtual void HPS::Component::Assign ( Component const &  in_that)
virtual

Share the underlying smart-pointer of the Component source.

Parameters
in_thatThe Component source of the assignment.
Returns
A reference to this Component.

◆ ClassID()

template<typename T >
static intptr_t HPS::Object::ClassID ( )
inlinestaticinherited

Unique identifier for this class.

Note: this method uses construction of static objects. If used in a constructor, it should be used in the body not the initializer list.

◆ Delete()

void HPS::Component::Delete ( )

The behavior of the Delete function varies according to the type of object it's being called on.

HPS:

Component
Removes this component from memory and invalidates any component objects referring to it. All owners of this component will no longer have it as a subcomponent, all components that reference this component will no longer have it as a reference, and the keys underlying this component will be deleted. Any subcomponents of this component that have multiple owners will have this component removed as an owner. Any subcomponents of this component that have only this component as an owner will be recursively deleted via this function.

Invoking this function on an instance of an object derived from Component will perform some additional cleanup relevant to the derived type. For example, performing a delete on a CADModel will delete the default capture associated with the CADModel, delete its associated Model, and delete the mapping information between keys and components, in addition to performing all the operations for a generic component. See below for the behavior of derived types in the integrations that create component trees.

Lastly, note that it is not necessary to construct or cast a component to its specific type to ensure the appropriate delete logic is used. The appropriate logic will always be invoked even if using a base Component object handle to a derived type.

Exchange:

Component, ProductOccurrence, Sheet, Capture, Filter
Invoking delete on these types will not modify the associated Exchange data. It will remove the associated A3DEntity pointer and component from the mapping data accessible via Exchange::CADModel::GetComponentFromEntity, and then it will invoke the base Component delete logic.

CADModel
Invoking delete on an Exchange::CADModel will delete the underlying A3DAsmModelFile via A3DAsmModelFileDelete if Exchange::CADModel::GetEntityOwnership is true. It will additionally clean up the associated A3DRWParamsPrcReadHelper if one was created during import (see Exchange::ImportOptionsKit::SetPRCReadHelper). The mapping data between A3DEntity pointers and components will also be deleted, and lastly it will invoke the delete logic for the base CADModel.

Parasolid:

Component
Invoking delete on this type will invoke PK_ENTITY_delete on the underlying Parasolid entity if the entity has class PK_CLASS_assembly or PK_CLASS_body. It will remove this Parasolid entity and component from the mapping data accessible via Parasolid::CADModel::GetComponentFromEntity, and then it will invoke the base Component delete logic.

CADModel
The mapping data between Parasolid entities and components will be deleted, and then it will invoke the base CADModel delete logic.

DWG:

Component, Layer, Layout
Invoking delete on these types will not modify the associated DWG database. It will simply invoke the base Component delete logic.

CADModel
Invoking delete on a DWG::CADModel will release the underlying AcDbDatabase via acdbReleaseHostDwg, and then it will invoke the base CADModel delete logic.

◆ Empty()

virtual bool HPS::Object::Empty ( ) const
inlinevirtualinherited

Indicates whether this object has any values set on it.

Returns
true if no values are set on this object, false otherwise.

Reimplemented in HPS::STL::ImportResultsKit, HPS::STL::ImportOptionsKit, HPS::OBJ::ImportResultsKit, HPS::OBJ::ImportOptionsKit, HPS::Hardcopy::File::ExportOptionsKit, HPS::Stream::ExportOptionsKit, HPS::Stream::ImportResultsKit, HPS::Stream::ImportOptionsKit, HPS::PointCloud::ImportOptionsKit, HPS::PointCloud::ImportResultsKit, HPS::UpdateOptionsKit, HPS::HighlightSearchOptionsKit, HPS::HighlightOptionsKit, HPS::SelectionOptionsKit, HPS::SearchOptionsKit, HPS::CutGeometryGatheringOptionsKit, HPS::ShapeKit, HPS::ShaderKit, HPS::Shader::ImportOptionsKit, HPS::ImageKit, HPS::Image::ImportOptionsKit, HPS::Image::ExportOptionsKit, HPS::TextureOptionsKit, HPS::LinePatternKit, HPS::LinePatternParallelKit, HPS::LinePatternOptionsKit, HPS::GlyphKit, HPS::ApplicationWindowOptionsKit, HPS::OffScreenWindowOptionsKit, HPS::StandAloneWindowOptionsKit, HPS::GridKit, HPS::PolygonKit, HPS::MeshKit, HPS::ShellKit, HPS::ShellRelationResultsKit, HPS::ShellRelationOptionsKit, HPS::ShellOptimizationOptionsKit, HPS::TextKit, HPS::EllipticalArcKit, HPS::EllipseKit, HPS::TrimKit, HPS::NURBSSurfaceKit, HPS::NURBSCurveKit, HPS::SpotlightKit, HPS::InfiniteLineKit, HPS::CuttingSectionKit, HPS::CircularWedgeKit, HPS::CircularArcKit, HPS::CircleKit, HPS::SphereKit, HPS::CylinderKit, HPS::DistantLightKit, HPS::MarkerKit, HPS::LineKit, HPS::AttributeLockKit, HPS::FontInfoState, HPS::WindowInfoKit, HPS::DebuggingKit, HPS::SubwindowKit, HPS::ContourLineKit, HPS::VisualEffectsKit, HPS::TransformMaskKit, HPS::PostProcessEffectsKit, HPS::DrawingAttributeKit, HPS::HiddenLineAttributeKit, HPS::PerformanceKit, HPS::NURBSSurfaceAttributeKit, HPS::MaterialKit, HPS::MaterialMappingKit, HPS::MatrixKit, HPS::CurveAttributeKit, HPS::EdgeAttributeKit, HPS::LineAttributeKit, HPS::TextAttributeKit, HPS::CuttingSectionAttributeKit, HPS::CylinderAttributeKit, HPS::LightingAttributeKit, HPS::SphereAttributeKit, HPS::MarkerAttributeKit, HPS::CullingKit, HPS::ColorInterpolationKit, HPS::TransparencyKit, HPS::SelectabilityKit, HPS::CameraKit, HPS::VisibilityKit, HPS::BoundingKit, HPS::SegmentOptimizationOptionsKit, HPS::Publish::ExportOptionsKit, HPS::Publish::TextFieldKit, HPS::Publish::SignatureFieldKit, HPS::Publish::DropDownListKit, HPS::Exchange::TessellationOptionsKit, HPS::Publish::ListBoxKit, HPS::Exchange::ExportSTEPOptionsKit, HPS::Exchange::ExportParasolidOptionsKit, HPS::Publish::RadioButtonKit, HPS::Exchange::ExportIGESOptionsKit, HPS::Exchange::ExportXMLOptionsKit, HPS::Publish::CheckBoxKit, HPS::Exchange::ExportU3DOptionsKit, HPS::Exchange::ExportSTLOptionsKit, HPS::Publish::ButtonKit, HPS::Exchange::ExportPRCOptionsKit, HPS::Publish::LinkKit, HPS::Exchange::ExportJTOptionsKit, HPS::Publish::SlideTableKit, HPS::Exchange::ExportACISOptionsKit, HPS::Publish::TableKit, HPS::Exchange::Export3MFOptionsKit, HPS::Publish::ImageKit, HPS::Publish::TextKit, HPS::Exchange::ModelFileImportOptionsKit, HPS::Publish::ViewKit, HPS::Exchange::TranslationOptionsKit, HPS::Publish::ArtworkKit, HPS::Publish::AnnotationKit, HPS::ComponentPath, HPS::Exchange::ImportOptionsKit, HPS::Parasolid::ExportOptionsKit, HPS::Exchange::NURBSConversionOptionsKit, HPS::Parasolid::LineTessellationKit, HPS::Exchange::Configuration, HPS::Publish::PageKit, HPS::Parasolid::FacetTessellationKit, HPS::Publish::DocumentKit, HPS::Parasolid::ImportOptionsKit, HPS::DWG::ImportOptionsKit, HPS::OOC::ImportOptionsKit, HPS::Sketchup::ImportOptionsKit, and HPS::Sketchup::ImportResultsKit.

◆ Equals()

bool HPS::Component::Equals ( Component const &  in_that) const

Check if the source Component points to the same underlying impl as this Component.

Parameters
in_thatThe source Component to compare to this Component.
Returns
true if the objects reference the same impl, false otherwise.

◆ Flush()

void HPS::Component::Flush ( )

Removes all references to the underlying subcomponents, but leaves this Component around.

If a subcomponent of the component being flushed has multiple owners, the flush will simply remove the reference to that subcomponent. If a subcomponent of the component being flushed has only one owner (the component being flushed), that subcomponent will be deleted. Any handles to the deleted components will become invalid.

◆ GetAllMetadata()

MetadataArray HPS::Component::GetAllMetadata ( ) const

Get all Metadata objects associated with this Component.

Returns
All Metadata objects associated with this Component.

◆ GetAllSubcomponents()

ComponentArray HPS::Component::GetAllSubcomponents ( ComponentType  in_type) const

Gets all components under this Component that have the specified ComponentType mask.

This will examine this subcomponents of this Component, the subcomponents of the subcomponents, and so on.

Parameters
in_typeMask of the components to look for.
Returns
The Component objects under this Component (if any) which have the specified mask.

◆ GetClassID()

intptr_t HPS::Object::GetClassID ( ) const
inherited

Returns a unique identifier that is shared by all objects of the same class.

Returns
A unique value shared by all objects of the same class.

◆ GetComponentType()

ComponentType HPS::Component::GetComponentType ( ) const

Gets the specific format-dependent type this Component represents.

Returns
The specific format-dependent type this Component represents.

◆ GetInstanceID()

intptr_t HPS::Object::GetInstanceID ( ) const
inherited

Returns an identifier that can be used to identify which instance of a class an object is.

Different keys and controls will return the same value if they are backed by the same database resource.

Returns
A value unique to an instance of an object and all objects that are backed by the same database resource.

◆ GetKeyPath() [1/3]

static KeyPathArray HPS::Component::GetKeyPath ( Component const &  in_component)
static

Gets the list of KeyPath objects that correspond to the given Component.

There will be at least one KeyPath, and possibly more than one if a particular Component is instanced, e.g., if the Component corresponds to the wheel of a car, a KeyPath would be returned for each wheel (driver side front and rear, and passenger side front and rear). Each KeyPath in the list will also include the portion of the path above the Model (associated with the root CADModel) for each View, Layout layer, and Canvas permutation which includes the Model. This function will not take into account any includes or paths which do not come from the Component hierarchy or the View, Layout, and Canvas permutations which include the Model.

Parameters
in_componentThe Component for which to compute the corresponding KeyPath objects.
Returns
A list of all KeyPath objects which refer to the given Component.
See also
HighlightControl

◆ GetKeyPath() [2/3]

static KeyPathArray HPS::Component::GetKeyPath ( size_t  in_count,
Component const  in_components[] 
)
static

Gets the list of KeyPath objects that correspond to the given Component path.

This function can be used to get the KeyPath for a particular instance of an instanced Component. For a non-instanced Component, since the Component path can be determined unambiguously, the KeyPath returned will be the same as if only the leaf non-instanced Component was given to this function. There will be at least one KeyPath returned, and possibly more than one for each View, Layout layer, and Canvas which include the Model associated with the root CADModel. This function will not take into account any includes or paths which do not come from the Component hierarchy or the View, Layout, and Canvas permutations which include the Model.

Parameters
in_countSize of the following array.
in_componentsThe Component path for which to compute the corresponding KeyPath objects. The path should be defined such that the first element is the leaf Component, and the last element is the root CADModel. Each element in the path should be an owner of the preceding Component, otherwise an exception will be thrown.
Returns
A list of all KeyPath objects which refer to the given Component.
See also
HighlightControl

◆ GetKeyPath() [3/3]

static KeyPathArray HPS::Component::GetKeyPath ( ComponentArray const &  in_components)
static

Gets the list of KeyPath objects that correspond to the given Component path.

This function can be used to get the KeyPath for a particular instance of an instanced Component. For a non-instanced Component, since the Component path can be determined unambiguously, the KeyPath returned will be the same as if only the leaf non-instanced Component was given to this function. There will be at least one KeyPath returned, and possibly more than one for each View, Layout layer, and Canvas which include the Model associated with the root CADModel. This function will not take into account any includes or paths which do not come from the Component hierarchy or the View, Layout, and Canvas permutations which include the Model.

Parameters
in_componentsThe Component path for which to compute the corresponding KeyPath objects. The path should be defined such that the first element is the leaf Component, and the last element is the root CADModel. Each element in the path should be an owner of the preceding Component, otherwise an exception will be thrown.
Returns
A list of all KeyPath objects which refer to the given Component.
See also
HighlightControl

◆ GetKeys()

KeyArray HPS::Component::GetKeys ( ) const

Get the underlying keys (if any) which represent this Component.

Generally this will either be a segment or geometry key.

Returns
The underlying keys (if any) which represent this Component.

◆ GetMetadata()

Metadata HPS::Component::GetMetadata ( char const *  in_name) const

Get the single Metadata object with the given name associated with this Component (if present).

Parameters
in_nameUTF8-encoded name of the Metadata object to find on this Component.
Returns
The single Metadata object with the given name associated with this Component (if present).

◆ GetName()

UTF8 HPS::Component::GetName ( ) const

Gets the name for this Component.

This is a convenience function equivalent to getting the "Name" metadata for this Component. If a Component does not have a name, an empty UTF8 object will be returned.

Returns
The name (if any) for this Component.

◆ GetOwners()

ComponentArray HPS::Component::GetOwners ( ) const

Get the Component objects (if any) which "own" this Component.

Generally this will be a single element or no elements for a root component. It is possible for there to be multiple owners of a Component if it is instanced.

Returns
The Component objects (if any) which "own" this Component.

◆ GetReferences()

ComponentArray HPS::Component::GetReferences ( ) const

Get the Component objects (if any) which are referenced by this Component.

These are Component objects which are associated with this Component, but not "owned" by this Component, and would not be deleted if this Component is deleted (though the reference relationship will be removed).

Returns
The Component objects (if any) which are referenced by this Component.

◆ GetReferrers()

ComponentArray HPS::Component::GetReferrers ( ) const

Gets the Component objects which refer to this Component (if any).

Returns
The Component objects which refer to this Component.

◆ GetSubcomponents()

ComponentArray HPS::Component::GetSubcomponents ( ) const

Get the subcomponent objects (if any) owned or referenced by this Component.

These Component objects would be deleted if this Component is deleted.

Returns
The subcomponent objects (if any) owned or referenced by this Component.

◆ HasComponentType()

bool HPS::Component::HasComponentType ( ComponentType  in_mask) const

This function indicates whether this Component has the given ComponentType mask.

Parameters
in_maskThe ComponentType mask to check against this Component.
Returns
true if this Component has the given ComponentType mask, false otherwise.

◆ HasType()

bool HPS::Object::HasType ( HPS::Type  in_mask) const
inherited

This function indicates whether this Object has the given Type mask.

Parameters
in_maskThe Type mask to check against this Object.
Returns
true if this Object has the given Type mask, false otherwise.

◆ ObjectType()

◆ operator!=()

bool HPS::Component::operator!= ( Component const &  in_that) const

Check if the source Component points to a different impl than this Component.

Parameters
in_thatThe source Component to compare to this Component.
Returns
true if the objects reference different impls, false otherwise.

◆ operator=() [1/2]

Component& HPS::Component::operator= ( Component const &  in_that)

Share the underlying smart-pointer of the Component source.

Parameters
in_thatThe Component source of the assignment.
Returns
A reference to this Component.

◆ operator=() [2/2]

Component& HPS::Component::operator= ( Component &&  in_that)

The move assignment operator transfers the underlying object of the rvalue reference to this Component.

Parameters
in_thatAn rvalue reference to a Component to take the underlying object from.
Returns
A reference to this Component.

◆ operator==()

bool HPS::Component::operator== ( Component const &  in_that) const

Check if the source Component points to the same underlying impl as this Component.

Parameters
in_thatThe source Component to compare to this Component.
Returns
true if the objects reference the same impl, false otherwise.

◆ Reset()

◆ Type()

Member Data Documentation

◆ staticType

const HPS::Type HPS::Component::staticType = HPS::Type::Component
static

The documentation for this class was generated from the following file: