6

我有一些文本,我将处理这些文本以生成uml 序列图图像。我可以将文本处理为现有“文本到 uml”工具的格式pythonperl格式,但我试图消除该额外步骤并直接从 python/perl 脚本提供图像输出。

我可以使用任何 python 或 perl 包/模块吗?

4

2 回答 2

9

有许多 Python 替代品。

如果您想从头开始生成图像,您可能需要考虑PIL(Python 图像库),它是 Python 的“事实上的”图像库。

但是,特别是对于序列图,blockdiag 图图像生成器库(也使用 PIL)包括一个名为seqdiag的序列图生成器。例如,以下是如何定义和生成一个简单但完整的序列图,包括图表定义:

from seqdiag import parser, builder, drawer

diagram_definition = u"""
   seqdiag {
      browser  -> webserver [label = "GET /index.html"];
      browser <- webserver;
   }
"""
tree = parser.parse_string(diagram_definition)
diagram = builder.ScreenNodeBuilder.build(tree)
draw = drawer.DiagramDraw('PNG', diagram, filename="diagram.png")
draw.draw()
draw.save()

有关更多示例(序列)图定义和样式选项,请参见http://blockdiag.com/en/seqdiag/examples.html 。

于 2012-10-30T10:18:30.620 回答
2

在 Perl 中有几个 perl 模块可以做到这一点,请参阅UML::State

来自简介:

use UML::State;

my $diagram = UML::State->new(
  $node_array,
  $start_list,
  $accept_list,
  $edges
);

# You may change these defaults (doing so may even work):
$UML::State::ROW_SPACING = 75;  # all numbers are in pixels
$UML::State::LEFT_MARGIN = 20;
$UML::State::WIDTH       = 800;
$UML::State::HEIGHT      = 800;

print $diagram->draw(); 

CPAN 是你的朋友。:)

于 2012-10-30T09:55:53.720 回答