summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/python/main.py29
-rw-r--r--src/main/python/utils/app.py12
-rw-r--r--src/main/python/utils/canvas.py2
-rw-r--r--src/main/python/utils/dialogs.py1
-rw-r--r--src/main/python/utils/fileWindow.py16
-rw-r--r--src/main/python/utils/layout.py2
-rw-r--r--src/main/python/utils/tabs.py22
-rw-r--r--src/main/python/utils/toolbar.py42
-rw-r--r--src/main/resources/base/Compressors/Centrifugal Compressor.svg123
-rw-r--r--src/main/resources/base/Compressors/Ejector Compressor.svg66
-rw-r--r--src/main/resources/base/Compressors/Fan.svg109
-rw-r--r--src/main/resources/base/Compressors/Positive Displacement Compressor.svg94
-rw-r--r--src/main/resources/base/Compressors/Reciprocating Compressor.svg99
-rw-r--r--src/main/resources/base/Compressors/Turbine.svg104
-rw-r--r--src/main/resources/base/app.qss203
-rw-r--r--src/main/resources/base/config/items.json233
-rw-r--r--src/main/resources/base/svg/Furnaces and Boilers/Oil Gas or Pulverized Fuel Furnace.svg204
-rw-r--r--src/main/resources/base/svg/Furnaces and Boilers/Solid Fuel Furnace.svg107
-rw-r--r--src/main/resources/base/svg/Heating or Cooling Arrangements/905Exchanger.svg85
-rw-r--r--src/main/resources/base/svg/Heating or Cooling Arrangements/907Kettle Reboiler.svg93
-rw-r--r--src/main/resources/base/svg/Heating or Cooling Arrangements/Exchanger.svg101
-rw-r--r--src/main/resources/base/svg/Heating or Cooling Arrangements/Heat Exchanger.svg74
-rw-r--r--src/main/resources/base/svg/Heating or Cooling Arrangements/Immersion Coil.svg40
-rw-r--r--src/main/resources/base/svg/Heating or Cooling Arrangements/Kettle Reboiler.svg83
-rw-r--r--src/main/resources/base/svg/Process Vessels/Horizontal Vessel.svg145
-rw-r--r--src/main/resources/base/svg/Process Vessels/Packed Vessel.svg144
-rw-r--r--src/main/resources/base/svg/Process Vessels/Trays or plates.svg64
-rw-r--r--src/main/resources/base/svg/Process Vessels/Vertical Vessel.svg107
-rw-r--r--src/main/resources/base/svg/Pumps/Duplex Pump.svg156
-rw-r--r--src/main/resources/base/svg/Separators/Separators for Liquids, Decanter.svg75
-rw-r--r--src/main/resources/base/svg/Storage Vessels Tanks/Fixed Roof Tank.svg34
-rw-r--r--src/main/resources/base/svg/Storage Vessels Tanks/Floating Roof Tank.svg82
-rw-r--r--src/main/resources/base/svg/Valves/Gate Valve.svg62
-rw-r--r--src/main/resources/base/svg/Valves/Globe Valve.svg46
-rw-r--r--src/main/resources/base/toolbar/Compressors/Centrifugal Compressor.pngbin1413 -> 1413 bytes
-rw-r--r--src/main/resources/base/toolbar/Compressors/Ejector Compressor.pngbin1126 -> 1126 bytes
-rw-r--r--src/main/resources/base/toolbar/Compressors/Fan.pngbin1600 -> 1600 bytes
-rw-r--r--src/main/resources/base/toolbar/Compressors/Positive Displacement Compressor.pngbin1098 -> 1098 bytes
-rw-r--r--src/main/resources/base/toolbar/Compressors/Reciprocating Compressor.pngbin1091 -> 1091 bytes
-rw-r--r--src/main/resources/base/toolbar/Compressors/Turbine.pngbin1368 -> 1368 bytes
-rw-r--r--src/main/resources/base/toolbar/Furnaces and Boilers/Oil Gas or Pulverized Fuel Furnace.pngbin0 -> 1296 bytes
-rw-r--r--src/main/resources/base/toolbar/Furnaces and Boilers/Solid Fuel Furnace.pngbin0 -> 1332 bytes
-rw-r--r--src/main/resources/base/toolbar/Heating or Cooling Arrangements/905Exchanger.pngbin0 -> 1134 bytes
-rw-r--r--src/main/resources/base/toolbar/Heating or Cooling Arrangements/907Kettle Reboiler.pngbin0 -> 1224 bytes
-rw-r--r--src/main/resources/base/toolbar/Heating or Cooling Arrangements/Exchanger.pngbin0 -> 2145 bytes
-rw-r--r--src/main/resources/base/toolbar/Heating or Cooling Arrangements/Heat Exchanger.pngbin0 -> 2140 bytes
-rw-r--r--src/main/resources/base/toolbar/Heating or Cooling Arrangements/Immersion Coil.pngbin0 -> 1570 bytes
-rw-r--r--src/main/resources/base/toolbar/Heating or Cooling Arrangements/Kettle Reboiler.pngbin0 -> 2445 bytes
-rw-r--r--src/main/resources/base/toolbar/Piping/Inflow Line.pngbin1185 -> 1185 bytes
-rw-r--r--src/main/resources/base/toolbar/Piping/Outflow Line.pngbin1244 -> 1244 bytes
-rw-r--r--src/main/resources/base/toolbar/Process Vessels/Horizontal Vessel.pngbin0 -> 1053 bytes
-rw-r--r--src/main/resources/base/toolbar/Process Vessels/Packed Vessel.pngbin0 -> 1710 bytes
-rw-r--r--src/main/resources/base/toolbar/Process Vessels/Trays or plates.pngbin0 -> 992 bytes
-rw-r--r--src/main/resources/base/toolbar/Process Vessels/Vertical Vessel.pngbin0 -> 1048 bytes
-rw-r--r--src/main/resources/base/toolbar/Pumps/Blowing Egg.pngbin1556 -> 1556 bytes
-rw-r--r--src/main/resources/base/toolbar/Pumps/Duplex Pump.pngbin1387 -> 1368 bytes
-rw-r--r--src/main/resources/base/toolbar/Pumps/Ejector(Vapor Service).pngbin1106 -> 1106 bytes
-rw-r--r--src/main/resources/base/toolbar/Pumps/Hand Pump with Drum.pngbin2166 -> 2166 bytes
-rw-r--r--src/main/resources/base/toolbar/Pumps/Plunger Pump.pngbin1057 -> 1057 bytes
-rw-r--r--src/main/resources/base/toolbar/Pumps/Proportioning Pump.pngbin1272 -> 1272 bytes
-rw-r--r--src/main/resources/base/toolbar/Pumps/Reciprocating Pump.pngbin1258 -> 1258 bytes
-rw-r--r--src/main/resources/base/toolbar/Separators/Separators for Liquids, Decanter.pngbin0 -> 946 bytes
-rw-r--r--src/main/resources/base/toolbar/Storage Vessels Tanks/Fixed Roof Tank.pngbin0 -> 1167 bytes
-rw-r--r--src/main/resources/base/toolbar/Storage Vessels Tanks/Floating Roof Tank.pngbin0 -> 1485 bytes
-rw-r--r--src/main/resources/base/toolbar/Valves/Gate Valve.pngbin0 -> 980 bytes
-rw-r--r--src/main/resources/base/toolbar/Valves/Globe Valve.pngbin0 -> 978 bytes
-rw-r--r--src/main/resources/base/ui/close.svg60
67 files changed, 2096 insertions, 823 deletions
diff --git a/src/main/python/main.py b/src/main/python/main.py
index ed64570..9def7fb 100644
--- a/src/main/python/main.py
+++ b/src/main/python/main.py
@@ -60,11 +60,6 @@ class appWindow(QMainWindow):
# self.resize(1280, 720) #set collapse dim
self.mdi.subWindowActivated.connect(self.tabSwitched)
self.readSettings()
-
- def updateMenuBar(self):
- # used to update menu bar undo-redo buttons to current scene
- self.undo.triggered.connect(self.activeScene.painter.undoAction.trigger())
- self.redo.triggered.connect(self.activeScene.painter.redoAction.trigger())
def createToolbar(self):
#place holder for toolbar with fixed width, layout may change
@@ -76,13 +71,14 @@ class appWindow(QMainWindow):
self.toolbar.populateToolbar()
def toolButtonClicked(self, object):
- currentDiagram = self.mdi.currentSubWindow().tabber.currentWidget().painter
- if currentDiagram:
- graphic = getattr(shapes, object['object'])(*map(lambda x: int(x) if x.isdigit() else x, object['args']))
- # graphic.setPen(QPen(Qt.black, 2))
- # graphic.setFlags(QGraphicsItem.ItemIsSelectable | QGraphicsItem.ItemIsMovable)
- currentDiagram.addItemPlus(graphic)
- graphic.setPos(20, 20)
+ if self.mdi.currentSubWindow():
+ currentDiagram = self.mdi.currentSubWindow().tabber.currentWidget().painter
+ if currentDiagram:
+ graphic = getattr(shapes, object['object'])(*map(lambda x: int(x) if x.isdigit() else x, object['args']))
+ # graphic.setPen(QPen(Qt.black, 2))
+ # graphic.setFlags(QGraphicsItem.ItemIsSelectable | QGraphicsItem.ItemIsMovable)
+ currentDiagram.addItemPlus(graphic)
+ graphic.setPos(20, 20)
def newProject(self):
#call to create a new file inside mdi area
@@ -93,7 +89,6 @@ class appWindow(QMainWindow):
project.newDiagram() #create a new tab in the new file
# project.resizeHandler()
project.fileCloseEvent.connect(self.fileClosed) #closed file signal to switch to sub window view
- project.tabChangeEvent.connect(self.updateMenuBar)
if self.count > 1: #switch to tab view if needed
self.mdi.setViewMode(QMdiArea.TabbedView)
project.show()
@@ -110,7 +105,6 @@ class appWindow(QMainWindow):
project.__setstate__(projectData)
project.resizeHandler()
project.fileCloseEvent.connect(self.fileClosed)
- project.tabChangeEvent.connect(self.updateMenuBar)
project.show()
if self.count > 1:
# self.tabSpace.setVisible(True)
@@ -218,12 +212,7 @@ class appWindow(QMainWindow):
else:
return
event.accept()
-
- elif event.key() == Qt.Key_Delete or event.key() == Qt.Key_Backspace:
- for item in reversed(self.mdi.activeSubWindow().tabber.currentWidget().painter.selectedItems()):
- # self.mdi.currentSubWindow().tabber.currentWidget().deleteItem(item)
- pass
- #donot delete, to manage undo redo
+
if __name__ == '__main__': # 1. Instantiate ApplicationContext
diff --git a/src/main/python/utils/app.py b/src/main/python/utils/app.py
index 4cc8228..96a45b0 100644
--- a/src/main/python/utils/app.py
+++ b/src/main/python/utils/app.py
@@ -3,7 +3,9 @@ Declare fbs application so that it can be imported in other modules.
"""
from fbs_runtime.application_context.PyQt5 import ApplicationContext
-from PyQt5.QtCore import QSettings
+from PyQt5.QtCore import QSettings, pyqtProperty
+from PyQt5.QtGui import QIcon
+from PyQt5.QtWidgets import QWidget
from json import JSONEncoder, dumps, loads, dump, load
from os.path import join
@@ -15,6 +17,9 @@ def fileImporter(*file):
# Helper function to fetch files from src/main/resources
return app.get_resource(join(*file))
+with open(fileImporter("app.qss"), "r") as stylesheet:
+ app.app.setStyleSheet(stylesheet.read())
+
class JSON_Encoder:
def _encode(obj):
@@ -52,6 +57,9 @@ class JSON_Typer(JSONEncoder):
def encode(self, obj):
return super(JSON_Typer, self).encode(self._encode(obj))
-
+
+
+importer = pyqtProperty(str, fileImporter)
+
shapeGrips = {}
lines = {} \ No newline at end of file
diff --git a/src/main/python/utils/canvas.py b/src/main/python/utils/canvas.py
index 66d38e8..c860bbb 100644
--- a/src/main/python/utils/canvas.py
+++ b/src/main/python/utils/canvas.py
@@ -16,7 +16,7 @@ class canvas(QWidget):
for context menu and dialogs.
"""
- def __init__(self, parent=None, size= 'A4', ppi= '72' , parentMdiArea = None, parentFileWindow = None, landscape=False):
+ def __init__(self, parent=None, size= 'A0', ppi= '72' , parentMdiArea = None, parentFileWindow = None, landscape=True):
super(canvas, self).__init__(parent)
#Store values for the canvas dimensions for ease of access, these are here just to be
diff --git a/src/main/python/utils/dialogs.py b/src/main/python/utils/dialogs.py
index 79685c5..f2c4eb9 100644
--- a/src/main/python/utils/dialogs.py
+++ b/src/main/python/utils/dialogs.py
@@ -58,7 +58,6 @@ class paperDims(QDialog):
super(paperDims, self).exec_()
self.deleteLater() #remove from memory
#if ok was pressed return value else return None
- print(self.landscapeCheckBox.isChecked())
return (self.returnCanvasSize, self.returnCanvasPPI, self.landscapeCheckBox.isChecked()) if self.result() else None
class sideViewSwitchDialog(QDialog):
diff --git a/src/main/python/utils/fileWindow.py b/src/main/python/utils/fileWindow.py
index e0f5652..a5ed535 100644
--- a/src/main/python/utils/fileWindow.py
+++ b/src/main/python/utils/fileWindow.py
@@ -20,7 +20,7 @@ class fileWindow(QMdiSubWindow):
fileCloseEvent = pyqtSignal(int)
tabChangeEvent = pyqtSignal()
- def __init__(self, parent = None, title = 'New Project', size = 'A4', ppi = '72'):
+ def __init__(self, parent = None, title = 'New Project', size = 'A0', ppi = '72'):
super(fileWindow, self).__init__(parent)
self._sideViewTab = None
self.index = None
@@ -61,20 +61,6 @@ class fileWindow(QMdiSubWindow):
self.sideView.setInteractive(False)
self.sideViewCloseButton = QPushButton('×', self.sideView)
self.sideViewCloseButton.setFlat(True)
- self.sideViewCloseButton.setStyleSheet("""QPushButton{
- background: rgba(214, 54, 40, 50%);
- border: 1px groove white;
- border-radius: 2px;
- font-size: 18px;
- font-weight: Bold;
- padding: 1px 2px 3px 3px;
- color: rgba(255, 255, 255, 50%);
- }
- QPushButton:Hover{
- background: rgba(214, 54, 40, 90%);
- color: rgba(255, 255, 255, 90%);
- }
- """)
self.sideViewCloseButton.setFixedSize(20, 20)
self.moveSideViewCloseButton()
self.sideViewCloseButton.clicked.connect(lambda: setattr(self, 'sideViewTab', None))
diff --git a/src/main/python/utils/layout.py b/src/main/python/utils/layout.py
index 6781249..ac37358 100644
--- a/src/main/python/utils/layout.py
+++ b/src/main/python/utils/layout.py
@@ -2,7 +2,7 @@ from PyQt5.QtCore import Qt, QRect, QPoint, QSize
from PyQt5.QtWidgets import QLayout, QSizePolicy
class flowLayout(QLayout):
- def __init__(self, parent=None, margin=0, spacing=-1):
+ def __init__(self, parent=None, margin=0, spacing=12):
super(flowLayout, self).__init__(parent)
if parent is not None:
diff --git a/src/main/python/utils/tabs.py b/src/main/python/utils/tabs.py
index 5196557..1431db2 100644
--- a/src/main/python/utils/tabs.py
+++ b/src/main/python/utils/tabs.py
@@ -41,19 +41,9 @@ class customTabWidget(QTabWidget):
self.plusButton = QPushButton('+', self) #create the new tab button
#style the new tab button
self.plusButton.setFlat(True)
- self.plusButton.setStyleSheet("""
- QPushButton{
- background: rgba(230, 230, 227, 0%);
- padding: 1px;
- border: 0px solid #E6E6E3;
-
- }
- QPushButton:hover{
- background: rgba(230, 230, 227, 60%);
- }""")
#and parent it to the widget to add it at 0, 0
- self.plusButton.setFixedSize(35, 25) #set dimensions
+ self.plusButton.setFixedSize(25, 25) #set dimensions
self.plusButton.clicked.connect(self.plusClicked.emit) #emit signal on click
#set flags
self.setMovable(True)
@@ -64,23 +54,17 @@ class customTabWidget(QTabWidget):
self.tab.nameChanged.connect(self.changeWidgetName)
#set custom stylesheet for the widget area
- self.setStyleSheet("""QTabWidget::pane {
- margin: 0px,1px,1px,1px;
- border: 2px solid #E6E6E3;
- border-radius: 7px;
- padding: 1px;
- background-color: #E6E6E3;}""")
def movePlusButton(self):
#move the new tab button to correct location
size = sum([self.tab.tabRect(i).width() for i in range(self.tab.count())])
# calculate width of all tabs
- h = max(self.tab.geometry().bottom() - self.plusButton.height(), 0) #align with bottom of tabbar
+ h = max(self.tab.geometry().bottom() - self.plusButton.height()-10, -5) #align with bottom of tabbar
w = self.tab.width()
if size > w: #if all the tabs do not overflow the tab bar, add at the end
self.plusButton.move(w-self.plusButton.width(), h)
else:
- self.plusButton.move(size-3, h)
+ self.plusButton.move(size+5, h)
def changeWidgetName(self, index, newName):
self.widget(index).setObjectName(newName) \ No newline at end of file
diff --git a/src/main/python/utils/toolbar.py b/src/main/python/utils/toolbar.py
index 90b46fb..220504b 100644
--- a/src/main/python/utils/toolbar.py
+++ b/src/main/python/utils/toolbar.py
@@ -2,11 +2,11 @@ from fbs_runtime.application_context.PyQt5 import ApplicationContext
from PyQt5.QtCore import QSize, Qt, pyqtSignal, QMimeData
from PyQt5.QtGui import QIcon, QDrag
from PyQt5.QtWidgets import (QBoxLayout, QDockWidget, QGridLayout, QLineEdit,
- QScrollArea, QToolButton, QWidget, QApplication, QStyle, QLabel)
+ QScrollArea, QToolButton, QWidget, QStyle, QLabel)
from re import search, IGNORECASE
from .data import toolbarItems
-from .app import fileImporter
+from .app import fileImporter, app
from .layout import flowLayout
# resourceManager = ApplicationContext() #Used to load images, mainly toolbar icons
@@ -39,14 +39,14 @@ class toolbar(QDockWidget):
#create a scrollable area to house all buttons
self.diagArea = QScrollArea(self)
- self.diagArea.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
+ self.diagArea.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
self.diagArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.diagArea.setWidgetResizable(True)
self.layout.addWidget(self.diagArea, stretch=1)
self.diagAreaWidget = QWidget(self.diagArea) #inner widget for scroll area
#custom layout for inner widget
self.diagAreaLayout = flowLayout(self.diagAreaWidget)
-
+ self.diagAreaLayout.setSizeConstraint(flowLayout.SetMinimumSize)
self.setWidget(self.widget) #set main widget to dockwidget
def clearLayout(self):
@@ -81,18 +81,25 @@ class toolbar(QDockWidget):
parent = self.parentWidget() #used to get parent dimensions
self.layout.setDirection(QBoxLayout.TopToBottom) # here so that a horizontal toolbar can be implemented later
# self.setFixedHeight(self.height()) #span available height
- width = self.width() - QApplication.style().pixelMetric(QStyle.PM_ScrollBarExtent)
+ self.searchBox.setMinimumWidth(.18*parent.width())
+ width = self.width()
+ scrollBar = self.diagArea.verticalScrollBar()
+ height = self.diagAreaLayout.heightForWidth(width)
+ if scrollBar.isVisible():
+ width -= app.app.style().pixelMetric(QStyle.PM_ScrollBarExtent)
# the following line, sets the required height for the current width, so that blank space doesnt occur
- self.diagAreaWidget.setMinimumHeight(self.diagAreaLayout.heightForWidth(width))
- self.setMinimumWidth(.17*parent.width()) #12% of parent width
+ self.diagAreaWidget.setMinimumHeight(height)
+ self.setMinimumWidth(.2*parent.width()) #12% of parent width
# self.setMinimumWidth(self.diagAreaLayout.minimumSize().width()) #12% of parent width
self.diagAreaWidget.setLayout(self.diagAreaLayout)
self.diagArea.setWidget(self.diagAreaWidget)
for _, label in self.toolbarLabelDict.items():
- label.setFixedSize(width, 20)
-
+ label.setFixedWidth(width)
+
+ def resizeEvent(self, event):
+ self.resize()
def toolbarItems(self, itemClasses):
#helper functions to create required buttons
@@ -139,7 +146,7 @@ class toolbarButton(QToolButton):
#handles drag
if not (event.buttons() and Qt.LeftButton):
return #ignore if left click is not held
- if (event.pos() - self.dragStartPosition).manhattanLength() < QApplication.startDragDistance():
+ if (event.pos() - self.dragStartPosition).manhattanLength() < app.app.startDragDistance():
return #check if mouse was dragged enough, manhattan length is a rough and quick method in qt
drag = QDrag(self) #create drag object
@@ -154,18 +161,9 @@ class toolbarButton(QToolButton):
def minimumSizeHint(self):
#defines button size
- return QSize(40, 40)
-
+ return QSize(55, 55)
+
class sectionLabel(QLabel):
def __init__(self, *args):
- super(sectionLabel, self).__init__(*args)
- self.setAlignment(Qt.AlignHCenter)
- self.setStyleSheet("""
- QLabel{
- background-color: #E6E6E3;
- border: 2px solid gray;
- border-left: 0px;
- background-clip: padding;
- }
- """) \ No newline at end of file
+ super(sectionLabel, self).__init__(*args) \ No newline at end of file
diff --git a/src/main/resources/base/Compressors/Centrifugal Compressor.svg b/src/main/resources/base/Compressors/Centrifugal Compressor.svg
deleted file mode 100644
index 15ae554..0000000
--- a/src/main/resources/base/Compressors/Centrifugal Compressor.svg
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- 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"
- sodipodi:docname="Centrifugal Compressor.svg"
- inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
- id="svg989"
- version="1.1"
- viewBox="0 0 39.831303 20.844073"
- height="20.844072mm"
- width="39.831303mm">
- <defs
- id="defs983">
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4621"
- id="linearGradient4623"
- x1="552.6012"
- y1="62.347649"
- x2="557.84564"
- y2="62.347649"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-432.22912,85.871922)" />
- <linearGradient
- id="linearGradient4621"
- osb:paint="solid">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop4619" />
- </linearGradient>
- </defs>
- <sodipodi:namedview
- inkscape:window-maximized="0"
- inkscape:window-y="0"
- inkscape:window-x="157"
- inkscape:window-height="1020"
- inkscape:window-width="1741"
- showgrid="false"
- inkscape:document-rotation="0"
- inkscape:current-layer="layer1"
- inkscape:document-units="mm"
- inkscape:cy="65.68083"
- inkscape:cx="89.712248"
- inkscape:zoom="3.959798"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base" />
- <metadata
- id="metadata986">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(-85.917679,-137.82627)"
- id="layer1"
- inkscape:groupmode="layer"
- inkscape:label="Layer 1">
- <g
- id="g1606">
- <path
- inkscape:connector-curvature="0"
- id="path3798"
- d="m 96.20808,137.99608 20.59969,5.19717 v 10.20535 l -20.59969,5.10268 z"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- inkscape:connector-curvature="0"
- id="path3800"
- d="M 96.25532,145.63828 H 86.04997 v 5.10268 H 96.3498"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- inkscape:connector-curvature="0"
- id="path3802"
- d="m 116.68966,148.22506 h 3.59077"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- inkscape:connector-curvature="0"
- id="path3806"
- d="m 102.64232,137.9183 v 1.68714"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- inkscape:connector-curvature="0"
- id="path3810"
- d="m 110.9019,137.90158 v 3.9215"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <rect
- style="fill:#ffffff;stroke:url(#linearGradient4623);stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none"
- y="145.73911"
- x="120.37206"
- height="4.9609375"
- width="5.2444196"
- id="rect3812" />
- <text
- id="text4627"
- y="149.72087"
- x="121.21709"
- style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
- xml:space="preserve"><tspan
- style="font-size:4.23333px;stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none"
- y="149.72087"
- x="121.21709"
- id="tspan4625"
- sodipodi:role="line">M</tspan></text>
- </g>
- </g>
-</svg>
diff --git a/src/main/resources/base/Compressors/Ejector Compressor.svg b/src/main/resources/base/Compressors/Ejector Compressor.svg
deleted file mode 100644
index cb345d1..0000000
--- a/src/main/resources/base/Compressors/Ejector Compressor.svg
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- 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"
- id="svg983"
- version="1.1"
- viewBox="0 0 24.561319 6.5105553"
- height="6.5105553mm"
- width="24.561319mm">
- <defs
- id="defs977">
- <linearGradient
- xlink:href="#linearGradient5003"
- id="linearGradient5005"
- x1="523.9151"
- y1="136.07031"
- x2="530.93091"
- y2="136.07031"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.9248707,0,0,0.9248707,-356.29188,11.161605)" />
- <linearGradient
- id="linearGradient5003"
- osb:paint="solid">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop5001" />
- </linearGradient>
- </defs>
- <metadata
- id="metadata980">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(-128.12939,-133.68995)"
- id="layer1">
- <g
- style="stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none"
- id="g1575">
- <rect
- y="133.95006"
- x="128.26189"
- height="6.1179466"
- width="6.4887304"
- id="rect4999"
- style="fill:#ffffff;stroke:url(#linearGradient5005);stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- id="path5007"
- d="m 134.83292,138.79118 17.72492,1.07719 -0.0246,-6.03313 -17.72329,1.67043"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- </g>
- </g>
-</svg>
diff --git a/src/main/resources/base/Compressors/Fan.svg b/src/main/resources/base/Compressors/Fan.svg
deleted file mode 100644
index b23a097..0000000
--- a/src/main/resources/base/Compressors/Fan.svg
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- 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"
- id="svg1609"
- version="1.1"
- viewBox="0 0 22.314726 10.768025"
- height="10.768025mm"
- width="22.314726mm">
- <defs
- id="defs1603">
- <linearGradient
- xlink:href="#linearGradient5019"
- id="linearGradient5021"
- x1="526.4541"
- y1="146.42702"
- x2="537.41211"
- y2="146.42702"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-217.02286,-18.174328)" />
- <linearGradient
- id="linearGradient5019"
- osb:paint="solid">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop5017" />
- </linearGradient>
- <linearGradient
- xlink:href="#linearGradient5019"
- id="linearGradient5025"
- gradientUnits="userSpaceOnUse"
- x1="526.4541"
- y1="146.42702"
- x2="537.41211"
- y2="146.42702"
- gradientTransform="translate(-205.93117,-18.174328)" />
- <linearGradient
- xlink:href="#linearGradient5019"
- id="linearGradient5035"
- gradientUnits="userSpaceOnUse"
- x1="550.97614"
- y1="119.36598"
- x2="555.65332"
- y2="119.36598"
- gradientTransform="translate(-232.85061,15.414093)" />
- </defs>
- <metadata
- id="metadata1606">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(-87.872402,-124.6398)"
- id="layer1">
- <g
- style="stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none"
- id="g5850"
- transform="translate(-221.42632,-1.7097248)">
- <ellipse
- ry="1.7706606"
- rx="5.4790258"
- cy="128.25269"
- cx="314.91025"
- id="path5015"
- style="fill:#ffffff;stroke:url(#linearGradient5021);stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none" />
- <ellipse
- style="fill:#ffffff;stroke:url(#linearGradient5025);stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none"
- id="ellipse5023"
- cx="326.00192"
- cy="128.25269"
- rx="5.4790258"
- ry="1.7706606" />
- <path
- id="path5027"
- d="m 320.45616,128.48655 v 4.00904"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <rect
- style="fill:#ffffff;stroke:url(#linearGradient5035);stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none"
- id="rect5029"
- width="4.6772165"
- height="4.4099469"
- x="318.12555"
- y="132.5751" />
- <text
- xml:space="preserve"
- style="font-style:normal;font-weight:normal;font-size:3.52778px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
- x="318.94144"
- y="136.06596"
- id="text5033"><tspan
- id="tspan5031"
- x="318.94144"
- y="136.06596"
- style="font-size:3.52778px;stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none">M</tspan></text>
- </g>
- </g>
-</svg>
diff --git a/src/main/resources/base/Compressors/Positive Displacement Compressor.svg b/src/main/resources/base/Compressors/Positive Displacement Compressor.svg
deleted file mode 100644
index 99802b2..0000000
--- a/src/main/resources/base/Compressors/Positive Displacement Compressor.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- 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"
- id="svg1647"
- version="1.1"
- viewBox="0 0 19.206747 19.125592"
- height="19.125591mm"
- width="19.206747mm">
- <defs
- id="defs1641">
- <linearGradient
- xlink:href="#linearGradient4635"
- id="linearGradient4637"
- x1="532.47394"
- y1="91.475433"
- x2="540.97839"
- y2="91.475433"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-393.96549,71.734459)" />
- <linearGradient
- id="linearGradient4635"
- osb:paint="solid">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop4633" />
- </linearGradient>
- <marker
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow2Lstart"
- style="overflow:visible">
- <path
- id="path4665"
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- transform="matrix(1.1,0,0,1.1,1.1,0)" />
- </marker>
- <marker
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow2Lend"
- style="overflow:visible">
- <path
- id="path4668"
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
- </marker>
- </defs>
- <metadata
- id="metadata1644">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(-133.31128,-156.841)"
- id="layer1">
- <g
- style="stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none"
- id="g2332">
- <path
- id="path4629"
- d="m 133.31128,173.98222 h 4.06326 v -17.00893 h 11.24479 l -0.0236,17.03255 3.9215,-0.0236"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <rect
- y="162.07596"
- x="138.50845"
- height="2.2678571"
- width="8.5044641"
- id="rect4631"
- style="fill:#ffffff;stroke:url(#linearGradient4637);stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- id="path4639"
- d="m 142.76069,164.43832 v 11.52827"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- </g>
- </g>
-</svg>
diff --git a/src/main/resources/base/Compressors/Reciprocating Compressor.svg b/src/main/resources/base/Compressors/Reciprocating Compressor.svg
deleted file mode 100644
index 521e144..0000000
--- a/src/main/resources/base/Compressors/Reciprocating Compressor.svg
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- 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"
- inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
- sodipodi:docname="Reciprocating Compressor.svg"
- width="29.586315mm"
- height="14.722171mm"
- viewBox="0 0 29.586315 14.722171"
- version="1.1"
- id="svg2363">
- <sodipodi:namedview
- inkscape:current-layer="svg2363"
- inkscape:window-maximized="1"
- inkscape:window-y="-11"
- inkscape:window-x="-11"
- inkscape:cy="41.59944"
- inkscape:cx="37.179616"
- inkscape:zoom="4.7773942"
- showgrid="false"
- id="namedview17"
- inkscape:window-height="986"
- inkscape:window-width="1920"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0"
- guidetolerance="10"
- gridtolerance="10"
- objecttolerance="10"
- borderopacity="1"
- bordercolor="#666666"
- pagecolor="#ffffff" />
- <defs
- id="defs2357">
- <linearGradient
- gradientTransform="translate(-526.19954,-108.91903)"
- gradientUnits="userSpaceOnUse"
- y2="119.36598"
- x2="555.65332"
- y1="119.36598"
- x1="550.97614"
- id="linearGradient4993"
- xlink:href="#linearGradient4991" />
- <linearGradient
- osb:paint="solid"
- id="linearGradient4991">
- <stop
- id="stop4989"
- offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
- </linearGradient>
- </defs>
- <metadata
- id="metadata2360">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="g862">
- <path
- id="path4975"
- d="m 0.132291,7.03037 v 7.55951 h 21.54465 V 6.93587 h -7.55951 V 0.1323 h -7.08708 v 6.61458 h -6.89806 z"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- id="path4985"
- d="m 21.769811,10.48035 h 2.93995"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="8.2419739"
- x="24.776596"
- height="4.4099469"
- width="4.6772165"
- id="rect4987"
- style="fill:#ffffff;stroke:url(#linearGradient4993);stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none" />
- <text
- id="text4997"
- y="11.732819"
- x="25.592484"
- style="font-style:normal;font-weight:normal;font-size:3.52778px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- xml:space="preserve"><tspan
- style="font-size:3.52778px;stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none"
- y="11.732819"
- x="25.592484"
- id="tspan4995">M</tspan></text>
- </g>
-</svg>
diff --git a/src/main/resources/base/Compressors/Turbine.svg b/src/main/resources/base/Compressors/Turbine.svg
deleted file mode 100644
index 6383f61..0000000
--- a/src/main/resources/base/Compressors/Turbine.svg
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- 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"
- id="svg2245"
- version="1.1"
- viewBox="0 0 36.083744 21.067864"
- height="21.067863mm"
- width="36.083744mm">
- <defs
- id="defs2239">
- <linearGradient
- xlink:href="#linearGradient4991"
- id="linearGradient5043"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-479.53566,-43.473745)"
- x1="550.97614"
- y1="119.36598"
- x2="555.65332"
- y2="119.36598" />
- <linearGradient
- id="linearGradient4991"
- osb:paint="solid">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop4989" />
- </linearGradient>
- <marker
- orient="auto"
- refY="0"
- refX="0"
- id="marker5089"
- style="overflow:visible">
- <path
- id="path5087"
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
- </marker>
- <marker
- orient="auto"
- refY="0"
- refX="0"
- id="marker5055"
- style="overflow:visible">
- <path
- id="path5053"
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
- </marker>
- </defs>
- <metadata
- id="metadata2242">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(-40.166464,-64.768355)"
- id="layer1">
- <g
- style="stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none"
- id="g2942">
- <path
- id="path5037"
- d="m 61.76161,64.939784 -21.40111,5.59931 -0.0611,9.85655 21.42882,5.27186 z"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- id="path5039"
- d="m 61.69806,75.864944 0.68965,0.0167 9.10387,0.006"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <rect
- y="73.687271"
- x="71.440491"
- height="4.4099469"
- width="4.6772165"
- id="rect5041"
- style="fill:#ffffff;stroke:url(#linearGradient5043);stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none" />
- <text
- id="text5047"
- y="77.204559"
- x="72.593079"
- style="font-style:normal;font-weight:normal;font-size:3.52778px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
- xml:space="preserve"><tspan
- style="font-size:3.52778px;stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none"
- y="77.204559"
- x="72.593079"
- id="tspan5045">T</tspan></text>
- </g>
- </g>
-</svg>
diff --git a/src/main/resources/base/app.qss b/src/main/resources/base/app.qss
new file mode 100644
index 0000000..723bfa3
--- /dev/null
+++ b/src/main/resources/base/app.qss
@@ -0,0 +1,203 @@
+QLineEdit {
+ color: #ffffff;
+ background-color: #b6b6b6;
+ selection-color: black;
+ selection-background-color: #5e90fa;
+ /* Padding and margin defined */
+ border-style: solid;
+ border: 1px solid #b6b6b6; /* border top color defined after QAbstractSpinBox, QLineEdit and QComboBox */
+ border-top-color: #a2a2a0; /* Creates an inset effect inside the elements */
+ padding: 2px 6px 2px 6px; /* This makes text colour work on QComboBox */
+ margin: 0px 2px 0px 2px;
+ border-radius: 3px;
+}
+
+QLineEdit:focus{
+ border-color: #7cabf9;
+}
+
+QFrame{
+ background-color: white;
+}
+
+QTabBar {
+ qproperty-drawBase: 0;
+ left: 5px;
+ background-color: transparent;
+}
+
+QTabBar:focus {
+ border: 0px transparent black;
+}
+
+QTabBar::close-button {
+ padding: 0px;
+ margin: 0px;
+ border-radius: 2px;
+ background-image: url("src/main/resources/base/ui/close.svg");
+ background-position: center center;
+ background-repeat: none;
+}
+
+QTabBar::close-button:hover {
+ background-color: #7cabf9;
+}
+
+QTabBar::close-button:pressed {
+ background-color: #adc5ed;
+}
+
+QTabBar::scroller { /* the width of the scroll buttons */
+ width: 20px;
+}
+
+QTabBar::tab:top,
+QTabBar::tab:bottom {
+ color: black;
+ border: 1px solid #b6b6b6;
+ border-left-color: #e6e6e6;
+ border-right-width: 0px;
+ background-color: white;
+ padding:0px 15px;
+}
+
+QTabBar::tab:top:first,
+QTabBar::tab:bottom:first {
+ border-top-left-radius: 6px;
+ border-bottom-left-radius: 6px;
+}
+
+QTabBar::tab:top:last,
+QTabBar::tab:bottom:last {
+ border-top-right-radius: 6px;
+ border-bottom-right-radius: 6px;
+ border-right-width: 1px;
+}
+
+QTabBar::tab:top:selected,
+QTabBar::tab:bottom:selected {
+ color: black;
+ background-color: qlineargradient(spread:pad, x1:1, y1:0.545, x2:1, y2:0, stop:0 #3874f2, stop:1 #5e90fa);
+ border-color: #3874f2;
+}
+
+QTabBar::tab:top:!selected:hover,
+QTabBar::tab:bottom:!selected:hover {
+ color: black;
+}
+
+QTabBar::tab:top:only-one ,
+QTabBar::tab:bottom:only-one {
+ border: 1px solid #1b3774;
+ border-radius: 6px;
+}
+
+QDockWidget {
+ color: white;
+ background-color: white;
+ border: 1px solid #e6e6e6;
+}
+
+QDockWidget::float-button {
+ border: 1px transparent #e6e6e6;
+ border-radius: 2px;
+ background: transparent;
+ subcontrol-origin: padding;
+ subcontrol-position: right center;
+}
+QDockWidget::float-button {
+ right: 4px;
+}
+
+QDockWidget::float-button:hover {
+ background: #f5f5f5;
+}
+
+QDockWidget::float-button:pressed {
+ /*padding: 1px -1px -1px 1px;*/
+ background-color: #e0e0e0;
+}
+
+QScrollArea{
+ border-style: none;
+ border-width: 0px;
+}
+
+QToolButton {
+ color: #f2f2f2;
+ text-align: center;
+ background-color: rgba(213, 213, 213, 0);
+ border: 0px solid #828282;
+ outline: none;
+ border-radius: 8px;
+}
+
+QToolButton:hover,
+QToolButton:focus {
+ color: black;
+ border: 3px solid #3874f2;
+}
+
+QToolButton:disabled,
+QToolButton:disabled:checked {
+ color: #b6b6b6;
+ background-color: #e6e6e6;
+ border-color: #b6b6b6;
+}
+
+QToolButton:pressed {
+ border-color: #7cabf9;
+}
+
+QToolButton:checked {
+ background-color: #5e90fa;
+ border-color: #3874f2;
+}
+
+sectionLabel{
+ border-color: gray;
+ border-style: solid;
+ border-width: 0px 0px 1px 0px;
+ padding-bottom: 3px;
+ margin-bottom: 3px;
+ margin-top: 10px;
+ text-align: left;
+ font-size: 20px;
+}
+
+sectionLabel:first-child{
+ margin-top: 0px;
+}
+
+customView QPushButton{
+ background: rgba(214, 54, 40, 50%);
+ border: 1px groove white;
+ border-radius: 2px;
+ font-size: 18px;
+ font-weight: Bold;
+ padding: 1px 2px 3px 3px;
+ color: rgba(255, 255, 255, 50%);
+}
+customView QPushButton:Hover{
+ background: rgba(214, 54, 40, 90%);
+ color: rgba(255, 255, 255, 90%);
+}
+
+customTabWidget QPushButton{
+ background: rgba(230, 230, 227, 0%);
+ padding: 1px;
+ border: 0px solid #E6E6E3;
+ border-radius: 10px;
+ top: -5px;
+}
+customTabWidget QPushButton:hover{
+ background: rgba(230, 230, 227, 60%);
+}
+
+customTabWidget::pane {
+ margin: 0px,1px,1px,1px;
+ border: 2px solid #E6E6E3;
+ border-radius: 7px;
+ padding: 1px;
+ background-color: #E6E6E3;
+} \ No newline at end of file
diff --git a/src/main/resources/base/config/items.json b/src/main/resources/base/config/items.json
index 9a55a4d..6753a8f 100644
--- a/src/main/resources/base/config/items.json
+++ b/src/main/resources/base/config/items.json
@@ -1,4 +1,108 @@
{
+ "Compressors": {
+ "Centrifugal Compressor": {
+ "name": "Centrifugal Compressor",
+ "icon": ".\\Compressors\\Centrifugal Compressor.png",
+ "class": "Compressors",
+ "object": "CentrifugalCompressor",
+ "args": []
+ },
+ "Ejector Compressor": {
+ "name": "Ejector Compressor",
+ "icon": ".\\Compressors\\Ejector Compressor.png",
+ "class": "Compressors",
+ "object": "EjectorCompressor",
+ "args": []
+ },
+ "Fan": {
+ "name": "Fan",
+ "icon": ".\\Compressors\\Fan.png",
+ "class": "Compressors",
+ "object": "Fan",
+ "args": []
+ },
+ "Positive Displacement Compressor": {
+ "name": "Positive Displacement Compressor",
+ "icon": ".\\Compressors\\Positive Displacement Compressor.png",
+ "class": "Compressors",
+ "object": "PositiveDisplacementCompressor",
+ "args": []
+ },
+ "Reciprocating Compressor": {
+ "name": "Reciprocating Compressor",
+ "icon": ".\\Compressors\\Reciprocating Compressor.png",
+ "class": "Compressors",
+ "object": "ReciprocatingCompressor",
+ "args": []
+ },
+ "Turbine": {
+ "name": "Turbine",
+ "icon": ".\\Compressors\\Turbine.png",
+ "class": "Compressors",
+ "object": "Turbine",
+ "args": []
+ }
+ },
+ "Furnaces and Boilers": {
+ "Oil Gas or Pulverized Fuel Furnace": {
+ "name": "Oil Gas or Pulverized Fuel Furnace",
+ "icon": ".\\Furnaces and Boilers\\Oil Gas or Pulverized Fuel Furnace.png",
+ "class": "Furnaces and Boilers",
+ "object": "OilGasOrPulverizedFuelFurnace",
+ "args": []
+ },
+ "Solid Fuel Furnace": {
+ "name": "Solid Fuel Furnace",
+ "icon": ".\\Furnaces and Boilers\\Solid Fuel Furnace.png",
+ "class": "Furnaces and Boilers",
+ "object": "SolidFuelFurnace",
+ "args": []
+ }
+ },
+ "Heating or Cooling Arrangements": {
+ "905Exchanger": {
+ "name": "Exchanger",
+ "icon": ".\\Heating or Cooling Arrangements\\905Exchanger.png",
+ "class": "Heating or Cooling Arrangements",
+ "object": "Exchanger",
+ "args": []
+ },
+ "907Kettle Reboiler": {
+ "name": "Kettle Reboiler",
+ "icon": ".\\Heating or Cooling Arrangements\\907Kettle Reboiler.png",
+ "class": "Heating or Cooling Arrangements",
+ "object": "KettleReboiler",
+ "args": []
+ },
+ "Exchanger": {
+ "name": "Exchanger",
+ "icon": ".\\Heating or Cooling Arrangements\\Exchanger.png",
+ "class": "Heating or Cooling Arrangements",
+ "object": "Exchanger",
+ "args": []
+ },
+ "Heat Exchanger": {
+ "name": "Heat Exchanger",
+ "icon": ".\\Heating or Cooling Arrangements\\Heat Exchanger.png",
+ "class": "Heating or Cooling Arrangements",
+ "object": "HeatExchanger",
+ "args": []
+ },
+ "Immersion Coil": {
+ "name": "Immersion Coil",
+ "icon": ".\\Heating or Cooling Arrangements\\Immersion Coil.png",
+ "class": "Heating or Cooling Arrangements",
+ "object": "ImmersionCoil",
+ "args": []
+ },
+ "Kettle Reboiler": {
+ "name": "Kettle Reboiler",
+ "icon": ".\\Heating or Cooling Arrangements\\Kettle Reboiler.png",
+ "class": "Heating or Cooling Arrangements",
+ "object": "KettleReboiler",
+ "args": []
+ }
+ },
"Piping": {
"Inflow Line": {
"name": "Inflow Line",
@@ -15,35 +119,37 @@
"args": []
}
},
- "Pumps": {
- "Duplex Pump": {
- "name": "Duplex Pump",
- "icon": ".\\Pumps\\Duplex Pump.png",
- "class": "Pumps",
- "object": "DuplexPump",
+ "Process Vessels": {
+ "Horizontal Vessel": {
+ "name": "Horizontal Vessel",
+ "icon": ".\\Process Vessels\\Horizontal Vessel.png",
+ "class": "Process Vessels",
+ "object": "HorizontalVessel",
"args": []
},
- "Plunger Pump": {
- "name": "Plunger Pump",
- "icon": ".\\Pumps\\Plunger Pump.png",
- "class": "Pumps",
- "object": "PlungerPump",
+ "Packed Vessel": {
+ "name": "Packed Vessel",
+ "icon": ".\\Process Vessels\\Packed Vessel.png",
+ "class": "Process Vessels",
+ "object": "PackedVessel",
"args": []
},
- "Proportioning Pump": {
- "name": "Proportioning Pump",
- "icon": ".\\Pumps\\Proportioning Pump.png",
- "class": "Pumps",
- "object": "ProportioningPump",
+ "Trays or plates": {
+ "name": "Trays or plates",
+ "icon": ".\\Process Vessels\\Trays or plates.png",
+ "class": "Process Vessels",
+ "object": "TraysOrPlates",
"args": []
},
- "Reciprocating Pump": {
- "name": "Reciprocating Pump",
- "icon": ".\\Pumps\\Reciprocating Pump.png",
- "class": "Pumps",
- "object": "ReciprocatingPump",
+ "Vertical Vessel": {
+ "name": "Vertical Vessel",
+ "icon": ".\\Process Vessels\\Vertical Vessel.png",
+ "class": "Process Vessels",
+ "object": "VerticalVessel",
"args": []
- },
+ }
+ },
+ "Pumps": {
"Blowing Egg": {
"name": "Blowing Egg",
"icon": ".\\Pumps\\Blowing Egg.png",
@@ -51,11 +157,18 @@
"object": "BlowingEgg",
"args": []
},
+ "Duplex Pump": {
+ "name": "Duplex Pump",
+ "icon": ".\\Pumps\\Duplex Pump.png",
+ "class": "Pumps",
+ "object": "DuplexPump",
+ "args": []
+ },
"Ejector(Vapor Service)": {
- "name": "Ejector(Vapor Service)",
+ "name": "EjectorVapor Service",
"icon": ".\\Pumps\\Ejector(Vapor Service).png",
"class": "Pumps",
- "object": "Ejector(VaporService)",
+ "object": "EjectorVaporService",
"args": []
},
"Hand Pump with Drum": {
@@ -64,49 +177,51 @@
"class": "Pumps",
"object": "HandPumpWithDrum",
"args": []
- }
- },
- "Compressors": {
- "Centrifugal Compressor": {
- "name": "Centrifugal Compressor",
- "icon": ".\\Compressors\\Centrifugal Compressor.png",
- "class": "Compressors",
- "object": "CentrifugalCompressor",
- "args": []
},
- "Ejector Compressor": {
- "name": "Ejector Compressor",
- "icon": ".\\Compressors\\Ejector Compressor.png",
- "class": "Compressors",
- "object": "EjectorCompressor",
+ "Plunger Pump": {
+ "name": "Plunger Pump",
+ "icon": ".\\Pumps\\Plunger Pump.png",
+ "class": "Pumps",
+ "object": "PlungerPump",
"args": []
},
- "Fan": {
- "name": "Fan",
- "icon": ".\\Compressors\\Fan.png",
- "class": "Compressors",
- "object": "Fan",
+ "Proportioning Pump": {
+ "name": "Proportioning Pump",
+ "icon": ".\\Pumps\\Proportioning Pump.png",
+ "class": "Pumps",
+ "object": "ProportioningPump",
"args": []
},
- "Positive Displacement Compressor": {
- "name": "Positive Displacement Compressor",
- "icon": ".\\Compressors\\Positive Displacement Compressor.png",
- "class": "Compressors",
- "object": "PositiveDisplacementCompressor",
+ "Reciprocating Pump": {
+ "name": "Reciprocating Pump",
+ "icon": ".\\Pumps\\Reciprocating Pump.png",
+ "class": "Pumps",
+ "object": "ReciprocatingPump",
"args": []
- },
- "Reciprocating Compressor": {
- "name": "Reciprocating Compressor",
- "icon": ".\\Compressors\\Reciprocating Compressor.png",
- "class": "Compressors",
- "object": "ReciprocatingCompressor",
+ }
+ },
+ "Separators": {
+ "Separators for Liquids, Decanter": {
+ "name": "Separators for Liquids, Decanter",
+ "icon": ".\\Separators\\Separators for Liquids, Decanter.png",
+ "class": "Separators",
+ "object": "SeparatorsForLiquids,Decanter",
+ "args": []
+ }
+ },
+ "Storage Vessels Tanks": {
+ "Fixed Roof Tank": {
+ "name": "Fixed Roof Tank",
+ "icon": ".\\Storage Vessels Tanks\\Fixed Roof Tank.png",
+ "class": "Storage Vessels Tanks",
+ "object": "FixedRoofTank",
"args": []
},
- "Turbine": {
- "name": "Turbine",
- "icon": ".\\Compressors\\Turbine.png",
- "class": "Compressors",
- "object": "Turbine",
+ "Floating Roof Tank": {
+ "name": "Floating Roof Tank",
+ "icon": ".\\Storage Vessels Tanks\\Floating Roof Tank.png",
+ "class": "Storage Vessels Tanks",
+ "object": "FloatingRoofTank",
"args": []
}
}
diff --git a/src/main/resources/base/svg/Furnaces and Boilers/Oil Gas or Pulverized Fuel Furnace.svg b/src/main/resources/base/svg/Furnaces and Boilers/Oil Gas or Pulverized Fuel Furnace.svg
new file mode 100644
index 0000000..ce0906b
--- /dev/null
+++ b/src/main/resources/base/svg/Furnaces and Boilers/Oil Gas or Pulverized Fuel Furnace.svg
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ 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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ sodipodi:docname="Oil Gas or Pulverized Fuel Furnace.svg"
+ inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
+ id="svg1687"
+ version="1.1"
+ viewBox="0 0 30.883684 19.98234"
+ height="19.98234mm"
+ width="30.883684mm">
+ <defs
+ id="defs1681">
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker2798"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="TriangleOutM">
+ <path
+ transform="scale(0.4)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 5.77,0 -2.88,5 V -5 Z"
+ id="path2796" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="TriangleOutM"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="TriangleOutM">
+ <path
+ transform="scale(0.4)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 5.77,0 -2.88,5 V -5 Z"
+ id="path2493" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="EmptyTriangleOutM"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="EmptyTriangleOutM">
+ <path
+ transform="matrix(0.4,0,0,0.4,-1.8,0)"
+ style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 5.77,0 -2.88,5 V -5 Z"
+ id="path2511" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ id="ExperimentalArrow"
+ refX="5"
+ refY="3"
+ orient="auto-start-reverse"
+ inkscape:stockid="ExperimentalArrow">
+ <path
+ style="fill:context-stroke;stroke:#000000;stroke-opacity:1"
+ d="M 10,3 0,6 V 0 Z"
+ id="path2601" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="TriangleOutS"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="TriangleOutS">
+ <path
+ transform="scale(0.2)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 5.77,0 -2.88,5 V -5 Z"
+ id="path2496" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="Arrow2Send"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Send">
+ <path
+ transform="matrix(-0.3,0,0,-0.3,0.69,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path2381" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="Arrow1Send"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Send">
+ <path
+ transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path2363" />
+ </marker>
+ <inkscape:path-effect
+ lpeversion="0"
+ effect="spiro"
+ id="path-effect3840"
+ is_visible="true" />
+ <inkscape:path-effect
+ lpeversion="0"
+ is_visible="true"
+ id="path-effect3844"
+ effect="spiro" />
+ </defs>
+ <sodipodi:namedview
+ inkscape:window-maximized="1"
+ inkscape:window-y="-11"
+ inkscape:window-x="-11"
+ inkscape:window-height="986"
+ inkscape:window-width="1920"
+ showgrid="false"
+ inkscape:document-rotation="0"
+ inkscape:current-layer="layer1"
+ inkscape:document-units="mm"
+ inkscape:cy="-58.158225"
+ inkscape:cx="84.543508"
+ inkscape:zoom="1.979899"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ borderopacity="1.0"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base" />
+ <metadata
+ id="metadata1684">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(-114.74084,-169.16954)"
+ id="layer1"
+ inkscape:groupmode="layer"
+ inkscape:label="Layer 1">
+ <g
+ id="g2884">
+ <g
+ style="fill:none;stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none"
+ transform="translate(-413.46972,55.400034)"
+ id="g5243">
+ <g
+ style="fill:none;stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none"
+ id="g3847"
+ transform="translate(1.0252604,-0.06614583)">
+ <path
+ inkscape:original-d="m 537.18635,129.92404 c -2.07126,-0.0549 0.88615,-0.74263 1.23236,-1.02585 0.34623,-0.28322 1.13422,-0.22075 1.7009,-0.33073 0.56671,-0.10998 2.20514,0.78718 3.30729,1.18118 1.10218,0.39398 0.11052,0.10997 0.16537,0.16536"
+ inkscape:path-effect="#path-effect3840"
+ inkscape:connector-curvature="0"
+ id="path3838"
+ d="m 537.18635,129.92404 c 0.31029,-0.44295 0.74048,-0.80105 1.23236,-1.02585 0.52931,-0.24191 1.11894,-0.32798 1.7009,-0.33073 1.19933,-0.006 2.43346,0.35969 3.30729,1.18118 0.0568,0.0534 0.11196,0.10856 0.16537,0.16536"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:nodetypes="ccccc" />
+ </g>
+ <path
+ inkscape:original-d="m 538.21161,129.85789 c -2.06843,0.0595 0.90206,0.59129 1.24779,0.89804 0.34576,0.30674 1.13267,0.23908 1.69857,0.35819 0.56594,0.11912 2.20213,-0.85255 3.30277,-1.27928 1.10067,-0.4267 0.11037,-0.1191 0.16514,-0.17909"
+ inkscape:path-effect="#path-effect3844"
+ inkscape:connector-curvature="0"
+ id="path3842"
+ d="m 538.21161,129.85789 c 0.34861,0.38053 0.77626,0.68831 1.24779,0.89804 0.53225,0.23674 1.11614,0.34751 1.69857,0.35819 1.21364,0.0222 2.45271,-0.41279 3.30277,-1.27928 0.0569,-0.058 0.11196,-0.11771 0.16514,-0.17909"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:nodetypes="ccccc" />
+ </g>
+ <path
+ inkscape:connector-curvature="0"
+ id="path3859"
+ d="m 114.74084,185.21659 h 7.77888"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2798)"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 130.66027,175.80615 v -6.23661 h 4.15774 v 6.23661 l 10.40615,0.0473 -0.0118,12.89843 H 120.07694 V 175.8062 l 10.71587,-0.003"
+ id="path4954"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccccc" />
+ </g>
+ </g>
+</svg>
diff --git a/src/main/resources/base/svg/Furnaces and Boilers/Solid Fuel Furnace.svg b/src/main/resources/base/svg/Furnaces and Boilers/Solid Fuel Furnace.svg
new file mode 100644
index 0000000..1274675
--- /dev/null
+++ b/src/main/resources/base/svg/Furnaces and Boilers/Solid Fuel Furnace.svg
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ 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"
+ id="svg994"
+ version="1.1"
+ viewBox="0 0 25.947584 19.98229"
+ height="19.98229mm"
+ width="25.947584mm">
+ <defs
+ id="defs988" />
+ <metadata
+ id="metadata991">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(47.74748,-1.34814)"
+ id="layer1">
+ <g
+ style="fill:none;stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none"
+ id="g1635">
+ <path
+ id="path3798"
+ d="M -36.76415,7.984747 V 1.74814 h 4.15774 v 6.236607 l 10.40615,0.04725 -0.0118,12.898434 H -47.34748 V 7.984746 l 10.71587,-0.0031"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path3800"
+ d="m -47.253,13.276411 h 24.94645"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path3802"
+ d="m -47.36167,18.001111 h 25.24409"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path3804"
+ d="m -45.88283,13.229161 v 4.67746"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path3806"
+ d="M -43.89845,13.276411 V 18.0689"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path3808"
+ d="M -42.48103,13.276411 V 18.02165"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path3810"
+ d="m -40.96915,13.3363 v 4.697043"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path3812"
+ d="m -39.3155,13.262817 v 4.757888"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path3814"
+ d="m -37.75634,13.323661 v 4.7247"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path3816"
+ d="m -36.43342,13.324607 v 4.71016"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path3818"
+ d="m -34.68529,13.313869 v 4.640947"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path3820"
+ d="M -33.31512,13.323661 V 18.02165"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path3822"
+ d="m -31.56697,13.371857 v 4.546457"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path3824"
+ d="m -30.02,13.348471 v 4.593707"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path3826"
+ d="m -28.50761,13.337723 v 4.58296"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path3828"
+ d="m -26.92554,13.349416 v 4.55815"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path3830"
+ d="m -25.42488,13.290483 v 4.58296"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path3832"
+ d="m -23.74738,13.301698 v 4.6302"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ </g>
+</svg>
diff --git a/src/main/resources/base/svg/Heating or Cooling Arrangements/905Exchanger.svg b/src/main/resources/base/svg/Heating or Cooling Arrangements/905Exchanger.svg
new file mode 100644
index 0000000..c558faf
--- /dev/null
+++ b/src/main/resources/base/svg/Heating or Cooling Arrangements/905Exchanger.svg
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ 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"
+ id="svg5210"
+ version="1.1"
+ viewBox="0 0 32.627335 12.826668"
+ height="12.826668mm"
+ width="32.627335mm">
+ <defs
+ id="defs5204">
+ <linearGradient
+ xlink:href="#linearGradient5159"
+ id="linearGradient5161"
+ x1="1212.0807"
+ y1="203.26044"
+ x2="1214.4861"
+ y2="203.26044"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-1169.2976,41.668137)" />
+ <linearGradient
+ id="linearGradient5159"
+ osb:paint="solid">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop5157" />
+ </linearGradient>
+ <linearGradient
+ xlink:href="#linearGradient5159"
+ id="linearGradient5169"
+ x1="1219.6979"
+ y1="203.39407"
+ x2="1221.5688"
+ y2="203.39407"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.80249453,0,0,0.9318074,-928.02404,55.384861)" />
+ </defs>
+ <metadata
+ id="metadata5207">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(-42.650618,-238.51523)"
+ id="layer1">
+ <g
+ id="g5807">
+ <rect
+ style="fill:#ffffff;stroke:url(#linearGradient5161);stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect5155"
+ width="2.4054255"
+ height="12.561667"
+ x="42.783119"
+ y="238.64774" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 45.24957,248.84239 26.5265,0.13363 c 0.713548,-0.13257 1.390074,-0.45917 1.9377,-0.93544 0.776705,-0.6755 1.282157,-1.65047 1.4031,-2.67269 0.115398,-0.97535 -0.118866,-1.9921 -0.6681,-2.80633 -0.675854,-1.00194 -1.826455,-1.66796 -3.0319,-1.75498"
+ id="path5171" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 45.05409,240.80851 c 8.798,-3e-4 17.5955,-3e-4 26.3929,0"
+ id="path5175" />
+ <rect
+ style="fill:#ffffff;stroke:url(#linearGradient5169);stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect5163"
+ width="1.5013764"
+ height="11.954099"
+ x="50.77689"
+ y="238.93192" />
+ </g>
+ </g>
+</svg>
diff --git a/src/main/resources/base/svg/Heating or Cooling Arrangements/907Kettle Reboiler.svg b/src/main/resources/base/svg/Heating or Cooling Arrangements/907Kettle Reboiler.svg
new file mode 100644
index 0000000..8de832d
--- /dev/null
+++ b/src/main/resources/base/svg/Heating or Cooling Arrangements/907Kettle Reboiler.svg
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ 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"
+ id="svg5871"
+ version="1.1"
+ viewBox="0 0 39.32729 14.216409"
+ height="14.216409mm"
+ width="39.32729mm">
+ <defs
+ id="defs5865">
+ <linearGradient
+ xlink:href="#linearGradient5159"
+ id="linearGradient5203"
+ gradientUnits="userSpaceOnUse"
+ x1="1212.0807"
+ y1="203.26044"
+ x2="1214.4861"
+ y2="203.26044"
+ gradientTransform="translate(-1158.2344,-126.40221)" />
+ <linearGradient
+ id="linearGradient5159"
+ osb:paint="solid">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop5157" />
+ </linearGradient>
+ <linearGradient
+ gradientTransform="translate(-1147.3421,-126.40222)"
+ y2="203.26044"
+ x2="1214.4861"
+ y1="203.26044"
+ x1="1212.0807"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5203-6"
+ xlink:href="#linearGradient5159" />
+ </defs>
+ <metadata
+ id="metadata5868">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(-53.446363,-69.322652)"
+ id="layer1">
+ <g
+ id="g6507">
+ <rect
+ y="70.577393"
+ x="53.846363"
+ height="12.561667"
+ width="2.4054255"
+ id="rect5201"
+ style="fill:#ffffff;stroke:url(#linearGradient5203);stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 56.26713,80.015024 h 8.7879"
+ id="path5209" />
+ <path
+ id="path5211"
+ d="m 56.27,73.305944 h 8.7879"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 67.22843,80.015024 h 20.5997 c 1.092112,-0.151748 2.132574,-0.6552 2.9293,-1.41741 1.010418,-0.966644 1.612895,-2.35074 1.616209,-3.749073 0.0033,-1.398333 -0.596822,-2.790799 -1.626209,-3.737217 -0.821021,-0.754846 -1.90189,-1.221596 -3.0143,-1.30166"
+ id="path5213" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 67.21734,73.419354 3.31669,-3.69572 17.2467,0.0948"
+ id="path5217" />
+ <rect
+ style="fill:#ffffff;stroke:url(#linearGradient5203-6);stroke-width:0.799999;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect5201-7"
+ width="2.4054255"
+ height="12.561667"
+ x="64.738731"
+ y="70.577393" />
+ </g>
+ </g>
+</svg>
diff --git a/src/main/resources/base/svg/Heating or Cooling Arrangements/Exchanger.svg b/src/main/resources/base/svg/Heating or Cooling Arrangements/Exchanger.svg
new file mode 100644
index 0000000..ee9aa2e
--- /dev/null
+++ b/src/main/resources/base/svg/Heating or Cooling Arrangements/Exchanger.svg
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ 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"
+ id="svg3305"
+ version="1.1"
+ viewBox="0 0 18.572141 18.358872"
+ height="18.358871mm"
+ width="18.572142mm">
+ <defs
+ id="defs3299">
+ <linearGradient
+ id="linearGradient5135"
+ osb:paint="solid">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop5133" />
+ </linearGradient>
+ <linearGradient
+ gradientTransform="matrix(0.0745283,0,0,0.0745283,126.33199,56.55539)"
+ y2="894.49042"
+ x2="306.71027"
+ y1="894.49042"
+ x1="56.083565"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3920"
+ xlink:href="#linearGradient5135" />
+ <linearGradient
+ gradientTransform="matrix(0.0745283,0,0,0.0745283,126.33199,56.55539)"
+ y2="894.49042"
+ x2="306.71027"
+ y1="894.49042"
+ x1="56.083565"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3922"
+ xlink:href="#linearGradient5135" />
+ <linearGradient
+ gradientTransform="matrix(0.0745283,0,0,0.0745283,126.33199,56.55539)"
+ y2="894.49042"
+ x2="306.71027"
+ y1="894.49042"
+ x1="56.083565"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3928"
+ xlink:href="#linearGradient5135" />
+ <linearGradient
+ gradientTransform="matrix(0.0745283,0,0,0.0745283,126.33199,56.55539)"
+ y2="894.49042"
+ x2="306.71027"
+ y1="894.49042"
+ x1="56.083565"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3932"
+ xlink:href="#linearGradient5135" />
+ </defs>
+ <metadata
+ id="metadata3302">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(-130.5118,-114.03592)"
+ id="layer1">
+ <g
+ style="stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none"
+ id="g3948">
+ <ellipse
+ ry="6.9867759"
+ rx="6.773838"
+ cy="123.2276"
+ cx="137.41814"
+ id="ellipse4170"
+ style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient3920);stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient3922);stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 149.08394,120.88289 h -13.0243 l 3.53839,2.86083 -3.57603,2.89847 12.98665,-0.0753"
+ id="path4198" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient3928);stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 137.29069,130.21218 v 2.18261"
+ id="path4204" />
+ <path
+ id="path4214"
+ d="m 137.03183,116.21871 0.003,-2.18261"
+ style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient3932);stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ </g>
+</svg>
diff --git a/src/main/resources/base/svg/Heating or Cooling Arrangements/Heat Exchanger.svg b/src/main/resources/base/svg/Heating or Cooling Arrangements/Heat Exchanger.svg
new file mode 100644
index 0000000..84bc22e
--- /dev/null
+++ b/src/main/resources/base/svg/Heating or Cooling Arrangements/Heat Exchanger.svg
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ 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"
+ id="svg2644"
+ version="1.1"
+ viewBox="0 0 18.33902 14.380303"
+ height="14.380302mm"
+ width="18.33902mm">
+ <defs
+ id="defs2638">
+ <linearGradient
+ id="linearGradient5099"
+ osb:paint="solid">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop5097" />
+ </linearGradient>
+ <linearGradient
+ gradientTransform="matrix(0.0724309,0,0,0.0724309,87.453124,65.125291)"
+ y2="520.27844"
+ x2="703.30212"
+ y1="520.27844"
+ x1="472.18188"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3229"
+ xlink:href="#linearGradient5099" />
+ <linearGradient
+ gradientTransform="matrix(0.0724309,0,0,0.0724309,87.453124,65.125291)"
+ y2="520.27844"
+ x2="703.30212"
+ y1="520.27844"
+ x1="472.18188"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3231"
+ xlink:href="#linearGradient5099" />
+ </defs>
+ <metadata
+ id="metadata2641">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(-120.31733,-95.619366)"
+ id="layer1">
+ <g
+ id="g3237">
+ <ellipse
+ style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient3229);stroke-width:0.799999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path3336"
+ cx="129.66988"
+ cy="102.80952"
+ rx="6.5832062"
+ ry="6.7901516" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient3231);stroke-width:0.799999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 120.31733,103.22017 h 5.09661 v -2.65441 l 7.94748,4.9538 0.0268,-2.29939 4.86813,0.0215 v 0 -0.0215"
+ id="path4144" />
+ </g>
+ </g>
+</svg>
diff --git a/src/main/resources/base/svg/Heating or Cooling Arrangements/Immersion Coil.svg b/src/main/resources/base/svg/Heating or Cooling Arrangements/Immersion Coil.svg
new file mode 100644
index 0000000..8d1155c
--- /dev/null
+++ b/src/main/resources/base/svg/Heating or Cooling Arrangements/Immersion Coil.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ 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"
+ id="svg977"
+ version="1.1"
+ viewBox="0 0 6.1029692 17.830296"
+ height="17.830296mm"
+ width="6.1029692mm">
+ <defs
+ id="defs971" />
+ <metadata
+ id="metadata974">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(-135.2878,-109.76937)"
+ id="layer1">
+ <g
+ style="stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none"
+ transform="rotate(-90,402.14008,250.39883)"
+ id="g3809">
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+ d="m 542.7694,-10.501008 -3.88721,0.0041 -3.27406,-5.67612 -2.73953,5.545843 -3.23859,-5.435832 -2.77496,5.435832 -1.67042,-2.53906 h 17.57296"
+ id="path3807" />
+ </g>
+ </g>
+</svg>
diff --git a/src/main/resources/base/svg/Heating or Cooling Arrangements/Kettle Reboiler.svg b/src/main/resources/base/svg/Heating or Cooling Arrangements/Kettle Reboiler.svg
new file mode 100644
index 0000000..94852e6
--- /dev/null
+++ b/src/main/resources/base/svg/Heating or Cooling Arrangements/Kettle Reboiler.svg
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ 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"
+ id="svg4599"
+ version="1.1"
+ viewBox="0 0 24.658455 19.919762"
+ height="19.919762mm"
+ width="24.658455mm">
+ <defs
+ id="defs4593">
+ <linearGradient
+ xlink:href="#linearGradient5181"
+ id="linearGradient5272"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.88228018,0,0,0.96397279,-172.7006,-88.123175)"
+ x1="1221.2104"
+ y1="225.97749"
+ x2="1243.5111"
+ y2="225.97749" />
+ <linearGradient
+ id="linearGradient5181"
+ osb:paint="solid">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop5179" />
+ </linearGradient>
+ <linearGradient
+ xlink:href="#linearGradient5181"
+ id="linearGradient5191"
+ gradientUnits="userSpaceOnUse"
+ x1="472.18188"
+ y1="520.27844"
+ x2="703.30212"
+ y2="520.27844"
+ gradientTransform="matrix(0.05408603,0,0,0.05495334,883.06565,105.79199)" />
+ </defs>
+ <metadata
+ id="metadata4596">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(-52.68267,-110.23654)"
+ id="layer1">
+ <g
+ style="stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none"
+ transform="translate(-849.69362,-9.5165576)"
+ id="g5246">
+ <ellipse
+ style="fill:#ffffff;stroke:url(#linearGradient5272);stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path5177"
+ cx="914.58691"
+ cy="129.71298"
+ rx="9.8376846"
+ ry="9.8376865" />
+ <ellipse
+ ry="5.1516895"
+ rx="4.9158506"
+ cy="134.38303"
+ cx="914.59003"
+ id="ellipse5185"
+ style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient5191);stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+ d="m 902.37629,134.39008 h 9.4213 v -2.60588 l 5.9467,5.34539 v -2.80633 l 9.2876,0.20045"
+ id="path5199" />
+ </g>
+ </g>
+</svg>
diff --git a/src/main/resources/base/svg/Process Vessels/Horizontal Vessel.svg b/src/main/resources/base/svg/Process Vessels/Horizontal Vessel.svg
new file mode 100644
index 0000000..7881b2e
--- /dev/null
+++ b/src/main/resources/base/svg/Process Vessels/Horizontal Vessel.svg
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ 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"
+ sodipodi:docname="Horizontal Vessel.svg"
+ inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
+ id="svg1042"
+ version="1.1"
+ viewBox="0 0 27.295231 12.060382"
+ height="12.060382mm"
+ width="27.295231mm">
+ <defs
+ id="defs1036">
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4146"
+ id="linearGradient4706"
+ gradientUnits="userSpaceOnUse"
+ x1="400.09921"
+ y1="899.66388"
+ x2="716.43781"
+ y2="899.66388" />
+ <linearGradient
+ id="linearGradient4146"
+ osb:paint="solid">
+ <stop
+ style="stop-color:#000000;stop-opacity:0.9308176;"
+ offset="0"
+ id="stop4148" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4146"
+ id="linearGradient4698"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.60633777,2.7409506)"
+ x1="400.09921"
+ y1="899.66388"
+ x2="716.43781"
+ y2="899.66388" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4146"
+ id="linearGradient4700"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.77207685,-0.36821112)"
+ x1="400.09921"
+ y1="899.66388"
+ x2="716.43781"
+ y2="899.66388" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4146"
+ id="linearGradient4702"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0.51335771,1.1117382)"
+ x1="400.09921"
+ y1="899.66388"
+ x2="716.43781"
+ y2="899.66388" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4146"
+ id="linearGradient4704"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-1.9166526,0.17227193)"
+ x1="400.09921"
+ y1="899.66388"
+ x2="716.43781"
+ y2="899.66388" />
+ </defs>
+ <sodipodi:namedview
+ inkscape:window-maximized="0"
+ inkscape:window-y="0"
+ inkscape:window-x="114"
+ inkscape:window-height="1020"
+ inkscape:window-width="1741"
+ showgrid="false"
+ inkscape:document-rotation="0"
+ inkscape:current-layer="layer1"
+ inkscape:document-units="mm"
+ inkscape:cy="156.85541"
+ inkscape:cx="151.02569"
+ inkscape:zoom="1.979899"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ borderopacity="1.0"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base" />
+ <metadata
+ id="metadata1039">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(12.89166,61.971772)"
+ id="layer1"
+ inkscape:groupmode="layer"
+ inkscape:label="Layer 1">
+ <g
+ id="g4696"
+ style="fill:none;stroke:url(#linearGradient4706);stroke-width:8.15922;stroke-miterlimit:4;stroke-dasharray:none"
+ transform="matrix(-0.0916895,2.8234217e-4,-2.1508094e-4,-0.10484799,51.875059,38.239137)">
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient4698);stroke-width:8.15922;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 427.73761,845.97746 257.8191,0.71912"
+ id="path4688"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path4690"
+ d="m 424.22945,952.83607 259.25207,0.66653"
+ style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient4700);stroke-width:8.15922;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="csc"
+ style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient4702);stroke-width:8.15922;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 428.84344,845.4037 c 0,0 -18.59975,25.38769 -18.19184,56.38884 0.40791,31.00116 14.73658,51.62189 14.73658,51.62189"
+ id="path4692"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:nodetypes="csc"
+ inkscape:connector-curvature="0"
+ id="path4694"
+ d="m 682.33695,954.04308 c 0,0 17.85367,-22.41911 17.84056,-53.42295 -0.0131,-31.00384 -15.76918,-54.50823 -15.76918,-54.50823"
+ style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient4704);stroke-width:8.15922;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ </g>
+</svg>
diff --git a/src/main/resources/base/svg/Process Vessels/Packed Vessel.svg b/src/main/resources/base/svg/Process Vessels/Packed Vessel.svg
new file mode 100644
index 0000000..b7a488f
--- /dev/null
+++ b/src/main/resources/base/svg/Process Vessels/Packed Vessel.svg
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ 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"
+ id="svg2336"
+ version="1.1"
+ viewBox="0 0 12.060382 27.295231"
+ height="27.295231mm"
+ width="12.060382mm">
+ <defs
+ id="defs2330">
+ <linearGradient
+ xlink:href="#linearGradient4146"
+ id="linearGradient5702"
+ gradientUnits="userSpaceOnUse"
+ x1="400.09921"
+ y1="899.66388"
+ x2="716.43781"
+ y2="899.66388" />
+ <linearGradient
+ id="linearGradient4146"
+ osb:paint="solid">
+ <stop
+ style="stop-color:#000000;stop-opacity:0.9308176;"
+ offset="0"
+ id="stop4148" />
+ </linearGradient>
+ <linearGradient
+ xlink:href="#linearGradient4146"
+ id="linearGradient4839"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.60633777,2.7409506)"
+ x1="400.09921"
+ y1="899.66388"
+ x2="716.43781"
+ y2="899.66388" />
+ <linearGradient
+ xlink:href="#linearGradient4146"
+ id="linearGradient4841"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.77207685,-0.36821112)"
+ x1="400.09921"
+ y1="899.66388"
+ x2="716.43781"
+ y2="899.66388" />
+ <linearGradient
+ xlink:href="#linearGradient4146"
+ id="linearGradient4843"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0.51335771,1.1117382)"
+ x1="400.09921"
+ y1="899.66388"
+ x2="716.43781"
+ y2="899.66388" />
+ <linearGradient
+ xlink:href="#linearGradient4146"
+ id="linearGradient4845"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-1.9166526,0.17227193)"
+ x1="400.09921"
+ y1="899.66388"
+ x2="716.43781"
+ y2="899.66388" />
+ <linearGradient
+ y2="899.66388"
+ x2="716.43781"
+ y1="899.66388"
+ x1="400.09921"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2952"
+ xlink:href="#linearGradient4146" />
+ </defs>
+ <metadata
+ id="metadata2333">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(60.459868,-120.15595)"
+ id="layer1">
+ <g
+ id="g5700"
+ style="fill:none;stroke:url(#linearGradient5702);stroke-width:8.15922217;stroke-miterlimit:4;stroke-dasharray:none"
+ transform="matrix(2.8234217e-4,0.0916895,-0.10484799,2.1508101e-4,-467.23851,8.4008609)">
+ <g
+ id="g4837"
+ style="fill:none;stroke:url(#linearGradient2952);stroke-width:8.15922217;stroke-miterlimit:4;stroke-dasharray:none"
+ transform="translate(821.50242,-4833.2601)">
+ <path
+ id="path4829"
+ d="m 427.73761,845.97746 257.8191,0.71912"
+ style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient4839);stroke-width:8.15922217;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient4841);stroke-width:8.15922217;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 424.22945,952.83607 259.25207,0.66653"
+ id="path4831" />
+ <path
+ id="path4833"
+ d="m 428.84344,845.4037 c 0,0 -18.59975,25.38769 -18.19184,56.38884 0.40791,31.00116 14.73658,51.62189 14.73658,51.62189"
+ style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient4843);stroke-width:8.15922217;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient4845);stroke-width:8.15922217;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 682.33695,954.04308 c 0,0 17.85367,-22.41911 17.84056,-53.42295 -0.0131,-31.00384 -15.76918,-54.50823 -15.76918,-54.50823"
+ id="path4835" />
+ </g>
+ <path
+ id="path4849"
+ d="m 1484.9756,-3880.9961 0.2472,-105.3555"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:8.15922217;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path4851"
+ d="m 1439.3441,-3880.015 0.2487,-105.9861"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:8.15922217;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path4853"
+ d="m 1314.5412,-3880.5088 0.4297,-106.3011"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:8.15922217;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path4855"
+ d="m 1261.8788,-3880.8084 0.2486,-105.9861"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:8.15922217;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path4857"
+ d="m 1314.5412,-3880.5088 125.0516,-105.4923"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:8.15922217;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path4859"
+ d="m 1314.9709,-3986.8099 124.3732,106.7949"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:8.15922217;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ </g>
+</svg>
diff --git a/src/main/resources/base/svg/Process Vessels/Trays or plates.svg b/src/main/resources/base/svg/Process Vessels/Trays or plates.svg
new file mode 100644
index 0000000..3824a10
--- /dev/null
+++ b/src/main/resources/base/svg/Process Vessels/Trays or plates.svg
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ 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"
+ id="svg1072"
+ version="1.1"
+ viewBox="0 0 16.30163 20.31666"
+ height="20.31666mm"
+ width="16.30163mm">
+ <defs
+ id="defs1066" />
+ <metadata
+ id="metadata1069">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(-154.37895,-18.56786)"
+ id="layer1">
+ <g
+ style="fill:none;stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none"
+ id="g4313"
+ transform="translate(-154.69871,-122.61669)">
+ <path
+ id="path3931"
+ d="m 309.47766,141.18455 v 20.31249"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 324.97929,141.1929 v 20.30831"
+ id="path3933" />
+ <path
+ id="path3935"
+ d="m 309.47766,143.62338 h 15.46822"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path3937"
+ d="m 309.54448,147.19812 h 15.42334"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path3939"
+ d="m 309.4655,151.20716 h 15.38016"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path3941"
+ d="m 309.43783,154.74848 h 15.52999"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path3943"
+ d="m 309.54447,158.75752 h 15.49422"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ </g>
+</svg>
diff --git a/src/main/resources/base/svg/Process Vessels/Vertical Vessel.svg b/src/main/resources/base/svg/Process Vessels/Vertical Vessel.svg
new file mode 100644
index 0000000..9c195f8
--- /dev/null
+++ b/src/main/resources/base/svg/Process Vessels/Vertical Vessel.svg
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ 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"
+ id="svg1683"
+ version="1.1"
+ viewBox="0 0 12.060382 27.295231"
+ height="27.295231mm"
+ width="12.060382mm">
+ <defs
+ id="defs1677">
+ <linearGradient
+ xlink:href="#linearGradient4146"
+ id="linearGradient4716"
+ gradientUnits="userSpaceOnUse"
+ x1="400.09921"
+ y1="899.66388"
+ x2="716.43781"
+ y2="899.66388" />
+ <linearGradient
+ id="linearGradient4146"
+ osb:paint="solid">
+ <stop
+ style="stop-color:#000000;stop-opacity:0.9308176;"
+ offset="0"
+ id="stop4148" />
+ </linearGradient>
+ <linearGradient
+ xlink:href="#linearGradient4146"
+ id="linearGradient4708"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.60633777,2.7409506)"
+ x1="400.09921"
+ y1="899.66388"
+ x2="716.43781"
+ y2="899.66388" />
+ <linearGradient
+ xlink:href="#linearGradient4146"
+ id="linearGradient4710"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.77207685,-0.36821112)"
+ x1="400.09921"
+ y1="899.66388"
+ x2="716.43781"
+ y2="899.66388" />
+ <linearGradient
+ xlink:href="#linearGradient4146"
+ id="linearGradient4712"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0.51335771,1.1117382)"
+ x1="400.09921"
+ y1="899.66388"
+ x2="716.43781"
+ y2="899.66388" />
+ <linearGradient
+ xlink:href="#linearGradient4146"
+ id="linearGradient4714"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-1.9166526,0.17227193)"
+ x1="400.09921"
+ y1="899.66388"
+ x2="716.43781"
+ y2="899.66388" />
+ </defs>
+ <metadata
+ id="metadata1680">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(46.096772,32.546427)"
+ id="layer1">
+ <g
+ id="g4686"
+ style="fill:none;stroke:url(#linearGradient4716);stroke-width:8.15922217;stroke-miterlimit:4;stroke-dasharray:none"
+ transform="matrix(2.8234217e-4,0.0916895,-0.10484799,2.1508101e-4,54.114137,-70.017916)">
+ <path
+ id="path4328"
+ d="m 427.73761,845.97746 257.8191,0.71912"
+ style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient4708);stroke-width:8.15922217;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient4710);stroke-width:8.15922217;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 424.22945,952.83607 259.25207,0.66653"
+ id="path4330" />
+ <path
+ id="path4332"
+ d="m 428.84344,845.4037 c 0,0 -18.59975,25.38769 -18.19184,56.38884 0.40791,31.00116 14.73658,51.62189 14.73658,51.62189"
+ style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient4712);stroke-width:8.15922217;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient4714);stroke-width:8.15922217;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 682.33695,954.04308 c 0,0 17.85367,-22.41911 17.84056,-53.42295 -0.0131,-31.00384 -15.76918,-54.50823 -15.76918,-54.50823"
+ id="path4334" />
+ </g>
+ </g>
+</svg>
diff --git a/src/main/resources/base/svg/Pumps/Duplex Pump.svg b/src/main/resources/base/svg/Pumps/Duplex Pump.svg
index d499cc7..7557711 100644
--- a/src/main/resources/base/svg/Pumps/Duplex Pump.svg
+++ b/src/main/resources/base/svg/Pumps/Duplex Pump.svg
@@ -7,63 +7,39 @@
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"
- inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
- sodipodi:docname="Duplex Pump.svg"
- width="21.156015mm"
- height="22.703859mm"
- viewBox="0 0 21.156015 22.703859"
+ id="svg5576"
version="1.1"
- id="svg5576">
- <sodipodi:namedview
- inkscape:current-layer="svg5576"
- inkscape:window-maximized="1"
- inkscape:window-y="-9"
- inkscape:window-x="-9"
- inkscape:cy="42.904931"
- inkscape:cx="39.979872"
- inkscape:zoom="9.812392"
- showgrid="false"
- id="namedview20"
- inkscape:window-height="1013"
- inkscape:window-width="1920"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0"
- guidetolerance="10"
- gridtolerance="10"
- objecttolerance="10"
- borderopacity="1"
- bordercolor="#666666"
- pagecolor="#ffffff" />
+ viewBox="0 0 21.156015 22.703859"
+ height="22.703859mm"
+ width="21.156015mm">
<defs
id="defs5570">
<linearGradient
- gradientTransform="matrix(0.26458333,0,0,0.26458333,-612.68758,-69.39463)"
- gradientUnits="userSpaceOnUse"
- y2="280.57645"
- x2="2365.7141"
- y1="280.57645"
- x1="2331.7856"
+ xlink:href="#linearGradient4926"
id="linearGradient5047"
- xlink:href="#linearGradient4926" />
+ x1="2331.7856"
+ y1="280.57645"
+ x2="2365.7141"
+ y2="280.57645"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.26458333,0,0,0.26458333,-547.69335,-4.3953684)" />
<linearGradient
- osb:paint="solid"
- id="linearGradient4926">
+ id="linearGradient4926"
+ osb:paint="solid">
<stop
- id="stop4924"
+ style="stop-color:#000000;stop-opacity:1;"
offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
+ id="stop4924" />
</linearGradient>
<linearGradient
- gradientTransform="matrix(0.73140497,0,0,0.73140497,-702.68351,233.03624)"
- y2="280.57645"
- x2="2365.7141"
- y1="280.57645"
- x1="2331.7856"
- gradientUnits="userSpaceOnUse"
+ xlink:href="#linearGradient4926"
id="linearGradient5051"
- xlink:href="#linearGradient4926" />
+ gradientUnits="userSpaceOnUse"
+ x1="2331.7856"
+ y1="280.57645"
+ x2="2365.7141"
+ y2="280.57645"
+ gradientTransform="matrix(0.73140497,0,0,0.73140497,-702.68351,233.03624)" />
</defs>
<metadata
id="metadata5573">
@@ -73,56 +49,60 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
+ <dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
- id="g873">
- <rect
- y="0.39999947"
- x="4.2640209"
- height="8.8824406"
- width="8.9769344"
- id="rect5041"
- style="fill:none;stroke:url(#linearGradient5047);stroke-width:0.799999;stroke-miterlimit:4;stroke-dasharray:none" />
+ transform="translate(-64.994234,-64.999262)"
+ id="layer1">
<g
- style="stroke-width:3.02362;stroke-miterlimit:4;stroke-dasharray:none"
- transform="matrix(0.26458333,0,0,0.26458333,-259.85352,-96.898438)"
- id="g5609">
+ id="g6206">
<rect
- y="425.97406"
- x="1002.7961"
- height="24.554312"
- width="24.815525"
- id="rect5049"
- style="fill:#ffffff;stroke:url(#linearGradient5051);stroke-width:3.02362;stroke-miterlimit:4;stroke-dasharray:none" />
- <text
- xml:space="preserve"
- style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.02362;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- x="1005.492"
- y="446.45251"
- id="text5053"><tspan
- id="tspan5055"
+ y="65.399261"
+ x="69.258255"
+ height="8.8824406"
+ width="8.9769344"
+ id="rect5041"
+ style="fill:#ffffff;stroke:url(#linearGradient5047);stroke-width:0.799999;stroke-miterlimit:4;stroke-dasharray:none" />
+ <g
+ style="stroke-width:3.02362;stroke-miterlimit:4;stroke-dasharray:none"
+ transform="matrix(0.26458333,0,0,0.26458333,-194.85929,-31.899176)"
+ id="g5609">
+ <rect
+ y="425.97406"
+ x="1002.7961"
+ height="24.554312"
+ width="24.815525"
+ id="rect5049"
+ style="fill:#ffffff;stroke:url(#linearGradient5051);stroke-width:3.02362;stroke-miterlimit:4;stroke-dasharray:none" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.02362;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
x="1005.492"
y="446.45251"
- style="font-size:22.5px;line-height:1.25;stroke-width:3.02362;stroke-miterlimit:4;stroke-dasharray:none">M</tspan></text>
+ id="text5053"><tspan
+ id="tspan5055"
+ x="1005.492"
+ y="446.45251"
+ style="font-size:22.5px;line-height:1.25;stroke-width:3.02362;stroke-miterlimit:4;stroke-dasharray:none">M</tspan></text>
+ </g>
+ <path
+ id="path5057"
+ d="m 73.735737,74.294235 0.02196,6.52009"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.799999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5061"
+ d="m 69.163787,67.667124 -4.169553,3e-6"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.799999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5069"
+ d="m 78.18796,72.037475 7.961101,0.02363"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.799999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 78.18796,69.840481 H 69.541763"
+ id="path6185" />
</g>
- <path
- id="path5057"
- d="m 8.741503,9.294973 0.02196,6.52009"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.799999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- id="path5061"
- d="M 4.169553,2.667862 0,2.667865"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.799999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- id="path5069"
- d="m 13.193726,7.038213 7.961101,0.02363"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.799999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 13.193726,4.841219 H 4.547529"
- id="path6185" />
</g>
</svg>
diff --git a/src/main/resources/base/svg/Separators/Separators for Liquids, Decanter.svg b/src/main/resources/base/svg/Separators/Separators for Liquids, Decanter.svg
new file mode 100644
index 0000000..03e0d1a
--- /dev/null
+++ b/src/main/resources/base/svg/Separators/Separators for Liquids, Decanter.svg
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ 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"
+ id="svg1247"
+ version="1.1"
+ viewBox="0 0 16.08573 26.071976"
+ height="26.071976mm"
+ width="16.08573mm">
+ <defs
+ id="defs1241">
+ <linearGradient
+ xlink:href="#linearGradient5773"
+ id="linearGradient5775"
+ x1="687.14996"
+ y1="182.60863"
+ x2="705.05701"
+ y2="182.60863"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.85361472,0,0,0.96485861,-442.37409,-27.125941)" />
+ <linearGradient
+ id="linearGradient5773"
+ osb:paint="solid">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop5771" />
+ </linearGradient>
+ </defs>
+ <metadata
+ id="metadata1244">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(-313.2369,-248.52353)"
+ id="layer1">
+ <g
+ style="fill:none;stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none"
+ transform="translate(169.44966,112.49395)"
+ id="g1223">
+ <rect
+ y="136.42958"
+ x="144.18724"
+ height="25.271976"
+ width="15.285729"
+ id="rect5769"
+ style="fill:none;stroke:url(#linearGradient5775);stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none" />
+ <path
+ id="path6767"
+ d="m 144.23819,153.86161 h 3.67496"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path6769"
+ d="m 149.67521,153.86161 h 4.54359"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path6771"
+ d="m 156.20948,153.84778 h 3.14042"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ </g>
+</svg>
diff --git a/src/main/resources/base/svg/Storage Vessels Tanks/Fixed Roof Tank.svg b/src/main/resources/base/svg/Storage Vessels Tanks/Fixed Roof Tank.svg
new file mode 100644
index 0000000..59d046c
--- /dev/null
+++ b/src/main/resources/base/svg/Storage Vessels Tanks/Fixed Roof Tank.svg
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ 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"
+ id="svg1031"
+ version="1.1"
+ viewBox="0 0 25.655163 24.952713"
+ height="24.952713mm"
+ width="25.655163mm">
+ <defs
+ id="defs1025" />
+ <metadata
+ id="metadata1028">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1">
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 0.40000001,6.9481001 V 25.122426 H 25.79058 V 7.2153691 L 13.11495,0.45124507 Z"
+ id="path3796" />
+ </g>
+</svg>
diff --git a/src/main/resources/base/svg/Storage Vessels Tanks/Floating Roof Tank.svg b/src/main/resources/base/svg/Storage Vessels Tanks/Floating Roof Tank.svg
new file mode 100644
index 0000000..e0f66b9
--- /dev/null
+++ b/src/main/resources/base/svg/Storage Vessels Tanks/Floating Roof Tank.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ 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"
+ id="svg1627"
+ version="1.1"
+ viewBox="0 0 24.853373 18.707533"
+ height="18.707533mm"
+ width="24.853373mm">
+ <defs
+ id="defs1621" />
+ <metadata
+ id="metadata1624">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1">
+ <g
+ style="fill:none;stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none"
+ id="g5191"
+ transform="translate(-164.491,-88.609669)">
+ <path
+ id="path3798"
+ d="m 164.62329,88.609669 v 18.575241 h 24.58879 V 88.609671"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
+ <g
+ style="fill:none;stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none"
+ transform="translate(-350.93963,22.931456)"
+ id="g3835">
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+ d="m 518.27455,67.993667 h 19.25482"
+ id="path3800" />
+ <g
+ style="fill:none;stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none"
+ id="g3818"
+ transform="translate(-0.0626413,-0.00417609)">
+ <path
+ id="path3802"
+ d="m 516.61076,66.174656 v 3.638021"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
+ <path
+ id="path3804"
+ d="m 516.74069,68.938607 h 1.46465 v -1.937128 h -1.60639"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
+ </g>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+ d="m 524.72259,67.973849 3.16841,2.145933 3.66755,-2.14974"
+ id="path3806" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+ d="m 527.891,70.119782 c 0.18928,1.111516 0.14063,2.262951 -0.14174,3.354538 -0.1475,0.570201 -0.35778,1.123442 -0.61423,1.653646 -0.6544,1.352936 -1.61436,2.557 -2.78757,3.49628 -1.13541,0.909013 -2.46725,1.568582 -3.87424,1.937129 -1.56805,0.410735 -3.22972,0.459607 -4.8192,0.14174"
+ id="path3808" />
+ <g
+ style="fill:none;stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none"
+ transform="matrix(-1,0,0,1,1055.8677,0.00835215)"
+ id="g3824">
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+ d="m 516.61076,66.174656 v 3.638021"
+ id="path3820" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+ d="m 516.74069,68.938607 h 1.46465 v -1.937128 h -1.60639"
+ id="path3822" />
+ </g>
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/src/main/resources/base/svg/Valves/Gate Valve.svg b/src/main/resources/base/svg/Valves/Gate Valve.svg
new file mode 100644
index 0000000..53b3b6f
--- /dev/null
+++ b/src/main/resources/base/svg/Valves/Gate Valve.svg
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ 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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ sodipodi:docname="Gate Valve.svg"
+ inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
+ id="svg1007"
+ version="1.1"
+ viewBox="0 0 7.4183703 5.1522822"
+ height="5.1522822mm"
+ width="7.4183702mm">
+ <defs
+ id="defs1001" />
+ <sodipodi:namedview
+ inkscape:window-maximized="0"
+ inkscape:window-y="0"
+ inkscape:window-x="114"
+ inkscape:window-height="1020"
+ inkscape:window-width="1741"
+ showgrid="false"
+ inkscape:document-rotation="0"
+ inkscape:current-layer="layer1"
+ inkscape:document-units="mm"
+ inkscape:cy="67.111624"
+ inkscape:cx="211.91168"
+ inkscape:zoom="1.979899"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ borderopacity="1.0"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base" />
+ <metadata
+ id="metadata1004">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(-5.7608123)"
+ id="layer1"
+ inkscape:groupmode="layer"
+ inkscape:label="Layer 1">
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 6.163191,0.6943177 12.777775,4.4315572 12.770102,0.68829843 6.1611802,4.4629686 Z"
+ id="path3899"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ </g>
+</svg>
diff --git a/src/main/resources/base/svg/Valves/Globe Valve.svg b/src/main/resources/base/svg/Valves/Globe Valve.svg
new file mode 100644
index 0000000..f584bf8
--- /dev/null
+++ b/src/main/resources/base/svg/Valves/Globe Valve.svg
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ 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"
+ id="svg1605"
+ version="1.1"
+ viewBox="0 0 7.218342 4.8078794"
+ height="4.8078794mm"
+ width="7.2183418mm">
+ <defs
+ id="defs1599" />
+ <metadata
+ id="metadata1602">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(242.31682,-195.94439)"
+ id="layer1">
+ <g
+ transform="translate(0.16789109,0.2885682)"
+ style="stroke-width:0.6;stroke-miterlimit:4;stroke-dasharray:none"
+ id="g2221">
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m -242.18205,196.17804 6.61458,3.73724 -0.008,-3.74326 -6.60892,3.77467 z"
+ id="path3918-6" />
+ <circle
+ style="stroke-width:0.6;stroke-miterlimit:4;stroke-dasharray:none"
+ cy="198.05989"
+ cx="-238.87541"
+ id="path3926-3"
+ r="1.5" />
+ </g>
+ </g>
+</svg>
diff --git a/src/main/resources/base/toolbar/Compressors/Centrifugal Compressor.png b/src/main/resources/base/toolbar/Compressors/Centrifugal Compressor.png
index 0dd5c81..81780ce 100644
--- a/src/main/resources/base/toolbar/Compressors/Centrifugal Compressor.png
+++ b/src/main/resources/base/toolbar/Compressors/Centrifugal Compressor.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Compressors/Ejector Compressor.png b/src/main/resources/base/toolbar/Compressors/Ejector Compressor.png
index 2401524..4035d40 100644
--- a/src/main/resources/base/toolbar/Compressors/Ejector Compressor.png
+++ b/src/main/resources/base/toolbar/Compressors/Ejector Compressor.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Compressors/Fan.png b/src/main/resources/base/toolbar/Compressors/Fan.png
index 44ee063..b4dee52 100644
--- a/src/main/resources/base/toolbar/Compressors/Fan.png
+++ b/src/main/resources/base/toolbar/Compressors/Fan.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Compressors/Positive Displacement Compressor.png b/src/main/resources/base/toolbar/Compressors/Positive Displacement Compressor.png
index f7e6e8e..f99340c 100644
--- a/src/main/resources/base/toolbar/Compressors/Positive Displacement Compressor.png
+++ b/src/main/resources/base/toolbar/Compressors/Positive Displacement Compressor.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Compressors/Reciprocating Compressor.png b/src/main/resources/base/toolbar/Compressors/Reciprocating Compressor.png
index 781f722..08d82a3 100644
--- a/src/main/resources/base/toolbar/Compressors/Reciprocating Compressor.png
+++ b/src/main/resources/base/toolbar/Compressors/Reciprocating Compressor.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Compressors/Turbine.png b/src/main/resources/base/toolbar/Compressors/Turbine.png
index 795cc90..1570528 100644
--- a/src/main/resources/base/toolbar/Compressors/Turbine.png
+++ b/src/main/resources/base/toolbar/Compressors/Turbine.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Furnaces and Boilers/Oil Gas or Pulverized Fuel Furnace.png b/src/main/resources/base/toolbar/Furnaces and Boilers/Oil Gas or Pulverized Fuel Furnace.png
new file mode 100644
index 0000000..4a114c2
--- /dev/null
+++ b/src/main/resources/base/toolbar/Furnaces and Boilers/Oil Gas or Pulverized Fuel Furnace.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Furnaces and Boilers/Solid Fuel Furnace.png b/src/main/resources/base/toolbar/Furnaces and Boilers/Solid Fuel Furnace.png
new file mode 100644
index 0000000..a134c72
--- /dev/null
+++ b/src/main/resources/base/toolbar/Furnaces and Boilers/Solid Fuel Furnace.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Heating or Cooling Arrangements/905Exchanger.png b/src/main/resources/base/toolbar/Heating or Cooling Arrangements/905Exchanger.png
new file mode 100644
index 0000000..d0383d3
--- /dev/null
+++ b/src/main/resources/base/toolbar/Heating or Cooling Arrangements/905Exchanger.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Heating or Cooling Arrangements/907Kettle Reboiler.png b/src/main/resources/base/toolbar/Heating or Cooling Arrangements/907Kettle Reboiler.png
new file mode 100644
index 0000000..8dbcf4a
--- /dev/null
+++ b/src/main/resources/base/toolbar/Heating or Cooling Arrangements/907Kettle Reboiler.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Heating or Cooling Arrangements/Exchanger.png b/src/main/resources/base/toolbar/Heating or Cooling Arrangements/Exchanger.png
new file mode 100644
index 0000000..f044df6
--- /dev/null
+++ b/src/main/resources/base/toolbar/Heating or Cooling Arrangements/Exchanger.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Heating or Cooling Arrangements/Heat Exchanger.png b/src/main/resources/base/toolbar/Heating or Cooling Arrangements/Heat Exchanger.png
new file mode 100644
index 0000000..c59c237
--- /dev/null
+++ b/src/main/resources/base/toolbar/Heating or Cooling Arrangements/Heat Exchanger.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Heating or Cooling Arrangements/Immersion Coil.png b/src/main/resources/base/toolbar/Heating or Cooling Arrangements/Immersion Coil.png
new file mode 100644
index 0000000..8dd7b58
--- /dev/null
+++ b/src/main/resources/base/toolbar/Heating or Cooling Arrangements/Immersion Coil.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Heating or Cooling Arrangements/Kettle Reboiler.png b/src/main/resources/base/toolbar/Heating or Cooling Arrangements/Kettle Reboiler.png
new file mode 100644
index 0000000..e2d0f1f
--- /dev/null
+++ b/src/main/resources/base/toolbar/Heating or Cooling Arrangements/Kettle Reboiler.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Piping/Inflow Line.png b/src/main/resources/base/toolbar/Piping/Inflow Line.png
index 7e5356d..b710b99 100644
--- a/src/main/resources/base/toolbar/Piping/Inflow Line.png
+++ b/src/main/resources/base/toolbar/Piping/Inflow Line.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Piping/Outflow Line.png b/src/main/resources/base/toolbar/Piping/Outflow Line.png
index 84d1645..245b959 100644
--- a/src/main/resources/base/toolbar/Piping/Outflow Line.png
+++ b/src/main/resources/base/toolbar/Piping/Outflow Line.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Process Vessels/Horizontal Vessel.png b/src/main/resources/base/toolbar/Process Vessels/Horizontal Vessel.png
new file mode 100644
index 0000000..b196a1b
--- /dev/null
+++ b/src/main/resources/base/toolbar/Process Vessels/Horizontal Vessel.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Process Vessels/Packed Vessel.png b/src/main/resources/base/toolbar/Process Vessels/Packed Vessel.png
new file mode 100644
index 0000000..6800f61
--- /dev/null
+++ b/src/main/resources/base/toolbar/Process Vessels/Packed Vessel.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Process Vessels/Trays or plates.png b/src/main/resources/base/toolbar/Process Vessels/Trays or plates.png
new file mode 100644
index 0000000..70e5615
--- /dev/null
+++ b/src/main/resources/base/toolbar/Process Vessels/Trays or plates.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Process Vessels/Vertical Vessel.png b/src/main/resources/base/toolbar/Process Vessels/Vertical Vessel.png
new file mode 100644
index 0000000..cdba66f
--- /dev/null
+++ b/src/main/resources/base/toolbar/Process Vessels/Vertical Vessel.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Pumps/Blowing Egg.png b/src/main/resources/base/toolbar/Pumps/Blowing Egg.png
index 87118a4..f23f389 100644
--- a/src/main/resources/base/toolbar/Pumps/Blowing Egg.png
+++ b/src/main/resources/base/toolbar/Pumps/Blowing Egg.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Pumps/Duplex Pump.png b/src/main/resources/base/toolbar/Pumps/Duplex Pump.png
index b2ee84b..9b95b49 100644
--- a/src/main/resources/base/toolbar/Pumps/Duplex Pump.png
+++ b/src/main/resources/base/toolbar/Pumps/Duplex Pump.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Pumps/Ejector(Vapor Service).png b/src/main/resources/base/toolbar/Pumps/Ejector(Vapor Service).png
index e317698..fedef5d 100644
--- a/src/main/resources/base/toolbar/Pumps/Ejector(Vapor Service).png
+++ b/src/main/resources/base/toolbar/Pumps/Ejector(Vapor Service).png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Pumps/Hand Pump with Drum.png b/src/main/resources/base/toolbar/Pumps/Hand Pump with Drum.png
index a183826..e6b44bd 100644
--- a/src/main/resources/base/toolbar/Pumps/Hand Pump with Drum.png
+++ b/src/main/resources/base/toolbar/Pumps/Hand Pump with Drum.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Pumps/Plunger Pump.png b/src/main/resources/base/toolbar/Pumps/Plunger Pump.png
index c6dc484..c59c521 100644
--- a/src/main/resources/base/toolbar/Pumps/Plunger Pump.png
+++ b/src/main/resources/base/toolbar/Pumps/Plunger Pump.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Pumps/Proportioning Pump.png b/src/main/resources/base/toolbar/Pumps/Proportioning Pump.png
index c00c923..b3d869e 100644
--- a/src/main/resources/base/toolbar/Pumps/Proportioning Pump.png
+++ b/src/main/resources/base/toolbar/Pumps/Proportioning Pump.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Pumps/Reciprocating Pump.png b/src/main/resources/base/toolbar/Pumps/Reciprocating Pump.png
index de8155e..f066dbd 100644
--- a/src/main/resources/base/toolbar/Pumps/Reciprocating Pump.png
+++ b/src/main/resources/base/toolbar/Pumps/Reciprocating Pump.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Separators/Separators for Liquids, Decanter.png b/src/main/resources/base/toolbar/Separators/Separators for Liquids, Decanter.png
new file mode 100644
index 0000000..a16456c
--- /dev/null
+++ b/src/main/resources/base/toolbar/Separators/Separators for Liquids, Decanter.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Storage Vessels Tanks/Fixed Roof Tank.png b/src/main/resources/base/toolbar/Storage Vessels Tanks/Fixed Roof Tank.png
new file mode 100644
index 0000000..35e08ee
--- /dev/null
+++ b/src/main/resources/base/toolbar/Storage Vessels Tanks/Fixed Roof Tank.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Storage Vessels Tanks/Floating Roof Tank.png b/src/main/resources/base/toolbar/Storage Vessels Tanks/Floating Roof Tank.png
new file mode 100644
index 0000000..23e8d47
--- /dev/null
+++ b/src/main/resources/base/toolbar/Storage Vessels Tanks/Floating Roof Tank.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Valves/Gate Valve.png b/src/main/resources/base/toolbar/Valves/Gate Valve.png
new file mode 100644
index 0000000..74a65ed
--- /dev/null
+++ b/src/main/resources/base/toolbar/Valves/Gate Valve.png
Binary files differ
diff --git a/src/main/resources/base/toolbar/Valves/Globe Valve.png b/src/main/resources/base/toolbar/Valves/Globe Valve.png
new file mode 100644
index 0000000..887608a
--- /dev/null
+++ b/src/main/resources/base/toolbar/Valves/Globe Valve.png
Binary files differ
diff --git a/src/main/resources/base/ui/close.svg b/src/main/resources/base/ui/close.svg
new file mode 100644
index 0000000..cb1c174
--- /dev/null
+++ b/src/main/resources/base/ui/close.svg
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ 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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
+ sodipodi:docname="close.svg"
+ id="svg4"
+ version="1.1"
+ viewBox="0 0 10 10"><metadata
+ id="metadata10">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+</metadata>
+<defs
+ id="defs8" />
+<sodipodi:namedview
+ inkscape:current-layer="svg4"
+ inkscape:window-maximized="1"
+ inkscape:window-y="-9"
+ inkscape:window-x="-9"
+ inkscape:cy="7.585194"
+ inkscape:cx="2.5623729"
+ inkscape:zoom="42.1"
+ showgrid="false"
+ id="namedview6"
+ inkscape:window-height="1013"
+ inkscape:window-width="1920"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0"
+ guidetolerance="10"
+ gridtolerance="10"
+ objecttolerance="10"
+ borderopacity="1"
+ bordercolor="#666666"
+ pagecolor="#ffffff" />
+<text
+ id="text2" />
+2 y=8&gt;×<text
+ id="text837"
+ y="11.016971"
+ x="-2.6576188"
+ style="font-style:normal;font-weight:normal;font-size:18.834px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.470852"
+ xml:space="preserve"><tspan
+ style="stroke-width:0.470852"
+ y="11.016971"
+ x="-2.6576188"
+ id="tspan835"
+ sodipodi:role="line">×</tspan></text>
+</svg>