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
Post Reply
Chri1
Posts: 86
Joined: Wed Oct 17, 2018 9:00 am

Schaltflächen für Funktionen eines Makro

Post by Chri1 »

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
Veteran
Posts: 53930
Joined: Tue Mar 17, 2015 9:14 am

Re: Schaltflächen für Funktionen eines Makro

Post by chrisb »

Ich fürchte Du brauchst zur Zeit zwei Makros. Die müssten dann aber ggf. auf gemeinsamen Code zugreifen können.
A Sketcher Lecture with in-depth information is available in English, auf Deutsch, en français, en español.
Chri1
Posts: 86
Joined: Wed Oct 17, 2018 9:00 am

Re: Schaltflächen für Funktionen eines Makro

Post by Chri1 »

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
Veteran
Posts: 53930
Joined: Tue Mar 17, 2015 9:14 am

Re: Schaltflächen für Funktionen eines Makro

Post by chrisb »

Frag doch mal im englischen Help Forum. Dann kann man am Ende ein Feature Request erzeugen.
A Sketcher Lecture with in-depth information is available in English, auf Deutsch, en français, en español.
User avatar
Gift
Posts: 769
Joined: Tue Aug 18, 2015 10:08 am
Location: Germany, Sauerland

Re: Schaltflächen für Funktionen eines Makro

Post by Gift »

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
Veteran
Posts: 4673
Joined: Wed May 16, 2012 2:13 pm

Re: Schaltflächen für Funktionen eines Makro

Post by mario52 »

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 538 times
mario
Maybe you need a special feature, go into Macros_recipes and Code_snippets, Topological_data_scripting.
My macros on Gist.github here complete macros Wiki and forum.
Post Reply