【发布时间】:2012-04-04 23:45:04
【问题描述】:
我正在创建一个工具,用于将 Python 项目显示为 UML 图(+ 使用 GUI 显示一些代码错误检测)
我使用 Pyreverse 扫描了一些项目,我拥有绘制 UML 图所需的所有数据。 问题是类框在画布上的定位
首先,我决定使用已经实现的基于力的算法来决定类的位置,它工作得很好这是结果 https://github.com/jvorcak/gpylint/blob/master/screenshots/gpylint.png 这是code(Python,但即使对于非 Python 程序员也很容易理解)
有一个问题,它非常适合显示图形,但如果我想显示 UML,我希望有一些增强功能,例如,如果 2 个类扩展一个超类,我希望它们处于同一级别在图中就像graphs generated by dot program
你能告诉我一个算法如何做到这一点吗?或者至少给我一些想法?
【问题讨论】:
-
您是否需要用户可以动态调整展示位置?如果没有,你可以使用graphviz的点程序为你做布局吗(graphviz.org)?
-
谢谢您的回复,我已经提到我想知道点程序的算法(如果没有,我必须浏览它的源代码),因为我想绘制这些对象在画布上并允许用户与他们一起移动
-
这可能很难,因为大多数 Python 程序都是用鸭子类型完成的。对于我的一些程序,我没有对所有类都使用继承。
标签: python uml drawing graph-drawing pyreverse