Hello kind people,
I'm trying to create a python file that creates a Python Result in the Mechanical Tree, when executed from the "Run Macro..." in the automation tab.
But when I run my file, I get a Python Result that has the right script behind it, But it shows the standard property provider. However I do have the option to change parameters in the "Details of 'Python Result'" tab.

How do I get the right property provider behind the Python Result? I have the property provider in a distinct pyhton file.
Here is my code I run using the "Run Macro..." button:
class Provider(Ansys.ACT.Interfaces.Mechanical.IPropertyProvider):
def IsValid(self, prop):
return True
def IsReadOnly(self, prop):
return False
def IsVisible(self, prop):
return True
def SetValue(self, prop, val):
return val
def GetValue(self, prop, val):
return val
prop_list = []
prop_map = {}
prop_groups = set()
class __AnsGroup():
provider = None
def __init__(self, name=None, provider=None):
self.name = name
self.provider = provider
def AddProperty(self, name=None, prop_control=None, module_name=None):
prop_mod_globals = globals()
prop_class_name = str(prop_control) + "Property"
if prop_class_name not in prop_mod_globals:
raise Exception("Unknown property class : " + prop_class_name)
prop = prop_mod_globals[prop_class_name](self.name + "/" + name, self.name)
prop.IsValidCallback = self.provider.IsValid
prop.IsReadOnlyCallback = self.provider.IsReadOnly
prop.IsVisibleCallback = self.provider.IsVisible
prop.GetValueCallback = self.provider.GetValue
prop.SetValueCallback = self.provider.SetValue
prop.DisplayName = name
self.provider.AddProperty(prop)
return prop
def __init__(self):
pass
def GetProperties(self):
return [self.prop_map[propName] for propName in self.prop_list]
def AddGroup(self, name=None):
if name in self.prop_groups:
raise Exception("Group " + name + " already exists.")
self.prop_groups.add(name)
return self.__AnsGroup(name, self)
def AddProperty(self, prop):
if prop.Name in self.prop_map:
raise Exception("Property '" + prop.Name + "' already exists.")
self.prop_list.append(prop.Name)
self.prop_map[prop.Name] = prop
def main():
solution = Model.Analyses[0].Solution
py_result = solution.AddPythonResult()
py_result.Name = "Permissible cycles"
script_path = r"E:\Python scripts\Permissible number of cycles.py"
with open(script_path, "r") as f:
py_result.Text = f.read()
py_result.PropertyProvider = None
provider = Provider()
group = provider.AddGroup("Parameters")
mat_curve = group.AddProperty("Materialcurve", Control.Options)
mat_curve.Options = {
1: "3F1 < 552MPa High Tensile Steels",
2: "3F2 793 to 892MPa High Tensile Steels",
3: "3F3 3XX High, Aus-Fer RVS, Ni-Cu",
4: "3F4 < 134MPa 70-30 Cu-Ni",
5: "3F5 = 207MPa 70-30 Cu-Ni",
6: "3F6 = 310MPa 70-30 Cu-Ni",
7: "3F7 Ni-Cr-Mo X, G, C-4 C-276",
8: "3F8 < 2,7S_m High Strength Bolting",
9: "3F9 > 2,7S_m High Strength Bolting",
}
Domain = group.AddProperty("Domain % of Salt:", Control.Double)
mat_curve.Value = 1 # standaard 3F1
Domain.Value = 65
group2 = provider.AddGroup("Design Load")
Design_1 = group2.AddProperty("Load 1 [MPa]:", Control.Double)
Design_2 = group2.AddProperty("Load 2 [MPa]:", Control.Double)
Design_3 = group2.AddProperty("Load 3 [MPa]:", Control.Double)
Design_4 = group2.AddProperty("Load 4 [MPa]:", Control.Double)
Design_5 = group2.AddProperty("Load 5 [MPa]:", Control.Double)
Design_6 = group2.AddProperty("Load 6 [MPa]:", Control.Double)
Design_1.Value = 69.0
Design_2.Value = 55.2
Design_3.Value = 41.4
group3 = provider.AddGroup("Number of cycles per DesignLoad")
Cycle_1 = group3.AddProperty("n of cycles Load 1", Control.Double)
Cycle_2 = group3.AddProperty("n of cycles Load 2", Control.Double)
Cycle_3 = group3.AddProperty("n of cycles Load 3", Control.Double)
Cycle_4 = group3.AddProperty("n of cycles Load 4", Control.Double)
Cycle_5 = group3.AddProperty("n of cycles Load 5", Control.Double)
Cycle_6 = group3.AddProperty("n of cycles Load 6", Control.Double)
Cycle_1.Value = 200
Cycle_2.Value = 400
Cycle_3.Value = 1400
group4 = provider.AddGroup("ResultType")
F_result = group4.AddProperty("Result: ", Control.Options)
F_result.Options = {
1: "Sum",
2: "Damage",
3: "Debug 1",
4: "Debug 2",
5: "Debug 3",
6: "Debug 4",
7: "Debug 5",
8: "Debug 6",
}
F_result.Value = 1
py_result.PropertyProvider = provider
py_result.Connect()
main()
I am hoping to hear form you, Thanks in advance
Kind Regards,
Thomas25