The Humble Hammer
Not being very handy around the house, I own a
We all want to avoid repeated stress-related injuries (physical and emotional). "Mouse Finger" injury is very real! To mitigate this, Ansys Mechanical has this really cool Automation API. Though intended for ACT debugging and creation, the ACT Console allows the user to input commands that is immediately reflected inside Mechanical. This functions like the Input Line in Ansys Classic! Unfortunately Mechanical only speaks Python and not APDL; so I'm just starting to learn a new language which is hard for an old guy like me. The potential benefits are enormous. Here are some examples:
- Say you do non-linear analysis 60% of the time and use the the same settings from a mental checklist. Now you could create Python script to automate those clicks.
- If you have many time steps and wish to set "carry over time step" to "On" for all solution steps in one go
- Create boundary condition objects automatically with name selection created in geometry (e.g. Fixed Support)
ACT Console
The ACT Console can be activated by the little button with a Chevron symbol.
View ACT Console
It is an IronPython 2.7* interpreter so space indentation is important. After you refined your code, you could click on the three little dots to "Add snippet". After naming it, the snippet is easily retrieved on the left panel for future projects with a simple click-Enter.
ACT Console in Action
Some examples below...
Automatic Setup for Selected Nonlinear Analysis Parameters
analysis_settings = ExtAPI.DataModel.Project.Model.Analyses[0].AnalysisSettings
analysis_settings.LargeDeflection = True # Large Deflection
analysis_settings.SaveMAPDLDB = True # Save MAPDL DB model
analysis_settings.NodalForces = Ansys.ACT.Automation.Mechanical.Enums.OutputControlsNodalForcesType.Yes # Save Nodal Force Results
Set carry over time step for second till last solution step to be "On"
analysis_settings = ExtAPI.DataModel.Project.Model.Analyses[0].AnalysisSettings
n = analysis_settings.NumberOfSteps
for ct in range(n-1):
ct2 = ct+2
Ansys.ACT.Automation.Mechanical.AnalysisSettings.ANSYSAnalysisSettings.SetCarryOverTimeStep(analysis_settings,ct2,True)
Create Fixed Support automatically with name selection that has 'fix' in it
num = ExtAPI.DataModel.Project.Model.NamedSelections.Children.Count
for ct in range(num):
nmtmp = ExtAPI.DataModel.Project.Model.NamedSelections.Children[ct].Name
nm = nmtmp.lower() # lowercase for comparison
if nm.find('fix')>=0:
cker = nmtmp+' is fixed' # found one that mets criteria
print cker
fixfix = ExtAPI.DataModel.Project.Model.Analyses[0].AddFixedSupport()
fixfix.Location = ExtAPI.DataModel.Project.Model.NamedSelections.Children[ct]
fixfix.Name = nmtmp+'_auto'
Other Resources
Additional examples can be found here: Link
The Reference Manual is especially useful in finding commands: Link
ACT Developer's Guide: Link
This and Other Related Posts
ACT Console: Link
Text List of Named Selection: Link
ACT to Automate Post-Processing: Link
very useful
ReplyDeleteThank you for a helpful post!
ReplyDeleteYou mentioned that the reference manual is especially useful in finding commands, I on the other hand am struggling with getting a grasp of the logic behind it. When should one for example use "ExtAPI.Datamodel..." and when should one use "Ansys.ACT.Automation..."?
I agree it's not straightforward. I usually try to start out with a given example that is close to what I want, then use the online help to search for the right keywords.
DeleteI am getting and error running this code. Can anyone suggests?
ReplyDeleteThe error is as follows:
" 'NoneType' object has no attribute 'Children':line 24"
Please could you help me with the command to get to the Object Generator by the ACT Console?
ReplyDelete