77# pylint: disable=bad-mcs-classmethod-argument
88
99
10- class LocalObjectDataExtractor :
11- """Class to extract data for local objects."""
12-
13- class _SurfaceAPI :
14- """Class providing APIs for surface operations."""
15-
16- def __init__ (self , obj ):
17- self .obj = obj
18- self ._surface_name_on_server = self .surface_name_in_server (obj ._name )
19-
20- @staticmethod
21- def surface_name_in_server (local_surface_name ):
22- return "_dummy_surface_for_pyfluent:" + local_surface_name .lower ()
23-
24- def _get_api_handle (self ):
25- return self .obj ._get_top_most_parent ().session .solver .tui .surface
26-
27- def _delete_if_exist_on_server (self ):
28- field_info = self .obj ._data_extractor .field_info ()
29- surfaces_list = list (field_info .get_surfaces_info ().keys ())
30- if self ._surface_name_on_server in surfaces_list :
31- self .delete_surface_on_server ()
32-
33- def create_surface_on_server (self ):
34- if self .obj .surface .type () == "iso-surface" :
35- iso_surface = self .obj .surface .iso_surface
36- field = iso_surface .field ()
37- iso_value = iso_surface .iso_value ()
38- if not field :
39- raise RuntimeError ("Iso surface definition is incomplete." )
40- self ._delete_if_exist_on_server ()
41- self ._get_api_handle ().iso_surface (
42- field , self ._surface_name_on_server , (), (), iso_value , ()
43- )
44- elif self .obj .surface .type () == "plane-surface" :
45- plane_surface = self .obj .surface .plane_surface
46- xy_plane = plane_surface .xy_plane
47- yz_plane = plane_surface .yz_plane
48- zx_plane = plane_surface .zx_plane
49- self ._delete_if_exist_on_server ()
50- self ._get_api_handle ().plane_surface (
51- self ._surface_name_on_server ,
52- "xy-plane" if xy_plane else "yz-plane" if yz_plane else "zx-plane" ,
53- xy_plane .z ()
54- if xy_plane
55- else yz_plane .x ()
56- if yz_plane
57- else zx_plane .y (),
58- )
59- field_info = self .obj ._data_extractor .field_info ()
60- surfaces_list = list (field_info .get_surfaces_info ().keys ())
61- if self ._surface_name_on_server not in surfaces_list :
62- raise RuntimeError ("Surface creation failed." )
63-
64- def delete_surface_on_server (self ):
65- self ._get_api_handle ().delete_surface (self ._surface_name_on_server )
66-
67- def __init__ (self , obj ):
68- self .obj = obj
69- self .field_info = lambda : obj ._get_top_most_parent ().session .field_info
70- self .field_data = lambda : obj ._get_top_most_parent ().session .field_data
71- self .monitors_manager = (
72- lambda : obj ._get_top_most_parent ().session .monitors_manager
73- )
74- self .id = lambda : obj ._get_top_most_parent ().session .id
75- if obj .__class__ .__name__ == "Surface" :
76- self .surface_api = LocalObjectDataExtractor ._SurfaceAPI (obj )
77-
78- def remote_surface_name (self , local_surface_name ):
79- local_surfaces_provider = (
80- self .obj ._get_top_most_parent ()._local_surfaces_provider ()
81- )
82- if local_surface_name in list (local_surfaces_provider ):
83- return LocalObjectDataExtractor ._SurfaceAPI .surface_name_in_server (
84- local_surface_name
85- )
86- else :
87- return local_surface_name
88-
89-
9010class Attribute :
9111 VALID_NAMES = ["range" , "allowed_values" ]
9212
@@ -180,8 +100,8 @@ def wrapper(self, value):
180100
181101 @classmethod
182102 def __create_init (cls ):
183- def wrapper (self , parent ):
184- self ._data_extractor = LocalObjectDataExtractor (self )
103+ def wrapper (self , parent , api_helper ):
104+ self ._api_helper = api_helper (self )
185105 self ._parent = parent
186106 self ._on_change_cbs = []
187107 annotations = self .__class__ .__dict__ .get ("__annotations__" )
@@ -249,9 +169,9 @@ class PyLocalObjectMeta(PyLocalBaseMeta):
249169
250170 @classmethod
251171 def __create_init (cls ):
252- def wrapper (self , parent ):
172+ def wrapper (self , parent , api_helper ):
253173 self ._parent = parent
254- self ._data_extractor = LocalObjectDataExtractor (self )
174+ self ._api_helper = api_helper (self )
255175
256176 def update (clss ):
257177 for name , cls in clss .__dict__ .items ():
@@ -262,13 +182,13 @@ def update(clss):
262182 setattr (
263183 self ,
264184 name ,
265- cls (self ),
185+ cls (self , api_helper ),
266186 )
267187 if cls .__class__ .__name__ == "PyLocalNamedObjectMeta" :
268188 setattr (
269189 self ,
270190 cls .PLURAL ,
271- PyLocalContainer (self , cls ),
191+ PyLocalContainer (self , cls , api_helper ),
272192 )
273193 for base_class in clss .__bases__ :
274194 update (base_class )
@@ -381,9 +301,9 @@ class PyLocalNamedObjectMeta(PyLocalObjectMeta):
381301
382302 @classmethod
383303 def __create_init (cls ):
384- def wrapper (self , name , parent ):
304+ def wrapper (self , name , parent , api_helper ):
385305 self ._name = name
386- self ._data_extractor = LocalObjectDataExtractor (self )
306+ self ._api_helper = api_helper (self )
387307 self ._parent = parent
388308
389309 def update (clss ):
@@ -395,13 +315,13 @@ def update(clss):
395315 setattr (
396316 self ,
397317 name ,
398- cls (self ),
318+ cls (self , api_helper ),
399319 )
400320 if cls .__class__ .__name__ == "PyLocalNamedObjectMeta" :
401321 setattr (
402322 self ,
403323 cls .PLURAL ,
404- PyLocalContainer (self , cls ),
324+ PyLocalContainer (self , cls , api_helper ),
405325 )
406326 for base_class in clss .__bases__ :
407327 update (base_class )
@@ -422,10 +342,11 @@ class PyLocalNamedObjectMetaAbstract(ABCMeta, PyLocalNamedObjectMeta):
422342class PyLocalContainer (MutableMapping ):
423343 """Local container for named objects."""
424344
425- def __init__ (self , parent , object_class ):
345+ def __init__ (self , parent , object_class , api_helper ):
426346 self ._parent = parent
427347 self .__object_class = object_class
428348 self .__collection : dict = {}
349+ self .__api_helper = api_helper
429350
430351 def __iter__ (self ):
431352 return iter (self .__collection )
@@ -438,7 +359,9 @@ def __len__(self):
438359 def __getitem__ (self , name ):
439360 o = self .__collection .get (name , None )
440361 if not o :
441- o = self .__collection [name ] = self .__object_class (name , self )
362+ o = self .__collection [name ] = self .__object_class (
363+ name , self , self .__api_helper
364+ )
442365 return o
443366
444367 # graphics = ansys.fluent.postprocessing.pyvista.Graphics(session1)
0 commit comments