Discussion Groups

Simulation Moldflow Insight

Reply
Contributor
MFI-MaF
Posts: 19
Registered: ‎02-17-2013

Using Variables in macros

317 Views, 9 Replies
11-13-2013 01:15 AM

Hello everybody,

 

I'm working on a macro to automate the output of my wanted result files. I made an Input box where the user put in the Node ID and the path of the result file. I've tried to place the variables at the wanted positions in the script, but Moldflow ignores the input.

 

Here is the problematic part of my macro:

 

Does anybody know how i can solve the problem with those two variables?

 

Thanks

 

UserInput = Inputbox("Call node:")
Pfad = Inputbox ("Where do you want to place the resultfile? (z.B.: c:\...\):")


SetLocale("en-us")
Set Synergy = CreateObject("synergy.Synergy")
Synergy.SetUnits "Metric"
Set StudyDoc = Synergy.StudyDoc()
Set EntList = StudyDoc.CreateEntityList() '* create an empty entity list
Set PlotManager = Synergy.PlotManager()
Set Plot = PlotManager.CreatePlotByDsID(1180, True)
Plot.SetXYPlotShowLegend True
Set Viewer = Synergy.Viewer()
Set Plot = Viewer.ActivePlot()
Set PlotManager = Synergy.PlotManager()
Set Plot = PlotManager.FindPlotByName2("Pressure:XY Plot", "Pressure")
Set Viewer = Synergy.Viewer()
EntList.SelectFromString ("& UserInput &")  '* popoulate the entity list
Plot.AddXYPlotCurve(EntList)  '* plot the curve of entity
Viewer.ShowPlot Plot
Plot.SaveXYPlotCurveData ("& Pfad")


EntList.SelectFromString ("& UserInput")  'First problem line
Plot.SaveXYPlotCurveData ("& Pfad")         'second problem line

 

 

 

My next problem is that this code just works for pressure on this way. If I want to use the macro for fiber orientation I have to open the wanted result before runnung the macro:

 

setLocale("en-US")
Set Synergy = CreateObject("synergy.Synergy")
Synergy.SetUnits "Metric"
Set PlotManager = Synergy.PlotManager()
Set Viewer = Synergy.Viewer()
Set probePlot = Viewer.ActivePlot()
Set VectorA = Synergy.CreateVector()
Set VectorB = Synergy.CreateVector()
VectorA.SetXYZ -4.34, 0, -9.6	'ERSTE VEKTORKOORDINATE (Startpunkt)'
VectorB.SetXYZ -4.34, 3, -9.6	'ZWEITE VEKTORKOORDINATE (Endpunkt)'
probePlot.AddProbePlotProbeLine VectorA, VectorB'
probePlot.SaveXYPlotCurveData "& Pfad" '

probePlot.Regenerate

 

Thank you
Please use plain text.
Contributor
MFI-MaF
Posts: 19
Registered: ‎02-17-2013

Re: Using Variables in macros

11-14-2013 12:53 AM in reply to: MFI-MaF

Hi,

 

my first problem, I solved on myself. My fault was a wrong input

EntList.SelectFromString ("& UserInput &")

and this is the correct way:

EntList.SelectFromString (""& UserInput )

 But if someone has an idea for my second problem, it would be very nice if you post it :-)

 

Thanks

Please use plain text.
Product Support
nordhb
Posts: 455
Registered: ‎03-23-2009

Re: Using Variables in macros

11-14-2013 01:15 AM in reply to: MFI-MaF

Hi,

change the row to:

 

Plot.SaveXYPlotCurveData (Pfad)

 That should do it.

 

Regards,

Berndt



Berndt Nordh
Please use plain text.
Contributor
MFI-MaF
Posts: 19
Registered: ‎02-17-2013

Re: Using Variables in macros

11-14-2013 01:20 AM in reply to: nordhb

Hi,

 

sorry I didn't said I've also solved this problem, but thanks :-)

 

Now my problem is to start the script for fiber-orientation without opening the result before. I think that I have to write some configurations in the code like the components xx,yy,zz for example.

 

Thanks

Please use plain text.
Product Support
nordhb
Posts: 455
Registered: ‎03-23-2009

Re: Using Variables in macros

11-14-2013 01:40 AM in reply to: MFI-MaF

Hi,

good you sorted this out.

 

You could use this to find results and plot:

Set Plot = PlotManager.FindPlotByName( "Pressure")
Viewer.ShowPlot Plot 

 Note: The plot name must agree exactly with the result name you want to plot.

 

Hope this helps.

 

Regards,

Berndt



Berndt Nordh
Please use plain text.
Contributor
MFI-MaF
Posts: 19
Registered: ‎02-17-2013

Re: Using Variables in macros

11-20-2013 07:34 AM in reply to: nordhb

Hi,

 

my macro runs now. But one thing I would like to optimize. At the fiber orientation result, you can choose in the options which component you like to take, for exaple (axx,ayy,azz) is it possible to define this and also other components like a13 or a23 and so on?

 

 

Thank you for your help.


Please use plain text.
Product Support
nordhb
Posts: 455
Registered: ‎03-23-2009

Re: Using Variables in macros

11-21-2013 12:43 AM in reply to: MFI-MaF

Hi,

in the plot properties, tab Tensor, you can select the Tensor component such as component of:

Txx or Tyy or Tzz or
Txy or Txz or Tyz

 

Regards,

Berndt 



Berndt Nordh
Please use plain text.
Contributor
MFI-MaF
Posts: 19
Registered: ‎02-17-2013

Re: Using Variables in macros

11-21-2013 12:52 AM in reply to: nordhb

Hi,

 

yes and that I would like to automate in my macro, because I've got a lot of simulations and not enough time to make this manually.. I would like to use this option on the same way I used the other variables before.

I

 

Like this :

 

UserInput = Inputbox("Choose the tensor component: ")

 

And then put the variable at the right position in the code. But I don't know how to realize this, and macro recording don't show it.

 

 

Thanks

Please use plain text.
Contributor
MFI-MaF
Posts: 19
Registered: ‎02-17-2013

Re: Using Variables in macros

11-24-2013 11:40 PM in reply to: MFI-MaF

Has anybody an idea how I can define which tensor component should be used in the macro?

 

 

Thanks

Please use plain text.
Product Support
nordhb
Posts: 455
Registered: ‎03-23-2009

Re: Using Variables in macros

11-28-2013 12:01 AM in reply to: MFI-MaF

Hi,

there is a bit of programming to do this.

You have to extract the fiber tensor information for the node.

 

This is from API reference, which you can find from Autodesk Simulation Moldfow Synergy user interface,

in top-right of window, to the right of question-mark, click the small arrow down and select "API Reference"

 

This example gets tensor result data 4000 (Average fiber orientation)

 

Set IndpValues = Synergy.CreateDoubleArray()
 PlotMgr.GetIndpValues 4000, IndpValues
 Set Ind = Synergy.CreateDoubleArray()
 Ind.AddDouble IndpValues.Val( IndpValues.Size - 1 )
 Set node_1  = Synergy.CreateIntegerArray()
 Set P11 = Synergy.CreateDoubleArray()
 Set P22 = Synergy.CreateDoubleArray()
 Set P33 = Synergy.CreateDoubleArray()
 Set P12 = Synergy.CreateDoubleArray()
 Set P13 = Synergy.CreateDoubleArray()
 Set P23 = Synergy.CreateDoubleArray()
 PlotMgr.GetTensorData 4000, Ind, node_1, P11, P22, P33, P12, P13, P23

By steping through timestep, find node, and get wished tensor you can then build your customized XY-graph.

 

Hope this helps.

 

Regards,

Berndt



Berndt Nordh
Please use plain text.