Hi all!
I thought it would be a good idea to post some tips and tricks for certain actions. Some of you will know them, other don't.
Please post as much tips & tricks as you want. Here are mine:
Since it is not possible to export the stockmodel as a dmt file, I save the viewmill state as dmt and use that as a block.
If you need a selection of your model and want to save this selection, use this macro:
CREATE LEVEL ; MODELCOMPSET EDIT LEVEL # ACQUIRE SELECTED
Greetings,
Glenn
Hey Glenn,
This Macro works great but I want to create a few If Else statements in here. I am trying to get the macro to decide which folder to place the file in. For example I have folders for each specific job. 6XXXX, 6AXXX, 6BXXX and so on. Right now this macro below will create only a 6XXXX folder and even if the part number is 6HXXX. It creates a directory like:
C:\Users\zwalker\Desktop\PROGRAMMED ELECTRODES\6XXXX\6H809\B Electrodes.
And I want it to create a directory like this:
C:\Users\zwalker\Desktop\PROGRAMMED ELECTRODES\6HXXX\6H809\B Electrodes.
In the past I have just simply replaced STRING X4 = "XXXX" with STRING X4 = "AXXX" or STRING X4 = "BXXX" but I would rather not have a bunch of the same macro buttons on my ribbon when I could have one macro that does the deciding for me.
I want to be able to have PMILL Create a folder or if it exists already just get into the correct folder to create the correct save path. I will post pictures below to hopefully better describe the scenario. I am not sure what terms I need to use to make this macro look at the line 16 (below) and have the macro determine whether this is an A, B, C, D or just another number.
STRING PATH2 = Substring("$ModelName", 1, 1)
Hopefully this makes sense to you as to what I am trying to accomplish. Thank you!
STRING LIST models = {} FOREACH md IN FOLDER('model') { IF position($md.name, "Planes") == -1 { INT k = add_last($models, $md.name) } } STRING ModelName = '' IF size($models) == 1 { $ModelName = $models[0] } ELSE { $ModelName = INPUT ENTITY MODEL "Choose model" } //Disect Model Name STRING PATH1 = Substring("$ModelName", 0, 1) STRING PATH2 = Substring("$ModelName", 1, 1) STRING PATH3 = Substring("$ModelName", 0, 5) STRING PATH4 = Substring("$ModelName", 6, 1) STRING X4 = "XXXX" STRING X3 = "XXX" STRING ELECTRODE = $PATH4 + " Electrodes" //Output path STRING PATH0 = "C:\Users\zwalker\Desktop\Programmed Electrodes\" + $PATH1 + $X4 + "\" + $PATH3 + "\" + $ELECTRODE + "\" + $ModelName STRING SaveAs = $PATH0 //if project already exist, just save it. IF dir_exists($saveas) { PROJECT SAVE //if project doesn't exist, save it as modelname in model location } ELSE { BOOL NameCheck = FALSE STRING $Question = "Is this path and modelname correct?" +CRLF+ $saveas $NameCheck = QUERY $Question IF $NameCheck { PROJECT SAVE AS $saveas STRING $Message = "Project has been saved in" +CRLF+ $saveas MESSAGE INFO $Message } }
Please post this question here because this topic is for tips & tricks
At this time I don't have the time to work on that macro, but I think the easiest way to answer your question is adding a input dialog where you can manually enter '6', '7B', '8C', ... that will output the specific path OR you could use a list that gives you all the folders where you can select the correct one.
Auto detection macro are (for me) hard to make them bug free.
Glenn
Would it be possible to have this macro prompt you for the export location?
Good Morning,
Could the exported stockmodel file be directed to a specific/different folder? Could there be a choice for the user at the time of export?
I had some help from members on this forum with my rename toolpaths macro and I figured I'd share it if anyone was interested! It starts by assigning a number to each toolpath and clearing out the rest of the name. Then it builds the new name based on tool number, tool diameter, toolpath type, and thickness. Feel free to use it how you see fit if it's helpful to anyone!
STRING RNM = ' ' INT CNT = 0 // CYCLES THROUGH ALL SELECTED PROGRAMS AND CLEARS THE NAME AND ASSIGNS A NUMBER FOREACH $Selected_Toolpath IN (explorer_selected_entities()) { // Exit if the selected entities are not Toolpaths IF $Selected_Toolpath.RootType != "toolpath" { BREAK } MACRO APPERROR CONTINUE // CLEARS THE TOOLPATH NAME AND ASSIGNS EACH ONE A NUMBER IF CNT < 10 { $RNM = "0" + $CNT + "-" } ELSE { $RNM = $CNT + "-" } RENAME Toolpath $Selected_Toolpath $RNM $CNT = $CNT + 1 } // DETERMINS TOOL DIAMETER AND ADDS THAT TO THE TP NAME FOREACH $Selected_Toolpath IN (explorer_selected_entities()) { // Exit if the selected entities are not Toolpaths IF $Selected_Toolpath.RootType != "toolpath" { BREAK } MACRO APPERROR CONTINUE ACTIVATE TOOLPATH $Selected_Toolpath // TOOLPATH NAME VARIABLE AND TOOLNUMBER VARIABLE STRING TPNAME = ENTITY('toolpath','').name INT TOONUM = ENTITY('toolpath','').tool.number STRING MISSEDTOOLNAME = ENTITY('tool','').name STRING TOOLNAME = ' ' IF $TOONUM < 10 { $TOOLNAME = "T00" + $TOONUM + "-" } ELSE { $TOOLNAME = "T0" + $TOONUM + "-" } IF $TOONUM == 0 { MESSAGE INFO "YOU FORGOT TO ADD A TOOLNUMBER TO TOOL... $MISSEDTOOLNAME , ADD TOOLNUMBER AND RESTART MACRO!" RENAME TOOLPATH ; "NO TOOL NUMBER" BREAK } // TOOL DIAMETER VALUES STRING TOODIA = ENTITY('tool','').Diameter REAL TOOREA = $TOODIA REAL TOORND = ROUND ($TOOREA, 4) REAL TOOMET = $TOORND / 0.03937 REAL METRND = ROUND ($TOOMET, 2) INT METINT = ROUND ($METRND, 1) // TOOLNAME VARIABLES // STOCK VARIABLES REAL THICC = Toolpath.Thickness STRING STOCK = ' ' IF $THICC >= 0.015 { $STOCK = "ROUGH" } IF $THICC < 0.015 AND $THICC >= 0.001 { $STOCK = "SEMI" } IF $THICC < 0.001 { $STOCK = "FINISH" } REAL FLTTHICC = Toolpath.AxialThickness STRING FLTSTOCK = ' ' IF $FLTTHICC >= 0.015 { $FLTSTOCK = "ROUGH" } IF $FLTTHICC < 0.015 AND $THICC >= 0.001 { $FLTSTOCK = "SEMI" } IF $FLTTHICC < 0.001 { $FLTSTOCK = "FINISH" } // NAME STRINGS BUILT FROM VARIABLES STRING NEWNAME = $TPNAME + $TOOLNAME STRING CHAMFERNAME = $NEWNAME + "CHAMFER" STRING SCRIBENAME = $NEWNAME + "SCRIBE" STRING DRILLNAME = $NEWNAME + $METRND + "MM_DRILL" STRING TAPNAME = $NEWNAME + $METINT + "MM_TAP" STRING HELINAME = $NEWNAME + $METINT + "MM_HELICAL-" + $STOCK STRING RASTERFLAT = $NEWNAME + $METINT + "MM_FLAT-" + $FLTSTOCK STRING OFFSETFLAT = $NEWNAME + $METINT + "MM_OFFSETFLAT-" + $FLTSTOCK // DECIDES WHAT TO NAME THE TOOLPATH BASED ON DIFFERENT TOOLPATH VARIABLES IF Strategy == "chamfer" { $NEWNAME = $CHAMFERNAME } ELSEIF Tool.Type == "taper_tipped" { $NEWNAME = $SCRIBENAME } ELSEIF Strategy == "drill" { IF toolpath.Drill.Type == "helical" { $NEWNAME = $HELINAME } ELSEIF toolpath.Drill.Type == 'tap_2' { $NEWNAME = $TAPNAME } ELSE { $NEWNAME = $DRILLNAME } } ELSEIF Strategy == "raster_flat" { $NEWNAME = $RASTERFLAT } ELSEIF Strategy == "offset_flat" { $NEWNAME = $OFFSETFLAT } ELSEIF $TOOREA == 2.0 { $NEWNAME = $NEWNAME + "2_" + $STOCK } ELSE { $NEWNAME = $NEWNAME + $METINT + "MM-" + $STOCK } RENAME TOOLPATH ; $NEWNAME } MESSAGE INFO "TOOLPATHS RENAMED"
Hi all.
I do not change the toolpath thickness when creating the electrode model toolpath I adjust it by adjusting the ThicknessSetValues.
Since it takes a lot of time to confirm ThicknessSetValues, I thought about a method to check with a macro.
In order to check as easily as possible, display the tool path name of
'Thickness Preferences' different from the specified tool path (or default) in the InfoBox.
However, it can not be determined that the [#] part (component) part is
exactly matched because of only numeric comparisons, but that comparison alone is enough for me.
If you want to compare with any toolpath, 'toolpath.XML' contains
<menupage label="Comparison with this Toolpath" command='MACRO Find_ThicknessSetValues_Unmatched_ToolPath.mac "%s"' /> </menupage>
If you want to compare with the Defaults
<menupage label="Comparison with Surface Defaults" command='MACRO Find_ThicknessSetValues_Unmatched_ToolPath.mac ""' /> </menupage>
Development and operation confirmation was done with PMill2018.
@iamcdn79 a écrit :Nice work, is there a way to get the draft angle displayed without having to hit F2 again? I would just like to pick a point and display that draft angle value
Finally, I modified my macro according to the request of @iamcdn79 . You have to modify the time limit to stop the macro if you spend to much time to select the position on your model :
REAL $TLimit = 200 // Time Limit to select a position
// // Measure and display Draft angle Value // F2 to call the macro // -- F2 Each time you want to measure a new angle // // Version du 25/10/2017 // Version du 12/07/2018 rajout de la version avec 30s pour prendre le temps // FUNCTION MAIN() { REAL $TLimit = 200 // Time Limit to select a position VIEW MODEL ; SHADE UNDERCUT ECHO OFF DCPDEBUG UNTRACE COMMAND ACCEPT DIALOGS MESSAGE OFF MEASURE CLEAR_ALL MODE VECTOR START MEASURE DIRECTION MODE DIRECTION ALIGN GEOM BOOL $F_E=FALSE REAL $LIMIT_WHILE=0 REAL $Timer = 0.25 DO { WAIT $Timer $F_E=BOOL($widget('DirectionInput.Accept').Sensitive) $LIMIT_WHILE=$LIMIT_WHILE+$Timer IF $LIMIT_WHILE>$TLimit { DIRECTION CANCEL MESSAGE ERROR "Exceeded time for point selection $TLimit : $LIMIT_WHILE" MACRO ABORT } } WHILE NOT $F_E // Get the Direction vector REAL V_I= REAL($widget('DirectionInput.DirectionFrame.I').value) REAL V_J= REAL($widget('DirectionInput.DirectionFrame.J').value) REAL V_K= REAL($widget('DirectionInput.DirectionFrame.K').value) REAL Calc =0 IF $V_K == 0 { $Calc=90 } ELSE { $Calc=sqrt(($V_I*$V_I)+($V_J*$V_J)) // PRINT $Calc $Calc = Atan($Calc/$V_K) IF $Calc > 180 { $Calc=$Calc-180 } } DIRECTION CANCEL DIALOGS MESSAGE ON STRING $Result = "Draft angle : " + $round($Calc,2) MESSAGE INFO $Result }
Sorry works only in release 2017, 2018, 2019 ( function WIDGET available since these releases )
@jjohnybgood wrote:Hi
Can this be modified to use in PM2016?
Thank you.
Yes )
// // Measure and display Draft angle Value // F2 to call the macro // FUNCTION MAIN() { If NOT member($session._keys, "DraftAngle") { SESSIONPAR BOOL DraftAngle = 0 } MEASURE CLEAR_ALL MODE VECTOR START MEASURE DIRECTION MODE DIRECTION ALIGN GEOM IF $session.DraftAngle==0 { VIEW MODEL ; SHADE UNDERCUT $session.DraftAngle=1 } ELSE { // Get the Direction vector REAL V_I= 0 REAL V_J= 0 REAL V_K= 0 ECHO OFF DCPDEBUG UNTRACE COMMAND ACCEPT STRING tmp_file = macro_path(0) + "\_temp.txt" TRACEFILE OPEN $tmp_file PRINT FORMVALUE DirectionInput.DirectionFrame.I PRINT FORMVALUE DirectionInput.DirectionFrame.J PRINT FORMVALUE DirectionInput.DirectionFrame.K TRACEFILE CLOSE // read temp file FILE OPEN $tmp_file FOR READ AS GetValue FILE READ $V_I FROM GetValue FILE READ $V_J FROM GetValue FILE READ $V_K FROM GetValue FILE CLOSE GetValue REAL Calc =0 IF $V_K == 0 { $Calc=90 } ELSE { $Calc=sqrt(($V_I*$V_I)+($V_J*$V_J)) // PRINT $Calc $Calc = Atan($Calc/$V_K) if $Calc > 180 { $Calc=$Calc-180 } } STRING $Qry = "Draft angle : " + $round($Calc,3) BOOL Ret = 0 $Ret = QUERY $Qry IF $Ret { DIRECTION ACCEPT $session.DraftAngle=0 } ELSE { // Activate Direction measure mode for next value MODE DIRECTION ALIGN GEOM } }
PS: this macro was adopted for PowerMILL 2016 by user impact from other PM forum.
Try this
// // Measure and display Draft angle Value // F2 to call the macro // -- F2 Each time you want to measure a new angle // // Version du 25/10/2017 // Version du 12/07/2018 rajout de la version avec 30s pour prendre le temps // FUNCTION MAIN() { REAL $TLimit = 200 // Time Limit to select a position VIEW MODEL ; SHADE UNDERCUT ECHO OFF DCPDEBUG UNTRACE COMMAND ACCEPT DIALOGS MESSAGE OFF MEASURE CLEAR_ALL MODE VECTOR START MEASURE DIRECTION MODE DIRECTION ALIGN GEOM BOOL $F_E=FALSE REAL $LIMIT_WHILE=0 REAL $Timer = 0.25 DO { WAIT $Timer $F_E=BOOL($widget('DirectionInput.Accept').Sensitive) $LIMIT_WHILE=$LIMIT_WHILE+$Timer IF $LIMIT_WHILE>$TLimit { DIRECTION CANCEL MESSAGE ERROR "Exceeded time for point selection $TLimit : $LIMIT_WHILE" MACRO ABORT } } WHILE NOT $F_E // Get the Direction vector REAL V_I= REAL($widget('DirectionInput.DirectionFrame.I').value) REAL V_J= REAL($widget('DirectionInput.DirectionFrame.J').value) REAL V_K= REAL($widget('DirectionInput.DirectionFrame.K').value) REAL Calc =0 IF $V_K == 0 { $Calc=0 } ELSE { $Calc=sqrt(($V_I*$V_I)+($V_J*$V_J)) // PRINT $Calc $Calc = Atan($Calc/$V_K) IF $Calc > -180 { $Calc=90-$Calc } } DIRECTION CANCEL DIALOGS MESSAGE ON STRING $Result = "Draft angle : " + $round($Calc,2) MESSAGE INFO $Result }
Playing around with Infoboxes recently I made a macro that lists all selected toolpaths and some parameters for a quick reference and checking over our work. Works like a charm and figured I'd share it here. She gets the job done and makes sure I don't have to flip through a bunch of pages. I dig it, figured others may as well.
// JOB NUMBER AND DETAIL NUMBER VARIABLES FOREACH $pal IN folder('model') { if position ($pal.name,"CAM") >= 0 { FOREACH $mod IN folder('model') { STRING Lname = lcase($mod.name) if position ($lname,"cam") >= 0 { STRING path = pathname(mod) STRING base = basename(path) // MACHINE TOOL VARIABLES DIALOGS MESSAGE OFF ACTIVATE MachineTool "Mazak VCU400a" ACTIVATE MachineTool "Okuma_GENOS_M560_V_No_Guarding" DIALOGS MESSAGE ON STRING MACHNAME = ENTITY('machinetool','').name // INFOBOX TITLE VARIABLES STRING LIST PARTS = tokens(lname, '-') STRING JOBNUMBER = UCASE ($PARTS[0]) STRING DETAILNUMBER = UCASE ($PARTS[1]) STRING SESS = UCASE ($PARTS[3]) STRING PROJECTPATH = "S:\aba-agf\" + $JOBNUMBER + "\Session Files\" + $SESS + "\" + $JOBNUMBER + "-" + $DETAILNUMBER + "-" + $SESS + "\ncprograms\" STRING INFOTITLE = $JOBNUMBER + "-" + $DETAILNUMBER + " TOOLPATH INFO" // COLOUR VARIABLES INT LIST RED = {255,0,0} INT LIST BLACK = {0,0,0} INT LIST GREEN = {0,255,0} INT LIST BLUE = {0,0,255} // TOTAL SIMULATION TIME OF SELECTED TOOLPATHS REAL SIMTOTE = 0 // BUILDS BASE INFOBOX AND ADDS FILE PATH TO IT INFOBOX CLEAR FORMAT INFOBOX STATE "auto_newline" TRUE INFOBOX NEW $INFOTITLE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $RED INFOBOX APPEND "MACHINE: " INFOBOX STATE "underline" FALSE INFOBOX STATE "text_colour" $BLACK INFOBOX APPEND $MACHNAME FOREACH $Selected_Toolpath IN (explorer_selected_entities()) { // Exit if the selected entities are not Toolpaths IF $Selected_Toolpath.RootType != "toolpath" { BREAK } MACRO APPERROR CONTINUE ACTIVATE TOOLPATH $Selected_Toolpath // STRING VARIABLES STRING TPNAME = ENTITY('toolpath','').name STRING TOOLNAME = ENTITY('tool','').name STRING STRAT = UCASE (ENTITY('toolpath','').STRATEGY) STRING TPEDITS = ENTITY('toolpath','').History.Modified STRING LDSIN1 = $TOOLPATH.Connections.LeadIn[0].Type STRING LDSIN2 = $TOOLPATH.Connections.LeadIn[1].Type STRING LDSOUT1 = $TOOLPATH.Connections.LeadOut[0].Type STRING LDSOUT2 = $TOOLPATH.Connections.LeadOut[1].Type STRING LNKS = $Toolpath.Connections.Link[0].Type STRING LNKS2 = $Toolpath.Connections.Link[1].Type STRING LNKS3 = $Toolpath.Connections.Link[3].Type STRING TOONUM = ENTITY('toolpath','').tool.number STRING TOL = ENTITY('toolpath','').TOLERANCE // REAL VARIABLES REAL FR = ROUND ($TOOLPATH.FEEDRATE.CUTTING.VALUE, 1) STRING FRINF = $FR REAL RPM = ROUND ($TOOLPATH.SPINDLESPEED.VALUE, 1) STRING RPMINF = $RPM REAL THICC = Toolpath.Thickness REAL FLTTHICC = Toolpath.AxialThickness REAL SIMIND = $TOOLPATH.Statistics.TotalTime REAL SIMRND = ROUND ($SIMIND, 2) $SIMTOTE = $SIMTOTE + $SIMRND STRING THICCINF = '' STRING THICCINFAXI = '' STRING SIMRNDINF = $SIMRND + " MINUTES" STRING LDSININFSND = '' STRING LDSOUTINFSND = '' IF $toolpath.UseAxialThickness == 1 { $THICCINF = $THICC $THICCINFAXI = $FLTTHICC } ELSE { $THICCINF = $THICC } // TOOLPATH NAME INFOBOX APPEND "" INFOBOX STATE "auto_newline" TRUE INFOBOX STATE "text_colour" $RED INFOBOX STATE "underline" TRUE INFOBOX STATE "bold" TRUE INFOBOX APPEND $TPNAME // STRATEGY INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "STRATEGY:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $STRAT INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" // TOLERANCE INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "TOLERANCE:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $TOL INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" // TOOL INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "TOOL:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $TOOLNAME INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" // TOOL NUMBER IF $TOONUM == "0" { INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "TOOL NUMBER:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND "NO TOOL # ASSIGNED" INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" } ELSE { INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "TOOL NUMBER:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $TOONUM INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" } // RPM INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "RPM:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $RPMINF INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" //FEED INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "FEEDRATE:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $FRINF INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" // POINT DISTRIBUTION IF $TOOLPATH.MaxDistanceBetweenPoints.Active == 1 { REAL PNTS = ROUND ($TOOLPATH.MaxDistanceBetweenPoints.VALUE, 4) STRING PNTSINF = $PNTS INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "MAX DISTANCE BETWEEN POINTS:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $PNTSINF INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" } ELSE { } // THICKNESS IF $toolpath.UseAxialThickness == 1 { INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "THICKNESS:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $THICCINF INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "AXIAL THICKNESS:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $THICCINFAXI INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" } ELSE { INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "THICKNESS:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $THICCINF INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" } // LEADS IN IF $TOOLPATH.Connections.LeadIn[1].Type == "none" { INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "LEADS IN:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $LDSIN1 INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" } ELSE { INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "LEAD IN:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $LDSIN1 INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "LEAD IN 2ND CHOICE:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $LDSIN2 INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" } // LEADS OUT IF $TOOLPATH.Connections.LeadOut[1].Type == "none" { INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "LEAD OUT:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $LDSOUT1 INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" } ELSE { INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "LEAD OUT:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $LDSOUT1 INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "LEAD OUT 2ND CHOICE:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $LDSOUT2 INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" } // LINKS FIRST INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "LINKS 1ST CHOICE:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $LNKS INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" // LINKS SECOND INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "LINKS 2ND CHOICE:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $LNKS2 INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" // SIMULATION TIME INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "TOOLPATH SIMULATION TIME:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $SIMRNDINF INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND " " } // CONVERTS SIM TOTE TO STRING REAL SIMHRS = $SIMTOTE / 60 REAL SIMRND = ROUND ($SIMHRS, 2) STRING SIMTOTEINF = $SIMRND + " HRS" // ADDS TOTAL SIMULATION TIME INFOBOX APPEND "" INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $GREEN INFOBOX STATE "bold" TRUE INFOBOX APPEND "TOTAL SIMULATION TIME OF SELECTED TOOLPATHS:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $SIMTOTEINF INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" } } } } DEACTIVATE MACHINETOOL
@Ye。xg wrote:I used PowerMill Ultimate 2019 to run it, but it didn't work.
Sorry about that, I had some custom variables in there that only work with our model names and file structure. I reworked it a bit for you, this should do the trick. Try this and let me know how it works and if you like it!
// COLOUR VARIABLES INT LIST RED = {255,0,0} INT LIST BLACK = {0,0,0} INT LIST GREEN = {0,255,0} INT LIST BLUE = {0,0,255} // TOTAL SIMULATION TIME OF SELECTED TOOLPATHS REAL SIMTOTE = 0 // BUILDS BASE INFOBOX AND ADDS FILE PATH TO IT INFOBOX CLEAR FORMAT INFOBOX STATE "auto_newline" TRUE INFOBOX NEW "Programs" INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $RED INFOBOX APPEND "MACHINE: " INFOBOX STATE "underline" FALSE INFOBOX STATE "text_colour" $BLACK FOREACH $Selected_Toolpath IN (explorer_selected_entities()) { // Exit if the selected entities are not Toolpaths IF $Selected_Toolpath.RootType != "toolpath" { BREAK } MACRO APPERROR CONTINUE ACTIVATE TOOLPATH $Selected_Toolpath // STRING VARIABLES STRING TPNAME = ENTITY('toolpath','').name STRING TOOLNAME = ENTITY('tool','').name STRING STRAT = UCASE (ENTITY('toolpath','').STRATEGY) STRING TPEDITS = ENTITY('toolpath','').History.Modified STRING LDSIN1 = $TOOLPATH.Connections.LeadIn[0].Type STRING LDSIN2 = $TOOLPATH.Connections.LeadIn[1].Type STRING LDSOUT1 = $TOOLPATH.Connections.LeadOut[0].Type STRING LDSOUT2 = $TOOLPATH.Connections.LeadOut[1].Type STRING LNKS = $Toolpath.Connections.Link[0].Type STRING LNKS2 = $Toolpath.Connections.Link[1].Type STRING LNKS3 = $Toolpath.Connections.Link[3].Type STRING TOONUM = ENTITY('toolpath','').tool.number STRING TOL = ENTITY('toolpath','').TOLERANCE // REAL VARIABLES REAL FR = ROUND ($TOOLPATH.FEEDRATE.CUTTING.VALUE, 1) STRING FRINF = $FR REAL RPM = ROUND ($TOOLPATH.SPINDLESPEED.VALUE, 1) STRING RPMINF = $RPM REAL THICC = Toolpath.Thickness REAL FLTTHICC = Toolpath.AxialThickness REAL SIMIND = $TOOLPATH.Statistics.TotalTime REAL SIMRND = ROUND ($SIMIND, 2) $SIMTOTE = $SIMTOTE + $SIMRND STRING THICCINF = '' STRING THICCINFAXI = '' STRING SIMRNDINF = $SIMRND + " MINUTES" STRING LDSININFSND = '' STRING LDSOUTINFSND = '' IF $toolpath.UseAxialThickness == 1 { $THICCINF = $THICC $THICCINFAXI = $FLTTHICC } ELSE { $THICCINF = $THICC } // TOOLPATH NAME INFOBOX APPEND "" INFOBOX STATE "auto_newline" TRUE INFOBOX STATE "text_colour" $RED INFOBOX STATE "underline" TRUE INFOBOX STATE "bold" TRUE INFOBOX APPEND $TPNAME // STRATEGY INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "STRATEGY:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $STRAT INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" // TOLERANCE INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "TOLERANCE:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $TOL INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" // TOOL INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "TOOL:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $TOOLNAME INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" // TOOL NUMBER IF $TOONUM == "0" { INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "TOOL NUMBER:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND "NO TOOL # ASSIGNED" INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" } ELSE { INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "TOOL NUMBER:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $TOONUM INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" } // RPM INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "RPM:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $RPMINF INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" //FEED INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "FEEDRATE:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $FRINF INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" // POINT DISTRIBUTION IF $TOOLPATH.MaxDistanceBetweenPoints.Active == 1 { REAL PNTS = ROUND ($TOOLPATH.MaxDistanceBetweenPoints.VALUE, 4) STRING PNTSINF = $PNTS INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "MAX DISTANCE BETWEEN POINTS:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $PNTSINF INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" } ELSE { } // THICKNESS IF $toolpath.UseAxialThickness == 1 { INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "THICKNESS:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $THICCINF INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "AXIAL THICKNESS:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $THICCINFAXI INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" } ELSE { INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "THICKNESS:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $THICCINF INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" } // LEADS IN IF $TOOLPATH.Connections.LeadIn[1].Type == "none" { INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "LEADS IN:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $LDSIN1 INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" } ELSE { INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "LEAD IN:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $LDSIN1 INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "LEAD IN 2ND CHOICE:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $LDSIN2 INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" } // LEADS OUT IF $TOOLPATH.Connections.LeadOut[1].Type == "none" { INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "LEAD OUT:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $LDSOUT1 INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" } ELSE { INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "LEAD OUT:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $LDSOUT1 INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "LEAD OUT 2ND CHOICE:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $LDSOUT2 INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" } // LINKS FIRST INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "LINKS 1ST CHOICE:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $LNKS INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" // LINKS SECOND INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "LINKS 2ND CHOICE:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $LNKS2 INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND "" // SIMULATION TIME INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $BLUE INFOBOX STATE "bold" TRUE INFOBOX APPEND "TOOLPATH SIMULATION TIME:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $SIMRNDINF INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND " " } // CONVERTS SIM TOTE TO STRING REAL SIMHRS = $SIMTOTE / 60 REAL SIMRND = ROUND ($SIMHRS, 2) STRING SIMTOTEINF = $SIMRND + " HRS" // ADDS TOTAL SIMULATION TIME INFOBOX APPEND "" INFOBOX STATE "auto_newline" FALSE INFOBOX STATE "underline" TRUE INFOBOX STATE "text_colour" $GREEN INFOBOX STATE "bold" TRUE INFOBOX APPEND "TOTAL SIMULATION TIME OF SELECTED TOOLPATHS:" INFOBOX STATE "text_colour" $BLACK INFOBOX STATE "underline" FALSE INFOBOX STATE "bold" FALSE INFOBOX APPEND " " INFOBOX APPEND $SIMTOTEINF INFOBOX STATE "auto_newline" TRUE INFOBOX APPEND ""
Thank you very much for your reply. Now it works very well. Thanks again.
Hi danmic7JH66,
Can this be changed to also work from active NC Programme? ie where you have a number of toolpaths in the NC Programme then use macro to display details?