Hello everyone.
I made the following function in VBA (Excel) to retrieve the value of the variable B from the mathcad file using the API.
The Variable is defined in the file with a unit i.e. B := 2 m
Public Function test2() As Double
Dim objApp As Ptc_MathcadPrime_Automation.Application
Set objApp = New Ptc_MathcadPrime_Automation.Application
Dim b As Ptc_MathcadPrime_Automation.WorksheetReadonlyOptions
Set b = objApp.CreateWorksheetReadonlyOptions
bb = b.SetOptionValue(WorksheetReadonlyOptionNames_RequestToUpdateInputsEnabled, 2)
Dim objCalc As Ptc_MathcadPrime_Automation.IMathcadPrimeWorksheet3
Set objCalc = objApp.OpenEx("C:\Users\kai.jakob\Desktop\Testo.mcdx", b)
Dim a As Ptc_MathcadPrime_Automation.IMathcadPrimeOutputResult
Set a = objCalc.OutputGetRealValue("(@LABEL VARIABLE B)")
Set a = objCalc.OutputGetRealValue("B")
aa = a.RealResult
aaa = a.Units
test2 = aa
objCalc.Close (SaveOption_spSaveChanges)
objApp.Quit (SaveOption_spDiscardChanges)
End Function
The output I get is:
Double: aa = -1.#IND
Unit: aaa = ""
Can anyone tell me what is wrong with those functions?
Solved! Go to Solution.
I was getting the same result (-1.#IND) until I figured out that you must assign your outputs in the Mathcad worksheet.
See the following post I just made: Re: NEW API for Mathcad Prime 3.1 - Page 2 - PTC Community
Good luck.
Ok guys.
I have technically solved the problem: I let Mathcad write a .txt file with the results and units. Excel then reads and deletes the txt.
However I am convinced that there must be an easier solution to this problem.
Has anyone gotten the IMathcadPrimeOutputResult function to work?
Are you trying to write variables from Mathcad to Excel?
Mike
Yes exactly.
Edit: Well the real goal is to 'remote control' a Mathcad-file from Excel.
At the moment I just start the Mathcad-Calculation from the excel. Then I use Mathcad formulas to import values and units from this same Excel file. The Mathcad outputs are then handled with the txt file I mentioned above.
There must be a simpler solution.
Can you use the WRITEEXCEL function?
Mike
WRITEEXCEL only writes into closed Excel files. As the Excel should control Mathcad in vba, closing the file is no real option.
(I have to admit that I could have used a .xlsx instead of the .txt for data-transfer. This would probably have been easier.)
You could pay $9000 for the documentation NEW API for Mathcad Prime 3.1 - PTC Community
I am pondering marking your answer as the right one...
I am sure there is a way to get the result without going via a file. I don't have Prime 3.1 though, so I can't even poke around with an object browser to see what is available.
I was getting the same result (-1.#IND) until I figured out that you must assign your outputs in the Mathcad worksheet.
See the following post I just made: Re: NEW API for Mathcad Prime 3.1 - Page 2 - PTC Community
Good luck.