diff --git a/cpp/src/bindings.cpp b/cpp/src/bindings.cpp index bbd8e18915..82d61115c3 100644 --- a/cpp/src/bindings.cpp +++ b/cpp/src/bindings.cpp @@ -480,7 +480,9 @@ PYBIND11_MODULE(_pypowsybl, m) { .def_readwrite("current_value_precision", &pypowsybl::NadParameters::current_value_precision) .def_readwrite("angle_value_precision", &pypowsybl::NadParameters::angle_value_precision) .def_readwrite("voltage_value_precision", &pypowsybl::NadParameters::voltage_value_precision) - .def_readwrite("id_displayed", &pypowsybl::NadParameters::id_displayed); + .def_readwrite("id_displayed", &pypowsybl::NadParameters::id_displayed) + .def_readwrite("bus_legend", &pypowsybl::NadParameters::bus_legend) + .def_readwrite("substation_description_displayed", &pypowsybl::NadParameters::substation_description_displayed); m.def("write_single_line_diagram_svg", &pypowsybl::writeSingleLineDiagramSvg, "Write single line diagram SVG", py::arg("network"), py::arg("container_id"), py::arg("svg_file"), py::arg("metadata_file"), py::arg("sld_parameters")); diff --git a/cpp/src/pypowsybl-api.h b/cpp/src/pypowsybl-api.h index 2125e9dd32..50b68bbe36 100644 --- a/cpp/src/pypowsybl-api.h +++ b/cpp/src/pypowsybl-api.h @@ -316,6 +316,8 @@ typedef struct nad_parameters_struct { int current_value_precision; int angle_value_precision; int voltage_value_precision; + unsigned char substation_description_displayed; + unsigned char bus_legend; } nad_parameters; typedef enum { diff --git a/cpp/src/pypowsybl.cpp b/cpp/src/pypowsybl.cpp index 9f35f0ba09..23c3b7a047 100644 --- a/cpp/src/pypowsybl.cpp +++ b/cpp/src/pypowsybl.cpp @@ -1257,6 +1257,8 @@ NadParameters::NadParameters(nad_parameters* src) { current_value_precision = src->current_value_precision; angle_value_precision = src->angle_value_precision; voltage_value_precision = src->voltage_value_precision; + substation_description_displayed = src->substation_description_displayed; + bus_legend = src->bus_legend; } void SldParameters::sld_to_c_struct(sld_parameters& res) const { @@ -1276,6 +1278,8 @@ void NadParameters::nad_to_c_struct(nad_parameters& res) const { res.current_value_precision = current_value_precision; res.angle_value_precision = angle_value_precision; res.voltage_value_precision = voltage_value_precision; + res.substation_description_displayed = substation_description_displayed; + res.bus_legend = bus_legend; } std::shared_ptr SldParameters::to_c_struct() const { diff --git a/cpp/src/pypowsybl.h b/cpp/src/pypowsybl.h index e0c1a5de49..e9b8771c5a 100644 --- a/cpp/src/pypowsybl.h +++ b/cpp/src/pypowsybl.h @@ -290,6 +290,8 @@ class NadParameters { int current_value_precision; int angle_value_precision; int voltage_value_precision; + bool bus_legend; + bool substation_description_displayed; }; char* copyStringToCharPtr(const std::string& str); diff --git a/java/src/main/java/com/powsybl/python/commons/PyPowsyblApiHeader.java b/java/src/main/java/com/powsybl/python/commons/PyPowsyblApiHeader.java index 5f4a8a4d78..32f76a6531 100644 --- a/java/src/main/java/com/powsybl/python/commons/PyPowsyblApiHeader.java +++ b/java/src/main/java/com/powsybl/python/commons/PyPowsyblApiHeader.java @@ -1042,6 +1042,18 @@ public interface NadParametersPointer extends PointerBase { @CField("voltage_value_precision") int getVoltageValuePrecision(); + + @CField("bus_legend") + void setBusLegend(boolean busLegend); + + @CField("bus_legend") + boolean isBusLegend(); + + @CField("substation_description_displayed") + void setSubstationDescriptionDisplayed(boolean substationDescriptionDisplayed); + + @CField("substation_description_displayed") + boolean isSubstationDescriptionDisplayed(); } @CEnum("DynamicMappingType") diff --git a/java/src/main/java/com/powsybl/python/network/NetworkCFunctions.java b/java/src/main/java/com/powsybl/python/network/NetworkCFunctions.java index 3092af5e36..de8ba40bdf 100644 --- a/java/src/main/java/com/powsybl/python/network/NetworkCFunctions.java +++ b/java/src/main/java/com/powsybl/python/network/NetworkCFunctions.java @@ -894,7 +894,8 @@ public static void copyToCNadParameters(NadParameters parameters, NadParametersP cParameters.setCurrentValuePrecision(parameters.getSvgParameters().getCurrentValuePrecision()); cParameters.setAngleValuePrecision(parameters.getSvgParameters().getAngleValuePrecision()); cParameters.setVoltageValuePrecision(parameters.getSvgParameters().getVoltageValuePrecision()); - + cParameters.setBusLegend(parameters.getSvgParameters().isBusLegend()); + cParameters.setSubstationDescriptionDisplayed(parameters.getSvgParameters().isSubstationDescriptionDisplayed()); } @CEntryPoint(name = "createNadParameters") @@ -944,7 +945,9 @@ public static NadParameters convertNadParameters(NadParametersPointer nadParamet .setCurrentValuePrecision(nadParametersPointer.getCurrentValuePrecision()) .setAngleValuePrecision(nadParametersPointer.getAngleValuePrecision()) .setVoltageValuePrecision(nadParametersPointer.getVoltageValuePrecision()) - .setIdDisplayed(nadParametersPointer.isIdDisplayed()); + .setIdDisplayed(nadParametersPointer.isIdDisplayed()) + .setBusLegend(nadParametersPointer.isBusLegend()) + .setSubstationDescriptionDisplayed(nadParametersPointer.isSubstationDescriptionDisplayed()); return nadParameters; } diff --git a/pypowsybl/_pypowsybl.pyi b/pypowsybl/_pypowsybl.pyi index daf5333ea7..278763bf3e 100644 --- a/pypowsybl/_pypowsybl.pyi +++ b/pypowsybl/_pypowsybl.pyi @@ -242,6 +242,8 @@ class NadParameters: angle_value_precision: int current_value_precision: int voltage_value_precision: int + substation_description_displayed: bool + bus_legend: bool def __init__(self) -> None: ... class LimitType: diff --git a/pypowsybl/network/impl/nad_parameters.py b/pypowsybl/network/impl/nad_parameters.py index 72ed5a9762..aa04c7d976 100644 --- a/pypowsybl/network/impl/nad_parameters.py +++ b/pypowsybl/network/impl/nad_parameters.py @@ -12,7 +12,8 @@ class NadParameters: def __init__(self, edge_name_displayed: bool = False, id_displayed: bool = False, edge_info_along_edge: bool = True, power_value_precision: int = 0, angle_value_precision: int = 1, - current_value_precision: int = 0, voltage_value_precision: int = 1): + current_value_precision: int = 0, voltage_value_precision: int = 1, bus_legend: bool = True, + substation_description_displayed: bool = False): self._edge_name_displayed = edge_name_displayed self._edge_info_along_edge = edge_info_along_edge self._id_displayed = id_displayed @@ -20,6 +21,8 @@ def __init__(self, edge_name_displayed: bool = False, id_displayed: bool = False self._angle_value_precision = angle_value_precision self._current_value_precision = current_value_precision self._voltage_value_precision = voltage_value_precision + self._bus_legend = bus_legend + self._substation_description_displayed = substation_description_displayed @property def edge_name_displayed(self) -> bool: @@ -56,6 +59,16 @@ def voltage_value_precision(self) -> int: """voltage_value_precision""" return self._voltage_value_precision + @property + def bus_legend(self) -> int: + """bus_legend""" + return self._bus_legend + + @property + def substation_description_displayed(self) -> int: + """substation_description_displayed""" + return self._substation_description_displayed + def _to_c_parameters(self) -> _pp.NadParameters: c_parameters = _pp.NadParameters() c_parameters.edge_name_displayed = self._edge_name_displayed @@ -65,4 +78,6 @@ def _to_c_parameters(self) -> _pp.NadParameters: c_parameters.angle_value_precision = self._angle_value_precision c_parameters.current_value_precision = self._current_value_precision c_parameters.voltage_value_precision = self._voltage_value_precision + c_parameters.bus_legend = self._bus_legend + c_parameters.substation_description_displayed = self._substation_description_displayed return c_parameters diff --git a/tests/test_network.py b/tests/test_network.py index 744413570f..fe1b5dd48e 100644 --- a/tests/test_network.py +++ b/tests/test_network.py @@ -856,7 +856,9 @@ def test_sld_nad(): power_value_precision=1, angle_value_precision=0, current_value_precision=1, - voltage_value_precision=0 + voltage_value_precision=0, + bus_legend=False, + substation_description_displayed=True )) assert re.search('.*