def __init__(self, viewObject): self.viewObject = viewObject ui_file = os.path.join(os.path.dirname(__file__), "TaskTube.ui") ui = FreeCADGui.UiLoader() self.form = ui.load(ui_file) object = self.viewObject.Object self.form.tubeOuterRadius.setProperty("rawValue", object.OuterRadius.Value) self.form.tubeInnerRadius.setProperty("rawValue", object.InnerRadius.Value) self.form.tubeHeight.setProperty("rawValue", object.Height.Value) self.form.tubeOuterRadius.valueChanged.connect(lambda x: self.onChangeOuterRadius(x)) self.form.tubeInnerRadius.valueChanged.connect(lambda x: self.onChangeInnerRadius(x)) self.form.tubeHeight.valueChanged.connect(lambda x: self.onChangeHeight(x)) FreeCADGui.ExpressionBinding(self.form.tubeOuterRadius).bind(object,"OuterRadius") FreeCADGui.ExpressionBinding(self.form.tubeInnerRadius).bind(object,"InnerRadius") FreeCADGui.ExpressionBinding(self.form.tubeHeight).bind(object,"Height")
def _initParamWidget(self): self._paramWidget.potentialQSB.setProperty('value', self._obj.Potential) FreeCADGui.ExpressionBinding(self._paramWidget.potentialQSB).bind( self._obj, "Potential") self._paramWidget.potentialBox.setChecked( not self._obj.PotentialEnabled) self._paramWidget.potentialConstantBox.setChecked( self._obj.PotentialConstant) self._paramWidget.electricInfinityBox.setChecked( self._obj.ElectricInfinity) self._paramWidget.electricForcecalculationBox.setChecked( self._obj.ElectricForcecalculation) self._paramWidget.capacitanceBodyBox.setChecked( not self._obj.CapacitanceBodyEnabled) self._paramWidget.capacitanceBody_spinBox.setValue( self._obj.CapacitanceBody) self._paramWidget.capacitanceBody_spinBox.setEnabled( not self._paramWidget.capacitanceBodyBox.isChecked())
def __init__(self, obj_to_attach, take_selection = False, create_transaction = True, callback_OK = None, callback_Cancel = None, callback_Apply = None): self.__define_attributes() self.create_transaction = create_transaction self.callback_OK = callback_OK self.callback_Cancel = callback_Cancel self.callback_Apply = callback_Apply self.obj = obj_to_attach try: if not self.obj.hasExtension('Part::AttachExtension'): self.obj.addExtension('Part::AttachExtensionPython') except Exception: pass if hasattr(obj_to_attach,'Attacher'): self.attacher = obj_to_attach.Attacher elif hasattr(obj_to_attach,'AttacherType'): self.attacher = Part.AttachEngine(obj_to_attach.AttacherType) else: movable = True if not hasattr(self.obj, "Placement"): movable = False if 'Hidden' in self.obj.getEditorMode("Placement") or 'ReadOnly' in self.obj.getEditorMode("Placement"): movable = False if not movable: if self.callback_Cancel: self.callback_Cancel() raise ValueError(translate('AttachmentEditor',"Object {} is neither movable nor attachable, can't edit attachment",None) .format(self.obj.Label)) self.obj_is_attachable = False self.attacher = Part.AttachEngine() mb = QtGui.QMessageBox() mb.setIcon(mb.Icon.Warning) mb.setText(translate('AttachmentEditor', "{} is not attachable. You can still use attachment editor dialog to align the object, but the attachment won't be parametric." ,None) .format(obj_to_attach.Label)) mb.setWindowTitle(translate('AttachmentEditor',"Attachment",None)) btnAbort = mb.addButton(QtGui.QMessageBox.StandardButton.Abort) btnOK = mb.addButton(translate('AttachmentEditor',"Continue",None),QtGui.QMessageBox.ButtonRole.ActionRole) mb.setDefaultButton(btnOK) mb.exec_() if mb.clickedButton() is btnAbort: if self.callback_Cancel: self.callback_Cancel() raise CancelError() import os self.form=uic.loadUi(os.path.dirname(__file__) + os.path.sep + 'TaskAttachmentEditor.ui') self.form.setWindowIcon(QtGui.QIcon(':/icons/tools/Part_Attachment.svg')) self.form.setWindowTitle(translate('AttachmentEditor',"Attachment",None)) self.form.attachmentOffsetX.setProperty("unit", "mm") self.form.attachmentOffsetY.setProperty("unit", "mm") self.form.attachmentOffsetZ.setProperty("unit", "mm") Gui.ExpressionBinding(self.form.attachmentOffsetX).bind(self.obj,"AttachmentOffset.Base.x") Gui.ExpressionBinding(self.form.attachmentOffsetY).bind(self.obj,"AttachmentOffset.Base.y") Gui.ExpressionBinding(self.form.attachmentOffsetZ).bind(self.obj,"AttachmentOffset.Base.z") Gui.ExpressionBinding(self.form.attachmentOffsetYaw).bind(self.obj,"AttachmentOffset.Rotation.Yaw") Gui.ExpressionBinding(self.form.attachmentOffsetPitch).bind(self.obj,"AttachmentOffset.Rotation.Pitch") Gui.ExpressionBinding(self.form.attachmentOffsetRoll).bind(self.obj,"AttachmentOffset.Rotation.Roll") self.refLines = [self.form.lineRef1, self.form.lineRef2, self.form.lineRef3, self.form.lineRef4] self.refButtons = [self.form.buttonRef1, self.form.buttonRef2, self.form.buttonRef3, self.form.buttonRef4] self.attachmentOffsetEdits = [self.form.attachmentOffsetX, self.form.attachmentOffsetY, self.form.attachmentOffsetZ, self.form.attachmentOffsetYaw, self.form.attachmentOffsetPitch, self.form.attachmentOffsetRoll] self.block = False for i in range(len(self.refLines)): QtCore.QObject.connect(self.refLines[i], QtCore.SIGNAL('textEdited(QString)'), lambda txt, i=i: self.lineRefChanged(i,txt)) for i in range(len(self.refLines)): QtCore.QObject.connect(self.refButtons[i], QtCore.SIGNAL('clicked()'), lambda i=i: self.refButtonClicked(i)) for i in range(len(self.attachmentOffsetEdits)): QtCore.QObject.connect(self.attachmentOffsetEdits[i], QtCore.SIGNAL('valueChanged(double)'), lambda val, i=i: self.attachmentOffsetChanged(i,val)) QtCore.QObject.connect(self.form.checkBoxFlip, QtCore.SIGNAL('clicked()'), self.checkBoxFlipClicked) QtCore.QObject.connect(self.form.listOfModes, QtCore.SIGNAL('itemSelectionChanged()'), self.modeSelected) if self.create_transaction: self.obj.Document.openTransaction(translate('AttachmentEditor',"Edit attachment of {}",None).format(self.obj.Name)) self.readParameters() if len(self.attacher.References) == 0 and take_selection: sel = GetSelectionAsLinkSubList() for i in range(len(sel))[::-1]: if sel[i][0] is obj_to_attach: sel.pop(i) self.attacher.References = sel # need to update textboxes self.fillAllRefLines() if len(self.attacher.References) == 0: self.i_active_ref = 0 self.auto_next = True else: self.i_active_ref = -1 self.auto_next = False Gui.Selection.addObserver(self) self.updatePreview() self.updateRefButtons() self.tv = TempoVis(self.obj.Document, tag= "PartGui.TaskAttachmentEditor") if self.tv: # tv will still be None if Show module is unavailable self.tv.hide_all_dependent(self.obj) self.tv.show(self.obj) self.tv.setUnpickable(self.obj) self.tv.modifyVPProperty(self.obj, "Transparency", 70) self.tv.show([obj for (obj,subname) in self.attacher.References])
def _initParamWidget(self): self._paramWidget.bodyheatQSB.setProperty('value', self._obj.HeatSource) self._paramWidget.bodyheatQSB.setProperty("unit", "W/kg") FreeCADGui.ExpressionBinding(self._paramWidget.bodyheatQSB).bind( self._obj, "HeatSource")
def _initParamWidget(self): self._paramWidget.pressureQSB.setProperty('value', self._obj.Pressure) FreeCADGui.ExpressionBinding(self._paramWidget.pressureQSB).bind( self._obj, "Pressure")