Beschreibung |
---|
Einfaches Makro zum Animieren von Winkelbeschränkungen im Skizzierer. Versionsmakro : 1.0 Datum der letzten Änderung : 2015-05-20 FreeCAD version : Alle Herunterladen : ToolBar Icon Not file for testing See the animation on YouTube. Autor: psicofil |
Autor |
psicofil |
Herunterladen |
ToolBar Icon Not file for testing See the animation on YouTube. |
Links |
Makros Rezepte Wie installiere ich Makros So passen Sie Symbolleisten an |
Macro-Version |
1.0 |
Datum der letzten Änderung |
2015-05-20 |
FreeCAD-Version(s) |
Alle |
Standardverknüpfung |
None |
Siehe auch |
None |
Einfaches Makro zum Animieren von Randbedingungen zum Festlegen von Winkeln im Sketcher. Basierend auf der Arbeit von @microelly. Animiere eine Randbedingung und prüfe die resultierenden Effekte.
Temporary code for external macro link. Do not use this code. This code is used exclusively by Addon Manager. Link for optional manual installation: Macro
# This code is copied instead of the original macro code # to guide the user to the online download page. # Use it if the code of the macro is larger than 64 KB and cannot be included in the wiki # or if the RAW code URL is somewhere else in the wiki. from PySide import QtGui, QtCore diag = QtGui.QMessageBox(QtGui.QMessageBox.Information, "Information", "This macro must be downloaded from this link\n" "\n" "https://raw.githubusercontent.com/psicofil/Macros_FreeCAD/master/Macros/AnimatedConstrain.FCMacro" + "\n" "\n" "Quit this window to access the download page") diag.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) diag.setWindowModality(QtCore.Qt.ApplicationModal) diag.exec_() import webbrowser webbrowser.open("https://raw.githubusercontent.com/psicofil/Macros_FreeCAD/master/Macros/AnimatedConstrain.FCMacro")
Das Makro findest du im folgenden Github Repositorium:Macro_Animated_Constrain.FCMacro
AnimatedConstrain.FCMacro
# -*- coding: utf-8 -*- # Mesh with GMSH inside of FreeCAD # Author: Gomez Lucio # License: LGPL v 2.1 # Date: 17/05/2015 import FreeCAD from PySide import QtGui,QtCore import math import time class AnimConstrain(QtGui.QWidget): def __init__(self): super(AnimConstrain, self).__init__() self.initUI() def initUI(self): # Window self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) self.setWindowTitle("Animated Constrain") self.resize(240, 240) # Content self.l_initial = QtGui.QLabel(" Initital (deg)",self) self.le_initial = QtGui.QLineEdit(self) self.le_initial.setText("0") self.l_final = QtGui.QLabel(" Final (deg)",self) self.le_final = QtGui.QLineEdit(self) self.le_final.setText("360") self.l_interval = QtGui.QLabel(" Interval (deg/step) ",self) self.le_interval = QtGui.QLineEdit(self) self.le_interval.setText("5") # Constrain Type self.l_type_constrain = QtGui.QLabel("<b>Type of Constrain :<b>",self) self.rb_angle = QtGui.QRadioButton(" Angle(deg)",self) self.rb_angle.setChecked(QtCore.Qt.Checked) self.rb_length = QtGui.QRadioButton(" Length(mm)",self) self.rb_length.setEnabled(False) # Parameters self.l_parameters = QtGui.QLabel("<b>Parameters :<b>",self) self.cb_repeat = QtGui.QCheckBox(" Repeat",self) self.bt_start = QtGui.QPushButton("Start",self) self.bt_stop = QtGui.QPushButton("Stop",self) # LAYOUT layout = QtGui.QGridLayout() layout.addWidget(self.l_type_constrain, 0, 0) layout.addWidget(self.rb_angle, 1, 0) layout.addWidget(self.rb_length, 1, 1) layout.addWidget(self.l_parameters, 2, 0) layout.addWidget(self.l_initial, 3, 0) layout.addWidget(self.le_initial, 3, 1) layout.addWidget(self.l_final, 4, 0) layout.addWidget(self.le_final, 4, 1) layout.addWidget(self.l_interval, 5, 0) layout.addWidget(self.le_interval, 5, 1) layout.addWidget(self.cb_repeat, 6, 0) layout.addWidget(self.bt_start, 7, 0) layout.addWidget(self.bt_stop, 7, 1) self.setLayout(layout) self.show() # CONNECTS QtCore.QObject.connect(self.bt_start, QtCore.SIGNAL("pressed()"),self.start) QtCore.QObject.connect(self.bt_stop, QtCore.SIGNAL("pressed()"),self.stop) self.cb_repeat.stateChanged.connect(self.repeat_state) self.repeat = True def repeat_state(self, state): if state == QtCore.Qt.Checked: self.repeat = False else: self.repeat = True def start(self): App.Console.PrintMessage('Start ') self.timer = QtCore.QTimer() QtCore.QObject.connect(self.timer, QtCore.SIGNAL("timeout()"), self.proceed) self.timer.start(50) self.an = float(eval(self.le_initial.text())) self.interv = float(eval(self.le_interval.text())) self.final = float(eval(self.le_final.text())) #self.proceed() def proceed(self): if self.an >= self.final and self.repeat: self.stop() else: try: self.an = self.an + self.interv if self.an < (360.0) else 0.0 angle = self.an App.Console.PrintMessage(str(angle)+" ") App.ActiveDocument.Sketch.setDatum(cs,App.Units.Quantity((str(angle)+' deg'))) App.ActiveDocument.recompute() except: App.Console.PrintError('Error on setDatum in constrain ') self.stop() def stop(self): self.timer.stop() App.Console.PrintMessage(" End") App.ActiveDocument.recompute() # RUN WIDGET try: s = Gui.Selection.getSelectionEx() cs=s[0].SubElementNames[0] cs=int(cs[10:])-1 AnimConstrain() except: App.Console.PrintError('Select one anlge constrain First ')
Diskussion im Forum: Macro Animated Constrain