Чертеж схемы/блок-диаграммы
Я ищу либо алгоритмы, либо инструмент визуализации для (красивого) чертежа схемы/блок-диаграммы.
Меня также интересует общая постановка задачи.
Под "чертежом схемы" я имею в виду возможность изучения места и маршрута для блок-диаграмм (прямоугольников) с портами ввода-вывода и их соединений (проводов). Эти блок-диаграммы могут быть иерархическими, то есть некоторые блоки могут иметь некоторую вложенную внутреннюю подструктуру и т.д.
Этот раздел тесно связан с классическим графическим рисунком с дополнительным ограничением необходимости учитывать расположение портов и, возможно, форму блоков (прямоугольник разных размеров). Инструменты 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/
Ответ 3
Вот один из них:
http://www.physicsbox.com/indexsolveelec2en.html
Вот где искать других:
http://www.freebyte.com/electronics/
www.educypedia.be/electronics/easoftsim.htm
Ответ 4
Существуют альтернативы Graphviz, которые могут выполнять работу - см., например, infovis, protovis, tulip.
См. также другие связанные вопросы 1, 2, 3.
Можете ли вы объяснить, почему Graphviz не подходит? Единственное требование, которое вы перечисляете, я не уверен в подключении к конкретным портам. Я бы подумал, что вы сможете решить это с помощью составных фигур/подграфов, но, возможно, не...?
EDIT. Еще один вариант, особенно если вы смотрите на диаграммы разработки программного обеспечения. Вы рассмотрели eclipse gmp toolkit? Это то, что используется для сборки, например. Инструменты редактора UML2.
НТН.
Ответ 5
Я не знаю ни одного инструмента, который является явным победителем для легкого создания хороших блок-диаграмм с минимальным ручным трудом. Некоторые из лучших результатов, которые я видел, были от TikZ. Ознакомьтесь с примерами здесь: