【发布时间】:2012-10-30 09:42:23
【问题描述】:
我将处理一些文本以生成 uml 序列图 图像。我可以将python 或perl 中的文本处理成现有的“文本到uml”工具的格式,但我试图消除这个额外的步骤并直接从python/perl 脚本提供图像输出。
我可以使用任何 python 或 perl 包/模块吗?
【问题讨论】:
标签: python perl uml sequence-diagram
我将处理一些文本以生成 uml 序列图 图像。我可以将python 或perl 中的文本处理成现有的“文本到uml”工具的格式,但我试图消除这个额外的步骤并直接从python/perl 脚本提供图像输出。
我可以使用任何 python 或 perl 包/模块吗?
【问题讨论】:
标签: python perl uml sequence-diagram
有许多 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。
【讨论】:
blockdiag。我已经向讨论组询问了seqdiag。让我们看看他们怎么说,谢谢..
在 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 是你的朋友。:)
【讨论】:
sudo cpanm UML::State
cpanm 看起来比 cpan 容易得多,谢谢。我能够安装UML::State,但UML::Sequence 仍然出现配置错误并退出。