Regular Contributor
Posts: 55
Accepted Solution

api_cover_circuits creates an impossible shell?


It's possible to create an impossible shell as a result of Cover operation:


1. It is said in the documentation for api_cover_circuits:

The created face(s) are placed in the first shell of the body that owns the first edge in the list.

2. A shell definition: A shell is an entire connected set of faces and/or wires.


Accordingly, it is easy to create (I checked this) a disconnected shell with Cover operation: it is enough to cover a hole in the 2-nd shell of a body. Obviously, this object will have very strange properties - for example, it will not be a solid though all edges are 2 sided, will have zero volume, etc.


Was it done intentionally for a reason which I don't understand?

And, more important, how to prevent this situation? I still want to use Cover for 1-sided edges for bodies containing more than 1 shell.


Thank you!



Spatial Employee
Posts: 151

Re: api_cover_circuits creates an impossible shell?



I would log a bug for this.  the behavior you mentioned may be documented but I also think it is unacceptable.  You can consider the faces in a body as being connected if they can be reached from each other by coedge traversal.  (E.g., faces sharing an edge or vertex should be in the same shell.)  The connected faces in a body should form a shell.


as a workaround, you could write a user API to reorganize the shells in a body.  you could put all the faces in a body in to the same shell by manipulating the FACE::next pointers (this is how the SHELL lists work).  After that, the euler operators function separate_body_shells enforces the conditions that the shells are the connected components in the face graph as described above.




Eric Zenk