Getting Outputs with API
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Getting Outputs with API
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.
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
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?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Are you trying to write variables from Mathcad to Excel?
Mike
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Can you use the WRITEEXCEL function?
Mike
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
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.)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
You could pay $9000 for the documentation NEW API for Mathcad Prime 3.1 - PTC Community
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
I am pondering marking your answer as the right one...
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
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.
