コード例 #1
0
    def accept(self):
        doc = FreeCADGui.getDocument(self.obj.Document)
        doc.resetEdit()

        if self.form.radioButtonSteady.isChecked():
            storeIfChanged(self.obj, 'Time', 'Steady')
        elif self.form.radioButtonTransient.isChecked():
            storeIfChanged(self.obj, 'Time', 'Transient')

        if self.form.radioButtonSinglePhase.isChecked():
            storeIfChanged(self.obj, 'Phase', 'Single')
        elif self.form.radioButtonFreeSurface.isChecked():
            storeIfChanged(self.obj, 'Phase', 'FreeSurface')

        if self.form.radioButtonIncompressible.isChecked():
            storeIfChanged(self.obj, 'Flow', 'Incompressible')
            storeIfChanged(self.obj, 'Thermal', 'None')
        elif self.form.radioButtonCompressible.isChecked():
            if self.form.checkBoxHighMach.isChecked():
                storeIfChanged(self.obj, 'Flow', 'HighMachCompressible')
            else:
                storeIfChanged(self.obj, 'Flow', 'Compressible')
            storeIfChanged(self.obj, 'Thermal', 'Energy')

        if self.form.viscousCheckBox.isChecked():
            if self.form.radioButtonLaminar.isChecked():
                storeIfChanged(self.obj, 'Turbulence', 'Laminar')
            else:
                if self.form.radioButtonRANS.isChecked():
                    storeIfChanged(self.obj, 'Turbulence', 'RANS')
                elif self.form.radioButtonDES.isChecked():
                    storeIfChanged(self.obj, 'Turbulence', 'DES')
                elif self.form.radioButtonLES.isChecked():
                    storeIfChanged(self.obj, 'Turbulence', 'LES')
                storeIfChanged(self.obj, 'TurbulenceModel', self.form.turbulenceComboBox.currentText())
        else:
            storeIfChanged(self.obj, 'Turbulence', 'Inviscid')

        storeIfChanged(self.obj, 'gx', getQuantity(self.form.gx))
        storeIfChanged(self.obj, 'gy', getQuantity(self.form.gy))
        storeIfChanged(self.obj, 'gz', getQuantity(self.form.gz))
コード例 #2
0
    def accept(self):
        FreeCADGui.Selection.removeObserver(self)

        doc = FreeCADGui.getDocument(self.obj.Document)
        doc.resetEdit()

        # Type
        index = self.form.comboFunctionObjectType.currentIndex()
        storeIfChanged(self.obj, 'ReportingFunctionType', 
            CfdReportingFunction.OBJECT_NAMES[self.form.comboFunctionObjectType.currentIndex()])

        bcs = CfdTools.getCfdBoundaryGroup(self.analysis_obj)
        bc = bcs[self.form.cb_patch_list.currentIndex()]
        if (not self.obj.Patch and bc) or (bc and bc.Name != self.obj.Patch.Name):
            FreeCADGui.doCommand("FreeCAD.ActiveDocument.{}.Patch "
                                 "= FreeCAD.ActiveDocument.{}".format(self.obj.Name, bc.Name))

        # Force object
        storeIfChanged(self.obj, 'ReferenceDensity', getQuantity(self.form.inputReferenceDensity))
        storeIfChanged(self.obj, 'ReferencePressure', getQuantity(self.form.inputReferencePressure))
        storeIfChanged(self.obj, 'WriteFields', self.form.inputWriteFields.isChecked())
        centre_of_rotation = FreeCAD.Vector(
            self.form.inputCentreOfRotationx.property("quantity").Value,
            self.form.inputCentreOfRotationy.property("quantity").Value,
            self.form.inputCentreOfRotationz.property("quantity").Value)
        storeIfChanged(self.obj, 'CentreOfRotation', centre_of_rotation)

        # # Coefficient object
        lift_dir = FreeCAD.Vector(
            self.form.inputLiftDirectionx.property("quantity").Value,
            self.form.inputLiftDirectiony.property("quantity").Value,
            self.form.inputLiftDirectionz.property("quantity").Value)
        storeIfChanged(self.obj, 'Lift', lift_dir)
        drag_dir = FreeCAD.Vector(
            self.form.inputDragDirectionx.property("quantity").Value,
            self.form.inputDragDirectiony.property("quantity").Value,
            self.form.inputDragDirectionz.property("quantity").Value)
        storeIfChanged(self.obj, 'Drag', drag_dir)
        storeIfChanged(self.obj, 'MagnitudeUInf', getQuantity(self.form.inputMagnitudeUInf))
        storeIfChanged(self.obj, 'LengthRef', getQuantity(self.form.inputLengthRef))
        storeIfChanged(self.obj, 'AreaRef', getQuantity(self.form.inputAreaRef))

        # # Spatial binning
        storeIfChanged(self.obj, 'NBins', self.form.inputNBins.value())
        bins_direction = FreeCAD.Vector(
            self.form.inputDirectionx.property("quantity").Value,
            self.form.inputDirectiony.property("quantity").Value,
            self.form.inputDirectionz.property("quantity").Value)
        storeIfChanged(self.obj, 'Direction', bins_direction)
        storeIfChanged(self.obj, 'Cumulative', self.form.inputCumulative.isChecked())

        # Probe info
        storeIfChanged(self.obj, 'SampleFieldName', self.form.inputFieldName.text())
        probe_position = FreeCAD.Vector(
            self.form.inputProbeLocx.property("quantity").Value,
            self.form.inputProbeLocy.property("quantity").Value,
            self.form.inputProbeLocz.property("quantity").Value)
        storeIfChanged(self.obj, 'ProbePosition', probe_position)

        # Finalise
        FreeCADGui.doCommand("FreeCAD.ActiveDocument.recompute()")
コード例 #3
0
    def accept(self):
        self.analysis_obj.NeedsMeshRewrite = self.NeedsMeshRewriteOrig
        self.analysis_obj.NeedsCaseRewrite = self.NeedsCaseRewriteOrig

        if self.obj.Label.startswith("CfdFluidBoundary"):
            storeIfChanged(self.obj, 'Label', self.obj.BoundaryType)

        # Type
        if self.obj.BoundaryType != self.BoundaryTypeOrig:
            FreeCADGui.doCommand(
                "FreeCAD.ActiveDocument.{}.BoundaryType = '{}'".format(self.obj.Name, self.obj.BoundaryType))
        if self.obj.BoundarySubType != self.BoundarySubTypeOrig:
            FreeCADGui.doCommand(
                "FreeCAD.ActiveDocument.{}.BoundarySubType = '{}'".format(self.obj.Name, self.obj.BoundarySubType))
        storeIfChanged(self.obj, 'ThermalBoundaryType',
                       CfdFluidBoundary.THERMAL_BOUNDARY_TYPES[self.form.comboThermalBoundaryType.currentIndex()])

        # Velocity
        storeIfChanged(self.obj, 'VelocityIsCartesian', self.form.radioButtonCart.isChecked())
        storeIfChanged(self.obj, 'Ux', getQuantity(self.form.inputCartX))
        storeIfChanged(self.obj, 'Uy', getQuantity(self.form.inputCartY))
        storeIfChanged(self.obj, 'Uz', getQuantity(self.form.inputCartZ))
        storeIfChanged(self.obj, 'VelocityMag', getQuantity(self.form.inputVelocityMag))
        storeIfChanged(self.obj, 'DirectionFace', self.form.lineDirection.text())
        storeIfChanged(self.obj, 'ReverseNormal', self.form.checkReverse.isChecked())
        storeIfChanged(self.obj, 'MassFlowRate', getQuantity(self.form.inputMassFlowRate))
        storeIfChanged(self.obj, 'VolFlowRate', getQuantity(self.form.inputVolFlowRate))

        # Pressure
        storeIfChanged(self.obj, 'Pressure', getQuantity(self.form.inputPressure))

        # Wall
        storeIfChanged(self.obj, 'SlipRatio', getQuantity(self.form.inputSlipRatio))

        # Thermal
        storeIfChanged(self.obj, 'Temperature', getQuantity(self.form.inputTemperature))
        storeIfChanged(self.obj, 'HeatFlux', getQuantity(self.form.inputHeatFlux))
        storeIfChanged(self.obj, 'HeatTransferCoeff', getQuantity(self.form.inputHeatTransferCoeff))

        # Turbulence
        if self.turb_model in CfdFluidBoundary.TURBULENT_INLET_SPEC:
            turb_index = self.form.comboTurbulenceSpecification.currentIndex()
            storeIfChanged(self.obj, 'TurbulenceInletSpecification',
                           CfdFluidBoundary.TURBULENT_INLET_SPEC[self.turb_model][1][turb_index])
        else:
            storeIfChanged(self.obj, 'TurbulenceInletSpecification', self.obj.TurbulenceInletSpecification)
        storeIfChanged(self.obj, 'TurbulentKineticEnergy', getQuantity(self.form.inputKineticEnergy))
        storeIfChanged(self.obj, 'SpecificDissipationRate', getQuantity(self.form.inputSpecificDissipationRate))
        storeIfChanged(self.obj, 'DissipationRate', getQuantity(self.form.inputDissipationRate))
        storeIfChanged(self.obj, 'NuTilda', getQuantity(self.form.inputNuTilda))
        storeIfChanged(self.obj, 'Intermittency', getQuantity(self.form.inputGammaInt))
        storeIfChanged(self.obj, 'ReThetat', getQuantity(self.form.inputReThetat))
        storeIfChanged(self.obj, 'TurbulentViscosity', getQuantity(self.form.inputTurbulentViscosity))
        storeIfChanged(self.obj, 'kEqnTurbulentKineticEnergy', getQuantity(self.form.inputKineticEnergy))
        storeIfChanged(self.obj, 'kEqnTurbulentViscosity', getQuantity(self.form.inputTurbulentViscosity))
        storeIfChanged(self.obj, 'TurbulenceIntensityPercentage', getQuantity(self.form.inputIntensity))
        storeIfChanged(self.obj, 'TurbulenceLengthScale', getQuantity(self.form.inputLengthScale))

        # Multiphase
        storeIfChanged(self.obj, 'VolumeFractions', self.alphas)

        # Porous
        storeIfChanged(self.obj, 'PorousBaffleMethod',
                       CfdFluidBoundary.POROUS_METHODS[self.form.buttonGroupPorous.checkedId()])
        storeIfChanged(self.obj, 'PressureDropCoeff', getQuantity(self.form.inputPressureDropCoeff))
        storeIfChanged(self.obj, 'ScreenWireDiameter', getQuantity(self.form.inputWireDiameter))
        storeIfChanged(self.obj, 'ScreenSpacing', getQuantity(self.form.inputSpacing))

        # Only update references if changed
        if self.obj.ShapeRefs != self.ShapeRefsOrig:
            refstr = "FreeCAD.ActiveDocument.{}.ShapeRefs = [\n".format(self.obj.Name)
            refstr += ',\n'.join(
                "(FreeCAD.ActiveDocument.getObject('{}'), {})".format(ref[0].Name, ref[1]) for ref in self.obj.ShapeRefs)
            refstr += "]"
            FreeCADGui.doCommand(refstr)

        # Default boundary
        defaultBoundary = self.form.checkBoxDefaultBoundary.isChecked()
        storeIfChanged(self.obj, 'DefaultBoundary', defaultBoundary)
        if defaultBoundary:
            # Deactivate previous default boundary, if any
            boundaries = CfdTools.getCfdBoundaryGroup(CfdTools.getParentAnalysisObject(self.obj))
            for b in boundaries:
                if b.Name != self.obj.Name and b.DefaultBoundary:
                    FreeCADGui.doCommand("FreeCAD.ActiveDocument.{}.DefaultBoundary = False".format(b.Name))

        FreeCADGui.doCommand("FreeCAD.ActiveDocument.recompute()")

        doc = FreeCADGui.getDocument(self.obj.Document)
        doc.resetEdit()
コード例 #4
0
 def accept(self):
     doc = FreeCADGui.getDocument(self.obj.Document)
     doc.resetEdit()
     doc.Document.recompute()
     storeIfChanged(self.obj, 'Material', self.material)
     storeIfChanged(self.obj, 'Label', self.form.material_name.text())
コード例 #5
0
ファイル: TaskPanelCfdMesh.py プロジェクト: jaheyns/CfdOF
    def store(self):
        mesher_idx = self.form.cb_utility.currentIndex()
        storeIfChanged(self.mesh_obj, 'CharacteristicLengthMax',
                       getQuantity(self.form.if_max))
        storeIfChanged(self.mesh_obj, 'MeshUtility',
                       CfdMesh.MESHERS[mesher_idx])
        storeIfChanged(self.mesh_obj, 'ElementDimension',
                       CfdMesh.DIMENSION[mesher_idx])
        storeIfChanged(self.mesh_obj, 'CellsBetweenLevels',
                       self.form.if_cellsbetweenlevels.value())
        storeIfChanged(self.mesh_obj, 'EdgeRefinement',
                       self.form.if_edgerefine.value())
        storeIfChanged(self.mesh_obj, 'ConvertToDualMesh',
                       CfdMesh.DUAL_CONVERSION[mesher_idx])
        storeIfChanged(self.mesh_obj, 'ImplicitEdgeDetection',
                       self.form.radio_implicit_edge_detection.isChecked())

        point_in_mesh = {
            'x': getQuantity(self.form.if_pointInMeshX),
            'y': getQuantity(self.form.if_pointInMeshY),
            'z': getQuantity(self.form.if_pointInMeshZ)
        }

        if self.mesh_obj.MeshUtility == 'snappyHexMesh':
            storeIfChanged(self.mesh_obj, 'PointInMesh', point_in_mesh)

        self.mesh_obj.Proxy.cart_mesh = CfdMeshTools.CfdMeshTools(
            self.mesh_obj)
コード例 #6
0
    def accept(self):
        doc = FreeCADGui.getDocument(self.obj.Document)
        doc.resetEdit()

        # Velocity
        storeIfChanged(self.obj, 'PotentialFlow',
                       self.form.radioButtonPotentialFlowU.isChecked())
        storeIfChanged(self.obj, 'UseInletUValues',
                       self.form.radioButtonUseInletValuesU.isChecked())
        storeIfChanged(self.obj, 'Ux', getQuantity(self.form.Ux))
        storeIfChanged(self.obj, 'Uy', getQuantity(self.form.Uy))
        storeIfChanged(self.obj, 'Uz', getQuantity(self.form.Uz))

        # Pressure
        storeIfChanged(self.obj, 'UseOutletPValue',
                       self.form.radioButtonUseInletValuesP.isChecked())
        storeIfChanged(self.obj, 'PotentialFlowP',
                       self.form.radioButtonPotentialFlowP.isChecked())
        storeIfChanged(self.obj, 'Pressure', getQuantity(self.form.pressure))

        # Multiphase
        storeIfChanged(self.obj, 'VolumeFractions', self.alphas)

        # Thermal
        storeIfChanged(self.obj, 'UseInletTemperatureValue',
                       self.form.checkUseInletValuesThermal.isChecked())
        storeIfChanged(self.obj, 'Temperature',
                       getQuantity(self.form.inputTemperature))

        # Turbulence
        storeIfChanged(self.obj, 'UseInletTurbulenceValues',
                       self.form.checkUseInletValuesTurb.isChecked())
        storeIfChanged(self.obj, 'nuTilda',
                       getQuantity(self.form.inputnuTilda))
        storeIfChanged(self.obj, 'epsilon',
                       getQuantity(self.form.inputEpsilon))
        storeIfChanged(self.obj, 'omega', getQuantity(self.form.inputOmega))
        storeIfChanged(self.obj, 'k', getQuantity(self.form.inputk))
        storeIfChanged(self.obj, 'gammaInt',
                       getQuantity(self.form.inputGammaInt))
        storeIfChanged(self.obj, 'ReThetat',
                       getQuantity(self.form.inputReThetat))
        # LES
        storeIfChanged(self.obj, 'nut',
                       getQuantity(self.form.inputTurbulentViscosity))
        storeIfChanged(self.obj, 'kEqnk',
                       getQuantity(self.form.inputkEqnKineticEnergy))
        storeIfChanged(self.obj, 'kEqnNut',
                       getQuantity(self.form.inputkEqnTurbulentViscosity))

        boundaryU = self.form.comboBoundaryU.currentData()
        boundaryP = self.form.comboBoundaryP.currentData()
        boundaryT = self.form.comboBoundaryT.currentData()
        boundaryTurb = self.form.comboBoundaryTurb.currentData()

        if boundaryU and self.obj.UseInletUValues:
            if not self.obj.BoundaryU or boundaryU != self.obj.BoundaryU.Name:
                FreeCADGui.doCommand(
                    "FreeCAD.ActiveDocument.{}.BoundaryU = FreeCAD.ActiveDocument.{}"
                    .format(self.obj.Name, boundaryU))
        elif self.obj.BoundaryU:
            FreeCADGui.doCommand(
                "FreeCAD.ActiveDocument.{}.BoundaryU = None".format(
                    self.obj.Name))
        if boundaryP and self.obj.UseOutletPValue:
            if not self.obj.BoundaryP or boundaryP != self.obj.BoundaryP.Name:
                FreeCADGui.doCommand(
                    "FreeCAD.ActiveDocument.{}.BoundaryP = FreeCAD.ActiveDocument.{}"
                    .format(self.obj.Name, boundaryP))
        elif self.obj.BoundaryP:
            FreeCADGui.doCommand(
                "FreeCAD.ActiveDocument.{}.BoundaryP = None".format(
                    self.obj.Name))
        if boundaryT and self.obj.UseInletTemperatureValue:
            if not self.obj.BoundaryT or boundaryT != self.obj.BoundaryT.Name:
                FreeCADGui.doCommand(
                    "FreeCAD.ActiveDocument.{}.BoundaryT = FreeCAD.ActiveDocument.{}"
                    .format(self.obj.Name, boundaryT))
        elif self.obj.BoundaryT:
            FreeCADGui.doCommand(
                "FreeCAD.ActiveDocument.{}.BoundaryT = None".format(
                    self.obj.Name))
        if boundaryTurb and self.obj.UseInletTurbulenceValues:
            if not self.obj.BoundaryTurb or boundaryTurb != self.obj.BoundaryTurb.Name:
                FreeCADGui.doCommand(
                    "FreeCAD.ActiveDocument.{}.BoundaryTurb = FreeCAD.ActiveDocument.{}"
                    .format(self.obj.Name, boundaryTurb))
        elif self.obj.BoundaryTurb:
            FreeCADGui.doCommand(
                "FreeCAD.ActiveDocument.{}.BoundaryTurb = None".format(
                    self.obj.Name))
コード例 #7
0
    def accept(self):
        FreeCADGui.Selection.removeObserver(self)
        self.obj.Shape = self.ShapeOrig
        # Make sure shape is re-calculated before leaving edit mode
        FreeCAD.ActiveDocument.recompute()
        self.analysis_obj.NeedsMeshRewrite = self.NeedsMeshRewriteOrig
        FreeCADGui.ActiveDocument.resetEdit()

        # Macro script
        storeIfChanged(self.obj, 'RelativeLength', self.form.if_rellen.value())
        if not self.mesh_obj.MeshUtility == 'gmsh':
            storeIfChanged(self.obj, 'RefinementThickness',
                           getQuantity(self.form.if_refinethick))

            if self.form.check_boundlayer.isChecked():
                num_layers = self.form.if_numlayer.value()
            else:
                num_layers = 0
            storeIfChanged(self.obj, 'NumberLayers', num_layers)
            storeIfChanged(self.obj, 'ExpansionRatio',
                           self.form.if_expratio.value())
            storeIfChanged(self.obj, 'FirstLayerHeight',
                           getQuantity(self.form.if_firstlayerheight))
            storeIfChanged(self.obj, 'RegionEdgeRefinement',
                           self.form.if_edgerefinement.value())
            storeIfChanged(self.obj, 'Internal',
                           self.form.volumeRefinementToggle.isChecked())

        storeIfChanged(self.obj, 'Extrusion',
                       self.form.extrusionToggle.isChecked())
        if self.obj.Extrusion:
            storeIfChanged(
                self.obj, 'ExtrusionType', CfdMeshRefinement.EXTRUSION_TYPES[
                    self.form.extrusionTypeCombo.currentIndex()])
            storeIfChanged(self.obj, 'KeepExistingMesh',
                           self.form.keepExistingMeshCheck.isChecked())
            storeIfChanged(self.obj, 'ExtrusionThickness',
                           getQuantity(self.form.thicknessInput))
            storeIfChanged(self.obj, 'ExtrusionAngle',
                           getQuantity(self.form.angleInput))
            storeIfChanged(self.obj, 'ExtrusionLayers',
                           self.form.numLayersInput.value())
            storeIfChanged(self.obj, 'ExtrusionRatio',
                           self.form.ratioInput.value())
            new_point = FreeCAD.Vector(
                self.form.axisPointXEdit.property("quantity").Value,
                self.form.axisPointYEdit.property("quantity").Value,
                self.form.axisPointZEdit.property("quantity").Value)
            if self.obj.ExtrusionAxisPoint != new_point:
                FreeCADGui.doCommand(
                    "App.ActiveDocument.{}.ExtrusionAxisPoint = App.{}".format(
                        self.obj.Name, new_point))
            new_dir = FreeCAD.Vector(
                self.form.axisDirectionXEdit.property("quantity").Value,
                self.form.axisDirectionYEdit.property("quantity").Value,
                self.form.axisDirectionZEdit.property("quantity").Value)
            if self.obj.ExtrusionAxisDirection != new_dir:
                FreeCADGui.doCommand(
                    "App.ActiveDocument.{}.ExtrusionAxisDirection = App.{}".
                    format(self.obj.Name, new_dir))

        if self.obj.ShapeRefs != self.ShapeRefsOrig:
            refstr = "FreeCAD.ActiveDocument.{}.ShapeRefs = [\n".format(
                self.obj.Name)
            refstr += ',\n'.join(
                "(FreeCAD.ActiveDocument.getObject('{}'), {})".format(
                    ref[0].Name, ref[1]) for ref in self.obj.ShapeRefs)
            refstr += "]"
            FreeCADGui.doCommand(refstr)

        FreeCADGui.doCommand("FreeCAD.ActiveDocument.recompute()")
        return True
コード例 #8
0
    def accept(self):
        doc = FreeCADGui.getDocument(self.obj.Document)
        doc.resetEdit()

        # Type
        storeIfChanged(self.obj, 'FieldName',
                       self.form.inputScalarFieldName.text())
        storeIfChanged(self.obj, 'DiffusivityFixed',
                       self.form.radioUniformDiffusivity.isChecked())
        storeIfChanged(self.obj, 'DiffusivityFixedValue',
                       getQuantity(self.form.inputDiffusivity))
        storeIfChanged(self.obj, 'RestrictToPhase',
                       self.form.checkRestrictToPhase.isChecked())
        storeIfChanged(self.obj, 'PhaseName',
                       self.form.comboPhase.currentText())

        injection_point = FreeCAD.Vector(
            self.form.inputInjectionPointx.property("quantity").Value,
            self.form.inputInjectionPointy.property("quantity").Value,
            self.form.inputInjectionPointz.property("quantity").Value)
        storeIfChanged(self.obj, 'InjectionPoint', injection_point)
        storeIfChanged(self.obj, 'InjectionRate',
                       getQuantity(self.form.inputInjectionRate))

        # Finalise
        FreeCADGui.doCommand("FreeCAD.ActiveDocument.recompute()")
コード例 #9
0
ファイル: TaskPanelCfdZone.py プロジェクト: jaheyns/CfdOF
    def accept(self):
        self.analysis_obj.NeedsCaseRewrite = self.NeedsCaseRewriteOrig

        if self.obj.Name.startswith('PorousZone'):
            storeIfChanged(
                self.obj, 'PorousCorrelation', CfdZone.POROUS_CORRELATIONS[
                    self.form.comboBoxCorrelation.currentIndex()])
            storeIfChanged(self.obj, 'D1', getQuantity(self.form.dx))
            storeIfChanged(self.obj, 'D2', getQuantity(self.form.dy))
            storeIfChanged(self.obj, 'D3', getQuantity(self.form.dz))
            storeIfChanged(self.obj, 'F1', getQuantity(self.form.fx))
            storeIfChanged(self.obj, 'F2', getQuantity(self.form.fy))
            storeIfChanged(self.obj, 'F3', getQuantity(self.form.fz))
            e1 = FreeCAD.Vector(
                self.form.e1x.property('quantity').getValueAs("1").Value,
                self.form.e1y.property('quantity').getValueAs("1").Value,
                self.form.e1z.property('quantity').getValueAs("1").Value)
            e2 = FreeCAD.Vector(
                self.form.e2x.property('quantity').getValueAs("1").Value,
                self.form.e2y.property('quantity').getValueAs("1").Value,
                self.form.e2z.property('quantity').getValueAs("1").Value)
            e3 = FreeCAD.Vector(
                self.form.e3x.property('quantity').getValueAs("1").Value,
                self.form.e3y.property('quantity').getValueAs("1").Value,
                self.form.e3z.property('quantity').getValueAs("1").Value)
            storeIfChanged(self.obj, 'e1', e1)
            storeIfChanged(self.obj, 'e2', e2)
            storeIfChanged(self.obj, 'e3', e3)
            storeIfChanged(self.obj, 'OuterDiameter',
                           getQuantity(self.form.inputOuterDiameter))
            tube_axis = FreeCAD.Vector(
                self.form.inputTubeAxisX.property('quantity').getValueAs(
                    "1").Value,
                self.form.inputTubeAxisY.property('quantity').getValueAs(
                    "1").Value,
                self.form.inputTubeAxisZ.property('quantity').getValueAs(
                    "1").Value)
            storeIfChanged(self.obj, 'TubeAxis', tube_axis)
            storeIfChanged(self.obj, 'TubeSpacing',
                           getQuantity(self.form.inputTubeSpacing))
            spacing_direction = FreeCAD.Vector(
                self.form.inputBundleLayerNormalX.property(
                    'quantity').getValueAs("1").Value,
                self.form.inputBundleLayerNormalY.property(
                    'quantity').getValueAs("1").Value,
                self.form.inputBundleLayerNormalZ.property(
                    'quantity').getValueAs("1").Value)
            storeIfChanged(self.obj, 'SpacingDirection', spacing_direction)
            storeIfChanged(self.obj, 'AspectRatio',
                           getQuantity(self.form.inputAspectRatio))
            storeIfChanged(self.obj, 'VelocityEstimate',
                           getQuantity(self.form.inputVelocityEstimate))

        elif self.obj.Name.startswith('InitialisationZone'):
            storeIfChanged(self.obj, 'VelocitySpecified',
                           self.form.checkVelocity.isChecked())
            storeIfChanged(self.obj, 'Ux', getQuantity(self.form.inputUx))
            storeIfChanged(self.obj, 'Uy', getQuantity(self.form.inputUy))
            storeIfChanged(self.obj, 'Uz', getQuantity(self.form.inputUz))
            storeIfChanged(self.obj, 'PressureSpecified',
                           self.form.checkPressure.isChecked())
            storeIfChanged(self.obj, 'Pressure',
                           getQuantity(self.form.inputPressure))
            storeIfChanged(self.obj, 'VolumeFractionSpecified',
                           self.form.checkAlpha.isChecked())
            storeIfChanged(self.obj, 'VolumeFractions', self.alphas)

        if self.obj.ShapeRefs != self.ShapeRefsOrig:
            refstr = "FreeCAD.ActiveDocument.{}.ShapeRefs = [\n".format(
                self.obj.Name)
            refstr += ',\n'.join(
                "(FreeCAD.ActiveDocument.getObject('{}'), {})".format(
                    ref[0].Name, ref[1]) for ref in self.obj.ShapeRefs)
            refstr += "]"
            FreeCADGui.doCommand(refstr)

        doc = FreeCADGui.getDocument(self.obj.Document)
        doc.resetEdit()