Namespace SprutTechnology.SCPostprocessor
Classes
BrakeAxesEnumerator
Auxiliary object that implements enumerator for the AXESBRAKE's axes states list and allows to use foreach syntax.
CLDArray
CLD array to contain numerical parameters of CLData commands.
CLDAxisBrake
The object to describe the brake state for one of the machine's axis.
CLDCmdTypeExtensions
Extention to add more convenient methods for CLDCmdType enumeration.
CLDConst
The list of constant codes and helper functions for the CLData of SprutCAM.
CLDCycle
Declaration of numerical constants for EXTCYCLE command codes.
CLDMultiMotionAxis
Movement along one of the machine axis as part of a multi-axis movement command (MULTIGOTO, PHYSICGOTO, GOHOME, MULTIARC or ORIGIN)
CommonFuncs
Common functions
CountingNCWord
The special case of the NumericNCWord which automatically increments (or decrements) the value of the register with the defined step after each call of Out() or Form().
The most useful application of this kind of register is blocks or lines numbering case.
EPostprocessorException
Postprocessing error exception class.
InpArray<T>
Automatically expanding array (List) of elements. Represents a strongly typed list of objects that can be accessed by index. Provides methods to search, sort, and manipulate lists.
Log
The global object which receives logging messages that be shown to the user at the finish of postprocessing.
MultiMotionAxesEnumerator
Auxiliary object that implements enumerator for the multimotion's axes list and allows to use foreach syntax.
NamedPropIterator
Static class, implementing the search for parameters for complex names that may include points and brackets.
NCBlock
The object that contains the list of registers (NCWord) and helps make output lines for a resulting file (G-code, TTextNCFile). First, it organizes the formatted output of the register values from its list. Secondly, it filters (excludes from the output string) those registers whose values have not changed since the previous output.
NCBlockWordsEnumerator
Auxiliary object that can enumerate the registers (NCWord) of an NCBlock. Using it you can easily loop through the registers with foreach cycle. Usually you don't need to create it manually because it is created automatically when you try to use for example the "foreach" cycle with an NCBlock.
NCWord
"NCWord", or in other words "Register", is an object that helps you quickly and conveniently convert numeric or string values to a text format that the CNC machine understands. For example, you can easily convert the coordinate value x = 5.18 to the string "X0005.180". This corresponds approximately to one word in the output G-code.
Optionally, NCWord can also help you to filter the output. It contains two values - current v and previous v0 (which has already been output earlier). If both of these values are the same, then re-output the value can be skipped automatically.
NumericNCWord
"NumericNCWord", or in other words "Register", is an object that helps you quickly and conveniently convert numeric values to a text format that the CNC machine understands. For example, you can easily convert the coordinate value x = 5.18 to the string "X0005.180". This corresponds approximately to one word in the output G-code.
Optionally, NumericNCWord can also help you to filter the output. It contains two values - current v and previous v0 (which has already been output earlier). If both of these values are the same, then re-output the value can be skipped automatically.
PostprocessorSettings
The settings of postprocessor which defines it's descriptional properties, the way to handle circular arcs and the set of additional properties which the developer of a particular postprocessor can add at his own discretion.
They are read automatically from the Settings.xml file of the postprocessor.
TBinaryNCFile
Some class to use for writing binary files. It automatically synchronizes with the postprocessing system and, when debugging via CLDViewer, allows you to see how the contents of the file change right during the writing process. It also implements the functionality of insertion to an arbitrary location in the file (at the beginning or middle, and not just at the end).
TExternalNCFile
The external file is a file that was formed or obtained by a postprocessor in some special way, for example, through an external third-party program, and added to the list of postprocessor output files already in the finished form.
It is just a wrapper that allows to have properties of TNCFile class for some third-party files and hold them inside the common list of output files in TNCFilesManager.
TextNCWord
"TextNCWord", or in other words "Register", is an object that helps you quickly and conveniently convert string values to a text format that the CNC machine understands.
Optionally, TextNCWord can also help you to filter the output. It contains two values - current v and previous v0 (which has already been output earlier). If both of these values are the same, then re-output the value can be skipped automatically.
TNCFile
Abstract class ancestor for all types of output files formed by postprocessor.
TNCFilesManager
A special class that contains a list of output files formed by postprocessor.
TPostprocessor
Abstract blank postprocessor of SprutCAM. When developing your postprocessor, you must inherit it from this class.
This class declares basic virtual methods that must be present in the postprocessor. However, most of the declared methods have empty implementation.
A significant number of methods are SprutCAM's CLData command handlers, for example
- OnGoto,
- OnCircle,
- OnSpindle,
- OnLoadTool,
- OnCoolant
- etc.
TransliterationTable
The table which contains the list of string pairs of type TranslitPair for one exact language to be possible to do transliteration of text from this language to english.
You can easily create the new table using the code example below.
Transliterator
The object which alows to make transliteration of text from any national language to the english. You can assign the Default property as a convertion table to be possible to use specific language you want. If it is not changed explicit then the Russian table will be used.
TSimpleTextNCFile
Simplest implementation of the output file. It is just wrapper around System.IO.StreamWriter that inherits TNCFile to be possible to manage it using TNCFilesManager. It has no any integration with the CLData Viewer so you will not see in live time any changes of this file in the CLData viewer. It will be shown there after the finish of whole postprocessing only. Use it only if you have some problems with TTextNCFile.
To use TSimpleTextNCFile class just create an instance of it and use WriteLine(String) or Write(String) methods to append some text to the file.
Also you can set the desired encoding TextEncoding of the output file.
TTextNCFile
The main class to use for writing text files. It automatically synchronizes with the postprocessing system and, when debugging via CLDViewer, allows you to see how the contents of the file change right during the writing process. It also implements the functionality of writing to an arbitrary location in the file (at the beginning or middle, and not just at the end).
Also you can set the desired encoding TextEncoding of the output file.
To use TTextNCFile class just create an instance of it and use WriteLine(String) or Write(String) methods to append some text to the file.
In addition, you can create a new class that inherits from this class. This will allow you to declare your members within the class associated with the given output file, for example, the number of the NC program, a set of registers (NCWord) for formatting and filtering the output, methods for writing specific information, etc.
Structs
ArcSettings
The settings to handle circular arcs and helixes.
InpNumber
Floating number that supports automatic implicit conversion to and from an integer number.
TInp2DPoint
Two dimensional cartesian point with X and Y coordinates.
TInp3DPoint
Three dimensional cartesian point (X, Y, Z coordinates)
TInp5DPoint
5 dimensional point: three-dimensional point P(X, Y, Z) and three-dimensional vector N(X, Y, Z) associated with it.
TInpComplexRotationConvention
Structure that complements convention TInpRotationConvention of rotation (orientation) TInpRotation(A, B, C, D).
TInpLocation
A complex structure that allows you to define location of some object in three-dimensional space. It represents combination of position P(X, Y, Z) and rotation (orientation) N(A, B, C, D) in three-dimensional space. Depend on a convention of type TInpRotationConvention (outside of this structure) orientation can be one of the following.
- Different kind of Euler angles.
- Axis-angle representation (rotation vector).
- Quaternion.
- Normal vector.
TInpQuaternion
Quaternion q(X, Y, Z, W) - determines the rotation (orientation) in a three-dimensional space.
TInpRotation
A complex structure that allows you to define rotation (orientation) in three-dimensional space. Depend on a convention of type TInpRotationConvention (outside of this structure) it can be one of the following.
- Different kind of Euler angles.
- Axis-angle representation (rotation vector).
- Quaternion.
- Normal vector.
TranslitPair
The structure to store information about one transliterating replacement.
Interfaces
IArrayNamedPropertyIndexer
A helper interface that allows you to quickly get a reference to a nested array type property by its
unique name using a convenient syntax with square brackets Arr["NestedPropName"]
.
IBinaryNCStorage
The auxiliary object that contains the output binary files data and additional implements two important things:
IBooleanNamedPropertyIndexer
A helper interface that allows you to quickly get the boolean value of a nested property by its
unique name using a convenient syntax with square brackets Bol["NestedPropName"]
.
ICLDAxesBrakeCommand
AXESBRAKE CLData command to turn on and off axes brakes if there are axes brakes on the machine.
ICLDBrakeAxesIndexer
Helper interface for convenient syntax for accessing the list of axes brake states using square brackets similar to array syntax.
ICLDCircleCommand
Circular arc movement
ICLDClampCommand
CLAMP CLData command. You can use this to output specific clamping device control commands (chucks, vices, collets, etc. clamp and unclamp) to the output file.
ICLDCommand
Common ancestor for all CLData commands
ICLDCommentCommand
COMMENT CLData command. It is used to output various types of text information and comments to output files.
ICLDCoolantCommand
COOLANT CLData command turns on or off the machine cooling systems.
ICLDCoolantTubeIndexer
Auxiliary object of a COOLANT command to get access to the list of coolant tube states using array like syntax with square brackets.
ICLDCutComCommand
CUTCOM CLData command to switch compensation mode for length or radius of the tool.
ICLDCycleCommand
CYCLE CLData command used to pass standard drilling cycles G81-G89. This command may have been generated in older versions of SprutCAM. For the actual versions EXTCYCLE command is used.
ICLDDelayCommand
DELAY CLData command is used to pause program execution for the specified time. It commonly translates to G04 code.
ICLDEDMMoveCommand
EDMMOVE CLData command is generated by the Wire EDM operations of the SprutCAM system. The command specifies the wire movement coordinates and sets the movement interpolation modes.
ICLDEDMMoveSpan
Parameters of the motion for only one wire EDM guide - top or bottom. Type of motion (cut or arc), end point coordinates, arc center and corner rounding radius.
ICLDEffectorCommand
EFFECTOR CLData command activates-deactivates end effector (laser, jet nozzle, arc welder etc.).
ICLDExtCycleCommand
EXTCYCLE CLData command can be used to produce canned cycles of CNC. It may be hole machinning cycles, standard milling and turning cycles or any other machine (robot) controller side compound instructions.
ICLDFeedrateCommand
FEDRAT CLData command. Activates interpolating motion mode (linear or circular, G1-G3 on machines) and specifies the feed kind, units and value.
ICLDFile
A separate file of a CLData. Contains the list of CLData commands.
ICLDFileCmdIndexer
Auxiliary object to get convenient array like syntax with square brakets for the list of commands in a CLData file.
ICLDFileList
The list of CLData file. Allows to get the file by it's index and the count of files.
ICLDFiniCommand
FINI CLData command. Usually it's a last command of a project, so it can be used to finalize an output file (G-code).
ICLDFromCommand
FROM command. Contains the initial position of the machine axes before the first movement in the operation.
ICLDGoHomeCommand
GOHOME movement command. Usually this is a movement that is linearly interpolated in the space of the machine axes (joints) and moves the specified axes of the machine to the home position. Contains a list of machine axes whose position is changed in this movement.
ICLDGotoCommand
Simplest movement to the 3 dimensional point
ICLDInsertCommand
INSERT CLData command is used to pass textual information directly into output file.
ICLDInterpolationCommand
INTERPOLATION CLData command activates or deactivates interpolation modes like cylindrical, polar or continuous multiaxis interpolation.
ICLDLoadToolCommand
LOADTL CLData command to move the tooling turret or select the tool from the tool magazine.
ICLDMachineAxesIndexer
Auxiliary helper object to get convenient array like (with square brakets) syntax to get access to the list of machine axes.
ICLDMachineAxisInfo
The object that contains information about one axis of the machine, obtained from the SprutCAM's machine schema.
ICLDMachineInfo
Object that helps to get some information about the machine which is contained inside a CLData project.
ICLDMachiningTool
Machining tool properties.
ICLDMotionCommand
The common ancestor for all movement CLData commands (GOTO, MultiGOTO, CIRCLE, MultiARC, PhysicGOTO, GoHome)
ICLDMoveVelocityCommand
Common ancestor for all CLData commands that set the speed for movements (FEDRAT and RAPID).
ICLDMultiArcCommand
MULTIARC command. Specifies movement along a spatial arc defined by three points.
ICLDMultiArcPoint
A structure containing all the information necessary to specify a single point on a spatial arc defined by the MULTIARC command.
ICLDMultiAxisArray
Auxiliary interface for the multimotion's axes list to use it inside MultiMotionAxesEnumerator that allows to use foreach syntax.
ICLDMultiGotoCommand
MULTIGOTO movement command. Usually it is a movement linearly interpolated in the Cartesian coordinate system. Contains a list of machine axes whose position is changed in this movement.
ICLDMultiMotionAxesIndexer
Helper interface for convenient syntax for accessing the list of multi-axis movement axes using square brackets similar to array syntax.
ICLDMultiMotionCommand
Common ancestor for all multi-axis movement commands (MULTIGOTO, PHYSICGOTO, GOHOME, ORIGIN, FROM).
ICLDOpStopCommand
OPSTOP CLData command to specify the optional programm execution break M01.
ICLDOriginCommand
The ORIGIN command specifies the new coordinate system (CS). There are two modes of the Origin command: standard workpiece CS selection (like G54-G59) or local CS activation (like G68.2, Cycle800, PLANE SPATIAL).
ICLDPartNoCommand
PARTNO CLData command. Usually it's a first command of a project, so it can be used to initialize an output file (G-code). It contains the project name as a parameter.
ICLDPhysicGotoCommand
PHYSICGOTO movement command. Usually this is a movement that is linearly interpolated in the space of the machine axes (joints). Contains a list of machine axes whose position is changed in this movement.
ICLDPlaneCommand
PLANE CLData command. It's used to define active machining plane (e.g. G17, G18, G19). Active plane is necessary in circular interpolation (it defines plane of arcs), to implement tool radius offset, to define hole machining cycles, tool orientation etc.
ICLDPowerCommand
POWER CLData command. It's used to specify exact value of a power in current position for device with defined ID. The value is in percents of some constant value specified either in the parameters of the operation, or implicitly assumed.
ICLDPPFunCommand
PPFUN CLData command. Postprocessor function PPFUN is a multiple purpose command. It can be used to present different kinds of data and machining parameters. The actual type of a PPFUN command is defined by the first parameter of the CLD array CLD[1] (or CLD["SubCode"]). Other CLD array parameters (starting from CLD[2]) can have various meaning dependinig on the subtype of the PPFUN command.
ICLDPrintCommand
PRINT CLData command passes text information from SprutCAM to postprocessor.
ICLDProject
SprutCAM's CLData project. The main content is a list of files each of which contains the list of CLData commands.
ICLDRapidCommand
RAPID CLData command. Activates rapid motion mode (G0 on machines, or Joints on robots). All further movements are done in rapid mode until FEDRAT is received.
ICLDSelWorkpieceCommand
SELWORKPIECE CLData command is used to specify active workpiece connector (the piece of machine where the workpiece is fixed). For the multi-spindle lathe machines this command specifies the active spindle.
ICLDSinglePassThreadCommand
SINGLETHREAD CLData command is used to make cylindrical or conical thread with constant step on a lathe machines (G32 or G33 G-codes).
ICLDSpindleCommand
SPINDLE CLData command to specify the rotation mode, direction and speed for an exact spindle of the machine.
ICLDStopCommand
STOP CLData command to specify the programm execution break M00.
ICLDStructureCommand
STRUCTURE CLData command is used to make it possible to combine individual commands into groups and subgroups. STRUCTURE ON(71) command means the start of a new group, STRUCTURE OFF(72) means the end of a group. The groups can be nested.
ICLDSub
CLD subroutine - the list of CLData commands which is not called (translate) by the translating system directly, but it can be called for translation by the postprocessor developer using special "Translate" method from any other handler inside postprocessor. Usually you need to convert it into subroutine of format that the controller understands.
ICLDSubList
The list of CLD subroutines with auxiliary helper methods.
ICLDSyncAxesCommand
SYNCAXES CLData command. The purpose of this command is to enabled or disable a mode of simultaneous synchronous movement of two axes of the machine (for example left and right spindle rotation axes on a two spindle lathe machine).
ICLDSyncWaitCommand
WAIT CLData command is used to synchronize multiple concurrent threads of control (several NC-programs or channels, each of which can control a separate machine tool). To make it you should add a special label to the NC-program, implementing the suspension of the program until the achievement of a similar label in another (concurrent) program (channel).
ICLDTakeoverCommand
TAKEOVER CLData command to take workpiece over from the active connector into the connector specified in the command parameter. The active workpiece connector is specified by the SELWORKPIECE command. The workpiece connector is a machine unit that is used to fix the workpiece. Use this command for multi-spindle lathe or lathe-milling machines to perform workpiece takeover from one spindle into another.
ICLDTechOperation
Technological operation of SprutCAM.
ICLDTechOperationList
The list of SprutCAM's technological operations of a project.
ICLDTLContactCommand
TLContact CLData command provides information about the normal to the machining surface at the point of contact of the tool with this surface. This is used to calculate 5D correction. In fact, this information determines in which direction (along which vector) the tool needs to be shifted in space by the amount of correction (the difference between the radius of the theoretical and actual tool).
ICLDTranslator
CLDTranslator is a base working object of the postprocessing system. It opens SprutCAM's project and starts translation of CLData files and commands placed inside this project. It also opens the exact postprocessor and sends all the CLData commands to the corresponding command handlers of the postprocessor.
ICodeParametersOfCLDCommand
The list of parameters of the CLData command using which you can get the parameter value by its unique numerical code.
ICodeParametersOfCLDCommandBooleanIndexer
An indexer, which allows to get the value of the parameter of CLData command by its numerical code in the form of boolean.
ICodeParametersOfCLDCommandFloatIndexer
An indexer, which allows to get the value of the parameter of CLData command by its numerical code in the form of floating point number.
ICodeParametersOfCLDCommandIntegerIndexer
An indexer, which allows to get the value of the parameter of CLData command by its numerical code in the form of integer number.
ICodeParametersOfCLDCommandStringIndexer
An indexer, which allows to get the value of the parameter of CLData command by its numerical code in the form of textual string.
IFloatNamedPropertyIndexer
A helper interface that allows you to quickly get the floating value of a nested property by its
unique name using a convenient syntax with square brackets Flt["NestedPropName"]
.
IInputBox
The InputBox window. It can be used to ask some additional information from a user. You can create a new instance of this object using CreateInputBox() method. Then use methods of this instance to add properties of type you need:
- AddStringProp
- AddDoubleProp
- AddIntegerProp
- AddBooleanProp
- AddFilePathProp
- etc.
IInputBoxEnumValuesList<T>
The list of possible values for the proerty inside the InputBox window. This list will be shown inside the combo box when user clicks to the value field of the property.
IInputBoxFactory
External object that can create new instances of an InputBox window.
IInputBoxProperty
The property to be shown inside the InputBox window.
IIntegerNamedPropertyIndexer
A helper interface that allows you to quickly get the integer value of a nested property by its
unique name using a convenient syntax with square brackets Int["NestedPropName"]
.
INamedPropertiesCollection
Collection of a named properties. May contain child properties that are not unique by name, which can be accessed by index.
INamedProperty
Some property object that can have a unique name and a value of one of standard types: string, double, integer or boolean. The property can be complex or array type also. It means that it can contain nested properties.
INamedPropertyIndexer
A helper interface that allows you to quickly get a reference to a nested property by its unique name
using a convenient syntax with square brackets Ptr["NestedPropName"]
.
INCBlockOwner
An interface that provides limited access to some methods of the owner object of the NCBlock. Usually this is a TTextNCFile to which the output string should be written.
INCFileOwner
This is an interface that allows us to abstract, weaken the connection with the object that is the owner of an output file formed by the postprocessor. Usually the owner is a postprocessor itself. Using this interface the output NCFile can notify the postprocessor about the actions of this file. For example, if you try to add a new string to the file, then you must notify the postprocessor so that it should call an OnFilterString handler, which can produce some additional conversion over the string before it will be written to the file.
It is used internally by the inheritors of TNCFile so usually you don't need to call it directly.
INCLabel
The INCLabel is a special object that allows writing to an arbitrary location in the output file (at the beginning or middle, not just at the end). The label points to a specific position within the output file. When editing a file, the label moves with the text. When adding new data to a file, you can use labels to specify where the data should be inserted.
Use CreateLabel() method to create new label that points to the current position in a file.
When calling the Write(String, INCLabel) or WriteLine(String, INCLabel) methods, simply provide a label in the parameters, or you can use the DefaultLabel property to specify the default position at which to insert new text.
INCStorage
The auxiliary object that contains the output files data and additional implements two important things:
INCStorageManager
Auxiliary object that helps to create new INCStorage instances and maintains the list of output files. Usually you don't need to use it directly. It is used internally by the classes TNCFilesManager, TTextNCFile and TBinaryNCFile.
IPostprocessingLogReceiver
The interface for a global object which receives logging messages that be shown to the user at the finish of postprocessing.
IPPFunTechInfo
Some information about the technological operation.
IPPFunTechInfoTool
Few information about the tool of the operation.
IPPFunTechInfoWorkpiece
Few information about the part/workpiece of the operation.
IStringNamedPropertyIndexer
A helper interface that allows you to quickly get the string value of a nested property by its
unique name using a convenient syntax with square brackets Str["NestedPropName"]
.
ITextNCStorage
The auxiliary object that contains the output text files data and additional implements two important things:
IToolGeometry
Auxiliary object to describe main geometrical parameters of a tool.
Enums
ArcBreakMode
The mode to break circular arcs: do not break, break to cuts, to halfs or to quarters.
CLDCmdType
Enumeration to identify the types of CLData commands.
CLDEDMMotionMode
Enumeration to describe the possible values for a motion mode of ICLDEDMMoveCommand CLData command.
CLDFeedKind
Enumeration that defines possible values for the kind of a feed (working, rapid, engage, return, finish etc.).
CLDFeedUnits
Units of a feed (mm/min, mm/rev etc.)
CLDFileType
Describes the type of a CLData file (TechOperation, NCSub or CAMProject).
CLDInterpMode
Enumeration to describe the type of an interpolation (polar, cylindrical, multiaxis).
CLDOriginPositionMode
The flag that defines the way to change the axes values when switching the current coordinate system.
CLDOriginType
The type of the ORIGIN command: standard workpiece coordinate system selection (G54-G59...) or the specific local coordinate system switching (G68.2, PLANE SPATIAL, Cycle800...).
CLDPlaneType
One of 6 standard planes for circles, canned cycles or other machining purposes (XY - G17, YZ - G19, ZX - G18, Inverted XY, Inverted YZ, Inverted ZX)
CLDRotationDir
Spindle rotation direction flag.
CLDSpindleAction
The action for the SPINDLE CLData command (on, off or orient).
CLDSpindleSpeedMode
Mode for a spindle speed (RPM or CSS).
CLDThreadOrient
Thread orientation (OD, ID, Face)
CLDThreadUnits
Thread pitch units.
CodeParamType
The type of parameter
EDMRollMode
The enumeration specifies sharp corners rounding mode for the 2 axis and taper machining (CornerR function, off, sharp, conical, cylindrical or fixed).
LogMessageType
The type of logging message.
MsgBtnSet
The set of buttons which should be available in the message box.
MsgClickedBtn
The button user clicked.
MsgDefBtn
The button that should be default.
MsgType
The type of message to show for a user.
NamedParamType
Enumeration to describe the type of a value which can be contained inside a property (boolean, integer or floating number, textual string or just an explicitly enumerated limited list of possible values).
NCLabelSnapMode
Snap mode for the INCLabel object. It determines whether the label should be shifted to the right or left when inserting text into the given label.
NCWordDecPoint
The enumeration defines how to output decimal point for numbers: don't output, output for fractional numbers only or output it always for fractional and integer numbers.
NCWordSign
The enumeration shows how to output a sign for numbers: don't output, minus only or plus and minus always.
NCWordState
The possible values for an NCWord State (Unchanged, Changed or Disabled).
NCWordTextCase
Determines whether or not to convert the case of characters.
TInpRotationConvention
Enumeration that defines convention of rotation (orientation) TInpRotation(A, B, C, D).
TNCStorageType
The type of an INCStorage object that contains the output files data. It can be only two possible types: Binary or Text.
TrailingZeroesMode
The enumeration defines how to output trailing insignificant zeroes (after decimal point) for numbers: don't output, output all zeroes or output only one first zero after decimal point.
Delegates
InitNamesProc
Auxiliary delegate type for internal use.
InputBoxEnumValuesFormer<T>
A delegate (callback procedure) that allows you to fill a list of possible values for the adding property. It will be shown as a combo box.
InputBoxValueSetter<T>
Delegate (callback procedure) to set a new value back to the property inside the InputBox window.