Hallo zusammen,
hab die letzten Tage komplexe Projekte in der Mache. Alles in Part-WB konstruiert, mit Features aus der Curves-, PoM-, Draft und Lattice2 Workbench.
So langsam werden die Projekte umfangreicher und damit leider unübersichtlich obwohl ich die Features durchnummeriert- und mit Klarnamen umbenannt habe.
DAG-View hilft etwas, aber ein frühes Feature im Combo-View zu finden gestaltet sich als schwierig, wenn boolsche Operationen, Split/Slice-, sowie Lattice2 explode Compound im Spiel sind. Mit Clone und Shrinkage arbeite ich auch.
Immerhin ermöglicht DAG-View das Highlighten von Features im Viewport und der Datentab wird auch geöffnet.
Wenn sich jetzt noch der Modellbaum bis zum gewählten Feature aufklappe würde, wäre fein.
Gibt es eine Funktion Features nach ihrer Entstehungsreihenfolge zu sortieren- oder gar automatisch durchnummerieren zu lassen? Gibt es eine Suchfunktion für Features, wenn man einen Teil der Benennung kennt?
Der Abhängigkeitsgraph ist schön übersichtlich, wenn man dann noch die Möglichkeit hätte Features auswählen zu können wäre es sehr hilfreich. Welche nützlichen Tools gibt es um komplexe Projekte beherrschen zu können?
Kleine Anmerkung: die Änderungsfreundlichkeit und Parametrik funktioniert sagenhaft gut!
Freecad erledigt diese Aufgabe mit bravour, wenn man weiß wie man Features ändert oder umdefiniert.
Viele Grüße
Wilfried
Übersichtlichkeit und Suche von Konstruktionselementen
-
- Veteran
- Posts: 7791
- Joined: Tue Jan 07, 2014 11:10 am
- Contact:
Re: Übersichtlichkeit und Suche von Konstruktionselementen
Versuch 1
Code: Select all
# -*- coding: utf-8 -*-
# Search features in the tree
from PySide import QtGui, QtCore
from PySide.QtCore import *
from PySide.QtGui import *
import FreeCADGui
class TreeSearch(QtGui.QWidget):
def __init__(self):
super(TreeSearch, self).__init__()
self.initUI()
def initUI(self):
# create info label
self.lbInfo = QtGui.QLabel('Search: ', self)
self.lbInfo.move(10, 30)
self.lbInfo.setFixedWidth(350)
self.leEdit = QtGui.QLineEdit(self)
self.leEdit.move(60, 26)
self.btButton = QtGui.QPushButton('Search', self)
self.btButton.clicked.connect(self.clickedButton)
self.btButton.resize(self.btButton.minimumSizeHint())
self.btButton.move(200, 26)
self.setGeometry(300, 350, 350, 80)
self.setWindowTitle('Search')
def searchTreeItem(self, tree, item, matchcode):
for idx in range(item.childCount()):
itm = item.child(idx)
itm.setBackground(0, QBrush())
tree.collapseItem(itm)
if matchcode in itm.text(0):
itm.setBackground(0, QColor(255, 255, 0, 100))
self.expandParent(tree, itm)
self.searchTreeItem(tree, item.child(idx), matchcode)
def expandParent(self, tree, item):
parent = item.parent()
if parent:
print parent
tree.expandItem(parent)
self.expandParent(tree, parent)
def clickedButton(self):
mw = FreeCADGui.getMainWindow()
tab = mw.findChild(QtGui.QTabWidget, u'combiTab')
tree = tab.widget(0).findChildren(QtGui.QTreeWidget)[0]
top = tree.topLevelItem(0)
for idx in range(top.childCount()):
self.searchTreeItem(tree, top.child(idx), self.leEdit.text())
def resetAll(self, item):
for idx in range(item.childCount()):
itm = item.child(idx)
itm.setBackground(0, QBrush())
self.resetAll(itm)
def closeEvent(self, event):
mw = FreeCADGui.getMainWindow()
tab = mw.findChild(QtGui.QTabWidget, u'combiTab')
tree = tab.widget(0).findChildren(QtGui.QTreeWidget)[0]
top = tree.topLevelItem(0)
for idx in range(top.childCount()):
self.resetAll(top.child(idx))
search = TreeSearch()
search.show()
-
- Veteran
- Posts: 7791
- Joined: Tue Jan 07, 2014 11:10 am
- Contact:
Re: Übersichtlichkeit und Suche von Konstruktionselementen
Hallo Benjamin,Gift wrote: ↑Thu Nov 01, 2018 9:04 pm Versuch 1
Code: Select all
# -*- coding: utf-8 -*- # Search features in the tree from PySide import QtGui, QtCore from PySide.QtCore import * from PySide.QtGui import * import FreeCADGui class TreeSearch(QtGui.QWidget): def __init__(self): super(TreeSearch, self).__init__() self.initUI() def initUI(self): # create info label self.lbInfo = QtGui.QLabel('Search: ', self) self.lbInfo.move(10, 30) self.lbInfo.setFixedWidth(350) self.leEdit = QtGui.QLineEdit(self) self.leEdit.move(60, 26) self.btButton = QtGui.QPushButton('Search', self) self.btButton.clicked.connect(self.clickedButton) self.btButton.resize(self.btButton.minimumSizeHint()) self.btButton.move(200, 26) self.setGeometry(300, 350, 350, 80) self.setWindowTitle('Search') def searchTreeItem(self, tree, item, matchcode): for idx in range(item.childCount()): itm = item.child(idx) itm.setBackground(0, QBrush()) tree.collapseItem(itm) if matchcode in itm.text(0): itm.setBackground(0, QColor(255, 255, 0, 100)) self.expandParent(tree, itm) self.searchTreeItem(tree, item.child(idx), matchcode) def expandParent(self, tree, item): parent = item.parent() if parent: print parent tree.expandItem(parent) self.expandParent(tree, parent) def clickedButton(self): mw = FreeCADGui.getMainWindow() tab = mw.findChild(QtGui.QTabWidget, u'combiTab') tree = tab.widget(0).findChildren(QtGui.QTreeWidget)[0] top = tree.topLevelItem(0) for idx in range(top.childCount()): self.searchTreeItem(tree, top.child(idx), self.leEdit.text()) def resetAll(self, item): for idx in range(item.childCount()): itm = item.child(idx) itm.setBackground(0, QBrush()) self.resetAll(itm) def closeEvent(self, event): mw = FreeCADGui.getMainWindow() tab = mw.findChild(QtGui.QTabWidget, u'combiTab') tree = tab.widget(0).findChildren(QtGui.QTreeWidget)[0] top = tree.topLevelItem(0) for idx in range(top.childCount()): self.resetAll(top.child(idx)) search = TreeSearch() search.show()
vielen lieben Dank. Das funktioniert sehr gut. Im DAG-View sehe ich den Namen aller Features, kann Features highlighten, nach einer Suche mit Deinem Skript werden die betreffenden Features im Modellbaum aufgeklappt und farblich unterlegt. Suchbegriff "Sketch" zeigt alle Sketche. Ich bin der Meinung, dass diese Suchfunktion in Freecad Master integriert werden sollte. Ein extrem nützliches Tool!
Viele Grüße
Wilfried
-
- Veteran
- Posts: 7791
- Joined: Tue Jan 07, 2014 11:10 am
- Contact:
Re: Übersichtlichkeit und Suche von Konstruktionselementen
Hehe, Mario war schneller, schon im Mai 2018:
https://www.freecadweb.org/wiki/Macro_FCTreeView
https://www.freecadweb.org/wiki/Macro_FCTreeView