--************************************************ --*** Set these values up to suit your machine *** -- Values set HERE are in MM. If the value can be set in SheetCAM it is in the UNITS (MM or Inches) you have in SheetCAM --************************************************ refDistance = 25 --this is the distance between each torch reference in MILLIMETRES.(can be set from POST Options button in UNITS) pierceHeight = 4 lineNumber = 0 --set this to 1 if you want the G-Code to have assigned line numbers on each line. Default is 0 for LinuxCNC minLength = 0 -- default minumum length of cut for DTHC operation (set dynamically) fullTAP = 0 --set this to 1 for TAP via Hypertherm RS485 (requires options) plasmaDrill = 1 --set this to 1 to use a plasma for a drill tool . Set it to 0 to use a drill or router bit warnings = false -- set this to false to turn off the Check Parameters warnings on a toolchange verbose = true -- set this to false to turn off the G-Code comments (except code snips) -- make sure you have the PROBE input in LINUXCNC Input Signals enabled and mapped to the probe switch input startCode = " M3 S100" --S command needed for LINUXCNC useDebug = false -- turn this to false to turn off debug comments noTouchOff = false -- set to true if you want to run in simulation without touchoffs. Normal setting would be false extTOff = true-- set this to true to use a subroutine in CommandCNC to call a touch off sequence and apply the external switchoffset value. -- Leave this at "true" for commandCNC versions 0.6.0 and later rotaryPlasma = true rotaryAxis = "A" -- Set his to the rotary axis designator unitsPerRev = 2 --Number of units for one full revolution of the rotary axis. roundCutting = true -- set this to false for any shapes NOT round minRotaryLength = .5 ---length in mm that the A rotates before we check the XY move for minum. --Prevents feedrate erros on long rotaty cuts with small offsets minRotaryX = 2 --lenght in mm of the min Xor Y move down the pipe . Used with imRotaryLenght feedRate = 10 -- give default feed rato of 100mm/min. Value from code overrides avgfeedRate = 150 -- sets the beginning average feedrate longAxis = "X" -- this sets which axis is down the rotary axis. Rotary Plasma for SheetCAM requires that be X axis. roundingFactor = 10 --determines the rouning used to cut douwn number of line segments . Use whole numbers. Lower is less rounding (more lines of code-- -- 100 takes off two decimaal places --****************************************************************************************************************************************** -- do not change the following values unless you are told to do so by an experienced LinuxCNC user or vendor of your controller or table toolTrack = .0254 -- Default .254 mm. This is the blending tolerance in MM (deviation from toolpath) the Path Blending allows. -- Lower numbers favors tight tracking over the defined feedrate (slows down) toolTolerance = .0254 -- Default .0254 mm.T his is the linear tolerance for multiple nodes in the same toolpath. -- Lower numbers cause nodes out of line by less than the toolTolerance amount to be a single line --******************************************************************************************************************************************* --Scriber X,Y,Z offsets in MILLIMETRES. Do not use inches here even if you want inch code --For the marker use the scriber Z as the offset from Z zero you want the Z to move to during a scribe. --Change these values to suit your scriber setup scriberX = 25 scriberY = 25 scriberZ = 50 --scriber axis. Leave this as nil if the scriber is fixed to the same axis as the torch scriberAxis = nil --this value when set to "true" will set the Z to lift to rapid height between paths when using the marker tool. --if false it will not lift the Z between paths but will at the end markerZ = true drillZ = .250 --these codes are for the DCC extensions for Commandcnc and turn the DTHC on/off if you have DTHCII REV1.4 or DTHCIV REV1.6 or higher firmware. Used with --ALL DTHCIV units running with CommandCNC dynthcOnCode = " M67 E0 Q20" dynthcOffCode = " M67 E0 Q10" statthcONCode = " M68 E0 Q20" statthcOffCode = " M68 E0 Q10" --************************************************************************** --*** End of settings *** --*** DO NOT CHANGE ANYTHING BELOW THIS LINE *** --************************************************************************** function OnAbout(event) ctrl = event:GetTextCtrl() ctrl:AppendText("Custom Rotary Post for CommadnCNC for Linux: \n") ctrl:AppendText("For CandCNC Linux hardware \n") ctrl:AppendText("Post for rotary-plasma plugin and CommandCNC \n") ctrl:AppendText("Use with LINUX SheetCAM ver 6.1.57 or higher \n") ctrl:AppendText("Requires SheetCAM Rotary Plasma Plugin \n") ctrl:AppendText("Designed for use with LINUXCNC version 1.2.1 or later and CandCNC DTHCIV with Floating head Touch-n-Go\n") local window = ctrl:GetParent() local btn = wx.wxButton(window, wx.wxID_ANY, "Set custom post options") btn:Connect(wx.wxID_ANY, wx.wxEVT_COMMAND_BUTTON_CLICKED, OnButton) ctrl:GetContainingSizer():Insert(2, btn, 0, wx.wxALL, 5) end post.DefineVariable("cutDistance",sc.unitLINEAR,0,1e17) post.DefineVariable("slowPercent",sc.unitPERCENT,-1e17,1e17) if(fullTAP > 0) then post.DefineCustomToolParam("JetOperation", "Soft Pierce %", "softPierce", sc.unit0DECPLACE,100, 40, 100) post.DefineCustomToolParam("PlasmaTool", "Preset current", "presetAmps", sc.unit0DECPLACE, 45, 10, 200) post.DefineCustomToolParam("PlasmaTool", "Preset Air Pressure", "presetPSI", sc.unit0DECPLACE, 75, 50, 100) else softPierce = 0 presetAmps = 0 presetPSI = 0 end post.DefineCustomToolParam("PlasmaTool", "Preset volts", "presetVolts", sc.unit0DECPLACE, 49, 0, 200) post.DefineCustomToolParam("PlasmaTool", "DTHC delay -sec", "dthcDelay", sc.unit2DECPLACE, 0, 0, 99) post.DefineCustomToolParam("PlasmaTool", "Tip Size -Amps", "tipSize", sc.unit0DECPLACE, 25, 45, 200) post.DefineCustomToolParam("JetOperation", "Disable DTHC this OP", "dthcOff", sc.unitBOOLEAN, 0, 0, 1) --1 is checked (off) post.DefineCustomToolParam("JetOperation", "Use AutoSet", "autoSet", sc.unitBOOLEAN, 1, 0, 1) --1 is checked (on) post.DefineCustomToolParam("JetOperation", "Min Cut Length for DTHC", "minLength", sc.unit1DECPLACE, 1, 0, 100) post.DefineCustomToolParam("FlameTool", "Set Z Zero Manually ? - 1 is YES", "manualZSet", sc.unit0DECPLACE, 0, 1, 1) if (toolTrack) then --nothing else toolTrack = .001 end if(plasmaDrill > 0) then if(fullTAP > 0) then post.DefineCustomToolParam("DrillOperation", "Preset Current Amps", "presetAmps", sc.unit0DECPLACE, 45, 0, 200) post.DefineCustomToolParam("DrillOperation", "Preset Air Pressure PSI", "presetPSI", sc.unit0DECPLACE, 75, 0, 200) else softPierce = 0 presetAmps = 0 presetPSI = 0 end post.DefineCustomToolParam("DrillOperation", "Peck Delay Sec", "peckPierce", sc.unit2DECPLACE, 0, 0, 1) post.DefineCustomToolParam("DrillOperation", "Soft Mark Percent", "softPeck", sc.unit0DECPLACE, 50, 10, 100) end post.DefineCustomOption("Ref Distance", "refDistance", sc.unitLINEAR, 0, 10000) -- post.DefineCustomOption("Switch Offset", "switchOffset", sc.unitLINEAR, 0, 10000)--took this out to remove swtichOffset from Custom Post Options in LINUX function OnButton(evt) post.ShowCustomOptions("Post settings") end function OnInit() if (useDebug == true )then post.Text ("(runing OnInit Function )") post.Eol() end offX = 0 offY = 0 offZ = 0 offA = 0 post.SetCommentChars ("()", "[]") --make sure ( and ) characters do not appear in system text post.Text (" (Filename: ", fileName, ")\n") post.Text (" (Post processor: ", postName, ")\n") post.Text (" (Date: ", date, ")\n") if(scale == metric) then post.Text (" G21 (Units: Metric)\n") --metric mode else post.Text (" G20 (Units: Inches)\n") --inch mode end post.Text (" F10.0\n G90 G40\n") post.Text (" G64 P") post.Number (toolTrack * scale, "0.000") post.Text(" Q") post.Number (toolTolerance * scale, "0.000") post.Text (" (tracking tolerances set to " , toolTrack * scale, ") \n") if (rotaryPlasma == true) then --added 4-10-20 to do rotary local matZ = sc.QueryDll(qryCHKEND, endY, dllId) if (matZ) then pipeRadius = matZ else pipeRadius = 0 end post.Text (" (this is a rotary plasma cut process ") post.NonModalNumber ( " pipe radius = ", pipeRadius * scale, "0.000") post.Text (" ) \n") end if(dthcOff) then --don't do anything else -- dthcOff = 0 --don't pass a null end if(presetVolts) then --don't do anything else presetVolts = 0 --don't pass a null end if(dthcDelay) then --don't do anything else dthcDelay = 0 --don't pass a null end if(tipSize) then --don't do anything else tipSize = 25 --don't pass a null end if(presetAmps) then --don't do anything else presetAmps = 0 --don't pass a null end if(presetPSI) then --don't do anything else presetPSI = 0 --don't pass a null end if(softPierce) then --don't do anything else softPierce = 100 --don't pass a null end if(entityLength) then --don't do anything else entityLength = 0 --don't pass a null end off2X = .002 --in mm the tiny extension off2Y = .0254 off2A = .001 off2B = .001 newOp = false minArcSize = 0.02 --arcs smaller than this are converted to moves firstRef = true currentZAxis = "Z" finalCut = false dist = 9999999 lastz = 0 post.Text (statthcOffCode)--turn off the DTHC no matter the state post.Eol() thcstate = 0 softPeck2 = 0 end function OnNewLine() if (linenumber == 1) then post.Text ("N") post.Number (lineNumber, "0000") lineNumber = lineNumber + 10 else post.Text (" ") end end local function round(x, n) --added by TLC --n = math.pow(10, n or 0) x = x * 100 if x >= 0 then x = math.floor(x + 0.1) else x = math.ceil(x - 0.1) end return x / n end function OnFinish() if (useDebug == true )then post.Text ("(runing OnFinish Function )") post.Eol() end finalCut = true if (pipeRadius >(3.000 * scale)) then roundingFactor = 10 else roundingFactor = 100 end endXRND = round(endX, roundingFactor) endYRND = round(endY, roundingFactor) curXRND = round(currentX, roundingFactor) curYRND = round(currentY, roundingFactor) if (endXRND == curXRND) and (endYRND == curYRND) then --see if the current X and Y position is the same final move post.Text (" (No Parking values detected. Moving back to zero, zero)\n ") endX = 0 endY = 0 endA = 0 else post.Text (" (End of job , noving to predefined Parking position)\n ") end if endZ > safeZ then --use the largest number --nothing else endZ = safeZ end offX = 0 offY = 0 offZ = 0 offA = 0 OnRapid()--make the final rapid move if(toolClass == "FlameTool")then -- do not turn the global DTHC ON --do nothing else post.Text(" M68 E0 Q900 \n") --resets global DTHC to ON end post.Text(statthcOffCode) post.Text(" (DTHC is off)\n"); post.Text(" G92.1") post.Text(" (Reset pipe Offsets to zero)\n") post.Text(" G4 P.2 \n") post.Text (" M5 M30\n") end function OnRapid() -- this runs before ontoolchange so no tool values yet if (useDebug == true )then post.Text ("( runing onRapid Function )") post.Eol() end if(endX < 1e17 and endY < 1e17) then --don't update the distance moved if X or Y are unknown local len = math.hypot((endX + offX)-currentX , (endA + offA)) dist = dist + len end post.ModalText (" G0") post.ModalNumber (" X", (endX + offX) * scale, "0.000") post.ModalNumber (" Y", (endY + offY) * scale, "0.000") if (rotaryAxis == "A") then endRotAxis = endA end if (rotaryAxis == "B") then endRotAxis = endB end post.ModalNumber (" " .. rotaryAxis, endRotAxis, "0.000")--added if(firstRef == true) then -- first time through --local matZ = sc.QueryDll(qryCHKEND, endY, dllId) post.ModalNumber (" Z", safeZ * scale, "0.000") else --post.ModalNumber (" Z", rotaryPlasma + endZ * scale, "0.000") post.ModalNumber (" " .. currentZAxis, (pipeRadius + safeZ) * scale, "0.0000") end post.Eol() end -- end onrapid function function OnMove() if (useDebug == true ) then post.Text ("( runing OnMove Function )") post.Eol() end local len = math.hypot(endX - currentX , endY - currentY) dist = dist + len if (avgfeedRate < (feedRate * .75)) or (avgfeedRate > (feedRate * 1.25)) then avgfeedRate = feedRate --- this changes the value of avgFeedrate if its more than + or -25% of the last value of the new feedrate feedRateChange = 1 post.Eol() else feedRateChange = 0 end if (roundCutting == true) then if (longAxis == "X") then post.ModalNumber (" X", (endX + offX) * scale, "0.000") elseif (longAxis == "Y") then post.ModalNumber (" Y", (endY + offY) * scale, "0.000") end end if (rotaryAxis == "A") then endRotAxis = endA elseif (rotaryAxis =="B") then endRotAxis = endB end post.ModalNumber (" " .. rotaryAxis, endRotAxis, "0.000") --added post.ModalNumber (" F", feedRate * scale, "0.##") if (feedRateChange == 1) then --only post feedrate if its outside the average post.ModalNumber (" F", feedRate * scale, "0.##") feedRateChange = 0 end post.Eol() if (toolClass == "PlasmaTool") then --plasma tool if (rotaryAxis == "A") then endRotAxis = endA elseif (rotaryAxis == "B") then endRotAxis = endB end post.ModalText (" G1") -- this section modified 03/15/23 if (roundCutting == true) and (pipeRadius > (3.000 * scale)) then --we dont want to do this oon large pipes if (endRotAxis > minRotaryLength) and (endX < minRotaryX) then --setup if we post a small X value for longer A moves --do nohing dont post X value else post.ModalNumber (" X", (endX + offX) * scale, "0.000") end else post.ModalNumber (" X", (endX + offX) * scale, "0.000") --incase its not rotary type cut post.ModalNumber (" Y", (endY + offY) * scale, "0.000") end post.ModalNumber (" " .. rotaryAxis, endRotAxis, "0.000") --added post.ModalNumber (" F", feedRate * scale, "0.##") if (feedRateChange == 1) then --only post feedrate if its outside the average post.Text ("did it anyway \n") post.ModalNumber (" F", feedRate * scale, "0.##") feedRateChange = 0 end post.Eol() end --end toolclass end --end of OnMove function function OnArc() if (useDebug == true ) then post.Text ("( runing OnArc Function )") post.Eol() end local radius = math.hypot(currentX - arcCentreX, currentY - arcCentreY) dist = dist + radius * math.abs(arcAngle) if(arcAngle <0) then post.ModalText (" G3") else post.ModalText (" G2") end post.ModalNumber (" X", (endX + offX) * scale, "0.000") post.ModalNumber (" Y", (endY + offY) * scale, "0.000") if(offZ) then post.ModalNumber (" " .. currentZAxis, (endZ + offZ) * scale, "0.0000") end --added post.Text (" I") post.Number ((arcCentreX - currentX) * scale, "0.000") post.Text (" J") post.Number ((arcCentreY - currentY) * scale, "0.000") post.ModalNumber (" " .. rotaryAxis, endA, "0.000")--added post.ModalNumber (" F", feedRate * scale, "0.0#") post.Eol() end -- end OnArcfunction function DynThcOff() --Dynamic THC on/off is used when sync with motion is needed if(not dynthcOffCode) then return end if(thcstate ==1) then thcstate = 0 post.Text(dynthcOffCode) if (verbose == true) then post.Text(" (DTHC is off)"); end post.Eol() end end function DynThcOn() if(not dynthcOnCode) then return end if(toolClass == "MarkerTool") or (toolClass == "FlameTool") then return end if(thcstate ==0) then thcstate = 1 post.Text(dynthcOnCode) if (verbose == true) then post.Text(" (DTHC is on)"); end post.Eol() return end if(thcstate == 2) then thcstate = 0 end end function StatThcOff() --static THC ON/OFF is used when the THC is to be turned on/off when there is no subsequent motion move if(not statthcOffCode) then return end if(thcstate ==1) then -- if its not on it won't turn it off thcstate = 0 post.Text(statthcOffCode) if (verbose == true) then post.Text(" (DTHC is OFF)\n"); else post.Eol() end post.Eol() post.Text (" G4 P.1 ") post.Eol() end end function StatThcOn() if(not statthcOnCode) then return end if(toolClass == "MarkerTool") or (toolClass == "FlameTool") then return end if(thcstate ==0) then thcstate = 1 post.Text(statthcOnCode) if (verbose == true) then post.Text(" (DTHC is ON)\n"); else post.Eol() end post.Text (" G4 P.1 ") post.Eol() return end if(thcstate == 2) then thcstate = 0 end end function OnPenDown() if (useDebug == true )then post.Text ("( runing OnPenDown Function )") post.Eol() end if(toolClass == "PlasmaTool") then if (roundCutting == true) then if (longAxis == "X") then post.NonModalNumber (" X", (currentX + offX) * scale, "0.000") elseif (longAxis == "Y") then post.NONModalNumber (" Y", (currentY + offY) * scale, "0.000") end else post.NonModalNumber (" X", (currentX + offX) * scale, "0.000") post.NonModalNumber (" Y", (currentY + offY) * scale, "0.000") end post.Eol() PenDownPlasma() thcstate = 0 end --plasmatool end function PenDownPlasma() if (useDebug == true ) then post.Text ("( runing PenDownPlasma )") post.Eol() end if(rotaryPlasma == true) then --time to do a touch off if (firstRef == true) or (dist >= refDistance) then Reference() end end if (fullTAP > 0) and (softPierce > 0) and (softPierce < 100) then -- turn off the DTHC but set the current to softpierce before --the torch fires softPierceRND = round(softPierce,10) post.NonModalNumber(" M68 E0 Q1", (softPierceRND/100), "0") post.Text(" (Set pierce AMPS)") post.Eol() post.Text(" G4 P.1") post.Eol() piercePlunge = (softPierce /100) feedRate2 = (plungeRate * piercePlunge) -- lower the feedrate for soft pierce else feedRate2 = plungeRate end -- end fullTAP --feedrate- ******feedrate** Move to pierce height ******** post.ModalText(" G0") post.ModalNumber(" Z", (pipeRadius + pierceHeight ) * scale, "0.000") if (verbose == true) then post.Text(" (Z move to pierce height)") end post.Eol() -- ******** TURN ON THE TORCH!!! ******** post.Text (startCode.. "\n") -- ******** Do the pierce delay ******** if (pierceDelay > 0) then post.Text(" G4 P") post.Number(pierceDelay,"0.###") post.Eol() end -- ******** Move at proper feedrate to cut height ******** post.ModalText(" G1") post.ModalNumber(" Z", (pipeRadius + cutHeight) * scale, "0.000") post.ModalNumber(" F", feedRate2 * scale, "0.0###") if (verbose == true) then post.Text(" (Z move to cut height)") end post.Eol() --post.Text("(entityLength = "..(entityLength * scale)..")\n") if ((entityLength * scale) > minLength) then --see if it is min length\\ -- post.Text ("(dthcOff = "..dthcOff..")\n") if (dthcOff == 0) then -- dthc ON for this cut/operation post.Text(dynthcOnCode)--turn on THC at bottom of Z plunge post.Text(" (Auto DTHC is ON)\n") post.Eol() else post.Text(dynthcOffCode) post.Text(" (Auto DTHC is OFF)\n") post.Eol() end else -- in case softpierce is set and the min cut rule is active, we need to set the DTHC off with AMPs at 100% post.Text(dynthcOffCode) post.Text(" (Auto DTHC OFF min cut)\n") post.Eol() end end -- end PenDownPlasma() function function OnCorner()--this was ove in on movve but no Z moves there endZRND = round(endZ, roundingFactor) curZRND = round(currentZ, roundingFactor) if (endZRND ~= curZRND) and (thcstate == 1) then--check to see if the move includes a Z move and if so turn off the DTHC so it will execute DynThcOff() post.Text ("(Turn off DTHC on corners for rotary cuts of non-round material)\n") else if (dthcOff > 0) then -- if the there is no Z move from code and its uspposed to have the DTHC make sure its turned balc on post.Eol() DynThcOn() end end end -- end function function Reference() --[[ if (useDebug == true )then post.Text ("( runing Refenece Function )") post.Eol() end --local matZ = sc.QueryDll(qryCHKEND, endY, dllId) if (rotaryPlasma == true) then -- check to see if this is rotary post.ModalNumber("G92 Z", 0,"0.000")--remove any Z offset post.ModalNumber(" G0 Z", plungeSafety * scale, "0.000") --rapid down to current Z safety clearance post.Text ( "(Plunge Safety Clearance)") post.Eol() post.Text (" o call ")--this does a touch off with the topof material as zero post.Text (" (external Touch off from Commandcnc)") post.Eol() post.ModalNumber (" G92 Z", pipeRadius * scale, "0.000") --sets the offset from the center of the pipe post.ModalNumber ("( Pipe offset = ", pipeRadius * scale, "0.000") post.Text (") ") post.Eol() post.Text(" G0") post.NonModalNumber(" Z", (pipeRadius + safeZ) * scale, "0.000") post.Text (" (raise to safe height with offset) ") -- debug post.Eol() end -- end check for noTouchOff firstRef = false post.CancelModalText() post.CancelModalNumbers() dist = 0 --reset the distance counter ]] end --end ref function function OnPenUp()--took out adding tiny extension to A at the end if (useDebug == true) then post.Text ("( runing onPenUp Function )") post.Eol() end if (toolClass == "MarkerTool") then if (punchDown == true) then post.ModalText(" M9\n") punchDown = false end else if (toolClass == "DrillTool") then --skip the tiny extension else post.ModalText (" G0")--this is supposed to add a tiny segment before the M5 added code for rotary to fix bug in LINUXCNC if (roundCutting == true) then if (longAxis == "X") then post.ModalNumber (" X", (currentX + off2X) * scale, "0.000") elseif (longAxis == "Y") then post.ModalNumber (" Y", (currentY + off2Y) * scale, "0.000") end else post.ModalNumber (" X", (currentX + off2X) * scale, "0.000") post.ModalNumber (" Y", (currentY + off2Y) * scale, "0.000") end if (verbose == true) then post.Text (" (Add tiny extension to X)") end end post.Eol() post.Text (" M5\n") if (toolClass == "PlasmaTool")then post.Text (" o call") -- call the end cut subroutine to sync up the Z from the DTHC post.Eol() end if (thcstate == 1) then StatThcOff() end end -- end marker tool if (endDelay > 0) then post.Text (" G4 P") post.Number (endDelay,"0.###") post.Eol() end --if (newOp == true) then -- post.Text (" (Operation: ", operationName, ")\n") -- newOp = false -- end post.CancelModalText() post.CancelModalNumbers() end --end OnPenUp function function OnNewOperation() post.CancelModalText() post.CancelModalNumbers() newOp = true post.Text (" (Operation: ", operationName, ")\n") --post.Text ("(dthcOff = "..dthcOff..")\n") if (plungeRate <= 0) then post.Warning("WARNING: Plunge rate is zero") end if (feedRate <= 0) then post.Warning("WARNING: Feed rate is zero") end end --end function function OnToolChange() dthcOff = 0 if (useDebug == true ) then post.Text ("( runing OnToolchange Function )") post.Eol() -- post.Text ("(dthcOff1 = "..dthcOff..")\n") end offX = 0 offY = 0 offZ = 0 if (toolClass =="DrillTool" ) then -- used as a plasma tool post.Text (" (tool number: ", tool ," ") post.Text (" Plasma peck drill )") post.Eol() post.Text (" (Distance between Touch-offs: " , refDistance * scale, " ") post.Text(" Feedrate: ", feedRate * scale , ") \n") if(scriberAxis and scriberAxis ~= currentZAxis) then endZ = safeZ OnRapid() currentZAxis = scriberAxis end if(fullTAP ~= 0) then --check for TAP being used if(presetAmps > 0) then post.Text( " M68 E0 Q4" ,presetAmps, "") if (verbose == true) then post.Text(" (Preset Cut Current: ",presetAmps, " Amps)") post .Eol() else post.Eol() end post.Text (" G4 P.1") post.Eol() end if(presetPSI > 0) then post.Text( " M68 E0 Q8" ,presetPSI, " ") if (verbose == true) then post.Text(" (Preset Air Pressure: ",presetPSI, " PSI)") post .Eol() else post.Eol() end post.Text (" G4 P.1") post.Eol() else post.Text("(Using Auto Air Pressure)") post.Eol() end -- end preset psi if (softPeck and softPeck > 9) then softPeck2 = (softPeck/10) if (verbose == true) then post.Text ( " (Soft Mark : " ,softPeck ," percent ) ") post.Eol() end else softpeck2 = 0 end if (softPeck2 > 0) then post.Text (" M68 E0 Q1" ,softPeck2, " \n ") post.Text (" G4 P.1 \n") else --ThcOff() end end --end fullTAP if(scriberAxis and scriberAxis ~= currentZAxis) then endZ = safeZ OnRapid() currentZAxis = scriberAxis end firstRef = true end -- drilltool if (toolClass== "PlasmaTool") then if (verbose == true) then -- post.Text ("(dthcOff2 = "..dthcOff..")\n") if(presetVolts >0) then post.Text ( " (Preset Volts: ",presetVolts,") " ) else --post.Text ("(") end if (fullTAP ~=0) then --check to see if full tap if(presetAmps >0) then post.Text ( " (Preset AMPS: " ,presetAmps,") ") post.Eol() else post.Eol() end if(presetPSI>0) then post.Text ( " (Air Pressure Preset: " ,presetPSI,") ") post.Eol() end if (softPierce > 0 ) then softPierce2 = (softPierce / 10) if (softPierce2 >= 10 ) then softPierce2 = 0 end else softPierce2 = 0 end -- end softpierce if(softPierce2 > 0 ) then post.Text ( " (Soft Pierce : " ,softPierce," percent ) ") post.Eol() else post.Text ( " (Soft pierce is off )") post.Eol() end end -- end of fullTap check if(tipSize>0) then post.Text ( " (Suggested Tip Size: " ,tipSize," )") post.Eol() end if(dthcDelay > 0 ) then post.Text ( " (DTHC Delay: " ,dthcDelay," sec ) ") post.Eol() else post.Text ( " (Default DTHC Delay )") post.Eol() end if(minLength > 0 ) then post.Text ( " (Min Cut Length for DTHC ON : " ,minLength ," units ) ") post.Eol() end post.Eol() end -- end of verbose check --post.Text ("(dthcOff3 = "..dthcOff..")\n") if(dthcOff == 1 ) then --post.Text (" (Plate Marker NO DTHC)\n") post.Text (" M68 E0 Q999 ") if (verbose == true) then post.Text(" (Global DTHC ON/OFF is OFF ) \n") else post.Eol() end post.Text(" G4 P.1 \n" ) return -- jump out of toolchange if no DTHC else post.Text (" M68 E0 Q900 ") if (verbose == true) then post.Text(" (Global DTHC ON/OFF is ON ) \n") else post.Eol() end post.Text (" G4 P.1 \n" ) end --end dthcOff loop if(presetVolts > 0) then post.Text ( " M68 E0 Q3" ,presetVolts, "" ) if (verbose == true) then post.Text(" (Preset Volts set to ",presetVolts ," Volts)") end post.Eol() post.Text (" G4 P.1 \n") else post.Text ( "(No Preset Volts)\n" ) end --end presetVolts if(fullTAP ~= 0) then --check for TAP being used if(presetAmps > 0) then post.Text( " M68 E0 Q4" ,presetAmps, " ") if (verbose == true) then post.Text (" (Preset Amps set to ", presetAmps, " Amps)") end post.Eol() post.Text (" G4 P.1") post.Eol() end -- end presetAMPS if(presetPSI > 0) then post.Text( " M68 E0 Q8" ,presetPSI, " ") if (verbose == true) then post.Text (" (Air pressure set to ", presetPSI, " PSI)") end post.Eol() post.Text (" G4 P.1") post.Eol() else post.Text("(Default Air Pressure)") post.Eol() end --end presetPSI end --end check for fullTAP if(dthcDelay > 0 ) then post.Text ( " M68 E0 Q5") post.Number (dthcDelay * 10, "00") ---multiplies times 10 to pass decimal values if (verbose == true) then post.Text(" (DTHC Delay set to ",dthcDelay ," Seconds)") end post.Eol() post.Text (" G4 P.1 \n") end --end dthcDelay --StatThcOff() --after loading values turn off the DTHC post.Text(statthcOffCode) if (verbose == true) then post.Text(" (DTHC is OFF)\n"); else post.Eol() end --post.Eol() post.Text (" G4 P.1 \n ") if (warnings == true) then post.Text (" M1") post.Text (" (Settings Check)\n") post.Text (" (###########################)\n") post.Text (" (Paused: Check the DTHC Settings )\n") post.Text (" (Hit RUN to continue)\n") post.Text (" (###########################)\n") else -- post.Text (" M1") post.Text (" (Pause off)\n") post.Text (" (###########################)\n") end --end warnings end -- end of plasma tool loop end --end for toolchangefunction function OnNewPart() post.Text(" (Part: ",partName,")\n"); end function OnDrill() -- post.Text ("(Drill Process)\n") if (thcstate == 1) then ThcOff() end OnRapid() currentX = endX currentY = endY OnPenDown() endZ = drillZ --OnMove() OnPenUp() endZ = safeZ OnRapid() end package.path = sc.Globals:Get().thisDir .. "/plugins/RotaryPlasma/?.lua" require("rotaryhelper")