Symboldatenbank für TIKZ

Tabellen und Grafiken erstellen und anordnen


schmendrich
Forum-Century
Forum-Century
Beiträge: 136
Registriert: Mo 2. Mär 2009, 19:18

Symboldatenbank für TIKZ

Beitrag 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

Benutzeravatar
Sepp99
Forum-Meister
Forum-Meister
Beiträge: 1569
Registriert: So 29. Aug 2010, 17:26
Wohnort: Offenhausen/OÖ

Beitrag 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.-

schmendrich
Forum-Century
Forum-Century
Beiträge: 136
Registriert: Mo 2. Mär 2009, 19:18

Beitrag 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

BlackDevil
Forum-Century
Forum-Century
Beiträge: 107
Registriert: Di 23. Jul 2013, 11:38
Wohnort: Deutschland

Beitrag 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

Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2766
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

Beitrag 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

BlackDevil
Forum-Century
Forum-Century
Beiträge: 107
Registriert: Di 23. Jul 2013, 11:38
Wohnort: Deutschland

Beitrag 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?

Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2766
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

Beitrag 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

BlackDevil
Forum-Century
Forum-Century
Beiträge: 107
Registriert: Di 23. Jul 2013, 11:38
Wohnort: Deutschland

Beitrag 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 ;)

BlackDevil
Forum-Century
Forum-Century
Beiträge: 107
Registriert: Di 23. Jul 2013, 11:38
Wohnort: Deutschland

Beitrag 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$};
			
		}

	

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

literate programming

Beitrag 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«.
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

Antworten