чертеж схемы / блок-схемы - PullRequest
11 голосов
/ 21 июня 2011

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

Меня также интересует общая постановка проблемы.

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

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

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

Есть намеки?

[обновление 21 ноября 2013 г.], похоже, что лучшая ссылка на сегодняшний день - Spönemann

Ответы [ 6 ]

3 голосов
/ 31 августа 2012

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

2 голосов
/ 11 февраля 2018

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

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

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

  1. нет обновления в реальном времени
  2. отсутствует вывод 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, который выглядит намного лучше.

1 голос
/ 21 июня 2011

Есть альтернативы graphviz, которые могут выполнять эту работу - см., Например, infovis , protovis , tulip .

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

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

РЕДАКТИРОВАТЬ : еще один вариант, особенно если вы смотрите на разработку программного обеспечениядиаграммы.Рассматривали ли вы eclipse gmp toolkit ?Это то, что используется для создания, например, инструментов редактора UML2 .

hth.

1 голос
/ 21 июня 2011

Вот один: http://www.physicsbox.com/indexsolveelec2en.html

Вот где искать других:

http://www.freebyte.com/electronics/

www.educypedia.be / electronics /easoftsim.htm

0 голосов
/ 24 октября 2018

Я получаю очень хорошие результаты от Draw.io . Это веб-приложение, но имеет довольно мощный редактор диаграмм и несколько приличных фондовых библиотек символов. Рисунки можно экспортировать в формате PNG или SVG, поэтому они могут быть качественными публикациями и содержать ссылки до

0 голосов
/ 21 июня 2011

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

...