コード例 #1
0
class _CommandQuickAnalysis(FemCommands):
    def __init__(self):
        super(_CommandQuickAnalysis, self).__init__()
        self.resources = {'Pixmap': 'fem-quick-analysis',
                          'MenuText': QtCore.QT_TRANSLATE_NOOP("Fem_Quick_Analysis", "Run CalculiX ccx"),
                          'Accel': "R, C",
                          'ToolTip': QtCore.QT_TRANSLATE_NOOP("Fem_Quick_Analysis", "Write .inp file and run CalculiX ccx")}
        self.is_active = 'with_solver'

    def Activated(self):
        def load_results(ret_code):
            if ret_code == 0:
                self.fea.load_results()
                self.show_results_on_mesh()
                self.hide_parts_constraints_show_meshes()

            else:
                print ("CalculiX failed ccx finished with error {}".format(ret_code))

        self.fea = FemTools()
        self.fea.reset_all()
        message = self.fea.check_prerequisites()
        if message:
            QtGui.QMessageBox.critical(None, "Missing prerequisite", message)
            return
        self.fea.finished.connect(load_results)
        QtCore.QThreadPool.globalInstance().start(self.fea)

    def show_results_on_mesh(self):
        #FIXME proprer mesh refreshing as per FreeCAD.FEM_dialog settings required
        # or confirmation that it's safe to call restore_result_dialog
        import _TaskPanelResultControl
        tp = _TaskPanelResultControl._TaskPanelResultControl()
        tp.restore_result_dialog()
コード例 #2
0
class _CommandQuickAnalysis:
    def GetResources(self):
        return {'Pixmap': 'fem-quick-analysis',
                'MenuText': QtCore.QT_TRANSLATE_NOOP("Fem_Quick_Analysis", "Run CalculiX ccx"),
                'Accel': "R, C",
                'ToolTip': QtCore.QT_TRANSLATE_NOOP("Fem_Quick_Analysis", "Write .inp file and run CalculiX ccx")}

    def Activated(self):
        def load_results(ret_code):
            if ret_code == 0:
                self.fea.load_results()
                self.show_results_on_mesh()
            else:
                print "CalculiX failed ccx finished with error {}".format(ret_code)

        self.fea = FemTools()
        self.fea.reset_all()
        message = self.fea.check_prerequisites()
        if message:
            QtGui.QMessageBox.critical(None, "Missing prerequisite", message)
            return
        self.fea.finished.connect(load_results)
        QtCore.QThreadPool.globalInstance().start(self.fea)

    def show_results_on_mesh(self):
        #FIXME proprer mesh refreshing as per FreeCAD.FEM_dialog settings required
        # or confirmation that it's safe to call restore_result_dialog
        tp = _ResultControlTaskPanel()
        tp.restore_result_dialog()

    def IsActive(self):
        return FreeCADGui.ActiveDocument is not None and FemGui.getActiveAnalysis() is not None
コード例 #3
0
    def calculixFinished(self, exitCode):
        print "calculixFinished()", exitCode
        print self.Calculix.state()

        # Restore previous cwd
        QtCore.QDir.setCurrent(self.cwd)

        self.printCalculiXstdout()
        self.Timer.stop()

        self.femConsoleMessage("Calculix done!", "#00AA00")

        self.form.pushButton_generate.setText("Re-run Calculix")
        print "Loading results...."
        self.femConsoleMessage("Loading result sets...")
        self.form.label_Time.setText('Time: {0:4.1f}: '.format(time.time() - self.Start))
        fea = FemTools()
        fea.reset_all()
        frd_result_file = os.path.splitext(self.inp_file_name)[0] + '.frd'
        if os.path.isfile(frd_result_file):
            QApplication.setOverrideCursor(Qt.WaitCursor)
            ccxFrdReader.importFrd(frd_result_file, FemGui.getActiveAnalysis())
            QApplication.restoreOverrideCursor()
            self.femConsoleMessage("Loading results done!", "#00AA00")
        else:
            self.femConsoleMessage("Loading results failed! Results file doesn\'t exist", "#FF0000")
        self.form.label_Time.setText('Time: {0:4.1f}: '.format(time.time() - self.Start))
コード例 #4
0
    def calculixFinished(self, exitCode):
        print ("calculixFinished() {}".format(exitCode))
        print (self.Calculix.state())

        # Restore previous cwd
        QtCore.QDir.setCurrent(self.cwd)

        self.printCalculiXstdout()
        self.Timer.stop()

        self.femConsoleMessage("Calculix done!", "#00AA00")

        self.form.pb_run_ccx.setText("Re-run CalculiX")
        self.femConsoleMessage("Loading result sets...")
        self.form.l_time.setText('Time: {0:4.1f}: '.format(time.time() - self.Start))
        fea = FemTools()
        fea.reset_all()
        frd_result_file = os.path.splitext(self.inp_file_name)[0] + '.frd'
        if os.path.isfile(frd_result_file):
            QApplication.setOverrideCursor(Qt.WaitCursor)
            ccxFrdReader.importFrd(frd_result_file, FemGui.getActiveAnalysis())
            QApplication.restoreOverrideCursor()
            self.femConsoleMessage("Loading results done!", "#00AA00")
        else:
            self.femConsoleMessage("Loading results failed! Results file doesn\'t exist", "#FF0000")
        self.form.l_time.setText('Time: {0:4.1f}: '.format(time.time() - self.Start))
コード例 #5
0
class _CommandFrequencyAnalysis:
    def GetResources(self):
        return {'Pixmap': 'fem-frequency-analysis',
                'MenuText': QtCore.QT_TRANSLATE_NOOP("Fem_Frequency_Analysis", "Run frequency analysis with CalculiX ccx"),
                'Accel': "R, F",
                'ToolTip': QtCore.QT_TRANSLATE_NOOP("Fem_Frequency_Analysis", "Write .inp file and run frequency analysis with CalculiX ccx")}

    def Activated(self):
        def load_results(ret_code):
            if ret_code == 0:
                self.fea.load_results()
            else:
                print "CalculiX failed ccx finished with error {}".format(ret_code)

        self.fea = FemTools()
        self.fea.reset_all()
        self.fea.set_analysis_type('frequency')
        message = self.fea.check_prerequisites()
        if message:
            QtGui.QMessageBox.critical(None, "Missing prerequisite", message)
            return
        self.fea.finished.connect(load_results)
        QtCore.QThreadPool.globalInstance().start(self.fea)

    def IsActive(self):
        return FreeCADGui.ActiveDocument is not None and FemGui.getActiveAnalysis() is not None
コード例 #6
0
    def check_prerequisites_helper(self):
        self.Start = time.time()
        self.femConsoleMessage("Check dependencies...")
        self.form.l_time.setText('Time: {0:4.1f}: '.format(time.time() - self.Start))

        fea = FemTools()
        fea.update_objects()
        message = fea.check_prerequisites()
        if message != "":
            QtGui.QMessageBox.critical(None, "Missing prerequisit(s)", message)
            return False
        return True
コード例 #7
0
    def check_prerequisites_helper(self):
        self.Start = time.time()
        self.femConsoleMessage("Check dependencies...")
        self.form.label_Time.setText('Time: {0:4.1f}: '.format(time.time() - self.Start))

        fea = FemTools()
        fea.update_objects()
        message = fea.check_prerequisites()
        if message != "":
            QtGui.QMessageBox.critical(None, "Missing prerequisit(s)", message)
            return False
        return True
コード例 #8
0
ファイル: MechanicalAnalysis.py プロジェクト: mthayne/FreeCAD
    def calculixFinished(self, exitCode):
        print "calculixFinished()", exitCode
        print self.Calculix.state()

        # Restore previous cwd
        QtCore.QDir.setCurrent(self.cwd)

        self.printCalculiXstdout()
        self.Timer.stop()

        self.femConsoleMessage("Calculix done!", "#00AA00")

        self.form.pushButton_generate.setText("Re-run Calculix")
        print "Loading results...."
        self.femConsoleMessage("Loading result sets...")
        self.form.label_Time.setText('Time: {0:4.1f}: '.format(time.time() -
                                                               self.Start))
        fea = FemTools()
        fea.purge_results()
        fea.reset_mesh_color()
        fea.reset_mesh_deformation()
        if os.path.isfile(self.base_name + '.frd'):
            QApplication.setOverrideCursor(Qt.WaitCursor)
            ccxFrdReader.importFrd(self.base_name + '.frd',
                                   FemGui.getActiveAnalysis())
            QApplication.restoreOverrideCursor()
            self.femConsoleMessage("Loading results done!", "#00AA00")
        else:
            self.femConsoleMessage(
                "Loading results failed! Results file doesn\'t exist",
                "#FF0000")
        self.form.label_Time.setText('Time: {0:4.1f}: '.format(time.time() -
                                                               self.Start))
コード例 #9
0
 def write_input_file_handler(self):
     QApplication.restoreOverrideCursor()
     if self.check_prerequisites_helper():
         QApplication.setOverrideCursor(Qt.WaitCursor)
         self.inp_file_name = ""
         fea = FemTools()
         fea.update_objects()
         fea.write_inp_file()
         if fea.inp_file_name != "":
             self.inp_file_name = fea.inp_file_name
             self.femConsoleMessage("Write completed.")
             self.form.pushButton_edit.setEnabled(True)
             self.form.pushButton_generate.setEnabled(True)
         else:
             self.femConsoleMessage("Write .inp file failed!", "#FF0000")
         QApplication.restoreOverrideCursor()
コード例 #10
0
    def Activated(self):
        def load_results(ret_code):
            if ret_code == 0:
                self.fea.load_results()
                self.show_results_on_mesh()
            else:
                print("CalculiX failed ccx finished with error {}".format(
                    ret_code))

        self.fea = FemTools()
        self.fea.reset_all()
        message = self.fea.check_prerequisites()
        if message:
            QtGui.QMessageBox.critical(None, "Missing prerequisite", message)
            return
        self.fea.finished.connect(load_results)
        QtCore.QThreadPool.globalInstance().start(self.fea)
コード例 #11
0
class _CommandQuickAnalysis(FemCommands):
    def __init__(self):
        super(_CommandQuickAnalysis, self).__init__()
        self.resources = {
            'Pixmap':
            'fem-quick-analysis',
            'MenuText':
            QtCore.QT_TRANSLATE_NOOP("Fem_Quick_Analysis", "Run CalculiX ccx"),
            'Accel':
            "R, C",
            'ToolTip':
            QtCore.QT_TRANSLATE_NOOP("Fem_Quick_Analysis",
                                     "Write .inp file and run CalculiX ccx")
        }
        self.is_active = 'with_solver'

    def Activated(self):
        def load_results(ret_code):
            if ret_code == 0:
                self.fea.load_results()
                self.show_results_on_mesh()
                self.hide_parts_constraints_show_meshes()

            else:
                print("CalculiX failed ccx finished with error {}".format(
                    ret_code))

        self.fea = FemTools()
        self.fea.reset_all()
        message = self.fea.check_prerequisites()
        if message:
            QtGui.QMessageBox.critical(None, "Missing prerequisite", message)
            return
        self.fea.finished.connect(load_results)
        QtCore.QThreadPool.globalInstance().start(self.fea)

    def show_results_on_mesh(self):
        #FIXME proprer mesh refreshing as per FreeCAD.FEM_dialog settings required
        # or confirmation that it's safe to call restore_result_dialog
        #FIXME if an analysis has multiple results (frequence) the first result object found is restored
        import _TaskPanelResultControl
        tp = _TaskPanelResultControl._TaskPanelResultControl()
        tp.restore_result_dialog()
コード例 #12
0
class _CommandQuickAnalysis:
    def GetResources(self):
        return {
            'Pixmap':
            'fem-quick-analysis',
            'MenuText':
            QtCore.QT_TRANSLATE_NOOP("Fem_Quick_Analysis", "Run CalculiX ccx"),
            'Accel':
            "R, C",
            'ToolTip':
            QtCore.QT_TRANSLATE_NOOP("Fem_Quick_Analysis",
                                     "Write .inp file and run CalculiX ccx")
        }

    def Activated(self):
        def load_results(ret_code):
            if ret_code == 0:
                self.fea.load_results()
                self.show_results_on_mesh()
            else:
                print "CalculiX failed ccx finished with error {}".format(
                    ret_code)

        self.fea = FemTools()
        self.fea.reset_all()
        message = self.fea.check_prerequisites()
        if message:
            QtGui.QMessageBox.critical(None, "Missing prerequisite", message)
            return
        self.fea.finished.connect(load_results)
        QtCore.QThreadPool.globalInstance().start(self.fea)

    def show_results_on_mesh(self):
        #FIXME proprer mesh refreshing as per FreeCAD.FEM_dialog settings required
        # or confirmation that it's safe to call restore_result_dialog
        tp = _ResultControlTaskPanel()
        tp.restore_result_dialog()

    def IsActive(self):
        return FreeCADGui.ActiveDocument is not None and FemGui.getActiveAnalysis(
        ) is not None
コード例 #13
0
class _CommandFrequencyAnalysis:
    def GetResources(self):
        return {
            'Pixmap':
            'fem-frequency-analysis',
            'MenuText':
            QtCore.QT_TRANSLATE_NOOP(
                "Fem_Frequency_Analysis",
                "Run frequency analysis with CalculiX ccx"),
            'Accel':
            "R, F",
            'ToolTip':
            QtCore.QT_TRANSLATE_NOOP(
                "Fem_Frequency_Analysis",
                "Write .inp file and run frequency analysis with CalculiX ccx")
        }

    def Activated(self):
        def load_results(ret_code):
            if ret_code == 0:
                self.fea.load_results()
            else:
                print "CalculiX failed ccx finished with error {}".format(
                    ret_code)

        self.fea = FemTools()
        self.fea.reset_all()
        self.fea.set_analysis_type('frequency')
        message = self.fea.check_prerequisites()
        if message:
            QtGui.QMessageBox.critical(None, "Missing prerequisite", message)
            return
        self.fea.finished.connect(load_results)
        QtCore.QThreadPool.globalInstance().start(self.fea)

    def IsActive(self):
        return FreeCADGui.ActiveDocument is not None and FemGui.getActiveAnalysis(
        ) is not None
コード例 #14
0
 def write_input_file_handler(self):
     QApplication.restoreOverrideCursor()
     if self.check_prerequisites_helper():
         QApplication.setOverrideCursor(Qt.WaitCursor)
         self.inp_file_name = ""
         fea = FemTools()
         fea.set_analysis_type(self.analysis_object.AnalysisType)
         fea.update_objects()
         fea.write_inp_file()
         if fea.inp_file_name != "":
             self.inp_file_name = fea.inp_file_name
             self.femConsoleMessage("Write completed.")
             self.form.pb_edit_inp.setEnabled(True)
             self.form.pb_run_ccx.setEnabled(True)
         else:
             self.femConsoleMessage("Write .inp file failed!", "#FF0000")
         QApplication.restoreOverrideCursor()
コード例 #15
0
 def restore_initial_result_dialog(self):
     FreeCAD.FEM_dialog = {
         "results_type": "None",
         "show_disp": False,
         "disp_factor": 0,
         "disp_factor_max": 100
     }
     fea = FemTools()
     fea.reset_mesh_color()
     fea.reset_mesh_deformation()
コード例 #16
0
    def Activated(self):
        def load_results(ret_code):
            if ret_code == 0:
                self.fea.load_results()
            else:
                print "CalculiX failed ccx finished with error {}".format(ret_code)

        self.fea = FemTools()
        self.fea.reset_all()
        self.fea.set_analysis_type('frequency')
        message = self.fea.check_prerequisites()
        if message:
            QtGui.QMessageBox.critical(None, "Missing prerequisite", message)
            return
        self.fea.finished.connect(load_results)
        QtCore.QThreadPool.globalInstance().start(self.fea)
コード例 #17
0
    def Activated(self):
        def load_results(ret_code):
            if ret_code == 0:
                self.fea.load_results()
                self.show_results_on_mesh()
            else:
                print "CalculiX failed ccx finished with error {}".format(ret_code)

        self.fea = FemTools()
        self.fea.purge_results()
        self.fea.reset_mesh_color()
        self.fea.reset_mesh_deformation()
        message = self.fea.check_prerequisites()
        if message:
            QtGui.QMessageBox.critical(None, "Missing prerequisite", message)
            return
        self.fea.finished.connect(load_results)
        QtCore.QThreadPool.globalInstance().start(self.fea)
コード例 #18
0
ファイル: MechanicalAnalysis.py プロジェクト: mthayne/FreeCAD
 def write_input_file_handler(self):
     QApplication.restoreOverrideCursor()
     if self.check_prerequisites_helper():
         QApplication.setOverrideCursor(Qt.WaitCursor)
         self.base_name = ""
         fea = FemTools()
         fea.update_objects()
         fea.write_inp_file()
         if fea.base_name != "":
             self.base_name = fea.base_name
             self.femConsoleMessage("Write completed.")
             self.form.pushButton_edit.setEnabled(True)
             self.form.pushButton_generate.setEnabled(True)
         else:
             self.femConsoleMessage("Write .inp file failed!", "#FF0000")
         QApplication.restoreOverrideCursor()
コード例 #19
0
    def calculixFinished(self, exitCode):
        print ("calculixFinished() {}".format(exitCode))
        print (self.Calculix.state())

        # Restore previous cwd
        QtCore.QDir.setCurrent(self.cwd)

        self.printCalculiXstdout()
        self.Timer.stop()

        self.femConsoleMessage("CalculiX done!", "#00AA00")

        self.form.pb_run_ccx.setText("Re-run CalculiX")
        self.femConsoleMessage("Loading result sets...")
        self.form.l_time.setText('Time: {0:4.1f}: '.format(time.time() - self.Start))
        fea = FemTools()
        fea.reset_all()
        fea.inp_file_name = self.inp_file_name
        QApplication.setOverrideCursor(Qt.WaitCursor)
        fea.load_results()
        QApplication.restoreOverrideCursor()
        self.form.l_time.setText('Time: {0:4.1f}: '.format(time.time() - self.Start))
コード例 #20
0
 def none_selected(self, state):
     FreeCAD.FEM_dialog["results_type"] = "None"
     self.set_result_stats("mm", 0.0, 0.0, 0.0)
     fea = FemTools()
     fea.reset_mesh_color()
コード例 #21
0
    def Activated(self):
        fea = FemTools()
        fea.reset_all()

        self.hide_meshes_show_parts_constraints()
コード例 #22
0
 def Activated(self):
     fea = FemTools()
     fea.reset_all()
コード例 #23
0
 def restore_initial_result_dialog(self):
     FreeCAD.FEM_dialog = {"results_type": "None", "show_disp": False,
                           "disp_factor": 0, "disp_factor_max": 100}
     fea = FemTools()
     fea.reset_mesh_color()
     fea.reset_mesh_deformation()
コード例 #24
0
 def Activated(self):
     fea = FemTools()
     fea.reset_all()
コード例 #25
0
 def none_selected(self, state):
     FreeCAD.FEM_dialog["results_type"] = "None"
     self.set_result_stats("mm", 0.0, 0.0, 0.0)
     fea = FemTools()
     fea.reset_mesh_color()
コード例 #26
0
ファイル: MechanicalAnalysis.py プロジェクト: mthayne/FreeCAD
 def Activated(self):
     fea = FemTools()
     fea.purge_results()
     fea.reset_mesh_color()
     fea.reset_mesh_deformation()
コード例 #27
0
 def Activated(self):
     fea = FemTools()
     fea.purge_results()
     fea.reset_mesh_color()
     fea.reset_mesh_deformation()