Table of Contents

Assembly Anchors

How the parts of a machining scene are held together. Assembly in HiNC is not a placement step but a statement of coincidence: two named anchors are declared equal, and everything they belong to moves so that they are. The machine tool, the fixture and the workpiece each own a free topology and name which of their own anchors play their roles; the tool's mounts are fixed anchors. The equipment joins the roles of neighbouring parts, and those joints are the mounts below.

Ordered from what an anchor is, to the roles each part names, to the two joints built out of them.

What an Anchor Is

Anchors are used for assembly purposes. When anchors between geometries coincide, assembly is completed.

Strictly speaking, an Anchor is not a point, but a coordinate system. For two coordinate systems to be equal, their origins must coincide and their rotation directions must be the same.

Note

Anchor Assembly Example

As shown in the figure below, there are two components, each with two anchors, {AnchorA,AnchorB} and {AnchorC,AnchorD} respectively. The two components are assembled by making AnchorB and AnchorC coincide.

anc-contact

Roles: Which Anchor Plays Which Part

A part's topology is free — any anchors, branches and transformers — so the part itself says which of its elements the equipment may join to. A role is a settable property that accepts any element of the part's own assembly, or null to unbind; an element outside the assembly is refused. Nothing else is checked on assignment: a part may live with a role unbound, and whether it is complete is judged where it matters — the equipment attaches only the bound roles, and a run stops at its start naming a missing one.

Part Roles Kind
Machine tool (GeneralXyzabcMachineTool) TableMount, ToolMount anchors
AxisX … AxisC branches; X, Y, Z carry a DynamicTranslation, A, B, C a DynamicRotation
Spindle branch; a DynamicRotation about the tool mount's −Z through its origin — not a machine coordinate; a file that records no spindle finds it by topology, the branch arriving where the tool mount hangs from
Fixture (Fixture) TableMount, WorkpieceMount, GeomAnchor anchors
Workpiece (Workpiece) FixtureMount, ProgramZeroAnchor, GeomAnchor anchors

The two GeomAnchor roles are not joints: the fixture's is the anchor its solid hangs on and the anchor collision is checked at, and the workpiece's is the frame its stock and target geometry are given in. ProgramZeroAnchor is the frame the NC program is written in. A machine built from chain code binds its mounts by name — the end anchors w and t — as described in Machine Chain Code.

The fixture and the workpiece each have a default shape that binds all of their roles (CreateDefault(API), CreateDefault(API)): the fixture's root is its GeomAnchor, carrying an empty solid, with one identity branch to TableMount and one to WorkpieceMount; the workpiece's root is its FixtureMount, and from its GeomAnchor one zero translation branch leads to FixtureMount and one to ProgramZeroAnchor. Each default branch is named after the anchor it arrives at. A file saved without an embedded topology loads onto this shape.

Worktable Anchor and Workpiece Anchor

The machine's TableMount is its worktable end. The fixture's TableMount meets it, and the fixture's WorkpieceMount meets the workpiece's FixtureMount — so this joint is made of two anchors each named after the other part.

Only the worktable attachment — machine TableMount to fixture TableMount — carries a transform: the equipment's TableToComp, which is where the fixture is placed on the table. The fixture-to-workpiece attachment carries none: it is plain coincidence. Where the fixture's geometry sits relative to its two mounts, and where the workpiece's geometry and program zero sit relative to its fixture mount, are the parts' own branches — read or written as Branch.Get(fixture.GeomAnchor, fixture.TableMount).Transformer and Branch.Get(workpiece.GeomAnchor, workpiece.ProgramZeroAnchor).Transformer (see Handle Transform Matrix by ITransformer).

Note

Workpiece Fixture Assembly Example

Workpiece and fixture are assembled by making the fixture's WorkpieceMount and the workpiece's FixtureMount coincide.

If no fixture is set, both fixture anchors drop out and the machine's TableMount meets the workpiece's FixtureMount directly, carrying the same TableToComp transform.

The equipment builds these attachment branches itself and rebuilds them whole whenever a part or a role changes (Rewire(API), implemented in EquipmentWiring): every attachment is detached, then each one whose two anchors are bound is attached again. An unbound role simply gets no attachment.

Spindle Anchor and Cutter Anchor

The machine's ToolMount is its tool end, and it meets the SpindleMount of the tool as a whole. Inside that tool the holder sits between spindle and cutter: the tool's SpindleMount meets the holder's own SpindleMount, and the holder's CutterMount meets the cutter's mount anchor (Mount).

If no holder is set, both holder anchors drop out and the tool's SpindleMount meets the cutter's Mount directly. The machine-side joint is the same either way.

See Also