Table of Contents

Namespace Hi.Mech.Topo

Classes

Anchor

A coordinate system using in kinematic chain.

An anchor is a view (world, id) over a node of the native topology registry (core.dll, Hi.Mech.Topo.NativeTopo): its GUID, parent and branch maps live on the native node and every walk over the branch graph runs there under the registry's lock; the name is cached on the view and pushed to the node on set, as the view is the node's only writer. The Hi.Mech.Topo.TopoWorld keeps the connected component allocated while any view into it is reachable, and the same native id always resolves to the same view object, so an anchor remains a sound dictionary key and ReferenceEquals comparand.

AnchorFuncSource

Provides an anchor through a function delegate.

AnchoredBoxable

Represents an object that is both anchored to a root point and can expand to a 3D box.

AnchoredDisplayee

Represents a displayable object that is anchored to a specific point in a topology.

Asmb

Collection of Anchor and Asmb.

Membership is a tree: every anchor and every assembly belongs to at most one parent, recorded on Parent and Parent. Change membership only through Add(Anchor), Add(Asmb), Remove(Anchor) and Remove(Asmb); the child collections are snapshots.

A member is addressed by a path of names relative to the assembly asked, joined by PathSeparator, one segment per assembly on the way down: "MillingTool.MillingCutter.CutterTip" asked of the equipment names the same anchor as "MillingCutter.CutterTip" asked of the tool. Any segment may give the member's GUID in braces instead, "MillingTool.{12345678}", which is how GetPath(Anchor) spells a member whose name cannot stand on its own. See GetAnchorByPath(string).

An assembly is a view (world, id) over a node of the native topology registry (core.dll, Hi.Mech.Topo.NativeTopo): name, GUID, parent, children, walks, paths and matrix maps are all read from and written to the native node, under the registry's own lock. The Hi.Mech.Topo.TopoWorld keeps the whole connected component allocated while any view into it is reachable, and the same native id always resolves to the same view object, so reference equality and dictionary keys behave as they always did.

AsmbDraw

Render all Anchors of the Asmb in form of CoordinateDrawing.

Branch

The linkage between two Anchor objects.

A branch is a view (world, id) over a branch node of the native topology registry (core.dll, Hi.Mech.Topo.NativeTopo). Attaching creates the node, detaching frees it — the id then goes stale and the view latches IsBreak; the ends, name and GUID are cached on the view (name and GUID are pushed on set), and the transformer is a managed object bound to this branch: its state is the write-side truth, every mutation of it is pushed to the native node as a whole, and the native walks read the native copy. The same native id always resolves to the same view, and so to the same transformer object.

DirectionBranchEntry

A data pack contains Branch and a boolean isForward.

DirectionBranchPackUtil

Utility of topology: the matrix of a branch chain (GetBranchChain(IGetAnchor, IGetAnchor)), the one the kinematic queries and the XYZABC solvers share.

DynamicFreeform

Dynamic Freeform transformer.

DynamicRotation

Dynamic rotate transformer.

DynamicTranslation

Dynamic translate transformer

GeneralTransform

Represents a general transformation that combines scaling, rotation, and translation.

NoTransform

Static Identity Transformer.

StackTransformer

Represents a transformer that maintains a stack of transformations.

StaticFreeform

Static Freeform transformer.

StaticRotation

Static Rotation.

StaticTranslation

Static Translate.

TopoDisplayee

Implements a displayable topological element that manages a collection of anchored displayees within an assembly.

TopoDisplayeeUtil

Provides utility methods for displaying and manipulating topological displayees.

TopoReflection

Clone Asmb and provide map between source topology and cloned topology. The clone is one native clone_subtree under one registry lock, so it is one consistent snapshot of the source: every assembly and anchor inside the root (names copied, fresh GUIDs), then every branch whose both ends were cloned, each with a copy of its transformer. The twin lives in a Hi.Mech.Topo.TopoWorld of its own with the root twin as its root assembly.

TopoUtil

Utility of handling Anchor.

TransformerUtil

Utility for ITransformer.

Interfaces

IAnchoredDisplayee

Interface for objects that can be displayed and are anchored to a root point in a topology.

IDynamicRegular

Dynamic Regular Transformer

IDynamicRotation

Topology joint that applies a single-axis rotation about Pivot by Angle_rad.

IDynamicTransformer

Dynamic Transformer.

IGetAnchor

Interface to get the key Anchor.

IGetAnchoredDisplayeeList

Interface for getting a list of anchored displayable objects.

IGetAsmb

Interface of Getting a key Asmb.

IGetFletchMount

Interface of GetFletchMount().

IGetInverseTransformer

Interface for objects that can provide their inverse transformer.

IGetTopoIndex

interface of IGetAnchor or IGetAsmb.

IStaticTransformer

Static Transformer

ITopo

Defines an interface for displaying topological elements that combines assembly, anchoring, and display capabilities.

ITopoDisplayee

Represents a topology object that can be displayed and has an anchor.

ITransformer

Interface of single transform matrix manipulation.

ITransformerProperty

Interface for objects that have a transformer property.