@@ -366,10 +366,16 @@ def _define_export_to_desktop_dll_functions(self):
366366 self ._dll .getInterconnectGeometryOptimization .argtype = POINTER (c_bool )
367367 self ._dll .getInterconnectGeometryOptimization .restype = c_int
368368
369- self ._dll .setSubstrateType .argtype = c_char_p
370- self ._dll .setSubstrateType .restype = int
371- self ._dll .getSubstrateType .argtypes = [c_char_p , c_int ]
372- self ._dll .getSubstrateType .restype = int
369+ if self ._dll_interface .api_version () >= "2025.2" :
370+ self ._dll .setSubstrateType .argtype = c_int
371+ self ._dll .setSubstrateType .restype = c_int
372+ self ._dll .getSubstrateType .argtype = POINTER (c_int )
373+ self ._dll .getSubstrateType .restype = c_int
374+ else :
375+ self ._dll .setSubstrateType .argtype = c_char_p
376+ self ._dll .setSubstrateType .restype = c_int
377+ self ._dll .getSubstrateType .argtypes = [c_char_p , c_int ]
378+ self ._dll .getSubstrateType .restype = c_int
373379
374380 self ._dll .setEr .argtype = [c_char_p , c_int ]
375381 self ._dll .setEr .restype = c_int
@@ -871,7 +877,7 @@ def export_design(self, export_format=None, export_creation_mode=None, export_pa
871877 export_format = ExportFormat .DIRECT_TO_AEDT
872878 if export_creation_mode is None :
873879 export_creation_mode = ExportCreationMode .OVERWRITE
874- if export_path is None :
880+ if not export_path :
875881 export_path = ""
876882 else :
877883 directory_path = os .path .dirname (export_path )
@@ -898,7 +904,7 @@ def import_tuned_variables(self):
898904
899905 @property
900906 def part_libraries (self ) -> PartLibraries :
901- """Part libraries selection. The default is ``LUMPED``.
907+ """Part libraries selection. The default is ``LUMPED`` if not specified .
902908
903909 The ``PartLibraries`` enum provides a list of all options.
904910
@@ -1276,22 +1282,37 @@ def update_inductor_capacitor_tolerances(self): # pragma: no cover
12761282
12771283 @property
12781284 def substrate_type (self ) -> SubstrateType :
1279- """Substrate type of the filter.
1285+ """Substrate type of the filter. The default is ``MICROSTRIP`` if not specified.
12801286
12811287 The ``SubstrateType`` enum provides a list of all substrate types.
12821288
12831289 Returns
12841290 -------
12851291 :enum:`SubstrateType`
12861292 """
1287- type_string = self ._dll_interface .get_string (self ._dll .getSubstrateType )
1288- return self ._dll_interface .string_to_enum (SubstrateType , type_string )
1293+ # The 25R2 DLL is updated to return the enum value directly
1294+ if self ._dll_interface .api_version () >= "2025.2" :
1295+ index = c_int ()
1296+ substrate_type_list = list (SubstrateType )
1297+ status = self ._dll .getSubstrateType (byref (index ))
1298+ self ._dll_interface .raise_error (status )
1299+ substrate_type = substrate_type_list [index .value ]
1300+ return substrate_type
1301+ # The 25R1 DLL returns the substrate type as a string
1302+ else :
1303+ type_string = self ._dll_interface .get_string (self ._dll .getSubstrateType )
1304+ return self ._dll_interface .string_to_enum (SubstrateType , type_string )
12891305
12901306 @substrate_type .setter
12911307 def substrate_type (self , substrate_type : SubstrateType ):
1292- if substrate_type :
1308+ if self ._dll_interface .api_version () >= "2025.2" :
1309+ # The 25R2 DLL is updated to accept the enum value directly
1310+ status = self ._dll .setSubstrateType (substrate_type .value )
1311+ else :
1312+ # The 25R1 DLL accepts substrate type as a string
12931313 string_value = self ._dll_interface .enum_to_string (substrate_type )
1294- self ._dll_interface .set_string (self ._dll .setSubstrateType , string_value )
1314+ status = self ._dll_interface .set_string (self ._dll .setSubstrateType , string_value )
1315+ self ._dll_interface .raise_error (status )
12951316
12961317 @property
12971318 def substrate_er (self ) -> Union [SubstrateType , str ]:
@@ -1323,7 +1344,7 @@ def substrate_er(self, substrate_input):
13231344 substrate_er_value = substrate_input
13241345 substrate_er_index = - 1
13251346 else :
1326- raise ValueError ("Invalid substrate input. Must be a SubstrateEr enum member or a string. " )
1347+ raise ValueError ("Invalid substrate input. Must be a SubstrateEr enum member or a string" )
13271348 substrate_er_value_bytes = bytes (substrate_er_value , "ascii" )
13281349 status = self ._dll .setEr (substrate_er_value_bytes , substrate_er_index )
13291350 self ._dll_interface .raise_error (status )
@@ -1357,7 +1378,7 @@ def substrate_resistivity(self, substrate_input):
13571378 substrate_resistivity_value = substrate_input
13581379 substrate_resistivity_index = - 1
13591380 else :
1360- raise ValueError ("Invalid substrate input. Must be a SubstrateResistivity enum member or a string. " )
1381+ raise ValueError ("Invalid substrate input. Must be a SubstrateResistivity enum member or a string" )
13611382 substrate_resistivity_value_bytes = bytes (substrate_resistivity_value , "ascii" )
13621383 status = self ._dll .setResistivity (substrate_resistivity_value_bytes , substrate_resistivity_index )
13631384 self ._dll_interface .raise_error (status )
@@ -1391,7 +1412,7 @@ def substrate_loss_tangent(self, substrate_input):
13911412 substrate_loss_tangent_value = substrate_input
13921413 substrate_loss_tangent_index = - 1
13931414 else :
1394- raise ValueError ("Invalid substrate input. Must be a SubstrateEr enum member or a string. " )
1415+ raise ValueError ("Invalid substrate input. Must be a SubstrateEr enum member or a string" )
13951416 substrate_loss_tangent_value_bytes = bytes (substrate_loss_tangent_value , "ascii" )
13961417 status = self ._dll .setLossTangent (substrate_loss_tangent_value_bytes , substrate_loss_tangent_index )
13971418 self ._dll_interface .raise_error (status )
0 commit comments