コード例 #1
0
ファイル: freecad_bolts.py プロジェクト: boltsparts/BOLTSFC
 def __init__(self, parent, label, default):
     super(StringWidget, self).__init__()
     self.ui = uic.loadUi(join(bolts_path, "value_widget.ui"))
     self.ui.label.setText(label)
     self.ui.valueEdit.setText(default)
     layout = QtGui.QHBoxLayout()
     layout.addWidget(self.ui)
     self.setLayout(layout)
コード例 #2
0
ファイル: freecad_bolts.py プロジェクト: boltsparts/BOLTSFC
 def __init__(self, parent, prop, value):
     super(PropertyWidget, self).__init__()
     self.ui = uic.loadUi(join(bolts_path, "property_widget.ui"))
     self.ui.prop.setTextFormat(QtCore.Qt.RichText)
     self.ui.prop.setText("<b>%s:</b>" % prop)
     self.ui.value.setText(value)
     layout = QtGui.QHBoxLayout()
     layout.addWidget(self.ui)
     self.setLayout(layout)
コード例 #3
0
ファイル: freecad_bolts.py プロジェクト: boltsparts/BOLTSFC
 def __init__(self, parent, label, default):
     super(BoolWidget, self).__init__()
     self.ui = uic.loadUi(join(bolts_path, "bool_widget.ui"))
     self.ui.checkBox.setText(label)
     if default == "True":
         self.ui.checkBox.setChecked(True)
     else:
         self.ui.checkBox.setChecked(False)
     layout = QtGui.QHBoxLayout()
     layout.addWidget(self.ui)
     self.setLayout(layout)
コード例 #4
0
ファイル: freecad_bolts.py プロジェクト: boltsparts/BOLTSFC
    def __init__(self, parent, label, default):
        super(LengthWidget, self).__init__()
        self.ui = uic.loadUi(join(bolts_path, "value_widget.ui"))
        self.ui.label.setText(label)
        self.ui.valueEdit.setText(default)

        self.validator = QtGui.QDoubleValidator(0, sys.float_info.max, 4, self)
        self.ui.valueEdit.setValidator(self.validator)
        layout = QtGui.QHBoxLayout()
        layout.addWidget(self.ui)
        self.setLayout(layout)
コード例 #5
0
ファイル: freecad_bolts.py プロジェクト: boltsparts/BOLTSFC
    def __init__(self, parent, label, keys, default):
        super(TableIndexWidget, self).__init__()
        self.ui = uic.loadUi(join(bolts_path, "tableindex_widget.ui"))
        self.ui.label.setText(label)

        for key, i in zip(keys, range(len(keys))):
            self.ui.comboBox.addItem(key)
            if key == default:
                self.ui.comboBox.setCurrentIndex(i)

        layout = QtGui.QHBoxLayout()
        layout.addWidget(self.ui)
        self.setLayout(layout)
コード例 #6
0
ファイル: freecad_bolts.py プロジェクト: boltsparts/BOLTSFC
    def __init__(self, parent, label, default):
        super(AngleWidget, self).__init__()
        self.ui = uic.loadUi(join(bolts_path, "value_widget.ui"))
        self.ui.label.setText(label)
        self.ui.valueEdit.setText(default)

        self.validator = QtGui.QDoubleValidator(self)
        self.validator.setRange(-360., 360., 2)
        self.ui.valueEdit.setValidator(self.validator)

        layout = QtGui.QHBoxLayout()
        layout.addWidget(self.ui)
        self.setLayout(layout)
コード例 #7
0
 def __init__(self):
     import os
     self.form = uic.loadUi(
         os.path.dirname(__file__) + '/ui/TaskPlacementShooter.ui')
     self.form.setWindowTitle("Placement Shooter")
     self.modeRadios = [
         (self.form.oriOrigin, 'origin'),
         (self.form.oriCamera, 'camera'),
         (self.form.oriSurface, 'surface'),
         (self.form.oriSurfaceU, 'surfaceU'),
         (self.form.oriSurfaceV, 'surfaceV'),
     ]
     QtCore.QObject.connect(self.form.btnUnedit, QtCore.SIGNAL('clicked()'),
                            self.uneditButtonClicked)
コード例 #8
0
ファイル: TaskReplace.py プロジェクト: DeepSOIC/Part-o-magic
    def __init__(self, replacements, doc, message= "Replacing..."):
        QtCore.QObject.__init__(self)
        
        import os
        self.form = uic.loadUi(os.path.dirname(__file__) + os.path.sep + 'TaskReplace.ui')
        self.form.setWindowIcon(QtGui.QIcon(':/icons/PartOMagic_ReplaceObject.svg'))
        self.form.setWindowTitle("Replace object")

        self.replacements = replacements
        self.form.message.setText(message)
        
        #debug
        global instance
        instance = self
        
        if replacements:
            self.openTask()
コード例 #9
0
ファイル: TaskReplace.py プロジェクト: luzpaz/Part-o-magic
    def __init__(self, replacements, doc, message="Replacing..."):
        QtCore.QObject.__init__(self)

        import os
        self.form = uic.loadUi(
            os.path.dirname(__file__) + os.path.sep + 'TaskReplace.ui')
        self.form.setWindowIcon(
            QtGui.QIcon(':/icons/PartOMagic_ReplaceObject.svg'))
        self.form.setWindowTitle("Replace object")

        self.replacements = replacements
        self.form.message.setText(message)

        #debug
        global instance
        instance = self

        if replacements:
            self.openTask()
コード例 #10
0
	def __init__(self):
		# Get the user's home directory.
		self.homeDir = os.path.expanduser("~")

		# Load the qt uic form. It _must_ be in ~/.FreeCAD/Mod/FreeCAD-CuraEngine-Plugin, Perhaps there is a better way...
		self.form = uic.loadUi(self.homeDir + "/.FreeCAD/Mod/FreeCAD-CuraEngine-Plugin/MachineDef.ui")

		self.form.doubleSpinBox_1.setValue(readSetting("machinex"))
		self.form.doubleSpinBox_2.setValue(readSetting("machiney"))
		self.form.doubleSpinBox_3.setValue(readSetting("machinez"))
		self.form.doubleSpinBox_6.setValue(readSetting("offsetx"))
		self.form.doubleSpinBox_7.setValue(readSetting("offsety"))
		self.form.doubleSpinBox_4.setValue(readSetting("bedx"))
		self.form.doubleSpinBox_5.setValue(readSetting("bedy"))

		self.form.doubleSpinBox_1.valueChanged.connect(self._machineXStroke)
		self.form.doubleSpinBox_2.valueChanged.connect(self._machineYStroke)
		self.form.doubleSpinBox_3.valueChanged.connect(self._machineZStroke)
		self.form.doubleSpinBox_6.valueChanged.connect(self._bedXOffset)
		self.form.doubleSpinBox_7.valueChanged.connect(self._bedYOffset)
		self.form.doubleSpinBox_4.valueChanged.connect(self._bedXSize)
		self.form.doubleSpinBox_5.valueChanged.connect(self._bedYSize)
コード例 #11
0
    def __init__(self):
        # Get the user's home directory.
        self.homeDir = os.path.expanduser("~")

        # Load the qt uic form. It _must_ be in ~/.FreeCAD/Mod/FreeCAD-CuraEngine-Plugin, Perhaps there is a better way...
        self.form = uic.loadUi(
            self.homeDir +
            "/.FreeCAD/Mod/FreeCAD-CuraEngine-Plugin/MachineDef.ui")

        self.form.doubleSpinBox_1.setValue(readSetting("machinex"))
        self.form.doubleSpinBox_2.setValue(readSetting("machiney"))
        self.form.doubleSpinBox_3.setValue(readSetting("machinez"))
        self.form.doubleSpinBox_6.setValue(readSetting("offsetx"))
        self.form.doubleSpinBox_7.setValue(readSetting("offsety"))
        self.form.doubleSpinBox_4.setValue(readSetting("bedx"))
        self.form.doubleSpinBox_5.setValue(readSetting("bedy"))

        self.form.doubleSpinBox_1.valueChanged.connect(self._machineXStroke)
        self.form.doubleSpinBox_2.valueChanged.connect(self._machineYStroke)
        self.form.doubleSpinBox_3.valueChanged.connect(self._machineZStroke)
        self.form.doubleSpinBox_6.valueChanged.connect(self._bedXOffset)
        self.form.doubleSpinBox_7.valueChanged.connect(self._bedYOffset)
        self.form.doubleSpinBox_4.valueChanged.connect(self._bedXSize)
        self.form.doubleSpinBox_5.valueChanged.connect(self._bedYSize)
コード例 #12
0
    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
        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 {name} is neither movable nor attachable, can't edit attachment",None)
                                 .format(name= self.obj.Label))

            self.obj_is_attachable = False
            self.attacher = Part.AttachEngine()

            mb = QtGui.QMessageBox()
            mb.setIcon(mb.Icon.Warning)
            mb.setText(_translate('AttachmentEditor',
                         "{obj} is not attachable. You can still use attachment editor dialog to align the object, but the attachment won't be parametric."
                         ,None)
                       .format(obj= 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/Part_Attachment.svg'))
        self.form.setWindowTitle(_translate('AttachmentEditor',"Attachment",None))

        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 {feat}",None).format(feat= 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])
コード例 #13
0
    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
        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 {name} is neither movable nor attachable, can't edit attachment",None)
                                 .format(name= self.obj.Label))

            self.obj_is_attachable = False
            self.attacher = Part.AttachEngine()

            mb = QtGui.QMessageBox()
            mb.setIcon(mb.Icon.Warning)
            mb.setText(_translate('AttachmentEditor',
                         "{obj} is not attachable. You can still use attachment editor dialog to align the object, but the attachment won't be parametric."
                         ,None)
                       .format(obj= 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/Part_Attachment.svg'))
        self.form.setWindowTitle(_translate('AttachmentEditor',"Attachment",None))

        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 {feat}",None).format(feat= 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)
        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])
コード例 #14
0
    def __init__(self):
        # Get the user's home directory.
        self.homeDir = os.path.expanduser("~")

        # Load the qt uic form. It _must_ be in ~/.FreeCAD/Mod/FreeCAD-CuraEngine-Plugin, Perhaps there is a better way...
        self.form = uic.loadUi(
            self.homeDir + "/.FreeCAD/Mod/FreeCAD-CuraEngine-Plugin/Slicer.ui")

        # Set the Default Values
        self.Vars = SliceDef()

        # Tab 1
        self.form.input_1_curapath.setText(self.Vars.readMisc("CuraPath"))
        self.initMisc(self.form.input_1_NOZDIA, "NozzleDiameter",
                      self._nozzleDiameter)

        self.initSetting(self.form.input_2_FILDIA, "filamentDiameter",
                         self._filamentDiameter)

        if not self.Vars.readMisc("OPPMODE"):
            self.form.Group_5_OPP.setChecked(False)
        self.initSetting(self.form.input_1_POSX, "posx", self._posx)
        self.initSetting(self.form.input_2_POSY, "posy", self._posy)
        self.initSetting(self.form.input_3_POSZ, "objectSink",
                         self._objectSink)

        self.initSetting(self.form.input_0_FLH, "initialLayerThickness",
                         self._initialLayerThickness)
        self.initSetting(self.form.input_1_LH, "layerThickness",
                         self._layerThickness)
        self.initSetting(self.form.input_2_PS, "insetCount", self._insetCount)
        self.initSetting(self.form.input_3_SBL, "downSkinCount",
                         self._downSkinCount)
        self.initSetting(self.form.input_4_STL, "upSkinCount",
                         self._upSkinCount)
        self.initMisc(self.form.input_5_DN, "InfillDensity",
                      self._InfillDensity)
        self.initSetting(self.form.input_6_EF, "filamentFlow",
                         self._filamentFlow)
        self.initSetting(self.form.input_1_LFR, "printSpeed", self._printSpeed)
        # Set inset speeds here temporarily until added to GUI############################
        self.Vars.writeSetting("inset0Speed",
                               self.Vars.readSetting("printSpeed"))
        self.Vars.writeSetting("insetXSpeed",
                               self.Vars.readSetting("printSpeed"))
        ##################################################################################
        self.initSetting(self.form.input_2_RFR, "moveSpeed", self._moveSpeed)
        self.initSetting(self.form.input_3_IFR, "infillSpeed",
                         self._infillSpeed)
        self.initSetting(self.form.input_4_FLFR, "initialLayerSpeed",
                         self._initialLayerSpeed)
        self.initSetting(self.form.input_5_MLT, "minimalLayerTime",
                         self._minimalLayerTime)

        self.initMisc(self.form.input_1_NT, "NozzleTemp", self._NozzleTemp)
        self.initMisc(self.form.input_2_BT, "BedTemp", self._BedTemp)

        # Set fan
        if not self.Vars.readMisc("FANMODE"):
            self.form.Group_0_EnableFan.setChecked(False)
        self.initSetting(self.form.input_1_MinFS, "fanSpeedMin",
                         self._fanSpeedMin)
        self.initSetting(self.form.input_2_MaxFS, "fanSpeedMax",
                         self._fanSpeedMax)
        self.form.slider_1_MinFS.setValue(self.Vars.readSetting("fanSpeedMin"))
        self.form.slider_2_MaxFS.setValue(self.Vars.readSetting("fanSpeedMax"))
        self.initSetting(self.form.input_1_MSAH, "fanFullOnLayerNr",
                         self._fanFullOnLayerNr)
        # Set retract
        if not self.Vars.readMisc("RETRACTMODE"):
            self.form.Group_1_EnableExtruderRetract.setChecked(False)
        self.initSetting(self.form.input_1_ERA, "retractionAmount",
                         self._retractionAmount)
        self.initSetting(self.form.input_2_ERFR, "retractionSpeed",
                         self._retractionSpeed)
        self.initSetting(self.form.input_3_ERMD, "retractionMinimalDistance",
                         self._retractionMinimalDistance)
        self.initSetting(self.form.input_4_ERME,
                         "minimalExtrusionBeforeRetraction",
                         self._minimalExtrusionBeforeRetraction)
        if self.Vars.readSetting("enableCombing"):
            self.form.checkbox_1_EC.setChecked(True)
        else:
            self.form.checkbox_1_EC.setChecked(False)
        # Set skirt
        if not self.Vars.readMisc("SKIRTMODE"):
            self.form.Group_2_EnableSkirt.setChecked(False)
        self.initSetting(self.form.input_1_DIST, "skirtDistance",
                         self._skirtDistance)
        self.initSetting(self.form.input_2_LC, "skirtLineCount",
                         self._skirtLineCount)
        self.initSetting(self.form.input_3_ML, "skirtMinLength",
                         self._skirtMinLength)
        # Set support
        if not self.Vars.readMisc("SUPPORTMODE"):
            self.form.Group_3_EnableSupport.setChecked(False)
        if self.Vars.readSetting("supportEverywhere"):
            self.form.radioButton_2_EE.setChecked(True)
        else:
            self.form.radioButton_1_ETB.setChecked(True)
        self.initMisc(self.form.input_0_SD, "SupportDensity",
                      self._SupportDensity)
        self.initSetting(self.form.input_1_SXYD, "supportXYDistance",
                         self._supportXYDistance)
        self.initSetting(self.form.input_2_SZD, "supportZDistance",
                         self._supportZDistance)
        # Set raft
        if not self.Vars.readMisc("RAFTMODE"):
            self.form.Group_4_EnableRaft.setChecked(False)
        self.initSetting(self.form.input_1_RMG, "raftMargin", self._raftMargin)
        self.initSetting(self.form.input_2_RLS, "raftLineSpacing",
                         self._raftLineSpacing)
        self.initSetting(self.form.input_3_RBT, "raftBaseThickness",
                         self._raftBaseThickness)
        self.initSetting(self.form.input_4_RBLW, "raftBaseLinewidth",
                         self._raftBaseLinewidth)
        self.initSetting(self.form.input_5_RIT, "raftInterfaceThickness",
                         self._raftInterfaceThickness)
        self.initSetting(self.form.input_6_RILW, "raftInterfaceLinewidth",
                         self._raftInterfaceLinewidth)
        # Tab3
        if self.Vars.readSetting("spiralizeMode"):
            self.form.checkbox_1_SPI.setChecked(True)
        else:
            self.form.checkbox_1_SPI.setChecked(False)
        self.form.textEdit_startcode.append(self.Vars.readSetting("startCode"))
        self.form.textEdit_endcode.append(self.Vars.readSetting("endCode"))

        #Connect Signals and Slots
        # Tab 1
        self.form.button_1_filediag.clicked.connect(self.chooseOutputDir)
        self.form.input_1_curapath.textChanged.connect(self.curaPathChange)
        self.form.button_1_ES.clicked.connect(self.exportSettingsFile)
        self.form.button_2_IS.clicked.connect(self.importSettingsFile)
        # Tab 2
        self.form.Group_0_EnableFan.clicked.connect(self._fanMode)
        self.form.slider_1_MinFS.valueChanged.connect(
            self.form.input_1_MinFS.setValue)
        self.form.slider_2_MaxFS.valueChanged.connect(
            self.form.input_2_MaxFS.setValue)
        self.form.input_1_MinFS.valueChanged.connect(
            self.form.slider_1_MinFS.setValue)
        self.form.input_2_MaxFS.valueChanged.connect(
            self.form.slider_2_MaxFS.setValue)
        self.form.Group_1_EnableExtruderRetract.clicked.connect(
            self._retractionMode)
        self.form.checkbox_1_EC.clicked.connect(self._enableCombing)
        self.form.Group_2_EnableSkirt.clicked.connect(self._skirtMode)
        self.form.Group_3_EnableSupport.clicked.connect(self._supportMode)
        self.form.radioButton_1_ETB.clicked.connect(self._supportTouchingBed)
        self.form.radioButton_2_EE.clicked.connect(self._supportEverywhere)
        self.form.Group_4_EnableRaft.clicked.connect(self._raftMode)
        self.form.Group_5_OPP.clicked.connect(self._oppMode)
        # Tab 3
        self.form.checkbox_1_SPI.clicked.connect(self._spiralize)
        self.form.textEdit_startcode.textChanged.connect(self._startCode)
        self.form.textEdit_endcode.textChanged.connect(self._endCode)
コード例 #15
0
	def __init__(self):
		# Get the user's home directory.
		self.homeDir = os.path.expanduser("~")

		# Load the qt uic form. It _must_ be in ~/.FreeCAD/Mod/FreeCAD-CuraEngine-Plugin, Perhaps there is a better way...
		self.form = uic.loadUi(os.path.join(os.path.dirname(__file__),"Slicer.ui"))

		# Set the Default Values
		self.Vars = SliceDef()
		
		# Tab 1
		self.form.input_1_curapath.setText(self.Vars.readMisc("CuraPath"))
		self.initMisc(self.form.input_1_NOZDIA, "NozzleDiameter", self._nozzleDiameter)

		self.initSetting(self.form.input_2_FILDIA, "filamentDiameter", self._filamentDiameter)

		if not self.Vars.readMisc("OPPMODE"):
			self.form.Group_5_OPP.setChecked(False)
		self.initSetting(self.form.input_1_POSX, "posx", self._posx)
		self.initSetting(self.form.input_2_POSY, "posy", self._posy)
		self.initSetting(self.form.input_3_POSZ, "objectSink", self._objectSink)

		self.initSetting(self.form.input_0_FLH, "initialLayerThickness", self._initialLayerThickness)
		self.initSetting(self.form.input_1_LH, "layerThickness", self._layerThickness)
		self.initSetting(self.form.input_2_PS, "insetCount", self._insetCount)
		self.initSetting(self.form.input_3_SBL, "downSkinCount", self._downSkinCount)
		self.initSetting(self.form.input_4_STL, "upSkinCount", self._upSkinCount)
		self.initMisc(self.form.input_5_DN, "InfillDensity", self._InfillDensity)
		self.initSetting(self.form.input_6_EF, "filamentFlow", self._filamentFlow)
		self.initSetting(self.form.input_1_LFR, "printSpeed", self._printSpeed)
		# Set inset speeds here temporarily until added to GUI############################
		self.Vars.writeSetting("inset0Speed", self.Vars.readSetting("printSpeed"))
		self.Vars.writeSetting("insetXSpeed", self.Vars.readSetting("printSpeed"))
		##################################################################################
		self.initSetting(self.form.input_2_RFR, "moveSpeed", self._moveSpeed)
		self.initSetting(self.form.input_3_IFR, "infillSpeed", self._infillSpeed)
		self.initSetting(self.form.input_4_FLFR, "initialLayerSpeed", self._initialLayerSpeed)
		self.initSetting(self.form.input_5_MLT, "minimalLayerTime", self._minimalLayerTime)

		self.initMisc(self.form.input_1_NT, "NozzleTemp", self._NozzleTemp)
		self.initMisc(self.form.input_2_BT, "BedTemp", self._BedTemp)

		# Set fan
		if not self.Vars.readMisc("FANMODE"):
			self.form.Group_0_EnableFan.setChecked(False)
		self.initSetting(self.form.input_1_MinFS, "fanSpeedMin", self._fanSpeedMin)
		self.initSetting(self.form.input_2_MaxFS, "fanSpeedMax", self._fanSpeedMax)
		self.form.slider_1_MinFS.setValue(self.Vars.readSetting("fanSpeedMin"))
		self.form.slider_2_MaxFS.setValue(self.Vars.readSetting("fanSpeedMax"))
		self.initSetting(self.form.input_1_MSAH, "fanFullOnLayerNr", self._fanFullOnLayerNr)
		# Set retract
		if not self.Vars.readMisc("RETRACTMODE"):
			self.form.Group_1_EnableExtruderRetract.setChecked(False)
		self.initSetting(self.form.input_1_ERA, "retractionAmount", self._retractionAmount)
		self.initSetting(self.form.input_2_ERFR, "retractionSpeed", self._retractionSpeed)
		self.initSetting(self.form.input_3_ERMD, "retractionMinimalDistance", self._retractionMinimalDistance)
		self.initSetting(self.form.input_4_ERME, "minimalExtrusionBeforeRetraction", self._minimalExtrusionBeforeRetraction)
		if self.Vars.readSetting("enableCombing"):
			self.form.checkbox_1_EC.setChecked(True)
		else:
			self.form.checkbox_1_EC.setChecked(False)
		# Set skirt
		if not self.Vars.readMisc("SKIRTMODE"):
			self.form.Group_2_EnableSkirt.setChecked(False)
		self.initSetting(self.form.input_1_DIST, "skirtDistance", self._skirtDistance)
		self.initSetting(self.form.input_2_LC, "skirtLineCount", self._skirtLineCount)
		self.initSetting(self.form.input_3_ML, "skirtMinLength", self._skirtMinLength)
		# Set support
		if not self.Vars.readMisc("SUPPORTMODE"):
			self.form.Group_3_EnableSupport.setChecked(False)
		if self.Vars.readSetting("supportEverywhere"):
			self.form.radioButton_2_EE.setChecked(True)
		else:
			self.form.radioButton_1_ETB.setChecked(True)
		self.initMisc(self.form.input_0_SD, "SupportDensity", self._SupportDensity)
		self.initSetting(self.form.input_1_SXYD, "supportXYDistance", self._supportXYDistance)
		self.initSetting(self.form.input_2_SZD, "supportZDistance", self._supportZDistance)
		# Set raft
		if not self.Vars.readMisc("RAFTMODE"):
			self.form.Group_4_EnableRaft.setChecked(False)
		self.initSetting(self.form.input_1_RMG, "raftMargin", self._raftMargin)
		self.initSetting(self.form.input_2_RLS, "raftLineSpacing", self._raftLineSpacing)
		self.initSetting(self.form.input_3_RBT, "raftBaseThickness", self._raftBaseThickness)
		self.initSetting(self.form.input_4_RBLW, "raftBaseLinewidth", self._raftBaseLinewidth)
		self.initSetting(self.form.input_5_RIT, "raftInterfaceThickness", self._raftInterfaceThickness)
		self.initSetting(self.form.input_6_RILW, "raftInterfaceLinewidth", self._raftInterfaceLinewidth)
		# Tab3
		if self.Vars.readSetting("spiralizeMode"):
			self.form.checkbox_1_SPI.setChecked(True)
		else:
			self.form.checkbox_1_SPI.setChecked(False)
		self.form.textEdit_startcode.append(self.Vars.readSetting("startCode"))
		self.form.textEdit_endcode.append(self.Vars.readSetting("endCode"))

		#Connect Signals and Slots
		# Tab 1
		self.form.button_1_filediag.clicked.connect(self.chooseOutputDir)
		self.form.input_1_curapath.textChanged.connect(self.curaPathChange)
		self.form.button_1_ES.clicked.connect(self.exportSettingsFile)
		self.form.button_2_IS.clicked.connect(self.importSettingsFile)
		# Tab 2
		self.form.Group_0_EnableFan.clicked.connect(self._fanMode)
		self.form.slider_1_MinFS.valueChanged.connect(self.form.input_1_MinFS.setValue)
		self.form.slider_2_MaxFS.valueChanged.connect(self.form.input_2_MaxFS.setValue)
		self.form.input_1_MinFS.valueChanged.connect(self.form.slider_1_MinFS.setValue)
		self.form.input_2_MaxFS.valueChanged.connect(self.form.slider_2_MaxFS.setValue)
		self.form.Group_1_EnableExtruderRetract.clicked.connect(self._retractionMode)
		self.form.checkbox_1_EC.clicked.connect(self._enableCombing)
		self.form.Group_2_EnableSkirt.clicked.connect(self._skirtMode)
		self.form.Group_3_EnableSupport.clicked.connect(self._supportMode)
		self.form.radioButton_1_ETB.clicked.connect(self._supportTouchingBed)
		self.form.radioButton_2_EE.clicked.connect(self._supportEverywhere)
		self.form.Group_4_EnableRaft.clicked.connect(self._raftMode)
		self.form.Group_5_OPP.clicked.connect(self._oppMode)
		# Tab 3
		self.form.checkbox_1_SPI.clicked.connect(self._spiralize)
		self.form.textEdit_startcode.textChanged.connect(self._startCode)
		self.form.textEdit_endcode.textChanged.connect(self._endCode)
コード例 #16
0
ファイル: freecad_bolts.py プロジェクト: boltsparts/BOLTSFC
    def __init__(self, repo, freecad_db):
        super(BoltsWidget, self).__init__()
        self.ui = uic.loadUi(join(bolts_path, 'bolts_widget.ui'))

        self.repo = repo
        self.dbs = {}
        self.dbs["freecad"] = freecad_db

        self.param_widgets = {}
        self.props_widgets = {}

        self.coll_root = QtGui.QTreeWidgetItem(
            self.ui.partsTree, ["Collections", "Ordered by collections"])
        self.coll_root.setData(0, 32, None)
        self.std_root = QtGui.QTreeWidgetItem(
            self.ui.partsTree, ["Standard", "Ordered by issuing body"])
        self.std_root.setData(0, 32, None)

        # set up collections
        for coll, in self.repo.itercollections():
            coll_item = QtGui.QTreeWidgetItem(self.coll_root,
                                              [coll.name, coll.description])
            coll_item.setData(0, 32, coll)

            multinames = {}
            multistds = {}

            clasids = []
            # names
            for name, multiname in self.dbs["freecad"].iternames(
                ["name", "multiname"], filter_collection=coll):
                # append classid
                clasids.append(self.repo.class_names.get_src(name).id)
                item = None
                if multiname is None:
                    item = QtGui.QTreeWidgetItem(
                        coll_item, [name.name.get_nice(), name.description])
                else:
                    if multiname not in multinames:
                        multinames[multiname] = QtGui.QTreeWidgetItem(
                            coll_item, [multiname.group.get_nice(), ""])
                    item = QtGui.QTreeWidgetItem(
                        multinames[multiname],
                        [name.name.get_nice(), name.description])

                item.setData(0, 32, name)

            # single names
            for std, multistd in self.dbs["freecad"].iterstandards(
                ["standard", "multistandard"], filter_collection=coll):
                item = None
                # only add item if it is not in classids
                if self.repo.class_standards.get_src(std).id not in clasids:
                    if multistd is None:
                        item = QtGui.QTreeWidgetItem(
                            coll_item,
                            [std.standard.get_nice(), std.description])
                    else:
                        if multistd not in multistds:
                            multistds[multistd] = QtGui.QTreeWidgetItem(
                                coll_item, [multistd.standard.get_nice(), ""])
                        item = QtGui.QTreeWidgetItem(
                            multistds[multistd],
                            [std.standard.get_nice(), std.description])

                    item.setData(0, 32, std)

        multistds = {}

        # set up standards
        for body, in repo.iterbodies():
            std_item = QtGui.QTreeWidgetItem(
                self.std_root,
                [body.body, "Standards issued by %s" % body.body])
            std_item.setData(0, 32, None)
            # single standards
            for std, multistd in self.dbs["freecad"].iterstandards(
                ["standard", "multistandard"], filter_body=body):
                if multistd is None:
                    item = QtGui.QTreeWidgetItem(
                        std_item, [std.standard.get_nice(), std.description])
                else:
                    if multistd not in multistds:
                        multistds[multistd] = QtGui.QTreeWidgetItem(
                            std_item, [multistd.standard.get_nice(), ""])
                    item = QtGui.QTreeWidgetItem(
                        multistds[multistd],
                        [std.standard.get_nice(), std.description])

                item.setData(0, 32, std)

        self.remove_empty_items(self.coll_root)

        # connections
        self.ui.addButton.clicked.connect(self.add_button_clicked)
        self.ui.partsTree.clicked.connect(self.parts_tree_sel_changed)

        # main layout for self.ui
        layout = QtGui.QHBoxLayout()
        layout.addWidget(self.ui)
        self.setLayout(layout)
コード例 #17
0
    def __init__(self, obj_to_attach, bool_take_selection):
        
        self.__define_attributes()
        
        self.obj = obj_to_attach
        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:
            self.obj_is_attachable = False
            self.attacher = Part.AttachEngine()
            
            mb = QtGui.QMessageBox()
            mb.setIcon(mb.Icon.Warning)
            mb.setText("{obj} is not attachable. You can still use attachment editor dialog to align the object, but the attachment won't be parametic."
                       .format(obj= obj_to_attach.Label))
            mb.setWindowTitle("Attachment")
            btnAbort = mb.addButton(QtGui.QMessageBox.StandardButton.Abort)
            btnOK = mb.addButton("Continue",QtGui.QMessageBox.ButtonRole.ActionRole)
            mb.setDefaultButton(btnOK)
            mb.exec_()
            if mb.clickedButton() is btnAbort:
                raise CancelError()
        
        import os
        self.form=uic.loadUi(os.path.dirname(__file__) + os.path.sep + "TaskAttachmentEditor.ui")
        # self.form.setWindowIcon(QtGui.QIcon(":/icons/PartDesign_InternalExternalGear.svg"))
        self.form.setWindowTitle("Attachment")
        
        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.superPlacementEdits = [self.form.superplacementX,
                                    self.form.superplacementY,
                                    self.form.superplacementZ,
                                    self.form.superplacementYaw,
                                    self.form.superplacementPitch,
                                    self.form.superplacementRoll]
                           
        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.superPlacementEdits)):
            QtCore.QObject.connect(self.superPlacementEdits[i], QtCore.SIGNAL("valueChanged(double)"), lambda val, i=i: self.superplacementChanged(i,val))
            
        QtCore.QObject.connect(self.form.checkBoxFlip, QtCore.SIGNAL("clicked()"), self.checkBoxFlipClicked)
        
        QtCore.QObject.connect(self.form.listOfModes, QtCore.SIGNAL("itemSelectionChanged()"), self.modeSelected)
        
        self.obj.Document.openTransaction("Edit attachment of {feat}".format(feat= self.obj.Name))
        

        self.readParameters()

        
        if len(self.attacher.References) == 0 and bool_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
        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)
        self.tv.hide_all_dependent(self.obj)
        self.tv.show(self.obj)
        self.tv.show([obj for (obj,subname) in self.attacher.References])