Community
PowerMill Forum
Welcome to Autodesk’s PowerMill Forums. Share your knowledge, ask questions, and explore popular PowerMill topics.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

PowerMill 2025

39 REPLIES 39
Reply
Message 1 of 40
lawrence.halls83P7Q
6517 Views, 39 Replies

PowerMill 2025

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


Lawrence Halls
QA Engineer

39 REPLIES 39
Message 2 of 40

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

 

iamcdn79_0-1715175951936.png

iamcdn79_1-1715176054163.png

 

 


Intel Core i9 13900KF CPU
128 GB Kingston Beast DDR4 SDRAM
PNY RTX A2000 6GB Video Card
WD 1 TB SSD Hard Drive
Windows 11 Pro

Message 3 of 40
ken.poyner
in reply to: iamcdn79

The pasting of entities is on the backstage view (since we don't know the entity type that was copied from the RMB)

kenpoyner_1-1715180816986.png

 

But yes, you can copy toolpaths with this! (I just tested this myself)

 



Ken Poyner

Software Engineer (PowerMill)
Message 4 of 40
iamcdn79
in reply to: ken.poyner

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_0-1715181644127.png

 


Intel Core i9 13900KF CPU
128 GB Kingston Beast DDR4 SDRAM
PNY RTX A2000 6GB Video Card
WD 1 TB SSD Hard Drive
Windows 11 Pro

Message 5 of 40
iamcdn79
in reply to: iamcdn79


@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. 

 

iamcdn79_0-1715181644127.png

 


Nevermind, figured it out. But opening 2025 still uses the 2024 icon 

iamcdn79_0-1715196665107.png

 


Intel Core i9 13900KF CPU
128 GB Kingston Beast DDR4 SDRAM
PNY RTX A2000 6GB Video Card
WD 1 TB SSD Hard Drive
Windows 11 Pro

Message 6 of 40
ken.poyner
in reply to: iamcdn79

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?



Ken Poyner

Software Engineer (PowerMill)
Message 7 of 40
ken.poyner
in reply to: iamcdn79

I've opened PMILL-22401 for the taskbar issue to be looked into.



Ken Poyner

Software Engineer (PowerMill)
Message 8 of 40

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. 

matthew8L7RE_0-1715279181929.png

 

Message 9 of 40
iamcdn79
in reply to: matthew8L7RE

LOL I was running into the same issue for "Simulate from Start" in the toolpath


Intel Core i9 13900KF CPU
128 GB Kingston Beast DDR4 SDRAM
PNY RTX A2000 6GB Video Card
WD 1 TB SSD Hard Drive
Windows 11 Pro

Message 10 of 40
evo80
in reply to: lawrence.halls83P7Q

Haha, Me too

Message 11 of 40
iamcdn79
in reply to: matthew8L7RE

If they put it into the same location as the NC Program that would be better and more consistent

 

iamcdn79_0-1715352932006.png

 


Intel Core i9 13900KF CPU
128 GB Kingston Beast DDR4 SDRAM
PNY RTX A2000 6GB Video Card
WD 1 TB SSD Hard Drive
Windows 11 Pro

Message 12 of 40

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?

 

Message 13 of 40
icse
in reply to: thinhvan.nguyen

You could do this with a macro

Tags (1)
Message 14 of 40
thinhvan.nguyen
in reply to: icse

Hi @icse 

I can make a macro to select toolpaths and export them to the clipboard, But I'm getting stuck on importing them into another instance of PowerMill. Do you have any code to resolve this?

Message 15 of 40

I can not explore a folder after Import entity.

This is a bug?

Message 16 of 40

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.



Ken Poyner

Software Engineer (PowerMill)
Message 17 of 40
peter.lockyer
in reply to: iamcdn79

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.



Peter Lockyer

Software Development Manager, Fusion 360 Manufacturing and PowerMill

Message 18 of 40
icse
in reply to: thinhvan.nguyen

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.

 

Message 19 of 40
nguyenthinhvt95
in reply to: icse

@icse 

Oh, that be awesome. It's working well. I even can run in the older version.

Message 20 of 40
Sean571
in reply to: thinhvan.nguyen

@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

Sean Wroblewski
Applications Engineer


Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report