Import Model Macro Suggestions

Import Model Macro Suggestions

Anonymous
Not applicable
3,226 Views
9 Replies
Message 1 of 10

Import Model Macro Suggestions

Anonymous
Not applicable

I have a setup Macro that I'd like to pop up the import model option first. Adjust my workplanes and block then reimport a previous project that is similar to the current model. Whenever I try to use IMPORT MODEL FILEOPEN in a macro with anything else it will error out. I've tried running it as a separate macro called out from this macro but it never stops to give me time to select a new model and just errors out again. If I just paste the text and run in in the command window it will work as intended.

Also does anyone have a faster way to update the reference projects toolpaths workplanes and blocks to match the new models workplane and blocks or a way to delete the reference model in a wildcard $ fashion automatically.

 

Sorry for the long post this is me trying to consolidate multiple macros into one simple to understand process for others.

Thank you in advance ladies/gents.

 

Cheers, Kodi

 

MACRO PAUSE " Choose New Model"

IMPORT MODEL FILEOPEN
DELETE WORKPLANE ALL
FORM BLOCK
EDIT BLOCK TOLERANCE ".01"
EDIT BLOCK RESETLIMIT "0.0"
EDIT BLOCK LIMITTYPE MODEL
EDIT PAR powermill.Options.Block.UseReferenceModel 1
EDIT BLOCKTYPE BOX
EDIT BLOCK COORDINATE NAMED
DRAW BLOCK
EDIT BLOCK DRAWMODE 25
EDIT BLOCK ALL UNLOCK
EDIT BLOCK RESETLIMIT "0.0"
EDIT BLOCK RESET
BLOCK ACCEPT
MODE WORKPLANE_CREATE ; INTERACTIVE BLOCK
MACRO PAUSE "Choose a point on the block"
MODE WORKPLANE_EDIT START "1"
MODE WORKPLANE_EDIT NAME "Top"
MODE WORKPLANE_EDIT SWAP_AXES
MACRO PAUSE "Choose Axes Orientation"
MODE WORKPLANE_EDIT FINISH ACCEPT
ACTIVATE Workplane "Top"
FORM BLOCK
EDIT BLOCK COORDINATE NAMED
EDIT BLOCK NAMEDWORKPLANE "Top"
EDIT BLOCK RESETLIMIT "0.0"
EDIT BLOCK RESET
EDIT BLOCK ZMAX "0.001"
EDIT BLOCK ZMAX LOCK
EDIT BLOCK ZMIN LOCK
EDIT BLOCK RESETLIMIT "0.26"
EDIT BLOCK RESET
MACRO PAUSE "Make Sure On Center"
BLOCK ACCEPT
EDIT TOOLPATH LEADS RAISEFORM
EDIT TOOLPATH LEADS PAGE RAPIDMOVES
EDIT TOOLPATH SAFEAREA MEASURE_FROM BLOCK_AND_MODEL
EDIT PAR 'Rapid.CalculateDimensions.RapidClearance'  ".6"
EDIT PAR 'Rapid.CalculateDimensions.PlungeClearance'  ".1"
EDIT TOOLPATH SAFEAREA CALCULATE_DIMENSIONS
LEADS ACCEPT
//Import Reference Project To Use Toolpaths From

MACRO PAUSE "Import Reference Project"

IMPORT MODEL FILEOPEN

0 Likes
Accepted solutions (3)
3,227 Views
9 Replies
Replies (9)
Message 2 of 10

precicam
Advocate
Advocate
Accepted solution

STRING $filename = ""
$filename = FILESELECT "Select file"
IMPORT MODEL $filename
FORM BLOCK

 

Message 3 of 10

gosmann.andreas
Advocate
Advocate
Accepted solution

u can also choose what kind of file you want to see in the explorer and where u want to search

 

$Filename = FILESELECT "Select the Modell" "*.igs;*.stp;*.STEP;*.dgk;*.sldprt;*.x_t" "P:\."
Message 4 of 10

Anonymous
Not applicable

Works great for the first import at the start of the macro yet on the second import for the reference project I'm getting this error. Any ideas?

 

2-28-18Error.PNG

 

0 Likes
Message 5 of 10

Anonymous
Not applicable

Alright I reread the macro documentation and it looks like its creating a temp variable only within the macro so I edited my second import of the reference model to this so it has another variable now thats working but I have a new error:

 

MACRO PAUSE "Import Reference Project"
STRING Filename1 = ""
$Filename = FILESELECT "Select file"
IMPORT PROJECT $filename
MACRO PAUSE "Delete Reference Model"
DELETE LEVEL EMPTY

 

I am unable to import a reference powermill project it appears. Any command Ideas to import a PMill Project?

 

2-28-18Error2.PNG

 

 

0 Likes
Message 6 of 10

Anonymous
Not applicable

Updated Macro that works:

 

DIALOGS MESSAGE OFF
STRING Filename = ""
$Filename = FILESELECT "Select file"
IMPORT MODEL $filename
DIALOGS MESSAGE ON
ROTATE TRANSFORM ISO1
DELETE WORKPLANE ALL
FORM BLOCK
EDIT BLOCK TOLERANCE ".01"
EDIT BLOCK RESETLIMIT "0.0"
EDIT BLOCK LIMITTYPE MODEL
EDIT PAR powermill.Options.Block.UseReferenceModel 1
EDIT BLOCKTYPE BOX
EDIT BLOCK COORDINATE NAMED
DRAW BLOCK
EDIT BLOCK DRAWMODE 25
EDIT BLOCK ALL UNLOCK
EDIT BLOCK RESETLIMIT "0.0"
EDIT BLOCK RESET
BLOCK ACCEPT
MODE WORKPLANE_CREATE ; INTERACTIVE BLOCK
MACRO PAUSE "Choose a point on the block"
MODE WORKPLANE_EDIT START "1"
MODE WORKPLANE_EDIT NAME "Top"
MODE WORKPLANE_EDIT SWAP_AXES
MACRO PAUSE "Choose Axes Orientation"
MODE WORKPLANE_EDIT FINISH ACCEPT
ACTIVATE Workplane "Top"
FORM BLOCK
EDIT BLOCK COORDINATE NAMED
EDIT BLOCK NAMEDWORKPLANE "Top"
EDIT BLOCK RESETLIMIT "0.0"
EDIT BLOCK RESET
EDIT BLOCK ZMAX "0.001"
EDIT BLOCK ZMAX LOCK
EDIT BLOCK ZMIN LOCK
EDIT BLOCK RESETLIMIT "0.26"
EDIT BLOCK RESET
MACRO PAUSE "Make Sure On Center"
BLOCK ACCEPT
EDIT TOOLPATH LEADS RAISEFORM
EDIT TOOLPATH LEADS PAGE RAPIDMOVES
EDIT TOOLPATH SAFEAREA MEASURE_FROM BLOCK_AND_MODEL
EDIT PAR 'Rapid.CalculateDimensions.RapidClearance'  ".6"
EDIT PAR 'Rapid.CalculateDimensions.PlungeClearance'  ".1"
EDIT TOOLPATH SAFEAREA CALCULATE_DIMENSIONS
LEADS ACCEPT
//Import Reference Project To Use Toolpaths From
MACRO PAUSE "Import New Model"
PROJECT IMPORT PROJSELECTOR
MACRO PAUSE "Delete Reference Model Then Click Resume"
DELETE LEVEL EMPTY
ACTIVATE Workplane "Top"

0 Likes
Message 7 of 10

Anonymous
Not applicable

Final Macro is a little rough but idiot proofs and gets the job done. Feel free to comment and tweak it if better ideas are had.

 

Thanks again guys/gals,

Kodi

 

//Created by Kodi Fanello & Community

DIALOGS MESSAGE OFF
STRING Filename = ""
$Filename = FILESELECT "Select file"
IMPORT MODEL $filename
DIALOGS MESSAGE ON
ROTATE TRANSFORM ISO1
DELETE WORKPLANE ALL
FORM BLOCK
EDIT BLOCK TOLERANCE ".01"
EDIT BLOCK RESETLIMIT "0.0"
EDIT BLOCK LIMITTYPE MODEL
EDIT PAR powermill.Options.Block.UseReferenceModel 1
EDIT BLOCKTYPE BOX
EDIT BLOCK COORDINATE NAMED
DRAW BLOCK
EDIT BLOCK DRAWMODE 25
EDIT BLOCK ALL UNLOCK
EDIT BLOCK RESETLIMIT "0.0"
EDIT BLOCK RESET
BLOCK ACCEPT
MODE WORKPLANE_CREATE ; INTERACTIVE BLOCK
MACRO PAUSE "Choose a point on the block"
MODE WORKPLANE_EDIT START "1"
MODE WORKPLANE_EDIT NAME "Top"
MODE WORKPLANE_EDIT SWAP_AXES
MACRO PAUSE "Choose Axes Orientation"
MODE WORKPLANE_EDIT FINISH ACCEPT
ACTIVATE Workplane "Top"
FORM BLOCK
EDIT BLOCK COORDINATE NAMED
EDIT BLOCK NAMEDWORKPLANE "Top"
EDIT BLOCK RESETLIMIT "0.0"
EDIT BLOCK RESET
EDIT BLOCK ZMAX "0.001"
EDIT BLOCK ZMAX LOCK
EDIT BLOCK ZMIN LOCK
EDIT BLOCK RESETLIMIT "0.26"
EDIT BLOCK RESET
MACRO PAUSE "Make Sure On Center"
BLOCK ACCEPT
EDIT TOOLPATH LEADS RAISEFORM
EDIT TOOLPATH LEADS PAGE RAPIDMOVES
EDIT TOOLPATH SAFEAREA MEASURE_FROM BLOCK_AND_MODEL
EDIT PAR 'Rapid.CalculateDimensions.RapidClearance'  ".6"
EDIT PAR 'Rapid.CalculateDimensions.PlungeClearance'  ".1"
EDIT TOOLPATH SAFEAREA CALCULATE_DIMENSIONS
LEADS ACCEPT
//Import Reference Project To Use Toolpaths From
MACRO PAUSE "Import Reference Project"
PROJECT IMPORT PROJSELECTOR
MACRO PAUSE "Delete Reference Model Then Click Resume"
DELETE LEVEL EMPTY
DELETE NCPROGRAM ALL
ACTIVATE Workplane "Top"
INVALIDATE TOOLPATH ALL YES
FOREACH tp IN folder('toolpath') {
$tp.Workplane = $Workplane
}
FOREACH tp IN folder('toolpath') {
$tp.Block = $Block
}
//Sets All Toolpaths to "Top" Workplane and add basic thickness to all toolpaths
DIALOGS MESSAGE OFF
DIALOGS ERROR OFF
FOREACH tp IN FOLDER('Toolpath') {

    ACTIVATE TOOLPATH $tp.Name
    ACTIVATE Workplane "Top"
    EDIT TOOLPATH ; REAPPLYFROMGUI        
    }
BATCH PROCESS
INVALIDATE TOOLPATH ALL YES
DELETE WORKPLANE ALL
FORM BLOCK
Macro Pause "Double Check Center"
FORM BLOCK

0 Likes
Message 8 of 10

GlennM.MCAM
Collaborator
Collaborator
Accepted solution

FORM BLOCK and BLOCK ACCEPT are not necessary.

 

What do you mean by "Macro Pause "Double Check Center""?

If this is to manually check if the block positive and negative values match, this might be a handy macro:

//get block dimensions
REAL xmin = ROUND ($block.limits.xmin, 4)
REAL xmax = ROUND ($block.limits.xmax, 4)
REAL ymin = ROUND ($block.limits.ymin, 4)
REAL ymax = ROUND ($block.limits.ymax, 4)

//make min values positive
REAL xminpositive = ($xmin * -1)
REAL yminpositive = ($ymin * -1)

//if positive and negative values match
IF $xmax == $xminpositive AND $ymax == $yminpositive {
MESSAGE INFO "X & Y are in center"
// if values don't match
} ELSE {
MESSAGE INFO "NOT CENTERED!"
FORM BLOCK
}

Glenn

 


Intel i7 4790 @ 3.60GHz -16GB RAM - Nvidia Quadro K620 - 250GB SSD - Win 7 Pro x64 SP1
PowerMILL Premium 2019.1 - PowerINSPECT Ultimate OMV 2017 SP6
Message 9 of 10

Anonymous
Not applicable

Owner still wants a Visual/Manual check by the programmer but I love this addition thank you Glenn for the critique. Do you need DIALOGS MESSAGE ON and DIALOGS ERROR ON at the end or does it reset when the Macro ends? Wish I could get the "Top" workplane to fully replace/delete the previous "Top_1" workplane without batch processing and invalidating the toolpaths.

 

//Created by Kodi Fanello & Community
DIALOGS MESSAGE OFF
STRING Filename = ""
$Filename = FILESELECT "Select file"
IMPORT MODEL $filename
DIALOGS MESSAGE ON
ROTATE TRANSFORM ISO1
DELETE WORKPLANE ALL
EDIT BLOCK TOLERANCE ".01"
EDIT BLOCK RESETLIMIT "0.0"
EDIT BLOCK LIMITTYPE MODEL
EDIT PAR powermill.Options.Block.UseReferenceModel 1
EDIT BLOCKTYPE BOX
EDIT BLOCK COORDINATE NAMED
DRAW BLOCK
EDIT BLOCK DRAWMODE 25
EDIT BLOCK ALL UNLOCK
EDIT BLOCK RESETLIMIT "0.0"
EDIT BLOCK RESET
MODE WORKPLANE_CREATE ; INTERACTIVE BLOCK
MACRO PAUSE "Choose a point on the block"
MODE WORKPLANE_EDIT START "1"
MODE WORKPLANE_EDIT NAME "Top"
MODE WORKPLANE_EDIT SWAP_AXES
MACRO PAUSE "Choose Axes Orientation"
MODE WORKPLANE_EDIT FINISH ACCEPT
ACTIVATE Workplane "Top"
EDIT BLOCK COORDINATE NAMED
EDIT BLOCK NAMEDWORKPLANE "Top"
EDIT BLOCK RESETLIMIT "0.0"
EDIT BLOCK RESET
EDIT BLOCK ZMAX "0.001"
EDIT BLOCK ZMAX LOCK
EDIT BLOCK ZMIN LOCK
EDIT BLOCK RESETLIMIT "0.26"
EDIT BLOCK RESET
EDIT TOOLPATH LEADS RAISEFORM
EDIT TOOLPATH LEADS PAGE RAPIDMOVES
EDIT TOOLPATH SAFEAREA MEASURE_FROM BLOCK_AND_MODEL
EDIT PAR 'Rapid.CalculateDimensions.RapidClearance'  ".6"
EDIT PAR 'Rapid.CalculateDimensions.PlungeClearance'  ".1"
EDIT TOOLPATH SAFEAREA CALCULATE_DIMENSIONS
LEADS ACCEPT
//Import Reference Project To Use Toolpaths From
PROJECT IMPORT PROJSELECTOR
MACRO PAUSE "Delete Reference Model Then Click Resume"
DELETE LEVEL EMPTY
DELETE NCPROGRAM ALL
ACTIVATE Workplane "Top"
INVALIDATE TOOLPATH ALL YES
FOREACH tp IN folder('toolpath') {
$tp.Workplane = $Workplane
}
FOREACH tp IN folder('toolpath') {
$tp.Block = $Block
}
//Sets All Toolpaths to "Top" Workplane
DIALOGS MESSAGE OFF
DIALOGS ERROR OFF
FOREACH tp IN FOLDER('Toolpath') {

    ACTIVATE TOOLPATH $tp.Name
    ACTIVATE Workplane "Top"
    EDIT TOOLPATH ; REAPPLYFROMGUI        
    }
BATCH PROCESS
INVALIDATE TOOLPATH ALL YES
DELETE WORKPLANE ALL
//get block dimensions
REAL xmin = ROUND ($block.limits.xmin, 4)
REAL xmax = ROUND ($block.limits.xmax, 4)
REAL ymin = ROUND ($block.limits.ymin, 4)
REAL ymax = ROUND ($block.limits.ymax, 4)

//make min values positive
REAL xminpositive = ($xmin * -1)
REAL yminpositive = ($ymin * -1)

//if positive and negative values match
IF $xmax == $xminpositive AND $ymax == $yminpositive {
MESSAGE INFO "X & Y Are On Center"
// if values don't match
} ELSE {
MESSAGE INFO "NOT CENTERED!"
FORM BLOCK
}
FORM BLOCK
DIALOGS MESSAGE ON
DIALOGS ERROR ON

0 Likes
Message 10 of 10

scott.sides
Contributor
Contributor

I have been using your macro and trying to lean a little  macro programing. I have added creating a feature set and it works great if there is hole in the model but I would like the macro to skip it if no holes exist. is there a way to do that. I tried if and else with no luck.

 

 

 

TRING output_model = ''
IF size($models) == 1 {
$output_model = $models[0]
} ELSE {
$output_model = INPUT ENTITY MODEL "Choose model"
}
//print $models[0]
EDIT MODEL $models[0] SELECT ALL

//CREATE FEATURE SET-----------------------------------------
IF HOLES EXIST {
EDIT FEATURECREATE TYPE HOLE EDIT FEATURECREATE CIRCULAR ON EDIT FEATURECREATE FILTER HOLES EDIT FEATURECREATE TOPDEFINE ABSOLUTE EDIT FEATURECREATE BOTTOMDEFINE ABSOLUTE FORM CANCEL FEATURE
EDIT FEATURECREATE HOLES FIXED ON FORM CREATEHOLE
EDIT FEATURECREATE CREATEHOLES
FORM CANCEL CREATEHOLE
}
Else{

 

 

0 Likes