PowerMill 2025 and the PowerMill 2025.0.1 Hot Fix were released today. Over the next few weeks, you will see PowerMill 2025 and PowerMill 2025.0.1 Hot Fix availability in your account. Please check your Autodesk Account or Autodesk Access to see when your entitlement is available for download.
When you install PowerMill 2025, the PowerMill 2025.0.1 Hot Fix should automatically install with it. Alternatively, you can download the PowerMill 2025.0.1 Hot Fix from the Product Updates area of your Autodesk Account. To confirm that you've successfully installed the PowerMill 2025.0.1 Hot Fix, select the ? > About menu option in your PowerMill 2025 software and check that you're working in Version: 2025.0.1.2025012.
In the meantime, you can review the Help and Release Notes to see what is being delivered in PowerMill 2025 and the PowerMill 2025.0.1 Hot Fix.
Thank you
In the release notes it says entities can now be copied and pasted between separate instances of Powermill. Does this mean toolpaths? I've noticed that when I right-click on a toolpath there is a new option called "export to clipboard" When I do that I don't see an option of pasting the toolpath into a new Powermill window
The pasting of entities is on the backstage view (since we don't know the entity type that was copied from the RMB)
But yes, you can copy toolpaths with this! (I just tested this myself)
Very good, tested it and it works just couldn't find the paste option. I've been wanting that feature for a long time.
Another question is I have Powermill 2024 icon pinned to my taskbar but when I open Powermill 2025 it uses the same icon, how can I separate them? In the attached pic I have 2024 and 2025 both open but they are using the same pinned icon.
@iamcdn79 wrote:Another question is I have Powermill 2024 icon pinned to my taskbar but when I open Powermill 2025 it uses the same icon, how can I separate them? In the attached pic I have 2024 and 2025 both open but they are using the same pinned icon.
Nevermind, figured it out. But opening 2025 still uses the 2024 icon
Apologies I'm not sure if it's possible. It looks like at least as far back as the 2023 version this issue was present. Do you know if this is a new issue to you?
I've opened PMILL-22401 for the taskbar issue to be looked into.
Can you change the position of the "Export to Clipboard" inside the sub-menus? Years of muscle memory takes me to the top of many of the sub-menus, and now I will be accidentally clicking "Export to Clipboard" anytime I try to enter the "Workplane Editor" or "Simulate from Start" in the toolpath.
LOL I was running into the same issue for "Simulate from Start" in the toolpath
If they put it into the same location as the NC Program that would be better and more consistent
the new function "Export to clipboard" just applies to individual entities.
For example: I have 5 toolpaths. How can I copy and paste all in 1 time?
I can not explore a folder after Import entity.
This is a bug?
Oh dear, I've opened PMILL-22407 for that bug. I did find that creating another toolpath forces the copied toolpath to appear at least.
Thanks for this feedback everyone, it helps us make the product better. I can see that we've been a little inconsistent in how we positioned the 'Export to Clipboard' item, and also having it as the very top item for Toolpaths and Workplanes isn't overly helpful. I've opened PMILL-22408 to address this. I've attached an image showing the changes I plan we'll make.
I Use this macro the export the entities as a powermill project:
if length(project_pathname(0)) == 0 OR project_modified() == 1 {
message warn 'Save First'
return
}
string $path = "C:/Temp/EntityExport"
if dir_exists($path) {
bool $query = 0
$query = query "Replace existing Entities?"
if $query {
delete directory $path
} else {
return
}
}
string list $inputTypes = {'toolpath','tool','boundary','pattern','featureset','workplane'}
int list $indexer = input choice multiple $inputTypes 'Typen Waehlen'
entity list $entitiesToExport = {}
foreach $index in $indexer {
entity list $entities = {}
SWITCH $index {
Case 0
$entities = input entity multiple toolpath 'Werkzeugwege Waehlen'
Break
Case 1
$entities = input entity multiple tool 'Werkzeuge Waehlen'
Break
Case 2
$entities = input entity multiple boundary 'Grenzlinien Waehlen'
Break
Case 3
$entities = input entity multiple pattern 'Muster Waehlen'
Break
Case 4
$entities = input entity multiple featureset 'Featuresets Waehlen'
Break
Case 5
$entities = input entity multiple workplane 'Arbeitsebene Waehlen'
Break
DEFAULT
return
BREAK
}
foreach $ent in $entities {
int $i = add_last($entitiesToExport, $ent)
}
}
mkdir $path
//Active entity file
string $activeEntityFilePath = $path + '/active_entity.pmldat'
string $op = '0 1 # Active Entities (DO NOT EDIT!)'
if file_exists($activeEntityFilePath) {
delete File $activeEntityFilePath
}
file open $activeEntityFilePath for write as output
file write $op to output
file close output
int $entCount = 0
string $content = ''
foreach $e in $entitiesToExport {
if entity_exists($e) {
if $e.RootType == 'toolpath' {
string $eHash = "x" + $e.ID + ".pmlent"
string $e_full = project_pathname(0) + "/" + $eHash
string $path_full = $path + "/" + $eHash
if not file_exists($path_full) {
$entCount = $entCount + 1
$content = $content + $eHash + " pmlEntToolpath '" + $e.Name + "'" + CRLF
}
copy file $e_full $path_full
$eHash = "x" + $e.ID + ".pmlgeom"
$e_full = project_pathname(0) + "/" + $eHash
$path_full = $path + "/" + $eHash
copy file $e_full $path_full
if entity_exists($e.Boundary) {
$eHash = "x" + $e.Boundary.ID + ".pmlent"
$e_full = project_pathname(0) + "/" + $eHash
$path_full = $path + "/" + $eHash
if not file_exists($path_full) {
$entCount = $entCount + 1
$content = $content + $eHash + " pmlEntBoundary '" + $e.Boundary.Name + "'" + CRLF
}
copy file $e_full $path_full
}
if entity_exists($e.Pattern) {
$eHash = "x" + $e.Pattern.ID + ".pmlent"
$e_full = project_pathname(0) + "/" + $eHash
$path_full = $path + "/" + $eHash
if not file_exists($path_full) {
$entCount = $entCount + 1
$content = $content + $eHash + " pmlEntPattern '" + $e.Pattern.Name + "'" + CRLF
}
copy file $e_full $path_full
}
if entity_exists($e.Tool) {
$eHash = "x" + $e.Tool.ID + ".pmlent"
$e_full = project_pathname(0) + "/" + $eHash
$path_full = $path + "/" + $eHash
if not file_exists($path_full) {
$entCount = $entCount + 1
$content = $content + $eHash + " pmlEntTool '" + $e.Tool.Name + "'" + CRLF
}
copy file $e_full $path_full
}
if entity_exists($e.Workplane) {
$eHash = "x" + $e.Workplane.ID + ".pmlent"
$e_full = project_pathname(0) + "/" + $eHash
$path_full = $path + "/" + $eHash
if not file_exists($path_full) {
$entCount = $entCount + 1
$content = $content + $eHash + " pmlEntWorkplane '" + $e.Workplane.Name + "'" + CRLF
}
copy file $e_full $path_full
}
if entity_exists($e.Featureset) {
$eHash = "x" + $e.Featureset.ID + ".pmlent"
$e_full = project_pathname(0) + "/" + $eHash
$path_full = $path + "/" + $eHash
if not file_exists($path_full) {
$entCount = $entCount + 1
$content = $content + $eHash + " pmlEntFeature '" + $e.Featureset.Name + "'" + CRLF
}
copy file $e_full $path_full
}
continue
}
if $e.RootType == 'boundary' {
string $eHash = "x" + $e.Boundary.ID + ".pmlent"
string $e_full = project_pathname(0) + "/" + $eHash
string $path_full = $path + "/" + $eHash
if not file_exists($path_full) {
$entCount = $entCount + 1
$content = $content + $eHash + " pmlEntBoundary '" + $e.Name + "'" + CRLF
}
copy file $e_full $path_full
continue
}
if $e.RootType == 'pattern' {
string $eHash = "x" + $e.Pattern.ID + ".pmlent"
string $e_full = project_pathname(0) + "/" + $eHash
string $path_full = $path + "/" + $eHash
if not file_exists($path_full) {
$entCount = $entCount + 1
$content = $content + $eHash + " pmlEntPattern '" + $e.Name + "'" + CRLF
}
copy file $e_full $path_full
continue
}
if $e.RootType == 'tool' {
string $eHash = "x" + $e.Tool.ID + ".pmlent"
string $e_full = project_pathname(0) + "/" + $eHash
string $path_full = $path + "/" + $eHash
if not file_exists($path_full) {
$entCount = $entCount + 1
$content = $content + $eHash + " pmlEntTool '" + $e.Name + "'" + CRLF
}
copy file $e_full $path_full
continue
}
if $e.RootType == 'workplane' {
string $eHash = "x" + $e.Workplane.ID + ".pmlent"
string $e_full = project_pathname(0) + "/" + $eHash
string $path_full = $path + "/" + $eHash
if not file_exists($path_full) {
$entCount = $entCount + 1
$content = $content + $eHash + " pmlEntWorkplane '" + $e.Name + "'" + CRLF
}
copy file $e_full $path_full
continue
}
if $e.RootType == 'featureset' {
string $eHash = "x" + $e.Featureset.ID + ".pmlent"
string $e_full = project_pathname(0) + "/" + $eHash
string $path_full = $path + "/" + $eHash
if not file_exists($path_full) {
$entCount = $entCount + 1
$content = $content + $eHash + " pmlEntFeature '" + $e.Name + "'" + CRLF
}
copy file $e_full $path_full
continue
}
}
}
if file_exists($activeEntityFilePath) {
delete File $activeEntityFilePath
}
file open $activeEntityFilePath for write as output
file write $op to output
file close output
string $proj_name = "\" + project_pathname(1) + ".pmlprj"
string $path_full = project_pathname(0) + $proj_name
file open $path_full for read as input
string $line1 = ''
string $line2 = ''
string $line3 = ''
file read $line1 from input
file read $line2 from input
file read $line3 from input
file close input
$line1 = $entCount + substring($line1, position($line1, ' ', 0), length($line1))
string $dest_path_full = $path + $proj_name
file open $dest_path_full FOR WRITE AS output
file write $line1 to "output"
file write $line2 to "output"
file write $line3 to "output"
file write $content to "output"
file close output
then in any other powermill project i run this macro to import the project:
bool $query = 0
$query = query "Import Entities?"
if not $query {
return
}
string $path = "C:/Temp/EntityExport"
if not dir_exists($path) {
message warn "Project not found"
macro abort
}
if length(project_pathname(0)) == 0 OR project_modified() == 1 {
bool $save = 0
$save = query 'Save?'
if $save {
project save
} else {
macro abort
}
}
PROJECT IMPORT PROJSELECTOR $path
It does not support all entity types but missing ones could be added.
@thinhvan.nguyen You can do this by putting the toolpaths into a Group and exporting the Group, or by adding them to an NC Program and Exporting the NC Program. No Macro needed that way
Can't find what you're looking for? Ask the community or share your knowledge.