Pull to refresh

Comments 17

UFO just landed and posted this here
Спасибо за подсказку, квест с Github Pages оказался несложным.
Пример graphviz нам показывает, что иногда можно вполне просто нарисовать сложные вещи в виде текста.

Главное — придумать подходящий язык, и свалить на программу реально сложные вещи типа автоматического размещения компонентов на листе, трассировку соединений и пр. Но вот это, к сожалению, сделать уже не очень просто.

Да хотя бы расширить пункт 3, включив туда переработанный пункт 4.


"Нарисовать соединения. Для этого удобно использовать тэг path, который позволяет легко чертить горизонтальные и вертикальные линии."
… тут список команд из алгола…
… вот тут что-то из п.4, например, как-то так:
"Расставить точки соединения линий. Ничем не отличается от расстановки элементов, но лучше знать заранее возможные точки соединений." Но точки соединение, читай In/Out, никак не выделены, пусть это будет технический тэг. И команда построения линии не по координатам, а "от точки A1 до точки B1", где [A;B] — объект, [0..9] — точки соединения. Как-то это стандартизировать… а вдруг уже, просто я не в курсе. А там и до трассеров как-нибудь…
Уйма библиотек в Egale, Fritzin, Proteus и т.д. и все несовместимы, а те вон из гугла — бесполезны чуть менее, чем совсем.
SVG(он же XML, так?) вполне, как мне кажется, подошёл бы для всего этого. Не обязательно выдумывать какой-то новый язык

SVG для графики. Пихать в него, например, информацию о сетях (а она необходима для нормальной трассировки, чтобы понимать какие компоненты реально соединены, а где просто линии пересеклись на схеме), — это значит сделать кастомный формат поверх svg, т. к. svg-библиотеки уже не смогут с этим работать: например, разделение одного path на два потребует каких-то дополнительных телодвижений, сообщающих о том, что они всё ещё относятся к одной сети.


Я видел использование подобного подхода в SCADA (TAC Vista): TGML, описывающий мнемосхему, является надмножеством svg, который содержит информацию об обработке событий и биндингах к сигналам реального мира.

А каким образом metadata запретит стороннему редактору разбить/объединить какие-нибудь path? Оно в этом месте в любом случае оказывается хрупким.

Мммм, факт… знал бы ответ....

К счастью, всё это уже сделано, и многократно.
Правда иногда использовать такого монстра проектирования для рисования простой картинки — всё равно, что стрелять из пушки по воробьям.
Я же описываю противоположную крайность. Метафорически, когда дырка нужна, а сверла нет, то и гвоздиком проковырять можно.

По работе приходилось сталкиваться с svg, но всегда через редакторы. Было желание ковырнуть код, но всегда останавливала лень и "ну не серьезно это".


А так остается вставить картинку про "как рисовать сову на svg в блокноте"

"Как натянуть SVG сову на SVG глобус" (ASCII-видео туториал) :)


P.S. а мне нравятся редакторы схем, где можно таскать элементы вместе с присоединёнными к ним "резиновыми" связями.
Простейшие схемы можно не рисовать, а из типовых даташитных и википедийных выдернуть, если допустим назначение резистора нужно кому-то объяснить по его номеру.

Это да, тема. Особенно если оно ещё и маршрут перерисовывает натлету

XML вообще плохой формат для ручной обработки и написания.
И поэтому вручную с помощью него рисовать — самое последнее дело.


Если хочется рисовать графику в текстовом редакторе, то есть более подходящие форматы:
PostSctipt, MetaPost


Которые можно конвертируются в форматы, которые понимают браузеры.


А если надо серьезно рисовать в SVG, то лучше всего Inkscape.

Про самое последнее дело — совершенно согласен. Но если вдруг припрёт, то текстовый редактор найти проще, чем конвертер Постскрипта. Кроме того, документация по SVG кажется мне более полной и понятной.

А если кроме текстового редактора, завалялся еще и язык python, то можно использовать библиотеку обертку для рисования, например: svgwrite :)
Думаю и для других языков есть нечто подобное.

Sign up to leave a comment.

Articles

Change theme settings