Чертеж схемы/блок-диаграммы

Я ищу либо алгоритмы, либо инструмент визуализации для (красивого) чертежа схемы/блок-диаграммы.

Меня также интересует общая постановка задачи.

Под "чертежом схемы" я имею в виду возможность изучения места и маршрута для блок-диаграмм (прямоугольников) с портами ввода-вывода и их соединений (проводов). Эти блок-диаграммы могут быть иерархическими, то есть некоторые блоки могут иметь некоторую вложенную внутреннюю подструктуру и т.д.

Этот раздел тесно связан с классическим графическим рисунком с дополнительным ограничением необходимости учитывать расположение портов и, возможно, форму блоков (прямоугольник разных размеров). Инструменты Graphviz не реагируют на проблему (по крайней мере, мои предыдущие эксперименты не были удовлетворительными).

Силовые алгоритмы сохраняют мое внимание, но я только что нашел статьи по классическим направленным графам.

Любые подсказки?

[update nov 21 2013] кажется, что лучшая ссылка на дату Spönemann

Ответ 1

Чтобы создать принципиальные схемы качества продукции, а также блок-схемы, я настоятельно рекомендую "схемы макросов" Д. Д. Аплевича. Он хорошо документирован и активно поддерживается. См. Примеры, созданные в этом пакете примеры макросов схемы

Существует некоторая кривая обучения, например, чтобы использовать графический язык "dpic" для рисования собственной диаграммы. Но сам инструмент очень мощный.

Для меня есть две оставшиеся проблемы:

  • нет живого обновления
  • Выход svg отсутствует

Я взломал Javascript на

(watch m4 file change)->[m4->dpic->latex->pdf]->svg->(show in html)

Вот его суть

// watch .m4 file

var chokidar = require('chokidar');
var resolve = require('path').resolve;
const touch = require('touch')
const {exec} = require('child_process')

chokidar.watch("*.m4").on('change', fn=>{
   let ff = resolve(fn)
   console.log(ff, "changed")
   exec("runtask.bat " + ff, {cwd:"../"}, (err,stdin,stdout)=>{
    console.log(err,stdin, stdout)
    touch("index.html") //svg updated
    })

})

Вот runtask.bat для Windows

m4 pgf.m4 %1 | dpic -g > tmp.tex

C:\texlive\2017\bin\win32\pdflatex template.tex

tool\dist-64bits\pdf2svg template.pdf %~dpn1.svg
tool\dist-64bits\pdf2svg template.pdf %~dp1tmp.svg

Таким образом, вы можете "нарисовать", написав код m4/dpic и увидеть результат в браузере вживую; и svg генерируется из pdf, который выглядит намного приятнее.

Ответ 2

Я также использую TikZ в данный момент, но вы можете попробовать http://blockdiag.com/

Ответ 4

Существуют альтернативы Graphviz, которые могут выполнять работу - см., например, infovis, protovis, tulip.

См. также другие связанные вопросы 1, 2, 3.

Можете ли вы объяснить, почему Graphviz не подходит? Единственное требование, которое вы перечисляете, я не уверен в подключении к конкретным портам. Я бы подумал, что вы сможете решить это с помощью составных фигур/подграфов, но, возможно, не...?

EDIT. Еще один вариант, особенно если вы смотрите на диаграммы разработки программного обеспечения. Вы рассмотрели eclipse gmp toolkit? Это то, что используется для сборки, например. Инструменты редактора UML2.

НТН.

Ответ 5

Я не знаю ни одного инструмента, который является явным победителем для легкого создания хороших блок-диаграмм с минимальным ручным трудом. Некоторые из лучших результатов, которые я видел, были от TikZ. Ознакомьтесь с примерами здесь: