Community Tip - Need to share some code when posting a question or reply? Make sure to use the "Insert code sample" menu option. Learn more! X
We're thinking of using MathCAD Prime. One of our key requirements is to be able to programmatically print MathCAD Prime files to PDF (i.e. with no user interaction). I know this is possible with MathCAD 15 (you automate printing to PDF from the commandline with MathCAD 15 by adding the "-p" option after the executable and before the filename), but I cannot see how to do it with MathCAD Prime. I've been looking through the API documentation: https://support.ptc.com/help/mathcad/r7.0/en/index.html#page/PTC_Mathcad_Help%2Fmathcad_and_automation_api.html%23. It says that you can print MathCAD Prime worksheets, but I cannot actually find this documented anywhere.
Please could you let me know how to do this, either from the API or from the commandline?
Thanks for your help!
Solved! Go to Solution.
I fear about related functionality up to Mathcad 15 (command mathcad.exe -p test.xmcd😞 this is not part of Mathcad Prime functionality
Workaround: API functionality to save as PDF is introduced with Mathcad Prime 6.0
Ptc.MathcadPrime.Automation.ApplicationCreator mathcad = new Ptc.MathcadPrime.Automation.ApplicationCreator();
IMathcadPrimeWorksheet3 mathcadPrimeWorksheet = mathcad.Open("d:\\test.mcdx") as IMathcadPrimeWorksheet3;
if (mathcadPrimeWorksheet != null)
{
mathcadPrimeWorksheet.SaveAs("d:\\test.pdf");
//Just change the extension of the file here to print to other formats such as RTF.
mathcadPrimeWorksheet.Close(SaveOption.spDiscardChanges);
}
I dont know the but perhaps this:
https://community.ptc.com/t5/PTC-Mathcad/Batch-Printing/td-p/209960 may have some answers.
https://www.fcoder.com/how-to/printing-video-tutorials
Print Conductor allows you to seamlessly print an unlimited number of CAD drawings including MathCAD, MathCAD Prime and Solid Edge drawings, multi-page DWFX drawings, and more. No CAD software required!
Hi,
Thanks for your response.
What I'm really asking, is there a way to automate printing MathCAD Prime? Is there a -p option or is there a scripting language, e.g. VBscript, which you can use to print MathCAD Prime?
I fear about related functionality up to Mathcad 15 (command mathcad.exe -p test.xmcd😞 this is not part of Mathcad Prime functionality
Workaround: API functionality to save as PDF is introduced with Mathcad Prime 6.0
Ptc.MathcadPrime.Automation.ApplicationCreator mathcad = new Ptc.MathcadPrime.Automation.ApplicationCreator();
IMathcadPrimeWorksheet3 mathcadPrimeWorksheet = mathcad.Open("d:\\test.mcdx") as IMathcadPrimeWorksheet3;
if (mathcadPrimeWorksheet != null)
{
mathcadPrimeWorksheet.SaveAs("d:\\test.pdf");
//Just change the extension of the file here to print to other formats such as RTF.
mathcadPrimeWorksheet.Close(SaveOption.spDiscardChanges);
}
Hi, this is great, thanks! I'm guessing the code example you provided is .NET?
Thanks for this. Out of curiosity, will it work for MathCAD Express as well?
Hi, sorry for the delay,
1.
as I know the code will run compiled as C# (C Sharp) language code.
And yes, this is also supported by Microsoft's .NET Framework (for example, create a new Console App .NET Framework project).
2.
I am not sure about Mathcad Prime Express and API support - I could not find any such statement.
I guess a valid reason for that is PTC normally states what is supported, rather than what is not supported.
Another valid reason could be: Mathcad Prime Express is not a different product - it is rather a limited run mode of the full Mathcad Prime product in case a valid license is (even temporary) not available.
And third, since the Express mode is a restriction to specific known features, called Premium features, I cannot imagine that it restricts any customized feature as well (which is nothing but another coding library, but built from customized code by the customer).
I hope this helps,
Michael
The API should work with Mathcad Express.
Fantastic, thanks!
Thanks! I will try it out!
I have a full sub doing this, but in VBA. I don't know if this sub allows providing full code.
@MC_9665161 wrote:
Thanks for this. Out of curiosity, will it work for MathCAD Express as well?
Hi,
please read https://community.ptc.com/t5/Mathcad/Mathcad-Express-free-watermark/td-p/658145. I think you do not want to see watermark in PDF.
Hi
I found this topic very interesting so used my (little) programing skills to write simple GUI program for my own use, that allows batch printing of MCDX files into PDF and RTF files. Works quite fine, it processes as many files as you load into it (as long as you do not mess with it on purpose) 😀
Anyway, can share it from my side, but I am not sure what about legal thing of this.
It is single exe file, that was buit on my computer and as I understand it contains MathCAD API *.dll burnt into it (which is not mine, but PTC owns it). So is here anyone from @admin PTC MathCAD that can say something about legal issue of sharing such exe for the comunity?
It hasn't been written for commercial purposes, just to speed up work and to learn C#, so I do not guarantee that it will work once I share it.
Couldn't edit my previous post, so adding reply.
I figured out how to not 'bake' Mathcad *.dll into the app, so sharing the app with you. Now app uses link to the installation directory and checks it every time you want to print.
PS: read the readme file first. If it will not work. Probably you installed the MathCAD not using default directory, so you must provide proper path in 'config' file.
Good luck!
Thanks for the tool, but unfortunately the tool crashes (see error message below) despite the .dll is present and the .config file is correct.
Does anybody have the same problem or - even better - knows a solution?
Informationen über das Aufrufen von JIT-Debuggen
anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.
************** Ausnahmetext **************
System.Runtime.InteropServices.COMException (0x80004004): Vorgang abgebrochen (Ausnahme von HRESULT: 0x80004004 (E_ABORT))
at Ptc.MathcadPrime.Automation.IMathcadPrimeWorksheet3.SaveAs(String fileName)
at Batch_MathCAD_Printer.MainForm.printFile(String sourceFileName, String sourceFilePath)
at Batch_MathCAD_Printer.MainForm.ExecuteBatch()
at Batch_MathCAD_Printer.MainForm.btnPrint_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, WM msg, IntPtr wparam, IntPtr lparam)
************** Geladene Assemblys **************
System.Private.CoreLib
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.Private.CoreLib.dll.
----------------------------------------
Batch MathCAD Printer
Assembly-Version: 1.0.0.0.
Win32-Version: n/v.
CodeBase: .
----------------------------------------
System.Runtime
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.Runtime.dll.
----------------------------------------
System.Windows.Forms
Assembly-Version: 6.0.2.0.
Win32-Version: 6.0.1222.56810.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.WindowsDesktop.App/6.0.12/System.Windows.Forms.dll.
----------------------------------------
System.ComponentModel.Primitives
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.ComponentModel.Primitives.dll.
----------------------------------------
System.Windows.Forms.Primitives
Assembly-Version: 6.0.2.0.
Win32-Version: 6.0.1222.56810.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.WindowsDesktop.App/6.0.12/System.Windows.Forms.Primitives.dll.
----------------------------------------
System.Runtime.InteropServices
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.Runtime.InteropServices.dll.
----------------------------------------
System.Drawing.Primitives
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.Drawing.Primitives.dll.
----------------------------------------
System.Collections.Specialized
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.Collections.Specialized.dll.
----------------------------------------
System.Threading
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.Threading.dll.
----------------------------------------
System.Diagnostics.TraceSource
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.Diagnostics.TraceSource.dll.
----------------------------------------
System.Collections
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.Collections.dll.
----------------------------------------
System.Drawing.Common
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.WindowsDesktop.App/6.0.12/System.Drawing.Common.dll.
----------------------------------------
Microsoft.Win32.Primitives
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/Microsoft.Win32.Primitives.dll.
----------------------------------------
System.ComponentModel.EventBasedAsync
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.ComponentModel.EventBasedAsync.dll.
----------------------------------------
System.Threading.Thread
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.Threading.Thread.dll.
----------------------------------------
Accessibility
Assembly-Version: 4.0.0.0.
Win32-Version: 6.0.1222.56810.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.WindowsDesktop.App/6.0.12/Accessibility.dll.
----------------------------------------
System.ComponentModel.TypeConverter
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.ComponentModel.TypeConverter.dll.
----------------------------------------
System.Numerics.Vectors
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.Numerics.Vectors.dll.
----------------------------------------
Microsoft.Win32.SystemEvents
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.WindowsDesktop.App/6.0.12/Microsoft.Win32.SystemEvents.dll.
----------------------------------------
System.Collections.Concurrent
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.Collections.Concurrent.dll.
----------------------------------------
System.ComponentModel
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.ComponentModel.dll.
----------------------------------------
System.Memory
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.Memory.dll.
----------------------------------------
System.Resources.Extensions
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.WindowsDesktop.App/6.0.12/System.Resources.Extensions.dll.
----------------------------------------
System.Drawing
Assembly-Version: 6.0.2.0.
Win32-Version: 6.0.1222.56810.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.WindowsDesktop.App/6.0.12/System.Drawing.dll.
----------------------------------------
System.ObjectModel
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.ObjectModel.dll.
----------------------------------------
System.Linq
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.Linq.dll.
----------------------------------------
System.Collections.NonGeneric
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.Collections.NonGeneric.dll.
----------------------------------------
System.Runtime.CompilerServices.Unsafe
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.Runtime.CompilerServices.Unsafe.dll.
----------------------------------------
System.Configuration.ConfigurationManager
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.WindowsDesktop.App/6.0.12/System.Configuration.ConfigurationManager.dll.
----------------------------------------
System.Runtime.InteropServices.RuntimeInformation
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.Runtime.InteropServices.RuntimeInformation.dll.
----------------------------------------
System.Private.Uri
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.Private.Uri.dll.
----------------------------------------
System.Diagnostics.Process
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.Diagnostics.Process.dll.
----------------------------------------
System.Xml.ReaderWriter
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.Xml.ReaderWriter.dll.
----------------------------------------
System.Private.Xml
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.Private.Xml.dll.
----------------------------------------
System.Net.WebClient
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.Net.WebClient.dll.
----------------------------------------
System.Text.Encoding.Extensions
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.Text.Encoding.Extensions.dll.
----------------------------------------
Ptc.MathcadPrime.Automation
Assembly-Version: 9.0.0.0.
Win32-Version: 9.0.0.0.
CodeBase: file:///C:/Program%20Files/PTC/Mathcad%20Prime%209.0.0.0/Ptc.MathcadPrime.Automation.dll.
----------------------------------------
mscorlib
Assembly-Version: 4.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/mscorlib.dll.
----------------------------------------
System.Runtime.Loader
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.Runtime.Loader.dll.
----------------------------------------
System.Windows.Forms.resources
Assembly-Version: 6.0.2.0.
Win32-Version: 6.0.1222.56810.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.WindowsDesktop.App/6.0.12/de/System.Windows.Forms.resources.dll.
----------------------------------------
System.Diagnostics.StackTrace
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.Diagnostics.StackTrace.dll.
----------------------------------------
System.Reflection.Metadata
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.Reflection.Metadata.dll.
----------------------------------------
System.Collections.Immutable
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.Collections.Immutable.dll.
----------------------------------------
System.Diagnostics.FileVersionInfo
Assembly-Version: 6.0.0.0.
Win32-Version: 6.0.1222.56807.
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.12/System.Diagnostics.FileVersionInfo.dll.
----------------------------------------
************** JIT-Debuggen **************
sorry, I don't get notifications on posts. Will answer as typical IT: it worked for me
Now I launched it after almost a year and see that there is a problem. Get the same error. Probably due to either new version of MathCAD or new Windows. Will try to figure it out.
Ok.
I found the problem. C# is quite enigmatic in matter of errors. So the problem was related to the missing output directory. App was written on Windows 10, and at that time the default directory was hardcoded, since for many years desktop directory had typical path. SInce Windows 11, the desktop is located on One Drive automatically, so app didn't see it and throw an error. Now in version 2 it is corrected. Works on my windows 11.
New version is available on google drive (scanned by google): Batch MathCAD Printer-v2.zip
Tool works great but it will only load MCDX and not XMCD files.
probably because there is a separate mathcad license for legacy version of mathcad that allows to convert the file to new extension. Sorry.