Создание топологии шины с использованием graphviz в VSCode

#graph #graphviz #dot

#График #graphviz #точка

Вопрос:

Я новичок в graphviz. Я хотел бы нарисовать такую диаграмму

введите описание изображения здесь

Тем не менее, это то, что я получаю. с помощью следующего кода

введите описание изображения здесь

   graph BUS_TOPOLOGY{
      workstation1[shape=box pos = "100,50!"];
      workstation2[shape=box];
      workstation3[shape=box];
      workstation4[shape=box];
      workstation5[shape=box];
      workstation6[shape=box];

      bus[shape=rectangle width=15]

      workstation1 -- bus --workstation4
      workstation2 -- bus --workstation5
      workstation3 -- bus --workstation6

  }
  

Ответ №1:

Ваш запрос выходит за рамки, но он «выполним». Хотя вам нужны вертикальные ребра, соединяющие узлы с шиной, у dot нет такой директивы. Я ничего не знаю о VSCode, но вот (частичное) решение в прямой точке. Он использует html-запись для создания явных портов на шине:

 digraph structs {
  node [shape=rectangle]
  {
      rank=same
      ws1 ws2 ws3
  }
    node [shape=plaintext]
    bus [label=<
<TABLE BORDER="1" CELLBORDER="0" CELLSPACING="0" >
<TR>
<TD WIDTH="46" HEIGHT="12" PORT="p1"></TD>
<TD WIDTH="46" HEIGHT="12" PORT="p2"></TD>
<TD WIDTH="46" HEIGHT="12" PORT="p3"></TD>
<TD WIDTH="46" HEIGHT="12" PORT="p4"></TD>
<TD WIDTH="46" HEIGHT="12" PORT="p5"></TD>
<TD WIDTH="46" HEIGHT="12" PORT="p6"></TD>
<TD WIDTH="46" HEIGHT="12" PORT="p7"></TD>
</TR>
</TABLE>>];

  node [shape=rectangle]
  {
      rank=same
      ws4 ws5 ws6
  }
  edge [dir=none]
  ws1 -> bus:p1;
  bus:p2 -> ws4
  ws2 -> bus:p3;
  bus:p4 -> ws5
  ws3 -> bus:p5;
  bus:p6 -> ws6
}
  

Результат:
введите описание изображения здесь