Schaltflächen für Funktionen eines Makro

In diesem Forum Fragen und Diskussionen in Deutsch
Forum rules
Foren-Regeln und hilfreiche Informationen

WICHTIG: Bitte zuerst lesen, bevor Sie posten
Chri1
Posts: 48
Joined: Wed Oct 17, 2018 9:00 am

Schaltflächen für Funktionen eines Makro

Postby Chri1 » Fri Sep 13, 2019 10:57 am

Hi
Es geht um Werkzeuge/Benutzerdefiniert/Makros:
Wie man prinzipiell einem Makro eine Schaltfläche zuordnen kann, weiß ich.
Allerdings kann man im entsprechenden Dialogfenster nur den Dateinamen angeben.
Gibt es eine Möglichkeit, auch die gewünschte Funktion (def...) innerhalb des Makros anzugeben?
Vielleicht so verständlicher:
Ich habe ein Makro gemacht, das einen Körper erstellt.
Das Makro enthält die def's zum Erstellen des Körpers und auch die defs zum Bearbeiten eines vorhandenen Körpers.
Und dementsprechend möchte ich 2 Schaltflächen: Eine zum Erstellen, eine zum Bearbeiten

Bzw. ist es möglich, einer Schaltfläche einen Parameter mitzugeben? ->
Das Makro so ändern, dass es einen Parameter zum Ausführen benötigt
Eine Schaltfläche ruft es so auf: meinmakro(1)
Die andere Schaltfläche: meinmakro(2)
Und innerhalb des Makros wird dann entsprechend verzweigt

LG
Chri
chrisb
Posts: 18029
Joined: Tue Mar 17, 2015 9:14 am

Re: Schaltflächen für Funktionen eines Makro

Postby chrisb » Fri Sep 13, 2019 2:30 pm

Ich fürchte Du brauchst zur Zeit zwei Makros. Die müssten dann aber ggf. auf gemeinsamen Code zugreifen können.
Chri1
Posts: 48
Joined: Wed Oct 17, 2018 9:00 am

Re: Schaltflächen für Funktionen eines Makro

Postby Chri1 » Sat Sep 14, 2019 9:52 am

Hab ich befürchtet.
Habe nun ein 2. Makro gemacht und dem eine Schaltfläche zugeordnet:

Code: Select all

import meinmakro
meinmakro.meineKlasse.variante()    #def-Name  variante
Nix Tragisches, wäre aber doch fein, wenn man das irgendwann innerhalb der Schaltfläche erledigen könnte.

LG
Chri
chrisb
Posts: 18029
Joined: Tue Mar 17, 2015 9:14 am

Re: Schaltflächen für Funktionen eines Makro

Postby chrisb » Sat Sep 14, 2019 10:16 am

Frag doch mal im englischen Help Forum. Dann kann man am Ende ein Feature Request erzeugen.
User avatar
Gift
Posts: 439
Joined: Tue Aug 18, 2015 10:08 am
Location: Germany, Sauerland

Re: Schaltflächen für Funktionen eines Makro

Postby Gift » Sun Sep 15, 2019 1:48 pm

Es wäre eine möglich eine "FakeWorkbench" anzulegen. Diese müsste eine "InitGui.py" beinhalten, die dann eine globale Toolbar anlegt. Ein Beispiel wäre hier Part-o-magic: GlobalToolbar.py
mario52
Posts: 2648
Joined: Wed May 16, 2012 2:13 pm

Re: Schaltflächen für Funktionen eines Makro

Postby mario52 » Mon Sep 16, 2019 8:58 pm

hi

tray macro docking (skeleton to complete)

Code: Select all

# -*- coding: utf-8 -*-
#
__title__    = "ToolBar_Parameter"
__author__   = "Mario52"
__url__      = ""
__date__     = "2019/09/16"    #YYY/MM/DD
__version__  = "0.0"


import PySide
from PySide import QtGui ,QtCore
from PySide.QtGui import QComboBox
from PySide.QtGui import QMessageBox
from PySide.QtGui import QTableWidget, QApplication
from PySide.QtGui import *
from PySide.QtCore import *

import Draft, Part, FreeCAD, math, PartGui, FreeCADGui
import Part
from FreeCAD import Base

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)


####tools#########################################################################

global ui            ; ui            = ""
global testing       ; testing       = 2    # if testing == 1 MainWindow separate
                                            # if testing == 2 RightDock
                                            # else       == other LeftDock
global FCmw          ; FCmw          = ""   # RightDock LeftDock
global myNewFreeCADWidget; myNewFreeCADWidget = ""

#############################################################
class Ui_MainWindow(object):

    def setupUi(self, MainWindow):
        global ui
        self.window = MainWindow

        self.centralWidget = QtGui.QWidget(MainWindow)
        #self.centralWidget.setMinimumSize(QtCore.QSize(500, 500))
        self.centralWidget.setObjectName(_fromUtf8("centralWidget"))

#        grid = QtGui.QGridLayout()                                     # uncomment for use grid
#        self.centralWidget.setLayout(grid)                             # uncomment for use grid

        self.DS_1_Longueur = QtGui.QDoubleSpinBox(self.centralWidget)
        self.DS_1_Longueur.setInputMethodHints(QtCore.Qt.ImhFormattedNumbersOnly)
        self.DS_1_Longueur.setDecimals(4)
        self.DS_1_Longueur.setMinimum(0.0)
        self.DS_1_Longueur.setMaximum(9999999.0)
        self.DS_1_Longueur.setValue(0.0)
        self.DS_1_Longueur.setObjectName(_fromUtf8("DS_1_Longueur"))
        self.DS_1_Longueur.valueChanged.connect(self.on_DS_1_Longueur_valueChanged) ### connect

        self.label_1 = QtGui.QLabel(self.centralWidget)
        self.label_1.setObjectName(_fromUtf8("label_1"))
        self.label_1.setText(_fromUtf8("Tyty"))

        self.PB_1_Quit = QtGui.QPushButton(self.centralWidget)
        self.PB_1_Quit.setObjectName(_fromUtf8("PB_1_Quit"))
        self.PB_1_Quit.setText(_fromUtf8("Quit"))
        self.PB_1_Quit.clicked.connect(self.on_PB_1_Quit_clicked) ### connect

        self.PB_2_Macro = QtGui.QPushButton(self.centralWidget)
        self.PB_2_Macro.setObjectName(_fromUtf8("PB_2_Macro"))
        self.PB_2_Macro.setText(_fromUtf8("Macro"))
        self.PB_2_Macro.clicked.connect(self.on_PB_2_Macro_clicked) ### connect

        ##################
        self.DS_1_Longueur.setGeometry(QtCore.QRect(10, 0, 101, 22))    # comment if use grid
        self.label_1.setGeometry(QtCore.QRect(120, 0, 81, 22))          # comment if use grid
        self.PB_1_Quit.setGeometry(QtCore.QRect(200, 0, 81, 22))        # comment if use grid
        self.PB_2_Macro.setGeometry(QtCore.QRect(300, 0, 81, 22))       # comment if use grid
        ##################

        ##################
#        grid.addWidget(self.DS_1_Longueur, 0, 0)                       # uncomment for use grid
#        grid.addWidget(self.label_1, 0, 1)                             # uncomment for use grid
#        grid.addWidget(self.PB_1_Quit, 0, 2)                           # uncomment for use grid
#        grid.addWidget(self.PB_2_Macro, 0, 3)                          # uncomment for use grid
        ##################

        MainWindow.setWindowTitle(__title__ + u" (" + __version__ + ")")    # window title 
        MainWindow.setWidget(self.centralWidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowFlags(PySide.QtCore.Qt.WindowStaysOnTopHint) #PySide

    ########
    def on_DS_1_Longueur_valueChanged(self, value):
        print(value)

    def on_PB_2_Macro_clicked(self):
        print("PB_2_Macro_clicked")

#
# other def
#

    def on_PB_1_Quit_clicked(self):               # Exit button
        App.Console.PrintMessage("End "+__title__+"\r\n")
        self.window.hide()
    ########

#########################################################################################################################
mw = FreeCADGui.getMainWindow()
dw=mw.findChildren(QtGui.QDockWidget)
#####DockWidget################################################################################
myNewFreeCADWidget = QtGui.QDockWidget()     # create a new dockwidget
myNewFreeCADWidget.setObjectName(__title__)
ui = Ui_MainWindow()
ui.setupUi(myNewFreeCADWidget)
FCmw = FreeCADGui.getMainWindow()

if testing == 2:                             # RightDock
    FCmw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myNewFreeCADWidget) # add the widget to the main window Right
else:                                        # LeftDock
    FCmw.addDockWidget(QtCore.Qt.LeftDockWidgetArea,myNewFreeCADWidget)  # add the widget to the main window Left


ToolBar_Parameter00.gif
ToolBar_Parameter00.gif (919.02 KiB) Viewed 99 times
mario
Maybe you need a special feature, go into Macros_recipes and Code_snippets, Dialog creation. My macros on Gist.github.