Ahoj
Dlouhé roky jsem buď vše programoval přímo nebo si to kreslil tužkou a pak to případně překresloval do dokumentace. Kvůli složitosti zadání jsem nedávno vyzkoušel program
dot http://www.graphviz.org/doc/info/lang.html a docela se mi zalíbil.
Je super, že stačí do textového souboru vypsat stavy + seznam hran a vypadne rozumný obrázek. Ve chvíli, když se ukáže (bohužel často), že situace je složitější, potřebuju přidat další stav nebo hranu, jen ho připíšu do souboru a za vteřinu mám nový obrázek, tomu nemůže konkurovat ani čmárání na papír a vypadá to mnohem lépe. O pracností úpravy v grafickém programu, kde bych musel kvůli nové bublině ostatní posouvat, ani nemluvě.
U jednoduchých obrázků zvládá často rozrovnat bubliny a promotat hrany, že se nic nekříží a vypadá to rozumně....
JENŽE dost často koukám na výsledek a k dokonalosti tomu chybí drobnost, stačilo by jednu hranu vést jinudy a nemusela se vůbec křížit nebo bych chtěl jednu bublinku kousek posunout, aby byla na první pohled vidět symetrie levé a pravé strany... a najednou zjišťuji, že bych potřeboval mít možnost dát programu nějaký hint, jak to chci uspořádat nebo třeba si vynutit konkrétní umístění konkrétního nódu nebo hrany a ono to NEJDE?
Někdy pomůže změnit pořadí v seznamu nódů, navíc se dá využít zařazení nódů do skupiny se stejným rankem nebo měnit váhu jednotlivých hran, ale to je asi tak všechno. U složitějšího diagramu leckdy stačí dodatečně přidat jedinou hranu a přestože do teď to vypadalo dobře, najednou se vše přesype, obrázek zabírá dvojnásobek místa a z diagramu je zmatené bludiště...
Jasně, můžu vzít výstup v SVG a úpravy provést tam, třeba i přidat tam tu závěrečnou hranu ručně, když si s ní dot neporadí, ale to mi připadá jako škoda, protože vstupní soubor pak můžu zahodit, veškeré úpravy od toho okamžiku musím dělat ručně v tom SVG, což v okamžiku, kdy chci do bubliny napsat delší text a kvůli tomu zvětšit bublinu, jsem zase na začátku...
Zkoušel jsem místo dot použít neato (i ostatní layouty), tam sice jde u nódu použít atribut pos, jenže výsledek je mnohem horší než u dot, hlavně se neato vůbec nesnaží uspořádat hrany tak, aby to vypadalo hezky. Nakonec jsem zjistil, že jde použít dot k vygenerování výstupu obsahující pozice, který pak zvládne neato vyrenderovat, takže to je teoretická možnost úpravy, ale v důsledku jsem si oproti editaci SVG moc nepomohl...
Takže otázka, zda není nějaká finta, jak do vstupu pro dot vsunout nějaký hint pro umístění nebo třeba nějaký fork projektu, který by toho uměl víc? Pokušení stáhnout zdrojáky a zkusit program "vylepšit" zatím odolávám, protože stejné problémy určitě řešili i jiní?