Esempio n. 1
0
    def __init__(self, obj):

        self.obj = obj

        # parameter widget
        self.parameterWidget = FreeCADGui.PySideUic.loadUi(
            FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/ConstraintCentrif.ui"
        )
        QtCore.QObject.connect(
            self.parameterWidget.if_rotation_frequency,
            QtCore.SIGNAL("valueChanged(Base::Quantity)"),
            self.rotation_frequency_changed
        )
        self.init_parameter_widget()

        # axis of rotation selection widget
        self.AxisSelectionWidget = selection_widgets.GeometryElementsSelection(
            obj.RotationAxis,
            ["Edge"],
            False,
            False
        )

        # loaded body selection widget
        self.BodySelectionWidget = selection_widgets.GeometryElementsSelection(
            obj.References,
            ["Solid"],
            False,
            False
        )

        # form made from param and selection widget
        self.form = [self.parameterWidget, self.BodySelectionWidget, self.AxisSelectionWidget]
Esempio n. 2
0
    def __init__(self, obj):

        self.obj = obj

        # parameter widget
        self.parameterWidget = FreeCADGui.PySideUic.loadUi(
            FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/MeshBoundaryLayer.ui"
        )
        QtCore.QObject.connect(
            self.parameterWidget.bl_number_of_layers,
            QtCore.SIGNAL("valueChanged(int)"),
            self.bl_number_of_layers_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.bl_min_thickness,
            QtCore.SIGNAL("valueChanged(Base::Quantity)"),
            self.bl_min_thickness_changed
        )
        # be careful of signal signature for QDoubleSpinbox
        QtCore.QObject.connect(
            self.parameterWidget.bl_growth_rate,
            QtCore.SIGNAL("valueChanged(double)"),
            self.bl_growth_rate_changed
        )
        self.init_parameter_widget()

        # geometry selection widget
        # start with Solid in list!
        self.selectionWidget = selection_widgets.GeometryElementsSelection(
            obj.References,
            ["Solid", "Face", "Edge", "Vertex"]
        )

        # form made from param and selection widget
        self.form = [self.parameterWidget, self.selectionWidget]
Esempio n. 3
0
    def __init__(self, obj):

        self.obj = obj

        # parameter widget
        self.parameterWidget = FreeCADGui.PySideUic.loadUi(
            FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/ConstraintTie.ui"
        )
        QtCore.QObject.connect(
            self.parameterWidget.if_tolerance,
            QtCore.SIGNAL("valueChanged(Base::Quantity)"),
            self.tolerance_changed
        )
        self.init_parameter_widget()

        # geometry selection widget
        self.selectionWidget = selection_widgets.GeometryElementsSelection(
            obj.References,
            ["Face"],
            False,
            False
        )

        # form made from param and selection widget
        self.form = [self.parameterWidget, self.selectionWidget]
Esempio n. 4
0
    def __init__(self, obj):
        self._obj = obj

        self._paramWidget = FreeCADGui.PySideUic.loadUi(
            FreeCAD.getHomePath() +
            "Mod/Fem/Resources/ui/ElectrostaticPotential.ui")
        self._initParamWidget()

        # geometry selection widget
        # start with Solid in list!
        self._selectionWidget = selection_widgets.GeometryElementsSelection(
            obj.References, ["Solid", "Face", "Edge", "Vertex"], True, False)

        # form made from param and selection widget
        self.form = [self._paramWidget, self._selectionWidget]

        analysis = obj.getParentGroup()
        self._mesh = None
        self._part = None
        if analysis is not None:
            self._mesh = membertools.get_single_member(analysis,
                                                       "Fem::FemMeshObject")
        if self._mesh is not None:
            self._part = femutils.get_part_to_mesh(self._mesh)
        self._partVisible = None
        self._meshVisible = None
Esempio n. 5
0
    def __init__(self, obj):

        self.obj = obj

        # parameter widget
        self.parameterWidget = FreeCADGui.PySideUic.loadUi(
            FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/MeshGroup.ui"
        )
        QtCore.QObject.connect(
            self.parameterWidget.rb_name,
            QtCore.SIGNAL("toggled(bool)"),
            self.choose_exportidentifier_name
        )
        QtCore.QObject.connect(
            self.parameterWidget.rb_label,
            QtCore.SIGNAL("toggled(bool)"),
            self.choose_exportidentifier_label
        )
        self.init_parameter_widget()

        # geometry selection widget
        # start with Solid in list!
        self.selectionWidget = selection_widgets.GeometryElementsSelection(
            obj.References,
            ["Solid", "Face", "Edge", "Vertex"]
        )

        # form made from param and selection widget
        self.form = [self.parameterWidget, self.selectionWidget]
Esempio n. 6
0
    def __init__(self, obj):

        self.obj = obj

        # parameter widget
        self.parameterWidget = FreeCADGui.PySideUic.loadUi(
            FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/MeshRegion.ui"
        )
        QtCore.QObject.connect(
            self.parameterWidget.if_elelen,
            QtCore.SIGNAL("valueChanged(Base::Quantity)"),
            self.elelen_changed
        )
        self.init_parameter_widget()

        # geometry selection widget
        # start with Solid in list!
        self.selectionWidget = selection_widgets.GeometryElementsSelection(
            obj.References,
            ["Solid", "Face", "Edge", "Vertex"],
            True,
            False
        )

        # form made from param and selection widget
        self.form = [self.parameterWidget, self.selectionWidget]
Esempio n. 7
0
    def __init__(self, obj):

        self.obj = obj

        # parameter widget
        self.parameterWidget = FreeCADGui.PySideUic.loadUi(
            FreeCAD.getHomePath() +
            "Mod/Fem/Resources/ui/ConstraintSectionPrint.ui")

        # geometry selection widget
        self.selectionWidget = selection_widgets.GeometryElementsSelection(
            obj.References, ["Face"])

        # form made from param and selection widget
        self.form = [self.parameterWidget, self.selectionWidget]
Esempio n. 8
0
    def __init__(self, obj):

        self.obj = obj

        # parameter widget
        self.parameterWidget = FreeCADGui.PySideUic.loadUi(
            FreeCAD.getHomePath() +
            "Mod/Fem/Resources/ui/ElementRotation1D.ui")
        QtCore.QObject.connect(self.parameterWidget.if_rotation,
                               QtCore.SIGNAL("valueChanged(Base::Quantity)"),
                               self.rotation_changed)
        self.rotation = self.obj.Rotation
        self.parameterWidget.if_rotation.setText(self.rotation.UserString)

        # geometry selection widget
        self.selectionWidget = selection_widgets.GeometryElementsSelection(
            obj.References, ["Edge"])

        # form made from param and selection widget
        self.form = [self.parameterWidget, self.selectionWidget]
    def __init__(self, obj):

        self.obj = obj

        # parameter widget
        self.parameterWidget = FreeCADGui.PySideUic.loadUi(
            FreeCAD.getHomePath() +
            "Mod/Fem/Resources/ui/ElementGeometry1D.ui")
        QtCore.QObject.connect(self.parameterWidget.cb_crosssectiontype,
                               QtCore.SIGNAL("activated(int)"),
                               self.sectiontype_changed)
        QtCore.QObject.connect(self.parameterWidget.if_rec_height,
                               QtCore.SIGNAL("valueChanged(Base::Quantity)"),
                               self.rec_height_changed)
        QtCore.QObject.connect(self.parameterWidget.if_rec_width,
                               QtCore.SIGNAL("valueChanged(Base::Quantity)"),
                               self.rec_width_changed)
        QtCore.QObject.connect(self.parameterWidget.if_circ_diameter,
                               QtCore.SIGNAL("valueChanged(Base::Quantity)"),
                               self.circ_diameter_changed)
        QtCore.QObject.connect(self.parameterWidget.if_pipe_diameter,
                               QtCore.SIGNAL("valueChanged(Base::Quantity)"),
                               self.pipe_diameter_changed)
        QtCore.QObject.connect(self.parameterWidget.if_pipe_thickness,
                               QtCore.SIGNAL("valueChanged(Base::Quantity)"),
                               self.pipe_thickness_changed)

        self.parameterWidget.cb_crosssectiontype.addItems(
            element_geometry1D.ElementGeometry1D.known_beam_types)
        self.get_beamsection_props()
        self.updateParameterWidget()

        # geometry selection widget
        self.selectionWidget = selection_widgets.GeometryElementsSelection(
            obj.References, ["Edge"], False, True)

        # form made from param and selection widget
        self.form = [self.parameterWidget, self.selectionWidget]
Esempio n. 10
0
    def __init__(self, obj):

        self.obj = obj

        # parameter widget
        self.parameterWidget = FreeCADGui.PySideUic.loadUi(
            FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/ElementFluid1D.ui"
        )
        QtCore.QObject.connect(
            self.parameterWidget.cb_section_type,
            QtCore.SIGNAL("activated(int)"),
            self.sectiontype_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.cb_liquid_section_type,
            QtCore.SIGNAL("activated(int)"),
            self.liquidsectiontype_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.if_manning_area,
            QtCore.SIGNAL("valueChanged(Base::Quantity)"),
            self.manning_area_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.if_manning_radius,
            QtCore.SIGNAL("valueChanged(Base::Quantity)"),
            self.manning_radius_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.sb_manning_coefficient,
            QtCore.SIGNAL("valueChanged(double)"),
            self.manning_coefficient_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.if_enlarge_area1,
            QtCore.SIGNAL("valueChanged(Base::Quantity)"),
            self.enlarge_area1_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.if_enlarge_area2,
            QtCore.SIGNAL("valueChanged(Base::Quantity)"),
            self.enlarge_area2_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.if_contract_area1,
            QtCore.SIGNAL("valueChanged(Base::Quantity)"),
            self.contract_area1_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.if_contract_area2,
            QtCore.SIGNAL("valueChanged(Base::Quantity)"),
            self.contract_area2_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.if_inletpressure,
            QtCore.SIGNAL("valueChanged(Base::Quantity)"),
            self.inlet_pressure_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.if_outletpressure,
            QtCore.SIGNAL("valueChanged(Base::Quantity)"),
            self.outlet_pressure_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.if_inletflowrate,
            QtCore.SIGNAL("valueChanged(Base::Quantity)"),
            self.inlet_flowrate_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.if_outletflowrate,
            QtCore.SIGNAL("valueChanged(Base::Quantity)"),
            self.outlet_flowrate_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.gb_inletpressure,
            QtCore.SIGNAL("clicked(bool)"),
            self.inlet_pressure_active
        )
        QtCore.QObject.connect(
            self.parameterWidget.gb_outletpressure,
            QtCore.SIGNAL("clicked(bool)"),
            self.outlet_pressure_active
        )
        QtCore.QObject.connect(
            self.parameterWidget.gb_inletflowrate,
            QtCore.SIGNAL("clicked(bool)"),
            self.inlet_flowrate_active
        )
        QtCore.QObject.connect(
            self.parameterWidget.gb_outletflowrate,
            QtCore.SIGNAL("clicked(bool)"),
            self.outlet_flowrate_active
        )
        QtCore.QObject.connect(
            self.parameterWidget.if_entrance_pipe_area,
            QtCore.SIGNAL("valueChanged(Base::Quantity)"),
            self.entrance_pipe_area_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.if_entrance_area,
            QtCore.SIGNAL("valueChanged(Base::Quantity)"),
            self.entrance_area_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.if_diaphragm_pipe_area,
            QtCore.SIGNAL("valueChanged(Base::Quantity)"),
            self.diaphragm_pipe_area_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.if_diaphragm_area,
            QtCore.SIGNAL("valueChanged(Base::Quantity)"),
            self.diaphragm_area_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.if_bend_pipe_area,
            QtCore.SIGNAL("valueChanged(Base::Quantity)"),
            self.bend_pipe_area_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.sb_bradius_pdiameter,
            QtCore.SIGNAL("valueChanged(double)"),
            self.bradius_pdiameter_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.sb_bend_angle,
            QtCore.SIGNAL("valueChanged(double)"),
            self.bend_angle_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.sb_bend_loss_coefficient,
            QtCore.SIGNAL("valueChanged(double)"),
            self.bend_loss_coefficient_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.if_gatevalve_pipe_area,
            QtCore.SIGNAL("valueChanged(Base::Quantity)"),
            self.gatevalve_pipe_area_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.sb_gatevalve_closing_coeff,
            QtCore.SIGNAL("valueChanged(double)"),
            self.gatevalve_closing_coeff_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.if_colebrooke_pipe_area,
            QtCore.SIGNAL("valueChanged(Base::Quantity)"),
            self.colebrooke_pipe_area_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.if_colebrooke_radius,
            QtCore.SIGNAL("valueChanged(Base::Quantity)"),
            self.colebrooke_radius_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.if_colebrooke_grain_diameter,
            QtCore.SIGNAL("valueChanged(Base::Quantity)"),
            self.colebrooke_grain_diameter_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.sb_colebrooke_form_factor,
            QtCore.SIGNAL("valueChanged(double)"),
            self.colebrooke_form_factor_changed
        )
        QtCore.QObject.connect(
            self.parameterWidget.tw_pump_characteristics,
            QtCore.SIGNAL("cellChanged(int, int)"),
            self.pump_characteristics_changed
        )
        # some fluid types deactivated since they are not implemented in ccx writer
        self.parameterWidget.cb_section_type.addItems(
            element_fluid1D.ElementFluid1D.known_fluid_types
        )
        self.parameterWidget.cb_liquid_section_type.addItems(
            element_fluid1D.ElementFluid1D.known_liquid_types
        )
        self.parameterWidget.cb_gas_section_type.addItems(
            element_fluid1D.ElementFluid1D.known_gas_types
        )
        self.parameterWidget.cb_channel_section_type.addItems(
            element_fluid1D.ElementFluid1D.known_channel_types
        )
        self.get_fluidsection_props()
        self.updateParameterWidget()

        # geometry selection widget
        self.selectionWidget = selection_widgets.GeometryElementsSelection(
            obj.References, ["Edge"]
        )

        # form made from param and selection widget
        self.form = [self.parameterWidget, self.selectionWidget]
Esempio n. 11
0
    def __init__(self, obj):

        FreeCAD.Console.PrintMessage("\n")  # empty line on start task panel
        self.obj = obj
        self.material = self.obj.Material  # FreeCAD material dictionary of current material
        self.card_path = ""
        self.materials = {}  # { card_path : FreeCAD material dict, ... }
        self.cards = {}  # { card_path : card_names, ... }
        self.icons = {}  # { card_path : icon_path, ... }
        # mat_card is the FCMat file
        # card_name is the file name of the mat_card
        # card_path is the whole file path of the mat_card
        # material_name is the value of the key name in FreeCAD material dictionary
        # they might not match because of special letters in the material_name
        # which are changed in the card_name to english standard characters
        self.has_transient_mat = False

        # parameter widget
        self.parameterWidget = FreeCADGui.PySideUic.loadUi(
            FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/Material.ui")
        # globals
        QtCore.QObject.connect(self.parameterWidget.cb_materials,
                               QtCore.SIGNAL("activated(int)"),
                               self.choose_material)
        QtCore.QObject.connect(self.parameterWidget.chbu_allow_edit,
                               QtCore.SIGNAL("clicked()"),
                               self.toggleInputFieldsReadOnly)
        QtCore.QObject.connect(self.parameterWidget.pushButton_editMat,
                               QtCore.SIGNAL("clicked()"), self.edit_material)
        # basic properties must be provided
        QtCore.QObject.connect(self.parameterWidget.input_fd_density,
                               QtCore.SIGNAL("editingFinished()"),
                               self.density_changed)
        # mechanical properties
        QtCore.QObject.connect(self.parameterWidget.input_fd_young_modulus,
                               QtCore.SIGNAL("editingFinished()"),
                               self.ym_changed)
        QtCore.QObject.connect(self.parameterWidget.spinBox_poisson_ratio,
                               QtCore.SIGNAL("editingFinished()"),
                               self.pr_changed)
        # thermal properties
        QtCore.QObject.connect(
            self.parameterWidget.input_fd_thermal_conductivity,
            QtCore.SIGNAL("editingFinished()"), self.tc_changed)
        QtCore.QObject.connect(
            self.parameterWidget.input_fd_expansion_coefficient,
            QtCore.SIGNAL("editingFinished()"), self.tec_changed)
        QtCore.QObject.connect(self.parameterWidget.input_fd_specific_heat,
                               QtCore.SIGNAL("editingFinished()"),
                               self.sh_changed)
        # fluidic properties, only volumetric thermal expansion coeff makes sense
        QtCore.QObject.connect(
            self.parameterWidget.input_fd_kinematic_viscosity,
            QtCore.SIGNAL("editingFinished()"),
            self.kinematic_viscosity_changed)
        QtCore.QObject.connect(
            self.parameterWidget.input_fd_vol_expansion_coefficient,
            QtCore.SIGNAL("editingFinished()"), self.vtec_changed)

        # init all parameter input files with read only
        self.parameterWidget.chbu_allow_edit.setCheckState(
            QtCore.Qt.CheckState.Unchecked)
        self.toggleInputFieldsReadOnly()

        # hide some groupBox according to material category
        self.parameterWidget.label_category.setText(self.obj.Category)
        if self.obj.Category == "Fluid":
            self.parameterWidget.groupBox_mechanical.setVisible(0)
            self.parameterWidget.label_expansion_coefficient.setVisible(0)
            self.parameterWidget.input_fd_expansion_coefficient.setVisible(0)
        else:
            self.parameterWidget.groupBox_fluidic.setVisible(0)
            self.parameterWidget.label_vol_expansion_coefficient.setVisible(0)
            self.parameterWidget.input_fd_vol_expansion_coefficient.setVisible(
                0)

        # get all available materials (fill self.materials, self.cards and self.icons)
        from materialtools.cardutils import import_materials as getmats
        # Note: import_materials(category="Solid", ...),
        #           category default to Solid, but must be given for FluidMaterial to be imported
        self.materials, self.cards, self.icons = getmats(self.obj.Category)
        # fill the material comboboxes with material cards
        self.add_cards_to_combo_box()

        # search for exact this mat_card in all known cards, choose the current material
        self.card_path = self.get_material_card(self.material)
        FreeCAD.Console.PrintLog("card_path: {}\n".format(self.card_path))
        if not self.card_path:
            # we have not found our material in self.materials dict :-(
            # we're going to add a user-defined temporary material: a document material
            FreeCAD.Console.PrintMessage(
                "Previously used material card can not be found in material directories. "
                "Add document material.\n")
            self.card_path = "_document_material"
            self.materials[self.card_path] = self.material
            self.parameterWidget.cb_materials.addItem(
                QtGui.QIcon(":/icons/help-browser.svg"), self.card_path,
                self.card_path)
            index = self.parameterWidget.cb_materials.findData(self.card_path)
            # print(index)
            # fill input fields and set the current material in the cb widget
            self.choose_material(index)
        else:
            # we found our exact material in self.materials dict :-)
            FreeCAD.Console.PrintLog(
                "Previously used material card was found in material directories. "
                "We will use this material.\n")
            index = self.parameterWidget.cb_materials.findData(self.card_path)
            # print(index)
            # fill input fields and set the current material in the cb widget
            self.choose_material(index)

        # geometry selection widget
        self.selectionWidget = selection_widgets.GeometryElementsSelection(
            obj.References, ["Solid", "Face", "Edge"],
            False)  # start with Solid in list!

        # form made from param and selection widget
        self.form = [self.parameterWidget, self.selectionWidget]

        # check references, has to be after initialisation of selectionWidget
        self.selectionWidget.has_equal_references_shape_types()