Seite 1 von 2

Symboldatenbank für TIKZ

Verfasst: Mo 31. Jan 2011, 09:49
von schmendrich
Hallo,

es geht um ein Pneumatikschema mit Ventilen, Filtern, Reglern etc.
Die Symbole sind ja genormt. Gibt es eine eine Symboldatenbank/bibliothek für TIKZ, auf die man zurückgreifen kann oder müssen alle Symbole jedesmal von Hand zu erstellt werden?

Grüße
schmendrich

Verfasst: Mo 31. Jan 2011, 22:45
von Sepp99
Eine ähnliche Anfrage gab es vor einiger Zeit unter
http://www.golatex.de/tikz-kraftwerksschema-t4156.html und
http://mrunix.de/forums/showthread.php?t=70062
Vielleicht hilft Dir dort etwas weiter.

Gruß, Sepp.-

Verfasst: Di 1. Feb 2011, 08:30
von schmendrich
Nun zumindest erklärt es, wie ich selbst erstellte Symbole immer wieder verwenden kann.

Bleibt die Frage, ob diese Symbole schon in einer lib existieren und ich einfach drauf zugreifen kann, ohne sie selber erstellen zu müssen.

Grüße
schmendrich

Verfasst: Mo 14. Okt 2013, 15:45
von BlackDevil
Nachdem der Thread offen geblieben ist und mich die gleiche Frage plagt, grab ich das ganze mal aus.

Ich würde eine Bibliothek sowohl für verfahrenstechnische Fließbilder (P&ID (Piping and Instrumentation Diagram) bzw R&I (Rohrleitungs- und Instrumentierungsdiagramm)) als auch zur Netzwerkdarstellung (Datenbank-, Datei-, Usersymbol) benötigen.

Gibt es so etwas fertig? Google half nicht. Sind ja nun keine exotischen Anwendungen und zumindest das erste ist klar in einem Standard definiert. Oder muss ich mir tatsächlich eine eigene Bibliothek zimmern (was das zusätzliche Problem beherbergt das ich neu in Sachen Tikz bin)? Außerdem würde sich der zeitliche Aufwand für die zwei drei kleinen R&Is und das eine Netzwerkdiagramm erheblich verkürzen wenn es fertige Bibliotheken gäbe.

Der Hinweis auf den Kraftwerksthread ist in sofern hilfreich, als das er einem sagt "so baut man sich eine Bibliothek".

Für sachdienliche Hinweise bin ich wie immer dankbar :)

Grüße

Verfasst: Mo 14. Okt 2013, 16:01
von Stefan Kottwitz
Evtl. findest Du SVG-Grafiken, die lassen sich nach TikZ umwandeln. Manche Hersteller bieten PS oder EPS-Grafiken, die man in PDF wandeln kann. So hätte man skalierbare Symbole, die man auch mit TikZ via \includegraphics in nodes benutzen kann.

Stefan

Verfasst: Mo 14. Okt 2013, 22:03
von BlackDevil
In der Zwischenzeit hat man das auch runter geschrieben oder per Editor gezeichnet.

Wie sähe so eine Bib aus? .sty oder .tex?

Verfasst: Mo 14. Okt 2013, 22:25
von Stefan Kottwitz
Es geht beides. .sty für Laden mit \usepackage in LaTeX, .tex für Laden via \input, was außer mit LaTeX auch mit TeX geht.

Evtl. schau Dir Beispiele im TikZ-Quellcode oder existenten Bibliotheken an.

Stefan

Verfasst: Di 15. Okt 2013, 09:47
von BlackDevil
Dann werde ich mal sehen ob ich etwas gebastelt bekomme. Eigentlich habe ich nicht die Zeit dafür, aber eventuell lässt sich ja ein gutes Grundgerüst bauen (ggf. mit Hilfe eines (dem) Tikz Editors) welches sich mit Unterstützung des Forums zu etwas ausbauen lässt das viele Leute im Internet suchen... jedenfalls ist das meine Motivation :) Ich melde wieder wenn ich ein erstes Ergebnis habe. Tikz läuft schon mal ;)

Verfasst: Fr 18. Okt 2013, 14:17
von BlackDevil
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);
:idea:
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$};
			
		}

	

literate programming

Verfasst: Fr 18. Okt 2013, 16:22
von Johannes_B
Wenn du deinen Code auch für Anwender dokumentieren willst, empfehle ich dir die Erstellung einer dtx-Datei. Diese enthält dann Dokumentation und code zusammen, ein extra Schritt erstellt dir sty-Datei und Dokumentation. Vorteil: Nur eine Datei muss bei Updates geändert werden, Doku und Code passen zusammen.

Es gibt ähnliche Pakete, die machen was du vor hast, blätter einfach mal auf CTAN rum. Du kannst dort nach topic sortieren.

Von tikz habe ich persönlich noch recht wenig ahnung, kann deinen Code alsi nicht wirklich bewerten, geschweige denn best-practice-tipps geben.
Vielleicht schaust du auch mal auf TeXwelt vorbei. Da sind auch einige »TikZperten«.