Hallöchen zusammen!
Ich habe einen ersten Schritt in Tikz gemacht. Genauer gesagt habe ich das Basis Symbol für einen Wärmetauscher gebaut. Nun würde ich mich über Unterstützung aus der Community freuen, die .sty werde ich am Ende auch jedem zur Verfügung stellen (dafür mache ich den Aufwand

)
Ich habe mich hieran
TikZ Library for Structural Analysis orientiert. Das funktioniert soweit auch gut. Die aktuelle .sty ist unten angefügt.
Was mir jetzt noch fehlt ist eine Intelligente Verknüpfung der Symbole.
Nehmen wir an, der Wärmetauscher ist auf (0,0) platziert. Dann sind die Anschlüsse des Wärmetauschers bei
- - Zu kühlendes Medium Eingang InHot (0,0.7)
- Zu kühlendes Medium Ausgang OutCold (0,-0.7)
- Kühlwasser Eingang CoolWaterIn (0,0.3)
- Kühlwasser Ausgang CoolWaterOut (0,-0.3)
Jetzt würde ich den Aufruf und die Verknüpfung gerne so machen
\point{heaxa}(0,0);
\point{heaxb}(0,3);
\heax{heaxa}{1};
\heax{heaxa}{2};
\pipe{heaxa{OutCold},{heaxb{InHot}};
% In Zukunft soll pipe sein \pipe{from, to}{type}[dämmung, medium] wobei Type bedeutet "mit elektrischer Begleitheizung", oder "mit Dampfbegleitheizung"; dämmung ist nur ja oder nein
Wie stelle ich das an? Jürgen Hackl definiert Punkte, sowohl für Lager als auch für die Start- und Zielpunkte zwischen denen die Balken verlaufen sollen. Ich müsste diese Punkte ja innerhalb des Wärmetauschers (oder Reaktors oder ...) definieren und von außen darauf zugreifen. Ich denke vermutlich zu sehr in C/C++, weshalb ich einen Knoten im hirn habe ... Edit: Oder geht das nur wenn ich eigene Shapes erstelle? (siehe Tikz Manual 75.5) Das wäre ärgerlich, weil viel viel komplexer ...
Und liese sich der lange Pfad im Wärmetauscher vereinfachen?
Danke euch
Edit: Hab noch die Rotation des Wärmetauschers eingebaut.
Edit: Und noch eine Änderung: Ich habe nun die Verbindung der Wärmetauscher hinbekommen (auch unten im sty):
\coordinate (InHot#2) at ($(#1)+0.7*(0,1)$);
\coordinate (OutHot#2) at ($(#1)-0.7*(0,1)$);
Ich kann im Text darauf zugreifen mit
\point{heax1}{0}{0};
\point{heax2}{0}{3};
\heax{heax1}{1};
\heax{heax2}{2};
\draw [thick] (InHot1) -- (OutHot2);
Stellt sich mir nur die Frage: Ist das so sauber oder pfusch?
---------------------------------------------
pidtikz.sty:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Title : TikZ Library for Piping and
% Instrumentation Diagrams(P&ID)
% Version : 1.0 (2013/10/17)
%
% Author : Marc GRAF
% Engine : PDFLaTeX
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%================================================
% use Package
%================================================
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{pidtikz}
%================================================
% use Package
%================================================
\RequirePackage{ifthen}
\RequirePackage{tikz}
\RequirePackage{xargs}
\usetikzlibrary{shapes,arrows}
\usetikzlibrary{positioning}
\usepackage{verbatim}
\usetikzlibrary{automata}
\usetikzlibrary{arrows}
\usetikzlibrary{calc}
\usetikzlibrary{%
decorations.pathreplacing,%
decorations.pathmorphing%
}
\usetikzlibrary{patterns}
%
%================================================
% variables
%================================================
%
%------------------------------------------------
% construction parameters
%------------------------------------------------
\newcommand{\scalingParameter}{1}
%
%================================================
% library elements
%================================================
%
%------------------------------------------------
% scaling
%------------------------------------------------
% \scaling{scaling value}
%
\newcommandx{\scaling}[1]{
\renewcommand{\scalingParameter}{#1}
}
%------------------------------------------------
% point
%------------------------------------------------
% \point{name}{x-coordiante}{y-coordiante}
%
\newcommandx{\point}[3]{
\node[coordinate][
shift={(#2*\scalingParameter,#3*\scalingParameter)}](#1){};
}
%------------------------------------------------
% heat exchanger
%------------------------------------------------
% \heax{insertion point}{number}[rotation]
% ToDo: \heax{type}{insertion point}{number}[rotation] (counter??)
\newcommandx{\heax}[3][3=0]
{
\begin{scope}[rotate around={#3:(#1)}]
\draw [ultra thick] (#1) circle [radius=0.5];
\draw [thick] ($(#1)+0.7*(1,0)-0.3*(0,1)$) -- ($(#1)-0.2*(1,0)-0.3*(0,1)$) -- ($(#1)+0.2*(1,0)+(0,0)$) -- ($(#1)-0.2*(1,0)+0.3*(0,1)$) -- ($(#1)+0.7*(1,0)+0.3*(0,1)$);
\draw [thick] ($(#1)-0.5*(0,1)$) -- ($(#1)-0.7*(0,1)$);
\draw [thick] ($(#1)+0.5*(0,1)$) -- ($(#1)+0.7*(0,1)$);
\coordinate (InHot#2) at ($(#1)+0.7*(0,1)$);
\coordinate (OutHot#2) at ($(#1)-0.7*(0,1)$);
\end{scope}
\node [right] at ($(#1)+0.2*(1,0)-0.6*(0,1)$) {E-$#2$};
}