[Feature Request] Independent views for each file
Forum rules
and Helpful information
and Helpful information
IMPORTANT: Please click here and read this first, before asking for help
Also, be nice to others! Read the FreeCAD code of conduct!
Also, be nice to others! Read the FreeCAD code of conduct!
[Feature Request] Independent views for each file
Hello folks.
I use to work on Freecad on multiples files. It is cool to have tabs so I can easily switch from one model to another.
The issue I'm facing here is actually 2.
1. I don't use the same workbench on all files. When I need to change the tab/file being edited, I have to change the Workbench too because the state of the app is something global.
2. When I am editing a sketch with the "Part Design" workbench, for example, I have to close the current edition to be able to edit another part.
So my questions are:
Why the behavior is the way it is?
There are any plans to improve this in the future?
Thanks.
I use to work on Freecad on multiples files. It is cool to have tabs so I can easily switch from one model to another.
The issue I'm facing here is actually 2.
1. I don't use the same workbench on all files. When I need to change the tab/file being edited, I have to change the Workbench too because the state of the app is something global.
2. When I am editing a sketch with the "Part Design" workbench, for example, I have to close the current edition to be able to edit another part.
So my questions are:
Why the behavior is the way it is?
There are any plans to improve this in the future?
Thanks.
-
- Veteran
- Posts: 5513
- Joined: Thu Apr 05, 2018 1:53 am
Re: [Feature Request] Independent views for each file
I don't know if this will help you or not, but you can have multiple instances of FreeCAD open at the same time, a different file in each instance.
- papyblaise
- Veteran
- Posts: 8002
- Joined: Thu Jun 13, 2019 4:28 pm
- Location: France
Re: [Feature Request] Independent views for each file
Hello
and also you can open a old file with V16 , a current whith V18 and a new one Whith V19 if you likebut you can have multiple instances of FreeCAD open at the same time
Re: [Feature Request] Independent views for each file
Yes, I know it, but it has tabs, it will be nice to have the proper behavior, right?
Re: [Feature Request] Independent views for each file
As previously said by @TheMarkster, just run several FC instances.
- dcapeletti
- Posts: 504
- Joined: Wed Jul 23, 2014 2:27 pm
Re: [Feature Request] Independent views for each file
Hi, maybe it would be useful to switch workbenches with key combinations.
Is this currently possible?
Thanks
Is this currently possible?
Thanks
- dcapeletti
- Posts: 504
- Joined: Wed Jul 23, 2014 2:27 pm
Re: [Feature Request] Independent views for each file
Hello, with this macro by pressing the A key, you get a series of circles that are the different workbenches and simply move the mouse over them and press the A again and the workbench will load immediately.
Please see https://forum.freecadweb.org/viewtopic.php?f=22&t=10892
Code: Select all
from __future__ import division
import FreeCADGui as Gui
from PySide import QtCore, QtGui
import numpy as np
class PieButton(QtGui.QGraphicsEllipseItem):
def __init__(self, pos=[0, 0], angle_range=(0, 1), size=[50, 50], view=None, parent=None):
super(PieButton, self).__init__(None, scene=parent)
self.view = view
self.angle_range = angle_range
self.setRect(pos[0] - size[0] / 2, pos[1] - size[1] / 2, size[0], size[1])
self.setBrush(QtGui.QBrush(QtCore.Qt.red))
self.setAcceptHoverEvents(True)
self.command = None
self.hoover = False
def setHoover(self, value):
if not self.hoover == value:
self.hoover = value
if value:
self.setBrush(QtGui.QBrush(QtCore.Qt.blue))
self.view.setText(self.command[0])
else:
self.setBrush(QtGui.QBrush(QtCore.Qt.red))
class PieView(QtGui.QGraphicsView):
def __init__(self, key, commands, parent=None):
super(PieView, self).__init__(parent)
self.key = key
self.setWindowFlags(QtCore.Qt.Widget | QtCore.Qt.FramelessWindowHint)
self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
self.setStyleSheet("QGraphicsView {border-style: none; background: transparent;}" )
self.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.scene = QtGui.QGraphicsScene(self)
self.scene.setSceneRect(-200, -200, 400, 400)
self.setScene(self.scene)
self.center = [0, 0]
self.buttons = []
self.label = QtGui.QGraphicsSimpleTextItem("")
self.scene.addItem(self.label)
self.add_commands(commands)
def setText(self, text):
self.label.setText(text)
self.label.update()
self.label.setPos(-self.label.sceneBoundingRect().width() / 2, 0)
def add_commands(self, commands):
num = len(commands)
r = 100
a = 70
pie_phi = np.linspace(0, np.pi * 2, num + 1)
phi = [(p + pie_phi[i + 1]) / 2 for i, p in enumerate(pie_phi[:-1])]
for i, command in enumerate(commands):
button = PieButton(
[r * np.cos(phi[i]), r * np.sin(phi[i])],
[pie_phi[i], pie_phi[i + 1]],
[a, a], self, self.scene)
button.command = command
self.scene.addItem(button)
self.buttons.append(button)
def mouseMoveEvent(self, event):
r2, angle = self.polarCoordinates
hoover = False
for item in self.buttons:
if (item.angle_range[0] < angle and
angle < item.angle_range[1] and
r2 > 1000):
item.setHoover(True)
hoover = True
else:
item.setHoover(False)
if not hoover:
self.setText("")
@property
def polarCoordinates(self):
pos = QtGui.QCursor.pos() - self.center
r2 = pos.x() ** 2 + pos.y() ** 2
angle = np.arctan2(pos.y(), pos.x())
return r2, angle + (angle < 0) * 2 * np.pi
def showAtMouse(self, event):
if event["Key"] == self.key:
self.show()
self.center = QtGui.QCursor.pos()
self.move(self.center.x()-(self.width()/2), self.center.y()-(self.height()/2))
def keyReleaseEvent(self, event):
super(PieView, self).keyReleaseEvent(event)
if event.key() == QtGui.QKeySequence(self.key):
if not event.isAutoRepeat():
for item in self.scene.items():
if hasattr(item, "hoover"):
if item.hoover:
item.command[1]()
self.hide()
if __name__ == "__main__":
def part_design(): Gui.activateWorkbench("PartDesignWorkbench")
def part(): Gui.activateWorkbench("PartWorkbench")
def draft(): Gui.activateWorkbench("DraftWorkbench")
def arch(): Gui.activateWorkbench("ArchWorkbench")
def fem(): Gui.activateWorkbench("FemWorkbench")
def sketch(): Gui.activateWorkbench("SketcherWorkbench")
def draw(): Gui.activateWorkbench("DrawingWorkbench")
def mesh(): Gui.activateWorkbench("MeshWorkbench")
command_list = [
["PartDesign", part_design],
["Part", part],
["Draft", draft],
["Arch", arch],
["Fem", fem],
["sketch", sketch],
["draw", draw],
["mesh", mesh]]
a = PieView("a", command_list)
view = Gui.ActiveDocument.ActiveView
view.addEventCallback("SoKeyboardEvent", a.showAtMouse)
- Attachments
-
- animation.gif (870.22 KiB) Viewed 1322 times
Re: [Feature Request] Independent views for each file
An advanced version is available in Tools > Addons manager
https://github.com/triplus/PieMenu
https://github.com/triplus/PieMenu
"fight the good fight"
Re: [Feature Request] Independent views for each file
This is super promising!
Reminds me of @triplus's addon, PieMenu
I like the reactivity of the macro. What would be wicked cool is:
1) if when you hovered over to the circle of your choice then it would disappear all the circles you didn't choose and the circle chosen now becomes the center hub. Around that circle would emerge all the circles that represent the commands of that specific workbench you chose.
2) that the macro would learn from you most used commands and bring them up as larger circles or faster access circles
Reminds me of @triplus's addon, PieMenu
I like the reactivity of the macro. What would be wicked cool is:
1) if when you hovered over to the circle of your choice then it would disappear all the circles you didn't choose and the circle chosen now becomes the center hub. Around that circle would emerge all the circles that represent the commands of that specific workbench you chose.
2) that the macro would learn from you most used commands and bring them up as larger circles or faster access circles
Alone you go faster. Together we go farther
Please mark thread [Solved]
Want to contribute back to FC? Checkout:
'good first issues' | Open TODOs and FIXMEs | How to Help FreeCAD | How to report Bugs
Please mark thread [Solved]
Want to contribute back to FC? Checkout:
'good first issues' | Open TODOs and FIXMEs | How to Help FreeCAD | How to report Bugs
- dcapeletti
- Posts: 504
- Joined: Wed Jul 23, 2014 2:27 pm
Re: [Feature Request] Independent views for each file
And let the circles have the icons of the workbenches