Table of Contents

Class MillingForceLuggage

Namespace
Hi.MillingForces
Assembly
HiMech.dll

Represents a container for milling force data and calculations.

public class MillingForceLuggage
Inheritance
MillingForceLuggage
Inherited Members
Extension Methods

Constructors

MillingForceLuggage()

Initializes a new instance of the MillingForceLuggage class.

public MillingForceLuggage()

MillingForceLuggage(BinaryReader)

Initializes a new instance of the MillingForceLuggage class from a binary reader.

public MillingForceLuggage(BinaryReader reader)

Parameters

reader BinaryReader

The binary reader containing the milling force data.

Properties

CuttingForcesToToolOnToolRunningCoordinate_N

Cutting forces on tool running coordinate. The forced item is tool.

public List<vec3d_t> CuttingForcesToToolOnToolRunningCoordinate_N { get; }

Property Value

List<vec3d_t>

MomentsToToolAboutToolTipOnToolRunningCoordinate_Nm

Moments on tool running coordinate in N*m. The fulcrum is at the coordinate zero. The moment is taken by tool. The size is RotationDivisionNum.

public List<vec3d_t> MomentsToToolAboutToolTipOnToolRunningCoordinate_Nm { get; }

Property Value

List<vec3d_t>

PloughForcesOnTr

plough force on tool running coordinate. The force is taken by tool. In sequence of time.

public List<vec3d_t> PloughForcesOnTr { get; }

Property Value

List<vec3d_t>

RotationDivisionNum

Gets the number of divisions for one complete rotation.

public int RotationDivisionNum { get; }

Property Value

int

ShearForcesOnTr

shear forces on tool running coordinate. The force is taken by tool. In sequence of time.

public List<vec3d_t> ShearForcesOnTr { get; }

Property Value

List<vec3d_t>

StepIndex

Step index. For database saving.

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int StepIndex { get; set; }

Property Value

int

Methods

GetCuttingForcesToToolOnWorkpieceCoodinate_N(mat4d_t)

Cutting forces on workpiece coordinate. The forced item is tool.

public List<vec3d_t> GetCuttingForcesToToolOnWorkpieceCoodinate_N(mat4d_t CdnTransformFromToolRunningZeroToWorkpieceGeom)

Parameters

CdnTransformFromToolRunningZeroToWorkpieceGeom mat4d_t

Returns

List<vec3d_t>

GetCuttingForcesToWorkpieceOnProgramCoordinate_N(mat4d_t)

Cutting forces on workpiece coordinate. The forced item is workpiece.

public List<vec3d_t> GetCuttingForcesToWorkpieceOnProgramCoordinate_N(mat4d_t cdnTransformFromToolRunningToProgram)

Parameters

cdnTransformFromToolRunningToProgram mat4d_t

Returns

List<vec3d_t>

GetCuttingForcesToWorkpieceOnProgramCoordinate_N(MachineMotionStep)

Gets the cutting forces to workpiece on program coordinate in Newtons.

public List<vec3d_t> GetCuttingForcesToWorkpieceOnProgramCoordinate_N(MachineMotionStep machineStep)

Parameters

machineStep MachineMotionStep

The machining step to get forces for

Returns

List<vec3d_t>

List of force vectors in Newtons

GetForceToToolOnToolRunningCoordinateCsvString(MachineMotionStep)

Gets the force to tool on tool running coordinate as a CSV string (invariant culture, see GetForceToWorkpieceOnProgramCoordinateCsvString(MachineMotionStep)).

public string GetForceToToolOnToolRunningCoordinateCsvString(MachineMotionStep machineStep)

Parameters

machineStep MachineMotionStep

The machining step to get forces for.

Returns

string

A CSV string representation of the forces.

GetForceToWorkpieceOnProgramCoordinateCsvString(MachineMotionStep)

Gets the force to workpiece on program coordinate as a CSV string. The numbers are written in the invariant culture ('.' decimal), as every CSV this library writes: under the thread culture a comma-decimal host wrote each row with twice the title's fields.

public string GetForceToWorkpieceOnProgramCoordinateCsvString(MachineMotionStep machineStep)

Parameters

machineStep MachineMotionStep

The machining step to get forces for.

Returns

string

A CSV string representation of the forces.

GetMomentsAboutAnchorOnToolRunningCoordinate_Nm(IMachiningTool, MillingToolPhysicsPack)

Gets the moments about anchor on tool running coordinate in Newton-meters.

public List<vec3d_t> GetMomentsAboutAnchorOnToolRunningCoordinate_Nm(IMachiningTool millingTool, MillingToolPhysicsPack physicsPack = null)

Parameters

millingTool IMachiningTool

The machining tool to calculate moments for.

physicsPack MillingToolPhysicsPack

The frozen per-session physics pack of millingTool; null computes the observation height from the tool on use.

Returns

List<vec3d_t>

A list of moment vectors.

GetMomentsAboutToolTipOnSpindleRotationCoordinate_Nm()

Gets the moments about tool tip on spindle rotation coordinate in Newton-meters.

public List<vec3d_t> GetMomentsAboutToolTipOnSpindleRotationCoordinate_Nm()

Returns

List<vec3d_t>

A list of moment vectors.

GetMomentsOnToolRunningCoordinate_Nm(vec3d_t)

Get moments to tool.

public List<vec3d_t> GetMomentsOnToolRunningCoordinate_Nm(vec3d_t observationPosFromToolTip)

Parameters

observationPosFromToolTip vec3d_t

The observation point measured from the tool tip on the tool running coordinate (a vector; never null).

Returns

List<vec3d_t>

One moment vector per rotation division about that point, in Newton-meters.

GetMomentsOnToolRunningCoordinate_Nm(double)

Gets the moments on the tool running coordinate system at a specified height from the tool tip.

public List<vec3d_t> GetMomentsOnToolRunningCoordinate_Nm(double observationHeightFromToolTip)

Parameters

observationHeightFromToolTip double

The height from the tool tip where moments are calculated.

Returns

List<vec3d_t>

A list of moment vectors in the tool running coordinate system.

GetMomentsToToolAboutObservationPointOnSpindleRotationCoordinate_Nm(IMachiningTool, MillingToolPhysicsPack)

Get Moments To Tool About Observation Point On Spindle Rotation Coordinate. Unit is Newton-meter.

public List<vec3d_t> GetMomentsToToolAboutObservationPointOnSpindleRotationCoordinate_Nm(IMachiningTool millingTool, MillingToolPhysicsPack physicsPack = null)

Parameters

millingTool IMachiningTool

The machining tool to calculate moments for.

physicsPack MillingToolPhysicsPack

The frozen per-session physics pack of millingTool; null computes the observation height from the tool on use.

Returns

List<vec3d_t>

GetMomentsToToolAboutObservationPointOnSpindleRotationCoordinate_Nm(double)

Get Moments To Tool About Observation Point On Spindle Rotation Coordinate, with the observation height supplied directly — for a caller that resolved the height once and reads many luggage instances. Unit is Newton-meter.

public List<vec3d_t> GetMomentsToToolAboutObservationPointOnSpindleRotationCoordinate_Nm(double observationHeightFromToolTip)

Parameters

observationHeightFromToolTip double

The observation height from the tool tip in millimeters.

Returns

List<vec3d_t>

GetMomentsToToolOnSpindleRotationZeroCsvString(IMachiningTool, MachineMotionStep, MillingForceBrief)

Gets the moments to tool on spindle rotation zero as a CSV string (invariant culture, see GetForceToWorkpieceOnProgramCoordinateCsvString(MachineMotionStep)).

public string GetMomentsToToolOnSpindleRotationZeroCsvString(IMachiningTool machiningTool, MachineMotionStep machineStep, MillingForceBrief brief)

Parameters

machiningTool IMachiningTool

The machining tool.

machineStep MachineMotionStep

The machining step to get moments for.

brief MillingForceBrief

The rake face physics brief.

Returns

string

A CSV string representation of the moments.

GetStressRatio(IMachiningTool)

Gets the stress ratio for the given machining tool with no height known for the step's cutting force: every beam section outside the tip zone (a section standing closer to the tip than its own radius) counts, each bent by the whole of the cutting forces — the reading of a section standing above the engaged edge. A caller that knows the height the force acts at passes it to GetStressRatio(IMachiningTool, double), as the brief does (StressRatio). The sections the ratio is read at come with GetStressReport(IMachiningTool).

public double GetStressRatio(IMachiningTool millingTool)

Parameters

millingTool IMachiningTool

The machining tool to calculate the stress ratio for.

Returns

double

The stress ratio — the largest, over the beam sections outside the tip zone, of the section's principal stress at its outer fibre divided by the beam material's StressLimit_MPa (the flute material on a solid-end cutter, the shank material an insert-end cutter's inserts sit on, see BeamMaterial) — or NaN when it cannot be evaluated: non-milling cutter, missing beam material, a beam material without a known strength, or no beam section outside the tip zone. Never a fake-safe 0.

GetStressRatio(IMachiningTool, double)

Gets the stress ratio for the given machining tool for a step whose cutting force is placed cuttingForceHeightFromToolTip_mm above the tool tip. The cutter is a cantilever gripped at the holder and free at the tip: a section is bent by the forces between it and the tip alone, each by its lever arm to the section, while the forces above it reach the holder through the beam above it and do not bend it. The luggage carries the forces summed over the engaged layers, so a section standing inside the engaged edge cannot be given its own share: the sections below the height the step's force is placed at — the centroid of the engaged edge, CuttingForceHeightFromToolTip_mm, a stand-in for where the force acts and the height the deflection loads the beam at — are left out, and a section at or above it takes the moment of the whole force about itself: exact for a section above the engaged edge, and for one inside it the whole force's own moment on the same dividing height as the deflection, which puts no moment below that height either. A NaN height (no engagement recorded) leaves no section out. The sections are the inner beam's contour points (InnerBeamProfile, the flute's bending-equivalent core) and the exposed upper beam's: each is a solid circle of its own radius for I and J, and the stress is read at the section's outer fibre — on the inner beam the flute profile's radius at that height (the land of a cylindrical flute, the sphere of a ball nose), D/d_core times a solid rod of the core's diameter; on the neck, the taper and the shank their own radius.

public double GetStressRatio(IMachiningTool millingTool, double cuttingForceHeightFromToolTip_mm)

Parameters

millingTool IMachiningTool

The machining tool to calculate the stress ratio for.

cuttingForceHeightFromToolTip_mm double

The height above the tool tip the step's cutting force is placed at (for a played step, the engaged edge's centroid), mm; NaN when not known.

Returns

double

The stress ratio — the largest, over the beam sections outside the tip zone (a section standing closer to the tip than its own radius) and not below the force height, of the section's principal stress at its outer fibre divided by the beam material's StressLimit_MPa (the flute material on a solid-end cutter, the shank material an insert-end cutter's inserts sit on, see BeamMaterial) — or NaN when it cannot be evaluated: non-milling cutter, missing beam material, a beam material without a known strength, or no beam section outside the tip zone at or above the force height. Never a fake-safe 0.

GetStressReport(IMachiningTool)

Gets the stress ratio of millingTool with the two sections that place it on the cutter, with no height known for the step's cutting force (every section outside the tip zone counts, as GetStressRatio(IMachiningTool)): the critical section the ratio is read at and the onset section where the ratio first goes above 1 from the tip up, each as its height above the tip and the part of the beam it is on. See GetStressReport(IMachiningTool, double).

public StressReport GetStressReport(IMachiningTool millingTool)

Parameters

millingTool IMachiningTool

The machining tool to calculate the stress ratio for.

Returns

StressReport

The report; NotEvaluated when the ratio cannot be evaluated.

GetStressReport(IMachiningTool, double)

Gets the stress ratio of millingTool for a step whose cutting force is placed cuttingForceHeightFromToolTip_mm above the tool tip (the ratio and the sections it is read over are those of GetStressRatio(IMachiningTool, double)), with the two sections that place it on the cutter: the critical section, the beam section whose ratio is the largest and at which the ratio is read, and the onset section, the lowest section — the one nearest the tip — whose ratio is above 1, where the overload begins when the cutter is read from the tip up. Each is given as its height above the tool tip and the part of the beam it is on (CutterBeamZone): a section of the flute core is the flute's, the flute top among them; a section of the exposed upper beam is the shank's, a taper where the segment it ends has ends of two radii, a cylinder where that segment keeps one radius — a section that ends no segment (the lowest of the upper beam, or one above a radial step, which is no segment) takes the one it starts, and a section with no segment at all is a cylinder. The flute top is thus the flute's: the upper beam's own lowest section at the same height is a section of its own, at the shank's radius. Among sections of one ratio the one met first, the lower, is the critical one; among onset sections of one height the one met first.

public StressReport GetStressReport(IMachiningTool millingTool, double cuttingForceHeightFromToolTip_mm)

Parameters

millingTool IMachiningTool

The machining tool to calculate the stress ratio for.

cuttingForceHeightFromToolTip_mm double

The height above the tool tip the step's cutting force is placed at (for a played step, the engaged edge's centroid), mm; NaN when not known.

Returns

StressReport

The report; NotEvaluated when the ratio cannot be evaluated (the cases of GetStressRatio(IMachiningTool, double)), its onset height NaN and onset zone None when no section is above 1.

GetTipDeflectionOnToolRunningCoordinateList_mm(IMachiningTool, MillingToolPhysicsPack)

Gets the tool tip deflection on the tool running coordinate system for a cutting force placed at the tool tip — the overload taking the force height is what the step physics reads.

public List<vec3d_t> GetTipDeflectionOnToolRunningCoordinateList_mm(IMachiningTool millingTool, MillingToolPhysicsPack physicsPack = null)

Parameters

millingTool IMachiningTool

The milling tool for which to calculate deflections.

physicsPack MillingToolPhysicsPack

The frozen per-session physics pack of millingTool; null computes the deflection parameters from the tool on use.

Returns

List<vec3d_t>

A list of deflection vectors in millimeters in the tool running coordinate system.

GetTipDeflectionOnToolRunningCoordinateList_mm(IMachiningTool, MillingToolPhysicsPack, double)

Gets the tool tip deflection on the tool running coordinate system, one vector per rotation division: the cutting force times the cutter beam's compliance for a load at cuttingForceHeightFromToolTip_mm above the tip (CuttingForceHeightFromToolTip_mm; NaN is a load at the tip).

public List<vec3d_t> GetTipDeflectionOnToolRunningCoordinateList_mm(IMachiningTool millingTool, MillingToolPhysicsPack physicsPack, double cuttingForceHeightFromToolTip_mm)

Parameters

millingTool IMachiningTool

The milling tool for which to calculate deflections.

physicsPack MillingToolPhysicsPack

The frozen per-session physics pack of millingTool; null computes the deflection parameters from the tool on use.

cuttingForceHeightFromToolTip_mm double

The height above the tip the force is placed at, mm.

Returns

List<vec3d_t>

A list of deflection vectors in millimeters in the tool running coordinate system.

NoCut(int)

Builds a luggage representing a physically-computed “no cut” state (paired with NoCut(int)): the three per-rotation force lists are each filled with Zero of length rotationDivisionNum. StepIndex is left at default; the caller assigns it.

public static MillingForceLuggage NoCut(int rotationDivisionNum)

Parameters

rotationDivisionNum int

Length of each per-rotation list.

Returns

MillingForceLuggage

ToCuttingForcesString()

Converts the cutting forces to a string representation.

public string ToCuttingForcesString()

Returns

string

A string representation of the cutting forces.

WriteBin(BinaryWriter)

public void WriteBin(BinaryWriter writer)

Parameters

writer BinaryWriter