gcodehs-0.1.1.0: GCode processor

Safe HaskellNone
LanguageHaskell2010

Data.GCode.Utils

Description

GCode pretty-printing functions

Utilities for manipulating and filtering GCode

Synopsis

Documentation

isG :: Code -> Bool Source #

True if Code is a G-code

isM :: Code -> Bool Source #

True if Code is a M-code

isGN :: Int -> Code -> Bool Source #

True if Code is a G{N} code

isGNs :: Int -> Int -> Code -> Bool Source #

True if Code is a G{N}.{sub} code

isMN :: Int -> Code -> Bool Source #

True if Code is a M{N} code

isMNs :: Int -> Int -> Code -> Bool Source #

True if Code is a M{N}.{sub} code

isG0 :: Code -> Bool Source #

True if Code is a G0 code

isRapid :: Code -> Bool Source #

True if Code is a G0 (rapid move) code, alias to isG0

isG1 :: Code -> Bool Source #

True if Code is a G1 code

isMove :: Code -> Bool Source #

True if Code is a G1 (move) code, alias to isG1

isG2 :: Code -> Bool Source #

True if Code is a G2 code

isArcCW :: Code -> Bool Source #

True if Code is a G2 (clockwise circular move) code, alias to isG2

isG3 :: Code -> Bool Source #

True if Code is a G3 code

isArcCCW :: Code -> Bool Source #

True if Code is a G3 (counter-clockwise circular move) code, alias to isG3

isG4 :: Code -> Bool Source #

True if Code is a G4 code

isDwell :: Code -> Bool Source #

True if Code is a G4 (dwell) code, alias to isG4

isG5 :: Code -> Bool Source #

True if Code is a G5 code

isCubicSpline :: Code -> Bool Source #

True if Code is a G5 (cubic spline) code, alias to isG5

isG5s1 :: Code -> Bool Source #

True if Code is a G5.1 code

isQuadSpline :: Code -> Bool Source #

True if Code is a G5.1 (quadratic spline) code, alias to isG5s1

isG5s2 :: Code -> Bool Source #

True if Code is a G5.2 code

isNURBS :: Code -> Bool Source #

True if Code is a G5.2 (NURBS) code, alias to isG5s2

isXYZplane :: Code -> Bool Source #

True if Code is a G17 (select XYZ plane) code

isXZYplane :: Code -> Bool Source #

True if Code is a G18 (select XZY plane) code

isYZXplane :: Code -> Bool Source #

True if Code is a G19 (select YZX plane) code

isInch :: Code -> Bool Source #

True if Code is a G20 (inch mode) code

isMM :: Code -> Bool Source #

True if Code is a G21 (millimeter mode) code

isG33 :: Code -> Bool Source #

True if Code is a G33 code

isSpindleSync :: Code -> Bool Source #

True if Code is a G33 (spindle synchronized motion) code, alias to isG33

isG33s1 :: Code -> Bool Source #

True if Code is a G33.1 code

isRigidTap :: Code -> Bool Source #

True if Code is a G33.1 (rigit tapping) code, alias to isG33s1

isG38 :: Code -> Bool Source #

True if Code is a G38 code

isProbe :: Code -> Bool Source #

True if Code is a G38 (probe) code, alias to isG38

isDrillingCycleCB :: Code -> Bool Source #

True if Code is a G73 (drilling cycle, chip breaking) code

isThreadingCycle :: Code -> Bool Source #

True if Code is a G76 (threading cycle) code

isDrillingCycleCancel :: Code -> Bool Source #

True if Code is a G80 (cancel drilling cycle) code

isDrillingCycle :: Code -> Bool Source #

True if Code is a G81 (drilling cycle) code

isDrillingCycleDwell :: Code -> Bool Source #

True if Code is a G82 (drilling cycle, dwell) code

isDrillingCyclePeck :: Code -> Bool Source #

True if Code is a G83 (drilling cycle, pecky) code

isBoringCycle :: Code -> Bool Source #

True if Code is a G85 (boring cycle, feed out) code

isBoringCycleDwell :: Code -> Bool Source #

True if Code is a G89 (boring cycle, dwell, feed out) code

isAbsolute :: Code -> Bool Source #

True if Code is a G90 (absolute mode) code

isRelative :: Code -> Bool Source #

True if Code is a G91 (relative mode) code

isArcAbsolute :: Code -> Bool Source #

True if Code is a G90.1 (absolute arc mode) code

isArcRelative :: Code -> Bool Source #

True if Code is a G91.1 (relative arc mode) code

isLatheDiameter :: Code -> Bool Source #

True if Code is a G7 (lathe diameter mode) code

isLatheRadius :: Code -> Bool Source #

True if Code is a G8 (lathe radius mode) code

isInverseTime :: Code -> Bool Source #

True if Code is a G93 (inverse time mode) code

isUnitsPerMinute :: Code -> Bool Source #

True if Code is a G94 (units per minute time mode) code

isUnitsPerRevolution :: Code -> Bool Source #

True if Code is a G95 (units per revolution time mode) code

isSpindleCW :: Code -> Bool Source #

True if Code is a M3 (spindle start clockwise) code

isSpindleCCW :: Code -> Bool Source #

True if Code is a M4 (spindle start counter-clockwise) code

isSpindleStop :: Code -> Bool Source #

True if Code is a M5 (spindle stop) code

isCoolantMist :: Code -> Bool Source #

True if Code is a M7 (turn mist coolant on) code

isCoolantFlood :: Code -> Bool Source #

True if Code is a M8 (turn flood coolant on) code

isCoolantStop :: Code -> Bool Source #

True if Code is a M9 (turn all coolant off) code

isToolLength :: Code -> Bool Source #

True if Code is a G43 (tool length offset) code

isToolLengthDynamic :: Code -> Bool Source #

True if Code is a G43.1 (dynamic tool length offset) code

isToolLengthAdd :: Code -> Bool Source #

True if Code is a G43.2 (apply additional tool length offset) code

isToolLengthCancel :: Code -> Bool Source #

True if Code is a G49 (cancel tool length offset) code

isPause :: Code -> Bool Source #

True if Code is a M0 (pause) code

isOptionalPause :: Code -> Bool Source #

True if Code is a M1 (optional pause) code

isEnd :: Code -> Bool Source #

True if Code is a M2 (program end) code

isExchange :: Code -> Bool Source #

True if Code is a M30 (exchange pallet shuttles) code

groups :: [[Code -> Bool]] Source #

hasAxis :: AxisDesignator -> Code -> Bool Source #

True if Code has a coordinate in axis a

hasX :: Code -> Bool Source #

True if Code contains X axis

hasY :: Code -> Bool Source #

True if Code contains Y axis

hasZ :: Code -> Bool Source #

True if Code contains Z axis

hasE :: Code -> Bool Source #

True if Code contains E axis

hasParam :: ParamDesignator -> Code -> Bool Source #

True if Code contains parameter with ParamDesignator

hasFeedrate :: Code -> Bool Source #

True if Code contains feedrate parameter (e.g. G0 F3000)

gcodes :: [Code] -> [Code] Source #

Filter G-codes

mcodes :: [Code] -> [Code] Source #

Filter M-codes

rapids :: [Code] -> [Code] Source #

Filter rapid moves

moves :: [Code] -> [Code] Source #

Filter moves

replaceClass :: Class -> Code -> Code Source #

Replace Class of Code (e.g. for chaning G0 to M0)

replaceCode :: Int -> Code -> Code Source #

Replace code value of Code (e.g. for chaning G0 to G1)

replaceAxis :: AxisDesignator -> Double -> Code -> Code Source #

Replace axis with AxisDesignator in Code returning new Code

addReplaceAxis :: AxisDesignator -> Double -> Code -> Code Source #

Replace or add axis with AxisDesignator in Code returning new Code

replaceX :: Double -> Code -> Code Source #

Replace X axis coordnate

replaceY :: Double -> Code -> Code Source #

Replace Y axis coordinate

replaceZ :: Double -> Code -> Code Source #

Replace Z axis coordinate

replaceE :: Double -> Code -> Code Source #

Replace E axis coordinate

addReplaceX :: Double -> Code -> Code Source #

Replace or add X axis coordinate

addReplaceY :: Double -> Code -> Code Source #

Replace or add Y axis coordinate

addReplaceZ :: Double -> Code -> Code Source #

Replace or add Z axis coordinate

addReplaceE :: Double -> Code -> Code Source #

Replace or add E axis coordinate

replaceParam :: ParamDesignator -> Double -> Code -> Code Source #

Replace parameter with ParamDesignator in Code returning new Code

addReplaceParam :: ParamDesignator -> Double -> Code -> Code Source #

Replace or add parameter with ParamDesignator in Code returning new Code

replaceFeedrate :: Double -> Code -> Code Source #

Replace feedrate (F parameter) in Code returning new Code

travel :: Code -> Double Source #

Sum of all axis distances of this Code

inGroup :: Foldable t1 => t2 -> t1 (t2 -> Bool) -> Bool Source #

Test if Code belongs to group g

known :: Code -> Bool Source #

Test if Code belongs to any group

appendOnlyAxes :: Ord k => Map k a -> Map k a -> Map k a Source #

rot :: Floating b => b -> b -> b -> (b, b) Source #

roundprec :: (Fractional a2, Integral b, RealFrac a1) => b -> a1 -> a2 Source #