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
Schaltflächen für Funktionen eines Makro
Re: Schaltflächen für Funktionen eines Makro
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.
Re: Schaltflächen für Funktionen eines Makro
Hab ich befürchtet.
Habe nun ein 2. Makro gemacht und dem eine Schaltfläche zugeordnet:
Nix Tragisches, wäre aber doch fein, wenn man das irgendwann innerhalb der Schaltfläche erledigen könnte.
LG
Chri
Habe nun ein 2. Makro gemacht und dem eine Schaltfläche zugeordnet:
Code: Select all
import meinmakro
meinmakro.meineKlasse.variante() #def-Name variante
LG
Chri
Re: Schaltflächen für Funktionen eines Makro
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.
Re: Schaltflächen für Funktionen eines Makro
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
Re: Schaltflächen für Funktionen eines Makro
hi
tray macro docking (skeleton to complete)
mario
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
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.
My macros on Gist.github here complete macros Wiki and forum.