diff --git a/doc/changelog.d/673.test.md b/doc/changelog.d/673.test.md new file mode 100644 index 000000000..028e8cc3e --- /dev/null +++ b/doc/changelog.d/673.test.md @@ -0,0 +1 @@ +Further updates/support for intensity sensor \ No newline at end of file diff --git a/src/ansys/speos/core/project.py b/src/ansys/speos/core/project.py index d26149daf..ae1e93722 100644 --- a/src/ansys/speos/core/project.py +++ b/src/ansys/speos/core/project.py @@ -47,6 +47,7 @@ SensorCamera, SensorIrradiance, SensorRadiance, + SensorXMPIntensity, ) from ansys.speos.core.simulation import ( SimulationDirect, @@ -316,7 +317,9 @@ def create_sensor( description: str = "", feature_type: type = SensorIrradiance, metadata: Optional[Mapping[str, str]] = None, - ) -> Union[SensorCamera, SensorRadiance, SensorIrradiance, Sensor3DIrradiance]: + ) -> Union[ + SensorCamera, SensorRadiance, SensorIrradiance, Sensor3DIrradiance, SensorXMPIntensity + ]: """Create a new Sensor feature. Parameters @@ -362,6 +365,13 @@ def create_sensor( description=description, metadata=metadata, ) + case "SensorXMPIntensity": + feature = SensorXMPIntensity( + project=self, + name=name, + description=description, + metadata=metadata, + ) case "SensorRadiance": feature = SensorRadiance( project=self, @@ -825,6 +835,13 @@ def _fill_features(self): sensor_instance=ssr_inst, default_values=False, ) + elif ssr_inst.HasField("intensity_properties"): + ssr_feat = SensorXMPIntensity( + project=self, + name=ssr_inst.name, + sensor_instance=ssr_inst, + default_values=False, + ) elif ssr_inst.HasField("camera_properties"): ssr_feat = SensorCamera( project=self, @@ -965,7 +982,7 @@ def _create_speos_feature_preview( ): return plotter - ray_path_scale_factor = 0.2 + ray_path_scale_factor = 0.0 match speos_feature: case SourceRayFile() | SourceLuminaire() | SourceSurface(): diff --git a/src/ansys/speos/core/sensor.py b/src/ansys/speos/core/sensor.py index 11995a316..c07adef24 100644 --- a/src/ansys/speos/core/sensor.py +++ b/src/ansys/speos/core/sensor.py @@ -3822,8 +3822,10 @@ def __init__( self.set_type_photometric() self.set_orientation_x_as_meridian() self.set_viewing_direction_from_source() + self._set_default_dimension_values() # Default values properties - self.set_axis_system().set_layer_type_none() + self.set_axis_system() # .set_layer_type_none() + self.set_layer_type_none() @property def nearfield(self) -> bool: @@ -3959,6 +3961,25 @@ def layer( """ return self._layer_type + def set_axis_system(self, axis_system: Optional[List[float]] = None) -> SensorXMPIntensity: + """Set position of the sensor. + + Parameters + ---------- + axis_system : Optional[List[float]] + Position of the sensor [Ox Oy Oz Xx Xy Xz Yx Yy Yz Zx Zy Zz]. + By default, ``[0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1]``. + + Returns + ------- + ansys.speos.core.sensor.SensorXMPIntensity + intensity sensor. + """ + if axis_system is None: + axis_system = [0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1] + self._sensor_instance.intensity_properties.axis_system[:] = axis_system + return self + def set_orientation_x_as_meridian(self): """Set Orientation type: X As Meridian, Y as Parallel.""" self._sensor_template.intensity_sensor_template.intensity_orientation_x_as_meridian.SetInParent() @@ -4294,7 +4315,7 @@ def set_type_spectral(self) -> BaseSensor.Spectral: ) return self._type - def set_layer_type_none(self) -> SensorRadiance: + def set_layer_type_none(self) -> SensorXMPIntensity: """Define layer separation type as None. Returns