From 5d93be3de8b964fe25a88733df799a283abc6a77 Mon Sep 17 00:00:00 2001 From: Markus Lampert Date: Tue, 3 Jan 2017 18:01:16 -0800 Subject: [PATCH 01/19] Basic tag visualization and selection. --- .../PathScripts/PathDressupHoldingTags.py | 128 +++++++++++++++--- 1 file changed, 108 insertions(+), 20 deletions(-) diff --git a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py index d052928062..ef04ef5eb6 100644 --- a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py +++ b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py @@ -36,6 +36,7 @@ from DraftGui import todo from PathScripts import PathUtils from PathScripts.PathGeom import * from PySide import QtCore, QtGui +from pivy import coin """Holding Tags Dressup object and FreeCAD command""" @@ -753,9 +754,10 @@ class TaskPanel: DataX = QtCore.Qt.ItemDataRole.UserRole DataY = QtCore.Qt.ItemDataRole.UserRole + 1 - def __init__(self, obj, jvoVisibility=None): + def __init__(self, obj, viewProvider, jvoVisibility=None): self.obj = obj self.obj.Proxy.obj = obj + self.viewProvider = viewProvider self.form = FreeCADGui.PySideUic.loadUi(":/panels/HoldingTagsEdit.ui") self.jvo = PathUtils.findParentJob(obj).ViewObject if jvoVisibility is None: @@ -779,6 +781,7 @@ class TaskPanel: FreeCAD.ActiveDocument.recompute() def cleanup(self): + self.viewProvider.clearTaskPanel() FreeCADGui.ActiveDocument.resetEdit() FreeCADGui.Control.closeDialog() FreeCAD.ActiveDocument.recompute() @@ -790,7 +793,7 @@ class TaskPanel: print("closed") def open(self): - self.s = SelObserver() + self.s = SelObserver(self.viewProvider) # install the function mode resident FreeCADGui.Selection.addObserver(self.s) @@ -836,6 +839,7 @@ class TaskPanel: item.setFlags(flags) self.form.lwTags.addItem(item) self.form.lwTags.blockSignals(False) + self.whenTagSelectionChanged() def cleanupUI(self): print("cleanupUI") @@ -868,10 +872,14 @@ class TaskPanel: count = self.form.sbCount.value() self.form.pbGenerate.setEnabled(count) + def selectTagWithId(self, index): + self.form.lwTags.setCurrentRow(index) + def whenTagSelectionChanged(self): print('whenTagSelectionChanged') - item = self.form.lwTags.currentItem() - self.form.pbDelete.setEnabled(not item is None) + index = self.form.lwTags.currentRow() + self.form.pbDelete.setEnabled(index != -1) + self.viewProvider.selectTag(index) def deleteSelectedTag(self): self.obj.Proxy.setXyEnabled(self.getTags(False)) @@ -883,10 +891,8 @@ class TaskPanel: tags = self.tags tags.append((point.x, point.y, True)) self.obj.Proxy.setXyEnabled(tags) - panel = TaskPanel(self.obj, self.jvoVisible) - todo.delay(FreeCADGui.Control.closeDialog, None) - todo.delay(FreeCADGui.Control.showDialog, panel) - todo.delay(panel.setupUi, None) + panel = TaskPanel(self.obj, self.viewProvider, self.jvoVisible) + todo.delay(self.viewProvider.setupTaskPanel, panel) def addNewTag(self): self.tags = self.getTags(True) @@ -938,47 +944,94 @@ class TaskPanel: self.form.pbDelete.clicked.connect(self.deleteSelectedTag) self.form.pbAdd.clicked.connect(self.addNewTag) + self.viewProvider.turnMarkerDisplayOn(True) class SelObserver: - def __init__(self): - import PathScripts.PathSelection as PST - PST.eselect() + def __init__(self, viewProvider): + FreeCADGui.Selection.addSelectionGate(self) + self.viewProvider = viewProvider def __del__(self): - import PathScripts.PathSelection as PST - PST.clear() + FreeCADGui.Selection.removeSelectionGate() + + def allow(self, doc, obj, sub): + return self.viewProvider.allowSelection(obj, sub) def addSelection(self, doc, obj, sub, pnt): + self.viewProvider.addSelection(pnt) #FreeCADGui.doCommand('Gui.Selection.addSelection(FreeCAD.ActiveDocument.' + obj + ')') FreeCADGui.updateGui() +class HoldingTagMarker: + def __init__(self, p): + self.point = p + self.sep = coin.SoSeparator() + self.pos = coin.SoTranslation() + self.pos.translation = (p.x, p.y, p.z) + self.sphere = coin.SoSphere() + self.material = coin.SoMaterial() + self.sep.addChild(self.pos) + self.sep.addChild(self.material) + self.sep.addChild(self.sphere) + + def setSelected(self, select): + self.selected = select + self.sphere.radius = 1.5 if select else 1.0 + + def setEnabled(self, enabled): + self.enabled = enabled + if enabled: + print("green") + self.material.diffuseColor = coin.SbColor(0.0, 1.0, 0.0) + self.material.transparency = 0.0 + else: + print("gray") + self.material.diffuseColor = coin.SbColor(0.8, 0.8, 0.8) + self.material.transparency = 0.6 + class ViewProviderDressup: def __init__(self, vobj): vobj.Proxy = self def attach(self, vobj): - self.Object = vobj.Object - return + self.obj = vobj.Object + self.tags = [] + self.switch = coin.SoSwitch() + vobj.RootNode.addChild(self.switch) + self.turnMarkerDisplayOn(False) + + def turnMarkerDisplayOn(self, display): + sw = coin.SO_SWITCH_ALL if display else coin.SO_SWITCH_NONE + self.switch.whichChild = sw + def claimChildren(self): - for i in self.Object.Base.InList: + for i in self.obj.Base.InList: if hasattr(i, "Group"): group = i.Group for g in group: - if g.Name == self.Object.Base.Name: + if g.Name == self.obj.Base.Name: group.remove(g) i.Group = group print i.Group #FreeCADGui.ActiveDocument.getObject(obj.Base.Name).Visibility = False - return [self.Object.Base] + return [self.obj.Base] def setEdit(self, vobj, mode=0): + panel = TaskPanel(vobj.Object, self) + self.setupTaskPanel(panel) + return True + + def setupTaskPanel(self, panel): + self.panel = panel FreeCADGui.Control.closeDialog() - panel = TaskPanel(vobj.Object) FreeCADGui.Control.showDialog(panel) panel.setupUi() - return True + + def clearTaskPanel(self): + self.panel = None + self.turnMarkerDisplayOn(False) def __getstate__(self): return None @@ -992,6 +1045,41 @@ class ViewProviderDressup: PathUtils.addToJob(arg1.Object.Base) return True + def updateData(self, obj, propName): + if 'Disabled' == propName: + for tag in self.tags: + self.switch.removeChild(tag.sep) + tags = [] + for i, p in enumerate(obj.Positions): + tag = HoldingTagMarker(p) + tag.setEnabled(not i in obj.Disabled) + tags.append(tag) + self.switch.addChild(tag.sep) + self.tags = tags + + def selectTag(self, index): + print("selectTag(%s)" % index) + for i, tag in enumerate(self.tags): + tag.setSelected(i == index) + + def allowSelection(self, obj, sub): + if obj == self.obj: + print("allowSelection(%s, %s)" % (obj.Name, sub)) + return True + return False + + def tagAtPoint(self, point): + p = FreeCAD.Vector(point[0], point[1], point[2]) + for i, tag in enumerate(self.tags): + if PathGeom.pointsCoincide(p, tag.point, tag.sphere.radius.getValue() * 1.1): + return i + return -1 + + def addSelection(self, point): + i = self.tagAtPoint(point) + if self.panel: + self.panel.selectTagWithId(i) + class CommandPathDressupHoldingTags: def GetResources(self): From 35ac161f4acf7bd21127958e6fa597fbcf4eff3b Mon Sep 17 00:00:00 2001 From: Markus Lampert Date: Wed, 4 Jan 2017 22:37:25 -0800 Subject: [PATCH 02/19] Adding and modifying tags with mouse works - event and selection handlers are properly registered and removed again. --- src/Mod/Path/Gui/Resources/Path.qrc | 1 + .../Path/Gui/Resources/panels/PointEdit.ui | 71 ++++++ .../PathScripts/PathDressupHoldingTags.py | 211 +++++++++++++----- 3 files changed, 229 insertions(+), 54 deletions(-) create mode 100644 src/Mod/Path/Gui/Resources/panels/PointEdit.ui diff --git a/src/Mod/Path/Gui/Resources/Path.qrc b/src/Mod/Path/Gui/Resources/Path.qrc index 5e701bc5cd..7299f8d86b 100644 --- a/src/Mod/Path/Gui/Resources/Path.qrc +++ b/src/Mod/Path/Gui/Resources/Path.qrc @@ -58,6 +58,7 @@ panels/JobEdit.ui panels/MillFaceEdit.ui panels/PocketEdit.ui + panels/PointEdit.ui panels/ProfileEdgesEdit.ui panels/ProfileEdit.ui panels/RemoteEdit.ui diff --git a/src/Mod/Path/Gui/Resources/panels/PointEdit.ui b/src/Mod/Path/Gui/Resources/panels/PointEdit.ui new file mode 100644 index 0000000000..fe932984fd --- /dev/null +++ b/src/Mod/Path/Gui/Resources/panels/PointEdit.ui @@ -0,0 +1,71 @@ + + + Form + + + + 0 + 0 + 362 + 182 + + + + Point Edit + + + + + + + + + Global X + + + + + + + + + + Global Y + + + + + + + + + + Global Z + + + + + + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + Gui::InputField + QLineEdit +
Gui/InputField.h
+
+
+ + +
diff --git a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py index ef04ef5eb6..462f27323d 100644 --- a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py +++ b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py @@ -23,7 +23,9 @@ # *************************************************************************** import FreeCAD import FreeCADGui +import Draft import DraftGeomUtils +import DraftGui import Path import Part import copy @@ -563,6 +565,12 @@ class PathData: raise ValueError("There's something really wrong here") return ordered + def pointIsOnPath(self, p): + for e in self.edges: + if DraftGeomUtils.isPtOnEdge(p, e): + return True + return False + class ObjectDressup: @@ -750,15 +758,32 @@ class ObjectDressup: self.obj.Disabled = disabled self.execute(self.obj) + def pointIsOnPath(self, obj, point): + if not hasattr(self, 'pathData'): + self.setup(obj) + return self.pathData.pointIsOnPath(point) + class TaskPanel: DataX = QtCore.Qt.ItemDataRole.UserRole DataY = QtCore.Qt.ItemDataRole.UserRole + 1 + DataID = QtCore.Qt.ItemDataRole.UserRole + 2 def __init__(self, obj, viewProvider, jvoVisibility=None): self.obj = obj self.obj.Proxy.obj = obj self.viewProvider = viewProvider - self.form = FreeCADGui.PySideUic.loadUi(":/panels/HoldingTagsEdit.ui") + self.form = QtGui.QWidget() + self.formTags = FreeCADGui.PySideUic.loadUi(":/panels/HoldingTagsEdit.ui") + self.formPoint = FreeCADGui.PySideUic.loadUi(":/panels/PointEdit.ui") + self.layout = QtGui.QVBoxLayout(self.form) + self.form.setGeometry(self.formTags.geometry()) + self.form.setWindowTitle(self.formTags.windowTitle()) + self.form.setSizePolicy(self.formTags.sizePolicy()) + self.formTags.setParent(self.form) + self.formPoint.setParent(self.form) + self.layout.addWidget(self.formTags) + self.layout.addWidget(self.formPoint) + self.formPoint.hide() self.jvo = PathUtils.findParentJob(obj).ViewObject if jvoVisibility is None: FreeCAD.ActiveDocument.openTransaction(translate("PathDressup_HoldingTags", "Edit HoldingTags Dress-up")) @@ -781,39 +806,35 @@ class TaskPanel: FreeCAD.ActiveDocument.recompute() def cleanup(self): + self.removeGlobalCallbacks() self.viewProvider.clearTaskPanel() FreeCADGui.ActiveDocument.resetEdit() FreeCADGui.Control.closeDialog() FreeCAD.ActiveDocument.recompute() - FreeCADGui.Selection.removeObserver(self.s) if self.jvoVisible: self.jvo.show() - def closeDialog(self): - print("closed") - def open(self): self.s = SelObserver(self.viewProvider) - # install the function mode resident FreeCADGui.Selection.addObserver(self.s) def getTags(self, includeCurrent): tags = [] - index = self.form.lwTags.currentRow() - for i in range(0, self.form.lwTags.count()): - item = self.form.lwTags.item(i) + index = self.formTags.lwTags.currentRow() + for i in range(0, self.formTags.lwTags.count()): + item = self.formTags.lwTags.item(i) enabled = item.checkState() == QtCore.Qt.CheckState.Checked x = item.data(self.DataX) y = item.data(self.DataY) - print("(%.2f, %.2f) i=%d/%s" % (x, y, i, index)) + #print("(%.2f, %.2f) i=%d/%s" % (x, y, i, index)) if includeCurrent or i != index: tags.append((x, y, enabled)) return tags def getTagParameters(self): - self.obj.Width = self.form.dsbWidth.value() - self.obj.Height = self.form.dsbHeight.value() - self.obj.Angle = self.form.dsbAngle.value() + self.obj.Width = self.formTags.dsbWidth.value() + self.obj.Height = self.formTags.dsbHeight.value() + self.obj.Angle = self.formTags.dsbAngle.value() def getFields(self): self.getTagParameters() @@ -822,13 +843,14 @@ class TaskPanel: def updateTagsView(self): print("updateTagsView") - self.form.lwTags.blockSignals(True) - self.form.lwTags.clear() + self.formTags.lwTags.blockSignals(True) + self.formTags.lwTags.clear() for i, pos in enumerate(self.obj.Positions): lbl = "%d: (%.2f, %.2f)" % (i, pos.x, pos.y) item = QtGui.QListWidgetItem(lbl) item.setData(self.DataX, pos.x) item.setData(self.DataY, pos.y) + item.setData(self.DataID, i) if i in self.obj.Disabled: item.setCheckState(QtCore.Qt.CheckState.Unchecked) else: @@ -837,8 +859,8 @@ class TaskPanel: flags |= QtCore.Qt.ItemFlag.ItemIsEnabled flags |= QtCore.Qt.ItemFlag.ItemIsUserCheckable item.setFlags(flags) - self.form.lwTags.addItem(item) - self.form.lwTags.blockSignals(False) + self.formTags.lwTags.addItem(item) + self.formTags.lwTags.blockSignals(False) self.whenTagSelectionChanged() def cleanupUI(self): @@ -852,7 +874,7 @@ class TaskPanel: print("generateNewTags") self.cleanupUI() - count = self.form.sbCount.value() + count = self.formTags.sbCount.value() if not self.obj.Proxy.generateTags(self.obj, count): self.obj.Proxy.execute(self.obj) @@ -869,34 +891,109 @@ class TaskPanel: def whenCountChanged(self): print("whenCountChanged") - count = self.form.sbCount.value() - self.form.pbGenerate.setEnabled(count) + count = self.formTags.sbCount.value() + self.formTags.pbGenerate.setEnabled(count) def selectTagWithId(self, index): - self.form.lwTags.setCurrentRow(index) + self.formTags.lwTags.setCurrentRow(index) def whenTagSelectionChanged(self): print('whenTagSelectionChanged') - index = self.form.lwTags.currentRow() - self.form.pbDelete.setEnabled(index != -1) + index = self.formTags.lwTags.currentRow() + self.formTags.pbDelete.setEnabled(index != -1) self.viewProvider.selectTag(index) def deleteSelectedTag(self): + print("deleteSelectedTag") self.obj.Proxy.setXyEnabled(self.getTags(False)) self.updateTagsView() - def addNewTagAt(self, point, what): - if what == self.obj: - print("%s '%s'" %( point, what.Name)) + def addNewTagAt(self, point, obj): + if obj == self.obj and obj.Proxy.pointIsOnPath(obj, point): + print("addNewTagAt(%s, %s)" % (point, obj.Name)) tags = self.tags tags.append((point.x, point.y, True)) self.obj.Proxy.setXyEnabled(tags) - panel = TaskPanel(self.obj, self.viewProvider, self.jvoVisible) - todo.delay(self.viewProvider.setupTaskPanel, panel) + self.updateTagsView() + else: + print("ignore new tag at %s (%s)" % (point, obj)) + self.formPoint.hide() + self.formTags.show() def addNewTag(self): self.tags = self.getTags(True) - FreeCADGui.Snapper.getPoint(callback=self.addNewTagAt, extradlg=[self]) + self.getPoint(self.addNewTagAt) + + def editTagAt(self, point, obj): + if obj == self.obj: + tags = [] + for i, (x, y, enabled) in enumerate(self.tags): + if i == self.editItem: + tags.append((point.x, point.y, enabled)) + else: + tags.append((x, y, enabled)) + self.obj.Proxy.setXyEnabled(tags) + self.updateTagsView() + self.formPoint.hide() + self.formTags.show() + + def editTag(self, item): + self.tags = self.getTags(True) + self.editItem = item.data(self.DataID) + x = item.data(self.DataX) + y = item.data(self.DataY) + self.getPoint(self.editTagAt, FreeCAD.Vector(x, y, 0)) + + def removeGlobalCallbacks(self): + if hasattr(self, 'view') and self.view: + if self.callbackClick: + self.view.removeEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(), self.callbackClick) + self.callbackClick = None + if self.callbackMove: + self.view.removeEventCallbackPivy(coin.SoLocation2Event.getClassTypeId(), self.callbackMove) + self.callbackMove = None + self.view = None + + def getPoint(self, whenDone, start=None): + + def mouseMove(cb): + event = cb.getEvent() + pos = event.getPosition() + cntrl = event.wasCtrlDown() + shift = event.wasShiftDown() + self.pt = FreeCADGui.Snapper.snap(pos, lastpoint=start, active=cntrl, constrain=shift) + if cntrl: + p = self.pt + else: + plane = FreeCAD.DraftWorkingPlane + p = plane.getLocalCoords(self.pt) + self.formPoint.ifValueX.setText(DraftGui.displayExternal(p.x)) + self.formPoint.ifValueY.setText(DraftGui.displayExternal(p.y)) + self.formPoint.ifValueZ.setText(DraftGui.displayExternal(p.z)) + + def click(cb): + event = cb.getEvent() + if event.getButton() == 1 and event.getState() == coin.SoMouseButtonEvent.DOWN: + accept() + + def finish(ok): + self.removeGlobalCallbacks(); + obj = FreeCADGui.Snapper.lastSnappedObject + FreeCADGui.Snapper.off() + whenDone(self.pt if ok else None, obj if ok else None) + + def accept(): + finish(True) + + def cancel(): + finish(False) + + self.formTags.hide() + self.formPoint.show() + + self.view = Draft.get3DView() + self.callbackClick = self.view.addEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(), click) + self.callbackMove = self.view.addEventCallbackPivy(coin.SoLocation2Event.getClassTypeId(), mouseMove) def setupSpinBox(self, widget, val, decimals = 2): widget.setMinimum(0) @@ -906,12 +1003,12 @@ class TaskPanel: def setFields(self): self.updateTagsView() - self.setupSpinBox(self.form.sbCount, len(self.obj.Positions), None) - self.setupSpinBox(self.form.dsbHeight, self.obj.Height) - self.setupSpinBox(self.form.dsbWidth, self.obj.Width) - self.setupSpinBox(self.form.dsbAngle, self.obj.Angle, 0) - self.form.dsbAngle.setMaximum(90) - self.form.dsbAngle.setSingleStep(5.) + self.setupSpinBox(self.formTags.sbCount, len(self.obj.Positions), None) + self.setupSpinBox(self.formTags.dsbHeight, self.obj.Height) + self.setupSpinBox(self.formTags.dsbWidth, self.obj.Width) + self.setupSpinBox(self.formTags.dsbAngle, self.obj.Angle, 0) + self.formTags.dsbAngle.setMaximum(90) + self.formTags.dsbAngle.setSingleStep(5.) def updateModelHeight(self): print('updateModelHeight') @@ -933,32 +1030,35 @@ class TaskPanel: self.setFields() self.whenCountChanged() - self.form.sbCount.valueChanged.connect(self.whenCountChanged) - self.form.pbGenerate.clicked.connect(self.generateNewTags) + self.formTags.sbCount.valueChanged.connect(self.whenCountChanged) + self.formTags.pbGenerate.clicked.connect(self.generateNewTags) - self.form.dsbHeight.editingFinished.connect(self.updateModelHeight) - self.form.dsbWidth.editingFinished.connect(self.updateModelWidth) - self.form.dsbAngle.editingFinished.connect(self.updateModelAngle) - self.form.lwTags.itemChanged.connect(self.updateModelTags) - self.form.lwTags.itemSelectionChanged.connect(self.whenTagSelectionChanged) + self.formTags.dsbHeight.editingFinished.connect(self.updateModelHeight) + self.formTags.dsbWidth.editingFinished.connect(self.updateModelWidth) + self.formTags.dsbAngle.editingFinished.connect(self.updateModelAngle) + self.formTags.lwTags.itemChanged.connect(self.updateModelTags) + self.formTags.lwTags.itemSelectionChanged.connect(self.whenTagSelectionChanged) + self.formTags.lwTags.itemActivated.connect(self.editTag) - self.form.pbDelete.clicked.connect(self.deleteSelectedTag) - self.form.pbAdd.clicked.connect(self.addNewTag) + self.formTags.pbDelete.clicked.connect(self.deleteSelectedTag) + self.formTags.pbAdd.clicked.connect(self.addNewTag) self.viewProvider.turnMarkerDisplayOn(True) class SelObserver: def __init__(self, viewProvider): + print("register observer") FreeCADGui.Selection.addSelectionGate(self) self.viewProvider = viewProvider def __del__(self): + print("remove observer") FreeCADGui.Selection.removeSelectionGate() def allow(self, doc, obj, sub): return self.viewProvider.allowSelection(obj, sub) def addSelection(self, doc, obj, sub, pnt): - self.viewProvider.addSelection(pnt) + self.viewProvider.addSelection(doc, obj, sub, pnt) #FreeCADGui.doCommand('Gui.Selection.addSelection(FreeCAD.ActiveDocument.' + obj + ')') FreeCADGui.updateGui() @@ -981,11 +1081,9 @@ class HoldingTagMarker: def setEnabled(self, enabled): self.enabled = enabled if enabled: - print("green") self.material.diffuseColor = coin.SbColor(0.0, 1.0, 0.0) self.material.transparency = 0.0 else: - print("gray") self.material.diffuseColor = coin.SbColor(0.8, 0.8, 0.8) self.material.transparency = 0.6 @@ -1028,9 +1126,13 @@ class ViewProviderDressup: FreeCADGui.Control.closeDialog() FreeCADGui.Control.showDialog(panel) panel.setupUi() + FreeCADGui.Selection.addSelectionGate(self) + FreeCADGui.Selection.addObserver(self) def clearTaskPanel(self): self.panel = None + FreeCADGui.Selection.removeObserver(self) + FreeCADGui.Selection.removeSelectionGate() self.turnMarkerDisplayOn(False) def __getstate__(self): @@ -1062,12 +1164,6 @@ class ViewProviderDressup: for i, tag in enumerate(self.tags): tag.setSelected(i == index) - def allowSelection(self, obj, sub): - if obj == self.obj: - print("allowSelection(%s, %s)" % (obj.Name, sub)) - return True - return False - def tagAtPoint(self, point): p = FreeCAD.Vector(point[0], point[1], point[2]) for i, tag in enumerate(self.tags): @@ -1075,10 +1171,17 @@ class ViewProviderDressup: return i return -1 - def addSelection(self, point): + # SelectionObserver interface + def allow(self, doc, obj, sub): + if obj == self.obj: + return True + return False + + def addSelection(self, doc, obj, sub, point): i = self.tagAtPoint(point) if self.panel: self.panel.selectTagWithId(i) + FreeCADGui.updateGui() class CommandPathDressupHoldingTags: From 085fadcd7be7b1ab9916501c0aa5ecdea0bc9f87 Mon Sep 17 00:00:00 2001 From: Markus Lampert Date: Thu, 5 Jan 2017 08:43:54 -0800 Subject: [PATCH 03/19] Added support for manual point input. --- .../Path/Gui/Resources/panels/PointEdit.ui | 11 ++- .../PathScripts/PathDressupHoldingTags.py | 80 ++++++++++--------- 2 files changed, 52 insertions(+), 39 deletions(-) diff --git a/src/Mod/Path/Gui/Resources/panels/PointEdit.ui b/src/Mod/Path/Gui/Resources/panels/PointEdit.ui index fe932984fd..454bcabaf3 100644 --- a/src/Mod/Path/Gui/Resources/panels/PointEdit.ui +++ b/src/Mod/Path/Gui/Resources/panels/PointEdit.ui @@ -39,13 +39,20 @@ + + false + Global Z - + + + false + + @@ -53,7 +60,7 @@ - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::Save diff --git a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py index 462f27323d..333b2fb145 100644 --- a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py +++ b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py @@ -792,6 +792,7 @@ class TaskPanel: self.jvo.hide() else: self.jvoVisible = jvoVisibility + self.pt = FreeCAD.Vector(0, 0, 0) def reject(self): print("reject") @@ -814,10 +815,6 @@ class TaskPanel: if self.jvoVisible: self.jvo.show() - def open(self): - self.s = SelObserver(self.viewProvider) - FreeCADGui.Selection.addObserver(self.s) - def getTags(self, includeCurrent): tags = [] index = self.formTags.lwTags.currentRow() @@ -909,14 +906,14 @@ class TaskPanel: self.updateTagsView() def addNewTagAt(self, point, obj): - if obj == self.obj and obj.Proxy.pointIsOnPath(obj, point): - print("addNewTagAt(%s, %s)" % (point, obj.Name)) + if (obj or point != FreeCAD.Vector()) and self.obj.Proxy.pointIsOnPath(self.obj, point): + print("addNewTagAt(%s)" % (point)) tags = self.tags tags.append((point.x, point.y, True)) self.obj.Proxy.setXyEnabled(tags) self.updateTagsView() else: - print("ignore new tag at %s (%s)" % (point, obj)) + print("ignore new tag at %s" % (point)) self.formPoint.hide() self.formTags.show() @@ -956,40 +953,41 @@ class TaskPanel: def getPoint(self, whenDone, start=None): + def displayPoint(p): + self.formPoint.ifValueX.setText(DraftGui.displayExternal(p.x)) + self.formPoint.ifValueY.setText(DraftGui.displayExternal(p.y)) + self.formPoint.ifValueZ.setText(DraftGui.displayExternal(p.z)) + self.formPoint.ifValueX.setFocus() + self.formPoint.ifValueX.selectAll() + def mouseMove(cb): event = cb.getEvent() pos = event.getPosition() cntrl = event.wasCtrlDown() shift = event.wasShiftDown() self.pt = FreeCADGui.Snapper.snap(pos, lastpoint=start, active=cntrl, constrain=shift) - if cntrl: - p = self.pt - else: - plane = FreeCAD.DraftWorkingPlane - p = plane.getLocalCoords(self.pt) - self.formPoint.ifValueX.setText(DraftGui.displayExternal(p.x)) - self.formPoint.ifValueY.setText(DraftGui.displayExternal(p.y)) - self.formPoint.ifValueZ.setText(DraftGui.displayExternal(p.z)) + plane = FreeCAD.DraftWorkingPlane + p = plane.getLocalCoords(self.pt) + displayPoint(p) def click(cb): event = cb.getEvent() if event.getButton() == 1 and event.getState() == coin.SoMouseButtonEvent.DOWN: accept() - def finish(ok): - self.removeGlobalCallbacks(); - obj = FreeCADGui.Snapper.lastSnappedObject - FreeCADGui.Snapper.off() - whenDone(self.pt if ok else None, obj if ok else None) - def accept(): - finish(True) + self.pointAccept() def cancel(): - finish(False) + self.pointCancel() + self.pointWhenDone = whenDone self.formTags.hide() self.formPoint.show() + if start: + displayPoint(start) + else: + displayPoint(FreeCAD.Vector(0,0,0)) self.view = Draft.get3DView() self.callbackClick = self.view.addEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(), click) @@ -1042,25 +1040,33 @@ class TaskPanel: self.formTags.pbDelete.clicked.connect(self.deleteSelectedTag) self.formTags.pbAdd.clicked.connect(self.addNewTag) + + self.formPoint.buttonBox.accepted.connect(self.pointAccept) + QtCore.QObject.connect(self.formPoint.ifValueX, QtCore.SIGNAL("valueChanged(double)"), self.changeValueX) + QtCore.QObject.connect(self.formPoint.ifValueY, QtCore.SIGNAL("valueChanged(double)"), self.changeValueY) + QtCore.QObject.connect(self.formPoint.ifValueZ, QtCore.SIGNAL("valueChanged(double)"), self.changeValueZ) + self.viewProvider.turnMarkerDisplayOn(True) -class SelObserver: - def __init__(self, viewProvider): - print("register observer") - FreeCADGui.Selection.addSelectionGate(self) - self.viewProvider = viewProvider + def pointFinish(self, ok): + self.removeGlobalCallbacks(); + obj = FreeCADGui.Snapper.lastSnappedObject + FreeCADGui.Snapper.off() + self.pointWhenDone(self.pt if ok else None, obj if ok else None) - def __del__(self): - print("remove observer") - FreeCADGui.Selection.removeSelectionGate() + def pointReject(self): + self.pointFinish(False) - def allow(self, doc, obj, sub): - return self.viewProvider.allowSelection(obj, sub) + def pointAccept(self): + self.pointFinish(True) + + def changeValueX(self, double): + self.pt.x = double + def changeValueY(self, double): + self.pt.y = double + def changeValueZ(self, double): + self.pt.z = double - def addSelection(self, doc, obj, sub, pnt): - self.viewProvider.addSelection(doc, obj, sub, pnt) - #FreeCADGui.doCommand('Gui.Selection.addSelection(FreeCAD.ActiveDocument.' + obj + ')') - FreeCADGui.updateGui() class HoldingTagMarker: def __init__(self, p): From d977a9d32cdb7b1374bb13a57ee4972fc3ccbd90 Mon Sep 17 00:00:00 2001 From: Markus Lampert Date: Thu, 5 Jan 2017 08:53:10 -0800 Subject: [PATCH 04/19] Minor name cleanups. --- .../Path/PathScripts/PathDressupHoldingTags.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py index 333b2fb145..596e0b92a0 100644 --- a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py +++ b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py @@ -943,12 +943,12 @@ class TaskPanel: def removeGlobalCallbacks(self): if hasattr(self, 'view') and self.view: - if self.callbackClick: - self.view.removeEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(), self.callbackClick) - self.callbackClick = None - if self.callbackMove: - self.view.removeEventCallbackPivy(coin.SoLocation2Event.getClassTypeId(), self.callbackMove) - self.callbackMove = None + if self.pointCbClick: + self.view.removeEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(), self.pointCbClick) + self.pointCbClick = None + if self.pointCbMove: + self.view.removeEventCallbackPivy(coin.SoLocation2Event.getClassTypeId(), self.pointCbMove) + self.pointCbMove = None self.view = None def getPoint(self, whenDone, start=None): @@ -990,8 +990,8 @@ class TaskPanel: displayPoint(FreeCAD.Vector(0,0,0)) self.view = Draft.get3DView() - self.callbackClick = self.view.addEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(), click) - self.callbackMove = self.view.addEventCallbackPivy(coin.SoLocation2Event.getClassTypeId(), mouseMove) + self.pointCbClick = self.view.addEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(), click) + self.pointCbMove = self.view.addEventCallbackPivy(coin.SoLocation2Event.getClassTypeId(), mouseMove) def setupSpinBox(self, widget, val, decimals = 2): widget.setMinimum(0) From 441f472f27a611b6d07cc8fdf86e02e85c6a1307 Mon Sep 17 00:00:00 2001 From: Markus Lampert Date: Thu, 5 Jan 2017 17:07:02 -0800 Subject: [PATCH 05/19] Using InputField for width and height and use proper properties. --- .../Gui/Resources/panels/HoldingTagsEdit.ui | 79 +++++++++++++------ .../PathScripts/PathDressupHoldingTags.py | 30 ++++--- 2 files changed, 71 insertions(+), 38 deletions(-) diff --git a/src/Mod/Path/Gui/Resources/panels/HoldingTagsEdit.ui b/src/Mod/Path/Gui/Resources/panels/HoldingTagsEdit.ui index d8289aca7a..ad02f98197 100644 --- a/src/Mod/Path/Gui/Resources/panels/HoldingTagsEdit.ui +++ b/src/Mod/Path/Gui/Resources/panels/HoldingTagsEdit.ui @@ -6,8 +6,8 @@ 0 0 - 363 - 530 + 380 + 539 @@ -16,6 +16,12 @@ + + + 0 + 0 + + QFrame::NoFrame @@ -27,8 +33,8 @@ 0 0 - 345 - 476 + 362 + 485 @@ -48,13 +54,6 @@ - - - - <html><head/><body><p>Specify the resulting width of tags at the base.</p><p>The initial default width is based on the longest edge found in the base path.</p></body></html> - - - @@ -62,13 +61,6 @@ - - - - <html><head/><body><p>Height of holding tags.</p></body></html> - - - @@ -76,10 +68,36 @@ + + + + <html><head/><body><p>Width of the resulting holding tag.</p></body></html> + + + + + + + <html><head/><body><p>Height of holding tag.</p><p>Note that resulting tag might be smaller if the tag's width and angle result in a triangular shape.</p></body></html> + + + - <html><head/><body><p>Angle of ascend and descend of the tool for the holding tag cutout.</p><p><br/></p><p>If the angle is too flat for the given width to reach the specified height the resulting tag will have a triangular shape and not as high as specified.</p></body></html> + <html><head/><body><p>Plunge angle for ascent and descent of holding tag.</p></body></html> + + + 5.000000000000000 + + + 90.000000000000000 + + + 15.000000000000000 + + + 45.000000000000000 @@ -89,14 +107,14 @@ - <html><head/><body><p>List of current tags.</p><p>Edit coordinates to move tag or invoker snapper tool.</p></body></html> + <html><head/><body><p>List of current tags.</p><p>Edit coordinates by double click or Enter key.</p></body></html> - + false @@ -106,13 +124,23 @@ - + Add... + + + + false + + + Edit... + + + @@ -154,6 +182,13 @@ + + + Gui::InputField + QLineEdit +
Gui/InputField.h
+
+
diff --git a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py index 596e0b92a0..df005ee4c6 100644 --- a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py +++ b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py @@ -577,9 +577,9 @@ class ObjectDressup: def __init__(self, obj): self.obj = obj obj.addProperty("App::PropertyLink", "Base","Base", QtCore.QT_TRANSLATE_NOOP("PathDressup_HoldingTags", "The base path to modify")) - obj.addProperty("App::PropertyFloat", "Width", "Tag", QtCore.QT_TRANSLATE_NOOP("PathDressup_HoldingTags", "Width of tags.")) - obj.addProperty("App::PropertyFloat", "Height", "Tag", QtCore.QT_TRANSLATE_NOOP("PathDressup_HoldingTags", "Height of tags.")) - obj.addProperty("App::PropertyFloat", "Angle", "Tag", QtCore.QT_TRANSLATE_NOOP("PathDressup_HoldingTags", "Angle of tag plunge and ascent.")) + obj.addProperty("App::PropertyLength", "Width", "Tag", QtCore.QT_TRANSLATE_NOOP("PathDressup_HoldingTags", "Width of tags.")) + obj.addProperty("App::PropertyLength", "Height", "Tag", QtCore.QT_TRANSLATE_NOOP("PathDressup_HoldingTags", "Height of tags.")) + obj.addProperty("App::PropertyAngle", "Angle", "Tag", QtCore.QT_TRANSLATE_NOOP("PathDressup_HoldingTags", "Angle of tag plunge and ascent.")) obj.addProperty("App::PropertyVectorList", "Positions", "Tag", QtCore.QT_TRANSLATE_NOOP("PathDressup_HoldingTags", "Locations of insterted holding tags")) obj.addProperty("App::PropertyIntegerList", "Disabled", "Tag", QtCore.QT_TRANSLATE_NOOP("PathDressup_HoldingTags", "Ids of disabled holding tags")) obj.Proxy = self @@ -592,7 +592,7 @@ class ObjectDressup: def generateTags(self, obj, count): if hasattr(self, "pathData"): - self.tags = self.pathData.generateTags(obj, count, obj.Width, obj.Height, obj.Angle, None) + self.tags = self.pathData.generateTags(obj, count, obj.Width.Value, obj.Height.Value, obj.Angle, None) obj.Positions = [tag.originAt(0) for tag in self.tags] obj.Disabled = [] return False @@ -696,7 +696,7 @@ class ObjectDressup: self.tags = [] if hasattr(obj, "Positions"): for i, pos in enumerate(obj.Positions): - tag = Tag(pos.x, pos.y, obj.Width, obj.Height, obj.Angle, not i in obj.Disabled) + tag = Tag(pos.x, pos.y, obj.Width.Value, obj.Height.Value, obj.Angle, not i in obj.Disabled) tag.createSolidsAt(pathData.minZ, self.toolRadius) self.tags.append(tag) @@ -829,8 +829,8 @@ class TaskPanel: return tags def getTagParameters(self): - self.obj.Width = self.formTags.dsbWidth.value() - self.obj.Height = self.formTags.dsbHeight.value() + self.obj.Width = FreeCAD.Units.Quantity(self.formTags.ifWidth.text()).Value + self.obj.Height = FreeCAD.Units.Quantity(self.formTags.ifHeight.text()).Value self.obj.Angle = self.formTags.dsbAngle.value() def getFields(self): @@ -954,9 +954,9 @@ class TaskPanel: def getPoint(self, whenDone, start=None): def displayPoint(p): - self.formPoint.ifValueX.setText(DraftGui.displayExternal(p.x)) - self.formPoint.ifValueY.setText(DraftGui.displayExternal(p.y)) - self.formPoint.ifValueZ.setText(DraftGui.displayExternal(p.z)) + self.formPoint.ifValueX.setText(FreeCAD.Units.Quantity(p.x, FreeCAD.Units.Length).UserString) + self.formPoint.ifValueY.setText(FreeCAD.Units.Quantity(p.y, FreeCAD.Units.Length).UserString) + self.formPoint.ifValueZ.setText(FreeCAD.Units.Quantity(p.z, FreeCAD.Units.Length).UserString) self.formPoint.ifValueX.setFocus() self.formPoint.ifValueX.selectAll() @@ -1002,11 +1002,9 @@ class TaskPanel: def setFields(self): self.updateTagsView() self.setupSpinBox(self.formTags.sbCount, len(self.obj.Positions), None) - self.setupSpinBox(self.formTags.dsbHeight, self.obj.Height) - self.setupSpinBox(self.formTags.dsbWidth, self.obj.Width) + self.formTags.ifHeight.setText(FreeCAD.Units.Quantity(self.obj.Height, FreeCAD.Units.Length).UserString) + self.formTags.ifWidth.setText(FreeCAD.Units.Quantity(self.obj.Width, FreeCAD.Units.Length).UserString) self.setupSpinBox(self.formTags.dsbAngle, self.obj.Angle, 0) - self.formTags.dsbAngle.setMaximum(90) - self.formTags.dsbAngle.setSingleStep(5.) def updateModelHeight(self): print('updateModelHeight') @@ -1031,8 +1029,8 @@ class TaskPanel: self.formTags.sbCount.valueChanged.connect(self.whenCountChanged) self.formTags.pbGenerate.clicked.connect(self.generateNewTags) - self.formTags.dsbHeight.editingFinished.connect(self.updateModelHeight) - self.formTags.dsbWidth.editingFinished.connect(self.updateModelWidth) + self.formTags.ifHeight.editingFinished.connect(self.updateModelHeight) + self.formTags.ifWidth.editingFinished.connect(self.updateModelWidth) self.formTags.dsbAngle.editingFinished.connect(self.updateModelAngle) self.formTags.lwTags.itemChanged.connect(self.updateModelTags) self.formTags.lwTags.itemSelectionChanged.connect(self.whenTagSelectionChanged) From 57edcf1cf767e869b23043212f65529170026ecb Mon Sep 17 00:00:00 2001 From: Markus Lampert Date: Thu, 5 Jan 2017 18:58:43 -0800 Subject: [PATCH 06/19] Fixed v-scrollbar issue and added edit button. --- .../Gui/Resources/panels/HoldingTagsEdit.ui | 12 +++--- .../PathScripts/PathDressupHoldingTags.py | 39 +++++++++++-------- 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/src/Mod/Path/Gui/Resources/panels/HoldingTagsEdit.ui b/src/Mod/Path/Gui/Resources/panels/HoldingTagsEdit.ui index ad02f98197..85ea93435a 100644 --- a/src/Mod/Path/Gui/Resources/panels/HoldingTagsEdit.ui +++ b/src/Mod/Path/Gui/Resources/panels/HoldingTagsEdit.ui @@ -6,8 +6,8 @@ 0 0 - 380 - 539 + 399 + 564 @@ -33,8 +33,8 @@ 0 0 - 362 - 485 + 381 + 510 @@ -107,7 +107,7 @@ - <html><head/><body><p>List of current tags.</p><p>Edit coordinates by double click or Enter key.</p></body></html> + <html><head/><body><p>List of current tags.</p><p>Edit coordinates by double click or Edit button.</p></body></html> @@ -132,7 +132,7 @@ - + false diff --git a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py index df005ee4c6..e4c6c27645 100644 --- a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py +++ b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py @@ -776,7 +776,7 @@ class TaskPanel: self.formTags = FreeCADGui.PySideUic.loadUi(":/panels/HoldingTagsEdit.ui") self.formPoint = FreeCADGui.PySideUic.loadUi(":/panels/PointEdit.ui") self.layout = QtGui.QVBoxLayout(self.form) - self.form.setGeometry(self.formTags.geometry()) + #self.form.setGeometry(self.formTags.geometry()) self.form.setWindowTitle(self.formTags.windowTitle()) self.form.setSizePolicy(self.formTags.sizePolicy()) self.formTags.setParent(self.form) @@ -898,6 +898,7 @@ class TaskPanel: print('whenTagSelectionChanged') index = self.formTags.lwTags.currentRow() self.formTags.pbDelete.setEnabled(index != -1) + self.formTags.pbEdit.setEnabled(index != -1) self.viewProvider.selectTag(index) def deleteSelectedTag(self): @@ -922,7 +923,7 @@ class TaskPanel: self.getPoint(self.addNewTagAt) def editTagAt(self, point, obj): - if obj == self.obj: + if (obj or point != FreeCAD.Vector()) and self.obj.Proxy.pointIsOnPath(self.obj, point): tags = [] for i, (x, y, enabled) in enumerate(self.tags): if i == self.editItem: @@ -935,11 +936,15 @@ class TaskPanel: self.formTags.show() def editTag(self, item): - self.tags = self.getTags(True) - self.editItem = item.data(self.DataID) - x = item.data(self.DataX) - y = item.data(self.DataY) - self.getPoint(self.editTagAt, FreeCAD.Vector(x, y, 0)) + if item: + self.tags = self.getTags(True) + self.editItem = item.data(self.DataID) + x = item.data(self.DataX) + y = item.data(self.DataY) + self.getPoint(self.editTagAt, FreeCAD.Vector(x, y, 0)) + + def editSelectedTag(self): + self.editTag(self.formTags.lwTags.currentItem()) def removeGlobalCallbacks(self): if hasattr(self, 'view') and self.view: @@ -1037,12 +1042,13 @@ class TaskPanel: self.formTags.lwTags.itemActivated.connect(self.editTag) self.formTags.pbDelete.clicked.connect(self.deleteSelectedTag) + self.formTags.pbEdit.clicked.connect(self.editSelectedTag) self.formTags.pbAdd.clicked.connect(self.addNewTag) self.formPoint.buttonBox.accepted.connect(self.pointAccept) - QtCore.QObject.connect(self.formPoint.ifValueX, QtCore.SIGNAL("valueChanged(double)"), self.changeValueX) - QtCore.QObject.connect(self.formPoint.ifValueY, QtCore.SIGNAL("valueChanged(double)"), self.changeValueY) - QtCore.QObject.connect(self.formPoint.ifValueZ, QtCore.SIGNAL("valueChanged(double)"), self.changeValueZ) + self.formPoint.ifValueX.editingFinished.connect(self.updatePoint) + self.formPoint.ifValueY.editingFinished.connect(self.updatePoint) + self.formPoint.ifValueZ.editingFinished.connect(self.updatePoint) self.viewProvider.turnMarkerDisplayOn(True) @@ -1056,15 +1062,14 @@ class TaskPanel: self.pointFinish(False) def pointAccept(self): + print("pointAccept") self.pointFinish(True) - def changeValueX(self, double): - self.pt.x = double - def changeValueY(self, double): - self.pt.y = double - def changeValueZ(self, double): - self.pt.z = double - + def updatePoint(self): + x = FreeCAD.Units.Quantity(self.formPoint.ifValueX.text()).Value + y = FreeCAD.Units.Quantity(self.formPoint.ifValueY.text()).Value + z = FreeCAD.Units.Quantity(self.formPoint.ifValueZ.text()).Value + self.pt = FreeCAD.Vector(x, y, z) class HoldingTagMarker: def __init__(self, p): From 96ab104a66f8033e4f181c367ba9449eaa95609b Mon Sep 17 00:00:00 2001 From: Markus Lampert Date: Thu, 5 Jan 2017 20:14:53 -0800 Subject: [PATCH 07/19] Fixed adding new tags - sorting required. --- src/Mod/Path/PathScripts/PathDressupHoldingTags.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py index e4c6c27645..17ed01b137 100644 --- a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py +++ b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py @@ -143,7 +143,7 @@ class Tag: r1 = self.fullWidth() / 2 self.r1 = r1 self.r2 = r1 - height = self.height + height = self.height * 1.01 if self.angle == 90 and height > 0: self.solid = Part.makeCylinder(r1, height) debugPrint("Part.makeCone(%f, %f)" % (r1, height)) @@ -154,7 +154,7 @@ class Tag: r2 = r1 - dr else: r2 = 0 - height = r1 * tangens + height = r1 * tangens * 1.01 self.actualHeight = height self.r2 = r2 debugPrint("Part.makeCone(%f, %f, %f)" % (r1, r2, height)) @@ -168,7 +168,7 @@ class Tag: debugPrint("solid.rotate(%f)" % angle) self.solid.rotate(FreeCAD.Vector(0,0,0), FreeCAD.Vector(0,0,1), angle) debugPrint("solid.translate(%s)" % self.originAt(z)) - self.solid.translate(self.originAt(z)) + self.solid.translate(self.originAt(z - 0.01 * height)) def filterIntersections(self, pts, face): if type(face.Surface) == Part.Cone or type(face.Surface) == Part.Cylinder: @@ -695,10 +695,12 @@ class ObjectDressup: self.tags = [] if hasattr(obj, "Positions"): + tags = [] for i, pos in enumerate(obj.Positions): tag = Tag(pos.x, pos.y, obj.Width.Value, obj.Height.Value, obj.Angle, not i in obj.Disabled) tag.createSolidsAt(pathData.minZ, self.toolRadius) - self.tags.append(tag) + tags.append(tag) + self.tags = pathData.sortedTags(tags) if not self.tags: print("execute - no tags") From 8326f2b9b2c2612f5bbee0f5cf6608dc2ea9a12a Mon Sep 17 00:00:00 2001 From: Markus Lampert Date: Thu, 5 Jan 2017 21:18:51 -0800 Subject: [PATCH 08/19] Retrieve colors from settings. --- .../PathScripts/PathDressupHoldingTags.py | 30 ++++++++++++--- src/Mod/Path/PathScripts/PathPreferences.py | 38 ++++++++++--------- 2 files changed, 45 insertions(+), 23 deletions(-) diff --git a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py index 17ed01b137..7caa9eb708 100644 --- a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py +++ b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py @@ -37,6 +37,7 @@ import time from DraftGui import todo from PathScripts import PathUtils from PathScripts.PathGeom import * +from PathScripts.PathPreferences import * from PySide import QtCore, QtGui from pivy import coin @@ -1074,28 +1075,32 @@ class TaskPanel: self.pt = FreeCAD.Vector(x, y, z) class HoldingTagMarker: - def __init__(self, p): - self.point = p + def __init__(self, point, colors): + self.point = point + self.color = colors self.sep = coin.SoSeparator() self.pos = coin.SoTranslation() - self.pos.translation = (p.x, p.y, p.z) + self.pos.translation = (point.x, point.y, point.z) self.sphere = coin.SoSphere() self.material = coin.SoMaterial() self.sep.addChild(self.pos) self.sep.addChild(self.material) self.sep.addChild(self.sphere) + self.enabled = True + self.selected = False def setSelected(self, select): self.selected = select self.sphere.radius = 1.5 if select else 1.0 + self.setEnabled(self.enabled) def setEnabled(self, enabled): self.enabled = enabled if enabled: - self.material.diffuseColor = coin.SbColor(0.0, 1.0, 0.0) + self.material.diffuseColor = self.color[0] if not self.selected else self.color[2] self.material.transparency = 0.0 else: - self.material.diffuseColor = coin.SbColor(0.8, 0.8, 0.8) + self.material.diffuseColor = self.color[1] if not self.selected else self.color[2] self.material.transparency = 0.6 class ViewProviderDressup: @@ -1103,7 +1108,20 @@ class ViewProviderDressup: def __init__(self, vobj): vobj.Proxy = self + def setupColors(self): + def colorForColorValue(val): + v = [((val >> n) & 0xff) / 255. for n in [24, 16, 8, 0]] + return coin.SbColor(v[0], v[1], v[2]) + + pref = PathPreferences.preferences() + # R G B A + npc = pref.GetUnsigned("DefaultPathMarkerColor", (( 85*256 + 255)*256 + 0)*256 + 255) + hpc = pref.GetUnsigned("DefaultHighlightPathColor", ((255*256 + 125)*256 + 0)*256 + 255) + dpc = pref.GetUnsigned("DefaultDisabledPathColor", ((205*256 + 205)*256 + 205)*256 + 154) + self.colors = [colorForColorValue(npc), colorForColorValue(dpc), colorForColorValue(hpc)] + def attach(self, vobj): + self.setupColors() self.obj = vobj.Object self.tags = [] self.switch = coin.SoSwitch() @@ -1164,7 +1182,7 @@ class ViewProviderDressup: self.switch.removeChild(tag.sep) tags = [] for i, p in enumerate(obj.Positions): - tag = HoldingTagMarker(p) + tag = HoldingTagMarker(p, self.colors) tag.setEnabled(not i in obj.Disabled) tags.append(tag) self.switch.addChild(tag.sep) diff --git a/src/Mod/Path/PathScripts/PathPreferences.py b/src/Mod/Path/PathScripts/PathPreferences.py index ab155ab2f7..e1fe309120 100644 --- a/src/Mod/Path/PathScripts/PathPreferences.py +++ b/src/Mod/Path/PathScripts/PathPreferences.py @@ -31,6 +31,10 @@ class PathPreferences: PostProcessorDefaultArgs = "PostProcessorDefaultArgs" PostProcessorBlacklist = "PostProcessorBlacklist" + @classmethod + def preferences(cls): + return FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Path") + @classmethod def allAvailablePostProcessors(cls): path = FreeCAD.getHomePath() + ("Mod/Path/PathScripts/") @@ -58,28 +62,28 @@ class PathPreferences: @classmethod def defaultPostProcessor(cls): - preferences = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Path") - return preferences.GetString(cls.PostProcessorDefault, "") + pref = cls.preferences() + return pref.GetString(cls.PostProcessorDefault, "") @classmethod def defaultPostProcessorArgs(cls): - preferences = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Path") - return preferences.GetString(cls.PostProcessorDefaultArgs, "") + pref = cls.preferences() + return pref.GetString(cls.PostProcessorDefaultArgs, "") @classmethod def postProcessorBlacklist(cls): - preferences = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Path") - blacklist = preferences.GetString(cls.PostProcessorBlacklist, "") + pref = cls.preferences() + blacklist = pref.GetString(cls.PostProcessorBlacklist, "") if not blacklist: return [] return eval(blacklist) @classmethod def savePostProcessorDefaults(cls, processor, args, blacklist): - preferences = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Path") - preferences.SetString(cls.PostProcessorDefault, processor) - preferences.SetString(cls.PostProcessorDefaultArgs, args) - preferences.SetString(cls.PostProcessorBlacklist, "%s" % (blacklist)) + pref = cls.preferences() + pref.SetString(cls.PostProcessorDefault, processor) + pref.SetString(cls.PostProcessorDefaultArgs, args) + pref.SetString(cls.PostProcessorBlacklist, "%s" % (blacklist)) DefaultOutputFile = "DefaultOutputFile" @@ -87,16 +91,16 @@ class PathPreferences: @classmethod def saveOutputFileDefaults(cls, file, policy): - preferences = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Path") - preferences.SetString(cls.DefaultOutputFile, file) - preferences.SetString(cls.DefaultOutputPolicy, policy) + pref = cls.preferences() + pref.SetString(cls.DefaultOutputFile, file) + pref.SetString(cls.DefaultOutputPolicy, policy) @classmethod def defaultOutputFile(cls): - preferences = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Path") - return preferences.GetString(cls.DefaultOutputFile, "") + pref = cls.preferences() + return pref.GetString(cls.DefaultOutputFile, "") @classmethod def defaultOutputPolicy(cls): - preferences = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Path") - return preferences.GetString(cls.DefaultOutputPolicy, "") + pref = cls.preferences() + return pref.GetString(cls.DefaultOutputPolicy, "") From 22404d6dc090b05b208785511d34be4c0045e343 Mon Sep 17 00:00:00 2001 From: Markus Lampert Date: Fri, 6 Jan 2017 10:26:00 -0800 Subject: [PATCH 09/19] Minimum # tags is 2, makes sense and avoids the endless loop. --- src/Mod/Path/Gui/Resources/panels/HoldingTagsEdit.ui | 6 +++++- src/Mod/Path/PathScripts/PathDressupHoldingTags.py | 10 +++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/Mod/Path/Gui/Resources/panels/HoldingTagsEdit.ui b/src/Mod/Path/Gui/Resources/panels/HoldingTagsEdit.ui index 85ea93435a..ba2fe037d3 100644 --- a/src/Mod/Path/Gui/Resources/panels/HoldingTagsEdit.ui +++ b/src/Mod/Path/Gui/Resources/panels/HoldingTagsEdit.ui @@ -151,7 +151,11 @@ - + + + 2 + + diff --git a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py index 7caa9eb708..408d3cd0a8 100644 --- a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py +++ b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py @@ -747,7 +747,7 @@ class ObjectDressup: obj.Height = self.pathData.defaultTagHeight() obj.Width = self.pathData.defaultTagWidth() obj.Angle = self.pathData.defaultTagAngle() - self.generateTags(obj, generate) + self.generateTags(obj, min(2, generate)) return self.pathData def setXyEnabled(self, triples): @@ -900,7 +900,8 @@ class TaskPanel: def whenTagSelectionChanged(self): print('whenTagSelectionChanged') index = self.formTags.lwTags.currentRow() - self.formTags.pbDelete.setEnabled(index != -1) + count = self.formTags.lwTags.count() + self.formTags.pbDelete.setEnabled(index != -1 and count > 2) self.formTags.pbEdit.setEnabled(index != -1) self.viewProvider.selectTag(index) @@ -1002,17 +1003,16 @@ class TaskPanel: self.pointCbMove = self.view.addEventCallbackPivy(coin.SoLocation2Event.getClassTypeId(), mouseMove) def setupSpinBox(self, widget, val, decimals = 2): - widget.setMinimum(0) if decimals: widget.setDecimals(decimals) widget.setValue(val) def setFields(self): self.updateTagsView() - self.setupSpinBox(self.formTags.sbCount, len(self.obj.Positions), None) + self.formTags.sbCount.setValue(len(self.obj.Positions)) self.formTags.ifHeight.setText(FreeCAD.Units.Quantity(self.obj.Height, FreeCAD.Units.Length).UserString) self.formTags.ifWidth.setText(FreeCAD.Units.Quantity(self.obj.Width, FreeCAD.Units.Length).UserString) - self.setupSpinBox(self.formTags.dsbAngle, self.obj.Angle, 0) + self.formTags.dsbAngle.setValue(self.obj.Angle) def updateModelHeight(self): print('updateModelHeight') From 1840d5df4ec72d7fdda0bc1715f76684c4910162 Mon Sep 17 00:00:00 2001 From: Markus Lampert Date: Fri, 6 Jan 2017 13:13:22 -0800 Subject: [PATCH 10/19] Automatically disable tags if they overlap with previous tag and/or do not fall on the base wire. --- .../Gui/Resources/panels/HoldingTagsEdit.ui | 2 +- .../PathScripts/PathDressupHoldingTags.py | 85 ++++++++++++++----- 2 files changed, 64 insertions(+), 23 deletions(-) diff --git a/src/Mod/Path/Gui/Resources/panels/HoldingTagsEdit.ui b/src/Mod/Path/Gui/Resources/panels/HoldingTagsEdit.ui index ba2fe037d3..93fc2de771 100644 --- a/src/Mod/Path/Gui/Resources/panels/HoldingTagsEdit.ui +++ b/src/Mod/Path/Gui/Resources/panels/HoldingTagsEdit.ui @@ -107,7 +107,7 @@ - <html><head/><body><p>List of current tags.</p><p>Edit coordinates by double click or Edit button.</p></body></html> + <html><head/><body><p>List of current tags. Edit coordinates by double click or Edit button.</p><p>Tags are automatically disabled if they overlap with the previous tag, or don't lie on the base wire.</p></body></html> diff --git a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py index 408d3cd0a8..8841f4bca6 100644 --- a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py +++ b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py @@ -399,7 +399,7 @@ class _RapidEdges: def __init__(self, rapid): self.rapid = rapid - def isRapid(self, edge, removeIfFound=True): + def isRapid(self, edge): if type(edge.Curve) == Part.Line or type(edge.Curve) == Part.LineSegment: v0 = edge.Vertexes[0] v1 = edge.Vertexes[1] @@ -407,12 +407,10 @@ class _RapidEdges: r0 = r.Vertexes[0] r1 = r.Vertexes[1] if PathGeom.isRoughly(r0.X, v0.X) and PathGeom.isRoughly(r0.Y, v0.Y) and PathGeom.isRoughly(r0.Z, v0.Z) and PathGeom.isRoughly(r1.X, v1.X) and PathGeom.isRoughly(r1.Y, v1.Y) and PathGeom.isRoughly(r1.Z, v1.Z): - if removeIfFound: - self.rapid.remove(r) return True return False - def p(self): + def debugPrint(self): print('rapid:') for r in self.rapid: debugEdge(r, ' ', True) @@ -562,8 +560,10 @@ class PathData: for t in sorted(ts, key=lambda t: (t.originAt(self.minZ) - edge.valueAt(edge.FirstParameter)).Length): tags.remove(t) ordered.append(t) - if tags: - raise ValueError("There's something really wrong here") + # disable all tags that are not on the base wire. + for tag in tags: + tag.enabled = False + ordered.append(tag) return ordered def pointIsOnPath(self, p): @@ -657,7 +657,7 @@ class ObjectDressup: # gone through all tags, consume edge and move on if edge: debugEdge(edge, '++++++++') - if rapid.isRapid(edge, True): + if rapid.isRapid(edge): v = edge.Vertexes[1] commands.append(Path.Command('G0', {'X': v.X, 'Y': v.Y, 'Z': v.Z})) else: @@ -672,6 +672,43 @@ class ObjectDressup: def problems(self): return filter(lambda m: m.haveProblem, self.mappers) + def createTagsPositionDisabled(self, obj, positionsIn, disabledIn): + rawTags = [] + print + for i, pos in enumerate(positionsIn): + print("%d: (%.2f, %.2f)" % (i, pos.x, pos.y)) + tag = Tag(pos.x, pos.y, obj.Width.Value, obj.Height.Value, obj.Angle, not i in disabledIn) + tag.createSolidsAt(self.pathData.minZ, self.toolRadius) + rawTags.append(tag) + # disable all tags that intersect with their previous tag + bb = None + tags = [] + positions = [] + disabled = [] + print + for i, tag in enumerate(self.pathData.sortedTags(rawTags)): + print("%d: (%.2f, %.2f) %d" % (i, tag.x, tag.y, tag.enabled)) + if tag.enabled: + if bb: + if bb.intersect(tag.solid.BoundBox): + tag.enabled = False + elif self.pathData.edges: + e = self.pathData.edges[0] + p0 = e.valueAt(e.FirstParameter) + p1 = e.valueAt(e.LastParameter) + if tag.solid.BoundBox.isInside(p0) or tag.solid.BoundBox.isInside(p1): + tag.enabled = False + if tag.enabled: + bb = tag.solid.BoundBox + else: + disabled.append(i) + tags.append(tag) + positions.append(tag.originAt(0)) + print + print + print + return (tags, positions, disabled) + def execute(self, obj): #pr = cProfile.Profile() #pr.enable() @@ -696,31 +733,33 @@ class ObjectDressup: self.tags = [] if hasattr(obj, "Positions"): - tags = [] - for i, pos in enumerate(obj.Positions): - tag = Tag(pos.x, pos.y, obj.Width.Value, obj.Height.Value, obj.Angle, not i in obj.Disabled) - tag.createSolidsAt(pathData.minZ, self.toolRadius) - tags.append(tag) - self.tags = pathData.sortedTags(tags) + self.tags, positions, disabled = self.createTagsPositionDisabled(obj, obj.Positions, obj.Disabled) + if obj.Disabled != disabled: + print("Updating properties.... %s vs. %s" % (obj.Disabled, disabled)) + obj.Positions = positions + obj.Disabled = disabled if not self.tags: print("execute - no tags") obj.Path = obj.Base.Path return + self.processTags(obj) + + def processTags(self, obj): tagID = 0 if debugDressup: for tag in self.tags: tagID += 1 if tag.enabled: - print("x=%s, y=%s, z=%s" % (tag.x, tag.y, pathData.minZ)) - debugMarker(FreeCAD.Vector(tag.x, tag.y, pathData.minZ), "tag-%02d" % tagID , (1.0, 0.0, 1.0), 0.5) + print("x=%s, y=%s, z=%s" % (tag.x, tag.y, self.pathData.minZ)) + debugMarker(FreeCAD.Vector(tag.x, tag.y, self.pathData.minZ), "tag-%02d" % tagID , (1.0, 0.0, 1.0), 0.5) if tag.angle != 90: - debugCone(tag.originAt(pathData.minZ), tag.r1, tag.r2, tag.actualHeight, "tag-%02d" % tagID) + debugCone(tag.originAt(self.pathData.minZ), tag.r1, tag.r2, tag.actualHeight, "tag-%02d" % tagID) else: - debugCylinder(tag.originAt(pathData.minZ), tag.fullWidth()/2, tag.actualHeight, "tag-%02d" % tagID) + debugCylinder(tag.originAt(self.pathData.minZ), tag.fullWidth()/2, tag.actualHeight, "tag-%02d" % tagID) - obj.Path = self.createPath(pathData.edges, self.tags, pathData.rapid) + obj.Path = self.createPath(self.pathData.edges, self.tags, self.pathData.rapid) print("execute - done") def setup(self, obj, generate=None): @@ -751,15 +790,17 @@ class ObjectDressup: return self.pathData def setXyEnabled(self, triples): + if not hasattr(self, 'pathData'): + self.setup(self.obj) positions = [] disabled = [] for i, (x, y, enabled) in enumerate(triples): + print("%d: (%.2f, %.2f) %d" % (i, x, y, enabled)) positions.append(FreeCAD.Vector(x, y, 0)) if not enabled: disabled.append(i) - self.obj.Positions = positions - self.obj.Disabled = disabled - self.execute(self.obj) + self.tags, self.obj.Positions, self.obj.Disabled = self.createTagsPositionDisabled(self.obj, positions, disabled) + self.processTags(self.obj) def pointIsOnPath(self, obj, point): if not hasattr(self, 'pathData'): @@ -911,7 +952,7 @@ class TaskPanel: self.updateTagsView() def addNewTagAt(self, point, obj): - if (obj or point != FreeCAD.Vector()) and self.obj.Proxy.pointIsOnPath(self.obj, point): + if self.obj.Proxy.pointIsOnPath(self.obj, point): print("addNewTagAt(%s)" % (point)) tags = self.tags tags.append((point.x, point.y, True)) From 593c4a6dcda22c65db3c45bbf78d24e14516a5da Mon Sep 17 00:00:00 2001 From: Markus Lampert Date: Fri, 6 Jan 2017 18:39:27 -0800 Subject: [PATCH 11/19] Added preferences for holding tags. --- src/Mod/Path/CMakeLists.txt | 1 + src/Mod/Path/Gui/Resources/Path.qrc | 1 + .../preferences/PathDressupHoldingTags.ui | 133 ++++++++++++++++++ src/Mod/Path/InitGui.py | 5 +- .../PathScripts/PathDressupHoldingTags.py | 95 ++++++++++--- .../PathScripts/PathPreferencesPathDressup.py | 59 ++++++++ .../PathScripts/PathPreferencesPathJob.py | 2 +- 7 files changed, 276 insertions(+), 20 deletions(-) create mode 100644 src/Mod/Path/Gui/Resources/preferences/PathDressupHoldingTags.ui create mode 100644 src/Mod/Path/PathScripts/PathPreferencesPathDressup.py diff --git a/src/Mod/Path/CMakeLists.txt b/src/Mod/Path/CMakeLists.txt index f01eb9b646..32ce98caef 100644 --- a/src/Mod/Path/CMakeLists.txt +++ b/src/Mod/Path/CMakeLists.txt @@ -45,6 +45,7 @@ SET(PathScripts_SRCS PathScripts/PathPost.py PathScripts/PathPostProcessor.py PathScripts/PathPreferences.py + PathScripts/PathPreferencesPathDressup.py PathScripts/PathPreferencesPathJob.py PathScripts/PathProfile.py PathScripts/PathProfileEdges.py diff --git a/src/Mod/Path/Gui/Resources/Path.qrc b/src/Mod/Path/Gui/Resources/Path.qrc index 7299f8d86b..b6800333c6 100644 --- a/src/Mod/Path/Gui/Resources/Path.qrc +++ b/src/Mod/Path/Gui/Resources/Path.qrc @@ -66,6 +66,7 @@ panels/ToolControl.ui panels/ToolEdit.ui panels/ToolLibraryEditor.ui + preferences/PathDressupHoldingTags.ui preferences/PathJob.ui translations/Path_af.qm translations/Path_cs.qm diff --git a/src/Mod/Path/Gui/Resources/preferences/PathDressupHoldingTags.ui b/src/Mod/Path/Gui/Resources/preferences/PathDressupHoldingTags.ui new file mode 100644 index 0000000000..c805d52a96 --- /dev/null +++ b/src/Mod/Path/Gui/Resources/preferences/PathDressupHoldingTags.ui @@ -0,0 +1,133 @@ + + + Form + + + + 0 + 0 + 477 + 478 + + + + Form + + + + + + Tag Parameters + + + + + + Default Width + + + + + + + <html><head/><body><p>Set the default width of holding tags.</p><p>If the width is set to 0 the dressup will try to guess a reasonable value based on the path itself.</p></body></html> + + + + + + + Default Height + + + + + + + <html><head/><body><p>Default height of holding tags.</p><p>If the specified height is 0 the dressup will use half the height of the part. Should the height be bigger than the height of the part the dressup will reduce the height to the height of the part.</p></body></html> + + + + + + + Default Angle + + + + + + + <html><head/><body><p>Plunge angle for the holding tags ascent and descent.</p></body></html> + + + 5.000000000000000 + + + 90.000000000000000 + + + 15.000000000000000 + + + 45.000000000000000 + + + + + + + + + + Tag Generation + + + + + + Initial # Tags + + + + + + + <html><head/><body><p>Specify the number of tags generated when a new dressup is created.</p></body></html> + + + 2 + + + 4 + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + Gui::InputField + QLineEdit +
Gui/InputField.h
+
+
+ + +
diff --git a/src/Mod/Path/InitGui.py b/src/Mod/Path/InitGui.py index 22b13882b0..dd0c1d6f3c 100644 --- a/src/Mod/Path/InitGui.py +++ b/src/Mod/Path/InitGui.py @@ -31,8 +31,9 @@ class PathWorkbench (Workbench): def Initialize(self): # Add preferences pages - before loading PathGui to properly order pages of Path group - from PathScripts import PathPreferencesPathJob - FreeCADGui.addPreferencePage(PathPreferencesPathJob.Page, "Path") + from PathScripts import PathPreferencesPathJob, PathPreferencesPathDressup + FreeCADGui.addPreferencePage(PathPreferencesPathJob.JobPreferencesPage, "Path") + FreeCADGui.addPreferencePage(PathPreferencesPathDressup.DressupPreferencesPage, "Path") # load the builtin modules import Path diff --git a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py index 8841f4bca6..d7f31bacd1 100644 --- a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py +++ b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py @@ -27,6 +27,7 @@ import Draft import DraftGeomUtils import DraftGui import Path +import PathScripts.PathPreferencesPathDressup as PathPreferencesPathDressup import Part import copy import math @@ -103,19 +104,65 @@ def debugCone(vector, r1, r2, height, label, color = None): if color: obj.ViewObject.ShapeColor = color -class Tag: + +class HoldingTagsPreferences: + DefaultHoldingTagWidth = 'DefaultHoldingTagWidth' + DefaultHoldingTagHeight = 'DefaultHoldingTagHeight' + DefaultHoldingTagAngle = 'DefaultHoldingTagAngle' + DefaultHoldingTagCount = 'DefaultHoldingTagCount' @classmethod - def FromString(cls, string): - try: - t = eval(string) - return Tag(t[0], t[1], t[2], t[3], t[4], t[5]) - except: - return None + def defaultWidth(cls, ifNotSet): + value = PathPreferences.preferences().GetFloat(cls.DefaultHoldingTagWidth, ifNotSet) + if value == 0.0: + return ifNotSet + return value - def toString(self): - return str((self.x, self.y, self.width, self.height, self.angle, self.enabled)) + @classmethod + def defaultHeight(cls, ifNotSet): + value = PathPreferences.preferences().GetFloat(cls.DefaultHoldingTagHeight, ifNotSet) + if value == 0.0: + return ifNotSet + return value + @classmethod + def defaultAngle(cls, ifNotSet = 45.0): + value = PathPreferences.preferences().GetFloat(cls.DefaultHoldingTagAngle, ifNotSet) + if value < 10.0: + return ifNotSet + return value + + @classmethod + def defaultCount(cls, ifNotSet = 4): + value = PathPreferences.preferences().GetUnsigned(cls.DefaultHoldingTagCount, ifNotSet) + if value < 2: + return float(ifNotSet) + return float(value) + + def __init__(self): + self.form = FreeCADGui.PySideUic.loadUi(":/preferences/PathDressupHoldingTags.ui") + self.label = 'Holding Tags' + + def loadSettings(self): + print("holding tags - load settings") + self.form.ifWidth.setText(FreeCAD.Units.Quantity(self.defaultWidth(0), FreeCAD.Units.Length).UserString) + self.form.ifHeight.setText(FreeCAD.Units.Quantity(self.defaultHeight(0), FreeCAD.Units.Length).UserString) + self.form.dsbAngle.setValue(self.defaultAngle()) + self.form.sbCount.setValue(self.defaultCount()) + + def saveSettings(self): + print("holding tags - save settings") + pref = PathPreferences.preferences() + pref.SetFloat(self.DefaultHoldingTagWidth, FreeCAD.Units.Quantity(self.form.ifWidth.text()).Value) + pref.SetFloat(self.DefaultHoldingTagHeight, FreeCAD.Units.Quantity(self.form.ifHeight.text()).Value) + pref.SetFloat(self.DefaultHoldingTagAngle, self.form.dsbAngle.value()) + pref.SetUnsigned(self.DefaultHoldingTagCount, self.form.sbCount.value()) + + @classmethod + def preferencesPage(cls): + return HoldingTagsPreferences() + +class Tag: def __init__(self, x, y, width, height, angle, enabled=True): debugPrint("Tag(%.2f, %.2f, %.2f, %.2f, %.2f, %d)" % (x, y, width, height, angle/math.pi, enabled)) self.x = x @@ -456,7 +503,7 @@ class PathData: edges = sorted(self.base.Edges, key=lambda e: e.Length) return (edges[0], edges[-1]) - def generateTags(self, obj, count=None, width=None, height=None, angle=90, spacing=None): + def generateTags(self, obj, count, width=None, height=None, angle=None, spacing=None): debugPrint("generateTags(%s, %s, %s, %s, %s)" % (count, width, height, angle, spacing)) #for e in self.base.Edges: # debugMarker(e.Vertexes[0].Point, 'base', (0.0, 1.0, 1.0), 0.2) @@ -544,14 +591,20 @@ class PathData: def defaultTagHeight(self): if hasattr(self.obj, 'Base') and hasattr(self.obj.Base, 'StartDepth') and hasattr(self.obj.Base, 'FinalDepth'): - return (self.obj.Base.StartDepth - self.obj.Base.FinalDepth).Value / 2 - return (self.maxZ - self.minZ) / 2 + pathHeight = (self.obj.Base.StartDepth - self.obj.Base.FinalDepth).Value + else: + pathHeight = self.maxZ - self.minZ + height = HoldingTagsPreferences.defaultHeight(pathHeight / 2) + if height > pathHeight: + return pathHeight + return height def defaultTagWidth(self): - return self.shortestAndLongestPathEdge()[1].Length / 10 + width = self.shortestAndLongestPathEdge()[1].Length / 10 + return HoldingTagsPreferences.defaultWidth(width) def defaultTagAngle(self): - return 45 + return HoldingTagsPreferences.defaultAngle() def sortedTags(self, tags): ordered = [] @@ -762,7 +815,7 @@ class ObjectDressup: obj.Path = self.createPath(self.pathData.edges, self.tags, self.pathData.rapid) print("execute - done") - def setup(self, obj, generate=None): + def setup(self, obj, generate=False): print("setup") self.obj = obj try: @@ -786,7 +839,8 @@ class ObjectDressup: obj.Height = self.pathData.defaultTagHeight() obj.Width = self.pathData.defaultTagWidth() obj.Angle = self.pathData.defaultTagAngle() - self.generateTags(obj, min(2, generate)) + count = HoldingTagsPreferences.defaultCount() + self.generateTags(obj, count) return self.pathData def setXyEnabled(self, triples): @@ -807,6 +861,12 @@ class ObjectDressup: self.setup(obj) return self.pathData.pointIsOnPath(point) + @classmethod + def preferencesPage(cls): + return HoldingTagsPreferences() + +PathPreferencesPathDressup.RegisterDressup(ObjectDressup) + class TaskPanel: DataX = QtCore.Qt.ItemDataRole.UserRole DataY = QtCore.Qt.ItemDataRole.UserRole + 1 @@ -1292,10 +1352,11 @@ class CommandPathDressupHoldingTags: FreeCADGui.doCommand('PathScripts.PathDressupHoldingTags.ViewProviderDressup(obj.ViewObject)') FreeCADGui.doCommand('PathScripts.PathUtils.addToJob(obj)') FreeCADGui.doCommand('Gui.ActiveDocument.getObject(obj.Base.Name).Visibility = False') - FreeCADGui.doCommand('dbo.setup(obj, 4.)') + FreeCADGui.doCommand('dbo.setup(obj, True)') FreeCAD.ActiveDocument.commitTransaction() FreeCAD.ActiveDocument.recompute() + if FreeCAD.GuiUp: # register the FreeCAD command FreeCADGui.addCommand('PathDressup_HoldingTags', CommandPathDressupHoldingTags()) diff --git a/src/Mod/Path/PathScripts/PathPreferencesPathDressup.py b/src/Mod/Path/PathScripts/PathPreferencesPathDressup.py new file mode 100644 index 0000000000..86fa52507f --- /dev/null +++ b/src/Mod/Path/PathScripts/PathPreferencesPathDressup.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- + +# *************************************************************************** +# * * +# * Copyright (c) 2016 sliptonic * +# * * +# * This program is free software; you can redistribute it and/or modify * +# * it under the terms of the GNU Lesser General Public License (LGPL) * +# * as published by the Free Software Foundation; either version 2 of * +# * the License, or (at your option) any later version. * +# * for detail see the LICENCE text file. * +# * * +# * This program is distributed in the hope that it will be useful, * +# * but WITHOUT ANY WARRANTY; without even the implied warranty of * +# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +# * GNU Library General Public License for more details. * +# * * +# * You should have received a copy of the GNU Library General Public * +# * License along with this program; if not, write to the Free Software * +# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +# * USA * +# * * +# *************************************************************************** + +import FreeCAD +import FreeCADGui +from PySide import QtCore, QtGui +from PathScripts.PathPreferences import PathPreferences + +_dressups = [] + +def RegisterDressup(dressup): + _dressups.append(dressup) + +class DressupPreferencesPage: + def __init__(self, parent=None): + print('dressup - __init__') + self.form = QtGui.QToolBox() + self.form.setWindowTitle('Dressups') + pages = [] + for dressup in _dressups: + page = dressup.preferencesPage() + if hasattr(page, 'icon') and page.icon: + self.form.addItem(page.form, page.icon, page.label) + else: + self.form.addItem(page.form, page.label) + pages.append(page) + self.pages = pages + + def saveSettings(self): + print('dressup - save settings') + for page in self.pages: + page.saveSettings() + + def loadSettings(self): + print('dressup - load settings') + for page in self.pages: + page.loadSettings() + diff --git a/src/Mod/Path/PathScripts/PathPreferencesPathJob.py b/src/Mod/Path/PathScripts/PathPreferencesPathJob.py index 25e12f28ac..cb374133d7 100644 --- a/src/Mod/Path/PathScripts/PathPreferencesPathJob.py +++ b/src/Mod/Path/PathScripts/PathPreferencesPathJob.py @@ -29,7 +29,7 @@ from PathScripts.PathPreferences import PathPreferences from PathScripts.PathPostProcessor import PostProcessor -class Page: +class JobPreferencesPage: def __init__(self, parent=None): self.form = FreeCADGui.PySideUic.loadUi(":preferences/PathJob.ui") From 490ae1f49c508b3786a644b3c1229d1774c158f5 Mon Sep 17 00:00:00 2001 From: Markus Lampert Date: Fri, 6 Jan 2017 18:56:13 -0800 Subject: [PATCH 12/19] Reduced debug logging. --- .../PathScripts/PathDressupHoldingTags.py | 53 +++++-------------- 1 file changed, 14 insertions(+), 39 deletions(-) diff --git a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py index d7f31bacd1..cc83f0aec8 100644 --- a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py +++ b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py @@ -144,14 +144,12 @@ class HoldingTagsPreferences: self.label = 'Holding Tags' def loadSettings(self): - print("holding tags - load settings") self.form.ifWidth.setText(FreeCAD.Units.Quantity(self.defaultWidth(0), FreeCAD.Units.Length).UserString) self.form.ifHeight.setText(FreeCAD.Units.Quantity(self.defaultHeight(0), FreeCAD.Units.Length).UserString) self.form.dsbAngle.setValue(self.defaultAngle()) self.form.sbCount.setValue(self.defaultCount()) def saveSettings(self): - print("holding tags - save settings") pref = PathPreferences.preferences() pref.SetFloat(self.DefaultHoldingTagWidth, FreeCAD.Units.Quantity(self.form.ifWidth.text()).Value) pref.SetFloat(self.DefaultHoldingTagHeight, FreeCAD.Units.Quantity(self.form.ifHeight.text()).Value) @@ -458,7 +456,7 @@ class _RapidEdges: return False def debugPrint(self): - print('rapid:') + debugPrint('rapid:') for r in self.rapid: debugEdge(r, ' ', True) @@ -667,7 +665,7 @@ class ObjectDressup: return True def createPath(self, edges, tags, rapid): - print("createPath") + #print("createPath") commands = [] lastEdge = 0 lastTag = 0 @@ -727,9 +725,7 @@ class ObjectDressup: def createTagsPositionDisabled(self, obj, positionsIn, disabledIn): rawTags = [] - print for i, pos in enumerate(positionsIn): - print("%d: (%.2f, %.2f)" % (i, pos.x, pos.y)) tag = Tag(pos.x, pos.y, obj.Width.Value, obj.Height.Value, obj.Angle, not i in disabledIn) tag.createSolidsAt(self.pathData.minZ, self.toolRadius) rawTags.append(tag) @@ -738,9 +734,7 @@ class ObjectDressup: tags = [] positions = [] disabled = [] - print for i, tag in enumerate(self.pathData.sortedTags(rawTags)): - print("%d: (%.2f, %.2f) %d" % (i, tag.x, tag.y, tag.enabled)) if tag.enabled: if bb: if bb.intersect(tag.solid.BoundBox): @@ -757,9 +751,6 @@ class ObjectDressup: disabled.append(i) tags.append(tag) positions.append(tag.originAt(0)) - print - print - print return (tags, positions, disabled) def execute(self, obj): @@ -788,7 +779,7 @@ class ObjectDressup: if hasattr(obj, "Positions"): self.tags, positions, disabled = self.createTagsPositionDisabled(obj, obj.Positions, obj.Disabled) if obj.Disabled != disabled: - print("Updating properties.... %s vs. %s" % (obj.Disabled, disabled)) + printDebug("Updating properties.... %s vs. %s" % (obj.Disabled, disabled)) obj.Positions = positions obj.Disabled = disabled @@ -813,10 +804,10 @@ class ObjectDressup: debugCylinder(tag.originAt(self.pathData.minZ), tag.fullWidth()/2, tag.actualHeight, "tag-%02d" % tagID) obj.Path = self.createPath(self.pathData.edges, self.tags, self.pathData.rapid) - print("execute - done") + #print("execute - done") def setup(self, obj, generate=False): - print("setup") + #print("setup") self.obj = obj try: pathData = PathData(obj) @@ -849,7 +840,7 @@ class ObjectDressup: positions = [] disabled = [] for i, (x, y, enabled) in enumerate(triples): - print("%d: (%.2f, %.2f) %d" % (i, x, y, enabled)) + #print("%d: (%.2f, %.2f) %d" % (i, x, y, enabled)) positions.append(FreeCAD.Vector(x, y, 0)) if not enabled: disabled.append(i) @@ -899,12 +890,10 @@ class TaskPanel: self.pt = FreeCAD.Vector(0, 0, 0) def reject(self): - print("reject") FreeCAD.ActiveDocument.abortTransaction() self.cleanup() def accept(self): - print("accept") self.getFields() FreeCAD.ActiveDocument.commitTransaction() self.cleanup() @@ -943,7 +932,7 @@ class TaskPanel: self.obj.Proxy.setXyEnabled(tags) def updateTagsView(self): - print("updateTagsView") + #print("updateTagsView") self.formTags.lwTags.blockSignals(True) self.formTags.lwTags.clear() for i, pos in enumerate(self.obj.Positions): @@ -964,17 +953,7 @@ class TaskPanel: self.formTags.lwTags.blockSignals(False) self.whenTagSelectionChanged() - def cleanupUI(self): - print("cleanupUI") - if debugDressup: - for obj in FreeCAD.ActiveDocument.Objects: - if obj.Name.startswith('tag'): - FreeCAD.ActiveDocument.removeObject(obj.Name) - def generateNewTags(self): - print("generateNewTags") - self.cleanupUI() - count = self.formTags.sbCount.value() if not self.obj.Proxy.generateTags(self.obj, count): self.obj.Proxy.execute(self.obj) @@ -991,7 +970,6 @@ class TaskPanel: #FreeCAD.ActiveDocument.recompute() def whenCountChanged(self): - print("whenCountChanged") count = self.formTags.sbCount.value() self.formTags.pbGenerate.setEnabled(count) @@ -999,7 +977,6 @@ class TaskPanel: self.formTags.lwTags.setCurrentRow(index) def whenTagSelectionChanged(self): - print('whenTagSelectionChanged') index = self.formTags.lwTags.currentRow() count = self.formTags.lwTags.count() self.formTags.pbDelete.setEnabled(index != -1 and count > 2) @@ -1007,13 +984,12 @@ class TaskPanel: self.viewProvider.selectTag(index) def deleteSelectedTag(self): - print("deleteSelectedTag") self.obj.Proxy.setXyEnabled(self.getTags(False)) self.updateTagsView() def addNewTagAt(self, point, obj): if self.obj.Proxy.pointIsOnPath(self.obj, point): - print("addNewTagAt(%s)" % (point)) + #print("addNewTagAt(%s)" % (point)) tags = self.tags tags.append((point.x, point.y, True)) self.obj.Proxy.setXyEnabled(tags) @@ -1116,19 +1092,19 @@ class TaskPanel: self.formTags.dsbAngle.setValue(self.obj.Angle) def updateModelHeight(self): - print('updateModelHeight') + #print('updateModelHeight') self.updateModel() def updateModelWidth(self): - print('updateModelWidth') + #print('updateModelWidth') self.updateModel() def updateModelAngle(self): - print('updateModelAngle') + #print('updateModelAngle') self.updateModel() def updateModelTags(self): - print('updateModelTags') + #print('updateModelTags') self.updateModel() def setupUi(self): @@ -1166,7 +1142,6 @@ class TaskPanel: self.pointFinish(False) def pointAccept(self): - print("pointAccept") self.pointFinish(True) def updatePoint(self): @@ -1242,7 +1217,7 @@ class ViewProviderDressup: if g.Name == self.obj.Base.Name: group.remove(g) i.Group = group - print i.Group + #print i.Group #FreeCADGui.ActiveDocument.getObject(obj.Base.Name).Visibility = False return [self.obj.Base] @@ -1290,7 +1265,7 @@ class ViewProviderDressup: self.tags = tags def selectTag(self, index): - print("selectTag(%s)" % index) + #print("selectTag(%s)" % index) for i, tag in enumerate(self.tags): tag.setSelected(i == index) From 3cc307f95f48ccd54bbfd701b8880e0f3a1aa3a8 Mon Sep 17 00:00:00 2001 From: Markus Lampert Date: Fri, 6 Jan 2017 21:09:21 -0800 Subject: [PATCH 13/19] Translation of strings. --- .../Path/PathScripts/PathDressupHoldingTags.py | 2 +- .../PathScripts/PathPreferencesPathDressup.py | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py index cc83f0aec8..fdd9a37f04 100644 --- a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py +++ b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py @@ -141,7 +141,7 @@ class HoldingTagsPreferences: def __init__(self): self.form = FreeCADGui.PySideUic.loadUi(":/preferences/PathDressupHoldingTags.ui") - self.label = 'Holding Tags' + self.label = translate('PathDressup_HoldingTags', 'Holding Tags') def loadSettings(self): self.form.ifWidth.setText(FreeCAD.Units.Quantity(self.defaultWidth(0), FreeCAD.Units.Length).UserString) diff --git a/src/Mod/Path/PathScripts/PathPreferencesPathDressup.py b/src/Mod/Path/PathScripts/PathPreferencesPathDressup.py index 86fa52507f..a23b370e89 100644 --- a/src/Mod/Path/PathScripts/PathPreferencesPathDressup.py +++ b/src/Mod/Path/PathScripts/PathPreferencesPathDressup.py @@ -27,6 +27,18 @@ import FreeCADGui from PySide import QtCore, QtGui from PathScripts.PathPreferences import PathPreferences +# Qt tanslation handling +try: + _encoding = QtGui.QApplication.UnicodeUTF8 + + def translate(context, text, disambig=None): + return QtGui.QApplication.translate(context, text, disambig, _encoding) + +except AttributeError: + + def translate(context, text, disambig=None): + return QtGui.QApplication.translate(context, text, disambig) + _dressups = [] def RegisterDressup(dressup): @@ -34,9 +46,8 @@ def RegisterDressup(dressup): class DressupPreferencesPage: def __init__(self, parent=None): - print('dressup - __init__') self.form = QtGui.QToolBox() - self.form.setWindowTitle('Dressups') + self.form.setWindowTitle(translate('PathPreferencesPathDressup', 'Dressups')) pages = [] for dressup in _dressups: page = dressup.preferencesPage() @@ -48,12 +59,10 @@ class DressupPreferencesPage: self.pages = pages def saveSettings(self): - print('dressup - save settings') for page in self.pages: page.saveSettings() def loadSettings(self): - print('dressup - load settings') for page in self.pages: page.loadSettings() From b7e93a1f32e816f9696eb2b517b1d888d8b96ef4 Mon Sep 17 00:00:00 2001 From: Markus Lampert Date: Tue, 10 Jan 2017 14:01:33 -0800 Subject: [PATCH 14/19] Added support for rounded tags. --- .../Gui/Resources/panels/HoldingTagsEdit.ui | 14 + .../preferences/PathDressupHoldingTags.ui | 62 +-- .../PathScripts/PathDressupHoldingTags.py | 355 +++++++++++------- src/Mod/Path/PathScripts/PathGeom.py | 52 +-- 4 files changed, 291 insertions(+), 192 deletions(-) diff --git a/src/Mod/Path/Gui/Resources/panels/HoldingTagsEdit.ui b/src/Mod/Path/Gui/Resources/panels/HoldingTagsEdit.ui index 93fc2de771..0fca680a75 100644 --- a/src/Mod/Path/Gui/Resources/panels/HoldingTagsEdit.ui +++ b/src/Mod/Path/Gui/Resources/panels/HoldingTagsEdit.ui @@ -101,6 +101,20 @@
+ + + + Radius + + + + + + + <html><head/><body><p>Radius of the fillet at the top.</p><p>If the radius is too big for the tag shape it gets reduced to the maximum possible radius - resulting in a spherical shape.</p></body></html> + + +
diff --git a/src/Mod/Path/Gui/Resources/preferences/PathDressupHoldingTags.ui b/src/Mod/Path/Gui/Resources/preferences/PathDressupHoldingTags.ui index c805d52a96..c5085d5fa8 100644 --- a/src/Mod/Path/Gui/Resources/preferences/PathDressupHoldingTags.ui +++ b/src/Mod/Path/Gui/Resources/preferences/PathDressupHoldingTags.ui @@ -20,13 +20,6 @@ Tag Parameters - - - - Default Width - - - @@ -34,24 +27,10 @@ - - + + - Default Height - - - - - - - <html><head/><body><p>Default height of holding tags.</p><p>If the specified height is 0 the dressup will use half the height of the part. Should the height be bigger than the height of the part the dressup will reduce the height to the height of the part.</p></body></html> - - - - - - - Default Angle + Default Width @@ -74,6 +53,41 @@ + + + + <html><head/><body><p>Default height of holding tags.</p><p>If the specified height is 0 the dressup will use half the height of the part. Should the height be bigger than the height of the part the dressup will reduce the height to the height of the part.</p></body></html> + + + + + + + Default Angle + + + + + + + Default Height + + + + + + + <html><head/><body><p>Radius of the fillet on the tag's top edge.</p><p>If the radius is bigger than than the tag shape itself supports the resulting shape will be that of a dome.</p></body></html> + + + + + + + Default Radius + + + diff --git a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py index fdd9a37f04..34908fe570 100644 --- a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py +++ b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py @@ -45,16 +45,8 @@ from pivy import coin """Holding Tags Dressup object and FreeCAD command""" # Qt tanslation handling -try: - _encoding = QtGui.QApplication.UnicodeUTF8 - - def translate(context, text, disambig=None): - return QtGui.QApplication.translate(context, text, disambig, _encoding) - -except AttributeError: - - def translate(context, text, disambig=None): - return QtGui.QApplication.translate(context, text, disambig) +def translate(text, context = "PathDressup_HoldingTags", disambig=None): + return QtCore.QCoreApplication.translate(context, text, disambig) debugDressup = False @@ -106,10 +98,11 @@ def debugCone(vector, r1, r2, height, label, color = None): class HoldingTagsPreferences: - DefaultHoldingTagWidth = 'DefaultHoldingTagWidth' - DefaultHoldingTagHeight = 'DefaultHoldingTagHeight' - DefaultHoldingTagAngle = 'DefaultHoldingTagAngle' - DefaultHoldingTagCount = 'DefaultHoldingTagCount' + DefaultHoldingTagWidth = 'DefaultHoldingTagWidth' + DefaultHoldingTagHeight = 'DefaultHoldingTagHeight' + DefaultHoldingTagAngle = 'DefaultHoldingTagAngle' + DefaultHoldingTagRadius = 'DefaultHoldingTagRadius' + DefaultHoldingTagCount = 'DefaultHoldingTagCount' @classmethod def defaultWidth(cls, ifNotSet): @@ -139,14 +132,20 @@ class HoldingTagsPreferences: return float(ifNotSet) return float(value) + @classmethod + def defaultRadius(cls, ifNotSet = 0.0): + return PathPreferences.preferences().GetFloat(cls.DefaultHoldingTagRadius, ifNotSet) + + def __init__(self): self.form = FreeCADGui.PySideUic.loadUi(":/preferences/PathDressupHoldingTags.ui") - self.label = translate('PathDressup_HoldingTags', 'Holding Tags') + self.label = translate('Holding Tags') def loadSettings(self): self.form.ifWidth.setText(FreeCAD.Units.Quantity(self.defaultWidth(0), FreeCAD.Units.Length).UserString) self.form.ifHeight.setText(FreeCAD.Units.Quantity(self.defaultHeight(0), FreeCAD.Units.Length).UserString) self.form.dsbAngle.setValue(self.defaultAngle()) + self.form.ifRadius.setText(FreeCAD.Units.Quantity(self.defaultRadius(), FreeCAD.Units.Length).UserString) self.form.sbCount.setValue(self.defaultCount()) def saveSettings(self): @@ -154,6 +153,7 @@ class HoldingTagsPreferences: pref.SetFloat(self.DefaultHoldingTagWidth, FreeCAD.Units.Quantity(self.form.ifWidth.text()).Value) pref.SetFloat(self.DefaultHoldingTagHeight, FreeCAD.Units.Quantity(self.form.ifHeight.text()).Value) pref.SetFloat(self.DefaultHoldingTagAngle, self.form.dsbAngle.value()) + pref.SetFloat(self.DefaultHoldingTagRadius, FreeCAD.Units.Quantity(self.form.ifRadius.text())) pref.SetUnsigned(self.DefaultHoldingTagCount, self.form.sbCount.value()) @classmethod @@ -161,14 +161,15 @@ class HoldingTagsPreferences: return HoldingTagsPreferences() class Tag: - def __init__(self, x, y, width, height, angle, enabled=True): - debugPrint("Tag(%.2f, %.2f, %.2f, %.2f, %.2f, %d)" % (x, y, width, height, angle/math.pi, enabled)) + def __init__(self, x, y, width, height, angle, radius, enabled=True): + debugPrint("Tag(%.2f, %.2f, %.2f, %.2f, %.2f, %.2f, %d)" % (x, y, width, height, angle, radius, enabled)) self.x = x self.y = y self.width = math.fabs(width) self.height = math.fabs(height) self.actualHeight = self.height self.angle = math.fabs(angle) + self.radius = radius self.enabled = enabled def fullWidth(self): @@ -190,15 +191,24 @@ class Tag: self.r1 = r1 self.r2 = r1 height = self.height * 1.01 + radius = 0 if self.angle == 90 and height > 0: + # cylinder self.solid = Part.makeCylinder(r1, height) + radius = min(min(self.radius, r1), self.height) debugPrint("Part.makeCone(%f, %f)" % (r1, height)) elif self.angle > 0.0 and height > 0.0: - tangens = math.tan(math.radians(self.angle)) + # cone + rad = math.radians(self.angle) + tangens = math.tan(rad) dr = height / tangens if dr < r1: + # with top r2 = r1 - dr + s = height / math.sin(rad) + radius = min(r2, s) * math.tan((math.pi - rad)/2) * 0.95 else: + # triangular r2 = 0 height = r1 * tangens * 1.01 self.actualHeight = height @@ -215,9 +225,13 @@ class Tag: self.solid.rotate(FreeCAD.Vector(0,0,0), FreeCAD.Vector(0,0,1), angle) debugPrint("solid.translate(%s)" % self.originAt(z)) self.solid.translate(self.originAt(z - 0.01 * height)) + self.realRadius = radius + if radius != 0: + debugPrint("makeFillet(%.4f)" % radius) + self.solid = self.solid.makeFillet(radius, [self.solid.Edges[0]]) def filterIntersections(self, pts, face): - if type(face.Surface) == Part.Cone or type(face.Surface) == Part.Cylinder: + if type(face.Surface) == Part.Cone or type(face.Surface) == Part.Cylinder or type(face.Surface) == Part.Toroid: #print("it's a cone/cylinder, checking z") return filter(lambda pt: pt.z >= self.bottom() and pt.z <= self.top(), pts) if type(face.Surface) == Part.Plane: @@ -225,7 +239,7 @@ class Tag: c = face.Edges[0].Curve if (type(c) == Part.Circle): return filter(lambda pt: (pt - c.Center).Length <= c.Radius or PathGeom.isRoughly((pt - c.Center).Length, c.Radius), pts) - #print("==== we got a %s" % face.Surface) + print("==== we got a %s" % face.Surface) def isPointOnEdge(self, pt, edge): param = edge.Curve.parameter(pt) @@ -249,26 +263,9 @@ class Tag: el = edge.valueAt(edge.LastParameter) #print("-------- intersect %s (%.2f, %.2f, %.2f) - (%.2f, %.2f, %.2f) - (%.2f, %.2f, %.2f) refp=(%.2f, %.2f, %.2f)" % (type(edge.Curve), ef.x, ef.y, ef.z, em.x, em.y, em.z, el.x, el.y, el.z, refPt.x, refPt.y, refPt.z)) - pts = [] - for index, face in enumerate(solid.Faces): - i = edge.Curve.intersect(face.Surface)[0] - #print i - ps = self.filterIntersections([FreeCAD.Vector(p.X, p.Y, p.Z) for p in i], face) - pts.extend(filter(lambda pt: self.isPointOnEdge(pt, edge), ps)) - if len(ps) != len(filter(lambda pt: self.isPointOnEdge(pt, edge), ps)): - filtered = filter(lambda pt: self.isPointOnEdge(pt, edge), ps) - #print("-------- ++ len(ps)=%d, len(filtered)=%d" % (len(ps), len(filtered))) - for p in ps: - included = '+' if p in filtered else '-' - #print("-------- %s (%.2f, %.2f, %.2f)" % (included, p.x, p.y, p.z)) - if pts: - closest = sorted(pts, key=lambda pt: (pt - refPt).Length)[0] - #for p in pts: - # print("-------- - intersect pt : (%.2f, %.2f, %.2f)" % (p.x, p.y, p.z)) - #print("-------- -> (%.2f, %.2f, %.2f)" % (closest.x, closest.y, closest.z)) - return closest - - #print("-------- -> None") + vertexes = edge.common(solid).Vertexes + if vertexes: + return sorted(vertexes, key=lambda v: (v.Point - refPt).Length)[0].Point return None def intersects(self, edge, param): @@ -277,6 +274,18 @@ class Tag: return self.nextIntersectionClosestTo(edge, self.solid, edge.valueAt(param)) return None + def bbEdges(self): + edges = [] + for i in range(12): + p1, p2 = self.solid.BoundBox.getEdge(i) + edges.append(Part.Edge(Part.LineSegment(p1, p2))) + return edges + + def bbShow(self): + for e in self.bbEdges(): + Part.show(e) + + class MapWireToTag: def __init__(self, edge, tag, i): debugEdge(edge, 'MapWireToTag(%.2f, %.2f, %.2f)' % (i.x, i.y, i.z)) @@ -294,9 +303,14 @@ class MapWireToTag: debugEdge(e, '++++++++ .') self.commands = PathGeom.cmdsForEdge(e) debugEdge(tail, '.........-') + self.initialEdge = edge self.tail = tail self.edges = [] self.entry = i + if tail: + debugPrint("MapWireToTag(%s - %s)" % (i, tail.valueAt(tail.FirstParameter))) + else: + debugPrint("MapWireToTag(%s - )" % i) self.complete = False self.haveProblem = False @@ -322,63 +336,114 @@ class MapWireToTag: return 2 return 0 - def cleanupEdges(self, edges, baseEdge): + def cleanupEdges(self, edges): # want to remove all edges from the wire itself, and all internal struts #print("+cleanupEdges") - #print(" base:") - debugEdge(baseEdge, ' ') #print(" edges:") for e in edges: debugEdge(e, ' ') #print(":") + self.edgesCleanup = [copy.copy(edges)] - haveEntry = False + # remove any edge that has a point inside the tag solid + # and collect all edges that are connected to the entry and/or exit + self.entryEdges = [] + self.exitEdges = [] + self.edgePoints = [] for e in copy.copy(edges): - if PathGeom.edgesMatch(e, baseEdge): - debugEdge(e, '......... X0') + p1 = e.valueAt(e.FirstParameter) + p2 = e.valueAt(e.LastParameter) + self.edgePoints.append(p1) + self.edgePoints.append(p2) + if self.tag.solid.isInside(p1, PathGeom.Tolerance, False) or self.tag.solid.isInside(p2, PathGeom.Tolerance, False): edges.remove(e) - elif self.isStrut(e): - typ = self.isEntryOrExitStrut(e) - debugEdge(e, '......... |%d' % typ) - if 0 == typ: # neither entry nor exit - debugEdge(e, '......... X1') - edges.remove(e) - elif 1 == typ: - haveEntry = True + debugEdge(e, '......... X0', False) + else: + if PathGeom.pointsCoincide(p1, self.entry) or PathGeom.pointsCoincide(p2, self.entry): + self.entryEdges.append(e) + if PathGeom.pointsCoincide(p1, self.exit) or PathGeom.pointsCoincide(p2, self.exit): + self.exitEdges.append(e) + self.edgesCleanup.append(copy.copy(edges)) + # if there are no edges connected to entry/exit, it means the plunge in/out is vertical + # we need to add in the missing segment and collect the new entry/exit edges. + if not self.entryEdges: + print("fill entryEdges ...") + self.realEntry = sorted(self.edgePoints, key=lambda p: (p - self.entry).Length)[0] + self.entryEdges = filter(lambda e: PathGeom.edgeConnectsTo(e, self.realEntry), edges) + edges.append(Part.Edge(Part.LineSegment(self.entry, self.realEntry))) + else: + self.realEntry = None + if not self.exitEdges: + print("fill exitEdges ...") + self.realExit = sorted(self.edgePoints, key=lambda p: (p - self.exit).Length)[0] + self.exitEdges = filter(lambda e: PathGeom.edgeConnectsTo(e, self.realExit), edges) + edges.append(Part.Edge(Part.LineSegment(self.realExit, self.exit))) + else: + self.realExit = None + self.edgesCleanup.append(copy.copy(edges)) + + # if there are 2 edges attached to entry/exit, throw away the one that is "lower" + if len(self.entryEdges) > 1: + debugEdge(self.entryEdges[0], ' entry[0]', False) + debugEdge(self.entryEdges[1], ' entry[1]', False) + if self.entryEdges[0].BoundBox.ZMax < self.entryEdges[1].BoundBox.ZMax: + edges.remove(self.entryEdges[0]) + debugEdge(e, '......... X1', False) + else: + edges.remove(self.entryEdges[1]) + debugEdge(e, '......... X2', False) + if len(self.exitEdges) > 1: + debugEdge(self.exitEdges[0], ' exit[0]', False) + debugEdge(self.exitEdges[1], ' exit[1]', False) + if self.exitEdges[0].BoundBox.ZMax < self.exitEdges[1].BoundBox.ZMax: + if self.exitEdges[0] in edges: + edges.remove(self.exitEdges[0]) + debugEdge(e, '......... X3', False) + else: + if self.exitEdges[1] in edges: + edges.remove(self.exitEdges[1]) + debugEdge(e, '......... X4', False) + + self.edgesCleanup.append(copy.copy(edges)) + return edges + + def orderAndFlipEdges(self, edges): #print("entry(%.2f, %.2f, %.2f), exit(%.2f, %.2f, %.2f)" % (self.entry.x, self.entry.y, self.entry.z, self.exit.x, self.exit.y, self.exit.z)) - # the remaininng edges for the path from xy(baseEdge) along the tags surface + self.edgesOrder = [] outputEdges = [] - p0 = baseEdge.valueAt(baseEdge.FirstParameter) - ignoreZ = False - if not haveEntry: - ignoreZ = True - p0 = PathGeom.xy(p0) + p0 = self.entry lastP = p0 while edges: - #print("(%.2f, %.2f, %.2f) %d %d" % (p0.x, p0.y, p0.z, haveEntry, ignoreZ)) + #print("(%.2f, %.2f, %.2f) %d %d" % (p0.x, p0.y, p0.z)) for e in edges: p1 = e.valueAt(e.FirstParameter) p2 = e.valueAt(e.LastParameter) - if PathGeom.pointsCoincide(PathGeom.xy(p1) if ignoreZ else p1, p0): + if PathGeom.pointsCoincide(p1, p0): outputEdges.append((e, False)) edges.remove(e) lastP = None - ignoreZ = False p0 = p2 debugEdge(e, ">>>>> no flip") break - elif PathGeom.pointsCoincide(PathGeom.xy(p2) if ignoreZ else p2, p0): + elif PathGeom.pointsCoincide(p2, p0): outputEdges.append((e, True)) edges.remove(e) lastP = None - ignoreZ = False p0 = p1 debugEdge(e, ">>>>> flip") break else: debugEdge(e, "<<<<< (%.2f, %.2f, %.2f)" % (p0.x, p0.y, p0.z)) if lastP == p0: + self.edgesOrder.append(outputEdges) + self.edgesOrder.append(edges) + print('ordered edges:') + for e, flip in outputEdges: + debugEdge(e, ' %c ' % ('<' if flip else '>'), False) + print('remaining edges:') + for e in edges: + debugEdge(e, ' ', False) raise ValueError("No connection to %s" % (p0)) elif lastP: debugPrint("xxxxxx (%.2f, %.2f, %.2f) (%.2f, %.2f, %.2f)" % (p0.x, p0.y, p0.z, lastP.x, lastP.y, lastP.z)) @@ -393,40 +458,50 @@ class MapWireToTag: p2 = PathGeom.xy(edge.valueAt(edge.LastParameter)) return PathGeom.pointsCoincide(p1, p2) - def cmdsForEdge(self, edge): - cmds = [] - - # OCC doesn't like it very much if the shapes align with each other. So if we have a slightly - # extended edge for the last edge in list we'll use that instead for stable results. - if PathGeom.pointsCoincide(edge.valueAt(edge.FirstParameter), self.lastEdge.valueAt(self.lastEdge.FirstParameter)): - shell = self.lastEdge.extrude(FreeCAD.Vector(0, 0, self.tag.height + 1)) + def shell(self): + if len(self.edges) > 1: + wire = Part.Wire(self.initialEdge) else: - shell = edge.extrude(FreeCAD.Vector(0, 0, self.tag.height + 1)) - shape = shell.common(self.tag.solid) + edge = self.edges[0] + if PathGeom.pointsCoincide(edge.valueAt(edge.FirstParameter), self.finalEdge.valueAt(self.finalEdge.FirstParameter)): + wire = Part.Wire(self.finalEdge) + elif hasattr(self, 'initialEdge') and PathGeom.pointsCoincide(edge.valueAt(edge.FirstParameter), self.initialEdge.valueAt(self.initialEdge.FirstParameter)): + wire = Part.Wire(self.initialEdge) + else: + wire = Part.Wire(edge) - if not shape.Edges: - self.haveProblem = True + for edge in self.edges[1:]: + if PathGeom.pointsCoincide(edge.valueAt(edge.FirstParameter), self.finalEdge.valueAt(self.finalEdge.FirstParameter)): + wire.add(self.finalEdge) + else: + wire.add(edge) - for e,flip in self.cleanupEdges(shape.Edges, edge): - debugEdge(e, '++++++++ %s' % ('.' if not flip else '@')) - cmds.extend(PathGeom.cmdsForEdge(e, flip, False)) - return cmds + shell = wire.extrude(FreeCAD.Vector(0, 0, self.tag.height + 1)) + return shell.removeShape(filter(lambda f: PathGeom.isRoughly(f.Area, 0), shell.Faces)) def commandsForEdges(self): - commands = [] - for e in self.edges: - if self.isStrut(e): - continue - commands.extend(self.cmdsForEdge(e)) - return commands + if self.edges: + shape = self.shell().common(self.tag.solid) + commands = [] + for e,flip in self.orderAndFlipEdges(self.cleanupEdges(shape.Edges)): + debugEdge(e, '++++++++ %s' % ('<' if flip else '>'), False) + commands.extend(PathGeom.cmdsForEdge(e, flip, False)) + return commands + return [] def add(self, edge): self.tail = None - self.lastEdge = edge # see cmdsForEdge - if self.tag.solid.isInside(edge.valueAt(edge.LastParameter), 0.000001, True): + self.finalEdge = edge + if self.tag.solid.isInside(edge.valueAt(edge.LastParameter), PathGeom.Tolerance, True): self.addEdge(edge) else: i = self.tag.intersects(edge, edge.LastParameter) + if not i: + self.offendingEdge = edge + debugEdge(edge, 'offending Edge:', False) + o = self.tag.originAt(self.tag.z) + print('originAt: (%.2f, %.2f, %.2f)' % (o.x, o.y, o.z)) + i = edge.valueAt(edge.FirstParameter) if PathGeom.pointsCoincide(i, edge.valueAt(edge.FirstParameter)): self.tail = edge else: @@ -458,7 +533,7 @@ class _RapidEdges: def debugPrint(self): debugPrint('rapid:') for r in self.rapid: - debugEdge(r, ' ', True) + debugEdge(r, ' ') class PathData: def __init__(self, obj): @@ -501,7 +576,7 @@ class PathData: edges = sorted(self.base.Edges, key=lambda e: e.Length) return (edges[0], edges[-1]) - def generateTags(self, obj, count, width=None, height=None, angle=None, spacing=None): + def generateTags(self, obj, count, width=None, height=None, angle=None, radius=None, spacing=None): debugPrint("generateTags(%s, %s, %s, %s, %s)" % (count, width, height, angle, spacing)) #for e in self.base.Edges: # debugMarker(e.Vertexes[0].Point, 'base', (0.0, 1.0, 1.0), 0.2) @@ -509,18 +584,12 @@ class PathData: if spacing: tagDistance = spacing else: - if count: - tagDistance = self.base.Length / count - else: - tagDistance = self.base.Length / 4 - if width: - W = width - else: - W = self.defaultTagWidth() - if height: - H = height - else: - H = self.defaultTagHeight() + tagDistance = self.base.Length / (count if count else 4) + + W = width if width else self.defaultTagWidth() + H = height if height else self.defaultTagHeight() + A = angle if angle else self.defaultTagAngle() + R = radius if radius else self.defaultTagRadius() # start assigning tags on the longest segment @@ -568,7 +637,7 @@ class PathData: distance = (edge.LastParameter - edge.FirstParameter) / count for j in range(0, count): tag = edge.Curve.value((j+0.5) * distance) - tags.append(Tag(tag.x, tag.y, W, H, angle, True)) + tags.append(Tag(tag.x, tag.y, W, H, A, R, True)) return tags @@ -604,6 +673,9 @@ class PathData: def defaultTagAngle(self): return HoldingTagsPreferences.defaultAngle() + def defaultTagRadius(self): + return HoldingTagsPreferences.defaultRadius() + def sortedTags(self, tags): ordered = [] for edge in self.base.Edges: @@ -613,6 +685,7 @@ class PathData: ordered.append(t) # disable all tags that are not on the base wire. for tag in tags: + FreeCAD.Console.PrintMessage("Tag #%d not on base wire - disabling\n" % len(ordered)) tag.enabled = False ordered.append(tag) return ordered @@ -632,6 +705,7 @@ class ObjectDressup: obj.addProperty("App::PropertyLength", "Width", "Tag", QtCore.QT_TRANSLATE_NOOP("PathDressup_HoldingTags", "Width of tags.")) obj.addProperty("App::PropertyLength", "Height", "Tag", QtCore.QT_TRANSLATE_NOOP("PathDressup_HoldingTags", "Height of tags.")) obj.addProperty("App::PropertyAngle", "Angle", "Tag", QtCore.QT_TRANSLATE_NOOP("PathDressup_HoldingTags", "Angle of tag plunge and ascent.")) + obj.addProperty("App::PropertyLength", "Radius", "Tag", QtCore.QT_TRANSLATE_NOOP("PathDressup_HoldingTags", "Radius of the fillet on the top the tag.")) obj.addProperty("App::PropertyVectorList", "Positions", "Tag", QtCore.QT_TRANSLATE_NOOP("PathDressup_HoldingTags", "Locations of insterted holding tags")) obj.addProperty("App::PropertyIntegerList", "Disabled", "Tag", QtCore.QT_TRANSLATE_NOOP("PathDressup_HoldingTags", "Ids of disabled holding tags")) obj.Proxy = self @@ -644,7 +718,7 @@ class ObjectDressup: def generateTags(self, obj, count): if hasattr(self, "pathData"): - self.tags = self.pathData.generateTags(obj, count, obj.Width.Value, obj.Height.Value, obj.Angle, None) + self.tags = self.pathData.generateTags(obj, count, obj.Width.Value, obj.Height.Value, obj.Angle, obj.Radius.Value, None) obj.Positions = [tag.originAt(0) for tag in self.tags] obj.Disabled = [] return False @@ -726,27 +800,31 @@ class ObjectDressup: def createTagsPositionDisabled(self, obj, positionsIn, disabledIn): rawTags = [] for i, pos in enumerate(positionsIn): - tag = Tag(pos.x, pos.y, obj.Width.Value, obj.Height.Value, obj.Angle, not i in disabledIn) + tag = Tag(pos.x, pos.y, obj.Width.Value, obj.Height.Value, obj.Angle, obj.Radius, not i in disabledIn) tag.createSolidsAt(self.pathData.minZ, self.toolRadius) rawTags.append(tag) # disable all tags that intersect with their previous tag - bb = None + prev = None tags = [] positions = [] disabled = [] for i, tag in enumerate(self.pathData.sortedTags(rawTags)): if tag.enabled: - if bb: - if bb.intersect(tag.solid.BoundBox): + if prev: + if prev.solid.common(tag.solid).Faces: + FreeCAD.Console.PrintMessage("Tag #%d intersects with previous tag - disabling\n" % i) + debugPrint("this tag = %d [%s]" % (i, tag.solid.BoundBox)) tag.enabled = False elif self.pathData.edges: e = self.pathData.edges[0] p0 = e.valueAt(e.FirstParameter) p1 = e.valueAt(e.LastParameter) - if tag.solid.BoundBox.isInside(p0) or tag.solid.BoundBox.isInside(p1): + if tag.solid.isInside(p0, PathGeom.Tolerance, True) or tag.solid.isInside(p1, PathGeom.Tolerance, True): + FreeCAD.Console.PrintMessage("Tag #%d intersects with starting point - disabling\n" % i) tag.enabled = False if tag.enabled: - bb = tag.solid.BoundBox + prev = tag + debugPrint("previousTag = %d [%s]" % (i, prev)) else: disabled.append(i) tags.append(tag) @@ -779,7 +857,7 @@ class ObjectDressup: if hasattr(obj, "Positions"): self.tags, positions, disabled = self.createTagsPositionDisabled(obj, obj.Positions, obj.Disabled) if obj.Disabled != disabled: - printDebug("Updating properties.... %s vs. %s" % (obj.Disabled, disabled)) + debugPrint("Updating properties.... %s vs. %s" % (obj.Disabled, disabled)) obj.Positions = positions obj.Disabled = disabled @@ -796,23 +874,23 @@ class ObjectDressup: for tag in self.tags: tagID += 1 if tag.enabled: - print("x=%s, y=%s, z=%s" % (tag.x, tag.y, self.pathData.minZ)) - debugMarker(FreeCAD.Vector(tag.x, tag.y, self.pathData.minZ), "tag-%02d" % tagID , (1.0, 0.0, 1.0), 0.5) - if tag.angle != 90: - debugCone(tag.originAt(self.pathData.minZ), tag.r1, tag.r2, tag.actualHeight, "tag-%02d" % tagID) - else: - debugCylinder(tag.originAt(self.pathData.minZ), tag.fullWidth()/2, tag.actualHeight, "tag-%02d" % tagID) + debugPrint("x=%s, y=%s, z=%s" % (tag.x, tag.y, self.pathData.minZ)) + #debugMarker(FreeCAD.Vector(tag.x, tag.y, self.pathData.minZ), "tag-%02d" % tagID , (1.0, 0.0, 1.0), 0.5) + #if tag.angle != 90: + # debugCone(tag.originAt(self.pathData.minZ), tag.r1, tag.r2, tag.actualHeight, "tag-%02d" % tagID) + #else: + # debugCylinder(tag.originAt(self.pathData.minZ), tag.fullWidth()/2, tag.actualHeight, "tag-%02d" % tagID) obj.Path = self.createPath(self.pathData.edges, self.tags, self.pathData.rapid) #print("execute - done") def setup(self, obj, generate=False): - #print("setup") + debugPrint("setup") self.obj = obj try: pathData = PathData(obj) except ValueError: - FreeCAD.Console.PrintError(translate("PathDressup_HoldingTags", "Cannot insert holding tags for this path - please select a Profile path\n")) + FreeCAD.Console.PrintError(translate("Cannot insert holding tags for this path - please select a Profile path\n")) return None self.toolRadius = 5 @@ -830,11 +908,13 @@ class ObjectDressup: obj.Height = self.pathData.defaultTagHeight() obj.Width = self.pathData.defaultTagWidth() obj.Angle = self.pathData.defaultTagAngle() + obj.Radius = self.pathData.defaultTagRadius() count = HoldingTagsPreferences.defaultCount() self.generateTags(obj, count) return self.pathData def setXyEnabled(self, triples): + debugPrint("setXyEnabled") if not hasattr(self, 'pathData'): self.setup(self.obj) positions = [] @@ -881,7 +961,7 @@ class TaskPanel: self.formPoint.hide() self.jvo = PathUtils.findParentJob(obj).ViewObject if jvoVisibility is None: - FreeCAD.ActiveDocument.openTransaction(translate("PathDressup_HoldingTags", "Edit HoldingTags Dress-up")) + FreeCAD.ActiveDocument.openTransaction(translate("Edit HoldingTags Dress-up")) self.jvoVisible = self.jvo.isVisible() if self.jvoVisible: self.jvo.hide() @@ -925,6 +1005,7 @@ class TaskPanel: self.obj.Width = FreeCAD.Units.Quantity(self.formTags.ifWidth.text()).Value self.obj.Height = FreeCAD.Units.Quantity(self.formTags.ifHeight.text()).Value self.obj.Angle = self.formTags.dsbAngle.value() + self.obj.Radius = FreeCAD.Units.Quantity(self.formTags.ifRadius.text()).Value def getFields(self): self.getTagParameters() @@ -1090,22 +1171,7 @@ class TaskPanel: self.formTags.ifHeight.setText(FreeCAD.Units.Quantity(self.obj.Height, FreeCAD.Units.Length).UserString) self.formTags.ifWidth.setText(FreeCAD.Units.Quantity(self.obj.Width, FreeCAD.Units.Length).UserString) self.formTags.dsbAngle.setValue(self.obj.Angle) - - def updateModelHeight(self): - #print('updateModelHeight') - self.updateModel() - - def updateModelWidth(self): - #print('updateModelWidth') - self.updateModel() - - def updateModelAngle(self): - #print('updateModelAngle') - self.updateModel() - - def updateModelTags(self): - #print('updateModelTags') - self.updateModel() + self.formTags.ifRadius.setText(FreeCAD.Units.Quantity(self.obj.Radius, FreeCAD.Units.Length).UserString) def setupUi(self): self.setFields() @@ -1114,10 +1180,11 @@ class TaskPanel: self.formTags.sbCount.valueChanged.connect(self.whenCountChanged) self.formTags.pbGenerate.clicked.connect(self.generateNewTags) - self.formTags.ifHeight.editingFinished.connect(self.updateModelHeight) - self.formTags.ifWidth.editingFinished.connect(self.updateModelWidth) - self.formTags.dsbAngle.editingFinished.connect(self.updateModelAngle) - self.formTags.lwTags.itemChanged.connect(self.updateModelTags) + self.formTags.ifHeight.editingFinished.connect(self.updateModel) + self.formTags.ifWidth.editingFinished.connect(self.updateModel) + self.formTags.dsbAngle.editingFinished.connect(self.updateModel) + self.formTags.ifRadius.editingFinished.connect(self.updateModel) + self.formTags.lwTags.itemChanged.connect(self.updateModel) self.formTags.lwTags.itemSelectionChanged.connect(self.whenTagSelectionChanged) self.formTags.lwTags.itemActivated.connect(self.editTag) @@ -1307,18 +1374,18 @@ class CommandPathDressupHoldingTags: # check that the selection contains exactly what we want selection = FreeCADGui.Selection.getSelection() if len(selection) != 1: - FreeCAD.Console.PrintError(translate("PathDressup_HoldingTags", "Please select one path object\n")) + FreeCAD.Console.PrintError(translate("Please select one path object\n")) return baseObject = selection[0] if not baseObject.isDerivedFrom("Path::Feature"): - FreeCAD.Console.PrintError(translate("PathDressup_HoldingTags", "The selected object is not a path\n")) + FreeCAD.Console.PrintError(translate("The selected object is not a path\n")) return if baseObject.isDerivedFrom("Path::FeatureCompoundPython"): - FreeCAD.Console.PrintError(translate("PathDressup_HoldingTags", "Please select a Profile object")) + FreeCAD.Console.PrintError(translate("Please select a Profile object")) return # everything ok! - FreeCAD.ActiveDocument.openTransaction(translate("PathDressup_HoldingTags", "Create HoldingTags Dress-up")) + FreeCAD.ActiveDocument.openTransaction(translate("Create HoldingTags Dress-up")) FreeCADGui.addModule("PathScripts.PathDressupHoldingTags") FreeCADGui.addModule("PathScripts.PathUtils") FreeCADGui.doCommand('obj = FreeCAD.ActiveDocument.addObject("Path::FeaturePython", "HoldingTagsDressup")') diff --git a/src/Mod/Path/PathScripts/PathGeom.py b/src/Mod/Path/PathScripts/PathGeom.py index 388b109522..ed85398735 100644 --- a/src/Mod/Path/PathScripts/PathGeom.py +++ b/src/Mod/Path/PathScripts/PathGeom.py @@ -29,6 +29,8 @@ import Path from FreeCAD import Vector +PathGeomTolerance = 0.000001 + class Side: """Class to determine and define the side a Path is on, or Vectors are in relation to each other.""" Left = +1 @@ -70,22 +72,24 @@ class PathGeom: CmdMoveArc = CmdMoveCW + CmdMoveCCW CmdMove = CmdMoveStraight + CmdMoveArc + Tolerance = PathGeomTolerance + @classmethod - def isRoughly(cls, float1, float2, error=0.0000001): - """(float1, float2, [error=0.0000001]) - Returns true if the two values are the same within a given error.""" + def isRoughly(cls, float1, float2, error=PathGeomTolerance): + """(float1, float2, [error=%s]) + Returns true if the two values are the same within a given error.""" % PathGeomTolerance return math.fabs(float1 - float2) <= error @classmethod - def pointsCoincide(cls, p1, p2, error=0.0000001): - """(p1, p2, [error=0.0000001]) - Return True if two points are roughly identical (see also isRoughly).""" + def pointsCoincide(cls, p1, p2, error=PathGeomTolerance): + """(p1, p2, [error=%s]) + Return True if two points are roughly identical (see also isRoughly).""" % PathGeomTolerance return cls.isRoughly(p1.x, p2.x, error) and cls.isRoughly(p1.y, p2.y, error) and cls.isRoughly(p1.z, p2.z, error) @classmethod - def edgesMatch(cls, e0, e1, error=0.0000001): - """(e0, e1, [error=0.0000001] - Return true if the edges start and end at the same point and have the same type of curve.""" + def edgesMatch(cls, e0, e1, error=PathGeomTolerance): + """(e0, e1, [error=%s] + Return true if the edges start and end at the same point and have the same type of curve.""" % PathGeomTolerance if type(e0.Curve) != type(e1.Curve): return False if not cls.pointsCoincide(e0.valueAt(e0.FirstParameter), e1.valueAt(e1.FirstParameter)): @@ -95,9 +99,9 @@ class PathGeom: return True @classmethod - def edgeConnectsTo(cls, edge, vector): - """(edge, vector) - Returns True if edge connects to given vector.""" + def edgeConnectsTo(cls, edge, vector, error=PathGeomTolerance): + """(edge, vector, error=%f) + Returns True if edge connects to given vector.""" % PathGeomTolerance return cls.pointsCoincide(edge.valueAt(edge.FirstParameter), vector) or cls.pointsCoincide(edge.valueAt(edge.LastParameter), vector) @classmethod @@ -106,7 +110,7 @@ class PathGeom: Returns the angle [-pi,pi] of a vector using the X-axis as the reference. Positive angles for vertexes in the upper hemishpere (positive y values) and negative angles for the lower hemishpere.""" - a = vector.getAngle(FreeCAD.Vector(1,0,0)) + a = vector.getAngle(Vector(1,0,0)) if vector.y < 0: return -a return a @@ -132,7 +136,7 @@ class PathGeom: x = cmd.Parameters.get(X, defaultPoint.x) y = cmd.Parameters.get(Y, defaultPoint.y) z = cmd.Parameters.get(Z, defaultPoint.z) - return FreeCAD.Vector(x, y, z) + return Vector(x, y, z) @classmethod def xy(cls, point): @@ -162,12 +166,12 @@ class PathGeom: p1 = pt p3 = edge.valueAt(edge.LastParameter) p2 = edge.valueAt((edge.FirstParameter + edge.LastParameter)/2) - if type(edge.Curve) == Part.Circle or (useHelixForBSpline and type(edge.Curve) == Part.BSplineCurve): + if (type(edge.Curve) == Part.Circle and cls.pointsCoincide(edge.Curve.Axis, Vector(0, 0, 1))) or (useHelixForBSpline and type(edge.Curve) == Part.BSplineCurve): if Side.Left == Side.of(p2 - p1, p3 - p2): cmd = 'G3' else: cmd = 'G2' - #print("**** (%.2f, %.2f, %.2f) - (%.2f, %.2f, %.2f) - (%.2f, %.2f, %.2f)" % (p1.x, p1.y, p1.z, p2.x, p2.y, p2.z, p3.x, p3.y, p3.z)) + print("**** (%.2f, %.2f, %.2f) - (%.2f, %.2f, %.2f) - (%.2f, %.2f, %.2f)" % (p1.x, p1.y, p1.z, p2.x, p2.y, p2.z, p3.x, p3.y, p3.z)) pd = Part.Circle(PathGeom.xy(p1), PathGeom.xy(p2), PathGeom.xy(p3)).Center pa = PathGeom.xy(p1) @@ -232,7 +236,7 @@ class PathGeom: #print("arc: A=(%.2f, %.2f) B=(%.2f, %.2f) -> d=%.2f" % (A.x, A.y, B.x, B.y, d)) #print("arc: R=%.2f angle=%.2f" % (R, angle/math.pi)) if startPoint.z == endPoint.z: - midPoint = center + FreeCAD.Vector(math.cos(angle), math.sin(angle), 0) * R + midPoint = center + Vector(math.cos(angle), math.sin(angle), 0) * R return Part.Edge(Part.Arc(startPoint, midPoint, endPoint)) # It's a Helix @@ -255,7 +259,7 @@ class PathGeom: return None @classmethod - def wireForPath(cls, path, startPoint = FreeCAD.Vector(0, 0, 0)): + def wireForPath(cls, path, startPoint = Vector(0, 0, 0)): """(path, [startPoint=Vector(0,0,0)]) Returns a wire representing all move commands found in the given path.""" edges = [] @@ -271,7 +275,7 @@ class PathGeom: return (Part.Wire(edges), rapid) @classmethod - def wiresForPath(cls, path, startPoint = FreeCAD.Vector(0, 0, 0)): + def wiresForPath(cls, path, startPoint = Vector(0, 0, 0)): """(path, [startPoint=Vector(0,0,0)]) Returns a collection of wires, each representing a continuous cutting Path in path.""" wires = [] @@ -306,7 +310,7 @@ class PathGeom: #print("- (%.2f, %.2f, %.2f) - (%.2f, %.2f, %.2f): %.2f:%.2f" % (edge.Vertexes[0].X, edge.Vertexes[0].Y, edge.Vertexes[0].Z, edge.Vertexes[1].X, edge.Vertexes[1].Y, edge.Vertexes[1].Z, z0, z1)) #print("- %s -> %s" % (cmd, command)) - return cls.edgeForCmd(command, FreeCAD.Vector(p1.x, p1.y, z0)) + return cls.edgeForCmd(command, Vector(p1.x, p1.y, z0)) @classmethod @@ -316,9 +320,9 @@ class PathGeom: p1 = edge.valueAt(edge.FirstParameter) p2 = edge.valueAt((edge.FirstParameter + edge.LastParameter)/2) p3 = edge.valueAt(edge.LastParameter) - p01 = FreeCAD.Vector(p1.x, p1.y, z) - p02 = FreeCAD.Vector(p2.x, p2.y, z) - p03 = FreeCAD.Vector(p3.x, p3.y, z) + p01 = Vector(p1.x, p1.y, z) + p02 = Vector(p2.x, p2.y, z) + p03 = Vector(p3.x, p3.y, z) return Part.Edge(Part.Arc(p01, p02, p03)) @classmethod @@ -364,6 +368,6 @@ class PathGeom: else: # it's a helix arc = cls.helixToArc(edge, 0) - aes = cls.splitArcAt(arc, FreeCAD.Vector(pt.x, pt.y, 0)) + aes = cls.splitArcAt(arc, Vector(pt.x, pt.y, 0)) return [cls.arcToHelix(aes[0], p1.z, p2.z), cls.arcToHelix(aes[1], p2.z, p3.z)] From 7a9c268f0165955f6f67fe3265c4893948699f96 Mon Sep 17 00:00:00 2001 From: Alexander Gryson Date: Fri, 23 Dec 2016 23:53:36 +0100 Subject: [PATCH 15/19] Align Arch Workench icons to Tango --- .../Arch/Resources/icons/ArchWorkbench.svg | 536 ++++++++++-- src/Mod/Arch/Resources/icons/Arch_3Views.svg | 117 ++- src/Mod/Arch/Resources/icons/Arch_Add.svg | 117 ++- src/Mod/Arch/Resources/icons/Arch_Axis.svg | 295 ++++++- .../Arch/Resources/icons/Arch_Axis_Tree.svg | 282 +++++- .../Arch/Resources/icons/Arch_Bimserver.svg | 168 ++-- .../Arch/Resources/icons/Arch_Building.svg | 180 +++- .../Resources/icons/Arch_Building_Tree.svg | 176 +++- src/Mod/Arch/Resources/icons/Arch_Cell.svg | 184 +++- .../Arch/Resources/icons/Arch_Cell_Tree.svg | 180 +++- src/Mod/Arch/Resources/icons/Arch_Check.svg | 188 ++-- .../Arch/Resources/icons/Arch_CloseHoles.svg | 103 ++- .../Arch/Resources/icons/Arch_Component.svg | 149 +++- .../Arch/Resources/icons/Arch_CutPlane.svg | 335 ++++---- .../Arch/Resources/icons/Arch_Equipment.svg | 564 ++++++------ .../Resources/icons/Arch_Equipment_Clone.svg | 666 ++++++++++---- .../Resources/icons/Arch_Equipment_Tree.svg | 542 +++++++++--- src/Mod/Arch/Resources/icons/Arch_Fixture.svg | 175 +++- src/Mod/Arch/Resources/icons/Arch_Floor.svg | 151 +++- .../Arch/Resources/icons/Arch_Floor_Tree.svg | 132 ++- src/Mod/Arch/Resources/icons/Arch_Frame.svg | 336 ++++++-- .../Arch/Resources/icons/Arch_Frame_Tree.svg | 813 ++++++++++++++++-- .../Arch/Resources/icons/Arch_Material.svg | 117 ++- .../Resources/icons/Arch_Material_Group.svg | 256 +++++- .../Arch/Resources/icons/Arch_MergeWalls.svg | 566 ++++++------ .../Arch/Resources/icons/Arch_MeshToShape.svg | 393 +++++++-- src/Mod/Arch/Resources/icons/Arch_Panel.svg | 96 ++- .../Arch/Resources/icons/Arch_Panel_Clone.svg | 443 +++++----- .../Arch/Resources/icons/Arch_Panel_Cut.svg | 89 +- .../Arch/Resources/icons/Arch_Panel_Sheet.svg | 166 +++- .../Arch/Resources/icons/Arch_Panel_Tree.svg | 84 +- src/Mod/Arch/Resources/icons/Arch_Pipe.svg | 244 +++++- .../Resources/icons/Arch_PipeConnector.svg | 250 ++++-- .../Arch/Resources/icons/Arch_Pipe_Tree.svg | 229 ++++- src/Mod/Arch/Resources/icons/Arch_Rebar.svg | 333 +++++-- .../Arch/Resources/icons/Arch_Rebar_Tree.svg | 328 ++++++- src/Mod/Arch/Resources/icons/Arch_Remove.svg | 151 ++-- .../Arch/Resources/icons/Arch_RemoveShape.svg | 253 ++++-- src/Mod/Arch/Resources/icons/Arch_Roof.svg | 70 +- .../Arch/Resources/icons/Arch_Roof_Tree.svg | 77 +- .../Arch/Resources/icons/Arch_Schedule.svg | 93 +- .../Resources/icons/Arch_SectionPlane.svg | 146 +++- .../icons/Arch_SectionPlane_Tree.svg | 90 +- .../icons/Arch_SelectNonManifold.svg | 211 ++++- src/Mod/Arch/Resources/icons/Arch_Site.svg | 104 ++- .../Arch/Resources/icons/Arch_Site_Tree.svg | 104 ++- src/Mod/Arch/Resources/icons/Arch_Space.svg | 338 ++++++-- .../Arch/Resources/icons/Arch_Space_Tree.svg | 332 ++++++- .../Arch/Resources/icons/Arch_SplitMesh.svg | 123 ++- src/Mod/Arch/Resources/icons/Arch_Stairs.svg | 290 +++++-- .../Arch/Resources/icons/Arch_Stairs_Tree.svg | 239 ++++- .../Resources/icons/Arch_StructuralSystem.svg | 444 ++++++---- .../icons/Arch_StructuralSystem_Tree.svg | 428 +++++---- .../Arch/Resources/icons/Arch_Structure.svg | 366 +++++--- .../Resources/icons/Arch_Structure_Clone.svg | 629 ++++++++++---- .../Resources/icons/Arch_Structure_Tree.svg | 389 +++++++-- src/Mod/Arch/Resources/icons/Arch_Survey.svg | 257 ++++-- .../icons/Arch_ToggleIfcBrepFlag.svg | 144 +++- .../Arch/Resources/icons/Arch_ToggleSubs.svg | 136 ++- src/Mod/Arch/Resources/icons/Arch_Wall.svg | 410 +++++---- .../Arch/Resources/icons/Arch_Wall_Tree.svg | 340 ++++---- .../icons/Arch_Wall_Tree_Assembly.svg | 760 ++++++++++------ src/Mod/Arch/Resources/icons/Arch_Window.svg | 209 ++++- .../Resources/icons/Arch_Window_Clone.svg | 428 ++++++--- .../Arch/Resources/icons/Arch_Window_Tree.svg | 200 ++++- .../Arch/Resources/icons/preferences-arch.svg | 538 ++++++++++-- 66 files changed, 13590 insertions(+), 4692 deletions(-) diff --git a/src/Mod/Arch/Resources/icons/ArchWorkbench.svg b/src/Mod/Arch/Resources/icons/ArchWorkbench.svg index 94d5053294..17f77eb52c 100755 --- a/src/Mod/Arch/Resources/icons/ArchWorkbench.svg +++ b/src/Mod/Arch/Resources/icons/ArchWorkbench.svg @@ -7,16 +7,41 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="64px" height="64px" id="svg2816" version="1.1" - inkscape:version="0.48.3.1 r9886" - sodipodi:docname="preferences-arch.svg"> + inkscape:version="0.48.5 r10040" + sodipodi:docname="ArchWorkbench.svg"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="0" + inkscape:snap-global="true"> + + @@ -151,73 +485,123 @@ id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer"> - - - - - - - - - + sodipodi:type="arc" + style="fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter4088);opacity:0.4" + id="path4078" + sodipodi:cx="32" + sodipodi:cy="66" + sodipodi:rx="18" + sodipodi:ry="6" + d="m 50,66 a 18,6 0 1 1 -36,0 18,6 0 1 1 36,0 z" + transform="matrix(1.0558932,0.29582868,-1.0379352,0.73798301,66.735815,-14.52864)" /> + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_3Views.svg b/src/Mod/Arch/Resources/icons/Arch_3Views.svg index 3d877b4cd5..4f043da7ee 100644 --- a/src/Mod/Arch/Resources/icons/Arch_3Views.svg +++ b/src/Mod/Arch/Resources/icons/Arch_3Views.svg @@ -14,7 +14,7 @@ id="svg2985" version="1.1" inkscape:version="0.48.5 r10040" - sodipodi:docname="Arch_ToggleIfcBrepFlag.svg"> + sodipodi:docname="Arch_3Views.svg"> + inkscape:window-y="27" + inkscape:window-maximized="0" + inkscape:snap-global="true"> + + @@ -52,7 +61,7 @@ image/svg+xml - + @@ -67,46 +76,82 @@ sodipodi:nodetypes="ccccc" inkscape:connector-curvature="0" id="path3009-7-2" - d="m 18.878379,21.506082 -14.6157642,-8.452601 0,33.625092 14.4375222,8.931051 z" - style="color:#000000;fill:#00ff00;fill-opacity:1;fill-rule:nonzero;stroke:#001100;stroke-width:1.85461509;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + d="m 18.457681,20.828886 -14,-8 0,34 14,8 z" + style="color:#000000;fill:#73d216;fill-opacity:1;fill-rule:nonzero;stroke:#172a04;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + d="m 34.457681,12.828886 -16,8 0,34 16,-8 z" + style="color:#000000;fill:#4e9a06;fill-opacity:1;fill-rule:nonzero;stroke:#172a04;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + d="m 4.457681,12.828886 16,-7.9999997 14,7.9999997 -16,8 z" + style="color:#000000;fill:#8ae234;fill-opacity:1;fill-rule:nonzero;stroke:#172a04;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + + d="m 4.457681,12.828886 14,42" + style="color:#000000;fill:#00ff00;fill-opacity:1;fill-rule:nonzero;stroke:#172a04;stroke-width:1.85461509;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:nodetypes="cc" /> + + d="m 18.457681,54.828886 16,-42 -28.741113,-0.0445" + style="color:#000000;fill:none;stroke:#172a04;stroke-width:1.85461509;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:nodetypes="ccc" /> + + + + + + + + + - - - diff --git a/src/Mod/Arch/Resources/icons/Arch_Add.svg b/src/Mod/Arch/Resources/icons/Arch_Add.svg index 50e5226e58..f4dd7a3761 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Add.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Add.svg @@ -14,8 +14,8 @@ height="64px" id="svg2985" version="1.1" - inkscape:version="0.48.1 r9760" - sodipodi:docname="New document 2"> + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_Add.svg"> + + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="1"> + + @@ -87,7 +150,7 @@ image/svg+xml - + @@ -96,14 +159,30 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> - + sodipodi:type="arc" + style="opacity:0.10824741;fill:url(#radialGradient3071);fill-opacity:1;stroke:none" + id="path1361" + sodipodi:cx="22.958872" + sodipodi:cy="34.94062" + sodipodi:rx="10.31934" + sodipodi:ry="2.320194" + d="m 33.278212,34.94062 a 10.31934,2.320194 0 1 1 -20.63868,0 10.31934,2.320194 0 1 1 20.63868,0 z" + transform="matrix(2.9071627,0,0,2.1549921,-34.745177,-18.296761)" /> + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Axis.svg b/src/Mod/Arch/Resources/icons/Arch_Axis.svg index 9e95231ebf..07fab02094 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Axis.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Axis.svg @@ -14,10 +14,82 @@ height="64px" id="svg2985" version="1.1" - inkscape:version="0.48.1 r9760" + inkscape:version="0.48.5 r10040" sodipodi:docname="Arch_Axis.svg"> + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:snap-bbox="true" + inkscape:snap-nodes="true"> + + @@ -119,7 +245,7 @@ image/svg+xml - + @@ -127,15 +253,134 @@ id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer"> + + + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Axis_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Axis_Tree.svg index d55c9cef5a..3fbfe6d70b 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Axis_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Axis_Tree.svg @@ -14,10 +14,82 @@ height="64px" id="svg2985" version="1.1" - inkscape:version="0.48.1 r9760" + inkscape:version="0.48.5 r10040" sodipodi:docname="Arch_Axis.svg"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:snap-bbox="true" + inkscape:snap-nodes="true"> + + @@ -117,10 +253,134 @@ id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer"> + + + + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Bimserver.svg b/src/Mod/Arch/Resources/icons/Arch_Bimserver.svg index 33f916c47b..9388f9a6c7 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Bimserver.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Bimserver.svg @@ -10,12 +10,12 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="48.000000px" - height="48.000000px" + width="64" + height="64" id="svg249" sodipodi:version="0.32" inkscape:version="0.48.5 r10040" - sodipodi:docname="drawing-draft-view.svg" + sodipodi:docname="Arch_Bimserver.svg" inkscape:export-filename="/home/jimmac/gfx/novell/pdes/trunk/docs/BIGmime-text.png" inkscape:export-xdpi="240.00000" inkscape:export-ydpi="240.00000" @@ -103,7 +103,7 @@ fx="24.306795" fy="42.07798" r="15.821514" - gradientTransform="matrix(1.000000,0.000000,0.000000,0.284916,-6.310056e-16,30.08928)" + gradientTransform="matrix(1,0,0,0.284916,0,30.08928)" gradientUnits="userSpaceOnUse" /> @@ -118,11 +118,11 @@ + inkscape:object-nodes="true" + inkscape:snap-global="false"> + + @@ -363,7 +372,7 @@ image/svg+xml - + Jakub Steiner @@ -393,62 +402,103 @@ + inkscape:groupmode="layer" + transform="translate(0,16)" /> + style="display:inline" + transform="translate(0,16)"> + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccscc" /> + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" /> + + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + + + + + + style="fill:none;stroke:#729fcf;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 9,24.046703 0,25.84121 11.962638,7.429667 0.0467,-28.008784 z" + id="path3071" + inkscape:connector-curvature="0" + transform="translate(0,-16)" + sodipodi:nodetypes="ccccc" /> + style="fill:none;stroke:#3465a4;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 25.032796,29.635675 -0.03471,28.465212 6.008155,-2.417611 0,-27.313912 z" + id="path3073" + inkscape:connector-curvature="0" + transform="translate(0,-16)" + sodipodi:nodetypes="ccccc" /> + style="fill:none;stroke:#3465a4;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" + d="M 45.059974,9.5545658 44.987902,33.797829 49.01585,31.791204 48.978488,8.5871539 z" + id="path3073-6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + style="display:inline" + transform="translate(0,16)" /> diff --git a/src/Mod/Arch/Resources/icons/Arch_Building.svg b/src/Mod/Arch/Resources/icons/Arch_Building.svg index 7d3d158df0..98cae6c146 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Building.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Building.svg @@ -14,10 +14,58 @@ height="64px" id="svg2816" version="1.1" - inkscape:version="0.47 r22583" - sodipodi:docname="Arch_Building.svg"> + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_Building_Tree.svg"> + + + + + + + + + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:snap-global="false"> + + @@ -390,25 +467,58 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> + style="fill:url(#linearGradient3833);fill-opacity:1;stroke:#302b00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="M 61,21 61,43 37,61 37,29 z" + id="path2896" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + style="fill:url(#linearGradient3843);fill-opacity:1;stroke:#302b00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 17,55 8,1 0,-23 -8,0 z" + id="path3679" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + style="fill:#c4a000;fill-opacity:1;stroke:#302b00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 13,57 4,-2 0,-22 -4,0 0,24" + id="path3677" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + + + style="fill:url(#linearGradient3823);stroke:#fce94f;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1" + d="M 24.671359,8.7088083 46.158966,7.0120452 57.532679,20.082522 37.735867,26.651784 z" + id="path3815" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Building_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Building_Tree.svg index 2e9af5f8ee..9bde40660f 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Building_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Building_Tree.svg @@ -14,10 +14,58 @@ height="64px" id="svg2816" version="1.1" - inkscape:version="0.48.1 r9760" - sodipodi:docname="Arch_Building.svg"> + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_Building_Tree.svg"> + + + + + + + + + + + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="0" + inkscape:snap-global="false"> + + @@ -363,7 +458,7 @@ image/svg+xml - + @@ -372,25 +467,58 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> + style="fill:url(#linearGradient3833);fill-opacity:1;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="M 61,21 61,43 37,61 37,29 z" + id="path2896" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + style="fill:url(#linearGradient3843);fill-opacity:1;stroke:#302b00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 17,55 8,1 0,-23 -8,0 z" + id="path3679" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + style="fill:#888a85;fill-opacity:1;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 13,57 4,-2 0,-22 -4,0 0,24" + id="path3677" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + + + style="fill:url(#linearGradient3823);fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 24.671359,8.7088083 46.158966,7.0120452 57.532679,20.082522 37.735867,26.651784 z" + id="path3815" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Cell.svg b/src/Mod/Arch/Resources/icons/Arch_Cell.svg index 3827522d9d..5d6b6b24b1 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Cell.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Cell.svg @@ -14,10 +14,46 @@ height="64px" id="svg2816" version="1.1" - inkscape:version="0.47 r22583" + inkscape:version="0.48.5 r10040" sodipodi:docname="Arch_Cell.svg"> + + + + + + + + + + + + + + + + inkscape:snap-global="true"> + + @@ -422,54 +493,77 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> + style="color:#000000;fill:#c4a000;fill-opacity:1;fill-rule:nonzero;stroke:#302b00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 41,5 41,15 36,7 z" + id="path3775" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + - + sodipodi:nodetypes="ccccccccccc" + inkscape:connector-curvature="0" /> + + + + style="fill:url(#linearGradient3844);fill-opacity:1;stroke:#302b00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="M 29,9 9,15 9,53 29,45 z m -6,8 0,16 -8,2 0,-16 z" + id="path3771" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccc" /> - + style="color:#000000;fill:#fce94f;fill-opacity:1;fill-rule:nonzero;stroke:#302b00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 35,21 0,38 6,2 0,-38 z" + id="path3830" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + style="fill:none;stroke:#edd400;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 43.004994,24.2854 -0.0054,33.18255 16.00435,-9.596856 L 59,17.092573 z" + id="path3048" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> - + style="fill:none;stroke:#edd400;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 26.998267,11.595971 -15.994265,4.924325 0.0036,33.648898 15.991009,-6.557301 z" + id="path3836" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> diff --git a/src/Mod/Arch/Resources/icons/Arch_Cell_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Cell_Tree.svg index 1c0dd4d0d6..d81656bb10 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Cell_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Cell_Tree.svg @@ -14,10 +14,46 @@ height="64px" id="svg2816" version="1.1" - inkscape:version="0.48.1 r9760" + inkscape:version="0.48.5 r10040" sodipodi:docname="Arch_Cell.svg"> + + + + + + + + + + + + + + + + inkscape:window-width="781" + inkscape:window-height="426" + inkscape:window-x="50" + inkscape:window-y="77" + inkscape:window-maximized="0" + inkscape:snap-global="true"> + + @@ -422,46 +493,77 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> + style="color:#000000;fill:#babdb6;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 41,5 41,15 36,7 z" + id="path3775" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + + sodipodi:nodetypes="ccccccccccc" + inkscape:connector-curvature="0" /> + + + - + style="fill:url(#linearGradient3844);fill-opacity:1;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="M 29,9 9,15 9,53 29,45 z m -6,8 0,16 -8,2 0,-16 z" + id="path3771" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccc" /> + style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 35,21 0,38 6,2 0,-38 z" + id="path3830" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + style="fill:none;stroke:#d3d7cf;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 43.004994,24.2854 -0.0054,33.18255 16.00435,-9.596856 L 59,17.092573 z" + id="path3048" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + style="fill:none;stroke:#d3d7cf;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 26.998267,11.595971 -15.994265,4.924325 0.0036,33.648898 15.991009,-6.557301 z" + id="path3836" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> diff --git a/src/Mod/Arch/Resources/icons/Arch_Check.svg b/src/Mod/Arch/Resources/icons/Arch_Check.svg index 61be1a1b4a..1410444af2 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Check.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Check.svg @@ -14,22 +14,47 @@ height="64px" id="svg2980" sodipodi:version="0.32" - inkscape:version="0.48.3.1 r9886" - sodipodi:docname="Arch_CloseHoles.svg" + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_Component.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1"> + inkscape:collect="always" + id="linearGradient3805"> + id="stop3807" /> + id="stop3809" /> + + + + + + + + @@ -42,6 +67,17 @@ offset="1" style="stop-color:#002795;stop-opacity:1;" /> + - - - + inkscape:collect="always" + xlink:href="#linearGradient3777" + id="linearGradient3783" + x1="53.896763" + y1="51.179787" + x2="47.502235" + y2="21.83742" + gradientUnits="userSpaceOnUse" /> + inkscape:collect="always" + xlink:href="#linearGradient3805" + id="linearGradient3811" + x1="49.058823" + y1="60.823528" + x2="34.941177" + y2="23.17647" + gradientUnits="userSpaceOnUse" /> + inkscape:window-y="27" + inkscape:window-maximized="0" + inkscape:snap-global="true" + inkscape:snap-bbox="true"> + + @@ -126,37 +170,59 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> + sodipodi:nodetypes="ccccc" /> + style="fill:url(#linearGradient3783);stroke:#0b1521;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;fill-opacity:1" + d="M 61,15 61,51 37,61 37,23 z" + id="path2995" + inkscape:connector-curvature="0" /> + d="M 3,17 37,23 37,61 3,55 z" + style="fill:url(#linearGradient3773);fill-opacity:1;fill-rule:evenodd;stroke:#0b1521;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + + + style="fill:#73d216;fill-opacity:1;stroke:#172a04;stroke-width:2.10526322999999982;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.59999999999999998" + id="path3785" + sodipodi:cx="42" + sodipodi:cy="42" + sodipodi:rx="20" + sodipodi:ry="20" + d="m 62,42 a 20,20 0 1 1 -40,0 20,20 0 1 1 40,0 z" + transform="matrix(0.95,0,0,0.95,2.1000001,2.1000001)" /> + + sodipodi:nodetypes="ccccccc" /> diff --git a/src/Mod/Arch/Resources/icons/Arch_CloseHoles.svg b/src/Mod/Arch/Resources/icons/Arch_CloseHoles.svg index c0fcbf1dd3..03cb6409ef 100644 --- a/src/Mod/Arch/Resources/icons/Arch_CloseHoles.svg +++ b/src/Mod/Arch/Resources/icons/Arch_CloseHoles.svg @@ -14,12 +14,36 @@ height="64px" id="svg2980" sodipodi:version="0.32" - inkscape:version="0.48.3.1 r9886" - sodipodi:docname="Tree_Part.svg" + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_CloseHoles.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1"> + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="0" + inkscape:snap-global="true"> + + @@ -88,7 +139,7 @@ image/svg+xml - + @@ -97,21 +148,33 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> + sodipodi:nodetypes="ccccc" /> + style="fill:url(#linearGradient3783);stroke:#0b1521;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;fill-opacity:1" + d="M 61,15 61,51 37,61 37,23 z" + id="path2995" + inkscape:connector-curvature="0" /> + d="M 3,17 37,23 37,61 3,55 z" + style="fill:url(#linearGradient3773);fill-opacity:1;fill-rule:evenodd;stroke:#280000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Component.svg b/src/Mod/Arch/Resources/icons/Arch_Component.svg index 82c6c6d7ac..bdd1c381eb 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Component.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Component.svg @@ -7,6 +7,7 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="64px" @@ -14,11 +15,47 @@ id="svg2980" sodipodi:version="0.32" inkscape:version="0.48.5 r10040" - sodipodi:docname="Tree_Part.svg" + sodipodi:docname="Arch_Check.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1"> + + + + + + + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="0" + inkscape:snap-global="true" + inkscape:snap-bbox="true"> + + @@ -73,24 +158,34 @@ id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer"> - - - - - + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_CutPlane.svg b/src/Mod/Arch/Resources/icons/Arch_CutPlane.svg index 5299b43cc4..6ecca1c180 100644 --- a/src/Mod/Arch/Resources/icons/Arch_CutPlane.svg +++ b/src/Mod/Arch/Resources/icons/Arch_CutPlane.svg @@ -14,12 +14,36 @@ height="64px" id="svg2860" sodipodi:version="0.32" - inkscape:version="0.48.4 r9939" + inkscape:version="0.48.5 r10040" sodipodi:docname="Arch_CutPlane.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1"> + + + + + + + + - - - - - - @@ -248,6 +212,24 @@ offset="1" style="stop-color:#002795;stop-opacity:1;" /> + + + inkscape:guide-bbox="true" + inkscape:snap-global="true"> + + @@ -278,7 +269,7 @@ image/svg+xml - + @@ -301,102 +292,114 @@ id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer"> - + id="g3950" + transform="translate(-8,6)"> + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" + id="path3854" + d="M 57,7 17,1 17,49 57,55 z" + style="fill:#cc0000;stroke:#280000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> - - - - + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" + id="path3854-6" + d="m 55,8.68 -35.978227,-5.3098667 0,43.8410037 36,5.484047 z" + style="fill:none;stroke:#ef2929;stroke-width:1.99999976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> - - - - - - + id="g4023" + style="stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none"> + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Equipment.svg b/src/Mod/Arch/Resources/icons/Arch_Equipment.svg index 0fdddefe78..fb85322408 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Equipment.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Equipment.svg @@ -15,11 +15,107 @@ id="svg2860" sodipodi:version="0.32" inkscape:version="0.48.5 r10040" - sodipodi:docname="Part_Box.svg" + sodipodi:docname="Arch_Equipment.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="0"> + + @@ -758,7 +725,7 @@ image/svg+xml - + @@ -767,130 +734,81 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> + sodipodi:nodetypes="ccccc" /> + sodipodi:nodetypes="ccccc" /> + sodipodi:nodetypes="ccccc" /> + sodipodi:nodetypes="ccccc" /> + style="fill:url(#linearGradient3936);stroke:#302b00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" + d="m 17,57 6,-4 0,-16 -6,-2 z" + id="path3908" + inkscape:connector-curvature="0" /> + style="fill:#edd400;stroke:#302b00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 27,51 0,-14 -4,-1 0,14 z" + id="path3910" + inkscape:connector-curvature="0" /> + style="fill:url(#linearGradient3968);stroke:#302b00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" + d="m 27,51 6,-4 0,-8 -6,-1 z" + id="path3912" + inkscape:connector-curvature="0" /> + sodipodi:nodetypes="ccccccccccc" /> + style="fill:#fce94f;stroke:#302b00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" + d="m 27,13 -6,-2 0,4 2,0 z" + id="path3904" + inkscape:connector-curvature="0" /> + sodipodi:nodetypes="ccccc" /> + sodipodi:nodetypes="ccccccccc" /> + style="fill:url(#linearGradient3952);stroke:#302b00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" + d="M 27,27 33,25 33,5 27,7 z" + id="path3898" + inkscape:connector-curvature="0" /> + style="fill:#c4a000;stroke:#302b00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 23,15 4,-2 0,4 -4,2 z" + id="path3902" + inkscape:connector-curvature="0" /> - - - - - - - + style="fill:url(#linearGradient3960);stroke:#302b00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" + d="m 49,53 -6,-2 0,-14 6,-2 z" + id="path3906" + inkscape:connector-curvature="0" /> diff --git a/src/Mod/Arch/Resources/icons/Arch_Equipment_Clone.svg b/src/Mod/Arch/Resources/icons/Arch_Equipment_Clone.svg index 2d5fca113a..f50eadaaa7 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Equipment_Clone.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Equipment_Clone.svg @@ -14,12 +14,141 @@ height="64px" id="svg2860" sodipodi:version="0.32" - inkscape:version="0.91 r13725" - sodipodi:docname="Arch_Equipment_Clone.svg" + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_Equipment.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + inkscape:collect="always" + xlink:href="#linearGradient3914" + id="linearGradient3920" + x1="26" + y1="56" + x2="12" + y2="10" + gradientUnits="userSpaceOnUse" /> + inkscape:collect="always" + xlink:href="#linearGradient3922" + id="linearGradient3928" + x1="50" + y1="51" + x2="43" + y2="31" + gradientUnits="userSpaceOnUse" /> + + + + + + + + + + id="stop3799" /> + id="stop3801" /> + + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:snap-bbox="true" + inkscape:snap-nodes="false"> + + + @@ -470,188 +798,152 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> + sodipodi:nodetypes="ccccc" /> + sodipodi:nodetypes="ccccc" /> + sodipodi:nodetypes="ccccc" /> + sodipodi:nodetypes="ccccc" /> + style="fill:url(#linearGradient3936);stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" + d="m 17,57 6,-4 0,-16 -6,-2 z" + id="path3908" + inkscape:connector-curvature="0" /> + style="fill:url(#linearGradient3984);stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" + d="m 27,51 0,-14 -4,-1 0,14 z" + id="path3910" + inkscape:connector-curvature="0" /> + style="fill:url(#linearGradient3968);stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" + d="m 27,51 6,-4 0,-8 -6,-1 z" + id="path3912" + inkscape:connector-curvature="0" /> + sodipodi:nodetypes="ccccccccccc" /> + style="fill:#ffffff;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" + d="m 27,13 -6,-2 0,4 2,0 z" + id="path3904" + inkscape:connector-curvature="0" /> + sodipodi:nodetypes="ccccc" /> + sodipodi:nodetypes="ccccccccc" /> + style="fill:url(#linearGradient3952);stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" + d="M 27,27 33,25 33,5 27,7 z" + id="path3898" + inkscape:connector-curvature="0" /> + style="fill:#babdb6;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 23,15 4,-2 0,4 -4,2 z" + id="path3902" + inkscape:connector-curvature="0" /> + style="fill:url(#linearGradient3960);stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" + d="m 49,53 -6,-2 0,-14 6,-2 z" + id="path3906" + inkscape:connector-curvature="0" /> + sodipodi:nodetypes="csscssscssscsscc" /> + sodipodi:nodetypes="cssscsssc" /> + sodipodi:nodetypes="csscssscssscsscc" /> + sodipodi:type="arc" + style="color:#000000;fill:#0b1521;fill-opacity:1;fill-rule:evenodd;stroke:#0b1521;stroke-width:1.96330417;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path3836" + sodipodi:cx="20.227272" + sodipodi:cy="55.409092" + sodipodi:rx="2.0454545" + sodipodi:ry="2.0454545" + d="m 22.272727,55.409092 a 2.0454545,2.0454545 0 1 1 -4.090909,0 2.0454545,2.0454545 0 1 1 4.090909,0 z" + transform="matrix(0.52702813,0,0,0.49225601,1.0432635,30.471199)" /> + style="fill:#0b1521;fill-opacity:1;stroke:#0b1521;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" + d="m 8.6505166,42.466022 6.8434874,-0.253147 c 0,0 -0.271029,1.39231 -1.964962,2.341612 -1.693933,0.949304 -3.320108,0.886016 -3.320108,0.886016 0,0 -0.4065437,-0.126573 -1.0163585,-1.329024 C 8.5827597,42.90903 8.6505166,42.466022 8.6505166,42.466022 z" + id="path3794" + inkscape:connector-curvature="0" /> + + - - - - - - - - - - - - + inkscape:transform-center-x="-0.81449848" /> + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Equipment_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Equipment_Tree.svg index 928ceaf469..81990683df 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Equipment_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Equipment_Tree.svg @@ -15,11 +15,140 @@ id="svg2860" sodipodi:version="0.32" inkscape:version="0.48.5 r10040" - sodipodi:docname="Arch_Equipment.svg" + sodipodi:docname="Arch_Equipment_Clone.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:snap-bbox="true" + inkscape:snap-nodes="false"> + + + @@ -449,124 +798,81 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> + sodipodi:nodetypes="ccccc" /> + sodipodi:nodetypes="ccccc" /> + sodipodi:nodetypes="ccccc" /> + sodipodi:nodetypes="ccccc" /> + style="fill:url(#linearGradient3936);stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" + d="m 17,57 6,-4 0,-16 -6,-2 z" + id="path3908" + inkscape:connector-curvature="0" /> + style="fill:url(#linearGradient3984);stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" + d="m 27,51 0,-14 -4,-1 0,14 z" + id="path3910" + inkscape:connector-curvature="0" /> + style="fill:url(#linearGradient3968);stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" + d="m 27,51 6,-4 0,-8 -6,-1 z" + id="path3912" + inkscape:connector-curvature="0" /> + sodipodi:nodetypes="ccccccccccc" /> + style="fill:#ffffff;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" + d="m 27,13 -6,-2 0,4 2,0 z" + id="path3904" + inkscape:connector-curvature="0" /> + sodipodi:nodetypes="ccccc" /> + sodipodi:nodetypes="ccccccccc" /> + style="fill:url(#linearGradient3952);stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" + d="M 27,27 33,25 33,5 27,7 z" + id="path3898" + inkscape:connector-curvature="0" /> + style="fill:#babdb6;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 23,15 4,-2 0,4 -4,2 z" + id="path3902" + inkscape:connector-curvature="0" /> - - - - - - + style="fill:url(#linearGradient3960);stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" + d="m 49,53 -6,-2 0,-14 6,-2 z" + id="path3906" + inkscape:connector-curvature="0" /> diff --git a/src/Mod/Arch/Resources/icons/Arch_Fixture.svg b/src/Mod/Arch/Resources/icons/Arch_Fixture.svg index ee11cd0a8d..942154516a 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Fixture.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Fixture.svg @@ -14,10 +14,34 @@ height="64px" id="svg2985" version="1.1" - inkscape:version="0.48.4 r9939" - sodipodi:docname="Arch_Add.svg"> + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_Fixture.svg"> + + + + + + + + + + + + + + + + + + + + inkscape:object-nodes="true" + inkscape:snap-global="true"> + + @@ -204,7 +291,7 @@ image/svg+xml - + @@ -212,32 +299,52 @@ id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer"> + + + + + + + + + - - - + sodipodi:nodetypes="cccccc" /> diff --git a/src/Mod/Arch/Resources/icons/Arch_Floor.svg b/src/Mod/Arch/Resources/icons/Arch_Floor.svg index c553bfdcad..70ab868dd3 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Floor.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Floor.svg @@ -14,10 +14,22 @@ height="64px" id="svg2816" version="1.1" - inkscape:version="0.48.1 r9760" - sodipodi:docname="Arch_Floor.svg"> + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_Floor_Tree.svg"> + + + + + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="1"> + + @@ -372,7 +434,7 @@ image/svg+xml - + @@ -381,26 +443,51 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> + d="M 3,9 3,53 51,53 61,43 61,9 z" + id="rect3005" + style="color:#000000;fill:url(#linearGradient3120);fill-opacity:1;fill-rule:evenodd;stroke:#302b00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccc" /> + style="fill:none;stroke:#fce94f;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 5,51 0,-40 54,0 0,32 -6,8 z" + id="path3096" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccc" /> - + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Floor_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Floor_Tree.svg index 5d9934bb6f..836ae762bd 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Floor_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Floor_Tree.svg @@ -14,8 +14,8 @@ height="64px" id="svg2816" version="1.1" - inkscape:version="0.48.1 r9760" - sodipodi:docname="Arch_Floor.svg"> + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_Floor_Tree.svg"> + + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="0"> + + @@ -363,7 +422,7 @@ image/svg+xml - + @@ -372,22 +431,51 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> + d="M 3,9 3,53 51,53 61,43 61,9 z" + id="rect3005" + style="color:#000000;fill:url(#linearGradient3120);fill-opacity:1;fill-rule:evenodd;stroke:#3f3f3f;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccc" /> + style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 5,51 0,-40 54,0 0,32 -6,8 z" + id="path3096" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccc" /> + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Frame.svg b/src/Mod/Arch/Resources/icons/Arch_Frame.svg index 8dc0b3347b..2fed688bde 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Frame.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Frame.svg @@ -14,10 +14,34 @@ height="64px" id="svg2985" version="1.1" - inkscape:version="0.48.4 r9939" - sodipodi:docname="Arch_Rebar.svg"> + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_Frame.svg"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="0"> + + @@ -1036,7 +1206,7 @@ image/svg+xml - + @@ -1044,56 +1214,100 @@ id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer"> - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Frame_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Frame_Tree.svg index b8aefdc7b9..9ab14f429f 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Frame_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Frame_Tree.svg @@ -14,10 +14,58 @@ height="64px" id="svg2985" version="1.1" - inkscape:version="0.48.4 r9939" + inkscape:version="0.48.5 r10040" sodipodi:docname="Arch_Frame.svg"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="1"> + + @@ -694,57 +1342,100 @@ id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer"> - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Material.svg b/src/Mod/Arch/Resources/icons/Arch_Material.svg index a9a3ec05cb..680aff1f62 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Material.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Material.svg @@ -20,15 +20,30 @@ id="defs2818"> + id="linearGradient3960"> + id="stop3962" /> + id="stop3964" /> + + + + + @@ -394,15 +409,6 @@ id="radialGradient4017" xlink:href="#linearGradient12512" inkscape:collect="always" /> - - + + + + + inkscape:snap-global="true"> + + @@ -485,26 +510,46 @@ inkscape:groupmode="layer"> + transform="matrix(1.383847,0,0,1.383847,-6.2515342,-23.29627)" /> + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Material_Group.svg b/src/Mod/Arch/Resources/icons/Arch_Material_Group.svg index 2bab17b3a5..ac8fd8c6f7 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Material_Group.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Material_Group.svg @@ -15,7 +15,7 @@ id="svg2816" version="1.1" inkscape:version="0.48.5 r10040" - sodipodi:docname="Arch_Material.svg"> + sodipodi:docname="Arch_Material_Group.svg"> + + + + + + + + + + + + + + + + + + + + + + + + + + + inkscape:snap-global="true"> + + @@ -587,7 +715,7 @@ image/svg+xml - + @@ -596,84 +724,144 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> + id="g4035" + transform="translate(-56,-2)"> + + + id="g4035-0" + transform="translate(-80,19)"> + + + id="g4035-2" + transform="translate(-50,28)"> + + diff --git a/src/Mod/Arch/Resources/icons/Arch_MergeWalls.svg b/src/Mod/Arch/Resources/icons/Arch_MergeWalls.svg index d96db03bac..9aa8a16176 100644 --- a/src/Mod/Arch/Resources/icons/Arch_MergeWalls.svg +++ b/src/Mod/Arch/Resources/icons/Arch_MergeWalls.svg @@ -13,7 +13,7 @@ height="64px" id="svg2816" version="1.1" - inkscape:version="0.48.3.1 r9886" + inkscape:version="0.48.5 r10040" sodipodi:docname="Arch_MergeWalls.svg"> @@ -116,9 +116,9 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="3.8890874" - inkscape:cx="46.100598" - inkscape:cy="35.196673" + inkscape:zoom="1.0201082" + inkscape:cx="-25.132601" + inkscape:cy="-0.89313018" inkscape:current-layer="layer1" showgrid="true" inkscape:document-units="px" @@ -130,11 +130,20 @@ inkscape:snap-bbox-midpoints="true" inkscape:object-paths="true" inkscape:object-nodes="true" - inkscape:window-width="1920" - inkscape:window-height="1057" + inkscape:window-width="800" + inkscape:window-height="837" inkscape:window-x="0" - inkscape:window-y="0" - inkscape:window-maximized="1" /> + inkscape:window-y="27" + inkscape:window-maximized="0" + inkscape:snap-global="true"> + + @@ -143,7 +152,7 @@ image/svg+xml - + @@ -151,272 +160,307 @@ id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer"> - - - - - - - - - - - - - - - - - - - - - + style="fill:#888a85;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 41,29 12,-6 0,-8 -12,6 z" + id="path3157-0" + inkscape:connector-curvature="0" /> - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + - + + + + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_MeshToShape.svg b/src/Mod/Arch/Resources/icons/Arch_MeshToShape.svg index e0f896b9d9..95fe788d66 100644 --- a/src/Mod/Arch/Resources/icons/Arch_MeshToShape.svg +++ b/src/Mod/Arch/Resources/icons/Arch_MeshToShape.svg @@ -7,23 +7,105 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="64px" height="64px" - id="svg2985" + id="svg3020" version="1.1" - inkscape:version="0.48.1 r9760" - sodipodi:docname="New document 2"> + inkscape:version="0.48.5 r10040" + sodipodi:docname="Mesh_Mesh_from_Shape.svg"> + Mesh_Mesh_from_Shape - + id="defs3022"> + + + + + + + + + + + + + + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="1"> + + + id="metadata3025"> image/svg+xml - + Mesh_Mesh_from_Shape + + Solid cube with arrow pointing towards a tesselated cube mesh + + + [agryson] Alexander Gryson + + + + + cube + mesh + solid + convert + + + http://www.freecadweb.org/wiki/index.php?title=Artwork + FreeCAD/src/Mod/Mesh/Gui/Resources/icons/Mesh_Mesh_from_Shape.svg + + + FreeCAD LGPL2+ + + + + + FreeCAD + + + Sat Dec 14 00:58:58 2013 +1100 + + + [jmaustpc] + + @@ -60,46 +187,208 @@ id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + sodipodi:nodetypes="cccccccc" /> + sodipodi:nodetypes="cccc" /> + sodipodi:nodetypes="cc" /> + + sodipodi:nodetypes="cc" /> - - diff --git a/src/Mod/Arch/Resources/icons/Arch_Panel.svg b/src/Mod/Arch/Resources/icons/Arch_Panel.svg index 09b00a2c1d..65074e58a4 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Panel.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Panel.svg @@ -7,16 +7,29 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="64px" height="64px" id="svg2985" version="1.1" - inkscape:version="0.48.4 r9939" - sodipodi:docname="Arch_StructuralSystem.svg"> + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_Panel.svg"> + + + + + + inkscape:object-nodes="true" + inkscape:snap-global="false"> + + @@ -117,7 +148,7 @@ image/svg+xml - + @@ -127,42 +158,45 @@ inkscape:groupmode="layer"> + style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#302b00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#302b00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - + + style="color:#000000;fill:#fce94f;fill-opacity:1;fill-rule:evenodd;stroke:#302b00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 7,3 -4,2 26,8 4,-2 z m 32,10 -4,2 22,6 4,-2 z" + id="rect3084-9" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccc" /> + sodipodi:nodetypes="ccccccccccccc" /> diff --git a/src/Mod/Arch/Resources/icons/Arch_Panel_Clone.svg b/src/Mod/Arch/Resources/icons/Arch_Panel_Clone.svg index 60271de3da..2c44d774ad 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Panel_Clone.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Panel_Clone.svg @@ -14,10 +14,22 @@ height="64px" id="svg2985" version="1.1" - inkscape:version="0.91 r13725" - sodipodi:docname="Arch_Panel_Clone.svg"> + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_Panel_Tree.svg"> + + + + + inkscape:collect="always" + xlink:href="#linearGradient3772" + id="linearGradient3778" + x1="30.995529" + y1="51.867905" + x2="22.622681" + y2="13.438423" + gradientUnits="userSpaceOnUse" /> + + + id="stop3799" /> + id="stop3801" /> - - - - - - - - - - + xlink:href="#linearGradient3962" + id="linearGradient3968" + x1="30" + y1="48" + x2="29" + y2="39" + gradientUnits="userSpaceOnUse" /> - + id="linearGradient3962"> + id="stop3964" /> + id="stop3966" /> + + + + + + + + + + + + inkscape:object-nodes="true" + inkscape:snap-global="true" + inkscape:snap-bbox="true" + inkscape:snap-nodes="false"> + + @@ -266,102 +256,131 @@ inkscape:groupmode="layer"> + style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccc" /> - - - - - - - - - - - - + sodipodi:nodetypes="ccccccccccccc" /> + + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Panel_Cut.svg b/src/Mod/Arch/Resources/icons/Arch_Panel_Cut.svg index 52048f7eba..7086bb0501 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Panel_Cut.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Panel_Cut.svg @@ -7,16 +7,41 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="64px" height="64px" id="svg2985" version="1.1" - inkscape:version="0.91 r13725" + inkscape:version="0.48.5 r10040" sodipodi:docname="Arch_Panel_Cut.svg"> + + + + + + + + + + + inkscape:object-nodes="true"> + + @@ -117,7 +168,7 @@ image/svg+xml - + @@ -132,8 +183,22 @@ id="g3237-6" style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + style="color:#000000;fill:url(#linearGradient3771);fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 3,3 0,58 24,0 0,-10 10,0 0,10 24.000001,0 0,-58 L 37,3 37,13 27,13 27,3 z m 6,6 12,0 0,4 c 0,4 2,6 6,6 l 10,0 c 4,0 6,-2 6,-6 l 0,-4 12,0 0,46 -12,0 0,-4 c 0,-4 -2,-6 -6,-6 l -10,0 c -4,0 -6,2 -6,6 l 0,4 -12,0 z" + id="path4207" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccccccccccccccccccccccc" /> + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Panel_Sheet.svg b/src/Mod/Arch/Resources/icons/Arch_Panel_Sheet.svg index b256ecfb16..7c9781d546 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Panel_Sheet.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Panel_Sheet.svg @@ -14,7 +14,7 @@ height="64px" id="svg2816" version="1.1" - inkscape:version="0.91 r13725" + inkscape:version="0.48.5 r10040" sodipodi:docname="Arch_Panel_Sheet.svg"> @@ -328,15 +328,6 @@ inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d" /> - + + + + + + + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="1"> + + @@ -442,7 +514,7 @@ image/svg+xml - + @@ -451,34 +523,40 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> + d="m 2.9999999,9 0,44 L 51,53 61,43 61,9 z" + id="rect3005" + style="color:#000000;fill:url(#linearGradient3075);fill-opacity:1;fill-rule:evenodd;stroke:#302b00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccc" /> + style="fill:none;stroke:#fce94f;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 4.9999999,51 0,-40 L 59,11 l 0,32 -6,8 z" + id="path3096" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccc" /> - - - - - + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Panel_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Panel_Tree.svg index 5b085c6054..c31ffef4a4 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Panel_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Panel_Tree.svg @@ -7,16 +7,29 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="64px" height="64px" id="svg2985" version="1.1" - inkscape:version="0.48.4 r9939" + inkscape:version="0.48.5 r10040" sodipodi:docname="Arch_Panel.svg"> + + + + + + inkscape:object-nodes="true" + inkscape:snap-global="false"> + + @@ -127,38 +158,45 @@ inkscape:groupmode="layer"> + style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccc" /> + sodipodi:nodetypes="ccccccccccccc" /> diff --git a/src/Mod/Arch/Resources/icons/Arch_Pipe.svg b/src/Mod/Arch/Resources/icons/Arch_Pipe.svg index 5b13d560e8..a4ec20d8f2 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Pipe.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Pipe.svg @@ -14,20 +14,42 @@ height="64px" id="svg2821" sodipodi:version="0.32" - inkscape:version="0.91 r13725" - sodipodi:docname="Part_Tube.svg" + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_Pipe.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1"> + + + + + + + + @@ -44,15 +66,15 @@ + gradientTransform="matrix(0.66695084,0.01171093,-0.07977187,4.543106,-31.231178,-423.39163)" /> - + + + + + + + + + + + + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="0" + inkscape:snap-global="false" + inkscape:snap-bbox="true" + inkscape:snap-nodes="false"> + + @@ -132,7 +249,7 @@ image/svg+xml - + @@ -147,22 +264,69 @@ sodipodi:nodetypes="ccscccc" id="path3727" d="m 5.286552,14.326369 c -0.232244,9.907966 0.02748,26.488757 -0.133929,36.272317 0,7.199781 9.212054,11.253999 21.040628,11.253999 11.82857,0 21.803122,-6.625506 21.803122,-11.253999 L 47.951773,14.50494 5.286592,14.326369 Z" - style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient3699);fill-opacity:1;fill-rule:evenodd;stroke:#7b5600;stroke-width:2.20000005;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" + style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient3699);fill-opacity:1;fill-rule:evenodd;stroke:#302b00;stroke-width:2.05323908999999993;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" + inkscape:connector-curvature="0" /> + + ry="11.614998" + d="m 47.879932,14.288702 c 0,6.414786 -9.539766,11.614998 -21.307664,11.614998 -11.767899,0 -21.3076653,-5.200212 -21.3076653,-11.614998 0,-6.4147862 9.5397663,-11.6149979 21.3076653,-11.6149979 11.767898,0 21.307664,5.2002117 21.307664,11.6149979 z" /> + ry="7.2277675" + d="m 39.831576,14.288702 c 0,3.991786 -5.936394,7.227767 -13.259308,7.227767 -7.322915,0 -13.259309,-3.235981 -13.259309,-7.227767 0,-3.991786 5.936394,-7.2277675 13.259309,-7.2277675 7.322914,0 13.259308,3.2359815 13.259308,7.2277675 z" /> + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_PipeConnector.svg b/src/Mod/Arch/Resources/icons/Arch_PipeConnector.svg index 5ee3c1d3b0..cfed2d8c01 100644 --- a/src/Mod/Arch/Resources/icons/Arch_PipeConnector.svg +++ b/src/Mod/Arch/Resources/icons/Arch_PipeConnector.svg @@ -14,12 +14,47 @@ height="64px" id="svg2821" sodipodi:version="0.32" - inkscape:version="0.91 r13725" - sodipodi:docname="Arch_Connector.svg" + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_PipeConnector.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1"> + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="1"> + + @@ -231,7 +358,7 @@ image/svg+xml - + @@ -239,24 +366,43 @@ id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer"> - - + width="24" + height="8" + x="37" + y="53" /> + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Pipe_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Pipe_Tree.svg index ed42cabb4c..e362507ab4 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Pipe_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Pipe_Tree.svg @@ -14,20 +14,42 @@ height="64px" id="svg2821" sodipodi:version="0.32" - inkscape:version="0.91 r13725" - sodipodi:docname="Arch_Pipe_Tree.svg" + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_Pipe.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1"> + + + + + + + + @@ -42,6 +64,17 @@ offset="1" style="stop-color:#ffaa00;stop-opacity:1;" /> + + + + + + + + + + + + + + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="0" + inkscape:snap-global="false" + inkscape:snap-bbox="true" + inkscape:snap-nodes="false"> + + @@ -114,22 +264,69 @@ sodipodi:nodetypes="ccscccc" id="path3727" d="m 5.286552,14.326369 c -0.232244,9.907966 0.02748,26.488757 -0.133929,36.272317 0,7.199781 9.212054,11.253999 21.040628,11.253999 11.82857,0 21.803122,-6.625506 21.803122,-11.253999 L 47.951773,14.50494 5.286592,14.326369 Z" - style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.20000005;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" + style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient3699);fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:2.05323908999999993;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" + inkscape:connector-curvature="0" /> + + ry="11.614998" + d="m 47.879932,14.288702 c 0,6.414786 -9.539766,11.614998 -21.307664,11.614998 -11.767899,0 -21.3076653,-5.200212 -21.3076653,-11.614998 0,-6.4147862 9.5397663,-11.6149979 21.3076653,-11.6149979 11.767898,0 21.307664,5.2002117 21.307664,11.6149979 z" /> + ry="7.2277675" + d="m 39.831576,14.288702 c 0,3.991786 -5.936394,7.227767 -13.259308,7.227767 -7.322915,0 -13.259309,-3.235981 -13.259309,-7.227767 0,-3.991786 5.936394,-7.2277675 13.259309,-7.2277675 7.322914,0 13.259308,3.2359815 13.259308,7.2277675 z" /> + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Rebar.svg b/src/Mod/Arch/Resources/icons/Arch_Rebar.svg index 5049353ac4..4321acfdb9 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Rebar.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Rebar.svg @@ -14,10 +14,79 @@ height="64px" id="svg2985" version="1.1" - inkscape:version="0.48.4 r9939" - sodipodi:docname="Arch_Axis.svg"> + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_Rebar.svg"> + + + + + + + + + + + + + + + + + + + + + + + + + gradientTransform="matrix(0.76307355,-0.59933979,0.60173176,0.76004024,38.095031,-48.22656)" + x1="-47.090748" + y1="48.182411" + x2="-47.046482" + y2="41.506298" /> + gradientTransform="matrix(0.75961823,-0.62787354,0.59900702,0.7962247,56.938596,-42.236467)" + x1="-46.284084" + y1="48.523933" + x2="-45.804276" + y2="40.519474" /> + gradientTransform="matrix(0.73381378,-0.61846048,0.57865858,0.78428772,76.44662,-31.907951)" + x1="-63.788338" + y1="48.997299" + x2="-62.86702" + y2="40.553333" /> + + + + + + + + + + + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:snap-bbox="true" + inkscape:snap-nodes="true" + inkscape:snap-global="false"> + + @@ -377,7 +567,7 @@ image/svg+xml - + @@ -386,55 +576,100 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> - + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + + + transform="matrix(0.56525353,-0.41335011,0.47999651,0.75985114,-10.827043,18.949139)" /> + transform="matrix(0.30023259,-0.36676447,0.39686301,0.49214378,-4.813901,24.421156)" /> + transform="matrix(0.56525353,-0.41335011,0.47999651,0.75985114,7.2182949,28.876511)" /> + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Rebar_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Rebar_Tree.svg index 3da5550961..81db1467a6 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Rebar_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Rebar_Tree.svg @@ -14,10 +14,79 @@ height="64px" id="svg2985" version="1.1" - inkscape:version="0.48.4 r9939" + inkscape:version="0.48.5 r10040" sodipodi:docname="Arch_Rebar.svg"> + + + + + + + + + + + + + + + + + + + + + + + + @@ -248,34 +317,34 @@ inkscape:collect="always" /> + gradientTransform="matrix(0.76307355,-0.59933979,0.60173176,0.76004024,38.095031,-48.22656)" + x1="-47.090748" + y1="48.182411" + x2="-47.046482" + y2="41.506298" /> + gradientTransform="matrix(0.75961823,-0.62787354,0.59900702,0.7962247,56.938596,-42.236467)" + x1="-46.284084" + y1="48.523933" + x2="-45.804276" + y2="40.519474" /> + gradientTransform="matrix(0.73381378,-0.61846048,0.57865858,0.78428772,76.44662,-31.907951)" + x1="-63.788338" + y1="48.997299" + x2="-62.86702" + y2="40.553333" /> + + + + + + + + + + + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:snap-bbox="true" + inkscape:snap-nodes="true" + inkscape:snap-global="false"> + + @@ -386,50 +576,100 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + + + transform="matrix(0.56525353,-0.41335011,0.47999651,0.75985114,-10.827043,18.949139)" /> + transform="matrix(0.30023259,-0.36676447,0.39686301,0.49214378,-4.813901,24.421156)" /> + transform="matrix(0.56525353,-0.41335011,0.47999651,0.75985114,7.2182949,28.876511)" /> + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Remove.svg b/src/Mod/Arch/Resources/icons/Arch_Remove.svg index e9b8e1c2d7..a9e819c2ba 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Remove.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Remove.svg @@ -14,7 +14,7 @@ height="64px" id="svg2985" version="1.1" - inkscape:version="0.48.1 r9760" + inkscape:version="0.48.5 r10040" sodipodi:docname="Arch_Add.svg"> @@ -59,58 +59,61 @@ offset="1" id="stop3797-0" /> + - + id="linearGradient2091"> + id="stop2093" /> + id="stop2095" /> + + + + + - - - - - + inkscape:window-y="27" + inkscape:window-maximized="1"> + + @@ -147,19 +158,31 @@ id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer"> - - + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_RemoveShape.svg b/src/Mod/Arch/Resources/icons/Arch_RemoveShape.svg index e1d6cbd1f2..fceada1425 100644 --- a/src/Mod/Arch/Resources/icons/Arch_RemoveShape.svg +++ b/src/Mod/Arch/Resources/icons/Arch_RemoveShape.svg @@ -7,14 +7,15 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="64px" height="64px" id="svg2985" version="1.1" - inkscape:version="0.48.1 r9760" - sodipodi:docname="Arch_ShapeToArch.svg"> + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_RemoveShape.svg"> + + + + + + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:snap-global="false"> + + @@ -52,7 +83,7 @@ image/svg+xml - + @@ -61,95 +92,191 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> - - - - + + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + + + + + + + + + + + + + + + + + + + + + style="fill:none;stroke:#729fcf;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 23.04099,60.356586 18.755834,49.997211" + id="path4042" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + diff --git a/src/Mod/Arch/Resources/icons/Arch_Roof.svg b/src/Mod/Arch/Resources/icons/Arch_Roof.svg index 0d72e27b02..6032033c82 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Roof.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Roof.svg @@ -14,10 +14,21 @@ height="64px" id="svg2816" version="1.1" - inkscape:version="0.48.3.1 r9886" - sodipodi:docname="Arch_Building.svg"> + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_Roof.svg"> + + + + @@ -355,9 +366,9 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="3.8890872" - inkscape:cx="31.431107" - inkscape:cy="14.197821" + inkscape:zoom="7.1856752" + inkscape:cx="47.021056" + inkscape:cy="47.014687" inkscape:current-layer="layer1" showgrid="true" inkscape:document-units="px" @@ -369,11 +380,20 @@ inkscape:snap-bbox-midpoints="true" inkscape:object-paths="true" inkscape:object-nodes="true" - inkscape:window-width="1280" - inkscape:window-height="758" + inkscape:window-width="1600" + inkscape:window-height="837" inkscape:window-x="0" - inkscape:window-y="19" - inkscape:window-maximized="0" /> + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:snap-global="false"> + + @@ -382,7 +402,7 @@ image/svg+xml - + @@ -391,16 +411,28 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Roof_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Roof_Tree.svg index 8b105168a9..5b81be52a1 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Roof_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Roof_Tree.svg @@ -14,18 +14,29 @@ height="64px" id="svg2816" version="1.1" - inkscape:version="0.48.3.1 r9886" + inkscape:version="0.48.5 r10040" sodipodi:docname="Arch_Roof.svg"> + + + + + style="stop-color:#fff110;stop-opacity:1;" /> @@ -331,11 +342,20 @@ + @@ -346,9 +366,9 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="3.8890872" - inkscape:cx="-12.923774" - inkscape:cy="14.197821" + inkscape:zoom="7.1856752" + inkscape:cx="47.021056" + inkscape:cy="58.147949" inkscape:current-layer="layer1" showgrid="true" inkscape:document-units="px" @@ -360,11 +380,20 @@ inkscape:snap-bbox-midpoints="true" inkscape:object-paths="true" inkscape:object-nodes="true" - inkscape:window-width="1280" - inkscape:window-height="758" + inkscape:window-width="1600" + inkscape:window-height="837" inkscape:window-x="0" - inkscape:window-y="19" - inkscape:window-maximized="0" /> + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:snap-global="false"> + + @@ -382,16 +411,28 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Schedule.svg b/src/Mod/Arch/Resources/icons/Arch_Schedule.svg index c7c414e094..68a0c4cf5c 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Schedule.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Schedule.svg @@ -15,19 +15,31 @@ id="svg2860" sodipodi:version="0.32" inkscape:version="0.48.5 r10040" - sodipodi:docname="Spreadsheet.svg" + sodipodi:docname="Arch_Schedule.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1"> + + + + @@ -83,13 +95,14 @@ id="perspective2868" /> + xlink:href="#linearGradient3771" + id="linearGradient3777" + x1="35" + y1="55" + x2="27" + y2="11" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.0175439,0,0,1.0212766,-0.05263158,-0.19148936)" /> + inkscape:window-y="27" + inkscape:window-maximized="1"> + + @@ -118,7 +139,7 @@ image/svg+xml - + @@ -127,37 +148,35 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> - + width="58.000004" + height="48" + x="3.0000002" + y="9" /> + diff --git a/src/Mod/Arch/Resources/icons/Arch_SectionPlane.svg b/src/Mod/Arch/Resources/icons/Arch_SectionPlane.svg index 1d3eb44d43..516fbe918b 100644 --- a/src/Mod/Arch/Resources/icons/Arch_SectionPlane.svg +++ b/src/Mod/Arch/Resources/icons/Arch_SectionPlane.svg @@ -7,16 +7,81 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="64px" height="64px" id="svg2985" version="1.1" - inkscape:version="0.48.1 r9760" - sodipodi:docname="New document 2"> + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_SectionPlane.svg"> + id="defs2987"> + + + + + + + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:snap-bbox="true" + inkscape:snap-nodes="true" + inkscape:snap-global="true"> + + @@ -44,7 +120,7 @@ image/svg+xml - + @@ -52,24 +128,34 @@ id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer"> + + transform="matrix(1.0742187,0,0,1.0742187,1.7265638,-1.4921872)" /> + sodipodi:type="arc" + style="color:#000000;fill:none;stroke:#fce94f;stroke-width:2.02371573000000016;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path2993-3" + sodipodi:cx="28.181818" + sodipodi:cy="27.454546" + sodipodi:rx="23.272728" + sodipodi:ry="23.272728" + d="m 51.454546,27.454546 a 23.272728,23.272728 0 1 1 -46.545456,0 23.272728,23.272728 0 1 1 46.545456,0 z" + transform="matrix(0.98828121,0,0,0.98828121,4.1484387,0.86718805)" /> - A + inkscape:transform-center-x="-4.3333321" + transform="matrix(0.84832121,0,0,1.4128225,21.0036,3.8535803)" /> + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_SectionPlane_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_SectionPlane_Tree.svg index d392badbb8..3b188d46cf 100644 --- a/src/Mod/Arch/Resources/icons/Arch_SectionPlane_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_SectionPlane_Tree.svg @@ -7,16 +7,39 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="64px" height="64px" id="svg2985" version="1.1" - inkscape:version="0.48.1 r9760" + inkscape:version="0.48.5 r10040" sodipodi:docname="Arch_SectionPlane.svg"> + id="defs2987"> + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:snap-bbox="true" + inkscape:snap-nodes="false"> + + @@ -54,17 +87,27 @@ inkscape:groupmode="layer"> + transform="matrix(1.2460937,0,0,1.2460937,-3.1171862,-2.2109372)" /> + - + A + transform="matrix(1.2,0,0,1.1818182,-5.9999999,-0.54545546)"> + + diff --git a/src/Mod/Arch/Resources/icons/Arch_SelectNonManifold.svg b/src/Mod/Arch/Resources/icons/Arch_SelectNonManifold.svg index eb39166fa1..c7e086c4bd 100644 --- a/src/Mod/Arch/Resources/icons/Arch_SelectNonManifold.svg +++ b/src/Mod/Arch/Resources/icons/Arch_SelectNonManifold.svg @@ -7,14 +7,15 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="64px" height="64px" id="svg3052" sodipodi:version="0.32" - inkscape:version="0.48.3.1 r9886" - sodipodi:docname="Tree_Mesh.svg" + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_SelectNonManifold.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1"> + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="0"> + + @@ -54,7 +97,7 @@ image/svg+xml - + @@ -66,28 +109,140 @@ id="g3884" transform="matrix(-0.2109556,0.9774957,0.8838524,0.1907462,-82.022362,-158.02055)"> + id="path2267" + sodipodi:cx="25.1875" + sodipodi:cy="41.625" + transform="matrix(-0.34490802,1.7675115,1.0422728,0.24876696,150.19488,118.26157)" + d="m 43.25,41.625 a 18.0625,5.875 0 1 1 -36.125,0 18.0625,5.875 0 1 1 36.125,0 z" + sodipodi:type="arc" + style="opacity:0.26704544;color:#000000;fill:url(#radialGradient3047);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + sodipodi:ry="5.875" + sodipodi:rx="18.0625" /> + style="fill:#8ae234;stroke:#172a04;stroke-width:2.10328221;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + d="m 141.5287,150.3403 12.30643,-10.63966 33.65676,5.77029 -14.68333,12.33517 z" + id="path2993" + inkscape:connector-curvature="0" /> + style="fill:#73d216;stroke:none" + d="m 141.52871,150.3403 1.37852,13.90595 29.32487,6.99918 0.57647,-13.43933 z" + id="path2995" + inkscape:connector-curvature="0" /> + style="fill:#4e9a06;stroke:none" + d="m 142.90723,164.24625 13.53037,14.5435 27.36988,6.53257 -11.57538,-14.07689 z" + id="path2997" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + style="fill:#73d216;stroke:#172a04;stroke-width:2.10328221;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + d="m 183.80747,185.32232 -11.19525,15.43052 -24.99298,-8.22808 8.81835,-13.73501 z" + id="path2999" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Site.svg b/src/Mod/Arch/Resources/icons/Arch_Site.svg index fac20eef01..8991c1190f 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Site.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Site.svg @@ -14,18 +14,30 @@ height="64px" id="svg2985" version="1.1" - inkscape:version="0.48.1 r9760" - sodipodi:docname="New document 2"> + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_Site.svg"> + + + + @@ -34,11 +46,12 @@ xlink:href="#linearGradient3794" id="linearGradient3867" gradientUnits="userSpaceOnUse" - x1="15.184971" - y1="23.848686" - x2="62.65237" - y2="23.848686" - gradientTransform="matrix(0.92896931,0,0,0.80145713,1.8407177,4.4432252)" /> + x1="32.714748" + y1="27.398352" + x2="38.997726" + y2="3.6523125" + gradientTransform="matrix(0.92896931,0,0,0.80145713,1.8407177,4.4432252)" + spreadMethod="reflect" /> + + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:snap-global="false"> + + @@ -109,7 +140,7 @@ image/svg+xml - + @@ -118,19 +149,40 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccc" /> + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" /> + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Site_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Site_Tree.svg index d43aee6133..c7bd658806 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Site_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Site_Tree.svg @@ -14,21 +14,44 @@ height="64px" id="svg2985" version="1.1" - inkscape:version="0.48.3.1 r9886" - sodipodi:docname="Arch_Site_Tree.svg"> + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_Site.svg"> + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:snap-global="false"> + + @@ -99,7 +140,7 @@ image/svg+xml - + @@ -108,19 +149,40 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccc" /> + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" /> + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Space.svg b/src/Mod/Arch/Resources/icons/Arch_Space.svg index 1e302c4dd5..a91dcb290f 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Space.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Space.svg @@ -14,12 +14,36 @@ height="64px" id="svg2860" sodipodi:version="0.32" - inkscape:version="0.48.4 r9939" - sodipodi:docname="Part_Box.svg" + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_Space.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1"> + + + + + + + + + + + + + + + + + + + inkscape:window-maximized="1" + inkscape:snap-global="false"> + + @@ -136,7 +223,7 @@ image/svg+xml - + @@ -145,58 +232,213 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> + + + sodipodi:nodetypes="ccccc" /> + + + + + + + + + + + + + id="g4035" + transform="translate(-64,10)"> + + + sodipodi:nodetypes="cc" /> + sodipodi:nodetypes="cc" /> + sodipodi:nodetypes="cc" /> + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Space_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Space_Tree.svg index 65ca3cf5e5..dcf63e9126 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Space_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Space_Tree.svg @@ -14,12 +14,36 @@ height="64px" id="svg2860" sodipodi:version="0.32" - inkscape:version="0.48.4 r9939" + inkscape:version="0.48.5 r10040" sodipodi:docname="Arch_Space.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1"> + + + + + + + + - + x1="37.758171" + y1="57.301327" + x2="21.860462" + y2="22.615412" /> + + + + + + + + + + inkscape:window-maximized="1" + inkscape:snap-global="false"> + + @@ -134,32 +210,214 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> + + style="fill:url(#linearGradient4153);fill-opacity:1;stroke:none" + d="m 29,4 0,39 30,6 0,-39 z" + id="path3888" + inkscape:connector-curvature="0" /> + sodipodi:nodetypes="ccccc" /> + sodipodi:nodetypes="ccccc" /> + sodipodi:nodetypes="ccccc" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_SplitMesh.svg b/src/Mod/Arch/Resources/icons/Arch_SplitMesh.svg index 840b29db0e..6923eb7b4d 100644 --- a/src/Mod/Arch/Resources/icons/Arch_SplitMesh.svg +++ b/src/Mod/Arch/Resources/icons/Arch_SplitMesh.svg @@ -13,8 +13,8 @@ height="64px" id="svg2985" version="1.1" - inkscape:version="0.48.1 r9760" - sodipodi:docname="Arch_MeshToShape.svg"> + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_SplitMesh.svg"> + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:snap-global="true"> + + @@ -52,7 +61,7 @@ image/svg+xml - + @@ -61,40 +70,110 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Stairs.svg b/src/Mod/Arch/Resources/icons/Arch_Stairs.svg index ef02ab7a34..73b0afdaf7 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Stairs.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Stairs.svg @@ -14,12 +14,24 @@ height="64px" id="svg2860" sodipodi:version="0.32" - inkscape:version="0.48.4 r9939" - sodipodi:docname="Arch_Strairs.svg" + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_Stairs.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1"> + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + inkscape:object-nodes="true" + inkscape:snap-global="true"> + + @@ -342,7 +414,7 @@ image/svg+xml - + @@ -350,40 +422,70 @@ id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer"> - + d="M 15,35 47,41 35,45 3,39 z" + style="fill:#fce94f;fill-opacity:1;fill-rule:evenodd;stroke:#302b00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + id="rect3520-3-7" + d="M 27,21 59,27 47,31 15,25 z" + style="fill:#fce94f;fill-opacity:1;fill-rule:evenodd;stroke:#302b00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - - + d="m 39,7 22,4 0,5 -2,1 -32,-6 z" + style="fill:#fce94f;fill-opacity:1;fill-rule:evenodd;stroke:#302b00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Stairs_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Stairs_Tree.svg index 11b5eaf120..99aa48f4a8 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Stairs_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Stairs_Tree.svg @@ -14,12 +14,24 @@ height="64px" id="svg2860" sodipodi:version="0.32" - inkscape:version="0.48.4 r9939" - sodipodi:docname="Arch_Strairs.svg" + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_Stairs.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + inkscape:object-nodes="true" + inkscape:snap-global="true"> + + @@ -284,40 +422,73 @@ id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer"> - + d="M 15,35 47,41 35,45 3,39 z" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + id="rect3520-3-7" + d="M 27,21 59,27 47,31 15,25 z" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - - + d="m 39,7 22,4 0,5 -2,1 -32,-6 z" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_StructuralSystem.svg b/src/Mod/Arch/Resources/icons/Arch_StructuralSystem.svg index fecc8252b3..35eade36e7 100644 --- a/src/Mod/Arch/Resources/icons/Arch_StructuralSystem.svg +++ b/src/Mod/Arch/Resources/icons/Arch_StructuralSystem.svg @@ -7,16 +7,65 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="64px" height="64px" id="svg2985" version="1.1" - inkscape:version="0.48.4 r9939" - sodipodi:docname="Arch_Structure.svg"> + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_StructuralSystem.svg"> + + + + + + + + + + + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="1"> + + @@ -101,7 +194,7 @@ image/svg+xml - + @@ -109,171 +202,182 @@ id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_StructuralSystem_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_StructuralSystem_Tree.svg index dd05a7d39c..5d0b0dcecc 100644 --- a/src/Mod/Arch/Resources/icons/Arch_StructuralSystem_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_StructuralSystem_Tree.svg @@ -7,16 +7,65 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="64px" height="64px" id="svg2985" version="1.1" - inkscape:version="0.48.4 r9939" + inkscape:version="0.48.5 r10040" sodipodi:docname="Arch_StructuralSystem.svg"> + + + + + + + + + + + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="1"> + + @@ -109,159 +202,182 @@ id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer"> - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Structure.svg b/src/Mod/Arch/Resources/icons/Arch_Structure.svg index 1f3fd7ede1..860b244bc7 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Structure.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Structure.svg @@ -7,16 +7,41 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="64px" height="64px" id="svg2985" version="1.1" - inkscape:version="0.48.1 r9760" + inkscape:version="0.48.5 r10040" sodipodi:docname="Arch_Structure.svg"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:snap-global="false" + inkscape:snap-bbox="true" + inkscape:snap-nodes="true"> + + @@ -80,7 +236,7 @@ image/svg+xml - + @@ -89,99 +245,117 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> - - - - - - - - - - - - - - - - + sodipodi:nodetypes="ccccc" /> + + + + + + + + + + + + + + + + + + + + + + + style="color:#000000;fill:url(#linearGradient3801);fill-opacity:1;fill-rule:evenodd;stroke:#302b00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible" + d="M 16,11 16,25 61,17 61,5 z" + sodipodi:nodetypes="ccccc" /> + style="color:#000000;fill:url(#linearGradient3809);fill-opacity:1;fill-rule:evenodd;stroke:#302b00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible" + d="M 3,9 16,11 16,25 3,23 z" + sodipodi:nodetypes="ccccc" /> + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Structure_Clone.svg b/src/Mod/Arch/Resources/icons/Arch_Structure_Clone.svg index 3b9f2659cd..04607698fe 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Structure_Clone.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Structure_Clone.svg @@ -14,10 +14,58 @@ height="64px" id="svg2985" version="1.1" - inkscape:version="0.91 r13725" - sodipodi:docname="Arch_Structure_Clone.svg"> + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_Structure_Tree.svg"> + + + + + + + + + + + + + + + + + inkscape:collect="always" + id="linearGradient3850-6"> + id="stop3852-2" /> + id="stop3854-9" /> - - + inkscape:collect="always" + id="linearGradient3858-2"> + id="stop3860-7" /> + id="stop3862-0" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:snap-global="true" + inkscape:snap-bbox="true" + inkscape:snap-nodes="false"> + + @@ -131,158 +344,204 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> - - - - - - - - - - - - - - - + sodipodi:nodetypes="ccccc" /> + + + + + + + + + + + + + + + + + + + + + + + style="color:#000000;fill:url(#linearGradient3801);fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible" + d="M 16,11 16,25 61,17 61,5 z" + sodipodi:nodetypes="ccccc" /> - - - - - - - - - - - - + style="color:#000000;fill:url(#linearGradient3809);fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible" + d="M 3,9 16,11 16,25 3,23 z" + sodipodi:nodetypes="ccccc" /> + + + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Structure_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Structure_Tree.svg index 6514d3de8e..174b5f341c 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Structure_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Structure_Tree.svg @@ -7,16 +7,65 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="64px" height="64px" id="svg2985" version="1.1" - inkscape:version="0.48.1 r9760" + inkscape:version="0.48.5 r10040" sodipodi:docname="Arch_Structure.svg"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:snap-global="false" + inkscape:snap-bbox="true" + inkscape:snap-nodes="true"> + + @@ -89,94 +269,123 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> - - - - - - - - - - - - - - - + sodipodi:nodetypes="ccccc" /> + + + + + + + + + + + + + + + + + + + + + + + style="color:#000000;fill:url(#linearGradient3801);fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible" + d="M 16,11 16,25 61,17 61,5 z" + sodipodi:nodetypes="ccccc" /> + style="color:#000000;fill:url(#linearGradient3809);fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible" + d="M 3,9 16,11 16,25 3,23 z" + sodipodi:nodetypes="ccccc" /> + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Survey.svg b/src/Mod/Arch/Resources/icons/Arch_Survey.svg index 3965f0350e..a00af945ea 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Survey.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Survey.svg @@ -14,10 +14,70 @@ height="64px" id="svg2985" version="1.1" - inkscape:version="0.48.4 r9939" - sodipodi:docname="New document 2"> + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_Survey.svg"> + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="0" + inkscape:snap-bbox="true" + inkscape:snap-nodes="false" + inkscape:snap-global="true"> + + @@ -236,7 +317,7 @@ image/svg+xml - + @@ -245,46 +326,46 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> - + + - diff --git a/src/Mod/Arch/Resources/icons/Arch_ToggleIfcBrepFlag.svg b/src/Mod/Arch/Resources/icons/Arch_ToggleIfcBrepFlag.svg index f3acb37e4b..f3d98a040f 100644 --- a/src/Mod/Arch/Resources/icons/Arch_ToggleIfcBrepFlag.svg +++ b/src/Mod/Arch/Resources/icons/Arch_ToggleIfcBrepFlag.svg @@ -7,16 +7,41 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="64px" height="64px" id="svg2985" version="1.1" - inkscape:version="0.48.4 r9939" - sodipodi:docname="Arch_MeshToShape.svg"> + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_ToggleIfcBrepFlag.svg"> + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:snap-global="false"> + + @@ -52,7 +104,7 @@ image/svg+xml - + @@ -61,46 +113,76 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> + + + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccc" /> + style="fill:url(#linearGradient3783);fill-opacity:1;stroke:#0b1521;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 29,27 0,34 16,0 0,-26 z" + id="path3009-7" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> - + + diff --git a/src/Mod/Arch/Resources/icons/Arch_ToggleSubs.svg b/src/Mod/Arch/Resources/icons/Arch_ToggleSubs.svg index 3de5fc3b58..0dbd5fa7fc 100644 --- a/src/Mod/Arch/Resources/icons/Arch_ToggleSubs.svg +++ b/src/Mod/Arch/Resources/icons/Arch_ToggleSubs.svg @@ -14,10 +14,34 @@ height="64px" id="svg2816" version="1.1" - inkscape:version="0.91 r13725" - sodipodi:docname="Arch_ToggleSubcomponentDisplay.svg"> + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_ToggleSubs.svg"> + + + + + + + + + + + inkscape:snap-global="false"> + + @@ -413,7 +463,7 @@ image/svg+xml - + @@ -422,52 +472,78 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> + + + width="6" + height="20" + x="39" + y="21" /> + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Wall.svg b/src/Mod/Arch/Resources/icons/Arch_Wall.svg index 77b155b856..1bfbda30bb 100755 --- a/src/Mod/Arch/Resources/icons/Arch_Wall.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Wall.svg @@ -13,8 +13,8 @@ height="64px" id="svg2816" version="1.1" - inkscape:version="0.48.3.1 r9886" - sodipodi:docname="Arch_Wall.svg"> + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_Wall_Tree.svg"> - - - - - - - - + inkscape:snap-global="true"> + + @@ -201,7 +152,7 @@ image/svg+xml - + @@ -209,159 +160,182 @@ id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer"> - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + style="fill:#fce94f;stroke:#302b00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="M 5,11 27,19 39,11 17,3 z" + id="path4312-1" + inkscape:connector-curvature="0" /> diff --git a/src/Mod/Arch/Resources/icons/Arch_Wall_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Wall_Tree.svg index 4eced1df39..5d7335ba5a 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Wall_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Wall_Tree.svg @@ -13,7 +13,7 @@ height="64px" id="svg2816" version="1.1" - inkscape:version="0.48.3.1 r9886" + inkscape:version="0.48.5 r10040" sodipodi:docname="Arch_Wall_Tree.svg"> @@ -116,9 +116,9 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="5.5000001" - inkscape:cx="16.555064" - inkscape:cy="36.41599" + inkscape:zoom="8" + inkscape:cx="25.737591" + inkscape:cy="23.828811" inkscape:current-layer="layer1" showgrid="true" inkscape:document-units="px" @@ -130,11 +130,20 @@ inkscape:snap-bbox-midpoints="true" inkscape:object-paths="true" inkscape:object-nodes="true" - inkscape:window-width="1920" - inkscape:window-height="1057" + inkscape:window-width="1600" + inkscape:window-height="837" inkscape:window-x="0" - inkscape:window-y="0" - inkscape:window-maximized="1" /> + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:snap-global="true"> + + @@ -151,159 +160,172 @@ id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer"> - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + style="fill:#ffffff;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="M 5,11 27,19 39,11 17,3 z" + id="path4312-1" + inkscape:connector-curvature="0" /> diff --git a/src/Mod/Arch/Resources/icons/Arch_Wall_Tree_Assembly.svg b/src/Mod/Arch/Resources/icons/Arch_Wall_Tree_Assembly.svg index 57db4d808b..265cd54ee0 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Wall_Tree_Assembly.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Wall_Tree_Assembly.svg @@ -13,8 +13,8 @@ height="64px" id="svg2816" version="1.1" - inkscape:version="0.48.3.1 r9886" - sodipodi:docname="Arch_Wall_Tree.svg"> + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_Wall_Tree_Assembly.svg"> + inkscape:window-y="27" + inkscape:window-maximized="0" + inkscape:snap-nodes="true" + inkscape:snap-global="false"> + + @@ -145,7 +153,7 @@ image/svg+xml - + @@ -153,263 +161,505 @@ id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer"> - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + style="fill:none;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 39,53 0,-5" + id="path4456-47" + inkscape:connector-curvature="0" /> + style="fill:none;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 44,47 0,-5" + id="path4456-6" + inkscape:connector-curvature="0" /> - - - - - - + style="fill:none;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 25,36 0,-5" + id="path4456-3" + inkscape:connector-curvature="0" /> + style="fill:none;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 11,31 0,-5" + id="path4456-1" + inkscape:connector-curvature="0" /> - - + sodipodi:nodetypes="cc" /> - + sodipodi:nodetypes="cc" /> - - - - + sodipodi:nodetypes="cc" /> - - + sodipodi:nodetypes="cc" /> + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Window.svg b/src/Mod/Arch/Resources/icons/Arch_Window.svg index 73a6c03756..69160440f1 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Window.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Window.svg @@ -14,10 +14,82 @@ height="64px" id="svg2816" version="1.1" - inkscape:version="0.48.1 r9760" + inkscape:version="0.48.5 r10040" sodipodi:docname="Arch_Window.svg"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="0" + inkscape:snap-global="true"> + + @@ -413,7 +547,7 @@ image/svg+xml - + @@ -422,71 +556,68 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> - + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccccccccccccccccc" /> + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> diff --git a/src/Mod/Arch/Resources/icons/Arch_Window_Clone.svg b/src/Mod/Arch/Resources/icons/Arch_Window_Clone.svg index a1bb541718..42ec5048cd 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Window_Clone.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Window_Clone.svg @@ -14,10 +14,82 @@ height="64px" id="svg2816" version="1.1" - inkscape:version="0.91 r13725" - sodipodi:docname="Arch_Window_Clone.svg"> + inkscape:version="0.48.5 r10040" + sodipodi:docname="Arch_Window_Tree.svg"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id="linearGradient3797"> + id="stop3799-3" /> + id="stop3801" /> + + + + + + + + + + + + inkscape:snap-global="true"> + + @@ -443,137 +631,151 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccccccccccccccccc" /> + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + + - - - - - - - - - - - - + sodipodi:nodetypes="csscssscssscsscc" /> + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Window_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Window_Tree.svg index 71a1c72fef..9d2894afa7 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Window_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Window_Tree.svg @@ -14,10 +14,82 @@ height="64px" id="svg2816" version="1.1" - inkscape:version="0.48.1 r9760" + inkscape:version="0.48.5 r10040" sodipodi:docname="Arch_Window.svg"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + inkscape:snap-global="true"> + + @@ -422,66 +556,68 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccccccccccccccccc" /> + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> diff --git a/src/Mod/Arch/Resources/icons/preferences-arch.svg b/src/Mod/Arch/Resources/icons/preferences-arch.svg index 94d5053294..f6675d1760 100755 --- a/src/Mod/Arch/Resources/icons/preferences-arch.svg +++ b/src/Mod/Arch/Resources/icons/preferences-arch.svg @@ -7,16 +7,41 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="64px" height="64px" id="svg2816" version="1.1" - inkscape:version="0.48.3.1 r9886" - sodipodi:docname="preferences-arch.svg"> + inkscape:version="0.48.5 r10040" + sodipodi:docname="ArchWorkbench.svg"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + inkscape:window-y="27" + inkscape:window-maximized="0" + inkscape:snap-global="true"> + + @@ -143,7 +477,7 @@ image/svg+xml - + @@ -151,73 +485,123 @@ id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer"> - - - - - - - - - + sodipodi:type="arc" + style="fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter4088);opacity:0.4" + id="path4078" + sodipodi:cx="32" + sodipodi:cy="66" + sodipodi:rx="18" + sodipodi:ry="6" + d="m 50,66 a 18,6 0 1 1 -36,0 18,6 0 1 1 36,0 z" + transform="matrix(1.0558932,0.29582868,-1.0379352,0.73798301,66.735815,-14.52864)" /> + + + + + + + + + + + + + + + + + + + + + From be410d6ebef540f7f22345121e00069ce3709753 Mon Sep 17 00:00:00 2001 From: Alexander Gryson Date: Sat, 31 Dec 2016 17:04:45 +0100 Subject: [PATCH 16/19] Update Arch Workbench icon metadata --- .../Arch/Resources/icons/ArchWorkbench.svg | 704 ++----- src/Mod/Arch/Resources/icons/Arch_3Views.svg | 193 +- src/Mod/Arch/Resources/icons/Arch_Add.svg | 227 +-- src/Mod/Arch/Resources/icons/Arch_Axis.svg | 454 +---- .../Arch/Resources/icons/Arch_Axis_Tree.svg | 454 +---- .../Arch/Resources/icons/Arch_Bimserver.svg | 584 ++---- .../Arch/Resources/icons/Arch_Building.svg | 609 ++---- .../Resources/icons/Arch_Building_Tree.svg | 609 ++---- src/Mod/Arch/Resources/icons/Arch_Cell.svg | 661 ++----- .../Arch/Resources/icons/Arch_Cell_Tree.svg | 661 ++----- src/Mod/Arch/Resources/icons/Arch_Check.svg | 273 +-- .../Arch/Resources/icons/Arch_CloseHoles.svg | 219 +-- .../Arch/Resources/icons/Arch_Component.svg | 232 +-- .../Arch/Resources/icons/Arch_CutPlane.svg | 482 ++--- .../Arch/Resources/icons/Arch_Equipment.svg | 946 ++-------- .../Resources/icons/Arch_Equipment_Clone.svg | 1100 ++--------- .../Resources/icons/Arch_Equipment_Tree.svg | 1018 ++-------- src/Mod/Arch/Resources/icons/Arch_Fixture.svg | 413 +---- src/Mod/Arch/Resources/icons/Arch_Floor.svg | 573 +----- .../Arch/Resources/icons/Arch_Floor_Tree.svg | 559 +----- src/Mod/Arch/Resources/icons/Arch_Frame.svg | 1500 +++------------ .../Arch/Resources/icons/Arch_Frame_Tree.svg | 1646 +++-------------- .../Arch/Resources/icons/Arch_Material.svg | 641 ++----- .../Resources/icons/Arch_Material_Group.svg | 989 ++-------- .../Arch/Resources/icons/Arch_MergeWalls.svg | 546 +----- .../Arch/Resources/icons/Arch_MeshToShape.svg | 412 +---- src/Mod/Arch/Resources/icons/Arch_Panel.svg | 246 +-- .../Arch/Resources/icons/Arch_Panel_Clone.svg | 457 +---- .../Arch/Resources/icons/Arch_Panel_Cut.svg | 248 +-- .../Arch/Resources/icons/Arch_Panel_Sheet.svg | 652 ++----- .../Arch/Resources/icons/Arch_Panel_Tree.svg | 246 +-- src/Mod/Arch/Resources/icons/Arch_Pipe.svg | 388 +--- .../Resources/icons/Arch_PipeConnector.svg | 474 +---- .../Arch/Resources/icons/Arch_Pipe_Tree.svg | 388 +--- src/Mod/Arch/Resources/icons/Arch_Rebar.svg | 780 ++------ .../Arch/Resources/icons/Arch_Rebar_Tree.svg | 780 ++------ src/Mod/Arch/Resources/icons/Arch_Remove.svg | 227 +-- .../Arch/Resources/icons/Arch_RemoveShape.svg | 341 +--- src/Mod/Arch/Resources/icons/Arch_Roof.svg | 510 +---- .../Arch/Resources/icons/Arch_Roof_Tree.svg | 510 +---- .../Arch/Resources/icons/Arch_Schedule.svg | 223 +-- .../Resources/icons/Arch_SectionPlane.svg | 220 +-- .../icons/Arch_SectionPlane_Tree.svg | 166 +- .../icons/Arch_SelectNonManifold.svg | 299 +-- src/Mod/Arch/Resources/icons/Arch_Site.svg | 229 +-- .../Arch/Resources/icons/Arch_Site_Tree.svg | 229 +-- src/Mod/Arch/Resources/icons/Arch_Space.svg | 520 +----- .../Arch/Resources/icons/Arch_Space_Tree.svg | 497 +---- .../Arch/Resources/icons/Arch_SplitMesh.svg | 221 +-- src/Mod/Arch/Resources/icons/Arch_Stairs.svg | 571 ++---- .../Arch/Resources/icons/Arch_Stairs_Tree.svg | 574 ++---- .../Resources/icons/Arch_StructuralSystem.svg | 453 +---- .../icons/Arch_StructuralSystem_Tree.svg | 453 +---- .../Arch/Resources/icons/Arch_Structure.svg | 424 +---- .../Resources/icons/Arch_Structure_Clone.svg | 637 ++----- .../Resources/icons/Arch_Structure_Tree.svg | 458 +---- src/Mod/Arch/Resources/icons/Arch_Survey.svg | 439 +---- .../icons/Arch_ToggleIfcBrepFlag.svg | 230 +-- .../Arch/Resources/icons/Arch_ToggleSubs.svg | 638 ++----- src/Mod/Arch/Resources/icons/Arch_Wall.svg | 399 +--- .../Arch/Resources/icons/Arch_Wall_Tree.svg | 389 +--- .../icons/Arch_Wall_Tree_Assembly.svg | 766 ++------ src/Mod/Arch/Resources/icons/Arch_Window.svg | 725 ++------ .../Resources/icons/Arch_Window_Clone.svg | 904 ++------- .../Arch/Resources/icons/Arch_Window_Tree.svg | 725 ++------ .../Arch/Resources/icons/preferences-arch.svg | 704 ++----- 66 files changed, 6505 insertions(+), 28540 deletions(-) diff --git a/src/Mod/Arch/Resources/icons/ArchWorkbench.svg b/src/Mod/Arch/Resources/icons/ArchWorkbench.svg index 17f77eb52c..5711d86082 100755 --- a/src/Mod/Arch/Resources/icons/ArchWorkbench.svg +++ b/src/Mod/Arch/Resources/icons/ArchWorkbench.svg @@ -1,607 +1,155 @@ - - - - - - + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - + + - + - + image/svg+xml - - + + + + + [triplus] + + + ArchWorkbench + 2016-02-26 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/ArchWorkbench.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - + + + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_3Views.svg b/src/Mod/Arch/Resources/icons/Arch_3Views.svg index 4f043da7ee..d3a88fd4ab 100644 --- a/src/Mod/Arch/Resources/icons/Arch_3Views.svg +++ b/src/Mod/Arch/Resources/icons/Arch_3Views.svg @@ -1,157 +1,64 @@ - - - - + + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_3Views + 2014-08-29 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_3Views.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - - - + + + + + + + + + + + + - - - + + + - + diff --git a/src/Mod/Arch/Resources/icons/Arch_Add.svg b/src/Mod/Arch/Resources/icons/Arch_Add.svg index f4dd7a3761..18db382fb5 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Add.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Add.svg @@ -1,188 +1,71 @@ - - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - + - - + + - + - + image/svg+xml - - + + + + + [wmayer] + + + Arch_Add + 2011-10-10 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Add.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Axis.svg b/src/Mod/Arch/Resources/icons/Arch_Axis.svg index 07fab02094..03d635a9d1 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Axis.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Axis.svg @@ -1,386 +1,110 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - - - - - + + + + + + - - + + - + - + image/svg+xml - - + + + + + [yorikvanhavre] + + + Arch_Axis + 2011-12-12 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Axis.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Axis_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Axis_Tree.svg index 3fbfe6d70b..6ac98b41e8 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Axis_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Axis_Tree.svg @@ -1,386 +1,110 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - - - - - + + + + + + - - + + - + - + image/svg+xml - - + + + + + [yorikvanhavre] + + + Arch_Axis_Tree + 2011-12-12 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Axis_Tree.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Bimserver.svg b/src/Mod/Arch/Resources/icons/Arch_Bimserver.svg index 9388f9a6c7..0236b3b18c 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Bimserver.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Bimserver.svg @@ -1,504 +1,140 @@ - - - - - - - + + + + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - - - - - - - - + + + + + + + + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - + + - + - + image/svg+xml - - + + - Jakub Steiner + [agryson] Alexander Gryson - http://jimmac.musichall.cz - + http://agryson.net + + Arch_Bimserver + 2015-02-20 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Bimserver.svg + + + FreeCAD LGPL2+ + + + + + [agryson] Alexander Gryson + + - - - - - - - + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - + + + - + diff --git a/src/Mod/Arch/Resources/icons/Arch_Building.svg b/src/Mod/Arch/Resources/icons/Arch_Building.svg index 98cae6c146..f549fd72aa 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Building.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Building.svg @@ -1,524 +1,125 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - - - - + + + + + + + - - + + - + - + image/svg+xml - - + + + + + [wmayer] + + + Arch_Building + 2011-10-10 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Building.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Building_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Building_Tree.svg index 9bde40660f..c6903c7c7d 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Building_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Building_Tree.svg @@ -1,524 +1,125 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - - - - + + + + + + + - - + + - + - + image/svg+xml - - + + + + + [yorikvanhavre] + + + Arch_Building_Tree + 2011-12-06 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Building_Tree.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Cell.svg b/src/Mod/Arch/Resources/icons/Arch_Cell.svg index 5d6b6b24b1..07805912d6 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Cell.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Cell.svg @@ -1,569 +1,130 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - + + - + - + image/svg+xml - - + + + + + [wmayer] + + + Arch_Cell + 2011-10-10 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Cell.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - - - - + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Cell_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Cell_Tree.svg index d81656bb10..da7b6f7241 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Cell_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Cell_Tree.svg @@ -1,569 +1,130 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - + + - + - + image/svg+xml - - + + + + + [yorikvanhavre] + + + Arch_Cell_Tree + 2011-12-06 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Cell_Tree.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - - - - + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Check.svg b/src/Mod/Arch/Resources/icons/Arch_Check.svg index 1410444af2..9ab7b88a12 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Check.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Check.svg @@ -1,228 +1,75 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - - - - + + + + + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Check + 2012-07-22 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Check.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_CloseHoles.svg b/src/Mod/Arch/Resources/icons/Arch_CloseHoles.svg index 03cb6409ef..4c46f27a5c 100644 --- a/src/Mod/Arch/Resources/icons/Arch_CloseHoles.svg +++ b/src/Mod/Arch/Resources/icons/Arch_CloseHoles.svg @@ -1,180 +1,67 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - - - + + + + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_CloseHoles + 2012-07-22 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_CloseHoles.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Component.svg b/src/Mod/Arch/Resources/icons/Arch_Component.svg index bdd1c381eb..5e260dd36c 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Component.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Component.svg @@ -1,191 +1,71 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - - - + + + + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Component + 2015-04-08 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Component.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_CutPlane.svg b/src/Mod/Arch/Resources/icons/Arch_CutPlane.svg index 6ecca1c180..eca21b6074 100644 --- a/src/Mod/Arch/Resources/icons/Arch_CutPlane.svg +++ b/src/Mod/Arch/Resources/icons/Arch_CutPlane.svg @@ -1,405 +1,137 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - + + - - + + - + - + image/svg+xml - - - + + + + + + [wood galaxy] + + + Arch_CutPlane + 2014-11-11 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_CutPlane.svg + + + FreeCAD LGPL2+ + + + + + [agryson] Alexander Gryson + + - - - - - - + + + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - - - + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Equipment.svg b/src/Mod/Arch/Resources/icons/Arch_Equipment.svg index fb85322408..6eb2aadde9 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Equipment.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Equipment.svg @@ -1,814 +1,220 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - - + + + + + - - - - - - - - + + + + + + + + - - - + + + - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - - - - + + + + + + + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Equipment + 2014-08-29 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Equipment.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Equipment_Clone.svg b/src/Mod/Arch/Resources/icons/Arch_Equipment_Clone.svg index f50eadaaa7..d35ce897c6 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Equipment_Clone.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Equipment_Clone.svg @@ -1,949 +1,243 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - - + + + + + - - - - - - - - + + + + + + + + - - - + + + - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - + - - - + + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Equipment_Clone + 2016-09-07 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Equipment_Clone.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Equipment_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Equipment_Tree.svg index 81990683df..bf710c67a3 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Equipment_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Equipment_Tree.svg @@ -1,878 +1,232 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - - + + + + + - - - - - - - - + + + + + + + + - - - + + + - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - + - - - + + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Equipment_Tree + 2014-08-29 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Equipment_Tree.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Fixture.svg b/src/Mod/Arch/Resources/icons/Arch_Fixture.svg index 942154516a..2014eef8fb 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Fixture.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Fixture.svg @@ -1,350 +1,111 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - - - + + + + + - - - + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - + + + - - + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Fixture + 2013-07-07 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_ + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - + + + + + + + + - - + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Floor.svg b/src/Mod/Arch/Resources/icons/Arch_Floor.svg index 70ab868dd3..2094ecfb91 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Floor.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Floor.svg @@ -1,493 +1,120 @@ - - - - - - + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - - - - + + + + + + + - - - - + + + + - + - - + + - + - + image/svg+xml - - + + + + + [wmayer] + + + Arch_Floor + 2011-10-10 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_ + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Floor_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Floor_Tree.svg index 836ae762bd..05e2013631 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Floor_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Floor_Tree.svg @@ -1,481 +1,116 @@ - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - - - - + + + + + + + - - - - + + + + - + - - + + - + - + image/svg+xml - - + + + + + [yorikvanhavre] + + + Arch_Floor_Tree + 2011-12-06 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_ + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Frame.svg b/src/Mod/Arch/Resources/icons/Arch_Frame.svg index 2fed688bde..07cdf703b6 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Frame.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Frame.svg @@ -1,1313 +1,289 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - - - + + + + + - - - + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - - + + + + + + - - - - - - - - + + + + + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - - - - - - - + + + + + + + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - - - - - - - - - + + + + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - - - + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - - - + + + + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - + + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Frame + 2013-12-22 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_ + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - + + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Frame_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Frame_Tree.svg index 9ab14f429f..4a7ea5c9ab 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Frame_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Frame_Tree.svg @@ -1,1440 +1,318 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - - - + + + + + - - - + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - - + + + + + + - - - - - - - - + + + + + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - - - - - - - + + + + + + + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - - - - - - - - - + + + + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - - - + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - - - + + + + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - - - - - + + + + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Frame_Tree + 2013-12-22 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_ + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Material.svg b/src/Mod/Arch/Resources/icons/Arch_Material.svg index 680aff1f62..a2937dbb71 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Material.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Material.svg @@ -1,555 +1,128 @@ - - - - - - + + + + + - - - - + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - + + + + + + - - - + + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Material + 2015-04-15 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Material.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Material_Group.svg b/src/Mod/Arch/Resources/icons/Arch_Material_Group.svg index ac8fd8c6f7..4a6bb9b840 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Material_Group.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Material_Group.svg @@ -1,868 +1,185 @@ - - - - - - + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - + + - - - - - - + + + + + + - - + + - - - - + + + + - - + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Material_Group + 2015-04-19 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Material_Group.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - + + + + + + - - - - - + + + + + - - - - - + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_MergeWalls.svg b/src/Mod/Arch/Resources/icons/Arch_MergeWalls.svg index 9aa8a16176..a4e6447b84 100644 --- a/src/Mod/Arch/Resources/icons/Arch_MergeWalls.svg +++ b/src/Mod/Arch/Resources/icons/Arch_MergeWalls.svg @@ -1,466 +1,116 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_MergeWalls + 2013-03-24 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_MergeWalls.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - + + + + + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_MeshToShape.svg b/src/Mod/Arch/Resources/icons/Arch_MeshToShape.svg index 95fe788d66..a6f2ed50cb 100644 --- a/src/Mod/Arch/Resources/icons/Arch_MeshToShape.svg +++ b/src/Mod/Arch/Resources/icons/Arch_MeshToShape.svg @@ -1,157 +1,46 @@ - - - Mesh_Mesh_from_Shape - - - - + + Mesh_Mesh_from_Shape + + + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - + - - + + - + - + image/svg+xml - + Mesh_Mesh_from_Shape - + Solid cube with arrow pointing towards a tesselated cube mesh - [agryson] Alexander Gryson + [agryson] Alexander Gryson, [agryson] Alexander Gryson @@ -180,216 +69,53 @@ [jmaustpc] + https://www.gnu.org/copyleft/lesser.html - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Panel.svg b/src/Mod/Arch/Resources/icons/Arch_Panel.svg index 65074e58a4..a816858462 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Panel.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Panel.svg @@ -1,202 +1,68 @@ - - - - - - + + + + + - - - - - - - - - - - + + + + + + + + + + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Panel + 2014-04-07 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Panel.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Panel_Clone.svg b/src/Mod/Arch/Resources/icons/Arch_Panel_Clone.svg index 2c44d774ad..1cd4e873fb 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Panel_Clone.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Panel_Clone.svg @@ -1,386 +1,103 @@ - - - - - - + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Panel_Clone + 2016-12-03 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Panel_Clone.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Panel_Cut.svg b/src/Mod/Arch/Resources/icons/Arch_Panel_Cut.svg index 7086bb0501..89784292ab 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Panel_Cut.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Panel_Cut.svg @@ -1,204 +1,70 @@ - - - - - - + + + + + - - - + + + - - - - - - - - - - - - + + + + + + + + + + + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Panel_Cut + 2016-12-17 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Panel_Cut.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Panel_Sheet.svg b/src/Mod/Arch/Resources/icons/Arch_Panel_Sheet.svg index 7c9781d546..bd12afb51e 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Panel_Sheet.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Panel_Sheet.svg @@ -1,562 +1,128 @@ - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - + + + + - - - - - + + + + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Panel_Sheet + 2016-12-17 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Panel_Sheet.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Panel_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Panel_Tree.svg index c31ffef4a4..906398d0ee 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Panel_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Panel_Tree.svg @@ -1,202 +1,68 @@ - - - - - - + + + + + - - - - - - - - - - - + + + + + + + + + + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Panel_Tree + 2014-04-07 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Panel_Tree.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Pipe.svg b/src/Mod/Arch/Resources/icons/Arch_Pipe.svg index a4ec20d8f2..74df010370 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Pipe.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Pipe.svg @@ -1,332 +1,96 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - - - - - - - - + + + + + + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Pipe + 2016-08-24 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Pipe.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_PipeConnector.svg b/src/Mod/Arch/Resources/icons/Arch_PipeConnector.svg index cfed2d8c01..1fa4b23eb1 100644 --- a/src/Mod/Arch/Resources/icons/Arch_PipeConnector.svg +++ b/src/Mod/Arch/Resources/icons/Arch_PipeConnector.svg @@ -1,408 +1,106 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_PipeConnector + 2016-08-24 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_PipeConnector.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Pipe_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Pipe_Tree.svg index e362507ab4..af7045bbd8 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Pipe_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Pipe_Tree.svg @@ -1,332 +1,96 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - - - - - - - - + + + + + + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Pipe_Tree + 2016-08-24 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Pipe_Tree.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Rebar.svg b/src/Mod/Arch/Resources/icons/Arch_Rebar.svg index 4321acfdb9..fed850ea00 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Rebar.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Rebar.svg @@ -1,675 +1,169 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - - - + + + + + - - - + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - - + + + + + + - - - - - - - - + + + + + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - + + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Rebar + 2013-10-07 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Rebar.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - - - - + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Rebar_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Rebar_Tree.svg index 81db1467a6..77ad45cf2e 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Rebar_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Rebar_Tree.svg @@ -1,675 +1,169 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - - - + + + + + - - - + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - - + + + + + + - - - - - - - - + + + + + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - + + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Rebar_Tree + 2013-10-07 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Rebar_Tree.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - - - - + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Remove.svg b/src/Mod/Arch/Resources/icons/Arch_Remove.svg index a9e819c2ba..bd5f2c81c4 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Remove.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Remove.svg @@ -1,188 +1,71 @@ - - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - + - - + + - + - + image/svg+xml - - + + + + + [wmayer] + + + Arch_Remove + 2011-10-10 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Remove.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_RemoveShape.svg b/src/Mod/Arch/Resources/icons/Arch_RemoveShape.svg index fceada1425..0dd0b7698e 100644 --- a/src/Mod/Arch/Resources/icons/Arch_RemoveShape.svg +++ b/src/Mod/Arch/Resources/icons/Arch_RemoveShape.svg @@ -1,282 +1,85 @@ - - - - - - - - + + + + + + + - - + + - + - + image/svg+xml - - + + + + + [wmayer] + + + Arch_RemoveShape + 2011-10-10 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_RemoveShape.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Roof.svg b/src/Mod/Arch/Resources/icons/Arch_Roof.svg index 6032033c82..0f1e14617c 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Roof.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Roof.svg @@ -1,438 +1,106 @@ - - - - - - + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - - + + + + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Roof + 2012-05-13 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Roof.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Roof_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Roof_Tree.svg index 5b81be52a1..393ba9879b 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Roof_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Roof_Tree.svg @@ -1,438 +1,106 @@ - - - - - - + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - - + + + + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Roof_Tree + 2012-05-13 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Roof_Tree.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Schedule.svg b/src/Mod/Arch/Resources/icons/Arch_Schedule.svg index 68a0c4cf5c..25328ac65c 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Schedule.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Schedule.svg @@ -1,183 +1,68 @@ - - - - - - + + + + + - - - + + + - - - - - + + + + + - - - + + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Schedule + 2015-04-26 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Schedule.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_SectionPlane.svg b/src/Mod/Arch/Resources/icons/Arch_SectionPlane.svg index 516fbe918b..47bc65fa98 100644 --- a/src/Mod/Arch/Resources/icons/Arch_SectionPlane.svg +++ b/src/Mod/Arch/Resources/icons/Arch_SectionPlane.svg @@ -1,183 +1,67 @@ - - - - - - + + + + + - - - + + + - - - - - - + + + + + + - - + + - + - + image/svg+xml - - + + + + + [wmayer] + + + Arch_SectionPlane + 2011-10-10 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_SectionPlane.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_SectionPlane_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_SectionPlane_Tree.svg index 3b188d46cf..9bf5b3ea87 100644 --- a/src/Mod/Arch/Resources/icons/Arch_SectionPlane_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_SectionPlane_Tree.svg @@ -1,136 +1,56 @@ - - - - - - + + + + + - + - - + + - + - + image/svg+xml - - + + + + + [yorikvanhavre] + + + Arch_SectionPlane_Tree + 2011-12-06 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_SectionPlane_Tree.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_SelectNonManifold.svg b/src/Mod/Arch/Resources/icons/Arch_SelectNonManifold.svg index c7e086c4bd..13fdb94afc 100644 --- a/src/Mod/Arch/Resources/icons/Arch_SelectNonManifold.svg +++ b/src/Mod/Arch/Resources/icons/Arch_SelectNonManifold.svg @@ -1,248 +1,77 @@ - - - - - - - - + + + + + + + - + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_SelectNonManifold + 2012-07-22 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_SelectNonManifold.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Site.svg b/src/Mod/Arch/Resources/icons/Arch_Site.svg index 8991c1190f..38a3ebbb85 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Site.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Site.svg @@ -1,188 +1,71 @@ - - - - - - + + + + + - - - + + + - - - - + + + + - - - - + + + + - - + + - - + + - + - + image/svg+xml - - + + + + + [wmayer] + + + Arch_Site + 2011-10-10 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Site.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Site_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Site_Tree.svg index c7bd658806..1545a06d9c 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Site_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Site_Tree.svg @@ -1,188 +1,71 @@ - - - - - - + + + + + - - - + + + - - - - + + + + - - - - + + + + - - + + - - + + - + - + image/svg+xml - - + + + + + [yorikvanhavre] + + + Arch_Site_Tree + 2011-12-06 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Site_Tree.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Space.svg b/src/Mod/Arch/Resources/icons/Arch_Space.svg index a91dcb290f..a4c1f4b388 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Space.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Space.svg @@ -1,444 +1,114 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - - - - + + + + + + - - - - + + + + - - - - - + + + + + - - + + - - + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Space + 2013-07-16 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Space.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Space_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Space_Tree.svg index dcf63e9126..83fe9c30a5 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Space_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Space_Tree.svg @@ -1,423 +1,112 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - + + - - + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Space_Tree + 2013-07-16 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Space_Tree.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_SplitMesh.svg b/src/Mod/Arch/Resources/icons/Arch_SplitMesh.svg index 6923eb7b4d..b2b6952577 100644 --- a/src/Mod/Arch/Resources/icons/Arch_SplitMesh.svg +++ b/src/Mod/Arch/Resources/icons/Arch_SplitMesh.svg @@ -1,179 +1,64 @@ - - - - + + + - - + + - + - + image/svg+xml - - + + + + + [wmayer] + + + Arch_SplitMesh + 2011-10-10 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_SplitMesh.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Stairs.svg b/src/Mod/Arch/Resources/icons/Arch_Stairs.svg index 73b0afdaf7..add894af6a 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Stairs.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Stairs.svg @@ -1,491 +1,138 @@ - - - - - - + + + + + - - - - - + + + + + - - - - - - - - + + + + + + + + - - - + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - + + + - - - - + + + + - - - + + + - - - - - + + + + + - - - - + + + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Stairs + 2013-07-25 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Stairs.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - + + + + + + + - - - + + + - - - + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Stairs_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Stairs_Tree.svg index 99aa48f4a8..62007ac309 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Stairs_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Stairs_Tree.svg @@ -1,494 +1,138 @@ - - - - - - + + + + + - - - - - + + + + + - - - - - - - - + + + + + + + + - - - + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - + + + - - - - + + + + - - - + + + - - - - - + + + + + - - - - + + + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Stairs_Tree + 2013-07-25 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Stairs_Tree.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - + + + + + + + - - - + + + - - - + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_StructuralSystem.svg b/src/Mod/Arch/Resources/icons/Arch_StructuralSystem.svg index 35eade36e7..740715a8c0 100644 --- a/src/Mod/Arch/Resources/icons/Arch_StructuralSystem.svg +++ b/src/Mod/Arch/Resources/icons/Arch_StructuralSystem.svg @@ -1,383 +1,112 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - - - - - - - - - - + + + + + + + + + + + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_StructuralSystem + 2014-03-28 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_StructuralSystem.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_StructuralSystem_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_StructuralSystem_Tree.svg index 5d0b0dcecc..4932ff1836 100644 --- a/src/Mod/Arch/Resources/icons/Arch_StructuralSystem_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_StructuralSystem_Tree.svg @@ -1,383 +1,112 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - - - - - - - - - - + + + + + + + + + + + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_StructuralSystem_Tree + 2014-03-28 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_StructuralSystem_Tree.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Structure.svg b/src/Mod/Arch/Resources/icons/Arch_Structure.svg index 860b244bc7..bae94bf4b4 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Structure.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Structure.svg @@ -1,361 +1,109 @@ - - - - - - + + + + + - - - + + + - - - - - - - - + + + + + + + + - - - + + + - - - - - - - - + + + + + + + + - - - - + + + + - - + + - - + + - + - + image/svg+xml - - + + + + + [wmayer] + + + Arch_Structure + 2011-10-10 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Structure.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - - + + + + + + + + + + + - - - - - - - + + + + + + + - - - - + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Structure_Clone.svg b/src/Mod/Arch/Resources/icons/Arch_Structure_Clone.svg index 04607698fe..81982ce25c 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Structure_Clone.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Structure_Clone.svg @@ -1,547 +1,146 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - - - - - - + + + + + + + + - - - + + + - - - - - - - - + + + + + + + + - - - - + + + + - - - - - - + + + + + + - - - - + + + + - - - - + + + + - + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Structure_Clone + 2016-06-15 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Structure_Clone.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - - + + + + + + + + + + + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Structure_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Structure_Tree.svg index 174b5f341c..54d1155e58 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Structure_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Structure_Tree.svg @@ -1,391 +1,117 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - - - - - - + + + + + + + + - - - + + + - - - - - - - - + + + + + + + + - - - - + + + + - - + + - - + + - + - + image/svg+xml - - + + + + + [yorikvanhavre] + + + Arch_Structure_Tree + 2011-12-06 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Structure_Tree.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - - + + + + + + + + + + + - - - - - - - + + + + + + + - - - - + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Survey.svg b/src/Mod/Arch/Resources/icons/Arch_Survey.svg index a00af945ea..58fb62ccc0 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Survey.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Survey.svg @@ -1,371 +1,116 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Survey + 2014-02-11 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Survey.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_ToggleIfcBrepFlag.svg b/src/Mod/Arch/Resources/icons/Arch_ToggleIfcBrepFlag.svg index f3d98a040f..d5dd308dfe 100644 --- a/src/Mod/Arch/Resources/icons/Arch_ToggleIfcBrepFlag.svg +++ b/src/Mod/Arch/Resources/icons/Arch_ToggleIfcBrepFlag.svg @@ -1,188 +1,68 @@ - - - - - - + + + + + - - - + + + - - - + + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_ToggleIfcBrepFlag + 2014-07-15 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_ToggleIfcBrep + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - - - - + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_ToggleSubs.svg b/src/Mod/Arch/Resources/icons/Arch_ToggleSubs.svg index 0dbd5fa7fc..993c0e6f6e 100644 --- a/src/Mod/Arch/Resources/icons/Arch_ToggleSubs.svg +++ b/src/Mod/Arch/Resources/icons/Arch_ToggleSubs.svg @@ -1,549 +1,125 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_ToggleSubs + 2016-09-20 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_ToggleSubs.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - - - - + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Wall.svg b/src/Mod/Arch/Resources/icons/Arch_Wall.svg index 1bfbda30bb..5065f45336 100755 --- a/src/Mod/Arch/Resources/icons/Arch_Wall.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Wall.svg @@ -1,341 +1,100 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - + + - + - + image/svg+xml - - + + + + + [wmayer] + + + Arch_Wall + 2011-10-10 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Wall.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Wall_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Wall_Tree.svg index 5d7335ba5a..a5d2f106ab 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Wall_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Wall_Tree.svg @@ -1,331 +1,100 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - + + - + - + image/svg+xml - - + + + + + [yorikvanhavre] + + + Arch_Wall_Tree + 2011-12-06 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Wall_Tree.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Wall_Tree_Assembly.svg b/src/Mod/Arch/Resources/icons/Arch_Wall_Tree_Assembly.svg index 265cd54ee0..fb7ec5f5cf 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Wall_Tree_Assembly.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Wall_Tree_Assembly.svg @@ -1,665 +1,167 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Wall_Tree_Assembly + 2013-04-17 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Wall_Tree_Assembly.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - + + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Window.svg b/src/Mod/Arch/Resources/icons/Arch_Window.svg index 69160440f1..d3dcdb82dd 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Window.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Window.svg @@ -1,625 +1,144 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - + + - + - + image/svg+xml - - + + + + + [wmayer] + + + Arch_Window + 2011-10-10 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Window.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Window_Clone.svg b/src/Mod/Arch/Resources/icons/Arch_Window_Clone.svg index 42ec5048cd..db138304f1 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Window_Clone.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Window_Clone.svg @@ -1,781 +1,173 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - + + + + - + - - + + - + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Window_Clone + 2016-09-06 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Window_Clone.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Window_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Window_Tree.svg index 9d2894afa7..d96ae5b14b 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Window_Tree.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Window_Tree.svg @@ -1,625 +1,144 @@ - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - + + - + - + image/svg+xml - - + + + + + [yorikvanhavre] + + + Arch_Window_Tree + 2011-12-06 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Window_Tree.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/preferences-arch.svg b/src/Mod/Arch/Resources/icons/preferences-arch.svg index f6675d1760..957585a4c6 100755 --- a/src/Mod/Arch/Resources/icons/preferences-arch.svg +++ b/src/Mod/Arch/Resources/icons/preferences-arch.svg @@ -1,607 +1,155 @@ - - - - - - + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - + + - + - + image/svg+xml - - + + + + + [wmayer] + + + preferences-arch + 2011-10-10 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/preferences-arch.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + - - - - - - - - + + + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + From 45261c211c380070bfda97c271771c3901fbc7f1 Mon Sep 17 00:00:00 2001 From: Alexander Gryson Date: Sat, 31 Dec 2016 17:29:54 +0100 Subject: [PATCH 17/19] Minor updates and polish * New icon had been added since I started work, so aligned that * Removed a copy/paste artefact on a clone icon --- .../Resources/icons/Arch_Component_Clone.svg | 263 ++++------- .../Arch/Resources/icons/Arch_Panel_Clone.svg | 427 +++++++++++++++--- 2 files changed, 458 insertions(+), 232 deletions(-) diff --git a/src/Mod/Arch/Resources/icons/Arch_Component_Clone.svg b/src/Mod/Arch/Resources/icons/Arch_Component_Clone.svg index 4c3455bf50..ac5b297379 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Component_Clone.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Component_Clone.svg @@ -1,182 +1,105 @@ - - - - - - + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + - + image/svg+xml - - + + + + + [Yorik van Havre] + + + Arch_Component + 2015-04-08 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_Component.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson, [agryson] Alexander Gryson + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Panel_Clone.svg b/src/Mod/Arch/Resources/icons/Arch_Panel_Clone.svg index 1cd4e873fb..6cd3248c3a 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Panel_Clone.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Panel_Clone.svg @@ -1,53 +1,252 @@ - - - - - + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - + - - + + - + - + image/svg+xml - - + + [Yorik van Havre] @@ -76,28 +275,132 @@ - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + From 96d55de28b2351cc3460855fd0576e805993ec0e Mon Sep 17 00:00:00 2001 From: Alexander Gryson Date: Thu, 5 Jan 2017 06:37:50 -0500 Subject: [PATCH 18/19] Revert modifications to 3rd party icon 3rd party icons will be reviewed after alignment of all other icons See [this forum discussion for more on this issue](http://forum.freecadweb.org/viewtopic.php?f=23&t=19556&p=151812#p151812) I'm mainting this as it's own commit for easy reversion in the future should we decide to update 3rd party icons --- .../Arch/Resources/icons/Arch_Bimserver.svg | 538 ++++++++++++++---- 1 file changed, 426 insertions(+), 112 deletions(-) diff --git a/src/Mod/Arch/Resources/icons/Arch_Bimserver.svg b/src/Mod/Arch/Resources/icons/Arch_Bimserver.svg index 0236b3b18c..33f916c47b 100644 --- a/src/Mod/Arch/Resources/icons/Arch_Bimserver.svg +++ b/src/Mod/Arch/Resources/icons/Arch_Bimserver.svg @@ -1,140 +1,454 @@ - - - - - - + + + + + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - - - - - - - - + + + + + + + + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - - + + - + image/svg+xml - - + + - [agryson] Alexander Gryson + Jakub Steiner - http://agryson.net - - Arch_Bimserver - 2015-02-20 - http://www.freecadweb.org/wiki/index.php?title=Artwork - - - FreeCAD - - - FreeCAD/src/Mod/Arch/Resources/icons/Arch_Bimserver.svg - - - FreeCAD LGPL2+ - - - - - [agryson] Alexander Gryson - - + http://jimmac.musichall.cz + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + - + From 2c56e5c4c31e062b2e3344d91fa95c085f0c4c94 Mon Sep 17 00:00:00 2001 From: Alexander Gryson Date: Wed, 11 Jan 2017 21:22:09 +0100 Subject: [PATCH 19/19] fix broken shadow --- .../Arch/Resources/icons/ArchWorkbench.svg | 713 ++++++++++++++--- .../Arch/Resources/icons/preferences-arch.svg | 721 +++++++++++++++--- 2 files changed, 1228 insertions(+), 206 deletions(-) diff --git a/src/Mod/Arch/Resources/icons/ArchWorkbench.svg b/src/Mod/Arch/Resources/icons/ArchWorkbench.svg index 5711d86082..c55eabaa85 100755 --- a/src/Mod/Arch/Resources/icons/ArchWorkbench.svg +++ b/src/Mod/Arch/Resources/icons/ArchWorkbench.svg @@ -1,105 +1,517 @@ - - - - - + + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - + + + + + + + + - - + + - + - + image/svg+xml - - + + [triplus] @@ -128,28 +540,127 @@ - - - - - - - - + + + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + diff --git a/src/Mod/Arch/Resources/icons/preferences-arch.svg b/src/Mod/Arch/Resources/icons/preferences-arch.svg index 957585a4c6..0840f4334b 100755 --- a/src/Mod/Arch/Resources/icons/preferences-arch.svg +++ b/src/Mod/Arch/Resources/icons/preferences-arch.svg @@ -1,119 +1,531 @@ - - - - - + + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - + + + + + + + + - - + + - + - + image/svg+xml - - + + - [wmayer] + [triplus] - preferences-arch - 2011-10-10 + ArchWorkbench + 2016-02-26 http://www.freecadweb.org/wiki/index.php?title=Artwork FreeCAD - FreeCAD/src/Mod/Arch/Resources/icons/preferences-arch.svg + FreeCAD/src/Mod/Arch/Resources/icons/ArchWorkbench.svg FreeCAD LGPL2+ @@ -128,28 +540,127 @@ - - - - - - - - + + + + + + + + - - - - - - + + + + + + - - - - - - + + + + + +