If ‘network_count_crossings’ is 0, then shouldn’t ‘network_is_planar_embedding’ be ‘True’, for the same network (e.g. a force diagram)

can you give an example where this is not the case?

Unfortunately not. I encountered this problem while checking planarity of the force digram for compression-only solution. I worked around by using ‘network_count_crossings’. Changes made elsewhere in the code means the same case is not reproduced any more.

I checked for a few loops of the iteration and both gives compatible results.

checking if a network is a planar embedding involves checking if the network is planar and checking if its “drawing” has no crossing edges. if the diagram is in the XY plane and has no crossing edges it is a planar embedding.

however, to check if a diagram represents a compression only state of equilibrium (or tension only) this is not enough. it furthermore needs to be a “proper cell decomposition of the plane”, which basically means all faces of the diagram should also be convex…

I am aware of that (ref: https://www.springerprofessional.de/en/convex-polyhedra-dirichlet-tessellations-and-spider-webs/1524850)

But, in compas_tna, this is not explicitly checked when horizontal equilibrium is imposed, right? If we want a compression only solution, we need to check these explicitly, right?

indeed, this is not checked. however, the horizontal equilibrium solvers will compute the angle deviation between corresponding edges of the two diagrams. these can be used to evaluate how close a solution is to pure compression equilibrium.

furthermore, if i remember correctly, vertical equilibrium with also compute residual forces at the vertices of the thrust network. together these two sets of information give a relatively complete picture of the state of equilibrium of the obtained solution.

since your materialised structure will have some thickness, there is no need for the angle deviations and the related residual forces to be exactly zero…