Ejemplo n.º 1
0
    def analyse(self) -> None:
        """ Analyse the model using the COM interface to open Frew. This method
        requires greater than Frew 19.4 Build 24.

        """
        num_stages: int = get_num_stages(self.json_data)
        folder_path: str = os.path.dirname(self.file_path)
        temp_file_path: str = os.path.join(folder_path, f"{uuid4()}.json")
        self.save(temp_file_path)
        try:
            model = CreateObject("frewLib.FrewComAuto")
        except OSError:
            os.remove(temp_file_path)
            raise FrewError("Failed to create a COM object.")
        try:
            model.Open(temp_file_path)
        except COMError:
            os.remove(temp_file_path)
            raise FrewError("Failed to open the Frew model.")
        model.DeleteResults()
        model.Analyse(num_stages)
        model.SaveAs(temp_file_path)
        model.Close()
        new_data: Dict[str, list] = load_data(temp_file_path)
        os.remove(temp_file_path)
        self._clear_json_data()
        self._refill_json_data(new_data)