示例#1
0
 def __set__(self, obj, value):
     if self.setter:
         if self.cast_to:
             setattr(_CastTo(obj.__dict__[self.zos_interface_attr], self.cast_to), self.property_name, value)
         else:
             setattr(obj.__dict__[self.zos_interface_attr], self.property_name, value)
     else:
         raise AttributeError("Can't set {}".format(self.property_name))
示例#2
0
    def __init__(self, zos_obj):
        
        # dispatcher attribute
        cls_name = repr(zos_obj).split()[0].split('.')[-1] 
        dispatch_attr = '_' + cls_name.lower()    # protocol to be followed to store the ZOS COM object
        self.__dict__[dispatch_attr] = zos_obj
        self._dispatch_attr_value = dispatch_attr # used in __getattr__
        
        # Store base class object 
        self._base_cls_list = inheritance_dict.get(cls_name, None)

        # patch the methods of the base class(s) of the given ZOS object
        if self._base_cls_list:
            for base_cls_name in self._base_cls_list:
                replicate_methods(_CastTo(zos_obj, base_cls_name), self)

        # patch the methods of given ZOS object 
        replicate_methods(zos_obj, self)

        # mark object as wrapped to prevent it from being wrapped subsequently
        self._wrapped = True
示例#3
0
 def __get__(self, obj, objtype):
     if self.cast_to:   
         return wrapped_zos_object(getattr(_CastTo(obj.__dict__[self.zos_interface_attr], self.cast_to), self.property_name))
     else:
         return wrapped_zos_object(getattr(obj.__dict__[self.zos_interface_attr], self.property_name))
示例#4
0
def managed_wrapper_class_factory(zos_obj):
    """Creates and returns a wrapper class of a ZOS object, exposing the ZOS objects 
    methods and propertis, and patching custom specialized attributes

    @param zos_obj: ZOS API Python COM object
    """
    cls_name = repr(zos_obj).split()[0].split('.')[-1]  
    dispatch_attr = '_' + cls_name.lower()  # protocol to be followed to store the ZOS COM object
    
    cdict = {}  # class dictionary

    # patch the properties of the base objects 
    base_cls_list = inheritance_dict.get(cls_name, None)
    if base_cls_list:
        for base_cls_name in base_cls_list:
            getters, setters = get_properties(_CastTo(zos_obj, base_cls_name))
            for each in getters:
                exec("p{} = ZOSPropMapper('{}', '{}', cast_to='{}')".format(each, dispatch_attr, each, base_cls_name), globals(), cdict)
            for each in setters:
                exec("p{} = ZOSPropMapper('{}', '{}', setter=True, cast_to='{}')".format(each, dispatch_attr, each, base_cls_name), globals(), cdict)

    # patch the property attributes of the given ZOS object
    getters, setters = get_properties(zos_obj)
    for each in getters:
        exec("p{} = ZOSPropMapper('{}', '{}')".format(each, dispatch_attr, each), globals(), cdict)
    for each in setters:
        exec("p{} = ZOSPropMapper('{}', '{}', setter=True)".format(each, dispatch_attr, each), globals(), cdict)
    
    def __init__(self, zos_obj):
        
        # dispatcher attribute
        cls_name = repr(zos_obj).split()[0].split('.')[-1] 
        dispatch_attr = '_' + cls_name.lower()    # protocol to be followed to store the ZOS COM object
        self.__dict__[dispatch_attr] = zos_obj
        self._dispatch_attr_value = dispatch_attr # used in __getattr__
        
        # Store base class object 
        self._base_cls_list = inheritance_dict.get(cls_name, None)

        # patch the methods of the base class(s) of the given ZOS object
        if self._base_cls_list:
            for base_cls_name in self._base_cls_list:
                replicate_methods(_CastTo(zos_obj, base_cls_name), self)

        # patch the methods of given ZOS object 
        replicate_methods(zos_obj, self)

        # mark object as wrapped to prevent it from being wrapped subsequently
        self._wrapped = True
    
    # Provide a way to make property calls without the prefix p
    def __getattr__(self, attrname):
        return wrapped_zos_object(getattr(self.__dict__[self._dispatch_attr_value], attrname))

    def __repr__(self):
        if type(self).__name__ == 'IZOSAPI_Application':
            repr_str = "{.__name__}(NumberOfOpticalSystems = {})".format(type(self), self.pNumberOfOpticalSystems)
        else:
            repr_str = "{.__name__}".format(type(self))
        return repr_str
        
    cdict['__init__'] = __init__
    cdict['__getattr__'] = __getattr__
    cdict['__repr__'] = __repr__
    
    # patch custom methods from python files imported as modules
    module_import_str = """
try: 
    from pyzos.zos_obj_override.{module:} import *
except ImportError:
    pass
""".format(module=cls_name.lower() + '_methods')
    exec(module_import_str, globals(), cdict)

    _ = cdict.pop('print_function', None)
    _ = cdict.pop('division', None)
    
    return type(cls_name, (), cdict) 
示例#5
0
文件: ia__methods.py 项目: xzos/pyzos
def GetSettings(self):
    # the IA_.GetSettings() returns IAS_ which is the base class of all other settings 
    # objects such as IAS_FftMtf, IAS_FftMap, etc. The base-class IAS_ objects needs to be 
    # "specialized" for a particular analysis using the _CastTo function. When we apply 
    # CastTo(), the specialized objects "gain" the specific analysis functions and properties.
    # before returning, when we invoke _wrapped_zos_object(), the base-class methods and 
    # properties also gets patched. 
    
    settings_base = self._ia_.GetSettings()
    
    # CastTo the specialized class to add properties if they corresponding 
    # interface class is available in the library, else return generic IAS_
    try:
        if self._ia_.AnalysisType == _constants.AnalysisIDM_RayFan:
            settings = _CastTo(settings_base, 'IAS_RayFan')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_RayTrace:
            settings = _CastTo(settings_base, 'IAS_RayTrace')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_OpticalPathFan:
            settings = _CastTo(settings_base, 'IAS_OpticalPathFan')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_PupilAberrationFan:
            settings = _CastTo(settings_base, 'IAS_PupilAberrationFan')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_FieldCurvatureAndDistortion:
            settings = _CastTo(settings_base, 'IAS_FieldCurvatureAndDistortion')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_FocalShiftDiagram:
            settings = _CastTo(settings_base, 'IAS_FocalShiftDiagram')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_GridDistortion:
            settings = _CastTo(settings_base, 'IAS_GridDistortion')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_LateralColor:
            settings = _CastTo(settings_base, 'IAS_LateralColor')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_LongitudinalAberration:
            settings = _CastTo(settings_base, 'IAS_LongitudinalAberration')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_SeidelCoefficients:
            settings = _CastTo(settings_base, 'IAS_SeidelCoefficients')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_SeidelDiagram:
            settings = _CastTo(settings_base, 'IAS_SeidelDiagram')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_ZernikeAnnularCoefficients:
            settings = _CastTo(settings_base, 'IAS_ZernikeAnnularCoefficients')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_ZernikeCoefficientsVsField:
            settings = _CastTo(settings_base, 'IAS_ZernikeCoefficientsVsField')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_ZernikeFringeCoefficients:
            settings = _CastTo(settings_base, 'IAS_ZernikeFringeCoefficients')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_ZernikeStandardCoefficients:
            settings = _CastTo(settings_base, 'IAS_ZernikeStandardCoefficients')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_FftMtf:
            settings = _CastTo(settings_base, 'IAS_FftMtf')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_FftMtfMap: 
            settings = _CastTo(settings_base, 'IAS_FftMtfMap')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_FftMtfvsField: 
            settings = _CastTo(settings_base, 'IAS_FftMtfvsField')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_FftSurfaceMtf: 
            settings = _CastTo(settings_base, 'IAS_FftSurfaceMtf')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_FftThroughFocusMtf: 
            settings = _CastTo(settings_base, 'IAS_FftThroughFocusMtf')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_GeometricMtf: 
            settings = _CastTo(settings_base, 'IAS_GeometricMtf')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_GeometricMtfMap: 
            settings = _CastTo(settings_base, 'IAS_GeometricMtfMap')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_GeometricMtfvsField: 
            settings = _CastTo(settings_base, 'IAS_GeometricMtfvsField')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_GeometricThroughFocusMtf: 
            settings = _CastTo(settings_base, 'IAS_GeometricThroughFocusMtf')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_HuygensMtf: 
            settings = _CastTo(settings_base, 'IAS_HuygensMtf')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_HuygensMtfvsField: 
            settings = _CastTo(settings_base, 'IAS_HuygensMtfvsField')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_HuygensSurfaceMtf: 
            settings = _CastTo(settings_base, 'IAS_HuygensSurfaceMtf')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_HuygensThroughFocusMtf: 
            settings = _CastTo(settings_base, 'IAS_HuygensThroughFocusMtf')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_FftPsf: 
            settings = _CastTo(settings_base, 'IAS_FftPsf')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_FftPsfCrossSection: 
            settings = _CastTo(settings_base, 'IAS_FftPsfCrossSection')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_FftPsfLineEdgeSpread: 
            settings = _CastTo(settings_base, 'IAS_FftPsfLineEdgeSpread')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_HuygensPsfCrossSection:
            settings = _CastTo(settings_base, 'IAS_HuygensPsfCrossSection')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_HuygensPsf:
            settings = _CastTo(settings_base, 'IAS_HuygensPsf')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_DiffractionEncircledEnergy:
            settings = _CastTo(settings_base, 'IAS_DiffractionEncircledEnergy')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_GeometricEncircledEnergy:
            settings = _CastTo(settings_base, 'IAS_GeometricEncircledEnergy')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_GeometricLineEdgeSpread:
            settings = _CastTo(settings_base, 'IAS_GeometricLineEdgeSpread')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_ExtendedSourceEncircledEnergy:
            settings = _CastTo(settings_base, 'IAS_ExtendedSourceEncircledEnergy')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_SurfaceCurvatureCross:
            settings = _CastTo(settings_base, 'IAS_SurfaceCurvatureCross')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_SurfacePhaseCross:
            settings = _CastTo(settings_base, 'IAS_SurfacePhaseCross')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_SurfaceSagCross:
            settings = _CastTo(settings_base, 'IAS_SurfaceSagCross')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_SurfaceCurvature:
            settings = _CastTo(settings_base, 'IAS_SurfaceCurvature')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_SurfacePhase:
            settings = _CastTo(settings_base, 'IAS_SurfacePhase')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_SurfaceSag:
            settings = _CastTo(settings_base, 'IAS_SurfaceSag')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_StandardSpot:
            settings = _CastTo(settings_base, 'IAS_StandardSpot')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_ThroughFocusSpot:
            settings = _CastTo(settings_base, 'IAS_ThroughFocusSpot')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_FullFieldSpot:
            settings = _CastTo(settings_base, 'IAS_FullFieldSpot')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_MatrixSpot:
            settings = _CastTo(settings_base, 'IAS_MatrixSpot')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_ConfigurationMatrixSpot:
            settings = _CastTo(settings_base, 'IAS_ConfigurationMatrixSpot')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_RMSField:
            settings = _CastTo(settings_base, 'IAS_RMSField')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_RMSFieldMap:
            settings = _CastTo(settings_base, 'IAS_RMSFieldMap')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_RMSLambdaDiagram:
            settings = _CastTo(settings_base, 'IAS_RMSLambdaDiagram')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_RMSFocus:
            settings = _CastTo(settings_base, 'IAS_RMSFocus')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_Foucault:
            settings = _CastTo(settings_base, 'IAS_Foucault')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_Interferogram:
            settings = _CastTo(settings_base, 'IAS_Interferogram')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_WavefrontMap:
            settings = _CastTo(settings_base, 'IAS_WavefrontMap')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_DetectorViewer:
            settings = _CastTo(settings_base, 'IAS_DetectorViewer')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_Draw2D:
            settings = _CastTo(settings_base, 'IAS_Draw2D')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_Draw3D:
            settings = _CastTo(settings_base, 'IAS_Draw3D')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_ImageSimulation:
            settings = _CastTo(settings_base, 'IAS_ImageSimulation')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_GeometricImageAnalysis:
            settings = _CastTo(settings_base, 'IAS_GeometricImageAnalysis')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_IMABIMFileViewer:
            settings = _CastTo(settings_base, 'IAS_IMABIMFileViewer')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_GeometricBitmapImageAnalysis:
            settings = _CastTo(settings_base, 'IAS_GeometricBitmapImageAnalysis')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_BitmapFileViewer:
            settings = _CastTo(settings_base, 'IAS_BitmapFileViewer')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_LightSourceAnalysis:
            settings = _CastTo(settings_base, 'IAS_LightSourceAnalysis')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_PartiallyCoherentImageAnalysis:
            settings = _CastTo(settings_base, 'IAS_PartiallyCoherentImageAnalysis')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_ExtendedDiffractionImageAnalysis:
            settings = _CastTo(settings_base, 'IAS_ExtendedDiffractionImageAnalysis')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_BiocularFieldOfViewAnalysis:
            settings = _CastTo(settings_base, 'IAS_BiocularFieldOfViewAnalysis')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_BiocularDipvergenceConvergence:
            settings = _CastTo(settings_base, 'IAS_BiocularDipvergenceConvergence')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_RelativeIllumination:
            settings = _CastTo(settings_base, 'IAS_RelativeIllumination')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_VignettingDiagramSettings:
            settings = _CastTo(settings_base, 'IAS_VignettingDiagramSettings')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_FootprintSettings:
            settings = _CastTo(settings_base, 'IAS_FootprintSettings')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_YYbarDiagram:
            settings = _CastTo(settings_base, 'IAS_YYbarDiagram')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_PowerFieldMapSettings:
            settings = _CastTo(settings_base, 'IAS_PowerFieldMapSettings')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_PowerPupilMapSettings:
            settings = _CastTo(settings_base, 'IAS_PowerPupilMapSettings')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_IncidentAnglevsImageHeight:
            settings = _CastTo(settings_base, 'IAS_IncidentAnglevsImageHeight')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_FiberCouplingSettings:
            settings = _CastTo(settings_base, 'IAS_FiberCouplingSettings')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_YNIContributions:
            settings = _CastTo(settings_base, 'IAS_YNIContributions')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_SagTable:
            settings = _CastTo(settings_base, 'IAS_SagTable')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_CardinalPoints:
            settings = _CastTo(settings_base, 'IAS_CardinalPoints')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_DispersionDiagram:
            settings = _CastTo(settings_base, 'IAS_DispersionDiagram')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_GlassMap:
            settings = _CastTo(settings_base, 'IAS_GlassMap')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_AthermalGlassMap:
            settings = _CastTo(settings_base, 'IAS_AthermalGlassMap')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_InternalTransmissionvsWavelength:
            settings = _CastTo(settings_base, 'IAS_InternalTransmissionvsWavelength')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_DispersionvsWavelength:
            settings = _CastTo(settings_base, 'IAS_DispersionvsWavelength')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_GrinProfile:
            settings = _CastTo(settings_base, 'IAS_GrinProfile')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_GradiumProfile:
            settings = _CastTo(settings_base, 'IAS_GradiumProfile')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_UniversalPlot1D:
            settings = _CastTo(settings_base, 'IAS_UniversalPlot1D')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_UniversalPlot2D:
            settings = _CastTo(settings_base, 'IAS_UniversalPlot2D')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_PolarizationRayTrace:
            settings = _CastTo(settings_base, 'IAS_PolarizationRayTrace')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_PolarizationPupilMap:
            settings = _CastTo(settings_base, 'IAS_PolarizationPupilMap')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_Transmission:
            settings = _CastTo(settings_base, 'IAS_Transmission')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_PhaseAberration:
            settings = _CastTo(settings_base, 'IAS_PhaseAberration')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_TransmissionFan:
            settings = _CastTo(settings_base, 'IAS_TransmissionFan')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_ParaxialGaussianBeam:
            settings = _CastTo(settings_base, 'IAS_ParaxialGaussianBeam')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_SkewGaussianBeam:
            settings = _CastTo(settings_base, 'IAS_SkewGaussianBeam')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_PhysicalOpticsPropagation:
            settings = _CastTo(settings_base, 'IAS_PhysicalOpticsPropagation')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_BeamFileViewer:
            settings = _CastTo(settings_base, 'IAS_BeamFileViewer')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_ReflectionvsAngle:
            settings = _CastTo(settings_base, 'IAS_ReflectionvsAngle')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_TransmissionvsAngle:
            settings = _CastTo(settings_base, 'IAS_TransmissionvsAngle')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_AbsorptionvsAngle:
            settings = _CastTo(settings_base, 'IAS_AbsorptionvsAngle')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_DiattenuationvsAngle:
            settings = _CastTo(settings_base, 'IAS_DiattenuationvsAngle')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_PhasevsAngle:
            settings = _CastTo(settings_base, 'IAS_PhasevsAngle')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_RetardancevsAngle:
            settings = _CastTo(settings_base, 'IAS_RetardancevsAngle')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_ReflectionvsWavelength:
            settings = _CastTo(settings_base, 'IAS_ReflectionvsWavelength')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_TransmissionvsWavelength:
            settings = _CastTo(settings_base, 'IAS_TransmissionvsWavelength')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_AbsorptionvsWavelength:
            settings = _CastTo(settings_base, 'IAS_AbsorptionvsWavelength')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_DiattenuationvsWavelength:
            settings = _CastTo(settings_base, 'IAS_DiattenuationvsWavelength')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_PhasevsWavelength:
            settings = _CastTo(settings_base, 'IAS_PhasevsWavelength')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_RetardancevsWavelength:
            settings = _CastTo(settings_base, 'IAS_RetardancevsWavelength')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_DirectivityPlot:
            settings = _CastTo(settings_base, 'IAS_DirectivityPlot')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_SourcePolarViewer:
            settings = _CastTo(settings_base, 'IAS_SourcePolarViewer')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_PhotoluminscenceViewer:
            settings = _CastTo(settings_base, 'IAS_PhotoluminscenceViewer')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_SourceSpectrumViewer:
            settings = _CastTo(settings_base, 'IAS_SourceSpectrumViewer')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_RadiantSourceModelViewerSettings:
            settings = _CastTo(settings_base, 'IAS_RadiantSourceModelViewerSettings')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_SurfaceDataSettings:
            settings = _CastTo(settings_base, 'IAS_SurfaceDataSettings')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_PrescriptionDataSettings:
            settings = _CastTo(settings_base, 'IAS_PrescriptionDataSettings')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_FileComparatorSettings:
            settings = _CastTo(settings_base, 'IAS_FileComparatorSettings')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_PartViewer:
            settings = _CastTo(settings_base, 'IAS_PartViewer')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_ReverseRadianceAnalysis:
            settings = _CastTo(settings_base, 'IAS_ReverseRadianceAnalysis') 
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_PathAnalysis:
            settings = _CastTo(settings_base, 'IAS_PathAnalysis')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_FluxvsWavelength:
            settings = _CastTo(settings_base, 'IAS_FluxvsWavelength')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_RoadwayLighting:
            settings = _CastTo(settings_base, 'IAS_RoadwayLighting')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_SourceIlluminationMap:
            settings = _CastTo(settings_base, 'IAS_SourceIlluminationMap')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_ScatterFunctionViewer:
            settings = _CastTo(settings_base, 'IAS_ScatterFunctionViewer')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_ScatterPolarPlotSettings:
            settings = _CastTo(settings_base, 'IAS_ScatterPolarPlotSettings')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_ZemaxElementDrawing:
            settings = _CastTo(settings_base, 'IAS_ZemaxElementDrawing')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_ShadedModel:
            settings = _CastTo(settings_base, 'IAS_ShadedModel')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_NSCShadedModel:
            settings = _CastTo(settings_base, 'IAS_NSCShadedModel')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_NSC3DLayout:
            settings = _CastTo(settings_base, 'IAS_NSC3DLayout')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_NSCObjectViewer:
            settings = _CastTo(settings_base, 'IAS_NSCObjectViewer')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_RayDatabaseViewer:
            settings = _CastTo(settings_base, 'IAS_RayDatabaseViewer')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_ISOElementDrawing:
            settings = _CastTo(settings_base, 'IAS_ISOElementDrawing')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_SystemData:
            settings = _CastTo(settings_base, 'IAS_SystemData')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_TestPlateList:
            settings = _CastTo(settings_base, 'IAS_TestPlateList')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_SourceColorChart1931:
            settings = _CastTo(settings_base, 'IAS_SourceColorChart1931')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_SourceColorChart1976:
            settings = _CastTo(settings_base, 'IAS_SourceColorChart1976')
        elif self._ia_.AnalysisType == _constants.AnalysisIDM_PrescriptionGraphic:
            settings = _CastTo(settings_base, 'IAS_PrescriptionGraphic')
    except ValueError as err:
        _warnings.warn("Couldn't find and cast to specialized analysis settings.", stacklevel=2)
        settings = settings_base

    # create the settings object 
    settings = _wrapped_zos_object(settings)

    return settings

# Extra methods
# -------------