Skip to content

STL import breaks serialization; O.load; Facet must have exactly 3 vertices (not 6)

Ubuntu 16.04 in virtual machine on windows host affects yade package and yadedaily 2018.02b-201447edfd~xenial

Hi, there is a problem when you import an stl file to your simulation, save the simulation via O.save and O.load afterwards. You will get a RuntimeError: Facet must have exactly 3 vertices (not 6)

Here is the example (stl file from some example is attached, I tried different stls):

#!/usr/bin/python
# -*- coding: utf-8 -*-
from yade import ymport
O.engines=[
    ForceResetter(),
    InsertionSortCollider([Bo1_Sphere_Aabb()]),
    InteractionLoop(
        [Ig2_Sphere_Sphere_ScGeom()], # collision geometry
        [Ip2_FrictMat_FrictMat_FrictPhys()], # collision "physics"
        [Law2_ScGeom_FrictPhys_CundallStrack()] # contact law -- apply forces
    ),
    # Apply gravity force to particles. damping: numerical dissipation of energy.
    NewtonIntegrator(gravity=(0,0,-9.81),damping=0.1)
]
O.save('before.xml.bz2')
O.bodies.append(ymport.stl('baraban.stl'))
O.save('after.xml.bz2')
O.load('before.xml.bz2')
print "loaded before successfully"
O.load('after.xml.bz2')
print "loaded after successfully"

Cheers Alex

Original bug by Alexander Eulitz [Eugen]: https://bugs.launchpad.net/yade/+bug/1796883

Edited by Janek Kozicki