NDEVR
API Documentation

A core class within the model hierarchy containing vertex-based data (Usually 3D data) within a set container. More...

Inheritance diagram for Geometry:
[legend]
Collaboration diagram for Geometry:
[legend]

Classes

struct  OptimizedPrimitiveDef
 Pre-computed offsets and references for fast primitive index access without repeated lookups. More...
struct  SmoothingParameters
 Parameters controlling mesh smoothing operations. More...

Public Types

enum  ThicknessMode {
  e_none , e_pixel , e_flat_single , e_flat_per_vertex ,
  e_circle , e_circle_per_vertex
}
 Describes how line/edge thickness is applied to geometry rendering. More...
enum  TreeMode { e_no_tree , e_r_tree , e_kd_tree , e_quad_tree }
 Describes the type of spatial index tree used for acceleration. More...
enum  VertexMode : uint01 {
  e_no_vertex , e_index , e_cartesian_1F , e_cartesian_1D ,
  e_cartesian_2F , e_cartesian_3F , e_cartesian_2D , e_cartesian_3D ,
  e_normal_ray_3F , e_normal_ray_3D , e_cartesian_grid_1F , e_cartesian_grid_3F ,
  e_cartesian_grid_1D , e_cartesian_grid_3D , e_cartesian_grid_image , e_polar_grid_1F ,
  e_color_aci , e_color_hsb , e_color_hsl , e_color_lab ,
  e_color_rgb , e_color_xyz , e_bitflag , e_cartesian_2I ,
  e_cartesian_3I , e_cartesian_2S , e_cartesian_3S
}
 Describes the storage format and coordinate system of vertex data. More...
Public Types inherited from DesignInfo
enum  DesignObjectType : uint01

Public Member Functions

 Geometry (const DesignObject &obj)
 Constructs a Geometry from a generic DesignObject.
 Geometry (DesignObjectBase *base)
 Constructs a new Geometry and allocates it in the given design database.
 Geometry (uint04 index, DesignObjectBase *base)
 Constructs a Geometry referencing an existing entry in the design database.
void addFromParent (Model &parent)
 Registers a parent Model for this geometry.
template<class t_type>
uint04 addPrimitive (PrimitiveProperty index_property, const t_type &primitive)
 Adds a single primitive and sets its index data.
uint04 addPrimitives (PrimitiveProperty index_property, uint04 insersion_size)
 Adds multiple uninitialized primitives to the geometry.
void autoCalculateIndices (PrimitiveProperty property, const void *lock=nullptr, const Matrix< fltp08 > &transform=Matrix< fltp08 >(1.0), LogPtr log=LogPtr())
 Automatically calculates primitive indices (e.g.
void calculateIndexNeighborList (PrimitiveProperty primitive_property)
 Builds a neighbor list for primitive indices to accelerate adjacency queries.
void calculateNormals (NormalMode mode, Angle< fltp08 > max_difference, const void *lock=nullptr, LogPtr log=LogPtr())
 Calculates vertex normals using the specified mode.
void calculateTangentSpace (bool calc_tan, bool calc_bitan)
 Calculates tangent and/or bitangent vectors for texture mapping.
bool canBeClosedSolid (const void *lock=nullptr) const
 Checks whether this geometry can form a closed solid (watertight mesh).
bool canExplode () const
 Checks whether this geometry can be exploded into individual primitives.
void centerAlign ()
 Translates all vertices so that the geometry center aligns with the origin.
void clearSmoothing (const SmoothingParameters &properties)
 Removes smoothing and restores original vertex positions.
void clearVerticesAndPrimitives ()
 Removes all vertex and primitive data from this geometry.
void closePolyline (PrimitiveProperty property)
 Closes an open polyline by connecting the last vertex to the first.
void combine (Geometry &geo, const Matrix< fltp08 > &conversion=Matrix< fltp08 >(1.0))
 Combines another geometry into this one.
void convertPolarToCartesian (const StringView &roll_column, const StringView &pitch_column, const StringView &distance_column)
 Converts polar coordinate vertex properties to Cartesian coordinates.
void copyFrom (const Geometry &geo, bool copy_tree=true, bool copy_vertices=true)
 Copies all data from another geometry into this one.
void copyTraitsFrom (const Geometry &geo)
 Copies traits (properties) from another geometry without copying vertices or primitives.
void cotangentLaplacianSmoothing (const SmoothingParameters &properties)
 Applies cotangent-weighted Laplacian smoothing to the mesh.
void deleteGeometry ()
 Deletes this geometry and removes it from the design database.
void ensureFlagColumnExists ()
 Ensures a bitflag column exists in the vertex table, creating one if necessary.
GeometryBuffer explode () const
 Explodes this geometry into individual primitive geometries.
Vertex< 3, fltp08faceCenter (uint04 index) const
 Calculates the center point of a face at the given index.
Buffer< LineSegment< 3, fltp08 > > faceEdges (uint04 index) const
 Retrieves all edges of a face at the given index.
void fillHolesByNeighbor (PrimitiveProperty property, const void *lock=nullptr, LogPtr log=LogPtr())
 Fills holes in the mesh by interpolating from neighboring primitives.
void flipNormals ()
 Reverses the direction of all vertex normals.
Time getAscModifiedTime (bool include_self, bool include_layer=false) const
 Gets the most recent ascending modified time across hierarchy.
Bounds< 3, fltp08getBounds () const
 Retrieves the 3D bounding box of this geometry.
StringView getGeometryIcon () const
 Retrieves the icon identifier string for this geometry type.
GeometryType getGeometryType () const
 Retrieves the geometry type identifier.
Model getParent (uint04 index) const
 Retrieves a specific parent Model by index.
ModelBuffer getParents () const
 Retrieves all parent Models of this geometry.
Buffer< uint04getSelectedVertices () const
 Retrieves indices of all currently selected vertices.
bool hasHoles (PrimitiveProperty property) const
 Checks whether the mesh has holes for the given primitive property.
bool hasParent (const Model &model) const
 Checks whether a given Model is a parent of this geometry.
uint04 indexFanCount () const
 Returns the number of fan indices for this geometry.
uint04 indexFanOffset () const
 Returns the offset into the fan index column for this geometry.
uint04 indexOffset () const
 Returns the base index offset for this geometry within the shared index column.
uint04 indexOffset (PrimitiveProperty property) const
 Returns the index offset for a specific primitive property.
Buffer< uint04indices (PrimitiveProperty primitive_property, uint04 start, uint04 size) const
 Retrieves a range of raw primitive indices.
void invalidateBounds ()
 Invalidates cached bounding box, forcing recalculation on next access.
void laplacianSmoothing (const SmoothingParameters &properties)
 Applies Laplacian smoothing to the mesh.
Buffer< Vector< 2, uint04 > > lineIndices (PrimitiveProperty primitive_property) const
 Retrieves all line index pairs for a primitive property.
Buffer< Vector< 2, uint04 > > lineIndices (PrimitiveProperty primitive_property, uint04 start, uint04 size) const
 Retrieves a range of line index pairs.
void normalExpansion (const Vector< 3, fltp04 > &expansion_vector)
 Expands vertex positions along their normals by a given vector.
bool operator!= (const Geometry &geo) const
 Checks inequality with another Geometry.
bool operator== (const Geometry &geo) const
 Checks equality with another Geometry by comparing base and index.
OptimizedPrimitiveDef optimizedPrimitiveDef (PrimitiveProperty property)
 Creates a pre-computed primitive definition for fast repeated access.
void optimizeVertexLocations ()
 Reorders vertices to optimize spatial locality for rendering.
void outline ()
 Converts the geometry to its outline representation.
uint04 parentCount () const
 Returns the number of parent Models referencing this geometry.
uint01 parity (const Matrix< fltp04 > &parent_matrix, PrimitiveMode mode) const
 Calculates the parity (orientation) of the geometry relative to a transformation.
uint01 parity (const Matrix< fltp08 > &parent_matrix, PrimitiveMode mode) const
 Calculates the parity (orientation) of the geometry relative to a transformation.
template<class t_type>
t_type primitive (PrimitiveProperty property, typename std::enable_if< ObjectInfo< t_type >::Dimensions<=1, uint04 >::type index) const
 Retrieves a scalar (1D) primitive index value, adjusted for vertex offset.
template<class t_type>
t_type primitive (PrimitiveProperty property, typename std::enable_if< ObjectInfo< t_type >::Dimensions==2, uint04 >::type index) const
 Retrieves a line (2D) primitive index pair, adjusted for vertex offset.
template<class t_type>
t_type primitive (PrimitiveProperty property, typename std::enable_if< ObjectInfo< t_type >::Dimensions==3, uint04 >::type index) const
 Retrieves a triangle (3D) primitive index triple, adjusted for vertex offset.
uint04 primitiveCount (PrimitiveProperty property) const
 Returns the number of primitives for a specific property.
uint04 primitiveIndexCount () const
 Returns the total number of primitive indices across all properties.
uint04 primitiveIndexCount (PrimitiveProperty property) const
 Returns the total number of index entries for a specific property.
bool primitiveIndexFlag (PrimitiveProperty property, uint04 primitive_index, PrimitiveBitFlags flag) const
 Retrieves a flag value from a specific primitive index.
Buffer< uint04primitiveIndices (PrimitiveProperty primitive_property) const
 Retrieves all raw primitive indices for a given property.
uint01 provokingPrimitiveOffset () const
 Returns the provoking primitive offset for flat shading.
void removeDuplicateVertices (fltp08 epsilon, const void *lock, LogPtr log=LogPtr())
 Removes vertices that are within epsilon distance of each other.
void removeHoleFill (const void *lock=nullptr, LogPtr log=LogPtr())
 Removes any previously applied hole fill data.
void removeParent (Model &parent)
 Removes a parent Model from this geometry.
void setBounds (const Bounds< 3, fltp08 > &bounds)
 Manually sets the bounding box for this geometry.
void setGeometryTransform (const Matrix< fltp08 > &transform)
 Applies a transformation matrix to all geometry vertices.
void setGeometryType (GeometryType geometry_type)
 Sets the geometry type identifier.
void setNormalMode (NormalMode mode, Angle< fltp08 > max_sep_angle, const void *lock=nullptr, LogPtr log=LogPtr())
 Sets the normal calculation mode and recalculates normals.
template<class t_type>
void setPrimitive (PrimitiveProperty property, uint04 index, t_type index_value)
 Sets a single primitive index value.
template<class t_type>
void setPrimitive (PrimitiveProperty property, uint04 index, Triangle< 1, t_type > index_value)
 Sets a triangle primitive from a Triangle index type.
template<class t_type>
void setPrimitive (PrimitiveProperty property, uint04 index, Vector< 2, t_type > index_value)
 Sets a line primitive (2-vertex index pair).
template<class t_type>
void setPrimitive (PrimitiveProperty property, uint04 index, Vector< 3, t_type > index_value)
 Sets a triangle primitive (3-vertex index vector).
void setPrimitiveIndexFlag (PrimitiveProperty property, uint04 primitive_index, PrimitiveBitFlags flag, bool value)
 Sets a flag on a specific primitive index.
void setRealThickness (fltp08 real_thickness, const Matrix< fltp08 > &transform, const void *lock, LogPtr log=LogPtr())
 Sets a real-world thickness value and generates thickness geometry.
void setSolidVertexCountValue (uint04 count)
 Sets the solid vertex count value in the database.
void setSolidVertexOffsetValue (uint04 count)
 Sets the solid vertex offset value in the database.
void setSolidVertexReservedValue (uint04 count)
 Sets the solid vertex reserved count value in the database.
void setThicknessMode (ThicknessMode mode)
 Sets how thickness is interpreted during rendering.
void setupIndexFanColumn ()
 Ensures the index fan column is initialized and allocated.
void setVertexFlag (uint04 vertex, VertexFlags flag, bool value)
 Sets a flag on a single vertex.
void setVerticesFlag (const Buffer< bool > &selection_mask, VertexFlags flag, bool value)
 Sets a flag on vertices indicated by a boolean mask.
void setVerticesFlag (const Buffer< uint04 > &vertices, VertexFlags flag, bool value)
 Sets a flag on a list of vertices by index.
void setVerticesFlagAll (uint01 on_flags, uint01 off_flags)
 Sets on/off flag masks for all vertices.
void setVerticesFlagAll (VertexFlags flag, bool value)
 Sets a flag value for all vertices in this geometry.
void setVerticesFlags (const Buffer< bool > &selection_mask, BitFlag on_flags, BitFlag off_flags)
 Sets multiple flags on vertices using a boolean mask with on/off flag pairs.
void setVerticesFlags (const Buffer< bool > &selection_mask, BitFlag selected_on_flags, BitFlag selected_off_flags, BitFlag unselected_on_flags, BitFlag unselected_off_flags, uint04 bitmask_offset=0)
 Sets different flag combinations for selected and unselected vertices.
void setWindingMode (WindingMode mode)
 Sets the winding mode for face orientation.
uint04 solidVertexCount () const
 Returns the number of solid vertices.
uint04 solidVertexOffset () const
 Returns the offset of solid (thickness-expanded) vertices in the vertex table.
uint04 solidVertexReservedCount () const
 Returns the reserved capacity for solid vertices.
void sortVertices (Buffer< uint04 > new_order)
 Reorders vertices according to the given index mapping.
void split (Geometry &other_geo, const Buffer< bool > &vertex_mask)
 Splits this geometry into two based on a vertex mask.
void splitDuplicateVertices ()
 Splits shared vertices so each primitive has its own unique vertex data.
ThicknessMode thicknessMode () const
 Retrieves the current thickness mode.
Buffer< Vector< 3, uint04 > > triIndices (PrimitiveProperty primitive_property) const
 Retrieves all triangle index triples for a primitive property.
Buffer< Vector< 3, uint04 > > triIndices (PrimitiveProperty primitive_property, uint04 start, uint04 size) const
 Retrieves a range of triangle index triples.
void updateGeometryTransform (const Matrix< fltp08 > &transform, const void *lock_ptr=nullptr)
 Updates geometry after a transform change, recalculating derived data.
bool validate () const
 Validates the internal consistency of the geometry data.
uint04 vertexCount () const
 Returns the number of vertices in this geometry.
BitFlag vertexFlag (uint04 vertex_index) const
 Retrieves all flags for a vertex as a BitFlag.
bool vertexFlag (uint04 vertex_index, VertexFlags flag) const
 Retrieves whether a specific flag is set on a vertex.
uint04 vertexOffset () const
 Returns the offset of this geometry's vertices within the shared vertex table.
uint04 vertexReservedCount () const
 Returns the total reserved (allocated) vertex capacity.
bool vertexSelected (uint04 vertex) const
 Checks whether a vertex is selected.
Index / Primitive Access
ColumnT< uint04 > & primitiveColumn ()
 Returns a mutable reference to the primitive index column.
const ColumnT< uint04 > & primitiveColumn () const
 Returns a const reference to the primitive index column.
ColumnT< uint04 > & primitiveFanColumn ()
 Returns a mutable reference to the primitive fan column.
const ColumnT< uint04 > & primitiveFanColumn () const
 Returns a const reference to the primitive fan column.
ColumnT< uint01 > & primitiveFlagColumn ()
 Returns a mutable reference to the primitive flag column.
const ColumnT< uint01 > & primitiveFlagColumn () const
 Returns a const reference to the primitive flag column.
TableColumnfaceToEdgeColumn ()
 Returns a mutable reference to the face-to-edge mapping column.
const TableColumnfaceToEdgeColumn () const
 Returns a const reference to the face-to-edge mapping column.
TableColumnedgeToFaceColumn ()
 Returns a mutable reference to the edge-to-face mapping column.
const TableColumnedgeToFaceColumn () const
 Returns a const reference to the edge-to-face mapping column.
PrimitiveMode mode (PrimitiveProperty property) const
 Retrieves the primitive mode for a given primitive property.
bool hasProperty (PrimitiveProperty property) const
 Checks whether a given primitive property has index data.
bool hasIndexColumn () const
 Checks whether the primitive index column has any entries.
bool hasIndexFanColumn () const
 Checks whether the primitive fan index column has any entries.
void reservePrimitiveIndexSpace (uint04 index_size)
 Pre-allocates space in the primitive index column.
void setPrimitiveRange (PrimitiveProperty mode, uint04 start, uint04 primitive_count)
 Sets the start offset and count for a primitive property range.
void setPrimitiveMode (PrimitiveProperty property, PrimitiveMode mode)
 Sets the primitive mode for a given property.
void updatePrimitiveColumn (PrimitiveProperty property, bool remove_tree=true)
 Notifies the system that a primitive column has been modified.
void updatePrimitiveColumns (bool remove_tree=true)
 Notifies the system that all primitive columns have been modified.
void updateModifiedTime (Time time=Time::SystemTime())
 Updates the modified timestamp for this geometry.
void updateGeometryTime (Time time=Time::SystemTime())
 Updates the geometry-specific timestamp.
Plane< 3, fltp08calculatePlaneAtVertex (uint04 vertex_index) const
 Calculates the best-fit plane at a given vertex position.
General Vertex Operations
uint04 addVertex ()
 Adds a single vertex to the geometry.
uint04 addVertexWithExtraReservedSpace ()
 Adds a single vertex with extra reserved space for future growth.
uint04 addVertices (uint04 size)
 Adds multiple vertices to the geometry.
void addVertices (uint04 location, uint04 size)
 Inserts vertices at a specific location.
void setVertexCount (uint04 size, bool deallocate_if_possible=true)
 Sets the total vertex count, resizing vertex data columns.
void removeVertex (uint04 location)
 Removes a single vertex at the given location.
void removeVertices (uint04 location, uint04 size)
 Removes a contiguous range of vertices.
void removeVertices (Buffer< uint04 > vertices)
 Removes vertices at the specified indices.
void removeVertices (const Buffer< bool > &selection_mask)
 Removes vertices indicated by a boolean mask.
void removeVertices (uint04 mask_offset, const Buffer< bool > &selection_mask)
 Removes vertices indicated by a boolean mask with an offset.
void removePrimitive (PrimitiveProperty property, uint04 location)
 Removes a single primitive at the given location.
void removePrimitive (PrimitiveProperty property, uint04 location, uint04 size)
 Removes a contiguous range of primitives.
void removePrimitive (PrimitiveProperty property, Buffer< uint04 > vertices)
 Removes primitives at the specified indices.
void removePrimitive (PrimitiveProperty property, const Buffer< bool > &selection_mask)
 Removes primitives indicated by a boolean mask.
void createDrapedMaterialCoordinates (const Matrix< fltp08 > &mat=Matrix< fltp08 >())
 Creates material (texture) coordinates by draping them onto the geometry surface.
Matrix< fltp08getCompleteTransform (const Model &parent) const
 Computes the complete transformation matrix from geometry space to world space via a parent Model.
Custom Vertex Property Access
const StringvertexPropertyName (uint04 property_index) const
 Returns the name of a vertex property by its column index.
uint04 vertexPropertyCount () const
 Returns the number of vertex property columns.
uint04 vertexPropertyIndex (const StringView &property_name) const
 Finds the column index of a named vertex property.
bool hasVertexProperty (const StringView &property_name) const
 Checks whether a named vertex property exists.
bool hasVertexProperty (const VertexProperty &property) const
 Checks whether a standard vertex property exists.
TypeInfo vertexPropertyType (uint04 property_index) const
 Returns the type information for a vertex property column.
template<class t_type>
uint04 createVertexProperty (const StringView &property_name)
 Creates a new custom vertex property column with a compile-time type.
uint04 createVertexProperty (const StringView &property_name, const TypeInfo &type)
 Creates a new custom vertex property column with a runtime type.
template<class t_type>
t_type vertexProperty (uint04 property_index, uint04 vertex_index) const
 Retrieves a custom vertex property value by column index.
template<class t_type>
t_type vertexProperty (const StringView &property, uint04 vertex_index) const
 Retrieves a custom vertex property value by name.
template<class t_type>
t_type vertexProperty (uint04 property_index, uint04 vertex_index, uint04 sub_index) const
 Retrieves a sub-component of a custom vertex property by column index.
template<class t_type>
t_type vertexProperty (const StringView &property, uint04 vertex_index, uint04 sub_index) const
 Retrieves a sub-component of a custom vertex property by name.
template<class t_type>
void setVertexProperty (uint04 property, uint04 index, const t_type &vector)
 Sets a custom vertex property value by column index.
template<class t_type>
void setVertexProperty (const StringView &property, uint04 index, const t_type &property_value)
 Sets a custom vertex property value by name.
template<class t_type>
void setVertexProperty (uint04 property, uint04 index, uint04 sub_index, const t_type &vector)
 Sets a sub-component of a custom vertex property by column index.
template<class t_type>
void setVertexProperty (const StringView &property, uint04 index, uint04 sub_index, const t_type &vector)
 Sets a sub-component of a custom vertex property by name.
template<class t_type>
void setVertexProperties (const StringView &property, const Buffer< t_type > &vertices, uint04 offset=0)
 Sets a named vertex property for multiple vertices from a buffer.
Column Access
TableColumnpropertyColumn (uint04 property)
 Returns a mutable reference to a custom vertex property column by index.
const TableColumnpropertyColumn (uint04 property) const
 Returns a const reference to a custom vertex property column by index.
bool hasProperty (VertexProperty property) const
 Checks whether a standard vertex property has data.
VertexMode mode (VertexProperty property) const
 Retrieves the vertex storage mode for a standard vertex property.
void setupVertexTable (uint04 vertex_size, VertexMode position, VertexMode normal=VertexMode::e_no_vertex, VertexMode color=VertexMode::e_no_vertex, VertexMode texture=VertexMode::e_no_vertex, VertexMode tangent=VertexMode::e_no_vertex, VertexMode bitangent=VertexMode::e_no_vertex, VertexMode bones=VertexMode::e_no_vertex)
 Configures the vertex table with the specified modes for standard properties.
void updateVertexColumn (VertexProperty property)
 Notifies the system that a standard vertex column has been modified.
void updateVertexColumn (VertexProperty property, uint04 index, uint04 size, bool invalidate_bounds=true, bool erase_kd_tree=true)
 Notifies the system that a range within a standard vertex column was modified.
void updateVertexColumn (const StringView &property)
 Notifies the system that a named custom vertex column was modified.
void updateVertexColumn (const uint04 &property)
 Notifies the system that a custom vertex column was modified by index.
void updateVertexColumn (const StringView &property, uint04 index, uint04 size)
 Notifies the system that a range within a named custom vertex column was modified.
void updateVertexColumn (const uint04 &property, uint04 index, uint04 size)
 Notifies the system that a range within a custom vertex column was modified by index.
void updateVertexColumns (bool invalidate_bounds=true, bool erase_kd_tree=true)
 Notifies the system that all vertex columns have been modified.
void updateSolidVertexColumns (bool invalidate_bounds=true, bool erase_kd_tree=true)
 Notifies the system that all solid vertex columns have been modified.
void updateVertexColumns (uint04 index, uint04 size, bool invalidate_bounds=true, bool erase_kd_tree=true)
 Notifies the system that a range across all vertex columns was modified.
fltp08 calculateVolume (const Matrix< fltp08 > &parent_transform) const
 Calculates the volume of the geometry in the given coordinate space.
fltp08 calculateSurfaceArea (const Matrix< fltp08 > &parent_transform) const
 Calculates the surface area of the geometry in the given coordinate space.
Vector< 2, fltp08calculateVolumeAndSurfaceArea (const Matrix< fltp08 > &transform, const void *lock) const
 Calculates both volume and surface area simultaneously.
fltp08 calculateLength (const Matrix< fltp08 > &transform) const
 Calculates the total length of linework geometry.
Vector< 3, fltp08calculateAverageDirection (const Matrix< fltp08 > &mat) const
 Calculates the average direction vector of linework geometry.
Vector< 2, fltp08calculateHVLength (const Matrix< fltp08 > &mat) const
 Calculates the horizontal and vertical length components of linework.
bool hasTree (PrimitiveProperty primitive_property, VertexProperty vertex_property=VertexProperty::Position) const
 Checks whether a spatial tree exists for the given primitive and vertex property.
DynamicPointer< RTree< 3, fltp04 > > tree (PrimitiveProperty primitive_property, VertexProperty vertex_property=VertexProperty::Position) const
 Retrieves the spatial R-tree for the given properties.
void setTree (DynamicPointer< RTree< 3, fltp04 > > tree, PrimitiveProperty primitive_property, VertexProperty vertex_property=VertexProperty::Position) const
 Sets (replaces) the spatial R-tree for the given properties.
void removeTrees (VertexProperty vertex_property=VertexProperty::Position)
 Removes all spatial trees for the given vertex property.
void removeTree (PrimitiveProperty property, VertexProperty vertex_property=VertexProperty::Position)
 Removes the spatial tree for a specific primitive property.
const Buffer< uint04 > & getTreeIndices (PrimitiveProperty primitive_property) const
 Retrieves the index mapping used by the spatial tree.
template<class t_type>
Buffer< t_type > getTreeSortedVertices (PrimitiveProperty primitive_property, VertexProperty vertex_property) const
 Retrieves vertices sorted according to the spatial tree index order.
Ray< 3, fltp08surfaceNormal () const
 Calculates and returns the surface normal ray for this geometry.
template<class t_type>
void setVertex (VertexProperty property, uint04 index, const t_type &vector)
 Sets a standard vertex property value at the given index.
template<class t_type>
void setVertex (VertexProperty property, uint04 index, uint04 sub_index, const t_type &vector)
 Sets a sub-component of a standard vertex property at the given index.
template<class t_type>
void setVertices (VertexProperty property, const Buffer< t_type > &vertices, uint04 offset=0)
 Sets a standard vertex property for multiple vertices from a buffer.
template<class t_type, class t_matrix_type>
void setVertices (VertexProperty property, const Buffer< t_type > &vertices, const Matrix< t_matrix_type > &matrix, uint04 offset=0)
 Sets vertices with a transformation matrix applied to each value.
template<class t_type>
void setVertices (VertexProperty property, const t_type *vertices, uint04 size, uint04 offset=0)
 Sets vertices from a raw pointer array.
template<class t_type>
decltype(auto) vertex (VertexProperty property, uint04 index) const
 Retrieves a single vertex value for a standard property.
template<uint01 t_dims, class t_type>
LineSegment< t_dims, t_type > lineSegment (PrimitiveProperty primitive_property, VertexProperty vertex_property, uint04 line_index) const
 Retrieves a line segment from the geometry using primitive and vertex properties.
template<uint01 t_dims, class t_type>
Triangle< t_dims, t_type > triangle (PrimitiveProperty primitive_property, VertexProperty vertex_property, uint04 tri_index) const
 Retrieves a triangle from the geometry using primitive and vertex properties.
bool hasColumn (VertexProperty property) const
 Checks whether the underlying column exists for a standard vertex property.
template<class t_type>
Buffer< t_type > propertyVertices (uint04 property) const
 Retrieves all values of a custom vertex property as a buffer.
template<class t_type>
Buffer< t_type > propertyVertices (uint04 property, uint04 start, uint04 size) const
 Retrieves a range of custom vertex property values.
template<class t_type>
Buffer< t_type > vertices (VertexProperty property) const
 Retrieves all vertex values for a standard property.
template<class t_type>
Buffer< t_type > vertices (VertexProperty property, uint04 start, uint04 size) const
 Retrieves a range of vertex values for a standard property.
template<class t_type>
Buffer< t_type > vertices (const StringView &property) const
 Retrieves all vertex values for a named custom property.
template<class t_type>
Buffer< t_type > vertices (const StringView &property, uint04 start, uint04 size) const
 Retrieves a range of vertex values for a named custom property.
template<uint01 t_dims, class t_type>
Buffer< LineSegment< t_dims, t_type > > lineSegments (PrimitiveProperty primitive_property, VertexProperty vertex_property) const
 Retrieves all line segments from the geometry.
template<uint01 t_dims, class t_type>
Buffer< Triangle< t_dims, t_type > > triangles (PrimitiveProperty primitive_property, VertexProperty vertex_property) const
 Retrieves all triangles from the geometry.
template<uint01 t_dims, class t_type>
Buffer< Triangle< t_dims, t_type > > triangles (PrimitiveProperty primitive_property, VertexProperty vertex_property, uint04 start, uint04 size) const
 Retrieves a range of triangles from the geometry.
Buffer< Buffer< uint04 > > polyIndices (PrimitiveProperty primitive_property) const
 Retrieves all polygon index buffers for a primitive property.
Buffer< Buffer< uint04 > > polyIndices (PrimitiveProperty primitive_property, uint04 start, uint04 size) const
 Retrieves a range of polygon index buffers.
template<uint01 t_dims, class t_type>
Buffer< Polygon< t_type, Vertex< t_dims, t_type > > > polygons (PrimitiveProperty primitive_property, VertexProperty vertex_property) const
 Retrieves all polygons from the geometry.
template<uint01 t_dims, class t_type>
Buffer< Polygon< t_type, Vertex< t_dims, t_type > > > polygons (PrimitiveProperty primitive_property, VertexProperty vertex_property, uint04 start, uint04 size) const
 Retrieves a range of polygons from the geometry.
template<uint01 t_dims, class t_type>
Buffer< Polyline< t_dims, t_type > > polylines (PrimitiveProperty primitive_property, VertexProperty vertex_property) const
 Retrieves all polylines from the geometry.
template<uint01 t_dims, class t_type>
Buffer< Polyline< t_dims, t_type > > polylines (PrimitiveProperty primitive_property, VertexProperty vertex_property, uint04 start, uint04 size) const
 Retrieves a range of polylines from the geometry.
void setVertexMode (VertexProperty property, VertexMode mode)
 Sets the vertex storage mode for a standard property.
TableColumncolumn (VertexProperty property)
 Returns a mutable reference to the column for a standard vertex property.
const TableColumncolumn (VertexProperty property) const
 Returns a const reference to the column for a standard vertex property.
const TableVectorType< 1, uint01 > * vertexFlagColumn () const
 Returns a const pointer to the vertex flag column, or nullptr if none exists.
TableVectorType< 1, uint01 > * vertexFlagColumn ()
 Returns a mutable pointer to the vertex flag column, or nullptr if none exists.
TableColumnpropertyColumn (const StringView &property)
 Returns a mutable reference to a named custom property column.
const TableColumnpropertyColumn (const StringView &property) const
 Returns a const reference to a named custom property column.
Public Member Functions inherited from DesignObject
 DesignObject ()=default
 Creates an "invalid" design object.
 DesignObject (const DesignInfo &info)
 Constructs a DesignObject from an existing DesignInfo, sharing the same base and indices.
 DesignObject (DesignObjectBase *base)
 Creates an new design object within the given DesignObjectBase.
 DesignObject (uint04 index, DesignObjectBase *base)
 Sets a DesignObject up to be a pointer to an existing object in the database.
JSONNode activeFilters () const
 Retrieves the active filters applied to this design object as a JSON structure.
void appendData (const StringView &data, bool compressed)
 Appends data to this design object's data storage.
DesignObjectBasebase () const
 Returns a reference to the underlying DesignObjectBase database.
void clearAllMetaData ()
 Removes all metadata entries from this design object.
void clearMetaData (const StringView &index)
 Removes a specific metadata entry by key.
void copyFrom (const DesignObject &object)
 Copies all properties from the given design object into this one.
uint04 designIndex () const
 Returns the design-specific index used to access type-specific properties (e.g., model, geometry, material properties).
bool doesPropertyBeginWith (NDPO property, const StringView &value, bool ignore_case) const
 Checks whether a string property's value begins with the given substring.
bool doesPropertyContain (NDPO property, const StringView &value, bool ignore_case) const
 Checks whether a string property's value contains the given substring.
File file () const
 Returns the file path associated with this design object as a File object.
template<auto t_property>
constexpr decltype(auto) get () const
 Retrieves a property value using a compile-time property constant, with the type deduced from PropertySpec.
template<auto t_property, class t_type>
constexpr decltype(auto) get () const
 Retrieves a property value using a compile-time property constant, cast to the requested type.
template<class t_type, class t_property_type>
constexpr decltype(auto) get (t_property_type property) const
 Retrieves a property value from the database, cast to the requested type.
DesignObject getDesignParent () const
 Retrieves the parent design object of this object in the model hierarchy.
StringView getIcon () const
 Retrieves the icon identifier string associated with this design object.
template<class t_type>
decltype(auto) getInheritedProperty (NDPO property) const
 Retrieves a property value, walking up the parent hierarchy if the property is not set on this object.
Scene getScene () const
 Retrieves the Scene that this design object belongs to.
bool hasMetaData (const StringView &index) const
 Checks whether a metadata entry exists for the given key.
template<class t_type, class t_design_type>
bool hasProperty (t_design_type property) const
 Checks whether a property has a valid (non-default) value.
uint04 index () const
 Returns the primary row index of this object within the DesignObjectBase property table.
template<auto t_property>
bool is (const char *value) const
 Checks whether a compile-time property matches the given C-string value.
template<auto t_property>
bool is (const String &value) const
 Checks whether a compile-time property matches the given String value.
template<auto t_property>
bool is (const StringView &value) const
 Checks whether a compile-time property matches the given StringView value.
template<auto t_property, class t_type>
std::enable_if<!ObjectInfo< t_type >::String, bool >::type is (const t_type &value) const
 Checks whether a compile-time property matches a non-string value using equality comparison.
template<class t_property_type>
bool is (t_property_type property, const char *value) const
 Checks whether a string property matches the given C-string value.
template<class t_property_type>
bool is (t_property_type property, const String &value) const
 Checks whether a string property matches the given String value.
template<class t_property_type>
bool is (t_property_type property, const StringView &value) const
 Checks whether a string property matches the given StringView value.
template<class t_property_type, class t_type>
std::enable_if<!ObjectInfo< t_type >::String, bool >::type is (t_property_type property, const t_type &value) const
 Checks whether a non-string property matches the given value using equality comparison.
bool isDesignType (DesignObjectType mode) const
 Checks whether this object has the specified design type flag set.
bool isDesignType (uint04 mode) const
 Checks whether this object has the specified design type flag set, using a raw integer value.
bool isValid () const
 Checks whether this design object has a valid index into the database.
const JSONNodemetaData () const
 Retrieves the entire metadata tree for this design object.
const JSONNodemetaData (const StringView &index) const
 Retrieves a specific metadata entry by key.
void offsetDesign (const Vector< 3, fltp08 > &offset)
 Translates this design object by the given offset vector.
 operator bool () const
 Bool conversion operator.
bool operator!= (const DesignObject &object) const
 Checks inequality with another DesignObject.
bool operator< (const DesignObject &object) const
 Less-than comparison for ordering DesignObjects (e.g., for sorted containers).
bool operator== (const DesignObject &object) const
 Checks equality with another DesignObject by comparing base pointers and indices.
bool operator> (const DesignObject &object) const
 Greater-than comparison for ordering DesignObjects (e.g., for sorted containers).
Table & propertyTable ()
 Returns a mutable reference to the property table that stores this object's properties.
const Table & propertyTable () const
 Returns a const reference to the property table that stores this object's properties.
void removeMetaData (const StringView &index, const void *lock_ptr=nullptr)
 Removes a metadata entry by key, with optional write lock support.
void scale (Vector< 3, fltp08 > scale, Vertex< 3, fltp08 > center_of_scale, const Matrix< fltp08 > &transform)
 Scales this design object's geometry by the given scale factors around a center point, applying an additional transform.
void scale (Vector< 3, fltp08 > scale, Vertex< 3, fltp08 > center_of_scale=Constant< Vertex< 3, fltp08 > >::Invalid)
 Scales this design object's geometry and transform by the given scale factors around a center point.
template<auto t_property, class t_type>
void set (const t_type &value)
 Sets a property value in the database using a compile-time property constant.
template<class t_type, class t_property_type>
void set (t_property_type property, const t_type &value)
 Sets a property value in the database.
void setActiveFilters (const JSONNode &node)
 Sets the active filters on this design object from a JSON structure.
void setDesignType (DesignObjectType mode, bool is_type)
 Sets or clears a design type flag on this object.
void setMetaData (const JSONNode &node)
 Replaces the entire metadata tree with the given JSON node.
void setMetaData (const StringView &index, const bool &data)
 Sets a metadata entry at the given key to a boolean value.
void setMetaData (const StringView &index, const fltp08 &data)
 Sets a metadata entry at the given key to a 64-bit floating point value.
void setMetaData (const StringView &index, const JSONNode &node)
 Sets a metadata entry at the given key to the specified JSON node value.
void setMetaData (const StringView &index, const String &data)
 Sets a metadata entry at the given key to a String value.
void setMetaData (const StringView &index, const StringView &data)
 Sets a metadata entry at the given key to a StringView value.
void setMetaData (const StringView &index, const uint01 &data)
 Sets a metadata entry at the given key to a uint01 value.
void setMetaData (const StringView &index, const uint04 &data)
 Sets a metadata entry at the given key to a uint04 value.
template<auto t_property, class t_type>
bool update (const t_type &value, const void *lock=nullptr)
 Updates a property using a compile-time property constant, only if the new value differs.
template<class t_type, class t_property_type>
bool update (t_property_type property, const t_type &value, const void *lock=nullptr)
 Updates a property only if the new value differs from the current value.
void updateCreatedTime ()
 Sets the creation time stamp for this design object to the current system time.
void updateDesignModifiedTime (Time time=Time::SystemTime())
 Updates the modified time stamp for this design object.
void updateDesignTransform (const Matrix< fltp08 > &transform, const void *lock=nullptr)
 Updates the transform of this design object if it differs from the current value.
bool updateDesignVisible (bool is_visible, const void *lock=nullptr)
 Updates the spatial visibility of this design object if it differs from the current value.
void updateMetaData (const StringView &index, const bool &data, const void *lock_ptr=nullptr)
 Updates a metadata entry only if the new value differs from the current value.
void updateMetaData (const StringView &index, const fltp08 &data, const void *lock_ptr=nullptr)
 Updates a metadata entry only if the new value differs from the current value.
void updateMetaData (const StringView &index, const String &data, const void *lock_ptr=nullptr)
 Updates a metadata entry only if the new value differs from the current value.
void updateMetaData (const StringView &index, const StringView &data, const void *lock_ptr=nullptr)
 Updates a metadata entry only if the new value differs from the current value.
bool validateDesignObject () const
 Validates the internal state of this design object, ensuring indices and base pointer are consistent.

Static Public Member Functions

static constexpr uint04 indicesPerPrimitive (PrimitiveMode property)
 Returns the number of vertex indices per primitive for a given mode.
template<class t_vec_type>
static t_vec_type OptimizedGetPrimitiveVec (const OptimizedPrimitiveDef &ref, uint04 index)
 Retrieves a vector primitive using pre-computed offsets for maximum performance.
template<class t_vec_type>
static void OptimizedSetPrimitive (const OptimizedPrimitiveDef &ref, uint04 index, t_vec_type index_value)
 Sets a single primitive index using pre-computed offsets for maximum performance.
template<class t_vec_type>
static void OptimizedSetPrimitiveVec (const OptimizedPrimitiveDef &ref, uint04 index, t_vec_type index_value)
 Sets a vector primitive (triangle/line) using pre-computed offsets for maximum performance.
static void SetTriangulationMethod (std::function< void(Geometry &geo, const Matrix< fltp08 > &matrix, const void *lock, LogPtr log)> function)
 Sets the global triangulation method used by autoCalculateIndices.
Static Public Member Functions inherited from DesignObject
static constexpr StringView FilePathDesignNameVariable ()
 Returns the placeholder variable string used in file paths to represent the design name.

Protected Member Functions

void setModeValue (VertexProperty property, VertexMode vert_mode)
 Sets the vertex mode for a standard property in the database.
template<class t_index_type, class t_vec_type>
void setPrimitiveVec (PrimitiveProperty property, uint04 index, t_vec_type &index_value)
 Internal method to set a vector primitive with offset adjustment and fan handling.
Protected Index Setters
void setIndexCountValue (uint04 count)
 Sets the total index count in the database.
void setIndexFanCountValue (uint04 count)
 Sets the fan index count in the database.
void setCountValue (PrimitiveProperty property, uint04 count)
 Sets the primitive count for a specific property in the database.
void setIndexFanOffsetValue (uint04 offset)
 Sets the fan index offset in the database.
void setIndexOffsetValue (uint04 offset)
 Sets the base index offset in the database.
void setOffsetValue (PrimitiveProperty property, uint04 offset)
 Sets the primitive property offset in the database.
void setModeValue (PrimitiveProperty property, PrimitiveMode mode)
 Sets the primitive mode for a property in the database.
Protected Vertex Setters
void setVertexCountValue (uint04 count)
 Sets the vertex count in the database.
void setVertexReservedValue (uint04 count)
 Sets the vertex reserved count in the database.
void setVertexOffsetValue (uint04 count)
 Sets the vertex offset in the database.
Protected Member Functions inherited from DesignObject
template<class t_type>
void _setProperty (NDPO property, const t_type &value)
 Low-level property setter that directly writes to the design properties table without triggering side effects such as transform or visibility updates.
void initDesignObject ()
 Initializes default property values for this design object after construction.
Protected Member Functions inherited from DesignInfo
 DesignInfo (DesignObjectBase *base)
 Creates an new design object within the given DesignObjectBase.
 DesignInfo (uint04 index, DesignObjectBase *base)
 Sets a DesignObject up to be a pointer to an existing object in the database.
void _setDesignVisible (bool is_visible)
 Sets the spatial visibility of this design object and propagates the change through the design hierarchy.
void _setTransform (const Matrix< fltp08 > &transform)
 Sets the 4x4 transform matrix for this design object and propagates the change through the design hierarchy.

Static Protected Attributes

static std::function< void(Geometry &geo, const Matrix< fltp08 > &matrix, const void *lock, LogPtr log)> s_geometry_triangulation
 The global triangulation callback.

Additional Inherited Members

Protected Attributes inherited from DesignInfo
DesignObjectBasem_base = nullptr
 Pointer to the owning DesignObjectBase property database.
uint04 m_design_index = Constant<uint04>::Invalid
 Index of the parent design that owns this object.
uint04 m_index = Constant<uint04>::Invalid
 Row index of this object within the property database.

Detailed Description

A core class within the model hierarchy containing vertex-based data (Usually 3D data) within a set container.


Geometries can be shared by multiple Model parents. The primary information for Geometry comes from its vertices, which can be resized. In addition, primitive columns are used to group these vertices in various different ways. Geometries can take on different shapes depending on their Type. See PrimitiveMode. In addition to vertices some data is stored in the form of GeometryProperty values which can be accessed via get(GeometryProperty). For iterating over each vertex in the Geometry, use VertexIterator For iterating over each line in linework Geometry, use LineIterator For iterating over Geoemetry colors, use VertexColorIterator.

Warning
Access to these members and data should be made in a thread-safe manner using DesignObjectLookup read and write locks.
See also
Model, GeometryVertices, ShapeConstructors, GeometryFilter, GeometryBoolean

Definition at line 142 of file Geometry.h.

Member Enumeration Documentation

◆ ThicknessMode

Describes how line/edge thickness is applied to geometry rendering.


Enumerator
e_none 

No thickness applied.

e_pixel 

Thickness in screen pixels.

e_flat_single 

Flat thickness, single value for all vertices.

e_flat_per_vertex 

Flat thickness, per-vertex value.

e_circle 

Circular cross-section thickness, single value.

e_circle_per_vertex 

Circular cross-section thickness, per-vertex value.

Definition at line 194 of file Geometry.h.

◆ TreeMode

Describes the type of spatial index tree used for acceleration.


Enumerator
e_no_tree 

No spatial tree.

e_r_tree 

R-tree spatial index.

e_kd_tree 

KD-tree spatial index.

e_quad_tree 

Quad-tree spatial index.

Definition at line 183 of file Geometry.h.

◆ VertexMode

Describes the storage format and coordinate system of vertex data.


Enumerator
e_no_vertex 

No vertex data present.

e_index 

Vertices stored as indices into another buffer.

e_cartesian_1F 

1D Cartesian coordinates, single-precision float.

e_cartesian_1D 

1D Cartesian coordinates, double-precision float.

e_cartesian_2F 

2D Cartesian coordinates, single-precision float.

e_cartesian_3F 

3D Cartesian coordinates, single-precision float.

e_cartesian_2D 

2D Cartesian coordinates, double-precision float.

e_cartesian_3D 

3D Cartesian coordinates, double-precision float.

e_normal_ray_3F 

3D normal ray, single-precision float.

e_normal_ray_3D 

3D normal ray, double-precision float.

e_cartesian_grid_1F 

1D Cartesian grid, single-precision float.

e_cartesian_grid_3F 

3D Cartesian grid, single-precision float.

e_cartesian_grid_1D 

1D Cartesian grid, double-precision float.

e_cartesian_grid_3D 

3D Cartesian grid, double-precision float.

e_cartesian_grid_image 

Cartesian grid for image data.

e_polar_grid_1F 

1D polar grid, single-precision float.

e_color_aci 

AutoCAD Color Index color data.

e_color_hsb 

HSB color data.

e_color_hsl 

HSL color data.

e_color_lab 

CIELAB color data.

e_color_rgb 

RGB color data.

e_color_xyz 

CIE XYZ color data.

e_bitflag 

Bitflag vertex data.

e_cartesian_2I 

2D Cartesian coordinates, integer.

e_cartesian_3I 

3D Cartesian coordinates, integer.

e_cartesian_2S 

2D Cartesian coordinates, short integer.

e_cartesian_3S 

3D Cartesian coordinates, short integer.

Definition at line 149 of file Geometry.h.

Constructor & Destructor Documentation

◆ Geometry() [1/3]

Geometry::Geometry ( DesignObjectBase * base)

Constructs a new Geometry and allocates it in the given design database.

Parameters
[in]baseThe design object base database to create the geometry in.

References DesignObject::base().

◆ Geometry() [2/3]

Geometry::Geometry ( uint04 index,
DesignObjectBase * base )

Constructs a Geometry referencing an existing entry in the design database.

Parameters
[in]indexThe design index of the existing geometry.
[in]baseThe design object base database.

References DesignObject::base(), and DesignObject::index().

◆ Geometry() [3/3]

Geometry::Geometry ( const DesignObject & obj)
explicit

Constructs a Geometry from a generic DesignObject.

Parameters
[in]objThe design object to interpret as a Geometry.

References DesignObject::DesignObject().

Member Function Documentation

◆ addFromParent()

void Geometry::addFromParent ( Model & parent)

Registers a parent Model for this geometry.

Should only be called by Model.

Parameters
[in]parentThe parent model to add.

◆ addPrimitive()

template<class t_type>
uint04 Geometry::addPrimitive ( PrimitiveProperty index_property,
const t_type & primitive )
inline

Adds a single primitive and sets its index data.

Parameters
[in]index_propertyThe primitive property to add to.
[in]primitiveThe vertex index data for the primitive.
Returns
The index of the newly added primitive.

Definition at line 1119 of file Geometry.h.

References indexOffset(), primitive(), primitiveCount(), setPrimitive(), and setPrimitiveRange().

◆ addPrimitives()

uint04 Geometry::addPrimitives ( PrimitiveProperty index_property,
uint04 insersion_size )
inline

Adds multiple uninitialized primitives to the geometry.

Parameters
[in]index_propertyThe primitive property to add to.
[in]insersion_sizeThe number of primitives to add.
Returns
The starting index of the newly added primitives.

Definition at line 1131 of file Geometry.h.

References indexOffset(), primitiveCount(), and setPrimitiveRange().

◆ addVertex()

uint04 Geometry::addVertex ( )
inline

Adds a single vertex to the geometry.

Returns
The index of the newly added vertex.

Definition at line 1181 of file Geometry.h.

References setVertexCount(), and vertexCount().

◆ addVertexWithExtraReservedSpace()

uint04 Geometry::addVertexWithExtraReservedSpace ( )

Adds a single vertex with extra reserved space for future growth.

Returns
The index of the newly added vertex.

◆ addVertices() [1/2]

void Geometry::addVertices ( uint04 location,
uint04 size )

Inserts vertices at a specific location.

Parameters
[in]locationThe insertion point index.
[in]sizeThe number of vertices to insert.

◆ addVertices() [2/2]

uint04 Geometry::addVertices ( uint04 size)
inline

Adds multiple vertices to the geometry.

Parameters
[in]sizeThe number of vertices to add.
Returns
The starting index of the newly added vertices.

Definition at line 1195 of file Geometry.h.

References setVertexCount(), and vertexCount().

Referenced by Extruder::ExtrudePolylineAlongGeo().

◆ autoCalculateIndices()

void Geometry::autoCalculateIndices ( PrimitiveProperty property,
const void * lock = nullptr,
const Matrix< fltp08 > & transform = Matrixfltp08 >(1.0),
LogPtr log = LogPtr() )

Automatically calculates primitive indices (e.g.

triangulation) for the geometry.

Parameters
[in]propertyThe primitive property to calculate indices for.
[in]lockOptional thread lock pointer.
[in]transformThe transformation matrix for coordinate conversion.
[in]logOptional log for progress reporting.

◆ calculateAverageDirection()

Vector< 3, fltp08 > Geometry::calculateAverageDirection ( const Matrix< fltp08 > & mat) const

Calculates the average direction vector of linework geometry.

Parameters
[in]matThe transformation matrix to apply.
Returns
The average 3D direction vector.

◆ calculateHVLength()

Vector< 2, fltp08 > Geometry::calculateHVLength ( const Matrix< fltp08 > & mat) const

Calculates the horizontal and vertical length components of linework.

Parameters
[in]matThe transformation matrix to apply.
Returns
A 2-component vector where X is horizontal length and Y is vertical length.

◆ calculateIndexNeighborList()

void Geometry::calculateIndexNeighborList ( PrimitiveProperty primitive_property)

Builds a neighbor list for primitive indices to accelerate adjacency queries.

Parameters
[in]primitive_propertyThe primitive property to build neighbors for.

◆ calculateLength()

fltp08 Geometry::calculateLength ( const Matrix< fltp08 > & transform) const

Calculates the total length of linework geometry.

Parameters
[in]transformThe transformation matrix to apply.
Returns
The total length.

◆ calculateNormals()

void Geometry::calculateNormals ( NormalMode mode,
Angle< fltp08 > max_difference,
const void * lock = nullptr,
LogPtr log = LogPtr() )

Calculates vertex normals using the specified mode.

Parameters
[in]modeThe normal calculation mode.
[in]max_differenceThe maximum angle difference for smoothing.
[in]lockOptional thread lock pointer.
[in]logOptional log for progress reporting.

References mode().

◆ calculatePlaneAtVertex()

Plane< 3, fltp08 > Geometry::calculatePlaneAtVertex ( uint04 vertex_index) const

Calculates the best-fit plane at a given vertex position.

Parameters
[in]vertex_indexThe vertex index.
Returns
The calculated 3D plane.

◆ calculateSurfaceArea()

fltp08 Geometry::calculateSurfaceArea ( const Matrix< fltp08 > & parent_transform) const

Calculates the surface area of the geometry in the given coordinate space.

Parameters
[in]parent_transformThe transformation matrix to apply.
Returns
The calculated surface area.

◆ calculateTangentSpace()

void Geometry::calculateTangentSpace ( bool calc_tan,
bool calc_bitan )

Calculates tangent and/or bitangent vectors for texture mapping.

Parameters
[in]calc_tanWhether to calculate tangent vectors.
[in]calc_bitanWhether to calculate bitangent vectors.

◆ calculateVolume()

fltp08 Geometry::calculateVolume ( const Matrix< fltp08 > & parent_transform) const

Calculates the volume of the geometry in the given coordinate space.

Parameters
[in]parent_transformThe transformation matrix to apply.
Returns
The calculated volume.

◆ calculateVolumeAndSurfaceArea()

Vector< 2, fltp08 > Geometry::calculateVolumeAndSurfaceArea ( const Matrix< fltp08 > & transform,
const void * lock ) const

Calculates both volume and surface area simultaneously.

Parameters
[in]transformThe transformation matrix to apply.
[in]lockThread lock pointer.
Returns
A 2-component vector where X is volume and Y is surface area.

◆ canBeClosedSolid()

bool Geometry::canBeClosedSolid ( const void * lock = nullptr) const

Checks whether this geometry can form a closed solid (watertight mesh).

Parameters
[in]lockOptional thread lock pointer.
Returns
True if the geometry can be a closed solid.

◆ canExplode()

bool Geometry::canExplode ( ) const

Checks whether this geometry can be exploded into individual primitives.

Returns
True if the geometry supports exploding.

◆ clearSmoothing()

void Geometry::clearSmoothing ( const SmoothingParameters & properties)

Removes smoothing and restores original vertex positions.

Parameters
[in]propertiesThe smoothing parameters describing what to clear.

◆ closePolyline()

void Geometry::closePolyline ( PrimitiveProperty property)

Closes an open polyline by connecting the last vertex to the first.

Parameters
[in]propertyThe primitive property of the polyline.

◆ column() [1/2]

TableColumn & Geometry::column ( VertexProperty property)
inline

Returns a mutable reference to the column for a standard vertex property.

Parameters
[in]propertyThe vertex property.
Returns
Reference to the TableColumn.

Definition at line 2205 of file Geometry.h.

References cast(), and DesignInfo::m_base.

Referenced by polygons(), polylines(), primitive(), primitive(), setPrimitive(), setVertex(), setVertex(), setVertices(), setVertices(), setVertices(), triangles(), vertex(), vertexFlagColumn(), vertexFlagColumn(), and vertices().

◆ column() [2/2]

const TableColumn & Geometry::column ( VertexProperty property) const
inline

Returns a const reference to the column for a standard vertex property.

Parameters
[in]propertyThe vertex property.
Returns
Const reference to the TableColumn.

Definition at line 2213 of file Geometry.h.

References cast(), and DesignInfo::m_base.

◆ combine()

void Geometry::combine ( Geometry & geo,
const Matrix< fltp08 > & conversion = Matrixfltp08 >(1.0) )

Combines another geometry into this one.

Parameters
[in]geoThe geometry to merge in.
[in]conversionOptional transformation matrix to apply during combination.

◆ convertPolarToCartesian()

void Geometry::convertPolarToCartesian ( const StringView & roll_column,
const StringView & pitch_column,
const StringView & distance_column )

Converts polar coordinate vertex properties to Cartesian coordinates.

Parameters
[in]roll_columnThe name of the roll angle property column.
[in]pitch_columnThe name of the pitch angle property column.
[in]distance_columnThe name of the distance property column.

◆ copyFrom()

void Geometry::copyFrom ( const Geometry & geo,
bool copy_tree = true,
bool copy_vertices = true )

Copies all data from another geometry into this one.

Parameters
[in]geoThe source geometry.
[in]copy_treeWhether to copy spatial trees.
[in]copy_verticesWhether to copy vertex data.

◆ copyTraitsFrom()

void Geometry::copyTraitsFrom ( const Geometry & geo)

Copies traits (properties) from another geometry without copying vertices or primitives.

Parameters
[in]geoThe source geometry.

References parentCount().

◆ cotangentLaplacianSmoothing()

void Geometry::cotangentLaplacianSmoothing ( const SmoothingParameters & properties)

Applies cotangent-weighted Laplacian smoothing to the mesh.

Parameters
[in]propertiesThe smoothing parameters.

◆ createDrapedMaterialCoordinates()

void Geometry::createDrapedMaterialCoordinates ( const Matrix< fltp08 > & mat = Matrixfltp08 >())

Creates material (texture) coordinates by draping them onto the geometry surface.

Parameters
[in]matOptional transformation matrix for the draping projection.

◆ createVertexProperty() [1/2]

template<class t_type>
uint04 Geometry::createVertexProperty ( const StringView & property_name)
inline

Creates a new custom vertex property column with a compile-time type.

Parameters
[in]property_nameThe name of the property to create.
Returns
The column index of the new property.

Definition at line 1348 of file Geometry.h.

References createVertexProperty(), and GetTypeInfo().

Referenced by createVertexProperty().

◆ createVertexProperty() [2/2]

uint04 Geometry::createVertexProperty ( const StringView & property_name,
const TypeInfo & type )

Creates a new custom vertex property column with a runtime type.

Parameters
[in]property_nameThe name of the property to create.
[in]typeThe type information for the property.
Returns
The column index of the new property.

◆ edgeToFaceColumn() [1/2]

TableColumn & Geometry::edgeToFaceColumn ( )
inline

Returns a mutable reference to the edge-to-face mapping column.

Returns
Reference to the edge-to-face TableColumn.

Definition at line 628 of file Geometry.h.

References DesignInfo::m_base.

◆ edgeToFaceColumn() [2/2]

const TableColumn & Geometry::edgeToFaceColumn ( ) const
inline

Returns a const reference to the edge-to-face mapping column.

Returns
Const reference to the edge-to-face TableColumn.

Definition at line 635 of file Geometry.h.

References DesignInfo::m_base.

◆ explode()

GeometryBuffer Geometry::explode ( ) const

Explodes this geometry into individual primitive geometries.

Returns
A GeometryBuffer containing the exploded geometries.

◆ faceCenter()

Vertex< 3, fltp08 > Geometry::faceCenter ( uint04 index) const

Calculates the center point of a face at the given index.

Parameters
[in]indexThe face index.
Returns
The 3D center vertex of the face.

References DesignObject::index().

◆ faceEdges()

Buffer< LineSegment< 3, fltp08 > > Geometry::faceEdges ( uint04 index) const

Retrieves all edges of a face at the given index.

Parameters
[in]indexThe face index.
Returns
A buffer of 3D line segments forming the face edges.

References DesignObject::index().

◆ faceToEdgeColumn() [1/2]

TableColumn & Geometry::faceToEdgeColumn ( )
inline

Returns a mutable reference to the face-to-edge mapping column.

Returns
Reference to the face-to-edge TableColumn.

Definition at line 614 of file Geometry.h.

References DesignInfo::m_base.

◆ faceToEdgeColumn() [2/2]

const TableColumn & Geometry::faceToEdgeColumn ( ) const
inline

Returns a const reference to the face-to-edge mapping column.

Returns
Const reference to the face-to-edge TableColumn.

Definition at line 621 of file Geometry.h.

References DesignInfo::m_base.

◆ fillHolesByNeighbor()

void Geometry::fillHolesByNeighbor ( PrimitiveProperty property,
const void * lock = nullptr,
LogPtr log = LogPtr() )

Fills holes in the mesh by interpolating from neighboring primitives.

Parameters
[in]propertyThe primitive property to use for hole detection.
[in]lockOptional thread lock pointer.
[in]logOptional log for progress reporting.

◆ getAscModifiedTime()

Time Geometry::getAscModifiedTime ( bool include_self,
bool include_layer = false ) const

Gets the most recent ascending modified time across hierarchy.

Parameters
[in]include_selfWhether to include this geometry's own modified time.
[in]include_layerWhether to include layer modified time.
Returns
The most recent modification time.

◆ getBounds()

Bounds< 3, fltp08 > Geometry::getBounds ( ) const

Retrieves the 3D bounding box of this geometry.

Returns
The axis-aligned bounding box.

◆ getCompleteTransform()

Matrix< fltp08 > Geometry::getCompleteTransform ( const Model & parent) const

Computes the complete transformation matrix from geometry space to world space via a parent Model.

Parameters
[in]parentThe parent model providing the model-to-world transform.
Returns
The combined transformation matrix.

◆ getGeometryIcon()

StringView Geometry::getGeometryIcon ( ) const

Retrieves the icon identifier string for this geometry type.

Returns
A StringView of the icon name.

◆ getGeometryType()

GeometryType Geometry::getGeometryType ( ) const

◆ getParent()

Model Geometry::getParent ( uint04 index) const
inline

Retrieves a specific parent Model by index.

Inline implementation of getParent. Defined after Model.h inclusion.

Parameters
[in]indexThe parent index.
Returns
The parent Model.

Definition at line 2943 of file Geometry.h.

References DesignObject::index(), DesignInfo::m_base, and DesignInfo::m_design_index.

Referenced by getParents().

◆ getParents()

ModelBuffer Geometry::getParents ( ) const

Retrieves all parent Models of this geometry.

Returns
A ModelBuffer containing all parents.

References getParent(), and DesignObject::index().

◆ getSelectedVertices()

Buffer< uint04 > Geometry::getSelectedVertices ( ) const

Retrieves indices of all currently selected vertices.

Returns
A buffer of selected vertex indices.

◆ getTreeIndices()

const Buffer< uint04 > & Geometry::getTreeIndices ( PrimitiveProperty primitive_property) const

Retrieves the index mapping used by the spatial tree.

Parameters
[in]primitive_propertyThe primitive property.
Returns
A const reference to the index buffer.

Referenced by getTreeSortedVertices().

◆ getTreeSortedVertices()

template<class t_type>
Buffer< t_type > Geometry::getTreeSortedVertices ( PrimitiveProperty primitive_property,
VertexProperty vertex_property ) const
inline

Retrieves vertices sorted according to the spatial tree index order.

Parameters
[in]primitive_propertyThe primitive property whose tree to use.
[in]vertex_propertyThe vertex property to read from.
Returns
A buffer of vertices in tree-sorted order.

Definition at line 1632 of file Geometry.h.

References getTreeIndices(), indices(), and vertices().

◆ hasColumn()

bool Geometry::hasColumn ( VertexProperty property) const
inline

Checks whether the underlying column exists for a standard vertex property.

Parameters
[in]propertyThe vertex property.
Returns
True if the column pointer is non-null.

Definition at line 1764 of file Geometry.h.

References cast(), and DesignInfo::m_base.

◆ hasHoles()

bool Geometry::hasHoles ( PrimitiveProperty property) const

Checks whether the mesh has holes for the given primitive property.

Parameters
[in]propertyThe primitive property to check.
Returns
True if holes are detected.

◆ hasIndexColumn()

bool Geometry::hasIndexColumn ( ) const
inline

Checks whether the primitive index column has any entries.

Returns
True if the index column is non-empty.

Definition at line 658 of file Geometry.h.

References DesignInfo::m_base.

◆ hasIndexFanColumn()

bool Geometry::hasIndexFanColumn ( ) const
inline

Checks whether the primitive fan index column has any entries.

Returns
True if the fan column is non-empty.

Definition at line 665 of file Geometry.h.

References DesignInfo::m_base.

◆ hasParent()

bool Geometry::hasParent ( const Model & model) const

Checks whether a given Model is a parent of this geometry.

Parameters
[in]modelThe model to check.
Returns
True if the model is a parent.

◆ hasProperty() [1/2]

bool Geometry::hasProperty ( PrimitiveProperty property) const
inline

Checks whether a given primitive property has index data.

Parameters
[in]propertyThe primitive property to check.
Returns
True if the property has valid index data.

Definition at line 651 of file Geometry.h.

References e_no_index, and mode().

◆ hasProperty() [2/2]

bool Geometry::hasProperty ( VertexProperty property) const
inline

Checks whether a standard vertex property has data.

Parameters
[in]propertyThe vertex property to check.
Returns
True if the property is active.

Definition at line 1485 of file Geometry.h.

References e_no_vertex, and mode().

◆ hasTree()

bool Geometry::hasTree ( PrimitiveProperty primitive_property,
VertexProperty vertex_property = VertexProperty::Position ) const

Checks whether a spatial tree exists for the given primitive and vertex property.

Parameters
[in]primitive_propertyThe primitive property.
[in]vertex_propertyThe vertex property. Defaults to Position.
Returns
True if a tree exists.

References Position.

◆ hasVertexProperty() [1/2]

bool Geometry::hasVertexProperty ( const StringView & property_name) const

Checks whether a named vertex property exists.

Parameters
[in]property_nameThe property name.
Returns
True if the property exists.

◆ hasVertexProperty() [2/2]

bool Geometry::hasVertexProperty ( const VertexProperty & property) const

Checks whether a standard vertex property exists.

Parameters
[in]propertyThe vertex property enum.
Returns
True if the property exists.

◆ indexFanCount()

uint04 Geometry::indexFanCount ( ) const
inline

Returns the number of fan indices for this geometry.

Returns
The fan index count.

Definition at line 1109 of file Geometry.h.

References DesignInfo::m_base, and DesignInfo::m_design_index.

◆ indexFanOffset()

uint04 Geometry::indexFanOffset ( ) const
inline

Returns the offset into the fan index column for this geometry.

Returns
The fan index offset.

Definition at line 1102 of file Geometry.h.

References DesignInfo::m_base, and DesignInfo::m_design_index.

Referenced by optimizedPrimitiveDef(), polygons(), polylines(), primitive(), setPrimitiveVec(), and triangles().

◆ indexOffset() [1/2]

uint04 Geometry::indexOffset ( ) const
inline

Returns the base index offset for this geometry within the shared index column.

Returns
The index offset.

Definition at line 1087 of file Geometry.h.

References DesignInfo::m_base, and DesignInfo::m_design_index.

Referenced by addPrimitive(), addPrimitives(), Extruder::ExtrudePolylineAlongGeo(), Extruder::ExtrudeRealThickness(), optimizedPrimitiveDef(), polygons(), polylines(), primitive(), primitive(), primitive(), setPrimitive(), setPrimitive(), and triangles().

◆ indexOffset() [2/2]

uint04 Geometry::indexOffset ( PrimitiveProperty property) const
inline

Returns the index offset for a specific primitive property.

Parameters
[in]propertyThe primitive property.
Returns
The index offset relative to the geometry's base offset.

Definition at line 1095 of file Geometry.h.

References DesignInfo::m_base, and DesignInfo::m_design_index.

◆ indices()

Buffer< uint04 > Geometry::indices ( PrimitiveProperty primitive_property,
uint04 start,
uint04 size ) const

Retrieves a range of raw primitive indices.

Parameters
[in]primitive_propertyThe primitive property.
[in]startThe starting index.
[in]sizeThe number of indices to retrieve.
Returns
A buffer of vertex indices.

Referenced by getTreeSortedVertices().

◆ indicesPerPrimitive()

constexpr uint04 Geometry::indicesPerPrimitive ( PrimitiveMode property)
inlinestaticconstexpr

Returns the number of vertex indices per primitive for a given mode.

Parameters
[in]propertyThe primitive mode.
Returns
0 for no index, 2 for lines, 3 for triangles, 1 for others.

Definition at line 930 of file Geometry.h.

References e_lines, e_no_index, and e_triangle.

Referenced by primitive(), primitiveIndexCount(), and setPrimitive().

◆ laplacianSmoothing()

void Geometry::laplacianSmoothing ( const SmoothingParameters & properties)

Applies Laplacian smoothing to the mesh.

Parameters
[in]propertiesThe smoothing parameters.

◆ lineIndices() [1/2]

Buffer< Vector< 2, uint04 > > Geometry::lineIndices ( PrimitiveProperty primitive_property) const
inline

Retrieves all line index pairs for a primitive property.

Parameters
[in]primitive_propertyThe primitive property.
Returns
A buffer of 2-component vertex index vectors.

Definition at line 1057 of file Geometry.h.

References lineIndices(), and primitiveCount().

Referenced by lineIndices().

◆ lineIndices() [2/2]

Buffer< Vector< 2, uint04 > > Geometry::lineIndices ( PrimitiveProperty primitive_property,
uint04 start,
uint04 size ) const

Retrieves a range of line index pairs.

Parameters
[in]primitive_propertyThe primitive property.
[in]startThe starting primitive index.
[in]sizeThe number of lines to retrieve.
Returns
A buffer of 2-component vertex index vectors.

◆ lineSegment()

template<uint01 t_dims, class t_type>
LineSegment< t_dims, t_type > Geometry::lineSegment ( PrimitiveProperty primitive_property,
VertexProperty vertex_property,
uint04 line_index ) const
inline

Retrieves a line segment from the geometry using primitive and vertex properties.

Parameters
[in]primitive_propertyThe primitive property containing line indices.
[in]vertex_propertyThe vertex property containing position data.
[in]line_indexThe line primitive index.
Returns
The constructed line segment.

Definition at line 1736 of file Geometry.h.

References IsInvalid(), primitive(), and vertex().

Referenced by lineSegments().

◆ lineSegments()

template<uint01 t_dims, class t_type>
Buffer< LineSegment< t_dims, t_type > > Geometry::lineSegments ( PrimitiveProperty primitive_property,
VertexProperty vertex_property ) const
inline

Retrieves all line segments from the geometry.

Parameters
[in]primitive_propertyThe primitive property containing line indices.
[in]vertex_propertyThe vertex property containing position data.
Returns
A buffer of line segments.

Definition at line 1836 of file Geometry.h.

References Buffer< t_type, t_memory_manager >::add(), e_lines, e_polyline, lineSegment(), mode(), and primitiveCount().

◆ mode() [1/2]

◆ mode() [2/2]

VertexMode Geometry::mode ( VertexProperty property) const
inline

Retrieves the vertex storage mode for a standard vertex property.

Parameters
[in]propertyThe vertex property to query.
Returns
The VertexMode describing the storage format.

Definition at line 1493 of file Geometry.h.

References DesignInfo::m_base, and DesignInfo::m_design_index.

◆ normalExpansion()

void Geometry::normalExpansion ( const Vector< 3, fltp04 > & expansion_vector)

Expands vertex positions along their normals by a given vector.

Parameters
[in]expansion_vectorThe 3D expansion vector to apply.

◆ operator!=()

bool Geometry::operator!= ( const Geometry & geo) const
inline

Checks inequality with another Geometry.

Parameters
[in]geoThe geometry to compare against.
Returns
True if the geometries differ.

Definition at line 541 of file Geometry.h.

References DesignObject::isValid(), DesignInfo::m_base, and DesignInfo::m_index.

◆ operator==()

bool Geometry::operator== ( const Geometry & geo) const
inline

Checks equality with another Geometry by comparing base and index.

Parameters
[in]geoThe geometry to compare against.
Returns
True if both reference the same geometry in the same database.

Definition at line 531 of file Geometry.h.

References DesignObject::isValid(), DesignInfo::m_base, and DesignInfo::m_index.

◆ OptimizedGetPrimitiveVec()

template<class t_vec_type>
t_vec_type Geometry::OptimizedGetPrimitiveVec ( const OptimizedPrimitiveDef & ref,
uint04 index )
inlinestatic

Retrieves a vector primitive using pre-computed offsets for maximum performance.

Parameters
[in]refThe optimized primitive definition.
[in]indexThe primitive index.
Returns
The vertex index vector for the primitive.

Definition at line 862 of file Geometry.h.

References Geometry::OptimizedPrimitiveDef::column, e_lines, e_polyline, e_triangle, e_triangle_fan, e_triangle_strip, Geometry::OptimizedPrimitiveDef::fan_column, Geometry::OptimizedPrimitiveDef::fan_offset, DesignObject::index(), Geometry::OptimizedPrimitiveDef::index_offset, IsInvalid(), and Geometry::OptimizedPrimitiveDef::mode.

Referenced by LineIterator< t_dims, t_type >::rawIndex(), and TriangleIterator< t_dims, t_type >::rawIndex().

◆ optimizedPrimitiveDef()

OptimizedPrimitiveDef Geometry::optimizedPrimitiveDef ( PrimitiveProperty property)
inline

Creates a pre-computed primitive definition for fast repeated access.

Parameters
[in]propertyThe primitive property to optimize access for.
Returns
An OptimizedPrimitiveDef with pre-calculated offsets.

Definition at line 786 of file Geometry.h.

References Geometry::OptimizedPrimitiveDef::fan_offset, Geometry::OptimizedPrimitiveDef::index_offset, indexFanOffset(), indexOffset(), mode(), Geometry::OptimizedPrimitiveDef::mode, primitiveColumn(), primitiveCount(), primitiveFanColumn(), vertexCount(), and vertexOffset().

Referenced by LineIterator< t_dims, t_type >::LineIterator(), and setPrimitiveVec().

◆ OptimizedSetPrimitive()

template<class t_vec_type>
void Geometry::OptimizedSetPrimitive ( const OptimizedPrimitiveDef & ref,
uint04 index,
t_vec_type index_value )
inlinestatic

Sets a single primitive index using pre-computed offsets for maximum performance.

Parameters
[in]refThe optimized primitive definition.
[in]indexThe primitive index.
[in]index_valueThe vertex index to set.

Definition at line 804 of file Geometry.h.

References Geometry::OptimizedPrimitiveDef::column, DesignObject::index(), Geometry::OptimizedPrimitiveDef::index_offset, and IsInvalid().

◆ OptimizedSetPrimitiveVec()

template<class t_vec_type>
void Geometry::OptimizedSetPrimitiveVec ( const OptimizedPrimitiveDef & ref,
uint04 index,
t_vec_type index_value )
inlinestatic

Sets a vector primitive (triangle/line) using pre-computed offsets for maximum performance.

Parameters
[in]refThe optimized primitive definition.
[in]indexThe primitive index.
[in]index_valueThe vertex index vector (2 or 3 component) to set.

Definition at line 821 of file Geometry.h.

References Geometry::OptimizedPrimitiveDef::column, e_triangle, e_triangle_fan, e_triangle_strip, Geometry::OptimizedPrimitiveDef::fan_column, Geometry::OptimizedPrimitiveDef::fan_offset, DesignObject::index(), Geometry::OptimizedPrimitiveDef::index_offset, IsInvalid(), IsValid(), and Geometry::OptimizedPrimitiveDef::mode.

Referenced by setPrimitiveVec().

◆ parentCount()

uint04 Geometry::parentCount ( ) const
inline

Returns the number of parent Models referencing this geometry.

Inline implementation of parentCount. Defined after Model.h inclusion.

Returns
The parent count.

Definition at line 2948 of file Geometry.h.

References DesignInfo::m_base, and DesignInfo::m_design_index.

Referenced by copyTraitsFrom().

◆ parity() [1/2]

uint01 Geometry::parity ( const Matrix< fltp04 > & parent_matrix,
PrimitiveMode mode ) const

Calculates the parity (orientation) of the geometry relative to a transformation.

Parameters
[in]parent_matrixThe parent transformation matrix (single-precision).
[in]modeThe primitive mode to evaluate.
Returns
The parity value (0 or 1).

References mode().

◆ parity() [2/2]

uint01 Geometry::parity ( const Matrix< fltp08 > & parent_matrix,
PrimitiveMode mode ) const

Calculates the parity (orientation) of the geometry relative to a transformation.

Parameters
[in]parent_matrixThe parent transformation matrix (double-precision).
[in]modeThe primitive mode to evaluate.
Returns
The parity value (0 or 1).

References mode().

◆ polygons() [1/2]

template<uint01 t_dims, class t_type>
Buffer< Polygon< t_type, Vertex< t_dims, t_type > > > Geometry::polygons ( PrimitiveProperty primitive_property,
VertexProperty vertex_property ) const
inline

Retrieves all polygons from the geometry.

Parameters
[in]primitive_propertyThe primitive property containing polygon indices.
[in]vertex_propertyThe vertex property containing position data.
Returns
A buffer of polygons.

Definition at line 1948 of file Geometry.h.

References polygons(), and primitiveCount().

Referenced by polygons(), and polygons().

◆ polygons() [2/2]

template<uint01 t_dims, class t_type>
Buffer< Polygon< t_type, Vertex< t_dims, t_type > > > Geometry::polygons ( PrimitiveProperty primitive_property,
VertexProperty vertex_property,
uint04 start,
uint04 size ) const
inline

Retrieves a range of polygons from the geometry.

Parameters
[in]primitive_propertyThe primitive property containing polygon indices.
[in]vertex_propertyThe vertex property containing position data.
[in]startThe starting polygon index.
[in]sizeThe number of polygons to retrieve.
Returns
A buffer of polygons.

Definition at line 1960 of file Geometry.h.

References Polygon< t_type, t_vertex >::add(), column(), e_polyline, e_triangle, e_triangle_fan, e_triangle_strip, TableColumn::get(), DesignObject::index(), indexFanOffset(), indexOffset(), IsInvalid(), IsValid(), mode(), polygons(), primitiveColumn(), primitiveCount(), primitiveFanColumn(), and Polygon< t_type, t_vertex >::vertexCount().

◆ polyIndices() [1/2]

Buffer< Buffer< uint04 > > Geometry::polyIndices ( PrimitiveProperty primitive_property) const

Retrieves all polygon index buffers for a primitive property.

Parameters
[in]primitive_propertyThe primitive property.
Returns
A buffer of index buffers, one per polygon.

◆ polyIndices() [2/2]

Buffer< Buffer< uint04 > > Geometry::polyIndices ( PrimitiveProperty primitive_property,
uint04 start,
uint04 size ) const

Retrieves a range of polygon index buffers.

Parameters
[in]primitive_propertyThe primitive property.
[in]startThe starting polygon index.
[in]sizeThe number of polygons to retrieve.
Returns
A buffer of index buffers.

◆ polylines() [1/2]

template<uint01 t_dims, class t_type>
Buffer< Polyline< t_dims, t_type > > Geometry::polylines ( PrimitiveProperty primitive_property,
VertexProperty vertex_property ) const
inline

Retrieves all polylines from the geometry.

Parameters
[in]primitive_propertyThe primitive property containing polyline indices.
[in]vertex_propertyThe vertex property containing position data.
Returns
A buffer of polylines.

Definition at line 2053 of file Geometry.h.

References polylines(), primitiveCount(), and vertexCount().

Referenced by Extruder::ExtrudePolylineAlongGeo(), polylines(), and polylines().

◆ polylines() [2/2]

template<uint01 t_dims, class t_type>
Buffer< Polyline< t_dims, t_type > > Geometry::polylines ( PrimitiveProperty primitive_property,
VertexProperty vertex_property,
uint04 start,
uint04 size ) const
inline

Retrieves a range of polylines from the geometry.

Parameters
[in]primitive_propertyThe primitive property containing polyline indices.
[in]vertex_propertyThe vertex property containing position data.
[in]startThe starting index.
[in]sizeThe number of entries to process.
Returns
A buffer of polylines.

Definition at line 2068 of file Geometry.h.

References Polyline< t_dims, t_type, t_vertex >::add(), Polyline< t_dims, t_type, t_vertex >::clear(), column(), e_lines, e_polyline, e_triangle, e_triangle_fan, e_triangle_strip, TableColumn::get(), DesignObject::index(), indexFanOffset(), indexOffset(), IsInvalid(), IsValid(), mode(), polylines(), primitiveColumn(), primitiveCount(), primitiveFanColumn(), Polyline< t_dims, t_type, t_vertex >::vertexCount(), and vertexOffset().

◆ primitive() [1/3]

template<class t_type>
t_type Geometry::primitive ( PrimitiveProperty property) const
inline

Retrieves a scalar (1D) primitive index value, adjusted for vertex offset.

Parameters
[in]propertyThe primitive property.
[in]indexThe raw index into the primitive.
Returns
The local vertex index.

Definition at line 949 of file Geometry.h.

References DesignObject::index(), indexOffset(), indicesPerPrimitive(), IsInvalid(), mode(), primitiveColumn(), primitiveCount(), and vertexOffset().

Referenced by addPrimitive(), lineSegment(), and triangle().

◆ primitive() [2/3]

template<class t_type>
t_type Geometry::primitive ( PrimitiveProperty property,
typename std::enable_if< ObjectInfo< t_type >::Dimensions==2, uint04 >::type index ) const
inline

Retrieves a line (2D) primitive index pair, adjusted for vertex offset.

Parameters
[in]propertyThe primitive property.
[in]indexThe line primitive index.
Returns
A 2-component vector of local vertex indices.

Definition at line 963 of file Geometry.h.

References column(), e_lines, e_polyline, DesignObject::index(), indexOffset(), IsInvalid(), mode(), primitiveColumn(), primitiveCount(), vertexCount(), and vertexOffset().

◆ primitive() [3/3]

template<class t_type>
t_type Geometry::primitive ( PrimitiveProperty property,
typename std::enable_if< ObjectInfo< t_type >::Dimensions==3, uint04 >::type index ) const
inline

Retrieves a triangle (3D) primitive index triple, adjusted for vertex offset.

Parameters
[in]propertyThe primitive property.
[in]indexThe triangle primitive index.
Returns
A 3-component vector of local vertex indices.

Definition at line 1001 of file Geometry.h.

References column(), e_triangle, e_triangle_fan, e_triangle_strip, DesignObject::index(), indexFanOffset(), indexOffset(), IsInvalid(), mode(), primitiveColumn(), primitiveCount(), primitiveFanColumn(), and vertexOffset().

◆ primitiveColumn() [1/2]

ColumnT< uint04 > & Geometry::primitiveColumn ( )
inline

Returns a mutable reference to the primitive index column.

Returns
Reference to the primitive index ColumnT.

Definition at line 572 of file Geometry.h.

References DesignInfo::m_base.

Referenced by optimizedPrimitiveDef(), polygons(), polylines(), primitive(), primitive(), primitive(), setPrimitive(), setPrimitive(), and triangles().

◆ primitiveColumn() [2/2]

const ColumnT< uint04 > & Geometry::primitiveColumn ( ) const
inline

Returns a const reference to the primitive index column.

Returns
Const reference to the primitive index ColumnT.

Definition at line 579 of file Geometry.h.

References DesignInfo::m_base.

◆ primitiveCount()

uint04 Geometry::primitiveCount ( PrimitiveProperty property) const
inline

Returns the number of primitives for a specific property.

Parameters
[in]propertyThe primitive property.
Returns
The primitive count.

Definition at line 1163 of file Geometry.h.

References cast(), DesignInfo::m_base, and DesignInfo::m_design_index.

Referenced by addPrimitive(), addPrimitives(), Extruder::ExtrudeRealThickness(), lineIndices(), lineSegments(), optimizedPrimitiveDef(), polygons(), polygons(), polylines(), polylines(), primitive(), primitive(), primitive(), primitiveIndexCount(), setPrimitive(), setPrimitive(), setPrimitiveVec(), triangles(), triangles(), and triIndices().

◆ primitiveFanColumn() [1/2]

ColumnT< uint04 > & Geometry::primitiveFanColumn ( )
inline

Returns a mutable reference to the primitive fan column.

Returns
Reference to the fan index ColumnT.

Definition at line 586 of file Geometry.h.

References DesignInfo::m_base.

Referenced by optimizedPrimitiveDef(), polygons(), polylines(), primitive(), setPrimitiveVec(), and triangles().

◆ primitiveFanColumn() [2/2]

const ColumnT< uint04 > & Geometry::primitiveFanColumn ( ) const
inline

Returns a const reference to the primitive fan column.

Returns
Const reference to the fan index ColumnT.

Definition at line 593 of file Geometry.h.

References DesignInfo::m_base.

◆ primitiveFlagColumn() [1/2]

ColumnT< uint01 > & Geometry::primitiveFlagColumn ( )
inline

Returns a mutable reference to the primitive flag column.

Returns
Reference to the primitive flag ColumnT.

Definition at line 600 of file Geometry.h.

References DesignInfo::m_base.

◆ primitiveFlagColumn() [2/2]

const ColumnT< uint01 > & Geometry::primitiveFlagColumn ( ) const
inline

Returns a const reference to the primitive flag column.

Returns
Const reference to the primitive flag ColumnT.

Definition at line 607 of file Geometry.h.

References DesignInfo::m_base.

◆ primitiveIndexCount() [1/2]

uint04 Geometry::primitiveIndexCount ( ) const
inline

Returns the total number of primitive indices across all properties.

Returns
The total index count.

Definition at line 1155 of file Geometry.h.

References DesignInfo::m_base, and DesignInfo::m_design_index.

Referenced by Extruder::ExtrudePolylineAlongGeo().

◆ primitiveIndexCount() [2/2]

uint04 Geometry::primitiveIndexCount ( PrimitiveProperty property) const
inline

Returns the total number of index entries for a specific property.

Parameters
[in]propertyThe primitive property.
Returns
The index count (primitiveCount * indicesPerPrimitive).

Definition at line 1171 of file Geometry.h.

References indicesPerPrimitive(), mode(), and primitiveCount().

◆ primitiveIndexFlag()

bool Geometry::primitiveIndexFlag ( PrimitiveProperty property,
uint04 primitive_index,
PrimitiveBitFlags flag ) const

Retrieves a flag value from a specific primitive index.

Parameters
[in]propertyThe primitive property.
[in]primitive_indexThe primitive index.
[in]flagThe flag to query.
Returns
True if the flag is set.

◆ primitiveIndices()

Buffer< uint04 > Geometry::primitiveIndices ( PrimitiveProperty primitive_property) const

Retrieves all raw primitive indices for a given property.

Parameters
[in]primitive_propertyThe primitive property.
Returns
A buffer of vertex indices.

◆ propertyColumn() [1/4]

TableColumn & Geometry::propertyColumn ( const StringView & property)
inline

Returns a mutable reference to a named custom property column.

Parameters
[in]propertyThe property name.
Returns
Reference to the TableColumn.

Definition at line 2241 of file Geometry.h.

References DesignInfo::m_base.

◆ propertyColumn() [2/4]

const TableColumn & Geometry::propertyColumn ( const StringView & property) const
inline

Returns a const reference to a named custom property column.

Parameters
[in]propertyThe property name.
Returns
Const reference to the TableColumn.

Definition at line 2249 of file Geometry.h.

References DesignInfo::m_base.

◆ propertyColumn() [3/4]

TableColumn & Geometry::propertyColumn ( uint04 property)
inline

Returns a mutable reference to a custom vertex property column by index.

Parameters
[in]propertyThe column index.
Returns
Reference to the TableColumn.

Definition at line 1469 of file Geometry.h.

References DesignInfo::m_base.

Referenced by setVertexProperties(), setVertexProperty(), setVertexProperty(), setVertexProperty(), setVertexProperty(), vertexProperty(), vertexProperty(), vertexProperty(), vertexProperty(), vertexPropertyType(), and vertices().

◆ propertyColumn() [4/4]

const TableColumn & Geometry::propertyColumn ( uint04 property) const
inline

Returns a const reference to a custom vertex property column by index.

Parameters
[in]propertyThe column index.
Returns
Const reference to the TableColumn.

Definition at line 1477 of file Geometry.h.

References DesignInfo::m_base.

◆ propertyVertices() [1/2]

template<class t_type>
Buffer< t_type > Geometry::propertyVertices ( uint04 property) const
inline

Retrieves all values of a custom vertex property as a buffer.

Parameters
[in]propertyThe property column index.
Returns
A buffer of all vertex property values.

Definition at line 1772 of file Geometry.h.

References propertyVertices(), and vertexCount().

Referenced by propertyVertices().

◆ propertyVertices() [2/2]

template<class t_type>
Buffer< t_type > Geometry::propertyVertices ( uint04 property,
uint04 start,
uint04 size ) const
inline

Retrieves a range of custom vertex property values.

Parameters
[in]propertyThe property column index.
[in]startThe starting vertex index.
[in]sizeThe number of vertices to retrieve.
Returns
A buffer of vertex property values.

Definition at line 1782 of file Geometry.h.

References DesignInfo::m_base, vertexCount(), and vertexOffset().

◆ provokingPrimitiveOffset()

uint01 Geometry::provokingPrimitiveOffset ( ) const

Returns the provoking primitive offset for flat shading.

Returns
The offset (0 or 1) used for provoking vertex selection.

◆ removeDuplicateVertices()

void Geometry::removeDuplicateVertices ( fltp08 epsilon,
const void * lock,
LogPtr log = LogPtr() )

Removes vertices that are within epsilon distance of each other.

Parameters
[in]epsilonThe distance threshold for duplicate detection.
[in]lockThread lock pointer.
[in]logOptional log for progress reporting.

◆ removeHoleFill()

void Geometry::removeHoleFill ( const void * lock = nullptr,
LogPtr log = LogPtr() )

Removes any previously applied hole fill data.

Parameters
[in]lockOptional thread lock pointer.
[in]logOptional log for progress reporting.

◆ removeParent()

void Geometry::removeParent ( Model & parent)

Removes a parent Model from this geometry.

Should only be called by Model.

Parameters
[in]parentThe parent model to remove.

◆ removePrimitive() [1/4]

void Geometry::removePrimitive ( PrimitiveProperty property,
Buffer< uint04 > vertices )

Removes primitives at the specified indices.

Parameters
[in]propertyThe primitive property.
[in]verticesThe primitive indices to remove.

References vertices().

◆ removePrimitive() [2/4]

void Geometry::removePrimitive ( PrimitiveProperty property,
const Buffer< bool > & selection_mask )

Removes primitives indicated by a boolean mask.

Parameters
[in]propertyThe primitive property.
[in]selection_maskBoolean mask where true marks primitives for removal.

◆ removePrimitive() [3/4]

void Geometry::removePrimitive ( PrimitiveProperty property,
uint04 location )

Removes a single primitive at the given location.

Parameters
[in]propertyThe primitive property.
[in]locationThe primitive index to remove.

◆ removePrimitive() [4/4]

void Geometry::removePrimitive ( PrimitiveProperty property,
uint04 location,
uint04 size )

Removes a contiguous range of primitives.

Parameters
[in]propertyThe primitive property.
[in]locationThe starting primitive index.
[in]sizeThe number of primitives to remove.

◆ removeTree()

void Geometry::removeTree ( PrimitiveProperty property,
VertexProperty vertex_property = VertexProperty::Position )

Removes the spatial tree for a specific primitive property.

Parameters
[in]propertyThe primitive property.
[in]vertex_propertyThe vertex property. Defaults to Position.

References Position.

◆ removeTrees()

void Geometry::removeTrees ( VertexProperty vertex_property = VertexProperty::Position)

Removes all spatial trees for the given vertex property.

Parameters
[in]vertex_propertyThe vertex property. Defaults to Position.

References Position.

◆ removeVertex()

void Geometry::removeVertex ( uint04 location)

Removes a single vertex at the given location.

Parameters
[in]locationThe vertex index to remove.

◆ removeVertices() [1/4]

void Geometry::removeVertices ( Buffer< uint04 > vertices)

Removes vertices at the specified indices.

Parameters
[in]verticesThe vertex indices to remove.

References vertices().

◆ removeVertices() [2/4]

void Geometry::removeVertices ( const Buffer< bool > & selection_mask)

Removes vertices indicated by a boolean mask.

Parameters
[in]selection_maskBoolean mask where true marks vertices for removal.

◆ removeVertices() [3/4]

void Geometry::removeVertices ( uint04 location,
uint04 size )

Removes a contiguous range of vertices.

Parameters
[in]locationThe starting vertex index.
[in]sizeThe number of vertices to remove.

◆ removeVertices() [4/4]

void Geometry::removeVertices ( uint04 mask_offset,
const Buffer< bool > & selection_mask )

Removes vertices indicated by a boolean mask with an offset.

Parameters
[in]mask_offsetThe offset into the vertex array for the mask.
[in]selection_maskBoolean mask where true marks vertices for removal.

◆ reservePrimitiveIndexSpace()

void Geometry::reservePrimitiveIndexSpace ( uint04 index_size)

Pre-allocates space in the primitive index column.

Parameters
[in]index_sizeThe number of index entries to reserve.

◆ setBounds()

void Geometry::setBounds ( const Bounds< 3, fltp08 > & bounds)

Manually sets the bounding box for this geometry.

Parameters
[in]boundsThe 3D bounds to set.

◆ setCountValue()

void Geometry::setCountValue ( PrimitiveProperty property,
uint04 count )
inlineprotected

Sets the primitive count for a specific property in the database.

Parameters
[in]propertyThe primitive property.
[in]countThe primitive count.

Definition at line 2346 of file Geometry.h.

References cast(), DesignInfo::m_base, and DesignInfo::m_design_index.

◆ setGeometryTransform()

void Geometry::setGeometryTransform ( const Matrix< fltp08 > & transform)

Applies a transformation matrix to all geometry vertices.

Parameters
[in]transformThe transformation matrix to apply.

◆ setGeometryType()

void Geometry::setGeometryType ( GeometryType geometry_type)

Sets the geometry type identifier.

Parameters
[in]geometry_typeThe type to assign.

◆ setIndexCountValue()

void Geometry::setIndexCountValue ( uint04 count)
inlineprotected

Sets the total index count in the database.

Parameters
[in]countThe index count.

Definition at line 2331 of file Geometry.h.

References DesignInfo::m_base, and DesignInfo::m_design_index.

◆ setIndexFanCountValue()

void Geometry::setIndexFanCountValue ( uint04 count)
inlineprotected

Sets the fan index count in the database.

Parameters
[in]countThe fan index count.

Definition at line 2338 of file Geometry.h.

References DesignInfo::m_base, and DesignInfo::m_design_index.

◆ setIndexFanOffsetValue()

void Geometry::setIndexFanOffsetValue ( uint04 offset)
inlineprotected

Sets the fan index offset in the database.

Parameters
[in]offsetThe fan offset.

Definition at line 2353 of file Geometry.h.

References DesignInfo::m_base, and DesignInfo::m_design_index.

◆ setIndexOffsetValue()

void Geometry::setIndexOffsetValue ( uint04 offset)
inlineprotected

Sets the base index offset in the database.

Parameters
[in]offsetThe index offset.

Definition at line 2360 of file Geometry.h.

References DesignInfo::m_base, and DesignInfo::m_design_index.

◆ setModeValue() [1/2]

void Geometry::setModeValue ( PrimitiveProperty property,
PrimitiveMode mode )
inlineprotected

Sets the primitive mode for a property in the database.

Parameters
[in]propertyThe primitive property.
[in]modeThe mode to set.

Definition at line 2376 of file Geometry.h.

References cast(), DesignInfo::m_base, DesignInfo::m_design_index, and mode().

◆ setModeValue() [2/2]

void Geometry::setModeValue ( VertexProperty property,
VertexMode vert_mode )
inlineprotected

Sets the vertex mode for a standard property in the database.

Parameters
[in]propertyThe vertex property.
[in]vert_modeThe vertex mode to set. Must not be e_index (not yet supported).

Definition at line 2412 of file Geometry.h.

References cast(), e_index, DesignInfo::m_base, and DesignInfo::m_design_index.

◆ setNormalMode()

void Geometry::setNormalMode ( NormalMode mode,
Angle< fltp08 > max_sep_angle,
const void * lock = nullptr,
LogPtr log = LogPtr() )

Sets the normal calculation mode and recalculates normals.

Parameters
[in]modeThe normal mode to apply.
[in]max_sep_angleThe maximum separation angle for smooth normals.
[in]lockOptional thread lock pointer.
[in]logOptional log for progress reporting.

References mode().

◆ setOffsetValue()

void Geometry::setOffsetValue ( PrimitiveProperty property,
uint04 offset )
inlineprotected

Sets the primitive property offset in the database.

Parameters
[in]propertyThe primitive property.
[in]offsetThe offset value.

Definition at line 2368 of file Geometry.h.

References cast(), DesignInfo::m_base, and DesignInfo::m_design_index.

◆ setPrimitive() [1/4]

template<class t_type>
void Geometry::setPrimitive ( PrimitiveProperty property,
uint04 index,
t_type index_value )
inline

Sets a single primitive index value.

Parameters
[in]propertyThe primitive property.
[in]indexThe index within the primitive.
[in]index_valueThe vertex index value to set.

Definition at line 712 of file Geometry.h.

References cast(), DesignObject::index(), indexOffset(), indicesPerPrimitive(), IsValid(), mode(), primitiveColumn(), primitiveCount(), vertexCount(), and vertexOffset().

Referenced by addPrimitive(), and Extruder::ExtrudePolylineAlongGeo().

◆ setPrimitive() [2/4]

template<class t_type>
void Geometry::setPrimitive ( PrimitiveProperty property,
uint04 index,
Triangle< 1, t_type > index_value )
inline

Sets a triangle primitive from a Triangle index type.

Parameters
[in]propertyThe primitive property.
[in]indexThe primitive index.
[in]index_valueThe triangle indices.

Definition at line 922 of file Geometry.h.

References DesignObject::index(), and setPrimitiveVec().

◆ setPrimitive() [3/4]

template<class t_type>
void Geometry::setPrimitive ( PrimitiveProperty property,
uint04 index,
Vector< 2, t_type > index_value )
inline

Sets a line primitive (2-vertex index pair).

Parameters
[in]propertyThe primitive property.
[in]indexThe primitive index.
[in]index_valueThe two vertex indices forming the line.

Definition at line 729 of file Geometry.h.

References cast(), column(), e_lines, e_polyline, DesignObject::index(), indexOffset(), IsValid(), mode(), primitiveColumn(), primitiveCount(), vertexCount(), and vertexOffset().

◆ setPrimitive() [4/4]

template<class t_type>
void Geometry::setPrimitive ( PrimitiveProperty property,
uint04 index,
Vector< 3, t_type > index_value )
inline

Sets a triangle primitive (3-vertex index vector).

Parameters
[in]propertyThe primitive property.
[in]indexThe primitive index.
[in]index_valueThe three vertex indices forming the triangle.

Definition at line 912 of file Geometry.h.

References DesignObject::index(), and setPrimitiveVec().

◆ setPrimitiveIndexFlag()

void Geometry::setPrimitiveIndexFlag ( PrimitiveProperty property,
uint04 primitive_index,
PrimitiveBitFlags flag,
bool value )

Sets a flag on a specific primitive index.

Parameters
[in]propertyThe primitive property.
[in]primitive_indexThe primitive index.
[in]flagThe flag to set.
[in]valueThe flag value.

◆ setPrimitiveMode()

void Geometry::setPrimitiveMode ( PrimitiveProperty property,
PrimitiveMode mode )

Sets the primitive mode for a given property.

Parameters
[in]propertyThe primitive property to configure.
[in]modeThe primitive mode to set.

References mode().

Referenced by Extruder::ExtrudePolylineAlongGeo(), and Extruder::ExtrudeRealThickness().

◆ setPrimitiveRange()

void Geometry::setPrimitiveRange ( PrimitiveProperty mode,
uint04 start,
uint04 primitive_count )

Sets the start offset and count for a primitive property range.

Parameters
[in]modeThe primitive property.
[in]startThe start index offset.
[in]primitive_countThe number of primitives.

References mode().

Referenced by addPrimitive(), addPrimitives(), Extruder::ExtrudePolylineAlongGeo(), and Extruder::ExtrudeRealThickness().

◆ setPrimitiveVec()

template<class t_index_type, class t_vec_type>
void Geometry::setPrimitiveVec ( PrimitiveProperty property,
uint04 index,
t_vec_type & index_value )
inlineprotected

Internal method to set a vector primitive with offset adjustment and fan handling.

Parameters
[in]propertyThe primitive property.
[in]indexThe primitive index.
[in]index_valueThe vertex index vector to set.

Definition at line 2296 of file Geometry.h.

References Geometry::OptimizedPrimitiveDef::column, e_triangle_fan, DesignObject::index(), Geometry::OptimizedPrimitiveDef::index_offset, indexFanOffset(), IsValid(), Geometry::OptimizedPrimitiveDef::mode, optimizedPrimitiveDef(), OptimizedSetPrimitiveVec(), primitiveCount(), primitiveFanColumn(), vertexCount(), and vertexOffset().

Referenced by setPrimitive(), and setPrimitive().

◆ setRealThickness()

void Geometry::setRealThickness ( fltp08 real_thickness,
const Matrix< fltp08 > & transform,
const void * lock,
LogPtr log = LogPtr() )

Sets a real-world thickness value and generates thickness geometry.

Parameters
[in]real_thicknessThe thickness in real-world units.
[in]transformThe transformation matrix for unit conversion.
[in]lockThread lock pointer.
[in]logOptional log for progress reporting.

◆ setSolidVertexCountValue()

void Geometry::setSolidVertexCountValue ( uint04 count)
inline

Sets the solid vertex count value in the database.

Parameters
[in]countThe solid vertex count.

Definition at line 2257 of file Geometry.h.

References DesignInfo::m_base, and DesignInfo::m_design_index.

Referenced by Extruder::ExtrudePolylineAlongGeo(), and Extruder::ExtrudeRealThickness().

◆ setSolidVertexOffsetValue()

void Geometry::setSolidVertexOffsetValue ( uint04 count)
inline

Sets the solid vertex offset value in the database.

Parameters
[in]countThe offset value.

Definition at line 2271 of file Geometry.h.

References DesignInfo::m_base, and DesignInfo::m_design_index.

Referenced by Extruder::ExtrudePolylineAlongGeo().

◆ setSolidVertexReservedValue()

void Geometry::setSolidVertexReservedValue ( uint04 count)
inline

Sets the solid vertex reserved count value in the database.

Parameters
[in]countThe reserved count.

Definition at line 2264 of file Geometry.h.

References DesignInfo::m_base, and DesignInfo::m_design_index.

Referenced by Extruder::ExtrudePolylineAlongGeo().

◆ setThicknessMode()

void Geometry::setThicknessMode ( ThicknessMode mode)

Sets how thickness is interpreted during rendering.

Parameters
[in]modeThe thickness mode to apply.

References mode().

◆ setTree()

void Geometry::setTree ( DynamicPointer< RTree< 3, fltp04 > > tree,
PrimitiveProperty primitive_property,
VertexProperty vertex_property = VertexProperty::Position ) const

Sets (replaces) the spatial R-tree for the given properties.

Parameters
[in]treeThe R-tree to set.
[in]primitive_propertyThe primitive property.
[in]vertex_propertyThe vertex property. Defaults to Position.

References Position, and tree().

◆ SetTriangulationMethod()

void Geometry::SetTriangulationMethod ( std::function< void(Geometry &geo, const Matrix< fltp08 > &matrix, const void *lock, LogPtr log)> function)
static

Sets the global triangulation method used by autoCalculateIndices.

Parameters
[in]functionThe triangulation function to register.

◆ setupVertexTable()

Configures the vertex table with the specified modes for standard properties.

Parameters
[in]vertex_sizeThe initial vertex count.
[in]positionThe vertex mode for position data.
[in]normalThe vertex mode for normal data.
[in]colorThe vertex mode for color data.
[in]textureThe vertex mode for texture coordinate data.
[in]tangentThe vertex mode for tangent data.
[in]bitangentThe vertex mode for bitangent data.
[in]bonesThe vertex mode for bone weight data.

References e_no_vertex.

◆ setVertex() [1/2]

template<class t_type>
void Geometry::setVertex ( VertexProperty property,
uint04 index,
const t_type & vector )
inline

Sets a standard vertex property value at the given index.

Parameters
[in]propertyThe vertex property (Position, Normal, etc.).
[in]indexThe vertex index.
[in]vectorThe value to set.

Definition at line 1654 of file Geometry.h.

References column(), DesignObject::index(), vertexCount(), and vertexOffset().

Referenced by Extruder::ExtrudePolylineAlongGeo().

◆ setVertex() [2/2]

template<class t_type>
void Geometry::setVertex ( VertexProperty property,
uint04 index,
uint04 sub_index,
const t_type & vector )
inline

Sets a sub-component of a standard vertex property at the given index.

Parameters
[in]propertyThe vertex property.
[in]indexThe vertex index.
[in]sub_indexThe sub-component index.
[in]vectorThe value to set.

Definition at line 1666 of file Geometry.h.

References column(), DesignObject::index(), vertexCount(), and vertexOffset().

◆ setVertexCount()

void Geometry::setVertexCount ( uint04 size,
bool deallocate_if_possible = true )

Sets the total vertex count, resizing vertex data columns.

Parameters
[in]sizeThe new vertex count.
[in]deallocate_if_possibleWhether to free memory when shrinking.

Referenced by addVertex(), and addVertices().

◆ setVertexCountValue()

void Geometry::setVertexCountValue ( uint04 count)
inlineprotected

Sets the vertex count in the database.

Parameters
[in]countThe vertex count.

Definition at line 2387 of file Geometry.h.

References DesignInfo::m_base, and DesignInfo::m_design_index.

◆ setVertexFlag()

void Geometry::setVertexFlag ( uint04 vertex,
VertexFlags flag,
bool value )

Sets a flag on a single vertex.

Parameters
[in]vertexThe vertex index.
[in]flagThe flag to set.
[in]valueThe flag value (true or false).

References vertex().

◆ setVertexMode()

void Geometry::setVertexMode ( VertexProperty property,
VertexMode mode )

Sets the vertex storage mode for a standard property.

Parameters
[in]propertyThe vertex property.
[in]modeThe vertex mode to set.

References mode().

◆ setVertexOffsetValue()

void Geometry::setVertexOffsetValue ( uint04 count)
inlineprotected

Sets the vertex offset in the database.

Parameters
[in]countThe offset value.

Definition at line 2401 of file Geometry.h.

References DesignInfo::m_base, and DesignInfo::m_design_index.

◆ setVertexProperties()

template<class t_type>
void Geometry::setVertexProperties ( const StringView & property,
const Buffer< t_type > & vertices,
uint04 offset = 0 )
inline

Sets a named vertex property for multiple vertices from a buffer.

Parameters
[in]propertyThe property name.
[in]verticesThe buffer of values to set.
[in]offsetThe starting vertex index offset.

Definition at line 1452 of file Geometry.h.

References propertyColumn(), vertexCount(), vertexOffset(), and vertices().

◆ setVertexProperty() [1/4]

template<class t_type>
void Geometry::setVertexProperty ( const StringView & property,
uint04 index,
const t_type & property_value )
inline

Sets a custom vertex property value by name.

Parameters
[in]propertyThe property name.
[in]indexThe vertex index.
[in]property_valueThe value to set.

Definition at line 1417 of file Geometry.h.

References DesignObject::index(), propertyColumn(), vertexCount(), and vertexOffset().

◆ setVertexProperty() [2/4]

template<class t_type>
void Geometry::setVertexProperty ( const StringView & property,
uint04 index,
uint04 sub_index,
const t_type & vector )
inline

Sets a sub-component of a custom vertex property by name.

Parameters
[in]propertyThe property name.
[in]indexThe vertex index.
[in]sub_indexThe sub-component index.
[in]vectorThe value to set.

Definition at line 1441 of file Geometry.h.

References DesignObject::index(), propertyColumn(), vertexCount(), and vertexOffset().

◆ setVertexProperty() [3/4]

template<class t_type>
void Geometry::setVertexProperty ( uint04 property,
uint04 index,
const t_type & vector )
inline

Sets a custom vertex property value by column index.

Parameters
[in]propertyThe property column index.
[in]indexThe vertex index.
[in]vectorThe value to set.

Definition at line 1407 of file Geometry.h.

References DesignObject::index(), propertyColumn(), vertexCount(), and vertexOffset().

◆ setVertexProperty() [4/4]

template<class t_type>
void Geometry::setVertexProperty ( uint04 property,
uint04 index,
uint04 sub_index,
const t_type & vector )
inline

Sets a sub-component of a custom vertex property by column index.

Parameters
[in]propertyThe property column index.
[in]indexThe vertex index.
[in]sub_indexThe sub-component index.
[in]vectorThe value to set.

Definition at line 1429 of file Geometry.h.

References DesignObject::index(), propertyColumn(), vertexCount(), and vertexOffset().

◆ setVertexReservedValue()

void Geometry::setVertexReservedValue ( uint04 count)
inlineprotected

Sets the vertex reserved count in the database.

Parameters
[in]countThe reserved count.

Definition at line 2394 of file Geometry.h.

References DesignInfo::m_base, and DesignInfo::m_design_index.

◆ setVertices() [1/3]

template<class t_type, class t_matrix_type>
void Geometry::setVertices ( VertexProperty property,
const Buffer< t_type > & vertices,
const Matrix< t_matrix_type > & matrix,
uint04 offset = 0 )
inline

Sets vertices with a transformation matrix applied to each value.

Parameters
[in]propertyThe vertex property.
[in]verticesThe buffer of values.
[in]matrixThe transformation matrix to apply.
[in]offsetThe starting vertex index offset.

Definition at line 1694 of file Geometry.h.

References column(), vertexCount(), vertexOffset(), and vertices().

◆ setVertices() [2/3]

template<class t_type>
void Geometry::setVertices ( VertexProperty property,
const Buffer< t_type > & vertices,
uint04 offset = 0 )
inline

Sets a standard vertex property for multiple vertices from a buffer.

Parameters
[in]propertyThe vertex property.
[in]verticesThe buffer of values.
[in]offsetThe starting vertex index offset.

Definition at line 1677 of file Geometry.h.

References column(), vertexCount(), vertexOffset(), and vertices().

◆ setVertices() [3/3]

template<class t_type>
void Geometry::setVertices ( VertexProperty property,
const t_type * vertices,
uint04 size,
uint04 offset = 0 )
inline

Sets vertices from a raw pointer array.

Parameters
[in]propertyThe vertex property.
[in]verticesPointer to the vertex data array.
[in]sizeThe number of vertices to set.
[in]offsetThe starting vertex index offset.

Definition at line 1710 of file Geometry.h.

References column(), vertexCount(), vertexOffset(), and vertices().

◆ setVerticesFlag() [1/2]

void Geometry::setVerticesFlag ( const Buffer< bool > & selection_mask,
VertexFlags flag,
bool value )

Sets a flag on vertices indicated by a boolean mask.

Parameters
[in]selection_maskBoolean mask selecting which vertices to modify.
[in]flagThe flag to set.
[in]valueThe flag value.

◆ setVerticesFlag() [2/2]

void Geometry::setVerticesFlag ( const Buffer< uint04 > & vertices,
VertexFlags flag,
bool value )

Sets a flag on a list of vertices by index.

Parameters
[in]verticesThe vertex indices to modify.
[in]flagThe flag to set.
[in]valueThe flag value.

References vertices().

◆ setVerticesFlagAll() [1/2]

void Geometry::setVerticesFlagAll ( uint01 on_flags,
uint01 off_flags )

Sets on/off flag masks for all vertices.

Parameters
[in]on_flagsFlags to turn on.
[in]off_flagsFlags to turn off.

◆ setVerticesFlagAll() [2/2]

void Geometry::setVerticesFlagAll ( VertexFlags flag,
bool value )

Sets a flag value for all vertices in this geometry.

Parameters
[in]flagThe flag to set.
[in]valueThe flag value.

◆ setVerticesFlags() [1/2]

void Geometry::setVerticesFlags ( const Buffer< bool > & selection_mask,
BitFlag on_flags,
BitFlag off_flags )

Sets multiple flags on vertices using a boolean mask with on/off flag pairs.

Parameters
[in]selection_maskBoolean mask selecting which vertices to modify.
[in]on_flagsFlags to turn on for selected vertices.
[in]off_flagsFlags to turn off for selected vertices.

◆ setVerticesFlags() [2/2]

void Geometry::setVerticesFlags ( const Buffer< bool > & selection_mask,
BitFlag selected_on_flags,
BitFlag selected_off_flags,
BitFlag unselected_on_flags,
BitFlag unselected_off_flags,
uint04 bitmask_offset = 0 )

Sets different flag combinations for selected and unselected vertices.

Parameters
[in]selection_maskBoolean mask selecting vertices.
[in]selected_on_flagsFlags to turn on for selected vertices.
[in]selected_off_flagsFlags to turn off for selected vertices.
[in]unselected_on_flagsFlags to turn on for unselected vertices.
[in]unselected_off_flagsFlags to turn off for unselected vertices.
[in]bitmask_offsetOptional offset into the bitmask.

◆ setWindingMode()

void Geometry::setWindingMode ( WindingMode mode)

Sets the winding mode for face orientation.

Parameters
[in]modeThe winding mode to apply.

References mode().

◆ solidVertexCount()

uint04 Geometry::solidVertexCount ( ) const
inline

Returns the number of solid vertices.

Returns
The solid vertex count.

Definition at line 1301 of file Geometry.h.

References DesignInfo::m_base, and DesignInfo::m_design_index.

◆ solidVertexOffset()

uint04 Geometry::solidVertexOffset ( ) const
inline

Returns the offset of solid (thickness-expanded) vertices in the vertex table.

Returns
The solid vertex offset.

Definition at line 1287 of file Geometry.h.

References DesignInfo::m_base, and DesignInfo::m_design_index.

Referenced by Extruder::ExtrudePolylineAlongGeo().

◆ solidVertexReservedCount()

uint04 Geometry::solidVertexReservedCount ( ) const
inline

Returns the reserved capacity for solid vertices.

Returns
The solid vertex reserved count.

Definition at line 1294 of file Geometry.h.

References DesignInfo::m_base, and DesignInfo::m_design_index.

Referenced by Extruder::ExtrudePolylineAlongGeo().

◆ sortVertices()

void Geometry::sortVertices ( Buffer< uint04 > new_order)

Reorders vertices according to the given index mapping.

Parameters
[in]new_orderA buffer mapping old vertex indices to new positions.

◆ split()

void Geometry::split ( Geometry & other_geo,
const Buffer< bool > & vertex_mask )

Splits this geometry into two based on a vertex mask.

Parameters
[in]other_geoThe geometry to receive the split-off vertices.
[in]vertex_maskBoolean mask indicating which vertices to move.

◆ surfaceNormal()

Ray< 3, fltp08 > Geometry::surfaceNormal ( ) const

Calculates and returns the surface normal ray for this geometry.

Returns
The 3D surface normal ray.

◆ thicknessMode()

ThicknessMode Geometry::thicknessMode ( ) const

Retrieves the current thickness mode.

Returns
The active ThicknessMode.

Referenced by Extruder::ExtrudeRealThickness().

◆ tree()

DynamicPointer< RTree< 3, fltp04 > > Geometry::tree ( PrimitiveProperty primitive_property,
VertexProperty vertex_property = VertexProperty::Position ) const

Retrieves the spatial R-tree for the given properties.

Parameters
[in]primitive_propertyThe primitive property.
[in]vertex_propertyThe vertex property. Defaults to Position.
Returns
A DynamicPointer to the R-tree.

References Position.

Referenced by setTree().

◆ triangle()

template<uint01 t_dims, class t_type>
Triangle< t_dims, t_type > Geometry::triangle ( PrimitiveProperty primitive_property,
VertexProperty vertex_property,
uint04 tri_index ) const
inline

Retrieves a triangle from the geometry using primitive and vertex properties.

Parameters
[in]primitive_propertyThe primitive property containing triangle indices.
[in]vertex_propertyThe vertex property containing position data.
[in]tri_indexThe triangle primitive index.
Returns
The constructed triangle.

Definition at line 1751 of file Geometry.h.

References IsInvalid(), primitive(), and vertex().

◆ triangles() [1/2]

template<uint01 t_dims, class t_type>
Buffer< Triangle< t_dims, t_type > > Geometry::triangles ( PrimitiveProperty primitive_property,
VertexProperty vertex_property ) const
inline

Retrieves all triangles from the geometry.

Parameters
[in]primitive_propertyThe primitive property containing triangle indices.
[in]vertex_propertyThe vertex property containing position data.
Returns
A buffer of triangles.

Definition at line 1859 of file Geometry.h.

References primitiveCount(), and triangles().

Referenced by triangles(), and triangles().

◆ triangles() [2/2]

template<uint01 t_dims, class t_type>
Buffer< Triangle< t_dims, t_type > > Geometry::triangles ( PrimitiveProperty primitive_property,
VertexProperty vertex_property,
uint04 start,
uint04 size ) const
inline

Retrieves a range of triangles from the geometry.

Parameters
[in]primitive_propertyThe primitive property containing triangle indices.
[in]vertex_propertyThe vertex property containing position data.
[in]startThe starting triangle index.
[in]sizeThe number of triangles to retrieve.
Returns
A buffer of triangles.

Definition at line 1871 of file Geometry.h.

References column(), e_triangle, e_triangle_fan, e_triangle_strip, TableColumn::get(), indexFanOffset(), indexOffset(), IsInvalid(), mode(), primitiveColumn(), primitiveCount(), primitiveFanColumn(), and triangles().

◆ triIndices() [1/2]

Buffer< Vector< 3, uint04 > > Geometry::triIndices ( PrimitiveProperty primitive_property) const
inline

Retrieves all triangle index triples for a primitive property.

Parameters
[in]primitive_propertyThe primitive property.
Returns
A buffer of 3-component vertex index vectors.

Definition at line 1072 of file Geometry.h.

References primitiveCount(), and triIndices().

Referenced by triIndices().

◆ triIndices() [2/2]

Buffer< Vector< 3, uint04 > > Geometry::triIndices ( PrimitiveProperty primitive_property,
uint04 start,
uint04 size ) const

Retrieves a range of triangle index triples.

Parameters
[in]primitive_propertyThe primitive property.
[in]startThe starting primitive index.
[in]sizeThe number of triangles to retrieve.
Returns
A buffer of 3-component vertex index vectors.

◆ updateGeometryTime()

void Geometry::updateGeometryTime ( Time time = Time::SystemTime())

Updates the geometry-specific timestamp.

Parameters
[in]timeThe timestamp to set. Defaults to current system time.

References Time::SystemTime().

◆ updateGeometryTransform()

void Geometry::updateGeometryTransform ( const Matrix< fltp08 > & transform,
const void * lock_ptr = nullptr )

Updates geometry after a transform change, recalculating derived data.

Parameters
[in]transformThe transformation matrix.
[in]lock_ptrOptional thread lock pointer.

◆ updateModifiedTime()

void Geometry::updateModifiedTime ( Time time = Time::SystemTime())

Updates the modified timestamp for this geometry.

Parameters
[in]timeThe timestamp to set. Defaults to current system time.

References Time::SystemTime().

Referenced by Extruder::ExtrudePolylineAlongGeo().

◆ updatePrimitiveColumn()

void Geometry::updatePrimitiveColumn ( PrimitiveProperty property,
bool remove_tree = true )

Notifies the system that a primitive column has been modified.

Parameters
[in]propertyThe modified primitive property.
[in]remove_treeWhether to remove spatial trees after update.

◆ updatePrimitiveColumns()

void Geometry::updatePrimitiveColumns ( bool remove_tree = true)

Notifies the system that all primitive columns have been modified.

Parameters
[in]remove_treeWhether to remove spatial trees after update.

Referenced by Extruder::ExtrudePolylineAlongGeo().

◆ updateSolidVertexColumns()

void Geometry::updateSolidVertexColumns ( bool invalidate_bounds = true,
bool erase_kd_tree = true )

Notifies the system that all solid vertex columns have been modified.

Parameters
[in]invalidate_boundsWhether to invalidate the bounding box.
[in]erase_kd_treeWhether to erase spatial trees.

Referenced by Extruder::ExtrudePolylineAlongGeo().

◆ updateVertexColumn() [1/6]

void Geometry::updateVertexColumn ( const StringView & property)

Notifies the system that a named custom vertex column was modified.

Parameters
[in]propertyThe property name.

◆ updateVertexColumn() [2/6]

void Geometry::updateVertexColumn ( const StringView & property,
uint04 index,
uint04 size )

Notifies the system that a range within a named custom vertex column was modified.

Parameters
[in]propertyThe property name.
[in]indexThe starting vertex index.
[in]sizeThe number of vertices modified.

References DesignObject::index().

◆ updateVertexColumn() [3/6]

void Geometry::updateVertexColumn ( const uint04 & property)

Notifies the system that a custom vertex column was modified by index.

Parameters
[in]propertyThe column index.

◆ updateVertexColumn() [4/6]

void Geometry::updateVertexColumn ( const uint04 & property,
uint04 index,
uint04 size )

Notifies the system that a range within a custom vertex column was modified by index.

Parameters
[in]propertyThe column index.
[in]indexThe starting vertex index.
[in]sizeThe number of vertices modified.

References DesignObject::index().

◆ updateVertexColumn() [5/6]

void Geometry::updateVertexColumn ( VertexProperty property)

Notifies the system that a standard vertex column has been modified.

Parameters
[in]propertyThe modified vertex property.

◆ updateVertexColumn() [6/6]

void Geometry::updateVertexColumn ( VertexProperty property,
uint04 index,
uint04 size,
bool invalidate_bounds = true,
bool erase_kd_tree = true )

Notifies the system that a range within a standard vertex column was modified.

Parameters
[in]propertyThe modified vertex property.
[in]indexThe starting vertex index of the modification.
[in]sizeThe number of vertices modified.
[in]invalidate_boundsWhether to invalidate the bounding box.
[in]erase_kd_treeWhether to erase spatial trees.

References DesignObject::index().

◆ updateVertexColumns() [1/2]

void Geometry::updateVertexColumns ( bool invalidate_bounds = true,
bool erase_kd_tree = true )

Notifies the system that all vertex columns have been modified.

Parameters
[in]invalidate_boundsWhether to invalidate the bounding box.
[in]erase_kd_treeWhether to erase spatial trees.

Referenced by Extruder::ExtrudePolylineAlongGeo().

◆ updateVertexColumns() [2/2]

void Geometry::updateVertexColumns ( uint04 index,
uint04 size,
bool invalidate_bounds = true,
bool erase_kd_tree = true )

Notifies the system that a range across all vertex columns was modified.

Parameters
[in]indexThe starting vertex index.
[in]sizeThe number of vertices modified.
[in]invalidate_boundsWhether to invalidate the bounding box.
[in]erase_kd_treeWhether to erase spatial trees.

References DesignObject::index().

◆ validate()

bool Geometry::validate ( ) const

Validates the internal consistency of the geometry data.

Returns
True if the geometry data is valid.

◆ vertex()

template<class t_type>
decltype(auto) Geometry::vertex ( VertexProperty property,
uint04 index ) const
inline

Retrieves a single vertex value for a standard property.

Parameters
[in]propertyThe vertex property.
[in]indexThe vertex index.
Returns
The vertex value.

Definition at line 1725 of file Geometry.h.

References column(), DesignObject::index(), vertexCount(), and vertexOffset().

Referenced by lineSegment(), setVertexFlag(), triangle(), and vertexSelected().

◆ vertexCount()

◆ vertexFlag() [1/2]

BitFlag Geometry::vertexFlag ( uint04 vertex_index) const

Retrieves all flags for a vertex as a BitFlag.

Parameters
[in]vertex_indexThe vertex index.
Returns
The combined BitFlag value.

◆ vertexFlag() [2/2]

bool Geometry::vertexFlag ( uint04 vertex_index,
VertexFlags flag ) const

Retrieves whether a specific flag is set on a vertex.

Parameters
[in]vertex_indexThe vertex index.
[in]flagThe flag to query.
Returns
True if the flag is set.

◆ vertexFlagColumn() [1/2]

TableVectorType< 1, uint01 > * Geometry::vertexFlagColumn ( )
inline

Returns a mutable pointer to the vertex flag column, or nullptr if none exists.

Returns
Mutable pointer to the flag column, or nullptr.

Definition at line 2230 of file Geometry.h.

References BitFlag, column(), and DesignInfo::m_base.

◆ vertexFlagColumn() [2/2]

const TableVectorType< 1, uint01 > * Geometry::vertexFlagColumn ( ) const
inline

Returns a const pointer to the vertex flag column, or nullptr if none exists.

Returns
Const pointer to the flag column, or nullptr.

Definition at line 2220 of file Geometry.h.

References BitFlag, column(), and DesignInfo::m_base.

◆ vertexOffset()

◆ vertexProperty() [1/4]

template<class t_type>
t_type Geometry::vertexProperty ( const StringView & property,
uint04 vertex_index ) const
inline

Retrieves a custom vertex property value by name.

Parameters
[in]propertyThe property name.
[in]vertex_indexThe vertex index.
Returns
The property value.

Definition at line 1374 of file Geometry.h.

References propertyColumn(), and vertexOffset().

◆ vertexProperty() [2/4]

template<class t_type>
t_type Geometry::vertexProperty ( const StringView & property,
uint04 vertex_index,
uint04 sub_index ) const
inline

Retrieves a sub-component of a custom vertex property by name.

Parameters
[in]propertyThe property name.
[in]vertex_indexThe vertex index.
[in]sub_indexThe sub-component index.
Returns
The sub-component value.

Definition at line 1396 of file Geometry.h.

References propertyColumn(), and vertexOffset().

◆ vertexProperty() [3/4]

template<class t_type>
t_type Geometry::vertexProperty ( uint04 property_index,
uint04 vertex_index ) const
inline

Retrieves a custom vertex property value by column index.

Parameters
[in]property_indexThe property column index.
[in]vertex_indexThe vertex index.
Returns
The property value.

Definition at line 1364 of file Geometry.h.

References propertyColumn(), and vertexOffset().

◆ vertexProperty() [4/4]

template<class t_type>
t_type Geometry::vertexProperty ( uint04 property_index,
uint04 vertex_index,
uint04 sub_index ) const
inline

Retrieves a sub-component of a custom vertex property by column index.

Parameters
[in]property_indexThe property column index.
[in]vertex_indexThe vertex index.
[in]sub_indexThe sub-component index within the property.
Returns
The sub-component value.

Definition at line 1385 of file Geometry.h.

References propertyColumn(), and vertexOffset().

◆ vertexPropertyCount()

uint04 Geometry::vertexPropertyCount ( ) const

Returns the number of vertex property columns.

Returns
The property count.

◆ vertexPropertyIndex()

uint04 Geometry::vertexPropertyIndex ( const StringView & property_name) const

Finds the column index of a named vertex property.

Parameters
[in]property_nameThe property name to look up.
Returns
The column index.

◆ vertexPropertyName()

const String & Geometry::vertexPropertyName ( uint04 property_index) const
inline

Returns the name of a vertex property by its column index.

Parameters
[in]property_indexThe column index.
Returns
A const reference to the property name string.

Definition at line 1312 of file Geometry.h.

References DesignInfo::m_base.

◆ vertexPropertyType()

TypeInfo Geometry::vertexPropertyType ( uint04 property_index) const
inline

Returns the type information for a vertex property column.

Parameters
[in]property_indexThe column index.
Returns
The TypeInfo descriptor.

Definition at line 1339 of file Geometry.h.

References propertyColumn().

◆ vertexReservedCount()

uint04 Geometry::vertexReservedCount ( ) const
inline

Returns the total reserved (allocated) vertex capacity.

Returns
The reserved vertex count.

Definition at line 1266 of file Geometry.h.

References DesignInfo::m_base, and DesignInfo::m_design_index.

◆ vertexSelected()

bool Geometry::vertexSelected ( uint04 vertex) const

Checks whether a vertex is selected.

Parameters
[in]vertexThe vertex index.
Returns
True if the vertex is selected.

References vertex().

◆ vertices() [1/4]

template<class t_type>
Buffer< t_type > Geometry::vertices ( const StringView & property) const
inline

Retrieves all vertex values for a named custom property.

Parameters
[in]propertyThe property name.
Returns
A buffer of all vertex values.

Definition at line 1814 of file Geometry.h.

References vertexCount(), and vertices().

◆ vertices() [2/4]

template<class t_type>
Buffer< t_type > Geometry::vertices ( const StringView & property,
uint04 start,
uint04 size ) const
inline

Retrieves a range of vertex values for a named custom property.

Parameters
[in]propertyThe property name.
[in]startThe starting vertex index.
[in]sizeThe number of vertices to retrieve.
Returns
A buffer of vertex values.

Definition at line 1824 of file Geometry.h.

References propertyColumn(), vertexCount(), and vertexOffset().

◆ vertices() [3/4]

template<class t_type>
Buffer< t_type > Geometry::vertices ( VertexProperty property) const
inline

Retrieves all vertex values for a standard property.

Parameters
[in]propertyThe vertex property.
Returns
A buffer of all vertex values.

Definition at line 1792 of file Geometry.h.

References vertexCount(), and vertices().

Referenced by getTreeSortedVertices(), removePrimitive(), removeVertices(), setVertexProperties(), setVertices(), setVertices(), setVertices(), setVerticesFlag(), vertices(), and vertices().

◆ vertices() [4/4]

template<class t_type>
Buffer< t_type > Geometry::vertices ( VertexProperty property,
uint04 start,
uint04 size ) const
inline

Retrieves a range of vertex values for a standard property.

Parameters
[in]propertyThe vertex property.
[in]startThe starting vertex index.
[in]sizeThe number of vertices to retrieve.
Returns
A buffer of vertex values.

Definition at line 1803 of file Geometry.h.

References column(), vertexCount(), and vertexOffset().


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