Api 通过A4A解决方案

Api 通过A4A解决方案,api,alloy,Api,Alloy,我目前正在我的项目中使用Alloy api,我需要显示一个4Solutions。我可以用Vizaliser Alloy提供的(vizGUI)轻松做到这一点,但它对我的用途来说有点太有限了。因此,我愿意从A4Solution对象生成自己的图形(使用任何其他图形api) 我能够毫无问题地得到原子(这很简单),但我真的看不出如何恢复这些原子之间的关系 我在网上查找了一些关于如何解析A4解决方案的示例,但不幸的是没有找到任何结果 关系或字段,您可以从SIG中检索,然后对它们进行求值,以获得具体的原子,如

我目前正在我的项目中使用Alloy api,我需要显示一个4Solutions。我可以用Vizaliser Alloy提供的(vizGUI)轻松做到这一点,但它对我的用途来说有点太有限了。因此,我愿意从A4Solution对象生成自己的图形(使用任何其他图形api)

我能够毫无问题地得到原子(这很简单),但我真的看不出如何恢复这些原子之间的关系


我在网上查找了一些关于如何解析A4解决方案的示例,但不幸的是没有找到任何结果

关系或字段,您可以从SIG中检索,然后对它们进行求值,以获得具体的原子,如下所示:

A4Solution sol = ...;
SafeList<Sig> sigs = sol.getAllReachableSigs();
for (Sig sig : sigs) {
  SafeList<Field> fields = sig.getFields();
  for (Field field : fields) {
    A4TupleSet ts = (A4TupleSet)(sol.eval(field));
    for(A4Tuple t: ts)
      for(int i=0; i<t.arity(); i++) 
        t.atom(i);
  }
}
a4solutionsol=。。。;
SafeList sigs=sol.getAllReachableSigs();
for(Sig-Sig:sigs){
SafeList fields=sig.getFields();
用于(字段:字段){
A4TupleSet ts=(A4TupleSet)(sol.eval(字段));
用于(A4对t:ts)

对于(inti=0;这正是我想要的。实际上非常简单…非常感谢您的快速支持!