From e6c968cb7947cf7aebcc8338f5bd7582e18b8021 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 d052928062f0..ef04ef5eb6d6 100644 --- a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py +++ b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py @@ -36,6 +36,7 @@ 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 @@ def accept(self): FreeCAD.ActiveDocument.recompute() def cleanup(self): + self.viewProvider.clearTaskPanel() FreeCADGui.ActiveDocument.resetEdit() FreeCADGui.Control.closeDialog() FreeCAD.ActiveDocument.recompute() @@ -790,7 +793,7 @@ def closeDialog(self): 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 @@ def updateTagsView(self): item.setFlags(flags) self.form.lwTags.addItem(item) self.form.lwTags.blockSignals(False) + self.whenTagSelectionChanged() def cleanupUI(self): print("cleanupUI") @@ -868,10 +872,14 @@ def whenCountChanged(self): 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 @@ def addNewTagAt(self, point, what): 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 @@ def setupUi(self): 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 @@ def onDelete(self, arg1=None, arg2=None): 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 8f7102e2bfd455d9d627579da01af17788223c1d 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 5e701bc5cdea..7299f8d86bc7 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 000000000000..fe932984fde6 --- /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 ef04ef5eb6d6..462f27323d7a 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 @@ def sortedTags(self, tags): 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 @@ def setXyEnabled(self, triples): 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 @@ def accept(self): 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 @@ def getFields(self): 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 @@ def updateTagsView(self): 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 @@ def generateNewTags(self): 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 @@ def updateModel(self): 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 @@ def setupSpinBox(self, widget, val, decimals = 2): 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 @@ def setupUi(self): 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 @@ def setSelected(self, select): 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 @@ def setupTaskPanel(self, panel): 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 @@ def selectTag(self, 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): @@ -1075,10 +1171,17 @@ def tagAtPoint(self, point): 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 0781cf75d6b7d80025f366bc9387b1d7167caeda 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 fe932984fde6..454bcabaf33d 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 462f27323d7a..333b2fb145cb 100644 --- a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py +++ b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py @@ -792,6 +792,7 @@ def __init__(self, obj, viewProvider, jvoVisibility=None): self.jvo.hide() else: self.jvoVisible = jvoVisibility + self.pt = FreeCAD.Vector(0, 0, 0) def reject(self): print("reject") @@ -814,10 +815,6 @@ def cleanup(self): 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 @@ def deleteSelectedTag(self): 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 @@ def removeGlobalCallbacks(self): 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 @@ def setupUi(self): 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 6792e2c4b9d4b6c8411e79ef99e307eef99d9ebc 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 333b2fb145cb..596e0b92a079 100644 --- a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py +++ b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py @@ -943,12 +943,12 @@ def editTag(self, item): 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 @@ def cancel(): 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 f89eea7b5902d8e83d73f467713332473fec1b66 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 d8289aca7a93..ad02f9819710 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 596e0b92a079..df005ee4c69a 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 @@ def __setstate__(self, state): 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 @@ def doExecute(self,obj): 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 @@ def getTags(self, includeCurrent): 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 @@ def removeGlobalCallbacks(self): 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 @@ def setupSpinBox(self, widget, val, decimals = 2): 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 @@ def setupUi(self): 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 706875b3cc3cbac520ade10902d3472249cd5d19 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 ad02f9819710..85ea93435a67 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 df005ee4c69a..e4c6c27645fc 100644 --- a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py +++ b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py @@ -776,7 +776,7 @@ def __init__(self, obj, viewProvider, jvoVisibility=None): 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 @@ def whenTagSelectionChanged(self): 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 @@ def addNewTag(self): 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 @@ def editTagAt(self, point, obj): 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 @@ def setupUi(self): 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 @@ def pointReject(self): 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 45893d778393f6a27dda6c5df7d447c43f078a9c 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 e4c6c27645fc..17ed01b137da 100644 --- a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py +++ b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py @@ -143,7 +143,7 @@ def createSolidsAt(self, z, R): 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 @@ def createSolidsAt(self, z, R): 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 @@ def createSolidsAt(self, z, R): 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 @@ def doExecute(self,obj): 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 190aa1fc742213787db5b071ca0a526b08e21a7e 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 17ed01b137da..7caa9eb708e5 100644 --- a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py +++ b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py @@ -37,6 +37,7 @@ 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 @@ def updatePoint(self): 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 @@ def updateData(self, obj, propName): 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 ab155ab2f710..e1fe309120c9 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 @@ def allEnabledPostProcessors(cls, include = None): @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 @@ def savePostProcessorDefaults(cls, processor, args, blacklist): @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 240389096588af8a7bffc35594ed873832b9a23d 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 85ea93435a67..ba2fe037d364 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 7caa9eb708e5..408d3cd0a8d9 100644 --- a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py +++ b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py @@ -747,7 +747,7 @@ def setup(self, obj, generate=None): 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 @@ def selectTagWithId(self, index): 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 @@ def cancel(): 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 70c3fc8686ac521f8c4f675aff528ce9d394b9e9 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 ba2fe037d364..93fc2de771de 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 408d3cd0a8d9..8841f4bca696 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 @@ def isRapid(self, edge, removeIfFound=True): 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 @@ def sortedTags(self, tags): 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 @@ def createPath(self, edges, tags, rapid): # 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 @@ def createPath(self, edges, tags, rapid): 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 @@ def doExecute(self,obj): 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 @@ def setup(self, obj, generate=None): 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 @@ def deleteSelectedTag(self): 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 891add9bd3d27f4c5b035e53eb973e3e9ed02c17 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 f01eb9b6466e..32ce98caef0a 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 7299f8d86bc7..b6800333c6b8 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 000000000000..c805d52a9687 --- /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 22b13882b0e3..dd0c1d6f3cae 100644 --- a/src/Mod/Path/InitGui.py +++ b/src/Mod/Path/InitGui.py @@ -31,8 +31,9 @@ def __init__(self): 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 8841f4bca696..d7f31bacd1f0 100644 --- a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py +++ b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py @@ -27,6 +27,7 @@ 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 + + @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()) - def toString(self): - return str((self.x, self.y, self.width, self.height, self.angle, self.enabled)) + @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 @@ def shortestAndLongestPathEdge(self): 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 @@ def processEdge(self, index, edge, currentLength, lastTagLength, tagDistance, mi 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 @@ def processTags(self, obj): 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 @@ def setup(self, obj, generate=None): 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 @@ def pointIsOnPath(self, obj, point): 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 @@ def Activated(self): 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 000000000000..86fa52507fdd --- /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 25e12f28acfb..cb374133d747 100644 --- a/src/Mod/Path/PathScripts/PathPreferencesPathJob.py +++ b/src/Mod/Path/PathScripts/PathPreferencesPathJob.py @@ -29,7 +29,7 @@ from PathScripts.PathPostProcessor import PostProcessor -class Page: +class JobPreferencesPage: def __init__(self, parent=None): self.form = FreeCADGui.PySideUic.loadUi(":preferences/PathJob.ui") From 3cbf1c32b4a7203c4ae6cfdfb5684a0107260f5b 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 d7f31bacd1f0..cc83f0aec818 100644 --- a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py +++ b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py @@ -144,14 +144,12 @@ def __init__(self): 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 @@ def isRapid(self, edge): return False def debugPrint(self): - print('rapid:') + debugPrint('rapid:') for r in self.rapid: debugEdge(r, ' ', True) @@ -667,7 +665,7 @@ def isValidTagStartIntersection(self, edge, i): return True def createPath(self, edges, tags, rapid): - print("createPath") + #print("createPath") commands = [] lastEdge = 0 lastTag = 0 @@ -727,9 +725,7 @@ def problems(self): 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 @@ def createTagsPositionDisabled(self, obj, positionsIn, disabledIn): 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 @@ def createTagsPositionDisabled(self, obj, positionsIn, disabledIn): 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 @@ def doExecute(self,obj): 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 @@ def processTags(self, obj): 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 @@ def setXyEnabled(self, triples): 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 @@ def __init__(self, obj, viewProvider, jvoVisibility=None): 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 @@ def getFields(self): 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 @@ def updateTagsView(self): 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 @@ def updateModel(self): #FreeCAD.ActiveDocument.recompute() def whenCountChanged(self): - print("whenCountChanged") count = self.formTags.sbCount.value() self.formTags.pbGenerate.setEnabled(count) @@ -999,7 +977,6 @@ def selectTagWithId(self, index): 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 @@ def whenTagSelectionChanged(self): 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 @@ def setFields(self): 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 @@ def pointReject(self): self.pointFinish(False) def pointAccept(self): - print("pointAccept") self.pointFinish(True) def updatePoint(self): @@ -1242,7 +1217,7 @@ def claimChildren(self): 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 @@ def updateData(self, obj, propName): 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 126fe816891bdf2182a8cf055cfc081f2b641273 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 cc83f0aec818..fdd9a37f04da 100644 --- a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py +++ b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py @@ -141,7 +141,7 @@ def defaultCount(cls, ifNotSet = 4): 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 86fa52507fdd..a23b370e8939 100644 --- a/src/Mod/Path/PathScripts/PathPreferencesPathDressup.py +++ b/src/Mod/Path/PathScripts/PathPreferencesPathDressup.py @@ -27,6 +27,18 @@ 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 @@ def __init__(self, parent=None): 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 9d544209a8cbabbc82288ddeaa89fe5395186f14 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 | 60 +-- .../PathScripts/PathDressupHoldingTags.py | 355 +++++++++++------- src/Mod/Path/PathScripts/PathGeom.py | 52 +-- 4 files changed, 290 insertions(+), 191 deletions(-) diff --git a/src/Mod/Path/Gui/Resources/panels/HoldingTagsEdit.ui b/src/Mod/Path/Gui/Resources/panels/HoldingTagsEdit.ui index 93fc2de771de..0fca680a75b8 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 c805d52a9687..c5085d5fa8f5 100644 --- a/src/Mod/Path/Gui/Resources/preferences/PathDressupHoldingTags.ui +++ b/src/Mod/Path/Gui/Resources/preferences/PathDressupHoldingTags.ui @@ -20,6 +20,13 @@ Tag Parameters + + + + <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> + + + @@ -27,17 +34,22 @@ - - + + - <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> + <html><head/><body><p>Plunge angle for the holding tags ascent and descent.</p></body></html> - - - - - - Default Height + + 5.000000000000000 + + + 90.000000000000000 + + + 15.000000000000000 + + + 45.000000000000000 @@ -55,22 +67,24 @@ - - - - <html><head/><body><p>Plunge angle for the holding tags ascent and descent.</p></body></html> - - - 5.000000000000000 - - - 90.000000000000000 + + + + Default Height - - 15.000000000000000 + + + + + + <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> - - 45.000000000000000 + + + + + + Default Radius diff --git a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py index fdd9a37f04da..34908fe5706d 100644 --- a/src/Mod/Path/PathScripts/PathDressupHoldingTags.py +++ b/src/Mod/Path/PathScripts/PathDressupHoldingTags.py @@ -45,16 +45,8 @@ """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 @@ def defaultCount(cls, ifNotSet = 4): 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 @@ def saveSettings(self): 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 @@ 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)) + 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 @@ def createSolidsAt(self, z, R): 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 @@ def createSolidsAt(self, z, R): 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 @@ def filterIntersections(self, pts, face): 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 @@ def nextIntersectionClosestTo(self, edge, solid, refPt): 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 @@ def intersects(self, edge, param): 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 @@ def __init__(self, edge, tag, i): 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 @@ def isEntryOrExitStrut(self, e): 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 @@ def isStrut(self, edge): 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 @@ def isRapid(self, edge): 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 @@ def shortestAndLongestPathEdge(self): 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 @@ def generateTags(self, obj, count, width=None, height=None, angle=None, spacing= 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 @@ def generateTags(self, obj, count, width=None, height=None, angle=None, spacing= 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 @@ def defaultTagWidth(self): 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 @@ def sortedTags(self, tags): 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 @@ def __init__(self, obj): 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 @@ def __setstate__(self, state): 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 @@ def problems(self): 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 @@ def doExecute(self,obj): 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 @@ def processTags(self, obj): 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 @@ def setup(self, obj, generate=False): 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 @@ def __init__(self, obj, viewProvider, jvoVisibility=None): 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 @@ def getTagParameters(self): 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 @@ def setFields(self): 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 @@ def setupUi(self): 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 @@ def Activated(self): # 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 388b10952255..ed85398735bb 100644 --- a/src/Mod/Path/PathScripts/PathGeom.py +++ b/src/Mod/Path/PathScripts/PathGeom.py @@ -29,6 +29,8 @@ 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 @@ def edgesMatch(cls, e0, e1, error=0.0000001): 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 @@ def getAngle(cls, vector): 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 @@ def commandEndPoint(cls, cmd, defaultPoint = Vector(), X='X', Y='Y', Z='Z'): 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 @@ def cmdsForEdge(cls, edge, flip = False, useHelixForBSpline = True): 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 @@ def edgeForCmd(cls, cmd, startPoint): #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 @@ def edgeForCmd(cls, cmd, startPoint): 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 @@ def wireForPath(cls, path, startPoint = FreeCAD.Vector(0, 0, 0)): 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 @@ def arcToHelix(cls, edge, z0, z1): #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 @@ def helixToArc(cls, edge, z = 0): 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 @@ def splitEdgeAt(cls, edge, pt): 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 39e48dd10fa939913424b883dbb9893329f94642 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 | 182 +++- .../Arch/Resources/icons/Arch_Cell_Tree.svg | 178 +++- 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 | 331 +++---- .../Arch/Resources/icons/Arch_Equipment.svg | 564 ++++++------ .../Resources/icons/Arch_Equipment_Clone.svg | 662 ++++++++++---- .../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 | 550 ++++++------ .../Arch/Resources/icons/Arch_MeshToShape.svg | 391 +++++++-- src/Mod/Arch/Resources/icons/Arch_Panel.svg | 96 ++- .../Arch/Resources/icons/Arch_Panel_Clone.svg | 435 +++++----- .../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 | 238 ++++- .../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 | 143 +-- .../Arch/Resources/icons/Arch_RemoveShape.svg | 251 ++++-- 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 | 330 ++++++- .../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 | 430 +++++---- .../icons/Arch_StructuralSystem_Tree.svg | 426 +++++---- .../Arch/Resources/icons/Arch_Structure.svg | 362 ++++++-- .../Resources/icons/Arch_Structure_Clone.svg | 575 +++++++++---- .../Resources/icons/Arch_Structure_Tree.svg | 385 +++++++-- src/Mod/Arch/Resources/icons/Arch_Survey.svg | 253 ++++-- .../icons/Arch_ToggleIfcBrepFlag.svg | 144 +++- .../Arch/Resources/icons/Arch_ToggleSubs.svg | 136 ++- src/Mod/Arch/Resources/icons/Arch_Wall.svg | 408 ++++----- .../Arch/Resources/icons/Arch_Wall_Tree.svg | 338 ++++---- .../icons/Arch_Wall_Tree_Assembly.svg | 748 ++++++++++------ 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, 13510 insertions(+), 4612 deletions(-) diff --git a/src/Mod/Arch/Resources/icons/ArchWorkbench.svg b/src/Mod/Arch/Resources/icons/ArchWorkbench.svg index 94d505329467..17f77eb52cda 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 3d877b4cd54d..4f043da7eedb 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 50e5226e5827..f4dd7a3761d6 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 9e95231ebf55..07fab020940b 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 d55c9cef5aa8..3fbfe6d70b4e 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 33f916c47bca..9388f9a6c7a7 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 7d3d158df08a..98cae6c14647 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 2e9af5f8ee32..9bde40660f7e 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 3827522d9d79..5d6b6b24b1a8 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="ccccc" + inkscape:connector-curvature="0" /> + style="fill:none;stroke:#fce94f;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 31.002213,43.626485 0.01105,-31.941338 19.41229,5.866776 -2.353339,32.582155 z" + id="path3826" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + sodipodi:nodetypes="ccccccccccc" + inkscape:connector-curvature="0" /> + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" /> - + style="fill:#fce94f;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 3,13 3,51 9,53 9,15 z" + id="path3769" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + width="4.7431488" + height="20.430214" + x="19" + y="17" /> + + 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 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 1c0dd4d0d6d5..d81656bb10f9 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" /> + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" /> + style="fill:#ffffff;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 3,13 3,51 9,53 9,15 z" + id="path3769" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + width="4.7431488" + height="20.430214" + x="19" + y="17" /> + + 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" /> + diff --git a/src/Mod/Arch/Resources/icons/Arch_Check.svg b/src/Mod/Arch/Resources/icons/Arch_Check.svg index 61be1a1b4a30..1410444af247 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:url(#linearGradient3811);fill-opacity:1;stroke:#8ae234;stroke-width:2.35294127000000008;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.59999999999999998" + id="path3785-3" + 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.85,0,0,0.85,6.3000001,6.3000001)" /> + sodipodi:nodetypes="ccccccc" /> diff --git a/src/Mod/Arch/Resources/icons/Arch_CloseHoles.svg b/src/Mod/Arch/Resources/icons/Arch_CloseHoles.svg index c0fcbf1dd32b..03cb6409ef4d 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 82c6c6d7ace9..bdd1c381ebf7 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 5299b43cc41f..6ecca1c18076 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"> + + + + + + + + + + + + + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" + id="path3854-61" + 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-8" + d="m 55,8.68 -35.978227,-5.3098667 0,43.8410037 36,5.484047 z" + style="fill:none;stroke:#ef2929;stroke-width:1.99999975999999990;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Equipment.svg b/src/Mod/Arch/Resources/icons/Arch_Equipment.svg index 0fdddefe7860..fb85322408ca 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 2d5fca113ab9..f50eadaaa7c7 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" /> + + + + + + + + + + id="linearGradient3797"> + 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" /> + + + + + inkscape:transform-center-x="-0.81449848" /> + sodipodi:nodetypes="cszscc" /> + - - - - - - - - - - - - + sodipodi:nodetypes="csc" /> diff --git a/src/Mod/Arch/Resources/icons/Arch_Equipment_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Equipment_Tree.svg index 928ceaf46956..81990683dfbe 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 ee11cd0a8d68..942154516a48 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 c553bfdcadab..70ab868dd3f6 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 5d9934bb6f19..836ae762bdcb 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 8dc0b3347bb1..2fed688bdef9 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 b8aefdc7b984..9ab14f429f75 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 a9a3ec05cbbd..680aff1f629f 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 2bab17b3a599..ac8fd8c6f736 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 d96db03baccf..9aa8a1617631 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 49,50.190674 12,-6 0,-8 -12,6 z" + id="path3157" + 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 e0f896b9d900..95fe788d667c 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" /> + style="fill:none;stroke:#729fcf;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 17.918607,51.979769 0.547712,2.774889" + id="path4091" + inkscape:connector-curvature="0" /> + sodipodi:nodetypes="cc" /> diff --git a/src/Mod/Arch/Resources/icons/Arch_Panel.svg b/src/Mod/Arch/Resources/icons/Arch_Panel.svg index 09b00a2c1d45..65074e58a4f7 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 60271de3dab0..2c44d774addf 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" /> - - - - - - - - + - + + + + - + + id="linearGradient3978"> + + + + xlink:href="#linearGradient3930" + id="linearGradient3936" + x1="22" + y1="52" + x2="19" + y2="38" + gradientUnits="userSpaceOnUse" /> + inkscape:collect="always" + id="linearGradient3930"> + id="stop3932" /> + id="stop3934" /> + + 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 52048f7ebab0..7086bb0501a5 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 b256ecfb160f..7c9781d546ab 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 5b085c6054b9..c31ffef4a44f 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 5b13d560e89e..a4ec20d8f27a 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 5ee3c1d3b0a4..cfed2d8c0141 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"> + + + + + + + + + + + + + + + + + id="radialGradient3023-5" + xlink:href="#linearGradient3377-6-6" + inkscape:collect="always" /> + + + + + + + + + + + + + + + + + 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 ed42cabb4c8f..e362507ab469 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 5049353ac44a..4321acfdb996 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.56525353,-0.41335011,0.47999651,0.75985114,27.165219,38.943882)" /> + transform="matrix(0.30023259,-0.36676447,0.39686301,0.49214378,33.178361,44.415899)" /> diff --git a/src/Mod/Arch/Resources/icons/Arch_Rebar_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Rebar_Tree.svg index 3da555096199..81db1467a6e2 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.56525353,-0.41335011,0.47999651,0.75985114,27.165219,38.943882)" /> + transform="matrix(0.30023259,-0.36676447,0.39686301,0.49214378,33.178361,44.415899)" /> diff --git a/src/Mod/Arch/Resources/icons/Arch_Remove.svg b/src/Mod/Arch/Resources/icons/Arch_Remove.svg index e9b8e1c2d739..a9e819c2ba9a 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" /> - + xlink:href="#linearGradient2091" + id="radialGradient2097" + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> + inkscape:collect="always" + id="linearGradient2091"> + id="stop2093" /> + id="stop2095" /> - + gradientTransform="matrix(1.9455392,0,0,1.9455392,-47.998185,-58.673094)" + x1="42.002884" + y1="36.209637" + x2="42.984806" + y2="40.941936" /> + id="linearGradient3057"> + style="stop-color:#729fcf" + offset="0.0000000" + id="stop3059" /> + style="stop-color:#3465a4;stop-opacity:1" + offset="1.0000000" + id="stop3061" /> + + 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 e1d6cbd1f202..fceada142532 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" /> + 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 0d72e27b0230..6032033c8298 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 8b105168a9b7..5b81be52a1b5 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 c7c414e09496..68a0c4cf5ce9 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 1d3eb44d4381..516fbe918b56 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 d392badbb82f..3b188d46cf77 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 eb39166fa1ca..c7e086c4bdd6 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 fac20eef011a..8991c1190ffa 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 d43aee6133ba..c7bd65880679 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 1e302c4dd5f3..a91dcb290ff3 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 65ca3cf5e529..dcf63e91264c 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"> + + + sodipodi:nodetypes="ccccc" /> + sodipodi:nodetypes="ccccc" /> + sodipodi:nodetypes="ccccc" /> + + + + + + + + + + + + + + + + + + sodipodi:nodetypes="cc" /> + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_SplitMesh.svg b/src/Mod/Arch/Resources/icons/Arch_SplitMesh.svg index 840b29db0e7a..6923eb7b4dd3 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 ef02ab7a3463..73b0afdaf7f9 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 11b5eaf120f0..99aa48f4a8b2 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 fecc8252b324..35eade36e7ae 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"> + + + style="fill:none;stroke:#0b1521;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 12;stroke-dashoffset:0" + d="M 5,43 29,61" + id="path3915" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> - - - - - - - - - - - - - - - - + style="fill:none;stroke:#0b1521;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:6,12;stroke-dashoffset:0" + d="M 59,43 21,59" + id="path3935" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + + + + + + + + - - - - - - + id="g3899"> + + + + + + + + + + + + + + + + + + + + + + - - diff --git a/src/Mod/Arch/Resources/icons/Arch_StructuralSystem_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_StructuralSystem_Tree.svg index dd05a7d39cfb..5d0b0dcecc17 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"> + + + style="fill:none;stroke:#729fcf;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 12;stroke-dashoffset:0" + d="M 59,49 5,27" + id="path3879-2" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> - - - - - - - - - - - - - - - - + style="fill:none;stroke:#0b1521;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 12;stroke-dashoffset:0" + d="M 5,43 29,61" + id="path3915" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + + + + + + + + + - - - - - - + id="g3899"> + + + + + + + + + + + + + + + + + + + - - + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Structure.svg b/src/Mod/Arch/Resources/icons/Arch_Structure.svg index 1f3fd7ede148..860b244bc795 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" /> + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + id="path3907" + 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" /> + id="path3909" + 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" /> + sodipodi:nodetypes="ccccc" /> + 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 3b9f2659cdea..04607698feac 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="linearGradient3930"> + id="stop3932" /> + id="stop3934" /> + + 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" /> + + + + + + + + + + + + + + + + + + + + + + + id="path3907" + 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" /> + id="path3909" + 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" /> + sodipodi:nodetypes="ccccc" /> + sodipodi:nodetypes="ccccc" /> + style="fill:url(#linearGradient3071);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 17.001183,56.881448 6,-4 0,-16 -6,-2 z" + id="path3908" + inkscape:connector-curvature="0" /> + style="fill:url(#linearGradient3984);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 27.001183,50.881448 0,-14 -4,-1 0,14 z" + id="path3910" + 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.96330416;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.0444463,30.352647)" /> + style="fill:#0b1521;fill-opacity:1;stroke:#0b1521;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" + d="m 8.6516993,42.34747 6.8434877,-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.4065439,-0.126573 -1.0163589,-1.329024 C 8.5839424,42.790478 8.6516993,42.34747 8.6516993,42.34747 z" + id="path3794" + inkscape:connector-curvature="0" /> + style="fill:#0b1521;fill-opacity:1;stroke:#0b1521;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" + d="m 26.03351,42.34747 -6.843487,-0.253147 c 0,0 0.271029,1.39231 1.964962,2.341612 1.693932,0.949304 3.320107,0.886016 3.320107,0.886016 0,0 0.406544,-0.126573 1.01636,-1.329024 0.609815,-1.202449 0.542058,-1.645457 0.542058,-1.645457 z" + id="path3794-0" + inkscape:connector-curvature="0" /> + style="fill:#0b1521;fill-opacity:1;stroke:#0b1521;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + d="m 7.7708538,45.701672 1.6581313,1.947062 -1.2696589,1.61102 c 0,0 -0.3114258,-0.559381 -0.359338,-1.432017 -0.04791,-0.872636 -0.029135,-2.126065 -0.029135,-2.126065 z" + id="path3816" + inkscape:connector-curvature="0" /> + inkscape:transform-center-x="-0.81449848" /> + sodipodi:nodetypes="cszscc" /> + sodipodi:type="arc" + style="color:#000000;fill:#0b1521;fill-opacity:1;fill-rule:evenodd;stroke:#0b1521;stroke-width:1.96330416;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-8" + 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,12.375551,30.151269)" /> - - - - - - - - - - - - + sodipodi:nodetypes="csc" /> diff --git a/src/Mod/Arch/Resources/icons/Arch_Structure_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Structure_Tree.svg index 6514d3de8e97..174b5f341c47 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" /> + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + id="path3907" + 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" /> + id="path3909" + 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" /> + sodipodi:nodetypes="ccccc" /> + sodipodi:nodetypes="ccccc" /> diff --git a/src/Mod/Arch/Resources/icons/Arch_Survey.svg b/src/Mod/Arch/Resources/icons/Arch_Survey.svg index 3965f0350e33..a00af945eab0 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 f3acb37e4b5b..f3d98a040f4f 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" /> + style="fill:none;stroke:#73d216;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 19.000777,22.325822 14.005903,-6.243727 -0.0039,29.495136 -13.991686,6.364864 z" + id="path2995" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + style="color:#000000;fill:none;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 17,55 35,13 3,11" + id="path3057" + 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 3de5fc3b580c..0dbd5fa7fc2a 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 77b155b856f6..1bfbda30bb3e 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"> - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - diff --git a/src/Mod/Arch/Resources/icons/Arch_Wall_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Wall_Tree.svg index 4eced1df39c7..5d7335ba5a3c 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"> - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - 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 57db4d808b70..265cd54ee0e7 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"> - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + - - + sodipodi:nodetypes="cc" /> + sodipodi:nodetypes="cc" /> - - - - - - + sodipodi:nodetypes="cc" /> + sodipodi:nodetypes="cc" /> - - + 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 73a6c037560d..69160440f131 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 a1bb541718ff..42ec5048cdd0 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="csc" /> diff --git a/src/Mod/Arch/Resources/icons/Arch_Window_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Window_Tree.svg index 71a1c72fefac..9d2894afa718 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 94d505329467..f6675d176032 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 4bf8b512c8ec16f7e4d802820a84893cf77ad953 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 | 1012 ++-------- .../Resources/icons/Arch_Equipment_Clone.svg | 1170 +++-------- .../Resources/icons/Arch_Equipment_Tree.svg | 1088 +++-------- 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 | 1574 +++------------ .../Arch/Resources/icons/Arch_Frame_Tree.svg | 1732 +++-------------- .../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 | 822 ++------ .../Arch/Resources/icons/Arch_Rebar_Tree.svg | 822 ++------ 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, 6730 insertions(+), 28765 deletions(-) diff --git a/src/Mod/Arch/Resources/icons/ArchWorkbench.svg b/src/Mod/Arch/Resources/icons/ArchWorkbench.svg index 17f77eb52cda..5711d860829a 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 4f043da7eedb..d3a88fd4abc0 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 f4dd7a3761d6..18db382fb55e 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 07fab020940b..03d635a9d19e 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 3fbfe6d70b4e..6ac98b41e879 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 9388f9a6c7a7..0236b3b18ce1 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 98cae6c14647..f549fd72aaf6 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 9bde40660f7e..c6903c7c7df9 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 5d6b6b24b1a8..07805912d62e 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 d81656bb10f9..da7b6f7241f7 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 1410444af247..9ab7b88a12a1 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 03cb6409ef4d..4c46f27a5c3d 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 bdd1c381ebf7..5e260dd36c09 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 6ecca1c18076..eca21b60746e 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 fb85322408ca..6eb2aadde9c5 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 f50eadaaa7c7..d35ce897c673 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 81990683dfbe..bf710c67a32d 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 942154516a48..2014eef8fb2f 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 70ab868dd3f6..2094ecfb91c8 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 836ae762bdcb..05e201363135 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 2fed688bdef9..07cdf703b68e 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 9ab14f429f75..4a7ea5c9ab3b 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 680aff1f629f..a2937dbb7121 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 ac8fd8c6f736..4a6bb9b840e2 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 9aa8a1617631..a4e6447b84e9 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 95fe788d667c..a6f2ed50cbc8 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 65074e58a4f7..a8168584628c 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 2c44d774addf..1cd4e873fb03 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 7086bb0501a5..89784292ab9d 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 7c9781d546ab..bd12afb51ed1 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 c31ffef4a44f..906398d0eee4 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 a4ec20d8f27a..74df01037097 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 cfed2d8c0141..1fa4b23eb1fd 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 e362507ab469..af7045bbd80b 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 4321acfdb996..fed850ea00cb 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 81db1467a6e2..77ad45cf2e52 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 a9e819c2ba9a..bd5f2c81c49e 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 fceada142532..0dd0b7698e25 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 6032033c8298..0f1e14617c51 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 5b81be52a1b5..393ba9879b5f 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 68a0c4cf5ce9..25328ac65cf2 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 516fbe918b56..47bc65fa9887 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 3b188d46cf77..9bf5b3ea8780 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 c7e086c4bdd6..13fdb94afce7 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 8991c1190ffa..38a3ebbb85ef 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 c7bd65880679..1545a06d9ca6 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 a91dcb290ff3..a4c1f4b38816 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 dcf63e91264c..83fe9c30a55d 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 6923eb7b4dd3..b2b69525778e 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 73b0afdaf7f9..add894af6ad9 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 99aa48f4a8b2..62007ac309bf 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 35eade36e7ae..740715a8c0e6 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 5d0b0dcecc17..4932ff1836b9 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 860b244bc795..bae94bf4b424 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 04607698feac..81982ce25cfc 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 174b5f341c47..54d1155e58f7 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 a00af945eab0..58fb62ccc0e1 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 f3d98a040f4f..d5dd308dfea3 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 0dbd5fa7fc2a..993c0e6f6e40 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 1bfbda30bb3e..5065f4533681 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 5d7335ba5a3c..a5d2f106ab13 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 265cd54ee0e7..fb7ec5f5cf7e 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 69160440f131..d3dcdb82ddd4 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 42ec5048cdd0..db138304f168 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 9d2894afa718..d96ae5b14b7f 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 f6675d176032..957585a4c6b1 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 1f43ad794379bac2c0eba690f51f6768d00a8273 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 4c3455bf50a4..ac5b29737992 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 1cd4e873fb03..6cd3248c3a8f 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 8e87cd6611d2bc99f5b9246be9527587072fa710 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 0236b3b18ce1..33f916c47bca 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 032ead09b573348ac5634a039b093d26cb0d4039 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 5711d860829a..c55eabaa85bb 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 957585a4c6b1..0840f4334b1a 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 @@ - - - - - - - - + + + + + + + + - - - - - - + + + + + + - - - - - - + + + + + +